@node-projects/web-component-designer 0.0.31 → 0.0.35

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.
Files changed (150) hide show
  1. package/assets/images/chromeDevtools/accelerometer-back.svg +69 -0
  2. package/assets/images/chromeDevtools/accelerometer-front.svg +28 -0
  3. package/assets/images/chromeDevtools/accessibility-icon.svg +3 -0
  4. package/assets/images/chromeDevtools/add-icon.svg +3 -0
  5. package/assets/images/chromeDevtools/align-content-center-icon.svg +70 -0
  6. package/assets/images/chromeDevtools/align-content-flex-end-icon.svg +1 -0
  7. package/assets/images/chromeDevtools/align-content-flex-start-icon.svg +66 -0
  8. package/assets/images/chromeDevtools/align-content-space-around-icon.svg +1 -0
  9. package/assets/images/chromeDevtools/align-content-space-between-icon.svg +1 -0
  10. package/assets/images/chromeDevtools/align-content-space-evenly-icon.svg +1 -0
  11. package/assets/images/chromeDevtools/align-content-stretch-icon.svg +53 -0
  12. package/assets/images/chromeDevtools/align-items-baseline-icon.svg +1 -0
  13. package/assets/images/chromeDevtools/align-items-center-icon.svg +1 -0
  14. package/assets/images/chromeDevtools/align-items-end-icon.svg +1 -0
  15. package/assets/images/chromeDevtools/align-items-flex-end-icon.svg +1 -0
  16. package/assets/images/chromeDevtools/align-items-flex-start-icon.svg +57 -0
  17. package/assets/images/chromeDevtools/align-items-start-icon.svg +57 -0
  18. package/assets/images/chromeDevtools/align-items-stretch-icon.svg +1 -0
  19. package/assets/images/chromeDevtools/align-self-center-icon.svg +1 -0
  20. package/assets/images/chromeDevtools/align-self-flex-end-icon.svg +1 -0
  21. package/assets/images/chromeDevtools/align-self-flex-start-icon.svg +57 -0
  22. package/assets/images/chromeDevtools/align-self-stretch-icon.svg +1 -0
  23. package/assets/images/chromeDevtools/baseline-icon.svg +1 -0
  24. package/assets/images/chromeDevtools/checkboxCheckmark.svg +60 -0
  25. package/assets/images/chromeDevtools/chevrons.svg +62 -0
  26. package/assets/images/chromeDevtools/chromeSelect.svg +1 -0
  27. package/assets/images/chromeDevtools/chromeSelectDark.svg +1 -0
  28. package/assets/images/chromeDevtools/close-icon.svg +5 -0
  29. package/assets/images/chromeDevtools/copy_icon.svg +79 -0
  30. package/assets/images/chromeDevtools/dropdown_7x6_icon.svg +1 -0
  31. package/assets/images/chromeDevtools/elements_panel_icon.svg +1 -0
  32. package/assets/images/chromeDevtools/errorWave.svg +74 -0
  33. package/assets/images/chromeDevtools/error_icon.svg +125 -0
  34. package/assets/images/chromeDevtools/feedback_button_icon.svg +3 -0
  35. package/assets/images/chromeDevtools/flex-direction-icon.svg +1 -0
  36. package/assets/images/chromeDevtools/flex-nowrap-icon.svg +5 -0
  37. package/assets/images/chromeDevtools/flex-wrap-icon.svg +8 -0
  38. package/assets/images/chromeDevtools/help_outline.svg +1 -0
  39. package/assets/images/chromeDevtools/ic_checkmark_16x16.svg +3 -0
  40. package/assets/images/chromeDevtools/ic_command_go_to_line.svg +4 -0
  41. package/assets/images/chromeDevtools/ic_command_go_to_symbol.svg +3 -0
  42. package/assets/images/chromeDevtools/ic_command_help.svg +3 -0
  43. package/assets/images/chromeDevtools/ic_command_open_file.svg +3 -0
  44. package/assets/images/chromeDevtools/ic_command_run_command.svg +3 -0
  45. package/assets/images/chromeDevtools/ic_command_run_snippet.svg +3 -0
  46. package/assets/images/chromeDevtools/ic_delete_filter.svg +1 -0
  47. package/assets/images/chromeDevtools/ic_delete_list.svg +1 -0
  48. package/assets/images/chromeDevtools/ic_dimension_single.svg +4 -0
  49. package/assets/images/chromeDevtools/ic_file_default.svg +3 -0
  50. package/assets/images/chromeDevtools/ic_file_document.svg +3 -0
  51. package/assets/images/chromeDevtools/ic_file_font.svg +3 -0
  52. package/assets/images/chromeDevtools/ic_file_image.svg +3 -0
  53. package/assets/images/chromeDevtools/ic_file_script.svg +3 -0
  54. package/assets/images/chromeDevtools/ic_file_snippet.svg +3 -0
  55. package/assets/images/chromeDevtools/ic_file_stylesheet.svg +3 -0
  56. package/assets/images/chromeDevtools/ic_file_webbundle.svg +5 -0
  57. package/assets/images/chromeDevtools/ic_file_webbundle_inner_request.svg +9 -0
  58. package/assets/images/chromeDevtools/ic_folder_default.svg +3 -0
  59. package/assets/images/chromeDevtools/ic_folder_local.svg +3 -0
  60. package/assets/images/chromeDevtools/ic_folder_network.svg +3 -0
  61. package/assets/images/chromeDevtools/ic_info_black_18dp.svg +1 -0
  62. package/assets/images/chromeDevtools/ic_memory_16x16.svg +6 -0
  63. package/assets/images/chromeDevtools/ic_page_next_16x16_icon.svg +1 -0
  64. package/assets/images/chromeDevtools/ic_page_prev_16x16_icon.svg +1 -0
  65. package/assets/images/chromeDevtools/ic_preview_feature.svg +3 -0
  66. package/assets/images/chromeDevtools/ic_redo_16x16_icon.svg +1 -0
  67. package/assets/images/chromeDevtools/ic_request_response.svg +5 -0
  68. package/assets/images/chromeDevtools/ic_response.svg +4 -0
  69. package/assets/images/chromeDevtools/ic_show_node_16x16.svg +4 -0
  70. package/assets/images/chromeDevtools/ic_suggest_color.svg +6 -0
  71. package/assets/images/chromeDevtools/ic_undo_16x16_icon.svg +1 -0
  72. package/assets/images/chromeDevtools/ic_warning_black_18dp.svg +1 -0
  73. package/assets/images/chromeDevtools/issue-cross-icon.svg +70 -0
  74. package/assets/images/chromeDevtools/issue-exclamation-icon.svg +64 -0
  75. package/assets/images/chromeDevtools/issue-questionmark-icon.svg +82 -0
  76. package/assets/images/chromeDevtools/issue-text-icon.svg +56 -0
  77. package/assets/images/chromeDevtools/justify-content-center-icon.svg +1 -0
  78. package/assets/images/chromeDevtools/justify-content-end-icon.svg +71 -0
  79. package/assets/images/chromeDevtools/justify-content-flex-end-icon.svg +71 -0
  80. package/assets/images/chromeDevtools/justify-content-flex-start-icon.svg +1 -0
  81. package/assets/images/chromeDevtools/justify-content-space-around-icon.svg +1 -0
  82. package/assets/images/chromeDevtools/justify-content-space-between-icon.svg +1 -0
  83. package/assets/images/chromeDevtools/justify-content-space-evenly-icon.svg +1 -0
  84. package/assets/images/chromeDevtools/justify-content-start-icon.svg +1 -0
  85. package/assets/images/chromeDevtools/justify-items-center-icon.svg +1 -0
  86. package/assets/images/chromeDevtools/justify-items-end-icon.svg +57 -0
  87. package/assets/images/chromeDevtools/justify-items-start-icon.svg +1 -0
  88. package/assets/images/chromeDevtools/justify-items-stretch-icon.svg +1 -0
  89. package/assets/images/chromeDevtools/largeIcons.svg +1629 -0
  90. package/assets/images/chromeDevtools/lighthouse_logo.svg +158 -0
  91. package/assets/images/chromeDevtools/link_icon.svg +1 -0
  92. package/assets/images/chromeDevtools/mediumIcons.svg +1101 -0
  93. package/assets/images/chromeDevtools/network_conditions_icon.svg +6 -0
  94. package/assets/images/chromeDevtools/network_panel_icon.svg +1 -0
  95. package/assets/images/chromeDevtools/node_search_icon.svg +1 -0
  96. package/assets/images/chromeDevtools/preview_feature_video_thumbnail.svg +92 -0
  97. package/assets/images/chromeDevtools/refresh_12x12_icon.svg +1 -0
  98. package/assets/images/chromeDevtools/resizeDiagonal.svg +1 -0
  99. package/assets/images/chromeDevtools/resizeHorizontal.svg +1 -0
  100. package/assets/images/chromeDevtools/resizeVertical.svg +1 -0
  101. package/assets/images/chromeDevtools/securityIcons.svg +278 -0
  102. package/assets/images/chromeDevtools/settings_14x14_icon.svg +1 -0
  103. package/assets/images/chromeDevtools/smallIcons.svg +1277 -0
  104. package/assets/images/chromeDevtools/sources_panel_icon.svg +1 -0
  105. package/assets/images/chromeDevtools/survey_feedback_icon.svg +1 -0
  106. package/assets/images/chromeDevtools/switcherIcon.svg +57 -0
  107. package/assets/images/chromeDevtools/three_dots_menu_icon.svg +1 -0
  108. package/assets/images/chromeDevtools/trash_bin_icon.svg +1 -0
  109. package/assets/images/chromeDevtools/treeoutlineTriangles.svg +70 -0
  110. package/assets/images/chromeDevtools/warning_icon.svg +83 -0
  111. package/dist/commandHandling/CommandType.d.ts +1 -0
  112. package/dist/commandHandling/CommandType.js +1 -0
  113. package/dist/elements/controls/DesignerTabControl.js +4 -0
  114. package/dist/elements/controls/ImageButtonListSelector copy.d.ts +17 -0
  115. package/dist/elements/controls/ImageButtonListSelector copy.js +82 -0
  116. package/dist/elements/controls/ImageButtonListSelector.d.ts +17 -0
  117. package/dist/elements/controls/ImageButtonListSelector.js +82 -0
  118. package/dist/elements/controls/ThicknessEditor.d.ts +17 -0
  119. package/dist/elements/controls/ThicknessEditor.js +80 -0
  120. package/dist/elements/services/DefaultServiceBootstrap.js +2 -0
  121. package/dist/elements/services/ServiceContainer.d.ts +3 -0
  122. package/dist/elements/services/ServiceContainer.js +3 -0
  123. package/dist/elements/services/copyPasteService/CopyPasteService.d.ts +8 -0
  124. package/dist/elements/services/copyPasteService/CopyPasteService.js +12 -0
  125. package/dist/elements/services/copyPasteService/ICopyPasteService copy.d.ts +0 -0
  126. package/dist/elements/services/copyPasteService/ICopyPasteService copy.js +1 -0
  127. package/dist/elements/services/copyPasteService/ICopyPasteService.d.ts +7 -0
  128. package/dist/elements/services/copyPasteService/ICopyPasteService.js +1 -0
  129. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +10 -0
  130. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.d.ts +8 -0
  131. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.js +40 -0
  132. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.d.ts +8 -0
  133. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.js +40 -0
  134. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.d.ts +8 -0
  135. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +14 -0
  136. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +3 -2
  137. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +58 -49
  138. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +1 -0
  139. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -2
  140. package/dist/elements/widgets/designerView/designerCanvas.js +27 -27
  141. package/dist/elements/widgets/designerView/designerView.d.ts +1 -0
  142. package/dist/elements/widgets/designerView/designerView.js +39 -5
  143. package/dist/elements/widgets/designerView/overlayLayerView.js +1 -2
  144. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +11 -11
  145. package/dist/elements/widgets/propertyGrid/PropertyGrid.js +14 -0
  146. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +2 -2
  147. package/dist/index.d.ts +2 -0
  148. package/dist/index.js +1 -0
  149. package/dist/interfaces/IDesignerMousePoint.d.ts +2 -0
  150. package/package.json +1 -1
