@node-projects/web-component-designer 0.0.29 → 0.0.33
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/assets/images/chromeDevtools/accelerometer-back.svg +69 -0
- package/assets/images/chromeDevtools/accelerometer-front.svg +28 -0
- package/assets/images/chromeDevtools/accessibility-icon.svg +3 -0
- package/assets/images/chromeDevtools/add-icon.svg +3 -0
- package/assets/images/chromeDevtools/align-content-center-icon.svg +70 -0
- package/assets/images/chromeDevtools/align-content-flex-end-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-content-flex-start-icon.svg +66 -0
- package/assets/images/chromeDevtools/align-content-space-around-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-content-space-between-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-content-space-evenly-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-content-stretch-icon.svg +53 -0
- package/assets/images/chromeDevtools/align-items-baseline-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-items-center-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-items-end-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-items-flex-end-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-items-flex-start-icon.svg +57 -0
- package/assets/images/chromeDevtools/align-items-start-icon.svg +57 -0
- package/assets/images/chromeDevtools/align-items-stretch-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-self-center-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-self-flex-end-icon.svg +1 -0
- package/assets/images/chromeDevtools/align-self-flex-start-icon.svg +57 -0
- package/assets/images/chromeDevtools/align-self-stretch-icon.svg +1 -0
- package/assets/images/chromeDevtools/baseline-icon.svg +1 -0
- package/assets/images/chromeDevtools/checkboxCheckmark.svg +60 -0
- package/assets/images/chromeDevtools/chevrons.svg +62 -0
- package/assets/images/chromeDevtools/chromeSelect.svg +1 -0
- package/assets/images/chromeDevtools/chromeSelectDark.svg +1 -0
- package/assets/images/chromeDevtools/close-icon.svg +5 -0
- package/assets/images/chromeDevtools/copy_icon.svg +79 -0
- package/assets/images/chromeDevtools/dropdown_7x6_icon.svg +1 -0
- package/assets/images/chromeDevtools/elements_panel_icon.svg +1 -0
- package/assets/images/chromeDevtools/errorWave.svg +74 -0
- package/assets/images/chromeDevtools/error_icon.svg +125 -0
- package/assets/images/chromeDevtools/feedback_button_icon.svg +3 -0
- package/assets/images/chromeDevtools/flex-direction-icon.svg +1 -0
- package/assets/images/chromeDevtools/flex-nowrap-icon.svg +5 -0
- package/assets/images/chromeDevtools/flex-wrap-icon.svg +8 -0
- package/assets/images/chromeDevtools/help_outline.svg +1 -0
- package/assets/images/chromeDevtools/ic_checkmark_16x16.svg +3 -0
- package/assets/images/chromeDevtools/ic_command_go_to_line.svg +4 -0
- package/assets/images/chromeDevtools/ic_command_go_to_symbol.svg +3 -0
- package/assets/images/chromeDevtools/ic_command_help.svg +3 -0
- package/assets/images/chromeDevtools/ic_command_open_file.svg +3 -0
- package/assets/images/chromeDevtools/ic_command_run_command.svg +3 -0
- package/assets/images/chromeDevtools/ic_command_run_snippet.svg +3 -0
- package/assets/images/chromeDevtools/ic_delete_filter.svg +1 -0
- package/assets/images/chromeDevtools/ic_delete_list.svg +1 -0
- package/assets/images/chromeDevtools/ic_dimension_single.svg +4 -0
- package/assets/images/chromeDevtools/ic_file_default.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_document.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_font.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_image.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_script.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_snippet.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_stylesheet.svg +3 -0
- package/assets/images/chromeDevtools/ic_file_webbundle.svg +5 -0
- package/assets/images/chromeDevtools/ic_file_webbundle_inner_request.svg +9 -0
- package/assets/images/chromeDevtools/ic_folder_default.svg +3 -0
- package/assets/images/chromeDevtools/ic_folder_local.svg +3 -0
- package/assets/images/chromeDevtools/ic_folder_network.svg +3 -0
- package/assets/images/chromeDevtools/ic_info_black_18dp.svg +1 -0
- package/assets/images/chromeDevtools/ic_memory_16x16.svg +6 -0
- package/assets/images/chromeDevtools/ic_page_next_16x16_icon.svg +1 -0
- package/assets/images/chromeDevtools/ic_page_prev_16x16_icon.svg +1 -0
- package/assets/images/chromeDevtools/ic_preview_feature.svg +3 -0
- package/assets/images/chromeDevtools/ic_redo_16x16_icon.svg +1 -0
- package/assets/images/chromeDevtools/ic_request_response.svg +5 -0
- package/assets/images/chromeDevtools/ic_response.svg +4 -0
- package/assets/images/chromeDevtools/ic_show_node_16x16.svg +4 -0
- package/assets/images/chromeDevtools/ic_suggest_color.svg +6 -0
- package/assets/images/chromeDevtools/ic_undo_16x16_icon.svg +1 -0
- package/assets/images/chromeDevtools/ic_warning_black_18dp.svg +1 -0
- package/assets/images/chromeDevtools/issue-cross-icon.svg +70 -0
- package/assets/images/chromeDevtools/issue-exclamation-icon.svg +64 -0
- package/assets/images/chromeDevtools/issue-questionmark-icon.svg +82 -0
- package/assets/images/chromeDevtools/issue-text-icon.svg +56 -0
- package/assets/images/chromeDevtools/justify-content-center-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-content-end-icon.svg +71 -0
- package/assets/images/chromeDevtools/justify-content-flex-end-icon.svg +71 -0
- package/assets/images/chromeDevtools/justify-content-flex-start-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-content-space-around-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-content-space-between-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-content-space-evenly-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-content-start-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-items-center-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-items-end-icon.svg +57 -0
- package/assets/images/chromeDevtools/justify-items-start-icon.svg +1 -0
- package/assets/images/chromeDevtools/justify-items-stretch-icon.svg +1 -0
- package/assets/images/chromeDevtools/largeIcons.svg +1629 -0
- package/assets/images/chromeDevtools/lighthouse_logo.svg +158 -0
- package/assets/images/chromeDevtools/link_icon.svg +1 -0
- package/assets/images/chromeDevtools/mediumIcons.svg +1101 -0
- package/assets/images/chromeDevtools/network_conditions_icon.svg +6 -0
- package/assets/images/chromeDevtools/network_panel_icon.svg +1 -0
- package/assets/images/chromeDevtools/node_search_icon.svg +1 -0
- package/assets/images/chromeDevtools/preview_feature_video_thumbnail.svg +92 -0
- package/assets/images/chromeDevtools/refresh_12x12_icon.svg +1 -0
- package/assets/images/chromeDevtools/resizeDiagonal.svg +1 -0
- package/assets/images/chromeDevtools/resizeHorizontal.svg +1 -0
- package/assets/images/chromeDevtools/resizeVertical.svg +1 -0
- package/assets/images/chromeDevtools/securityIcons.svg +278 -0
- package/assets/images/chromeDevtools/settings_14x14_icon.svg +1 -0
- package/assets/images/chromeDevtools/smallIcons.svg +1277 -0
- package/assets/images/chromeDevtools/sources_panel_icon.svg +1 -0
- package/assets/images/chromeDevtools/survey_feedback_icon.svg +1 -0
- package/assets/images/chromeDevtools/switcherIcon.svg +57 -0
- package/assets/images/chromeDevtools/three_dots_menu_icon.svg +1 -0
- package/assets/images/chromeDevtools/trash_bin_icon.svg +1 -0
- package/assets/images/chromeDevtools/treeoutlineTriangles.svg +70 -0
- package/assets/images/chromeDevtools/warning_icon.svg +83 -0
- package/dist/commandHandling/CommandType.d.ts +1 -0
- package/dist/commandHandling/CommandType.js +1 -0
- package/dist/elements/controls/DesignerTabControl.js +4 -0
- package/dist/elements/controls/ImageButtonListSelector copy.d.ts +17 -0
- package/dist/elements/controls/ImageButtonListSelector copy.js +82 -0
- package/dist/elements/controls/ImageButtonListSelector.d.ts +17 -0
- package/dist/elements/controls/ImageButtonListSelector.js +82 -0
- package/dist/elements/controls/ThicknessEditor.d.ts +17 -0
- package/dist/elements/controls/ThicknessEditor.js +80 -0
- package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +10 -0
- package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.d.ts +8 -0
- package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.js +40 -0
- package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.d.ts +8 -0
- package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.js +40 -0
- package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.d.ts +8 -0
- package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +14 -0
- package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +3 -2
- package/dist/elements/services/propertiesService/services/CssPropertiesService.js +58 -49
- package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +1 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +1 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +24 -15
- package/dist/elements/widgets/designerView/designerView.d.ts +1 -0
- package/dist/elements/widgets/designerView/designerView.js +40 -5
- package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +6 -6
- package/dist/elements/widgets/propertyGrid/PropertyGrid.js +14 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +2 -2
- package/dist/interfaces/IDesignerMousePoint.d.ts +2 -0
- package/package.json +1 -1
package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BasePropertyEditor } from './BasePropertyEditor';
|
|
2
|
+
import { ImageButtonListSelector } from "../../../controls/ImageButtonListSelector.js";
|
|
3
|
+
import { PropertiesHelper } from "../services/PropertiesHelper.js";
|
|
4
|
+
import { assetsPath } from "../../../../Constants.js";
|
|
5
|
+
export class ImageButtonListPropertyEditor extends BasePropertyEditor {
|
|
6
|
+
constructor(property) {
|
|
7
|
+
super(property);
|
|
8
|
+
const selector = new ImageButtonListSelector();
|
|
9
|
+
selector.property = property.name;
|
|
10
|
+
selector.unsetValue = property.defaultValue;
|
|
11
|
+
const propName = PropertiesHelper.camelToDashCase(property.name);
|
|
12
|
+
if (property.type == 'enum') {
|
|
13
|
+
for (let v of property.enumValues) {
|
|
14
|
+
let button = document.createElement("button");
|
|
15
|
+
button.dataset.value = v[1];
|
|
16
|
+
let img = document.createElement("img");
|
|
17
|
+
img.title = v[1];
|
|
18
|
+
img.src = assetsPath + 'images/chromeDevtools/' + propName + '-' + v[1] + '-icon.svg';
|
|
19
|
+
button.appendChild(img);
|
|
20
|
+
selector.appendChild(button);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
for (let v of property.values) {
|
|
25
|
+
let button = document.createElement("button");
|
|
26
|
+
button.dataset.value = v;
|
|
27
|
+
let img = document.createElement("img");
|
|
28
|
+
img.title = v;
|
|
29
|
+
img.src = assetsPath + 'images/chromeDevtools/' + propName + '-' + v + '-icon.svg';
|
|
30
|
+
button.appendChild(img);
|
|
31
|
+
selector.appendChild(button);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
selector.valueChanged.on((e) => this._valueChanged(e.newValue));
|
|
35
|
+
this.element = selector;
|
|
36
|
+
}
|
|
37
|
+
refreshValue(valueType, value) {
|
|
38
|
+
this.element.value = value;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IProperty } from "../IProperty";
|
|
2
|
+
import { BasePropertyEditor } from './BasePropertyEditor';
|
|
3
|
+
import { ValueType } from "../ValueType";
|
|
4
|
+
import { ThicknessEditor } from '../../../controls/ThicknessEditor';
|
|
5
|
+
export declare class ThicknessPropertyEditor extends BasePropertyEditor<ThicknessEditor> {
|
|
6
|
+
constructor(property: IProperty);
|
|
7
|
+
refreshValue(valueType: ValueType, value: any): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BasePropertyEditor } from './BasePropertyEditor';
|
|
2
|
+
import { ThicknessEditor } from '../../../controls/ThicknessEditor';
|
|
3
|
+
export class ThicknessPropertyEditor extends BasePropertyEditor {
|
|
4
|
+
constructor(property) {
|
|
5
|
+
super(property);
|
|
6
|
+
const selector = new ThicknessEditor();
|
|
7
|
+
selector.property = property.name;
|
|
8
|
+
selector.valueChanged.on((e) => this._valueChanged(e.newValue));
|
|
9
|
+
this.element = selector;
|
|
10
|
+
}
|
|
11
|
+
refreshValue(valueType, value) {
|
|
12
|
+
this.element.value = value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -6,8 +6,9 @@ export declare class CssPropertiesService implements IPropertiesService {
|
|
|
6
6
|
private styles;
|
|
7
7
|
private alignment;
|
|
8
8
|
private grid;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
private flex;
|
|
10
|
+
name: 'set-styles' | 'alignment' | 'styles' | 'grid' | 'flex';
|
|
11
|
+
constructor(name: 'set-styles' | 'alignment' | 'styles' | 'grid' | 'flex');
|
|
11
12
|
isHandledElement(designItem: IDesignItem): boolean;
|
|
12
13
|
getProperty(designItem: IDesignItem, name: string): IProperty;
|
|
13
14
|
getProperties(designItem: IDesignItem): IProperty[];
|
|
@@ -86,59 +86,26 @@ export class CssPropertiesService {
|
|
|
86
86
|
//@ts-ignore
|
|
87
87
|
this.alignment = [
|
|
88
88
|
{
|
|
89
|
-
name: "position",
|
|
90
|
-
type: "list",
|
|
91
|
-
values: ["static", "relative", "absolute"],
|
|
92
|
-
service: this
|
|
93
|
-
}, {
|
|
94
89
|
name: "display",
|
|
95
90
|
type: "list",
|
|
96
91
|
values: ["block", "inline-block", "flex", "contents", "grid", "inherit", "initial", "none"],
|
|
97
92
|
service: this
|
|
98
93
|
}, {
|
|
99
|
-
name: "
|
|
100
|
-
type: "list",
|
|
101
|
-
values: ["row", "row-reverse", "column", "column-reverse"],
|
|
102
|
-
service: this
|
|
103
|
-
}, {
|
|
104
|
-
name: "flex-wrap",
|
|
105
|
-
type: "list",
|
|
106
|
-
values: ["nowrap", "wrap", "warp-reverse"],
|
|
107
|
-
service: this
|
|
108
|
-
}, {
|
|
109
|
-
name: "justify-self",
|
|
110
|
-
type: "list",
|
|
111
|
-
values: ["flex-start", "center", "flex-end", "space-between", "space-around"],
|
|
112
|
-
service: this
|
|
113
|
-
}, {
|
|
114
|
-
name: "justify-items",
|
|
115
|
-
type: "list",
|
|
116
|
-
values: ["flex-start", "center", "flex-end", "space-between", "space-around"],
|
|
117
|
-
service: this
|
|
118
|
-
}, {
|
|
119
|
-
name: "justify-content",
|
|
120
|
-
type: "list",
|
|
121
|
-
values: ["flex-start", "center", "flex-end", "space-between", "space-around"],
|
|
122
|
-
service: this
|
|
123
|
-
}, {
|
|
124
|
-
name: "align-self",
|
|
94
|
+
name: "position",
|
|
125
95
|
type: "list",
|
|
126
|
-
values: ["
|
|
96
|
+
values: ["static", "relative", "absolute"],
|
|
127
97
|
service: this
|
|
128
98
|
}, {
|
|
129
|
-
name: "
|
|
130
|
-
type: "
|
|
131
|
-
values: ["flex-start", "center", "flex-end", "space-between", "space-around"],
|
|
99
|
+
name: "inset",
|
|
100
|
+
type: "thickness",
|
|
132
101
|
service: this
|
|
133
102
|
}, {
|
|
134
|
-
name: "
|
|
135
|
-
type: "
|
|
136
|
-
values: ["flex-start", "center", "flex-end", "space-between", "space-around"],
|
|
103
|
+
name: "margin",
|
|
104
|
+
type: "thickness",
|
|
137
105
|
service: this
|
|
138
106
|
}, {
|
|
139
|
-
name: "
|
|
140
|
-
type: "
|
|
141
|
-
default: "0 1 auto",
|
|
107
|
+
name: "padding",
|
|
108
|
+
type: "thickness",
|
|
142
109
|
service: this
|
|
143
110
|
}
|
|
144
111
|
];
|
|
@@ -165,25 +132,59 @@ export class CssPropertiesService {
|
|
|
165
132
|
name: "row-gap",
|
|
166
133
|
type: "css-length",
|
|
167
134
|
service: this
|
|
135
|
+
}, {
|
|
136
|
+
name: "align-content",
|
|
137
|
+
type: "img-list",
|
|
138
|
+
values: ["center", "space-between", "space-around", "space-evenly", "stretch"],
|
|
139
|
+
service: this
|
|
168
140
|
}, {
|
|
169
141
|
name: "justify-content",
|
|
170
|
-
type: "list",
|
|
171
|
-
values: ["
|
|
142
|
+
type: "img-list",
|
|
143
|
+
values: ["center", "start", "end", "space-between", "space-around", "space-evenly"],
|
|
172
144
|
service: this
|
|
173
145
|
}, {
|
|
174
|
-
name: "align-
|
|
175
|
-
type: "list",
|
|
176
|
-
values: ["
|
|
146
|
+
name: "align-items",
|
|
147
|
+
type: "img-list",
|
|
148
|
+
values: ["center", "start", "end", "stretch", "baseline"],
|
|
177
149
|
service: this
|
|
178
150
|
}, {
|
|
179
151
|
name: "justify-items",
|
|
152
|
+
type: "img-list",
|
|
153
|
+
values: ["center", "start", "end", "stretch"],
|
|
154
|
+
service: this
|
|
155
|
+
}
|
|
156
|
+
];
|
|
157
|
+
//@ts-ignore
|
|
158
|
+
this.flex = [
|
|
159
|
+
{
|
|
160
|
+
name: "display",
|
|
180
161
|
type: "list",
|
|
181
|
-
values: ["
|
|
162
|
+
values: ["block", "inline-block", "flex", "contents", "grid", "inherit", "initial", "none"],
|
|
163
|
+
service: this
|
|
164
|
+
}, {
|
|
165
|
+
name: "flex-direction",
|
|
166
|
+
type: "img-list",
|
|
167
|
+
values: ["row", "column"],
|
|
168
|
+
service: this
|
|
169
|
+
}, {
|
|
170
|
+
name: "flex-wrap",
|
|
171
|
+
type: "img-list",
|
|
172
|
+
values: ["nowrap", "wrap"],
|
|
173
|
+
service: this
|
|
174
|
+
}, {
|
|
175
|
+
name: "align-content",
|
|
176
|
+
type: "img-list",
|
|
177
|
+
values: ["center", "flex-start", "flex-end", "space-between", "space-around", "stretch"],
|
|
178
|
+
service: this
|
|
179
|
+
}, {
|
|
180
|
+
name: "justify-content",
|
|
181
|
+
type: "img-list",
|
|
182
|
+
values: ["center", "flex-start", "flex-end", "space-between", "space-around", "space-evenly"],
|
|
182
183
|
service: this
|
|
183
184
|
}, {
|
|
184
185
|
name: "align-items",
|
|
185
|
-
type: "list",
|
|
186
|
-
values: ["
|
|
186
|
+
type: "img-list",
|
|
187
|
+
values: ["center", "flex-start", "flex-end", "stretch", "baseline"],
|
|
187
188
|
service: this
|
|
188
189
|
}
|
|
189
190
|
];
|
|
@@ -193,9 +194,17 @@ export class CssPropertiesService {
|
|
|
193
194
|
return true;
|
|
194
195
|
}
|
|
195
196
|
getProperty(designItem, name) {
|
|
197
|
+
if (this.name == 'set-styles') {
|
|
198
|
+
return { name: name, type: 'string', service: this };
|
|
199
|
+
}
|
|
196
200
|
return this[this.name][name];
|
|
197
201
|
}
|
|
198
202
|
getProperties(designItem) {
|
|
203
|
+
if (this.name == 'set-styles') {
|
|
204
|
+
if (!designItem)
|
|
205
|
+
return [];
|
|
206
|
+
return Array.from(designItem.styles.keys(), x => ({ name: x, type: 'string', service: this }));
|
|
207
|
+
}
|
|
199
208
|
return this[this.name];
|
|
200
209
|
}
|
|
201
210
|
setValue(designItems, property, value) {
|
|
@@ -19,6 +19,7 @@ export interface IDesignerCanvas extends IPlacementView, IUiCommandHandler {
|
|
|
19
19
|
readonly shadowRoot: ShadowRoot;
|
|
20
20
|
readonly alignOnGrid: boolean;
|
|
21
21
|
readonly alignOnSnap: boolean;
|
|
22
|
+
zoomFactor: number;
|
|
22
23
|
eatEvents: Element;
|
|
23
24
|
initialize(serviceContainer: ServiceContainer): any;
|
|
24
25
|
getDesignerMousepoint(event: MouseEvent, target: Element, startPoint?: IDesignerMousePoint): IDesignerMousePoint;
|
|
@@ -49,6 +49,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
49
49
|
set additionalStyle(value: CSSStyleSheet);
|
|
50
50
|
executeCommand(command: IUiCommand): Promise<void>;
|
|
51
51
|
canExecuteCommand(command: IUiCommand): boolean;
|
|
52
|
+
handleSelectAll(): void;
|
|
52
53
|
handleCopyCommand(): void;
|
|
53
54
|
handlePasteCommand(): Promise<void>;
|
|
54
55
|
handleDeleteCommand(): void;
|
|
@@ -63,7 +64,6 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
|
|
|
63
64
|
private _onDragLeave;
|
|
64
65
|
private _onDragOver;
|
|
65
66
|
private _onDrop;
|
|
66
|
-
private _onWheel;
|
|
67
67
|
private _onContextMenu;
|
|
68
68
|
showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): ContextMenuHelper;
|
|
69
69
|
private _onDblClick;
|
|
@@ -134,6 +134,9 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
134
134
|
case CommandType.paste:
|
|
135
135
|
this.handlePasteCommand();
|
|
136
136
|
break;
|
|
137
|
+
case CommandType.selectAll:
|
|
138
|
+
this.handleSelectAll();
|
|
139
|
+
break;
|
|
137
140
|
}
|
|
138
141
|
}
|
|
139
142
|
canExecuteCommand(command) {
|
|
@@ -149,6 +152,9 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
149
152
|
return true;
|
|
150
153
|
}
|
|
151
154
|
/* --- end IUiCommandHandler --- */
|
|
155
|
+
handleSelectAll() {
|
|
156
|
+
this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
|
|
157
|
+
}
|
|
152
158
|
handleCopyCommand() {
|
|
153
159
|
const copyText = DomConverter.ConvertToString(this.instanceServiceContainer.selectionService.selectedElements, null);
|
|
154
160
|
navigator.clipboard.writeText(copyText);
|
|
@@ -199,8 +205,12 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
199
205
|
this.snapLines = new Snaplines(this.overlayLayer);
|
|
200
206
|
this.snapLines.initialize(this.rootDesignItem);
|
|
201
207
|
if (this.children) {
|
|
208
|
+
let children = this.children;
|
|
209
|
+
if (this.children.length == 1 && this.children[0] instanceof HTMLSlotElement) {
|
|
210
|
+
children = this.children[0].assignedElements();
|
|
211
|
+
}
|
|
202
212
|
const parser = this.serviceContainer.getLastServiceWhere('htmlParserService', x => x.constructor == DefaultHtmlParserService);
|
|
203
|
-
this.addDesignItems(parser.createDesignItems(
|
|
213
|
+
this.addDesignItems(parser.createDesignItems(children, this.serviceContainer, this.instanceServiceContainer));
|
|
204
214
|
}
|
|
205
215
|
}
|
|
206
216
|
elementFromPoint(x, y) {
|
|
@@ -220,7 +230,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
220
230
|
this._canvas.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
|
|
221
231
|
this._canvas.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
|
|
222
232
|
this._canvas.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
|
|
223
|
-
this.addEventListener(EventNames.Wheel, event => this._onWheel(event));
|
|
224
233
|
}
|
|
225
234
|
}
|
|
226
235
|
zoomFactorChanged() {
|
|
@@ -296,23 +305,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
296
305
|
let grp = di.openGroup("Insert");
|
|
297
306
|
di.setStyle('position', 'absolute');
|
|
298
307
|
const targetRect = event.target.getBoundingClientRect();
|
|
299
|
-
di.setStyle('top', event.offsetY
|
|
300
|
-
di.setStyle('left', event.offsetX
|
|
308
|
+
di.setStyle('top', ((event.offsetY - (this.containerBoundingRect.y * this._zoomFactor)) / this._zoomFactor + targetRect.top) + 'px');
|
|
309
|
+
di.setStyle('left', ((event.offsetX - (this.containerBoundingRect.x * this._zoomFactor)) / this._zoomFactor + targetRect.left) + 'px');
|
|
301
310
|
this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
|
|
302
311
|
grp.commit();
|
|
303
312
|
requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
|
|
304
313
|
}
|
|
305
314
|
}
|
|
306
|
-
_onWheel(event) {
|
|
307
|
-
if (event.ctrlKey) {
|
|
308
|
-
event.preventDefault();
|
|
309
|
-
this._zoomFactor += event.deltaY * -0.001; //deltamode = 0
|
|
310
|
-
if (this._zoomFactor < 0.1)
|
|
311
|
-
this._zoomFactor = 0.1;
|
|
312
|
-
this.zoomFactorChanged();
|
|
313
|
-
//TODO: we should zoom on the current cursor position, so it stays the center
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
315
|
_onContextMenu(event) {
|
|
317
316
|
event.preventDefault();
|
|
318
317
|
const designItem = DesignItem.GetOrCreateDesignItem(event.target, this.serviceContainer, this.instanceServiceContainer);
|
|
@@ -355,6 +354,14 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
355
354
|
this.executeCommand({ type: CommandType.redo });
|
|
356
355
|
else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
|
|
357
356
|
this.executeCommand({ type: CommandType.redo });
|
|
357
|
+
else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
|
|
358
|
+
this.executeCommand({ type: CommandType.selectAll });
|
|
359
|
+
else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
|
|
360
|
+
this.executeCommand({ type: CommandType.copy });
|
|
361
|
+
else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
|
|
362
|
+
this.executeCommand({ type: CommandType.paste });
|
|
363
|
+
else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
|
|
364
|
+
this.executeCommand({ type: CommandType.cut });
|
|
358
365
|
else {
|
|
359
366
|
let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
|
|
360
367
|
if (!primarySelection) {
|
|
@@ -407,7 +414,9 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
407
414
|
y: (event.y - this.containerBoundingRect.y) / this._zoomFactor,
|
|
408
415
|
offsetInControlX: (startPoint ? startPoint.offsetInControlX : event.x - targetRect.x),
|
|
409
416
|
offsetInControlY: (startPoint ? startPoint.offsetInControlY : event.y - targetRect.y),
|
|
410
|
-
zoom: this._zoomFactor
|
|
417
|
+
zoom: this._zoomFactor,
|
|
418
|
+
normalizedX: ((event.offsetX - (this.containerBoundingRect.x * this._zoomFactor)) / this._zoomFactor + targetRect.left),
|
|
419
|
+
normalizedY: ((event.offsetY - (this.containerBoundingRect.y * this._zoomFactor)) / this._zoomFactor + targetRect.top)
|
|
411
420
|
};
|
|
412
421
|
}
|
|
413
422
|
//todo remove, is in base custom webcomp domhelper
|
|
@@ -16,6 +16,7 @@ export declare class DesignerView extends BaseCustomWebComponentConstructorAppen
|
|
|
16
16
|
static readonly template: HTMLTemplateElement;
|
|
17
17
|
private _designerCanvas;
|
|
18
18
|
constructor();
|
|
19
|
+
private _onWheel;
|
|
19
20
|
get designerWidth(): string;
|
|
20
21
|
set designerWidth(value: string);
|
|
21
22
|
get designerHeight(): string;
|
|
@@ -2,24 +2,47 @@ import { css, DomHelper, html, BaseCustomWebComponentConstructorAppend } from '@
|
|
|
2
2
|
import { DesignerCanvas } from "./designerCanvas.js";
|
|
3
3
|
import { DomConverter } from './DomConverter.js';
|
|
4
4
|
import { DefaultHtmlParserService } from '../../services/htmlParserService/DefaultHtmlParserService.js';
|
|
5
|
+
import { EventNames } from '../../../enums/EventNames.js';
|
|
5
6
|
export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
6
7
|
constructor() {
|
|
7
8
|
super();
|
|
8
9
|
const outer = this._getDomElement('outer');
|
|
9
10
|
this._designerCanvas = new DesignerCanvas();
|
|
10
11
|
this._designerCanvas.id = "canvas";
|
|
12
|
+
this._designerCanvas.appendChild(document.createElement("slot"));
|
|
11
13
|
outer.insertAdjacentElement('afterbegin', this._designerCanvas);
|
|
12
14
|
this._zoomInput = this._getDomElement('zoomInput');
|
|
13
|
-
this._zoomInput.
|
|
15
|
+
this._zoomInput.onkeydown = (e) => {
|
|
16
|
+
if (e.key == 'Enter')
|
|
17
|
+
this._designerCanvas.zoomFactor = parseFloat(this._zoomInput.value) / 100;
|
|
18
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
19
|
+
};
|
|
20
|
+
this._zoomInput.onblur = () => {
|
|
21
|
+
this._designerCanvas.zoomFactor = parseFloat(this._zoomInput.value) / 100;
|
|
22
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
23
|
+
};
|
|
14
24
|
this._zoomInput.onclick = this._zoomInput.select;
|
|
15
25
|
let zoomIncrease = this._getDomElement('zoomIncrease');
|
|
16
|
-
zoomIncrease.onclick = () => {
|
|
26
|
+
zoomIncrease.onclick = () => {
|
|
27
|
+
this._designerCanvas.zoomFactor += 0.1;
|
|
28
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
29
|
+
};
|
|
17
30
|
let zoomDecrease = this._getDomElement('zoomDecrease');
|
|
18
|
-
zoomDecrease.onclick = () => {
|
|
31
|
+
zoomDecrease.onclick = () => {
|
|
32
|
+
this._designerCanvas.zoomFactor -= 0.1;
|
|
33
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
34
|
+
};
|
|
19
35
|
let zoomReset = this._getDomElement('zoomReset');
|
|
20
|
-
zoomReset.onclick = () => {
|
|
36
|
+
zoomReset.onclick = () => {
|
|
37
|
+
this._designerCanvas.zoomFactor = 1;
|
|
38
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
39
|
+
};
|
|
21
40
|
let zoomFit = this._getDomElement('zoomFit');
|
|
22
|
-
zoomFit.onclick = () => {
|
|
41
|
+
zoomFit.onclick = () => {
|
|
42
|
+
this._designerCanvas.zoomFactor = 7.7;
|
|
43
|
+
this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
|
|
44
|
+
};
|
|
45
|
+
this.addEventListener(EventNames.Wheel, event => this._onWheel(event));
|
|
23
46
|
let alignSnap = this._getDomElement('alignSnap');
|
|
24
47
|
alignSnap.onclick = () => { this._designerCanvas.alignOnSnap = !this._designerCanvas.alignOnSnap; alignSnap.style.backgroundColor = this._designerCanvas.alignOnSnap ? 'deepskyblue' : ''; };
|
|
25
48
|
alignSnap.style.backgroundColor = this._designerCanvas.alignOnSnap ? 'deepskyblue' : '';
|
|
@@ -39,6 +62,18 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
39
62
|
set instanceServiceContainer(value) {
|
|
40
63
|
this._designerCanvas.instanceServiceContainer = value;
|
|
41
64
|
}
|
|
65
|
+
_onWheel(event) {
|
|
66
|
+
if (event.ctrlKey) {
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
let zf = this._designerCanvas.zoomFactor;
|
|
69
|
+
zf += event.deltaY * -0.001; //deltamode = 0
|
|
70
|
+
if (zf < 0.02)
|
|
71
|
+
zf = 0.02;
|
|
72
|
+
this._designerCanvas.zoomFactor = zf;
|
|
73
|
+
this._zoomInput.value = Math.round(zf * 100) + '%';
|
|
74
|
+
//TODO: we should zoom on the current cursor position, so it stays the center
|
|
75
|
+
}
|
|
76
|
+
}
|
|
42
77
|
get designerWidth() {
|
|
43
78
|
return this._designerCanvas.designerWidth;
|
|
44
79
|
}
|
|
@@ -16,8 +16,8 @@ export class RectangleSelectorTool {
|
|
|
16
16
|
if (!this._rect)
|
|
17
17
|
this._rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
18
18
|
this._rect.setAttribute('class', 'svg-selector');
|
|
19
|
-
this._rect.setAttribute('x', this._initialPoint.
|
|
20
|
-
this._rect.setAttribute('y', this._initialPoint.
|
|
19
|
+
this._rect.setAttribute('x', this._initialPoint.normalizedX);
|
|
20
|
+
this._rect.setAttribute('y', this._initialPoint.normalizedY);
|
|
21
21
|
this._rect.setAttribute('width', 0);
|
|
22
22
|
this._rect.setAttribute('height', 0);
|
|
23
23
|
designerCanvas.overlayLayer.addOverlay(this._rect, OverlayLayer.Foregorund);
|
|
@@ -27,19 +27,19 @@ export class RectangleSelectorTool {
|
|
|
27
27
|
let w = currentPoint.x - this._initialPoint.x;
|
|
28
28
|
let h = currentPoint.y - this._initialPoint.y;
|
|
29
29
|
if (w >= 0) {
|
|
30
|
-
this._rect.setAttribute('x', this._initialPoint.
|
|
30
|
+
this._rect.setAttribute('x', this._initialPoint.normalizedX);
|
|
31
31
|
this._rect.setAttribute('width', w);
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
|
-
this._rect.setAttribute('x', currentPoint.
|
|
34
|
+
this._rect.setAttribute('x', currentPoint.normalizedX);
|
|
35
35
|
this._rect.setAttribute('width', (-1 * w));
|
|
36
36
|
}
|
|
37
37
|
if (h >= 0) {
|
|
38
|
-
this._rect.setAttribute('y', this._initialPoint.
|
|
38
|
+
this._rect.setAttribute('y', this._initialPoint.normalizedY);
|
|
39
39
|
this._rect.setAttribute('height', h);
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
|
-
this._rect.setAttribute('y', currentPoint.
|
|
42
|
+
this._rect.setAttribute('y', currentPoint.normalizedY);
|
|
43
43
|
this._rect.setAttribute('height', (-1 * h));
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -40,6 +40,12 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
40
40
|
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
41
41
|
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
42
42
|
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
43
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("set-styles"));
|
|
44
|
+
attributeEditorAttributeList.createElements(null);
|
|
45
|
+
attributeEditorAttributeList.title = "set-styles";
|
|
46
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
47
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
48
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
43
49
|
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("styles"));
|
|
44
50
|
attributeEditorAttributeList.createElements(null);
|
|
45
51
|
attributeEditorAttributeList.title = "styles";
|
|
@@ -57,6 +63,12 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
57
63
|
attributeEditorAttributeList.title = "grid";
|
|
58
64
|
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
59
65
|
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
66
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
67
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("flex"));
|
|
68
|
+
attributeEditorAttributeList.createElements(null);
|
|
69
|
+
attributeEditorAttributeList.title = "flex";
|
|
70
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
71
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
60
72
|
this._designerTabControl.selectedIndex = 0;
|
|
61
73
|
}
|
|
62
74
|
get serviceContainer() {
|
|
@@ -72,6 +84,7 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
72
84
|
this._propertyGridPropertyLists[0].setPropertiesService(propService);
|
|
73
85
|
this._propertyGridPropertyLists[0].createElements(this.selectedItems[0]);
|
|
74
86
|
this._propertyGridPropertyLists[1].createElements(this.selectedItems[0]);
|
|
87
|
+
this._propertyGridPropertyLists[3].createElements(this.selectedItems[0]);
|
|
75
88
|
}
|
|
76
89
|
for (const a of this._propertyGridPropertyLists) {
|
|
77
90
|
a.designItemsChanged(items);
|
|
@@ -107,6 +120,7 @@ PropertyGrid.style = css `
|
|
|
107
120
|
:host {
|
|
108
121
|
display: block;
|
|
109
122
|
height: 100%;
|
|
123
|
+
user-select: none;
|
|
110
124
|
}
|
|
111
125
|
iron-pages {
|
|
112
126
|
overflow: hidden;
|
|
@@ -21,9 +21,9 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
21
21
|
.content-wrapper {
|
|
22
22
|
padding: .5em;
|
|
23
23
|
display: grid;
|
|
24
|
-
grid-template-columns: 11px auto 1fr;
|
|
24
|
+
grid-template-columns: 11px auto minmax(80px, 1fr);
|
|
25
25
|
align-items: center;
|
|
26
|
-
grid-auto-rows: 24px;
|
|
26
|
+
grid-auto-rows: minmax(24px, auto);
|
|
27
27
|
align-items: center;
|
|
28
28
|
}
|
|
29
29
|
label, input, select {
|