@node-projects/web-component-designer 0.0.142 → 0.0.143

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 (49) hide show
  1. package/README.md +10 -2
  2. package/dist/elements/helper/ArrangeHelper.d.ts +2 -2
  3. package/dist/elements/helper/ArrangeHelper.js +49 -23
  4. package/dist/elements/helper/ElementHelper.d.ts +1 -0
  5. package/dist/elements/helper/ElementHelper.js +3 -0
  6. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +1 -0
  7. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +14 -8
  8. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +3 -2
  9. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +5 -2
  10. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +6 -6
  11. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.d.ts +8 -0
  12. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.js +47 -0
  13. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +20 -0
  14. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +162 -0
  15. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.d.ts +2 -2
  16. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js +2 -2
  17. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +2 -12
  18. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +2 -81
  19. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +2 -11
  20. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +3 -72
  21. package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +3 -2
  22. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +5 -2
  23. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.d.ts +2 -2
  24. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.js +2 -2
  25. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.d.ts +2 -2
  26. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.js +2 -2
  27. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +6 -0
  28. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.d.ts +2 -2
  29. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.js +2 -2
  30. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +4 -4
  31. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.js +95 -50
  32. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.d.ts +3 -2
  33. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js +5 -2
  34. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +9 -2
  35. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +20 -4
  36. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.d.ts +4 -1
  37. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js +10 -1
  38. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +2 -1
  39. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +4 -0
  40. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +2 -1
  41. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +4 -1
  42. package/dist/elements/widgets/designerView/tools/TextTool.js +31 -15
  43. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +3 -0
  44. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +18 -0
  45. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +54 -2
  46. package/dist/elements/widgets/paletteView/paletteView.js +1 -0
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.js +1 -1
  49. package/package.json +1 -1
@@ -1,7 +1,6 @@
1
- import { ValueType } from "../ValueType";
2
- import { BindingTarget } from "../../../item/BindingTarget";
3
1
  import { PropertyType } from "../PropertyType";
4
- export class CommonPropertiesService {
2
+ import { AbstractPropertiesService } from "./AbstractPropertiesService";
3
+ export class CommonPropertiesService extends AbstractPropertiesService {
5
4
  listNeedsRefresh(designItem) {
6
5
  return true;
7
6
  }
@@ -41,82 +40,4 @@ export class CommonPropertiesService {
41
40
  getProperties(designItem) {
42
41
  return this.commonProperties;
43
42
  }
44
- setValue(designItems, property, value) {
45
- for (let d of designItems) {
46
- if (property.type == 'boolean' && !value) {
47
- d.attributes.delete(property.name);
48
- d.element.removeAttribute(property.name);
49
- }
50
- else if (property.type == 'boolean' && value) {
51
- d.attributes.set(property.name, "");
52
- d.element.setAttribute(property.name, "");
53
- }
54
- else {
55
- d.attributes.set(property.name, value);
56
- d.element.setAttribute(property.name, value);
57
- }
58
- }
59
- }
60
- getPropertyTarget(designItem, property) {
61
- return BindingTarget.property;
62
- }
63
- clearValue(designItems, property) {
64
- for (let d of designItems) {
65
- d.attributes.delete(property.name);
66
- d.element.removeAttribute(property.name);
67
- d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
68
- return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
69
- });
70
- }
71
- }
72
- isSet(designItems, property) {
73
- let all = true;
74
- let some = false;
75
- if (designItems != null && designItems.length !== 0) {
76
- let attributeName = property.name;
77
- designItems.forEach((x) => {
78
- let has = x.attributes.has(attributeName);
79
- all = all && has;
80
- some = some || has;
81
- });
82
- //todo: optimize perf, do not call bindings service for each property.
83
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
84
- return s.getBindings(designItems[0]);
85
- });
86
- if (bindings && bindings.find(x => x.target == BindingTarget.property && x.targetName == property.name))
87
- return ValueType.bound;
88
- }
89
- else
90
- return ValueType.none;
91
- return all ? ValueType.all : some ? ValueType.some : ValueType.none;
92
- }
93
- getValue(designItems, property) {
94
- if (designItems != null && designItems.length !== 0) {
95
- let attributeName = property.name;
96
- if (property.type == 'boolean')
97
- return designItems[0].attributes.has(attributeName);
98
- let lastValue = designItems[0].attributes.get(attributeName);
99
- /*
100
- for (const x of designItems) {
101
- let value = x.attributes.get(attributeName);
102
- if (value != lastValue) {
103
- lastValue = null;
104
- break;
105
- }
106
- }
107
- */
108
- return lastValue;
109
- }
110
- return null;
111
- }
112
- getBinding(designItems, property) {
113
- //TODO: optimize perf, do not call bindings service for each property.
114
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
115
- return s.getBindings(designItems[0]);
116
- });
117
- return bindings.find(x => (x.target == BindingTarget.property || x.target == BindingTarget.attribute) && x.targetName == property.name);
118
- }
119
- getUnsetValue(designItems, property) {
120
- return property.defaultValue;
121
- }
122
43
  }