@@ -5,6 +5,8 @@ import { NumberPropertyEditor } from "./propertyEditors/NumberPropertyEditor";
5
5
  import { SelectPropertyEditor } from "./propertyEditors/SelectPropertyEditor";
6
6
  import { TextPropertyEditor } from './propertyEditors/TextPropertyEditor';
7
7
  import { BooleanPropertyEditor } from './propertyEditors/BooleanPropertyEditor';
8
+ import { ImageButtonListPropertyEditor } from './propertyEditors/ImageButtonListPropertyEditor';
9
+ import { ThicknessPropertyEditor } from "./propertyEditors/ThicknessPropertyEditor.js";
8
10
  export class DefaultEditorTypesService {
9
11
  getEditorForProperty(property) {
10
12
  if (property.createEditor)
@@ -38,6 +40,14 @@ export class DefaultEditorTypesService {
38
40
  {
39
41
  return new BooleanPropertyEditor(property);
40
42
  }
43
+ case "img-list":
44
+ {
45
+ return new ImageButtonListPropertyEditor(property);
46
+ }
47
+ case "thickness":
48
+ {
49
+ return new ThicknessPropertyEditor(property);
50
+ }
41
51
  case "css-length":
42
52
  case "thickness":
43
53
  case "string":
@@ -0,0 +1,8 @@
1
+ import { IProperty } from "../IProperty";
2
+ import { BasePropertyEditor } from './BasePropertyEditor';
3
+ import { ValueType } from "../ValueType";
4
+ import { ImageButtonListSelector } from "../../../controls/ImageButtonListSelector.js";
5
+ export declare class ImageButtonListPropertyEditor extends BasePropertyEditor<ImageButtonListSelector> {
6
+ constructor(property: IProperty);
7
+ refreshValue(valueType: ValueType, value: any): void;
8
+ }
@@ -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 { ImageButtonListSelector } from "../../../controls/ImageButtonListSelector.js";
5
+ export declare class ImageButtonListPropertyEditor extends BasePropertyEditor<ImageButtonListSelector> {
6
+ constructor(property: IProperty);
7
+ refreshValue(valueType: ValueType, value: any): void;
8
+ }
@@ -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
- name: 'alignment' | 'styles' | 'grid';
10
- constructor(name: 'alignment' | 'styles' | 'grid');
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: "flex-direction",
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: ["flex-start", "center", "flex-end", "space-between", "space-around"],
96
+ values: ["static", "relative", "absolute"],
127
97
  service: this
128
98
  }, {
129
- name: "align-items",
130
- type: "list",
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: "align-content",
135
- type: "list",
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: "flex",
140
- type: "string",
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: ["space-evenly", "space-around", "space-between", "center", "start", "end"],
142
+ type: "img-list",
143
+ values: ["center", "start", "end", "space-between", "space-around", "space-evenly"],
172
144
  service: this
173
145
  }, {
174
- name: "align-content",
175
- type: "list",
176
- values: ["space-evenly", "space-around", "space-between", "center", "start", "end"],
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: ["flex-start", "center", "flex-end", "space-between", "space-around"],
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: ["flex-start", "center", "flex-end", "space-between", "space-around"],
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,7 +49,8 @@ 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
- handleCopyCommand(): void;
52
+ handleSelectAll(): void;
53
+ handleCopyCommand(): Promise<void>;
53
54
  handlePasteCommand(): Promise<void>;
54
55
  handleDeleteCommand(): void;
55
56
  handleMoveCommand(command: CommandType): 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;
@@ -7,7 +7,6 @@ import { BaseCustomWebComponentLazyAppend, css, html } from '@node-projects/base
7
7
  import { dragDropFormatName } from '../../../Constants';
8
8
  import { ContentService } from '../../services/contentService/ContentService';
9
9
  import { InsertAction } from '../../services/undoService/transactionItems/InsertAction';
10
- import { DomConverter } from './DomConverter';
11
10
  import { Snaplines } from './Snaplines';
12
11
  import { ContextMenuHelper } from '../../helper/contextMenu/ContextMenuHelper';
13
12
  import { DeleteAction } from '../../services/undoService/transactionItems/DeleteAction';
@@ -134,6 +133,9 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
134
133
  case CommandType.paste:
135
134
  this.handlePasteCommand();
136
135
  break;
136
+ case CommandType.selectAll:
137
+ this.handleSelectAll();
138
+ break;
137
139
  }
138
140
  }
139
141
  canExecuteCommand(command) {
@@ -149,15 +151,15 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
149
151
  return true;
150
152
  }
151
153
  /* --- end IUiCommandHandler --- */
152
- handleCopyCommand() {
153
- const copyText = DomConverter.ConvertToString(this.instanceServiceContainer.selectionService.selectedElements, null);
154
- navigator.clipboard.writeText(copyText);
154
+ handleSelectAll() {
155
+ this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
156
+ }
157
+ async handleCopyCommand() {
158
+ await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
155
159
  }
156
160
  async handlePasteCommand() {
157
- const text = await navigator.clipboard.readText();
158
- const parserService = this.serviceContainer.htmlParserService;
161
+ const designItems = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
159
162
  let grp = this.rootDesignItem.openGroup("Insert");
160
- const designItems = await parserService.parse(text, this.serviceContainer, this.instanceServiceContainer);
161
163
  if (designItems) {
162
164
  for (let di of designItems) {
163
165
  this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
@@ -178,7 +180,6 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
178
180
  this.instanceServiceContainer.selectionService.setSelectedElements(null);
179
181
  }
180
182
  handleMoveCommand(command) {
181
- //TODO: -> via undo redo service
182
183
  let sel = this.instanceServiceContainer.selectionService.primarySelection;
183
184
  if (command == CommandType.moveBackward)
184
185
  this.instanceServiceContainer.undoService.execute(new MoveElementInDomAction(sel, DesignItem.GetDesignItem(sel.element.previousElementSibling), 'beforebegin', DesignItem.GetDesignItem(sel.element.previousElementSibling), 'afterend'));
@@ -217,14 +218,13 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
217
218
  this._outercanvas2.addEventListener(EventNames.PointerDown, this._pointerEventHandlerBound);
218
219
  this._outercanvas2.addEventListener(EventNames.PointerMove, this._pointerEventHandlerBound);
219
220
  this._outercanvas2.addEventListener(EventNames.PointerUp, this._pointerEventHandlerBound);
220
- this._canvas.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
221
- this._canvas.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
222
- this._canvas.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
223
- this._canvas.addEventListener(EventNames.Drop, event => this._onDrop(event));
221
+ this._outercanvas2.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
222
+ this._outercanvas2.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
223
+ this._outercanvas2.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
224
+ this._outercanvas2.addEventListener(EventNames.Drop, event => this._onDrop(event));
224
225
  this._canvas.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
225
226
  this._canvas.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
226
227
  this._canvas.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
227
- this.addEventListener(EventNames.Wheel, event => this._onWheel(event));
228
228
  }
229
229
  }
230
230
  zoomFactorChanged() {
@@ -299,24 +299,14 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
299
299
  let di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
300
300
  let grp = di.openGroup("Insert");
301
301
  di.setStyle('position', 'absolute');
302
- const targetRect = event.target.getBoundingClientRect();
303
- di.setStyle('top', event.offsetY + targetRect.top - this.containerBoundingRect.y + 'px');
304
- di.setStyle('left', event.offsetX + targetRect.left - this.containerBoundingRect.x + 'px');
302
+ const canvasRect = this._canvasContainer.getBoundingClientRect();
303
+ di.setStyle('top', ((event.offsetY + event.target.scrollTop - (this.containerBoundingRect.y * this._zoomFactor)) / this._zoomFactor + canvasRect.top) + 'px');
304
+ di.setStyle('left', ((event.offsetX + event.target.scrollLeft - (this.containerBoundingRect.x * this._zoomFactor)) / this._zoomFactor + canvasRect.left) + 'px');
305
305
  this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
306
306
  grp.commit();
307
307
  requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
308
308
  }
309
309
  }
310
- _onWheel(event) {
311
- if (event.ctrlKey) {
312
- event.preventDefault();
313
- this._zoomFactor += event.deltaY * -0.001; //deltamode = 0
314
- if (this._zoomFactor < 0.1)
315
- this._zoomFactor = 0.1;
316
- this.zoomFactorChanged();
317
- //TODO: we should zoom on the current cursor position, so it stays the center
318
- }
319
- }
320
310
  _onContextMenu(event) {
321
311
  event.preventDefault();
322
312
  const designItem = DesignItem.GetOrCreateDesignItem(event.target, this.serviceContainer, this.instanceServiceContainer);
@@ -359,6 +349,14 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
359
349
  this.executeCommand({ type: CommandType.redo });
360
350
  else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
361
351
  this.executeCommand({ type: CommandType.redo });
352
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
353
+ this.executeCommand({ type: CommandType.selectAll });
354
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
355
+ this.executeCommand({ type: CommandType.copy });
356
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
357
+ this.executeCommand({ type: CommandType.paste });
358
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
359
+ this.executeCommand({ type: CommandType.cut });
362
360
  else {
363
361
  let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
364
362
  if (!primarySelection) {
@@ -411,7 +409,9 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
411
409
  y: (event.y - this.containerBoundingRect.y) / this._zoomFactor,
412
410
  offsetInControlX: (startPoint ? startPoint.offsetInControlX : event.x - targetRect.x),
413
411
  offsetInControlY: (startPoint ? startPoint.offsetInControlY : event.y - targetRect.y),
414
- zoom: this._zoomFactor
412
+ zoom: this._zoomFactor,
413
+ normalizedX: ((event.offsetX + event.target.scrollLeft - (this.containerBoundingRect.x * this._zoomFactor)) / this._zoomFactor + targetRect.left),
414
+ normalizedY: ((event.offsetY + event.target.scrollTop - (this.containerBoundingRect.y * this._zoomFactor)) / this._zoomFactor + targetRect.top)
415
415
  };
416
416
  }
417
417
  //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,6 +2,7 @@ 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();
@@ -11,16 +12,37 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
11
12
  this._designerCanvas.appendChild(document.createElement("slot"));
12
13
  outer.insertAdjacentElement('afterbegin', this._designerCanvas);
13
14
  this._zoomInput = this._getDomElement('zoomInput');
14
- this._zoomInput.onchange = () => { this._designerCanvas.zoomFactor = parseFloat(this._zoomInput.value) / 100; };
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
+ };
15
24
  this._zoomInput.onclick = this._zoomInput.select;
16
25
  let zoomIncrease = this._getDomElement('zoomIncrease');
17
- zoomIncrease.onclick = () => { this._designerCanvas.zoomFactor += 0.1; };
26
+ zoomIncrease.onclick = () => {
27
+ this._designerCanvas.zoomFactor += 0.1;
28
+ this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
29
+ };
18
30
  let zoomDecrease = this._getDomElement('zoomDecrease');
19
- zoomDecrease.onclick = () => { this._designerCanvas.zoomFactor -= 0.1; };
31
+ zoomDecrease.onclick = () => {
32
+ this._designerCanvas.zoomFactor -= 0.1;
33
+ this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
34
+ };
20
35
  let zoomReset = this._getDomElement('zoomReset');
21
- zoomReset.onclick = () => { this._designerCanvas.zoomFactor = 1; };
36
+ zoomReset.onclick = () => {
37
+ this._designerCanvas.zoomFactor = 1;
38
+ this._zoomInput.value = Math.round(this._designerCanvas.zoomFactor * 100) + '%';
39
+ };
22
40
  let zoomFit = this._getDomElement('zoomFit');
23
- zoomFit.onclick = () => { this._designerCanvas.zoomFactor = 7.7; };
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));
24
46
  let alignSnap = this._getDomElement('alignSnap');
25
47
  alignSnap.onclick = () => { this._designerCanvas.alignOnSnap = !this._designerCanvas.alignOnSnap; alignSnap.style.backgroundColor = this._designerCanvas.alignOnSnap ? 'deepskyblue' : ''; };
26
48
  alignSnap.style.backgroundColor = this._designerCanvas.alignOnSnap ? 'deepskyblue' : '';
@@ -40,6 +62,18 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
40
62
  set instanceServiceContainer(value) {
41
63
  this._designerCanvas.instanceServiceContainer = value;
42
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
+ }
43
77
  get designerWidth() {
44
78
  return this._designerCanvas.designerWidth;
45
79
  }
@@ -66,8 +66,7 @@ OverlayLayerView.style = css `
66
66
  }
67
67
 
68
68
  .svg-snapline { stroke: purple; stroke-dasharray: 4; fill: transparent; }
69
- /*.svg-selection { stroke: #3899ec; fill: transparent; stroke-width: 2; }*/
70
- .svg-selector { stroke: black; fill: transparent; stroke-width: 1; stroke-dasharray: 2; }
69
+ .svg-selector { stroke: black; fill: #3899ec55; stroke-width: 1; stroke-dasharray: 2; }
71
70
  .svg-primary-selection-move { stroke: #3899ec; fill: #3899ec; cursor: move; pointer-events: all }
72
71
  .svg-text { stroke: none; fill: white; stroke-width: 1; font-size: 10px; font-family: monospace; }
73
72
  .svg-primary-resizer { stroke: #3899ec; fill: white; pointer-events: all }
@@ -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.x);
20
- this._rect.setAttribute('y', this._initialPoint.y);
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.x);
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.x);
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.y);
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.y);
42
+ this._rect.setAttribute('y', currentPoint.normalizedY);
43
43
  this._rect.setAttribute('height', (-1 * h));
44
44
  }
45
45
  }
@@ -53,17 +53,17 @@ export class RectangleSelectorTool {
53
53
  let elementRect = e.getBoundingClientRect();
54
54
  point.x = elementRect.left - designerCanvas.containerBoundingRect.left;
55
55
  point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
56
- const p1 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
56
+ const p1 = this._rect.isPointInFill(point);
57
57
  point.x = elementRect.left - designerCanvas.containerBoundingRect.left + elementRect.width;
58
58
  point.y = elementRect.top - designerCanvas.containerBoundingRect.top;
59
- const p2 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
59
+ const p2 = p1 && this._rect.isPointInFill(point);
60
60
  point.x = elementRect.left - designerCanvas.containerBoundingRect.left;
61
61
  point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
62
- const p3 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
62
+ const p3 = p2 && this._rect.isPointInFill(point);
63
63
  point.x = elementRect.left - designerCanvas.containerBoundingRect.left + elementRect.width;
64
64
  point.y = elementRect.top - designerCanvas.containerBoundingRect.top + elementRect.height;
65
- const p4 = this._rect.isPointInFill(point) || this._rect.isPointInStroke(point);
66
- if (p1 && p2 && p3 && p4) {
65
+ const p4 = p3 && this._rect.isPointInFill(point);
66
+ if (p4) {
67
67
  const desItem = DesignItem.GetOrCreateDesignItem(e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
68
68
  inSelectionElements.push(desItem);
69
69
  }