@@ -1,24 +1,15 @@
1
- import { IPropertiesService } from '../IPropertiesService';
2
1
  import { IProperty } from '../IProperty';
3
2
  import { IDesignItem } from '../../../item/IDesignItem';
4
- import { ValueType } from '../ValueType';
5
3
  import { BindingTarget } from '../../../item/BindingTarget.js';
6
- import { IBinding } from '../../../item/IBinding';
7
- export declare class CssPropertiesService implements IPropertiesService {
4
+ import { CommonPropertiesService } from './CommonPropertiesService';
5
+ export declare class CssPropertiesService extends CommonPropertiesService {
8
6
  listNeedsRefresh(designItem: IDesignItem): boolean;
9
7
  layout: IProperty[];
10
8
  grid: IProperty[];
11
9
  flex: IProperty[];
12
- name: 'styles' | 'layout' | 'grid' | 'flex';
13
10
  constructor(name: 'styles' | 'layout' | 'grid' | 'flex');
14
11
  isHandledElement(designItem: IDesignItem): boolean;
15
12
  getProperty(designItem: IDesignItem, name: string): IProperty;
16
13
  getProperties(designItem: IDesignItem): IProperty[];
17
- setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
18
14
  getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
19
- clearValue(designItems: IDesignItem[], property: IProperty): void;
20
- isSet(designItems: IDesignItem[], property: IProperty): ValueType;
21
- getValue(designItems: IDesignItem[], property: IProperty): string;
22
- getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
23
- getUnsetValue(designItems: IDesignItem[], property: IProperty): any;
24
15
  }
@@ -1,8 +1,7 @@
1
- import { ValueType } from '../ValueType';
2
- import { NodeType } from '../../../item/NodeType';
3
1
  import { BindingTarget } from '../../../item/BindingTarget.js';
4
2
  import { PropertyType } from '../PropertyType';
5
- export class CssPropertiesService {
3
+ import { CommonPropertiesService } from './CommonPropertiesService';
4
+ export class CssPropertiesService extends CommonPropertiesService {
6
5
  listNeedsRefresh(designItem) {
7
6
  return this.name == 'styles' ? true : false;
8
7
  }
@@ -178,8 +177,8 @@ export class CssPropertiesService {
178
177
  propertyType: PropertyType.cssValue
179
178
  }
180
179
  ];
181
- name;
182
180
  constructor(name) {
181
+ super();
183
182
  this.name = name;
184
183
  }
185
184
  isHandledElement(designItem) {
@@ -201,75 +200,7 @@ export class CssPropertiesService {
201
200
  }
202
201
  return this[this.name];
203
202
  }
204
- setValue(designItems, property, value) {
205
- const cg = designItems[0].openGroup("properties changed");
206
- for (let d of designItems) {
207
- d.styles.set(property.name, value);
208
- d.element.style[property.name] = value;
209
- }
210
- cg.commit();
211
- }
212
203
  getPropertyTarget(designItem, property) {
213
204
  return BindingTarget.css;
214
205
  }
215
- clearValue(designItems, property) {
216
- for (let d of designItems) {
217
- d.styles.delete(property.name);
218
- d.element.style[property.name] = '';
219
- d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
220
- return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
221
- });
222
- }
223
- }
224
- isSet(designItems, property) {
225
- let all = true;
226
- let some = false;
227
- if (designItems != null && designItems.length !== 0) {
228
- designItems.forEach((x) => {
229
- let has = x.styles.has(property.name);
230
- all = all && has;
231
- some = some || has;
232
- });
233
- //todo: optimize perf, do not call bindings service for each property.
234
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
235
- return s.getBindings(designItems[0]);
236
- });
237
- if (bindings && bindings.find(x => x.target == BindingTarget.css && x.targetName == property.name))
238
- return ValueType.bound;
239
- }
240
- else
241
- return ValueType.none;
242
- return all ? ValueType.all : some ? ValueType.some : ValueType.none;
243
- }
244
- getValue(designItems, property) {
245
- if (designItems != null && designItems.length !== 0) {
246
- let lastValue = designItems[0].styles.get(property.name);
247
- for (const x of designItems) {
248
- let value = x.styles.get(property.name);
249
- if (value != lastValue) {
250
- lastValue = null;
251
- break;
252
- }
253
- }
254
- return lastValue;
255
- }
256
- return null;
257
- }
258
- getBinding(designItems, property) {
259
- //TODO: optimize perf, do not call bindings service for each property.
260
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
261
- return s.getBindings(designItems[0]);
262
- });
263
- return bindings.find(x => (x.target == BindingTarget.css) && x.targetName == property.name);
264
- }
265
- //todo: optimize perf, call window.getComputedStyle only once per item, and not per property
266
- getUnsetValue(designItems, property) {
267
- if (designItems != null && designItems.length !== 0) {
268
- if (designItems[0].nodeType == NodeType.Element) {
269
- let v = window.getComputedStyle(designItems[0].element)[property.name];
270
- return v;
271
- }
272
- }
273
- return null;
274
- }
275
206
  }
@@ -1,8 +1,9 @@
1
1
  import { IProperty } from '../IProperty';
2
2
  import { IDesignItem } from '../../../item/IDesignItem';
3
3
  import { IJsonPropertyDefinitions } from './IJsonPropertyDefinitions';
4
- import { UnkownElementPropertiesService } from './UnkownElementPropertiesService';
5
- export declare class ListPropertiesService extends UnkownElementPropertiesService {
4
+ import { AbstractPropertiesService } from './AbstractPropertiesService';
5
+ export declare class ListPropertiesService extends AbstractPropertiesService {
6
+ listNeedsRefresh(designItem: IDesignItem): boolean;
6
7
  name: string;
7
8
  private _propertys;
8
9
  constructor(propertyDefinitions: IJsonPropertyDefinitions);
@@ -1,6 +1,9 @@
1
- import { UnkownElementPropertiesService } from './UnkownElementPropertiesService';
1
+ import { AbstractPropertiesService } from './AbstractPropertiesService';
2
2
  import { PropertyType } from '../PropertyType';
3
- export class ListPropertiesService extends UnkownElementPropertiesService {
3
+ export class ListPropertiesService extends AbstractPropertiesService {
4
+ listNeedsRefresh(designItem) {
5
+ return false;
6
+ }
4
7
  name = "list";
5
8
  _propertys = new Map();
6
9
  constructor(propertyDefinitions) {
@@ -1,7 +1,7 @@
1
1
  import { IProperty } from '../IProperty';
2
2
  import { IDesignItem } from '../../../item/IDesignItem';
3
- import { AbstractBasePropertiesService } from "./AbstractBasePropertiesService";
4
- export declare class Lit2PropertiesService extends AbstractBasePropertiesService {
3
+ import { AbstractPolymerLikePropertiesService } from "./AbstractPolymerLikePropertiesService";
4
+ export declare class Lit2PropertiesService extends AbstractPolymerLikePropertiesService {
5
5
  name: string;
6
6
  isHandledElement(designItem: IDesignItem): boolean;
7
7
  getProperties(designItem: IDesignItem): IProperty[];
@@ -1,7 +1,7 @@
1
- import { AbstractBasePropertiesService } from "./AbstractBasePropertiesService";
1
+ import { AbstractPolymerLikePropertiesService } from "./AbstractPolymerLikePropertiesService";
2
2
  import { PropertiesHelper } from './PropertiesHelper';
3
3
  import { PropertyType } from '../PropertyType';
4
- export class Lit2PropertiesService extends AbstractBasePropertiesService {
4
+ export class Lit2PropertiesService extends AbstractPolymerLikePropertiesService {
5
5
  name = "lit2";
6
6
  isHandledElement(designItem) {
7
7
  let prop = designItem.element.constructor.elementProperties;
@@ -1,7 +1,7 @@
1
1
  import { IProperty } from '../IProperty';
2
2
  import { IDesignItem } from '../../../item/IDesignItem';
3
- import { AbstractBasePropertiesService } from "./AbstractBasePropertiesService";
4
- export declare class LitElementPropertiesService extends AbstractBasePropertiesService {
3
+ import { AbstractPolymerLikePropertiesService } from "./AbstractPolymerLikePropertiesService";
4
+ export declare class LitElementPropertiesService extends AbstractPolymerLikePropertiesService {
5
5
  name: string;
6
6
  isHandledElement(designItem: IDesignItem): boolean;
7
7
  protected _notifyChangedProperty(designItem: IDesignItem, property: IProperty, value: any): void;
@@ -1,5 +1,5 @@
1
- import { AbstractBasePropertiesService } from "./AbstractBasePropertiesService";
2
- export class LitElementPropertiesService extends AbstractBasePropertiesService {
1
+ import { AbstractPolymerLikePropertiesService } from "./AbstractPolymerLikePropertiesService";
2
+ export class LitElementPropertiesService extends AbstractPolymerLikePropertiesService {
3
3
  name = "lit";
4
4
  isHandledElement(designItem) {
5
5
  let proto = designItem.element.constructor.__proto__;
@@ -67,6 +67,12 @@ export class NativeElementsPropertiesService extends CommonPropertiesService {
67
67
  type: "boolean",
68
68
  service: this,
69
69
  propertyType: PropertyType.propertyAndAttribute
70
+ }, {
71
+ name: "resize",
72
+ type: "list",
73
+ values: ["both", "none", "horizontal", "vertical"],
74
+ service: this,
75
+ propertyType: PropertyType.cssValue
70
76
  }
71
77
  ];
72
78
  selectProperties = [
@@ -1,7 +1,7 @@
1
1
  import { IProperty } from '../IProperty';
2
2
  import { IDesignItem } from '../../../item/IDesignItem';
3
- import { AbstractBasePropertiesService } from './AbstractBasePropertiesService';
4
- export declare class PolymerPropertiesService extends AbstractBasePropertiesService {
3
+ import { AbstractPolymerLikePropertiesService } from './AbstractPolymerLikePropertiesService';
4
+ export declare class PolymerPropertiesService extends AbstractPolymerLikePropertiesService {
5
5
  name: string;
6
6
  isHandledElement(designItem: IDesignItem): boolean;
7
7
  protected _notifyChangedProperty(designItem: IDesignItem, property: IProperty, value: any): void;
@@ -1,5 +1,5 @@
1
- import { AbstractBasePropertiesService } from './AbstractBasePropertiesService';
2
- export class PolymerPropertiesService extends AbstractBasePropertiesService {
1
+ import { AbstractPolymerLikePropertiesService } from './AbstractPolymerLikePropertiesService';
2
+ export class PolymerPropertiesService extends AbstractPolymerLikePropertiesService {
3
3
  name = "polymer";
4
4
  isHandledElement(designItem) {
5
5
  return designItem.element.constructor.polymerElementVersion != null;
@@ -5,16 +5,16 @@ import { ValueType } from "../ValueType";
5
5
  import { BindingTarget } from "../../../item/BindingTarget";
6
6
  import { IBinding } from "../../../item/IBinding";
7
7
  export declare abstract class UnkownElementPropertiesService implements IPropertiesService {
8
- listNeedsRefresh(designItem: IDesignItem): boolean;
9
- isHandledElement(designItem: IDesignItem): boolean;
8
+ abstract listNeedsRefresh(designItem: IDesignItem): boolean;
9
+ abstract isHandledElement(designItem: IDesignItem): boolean;
10
10
  protected _notifyChangedProperty(designItem: IDesignItem, property: IProperty, value: any): void;
11
11
  getProperty(designItem: IDesignItem, name: string): IProperty;
12
- getProperties(designItem: IDesignItem): IProperty[];
12
+ abstract getProperties(designItem: IDesignItem): IProperty[];
13
13
  setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
14
14
  getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
15
15
  clearValue(designItems: IDesignItem[], property: IProperty): void;
16
16
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
17
- getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
18
17
  getValue(designItems: IDesignItem[], property: IProperty): string | boolean;
18
+ getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
19
19
  getUnsetValue(designItems: IDesignItem[], property: IProperty): any;
20
20
  }
@@ -1,29 +1,25 @@
1
1
  import { ValueType } from "../ValueType";
2
2
  import { PropertiesHelper } from './PropertiesHelper';
3
3
  import { BindingTarget } from "../../../item/BindingTarget";
4
- //@ts-ignore
4
+ import { PropertyType } from "../PropertyType";
5
+ import { NodeType } from "../../../item/NodeType";
5
6
  export class UnkownElementPropertiesService {
6
- listNeedsRefresh(designItem) {
7
- return true;
8
- }
9
- isHandledElement(designItem) {
10
- return true;
11
- }
12
7
  _notifyChangedProperty(designItem, property, value) {
13
8
  }
14
9
  getProperty(designItem, name) {
15
- return null;
16
- }
17
- getProperties(designItem) {
18
- return null;
10
+ return this.getProperties(designItem).find(x => x.name == name);
19
11
  }
20
12
  setValue(designItems, property, value) {
21
- let attributeName = property.attributeName;
22
- if (!attributeName)
23
- attributeName = PropertiesHelper.camelToDashCase(property.name);
24
13
  const cg = designItems[0].openGroup("properties changed");
25
- try {
26
- for (let d of designItems) {
14
+ for (let d of designItems) {
15
+ if (property.propertyType == PropertyType.cssValue) {
16
+ d.styles.set(property.name, value);
17
+ d.element.style[property.name] = value;
18
+ }
19
+ else {
20
+ let attributeName = property.attributeName;
21
+ if (!attributeName)
22
+ attributeName = PropertiesHelper.camelToDashCase(property.name);
27
23
  if (property.type === 'object') {
28
24
  const json = JSON.stringify(value);
29
25
  d.attributes.set(attributeName, json);
@@ -41,77 +37,126 @@ export class UnkownElementPropertiesService {
41
37
  d.attributes.set(attributeName, value);
42
38
  d.element.setAttribute(attributeName, value);
43
39
  }
44
- this._notifyChangedProperty(d, property, value);
45
40
  }
46
- cg.commit();
47
- }
48
- catch (err) {
49
- console.log(err);
50
- cg.undo();
41
+ this._notifyChangedProperty(d, property, value);
51
42
  }
43
+ cg.commit();
52
44
  }
53
45
  getPropertyTarget(designItem, property) {
54
46
  return BindingTarget.property;
55
47
  }
56
48
  clearValue(designItems, property) {
57
- const attributeName = PropertiesHelper.camelToDashCase(property.name);
49
+ const cg = designItems[0].openGroup("properties cleared");
58
50
  for (let d of designItems) {
59
- d.attributes.delete(attributeName);
60
- d.element.removeAttribute(attributeName);
51
+ if (property.propertyType == PropertyType.cssValue) {
52
+ d.styles.delete(property.name);
53
+ d.element.style[property.name] = '';
54
+ }
55
+ else {
56
+ let attributeName = property.attributeName;
57
+ if (!attributeName)
58
+ attributeName = PropertiesHelper.camelToDashCase(property.name);
59
+ d.attributes.delete(attributeName);
60
+ d.element.removeAttribute(attributeName);
61
+ }
61
62
  d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
62
63
  return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
63
64
  });
64
65
  this._notifyChangedProperty(d, property, undefined);
65
66
  }
67
+ cg.commit();
66
68
  }
67
69
  isSet(designItems, property) {
68
70
  let all = true;
69
71
  let some = false;
70
72
  if (designItems != null && designItems.length !== 0) {
71
- let attributeName = PropertiesHelper.camelToDashCase(property.name);
73
+ let attributeName = property.attributeName;
74
+ if (!attributeName)
75
+ attributeName = PropertiesHelper.camelToDashCase(property.name);
72
76
  designItems.forEach((x) => {
73
- let has = x.attributes.has(attributeName);
77
+ let has = false;
78
+ if (property.propertyType == PropertyType.cssValue)
79
+ has = x.styles.has(property.name);
80
+ else
81
+ has = x.attributes.has(attributeName);
74
82
  all = all && has;
75
83
  some = some || has;
76
84
  });
77
- //TODO: optimize perf, do not call bindings service for each property.
85
+ //todo: optimize perf, do not call bindings service for each property.
78
86
  const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
79
87
  return s.getBindings(designItems[0]);
80
88
  });
81
- if (bindings && bindings.find(x => (x.target == BindingTarget.property || x.target == BindingTarget.attribute) && x.targetName == property.name))
82
- return ValueType.bound;
89
+ if (property.propertyType == PropertyType.cssValue) {
90
+ if (bindings && bindings.find(x => x.target == BindingTarget.css && x.targetName == property.name))
91
+ return ValueType.bound;
92
+ }
93
+ else {
94
+ if (bindings && bindings.find(x => x.target == BindingTarget.property && x.targetName == property.name))
95
+ return ValueType.bound;
96
+ }
83
97
  }
84
98
  else
85
99
  return ValueType.none;
86
100
  return all ? ValueType.all : some ? ValueType.some : ValueType.none;
87
101
  }
102
+ getValue(designItems, property) {
103
+ if (designItems != null && designItems.length !== 0) {
104
+ if (property.propertyType == PropertyType.cssValue) {
105
+ let lastValue = designItems[0].styles.get(property.name);
106
+ for (const x of designItems) {
107
+ let value = x.styles.get(property.name);
108
+ if (value != lastValue) {
109
+ lastValue = null;
110
+ break;
111
+ }
112
+ }
113
+ return lastValue;
114
+ }
115
+ else {
116
+ let attributeName = property.attributeName;
117
+ if (!attributeName)
118
+ attributeName = PropertiesHelper.camelToDashCase(property.name);
119
+ if (property.type == 'boolean')
120
+ return designItems[0].attributes.has(attributeName);
121
+ let lastValue = designItems[0].attributes.get(attributeName);
122
+ /*
123
+ for (const x of designItems) {
124
+ let value = x.attributes.get(attributeName);
125
+ if (value != lastValue) {
126
+ lastValue = null;
127
+ break;
128
+ }
129
+ }
130
+ */
131
+ return lastValue;
132
+ }
133
+ }
134
+ return null;
135
+ }
88
136
  getBinding(designItems, property) {
89
137
  //TODO: optimize perf, do not call bindings service for each property.
90
138
  const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
91
139
  return s.getBindings(designItems[0]);
92
140
  });
93
- return bindings.find(x => (x.target == BindingTarget.property || x.target == BindingTarget.attribute) && x.targetName == property.name);
94
- }
95
- getValue(designItems, property) {
96
- if (designItems != null && designItems.length !== 0) {
97
- let attributeName = PropertiesHelper.camelToDashCase(property.name);
98
- if (property.type == 'boolean')
99
- return designItems[0].attributes.has(attributeName);
100
- let lastValue = designItems[0].attributes.get(attributeName);
101
- /*
102
- for (const x of designItems) {
103
- let value = x.attributes.get(attributeName);
104
- if (value != lastValue) {
105
- lastValue = null;
106
- break;
107
- }
108
- }
109
- */
110
- return lastValue;
141
+ if (property.propertyType == PropertyType.cssValue) {
142
+ return bindings.find(x => (x.target == BindingTarget.css) && x.targetName == property.name);
143
+ }
144
+ else {
145
+ return bindings.find(x => (x.target == BindingTarget.property || x.target == BindingTarget.attribute) && x.targetName == property.name);
111
146
  }
112
- return null;
113
147
  }
148
+ //todo: optimize perf, call window.getComputedStyle only once per item, and not per property
114
149
  getUnsetValue(designItems, property) {
115
- return property.defaultValue;
150
+ if (property.propertyType == PropertyType.cssValue) {
151
+ if (designItems != null && designItems.length !== 0) {
152
+ if (designItems[0].nodeType == NodeType.Element) {
153
+ let v = window.getComputedStyle(designItems[0].element)[property.name];
154
+ return v;
155
+ }
156
+ }
157
+ return null;
158
+ }
159
+ else
160
+ return property.defaultValue;
116
161
  }
117
162
  }
@@ -2,8 +2,9 @@ import { BindingTarget } from "../../../item/BindingTarget.js";
2
2
  import { IDesignItem } from "../../../item/IDesignItem.js";
3
3
  import { IPropertiesService } from "../IPropertiesService.js";
4
4
  import { IProperty } from "../IProperty.js";
5
- import { UnkownElementPropertiesService } from "./UnkownElementPropertiesService.js";
6
- export declare class WebcomponentManifestPropertiesService extends UnkownElementPropertiesService implements IPropertiesService {
5
+ import { AbstractPropertiesService } from "./AbstractPropertiesService.js";
6
+ export declare class WebcomponentManifestPropertiesService extends AbstractPropertiesService implements IPropertiesService {
7
+ listNeedsRefresh(designItem: IDesignItem): boolean;
7
8
  private _name;
8
9
  get name(): string;
9
10
  private _propertiesList;
@@ -1,7 +1,10 @@
1
1
  import { BindingTarget } from "../../../item/BindingTarget.js";
2
2
  import { PropertyType } from "../PropertyType.js";
3
- import { UnkownElementPropertiesService } from "./UnkownElementPropertiesService.js";
4
- export class WebcomponentManifestPropertiesService extends UnkownElementPropertiesService {
3
+ import { AbstractPropertiesService } from "./AbstractPropertiesService.js";
4
+ export class WebcomponentManifestPropertiesService extends AbstractPropertiesService {
5
+ listNeedsRefresh(designItem) {
6
+ return false;
7
+ }
5
8
  _name;
6
9
  get name() { return this._name; }
7
10
  _propertiesList;
@@ -2,16 +2,23 @@ import { IDesignItem } from "../../../../item/IDesignItem";
2
2
  import { IDesignerCanvas } from "../../IDesignerCanvas";
3
3
  import { AbstractExtension } from "../AbstractExtension.js";
4
4
  import { IExtensionManager } from "../IExtensionManger";
5
- export declare class EditTextExtension extends AbstractExtension {
5
+ export declare type handlesPointerEvent = {
6
+ handlesPointerEvent(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): boolean;
7
+ };
8
+ export declare class EditTextExtension extends AbstractExtension implements handlesPointerEvent {
9
+ private static template;
6
10
  private _contentEditedBound;
7
11
  private _blurBound;
8
- private static template;
9
12
  private _blurTimeout;
13
+ private _foreignObject;
14
+ private _focusBound;
10
15
  constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
11
16
  extend(): void;
12
17
  refresh(): void;
13
18
  dispose(): void;
19
+ handlesPointerEvent(designerCanvas: IDesignerCanvas, event: PointerEvent, currentElement: Element): boolean;
14
20
  _contentEdited(): void;
15
21
  _blur(): void;
22
+ _focus(): void;
16
23
  _formatSelection(type: string): void;
17
24
  }