@node-projects/web-component-designer 0.1.117 → 0.1.119

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.
@@ -11,7 +11,7 @@ export declare abstract class AbstractPropertiesService implements IPropertiesSe
11
11
  private static _stylesCache;
12
12
  private _cssCacheClearTimer;
13
13
  private static _bindingsCache;
14
- private _bindingsCacheClearTimer;
14
+ private static _bindingsCacheClearTimer;
15
15
  abstract getRefreshMode(designItem: IDesignItem): RefreshMode;
16
16
  abstract isHandledElement(designItem: IDesignItem): boolean;
17
17
  protected _notifyChangedProperty(designItem: IDesignItem, property: IProperty, value: any): void;
@@ -21,6 +21,7 @@ export declare abstract class AbstractPropertiesService implements IPropertiesSe
21
21
  getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
22
22
  clearValue(designItems: IDesignItem[], property: IProperty, clearType: 'all' | 'binding' | 'value'): void;
23
23
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
24
+ static getOrBuildCachedBindings(designItem: IDesignItem): IBinding[];
24
25
  getValue(designItems: IDesignItem[], property: IProperty): string | boolean;
25
26
  getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
26
27
  getUnsetValue(designItems: IDesignItem[], property: IProperty): any;
@@ -12,7 +12,7 @@ export class AbstractPropertiesService {
12
12
  static _stylesCache = new Map;
13
13
  _cssCacheClearTimer;
14
14
  static _bindingsCache = new Map;
15
- _bindingsCacheClearTimer;
15
+ static _bindingsCacheClearTimer;
16
16
  _notifyChangedProperty(designItem, property, value) {
17
17
  }
18
18
  getProperty(designItem, name) {
@@ -123,13 +123,7 @@ export class AbstractPropertiesService {
123
123
  break;
124
124
  }
125
125
  ;
126
- let bindings = AbstractPropertiesService._bindingsCache.get(designItems[0]);
127
- if (!bindings) {
128
- bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => s.getBindings(designItems[0]));
129
- AbstractPropertiesService._bindingsCache.set(designItems[0], bindings);
130
- clearTimeout(this._bindingsCacheClearTimer);
131
- this._bindingsCacheClearTimer = setTimeout(() => AbstractPropertiesService._bindingsCache.clear(), 30);
132
- }
126
+ const bindings = AbstractPropertiesService.getOrBuildCachedBindings(designItems[0]);
133
127
  if (property.propertyType == PropertyType.cssValue) {
134
128
  if (bindings && bindings.find(x => (x.target == BindingTarget.css || x.target == BindingTarget.cssvar) && x.targetName == property.name))
135
129
  return ValueType.bound;
@@ -165,6 +159,23 @@ export class AbstractPropertiesService {
165
159
  return ValueType.none;
166
160
  return all ? ValueType.all : some ? ValueType.some : ValueType.none;
167
161
  }
162
+ static getOrBuildCachedBindings(designItem) {
163
+ let bindings = AbstractPropertiesService._bindingsCache.get(designItem);
164
+ if (!bindings) {
165
+ const services = designItem.serviceContainer.getServices('bindingService');
166
+ const bindings = [];
167
+ for (const s of services) {
168
+ const bs = s.getBindings(designItem);
169
+ if (bs && bs.length > 0) {
170
+ bindings.push(...bs);
171
+ }
172
+ }
173
+ AbstractPropertiesService._bindingsCache.set(designItem, bindings);
174
+ clearTimeout(this._bindingsCacheClearTimer);
175
+ this._bindingsCacheClearTimer = setTimeout(() => AbstractPropertiesService._bindingsCache.clear(), 30);
176
+ }
177
+ return bindings;
178
+ }
168
179
  getValue(designItems, property) {
169
180
  if (designItems != null && designItems.length !== 0) {
170
181
  if (property.propertyType == PropertyType.cssValue) {
@@ -207,10 +218,7 @@ export class AbstractPropertiesService {
207
218
  return null;
208
219
  }
209
220
  getBinding(designItems, property) {
210
- //TODO: optimize perf, do not call bindings service for each property.
211
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
212
- return s.getBindings(designItems[0]);
213
- });
221
+ const bindings = AbstractPropertiesService.getOrBuildCachedBindings(designItems[0]);
214
222
  if (bindings != null) {
215
223
  if (property.propertyType == PropertyType.cssValue) {
216
224
  return bindings.find(x => (x.target == BindingTarget.css || x.target == BindingTarget.cssvar) && x.targetName == property.name);
@@ -3,6 +3,7 @@ import { ValueType } from '../ValueType.js';
3
3
  import { BindingTarget } from '../../../item/BindingTarget.js';
4
4
  import { PropertyType } from '../PropertyType.js';
5
5
  import { PropertiesHelper } from './PropertiesHelper.js';
6
+ import { AbstractPropertiesService } from './AbstractPropertiesService.js';
6
7
  export class AttributesPropertiesService {
7
8
  name = "attributes";
8
9
  getRefreshMode(designItem) {
@@ -56,10 +57,7 @@ export class AttributesPropertiesService {
56
57
  all = all && has;
57
58
  some = some || has;
58
59
  });
59
- //TODO: optimize perf, do not call bindings service for each property.
60
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
61
- return s.getBindings(designItems[0]);
62
- });
60
+ const bindings = AbstractPropertiesService.getOrBuildCachedBindings(designItems[0]);
63
61
  if (bindings && bindings.find(x => x.target == BindingTarget.attribute && x.targetName == propName))
64
62
  return ValueType.bound;
65
63
  }
@@ -87,10 +85,7 @@ export class AttributesPropertiesService {
87
85
  return null;
88
86
  }
89
87
  getBinding(designItems, property) {
90
- //TODO: optimize perf, do not call bindings service for each property.
91
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
92
- return s.getBindings(designItems[0]);
93
- });
88
+ const bindings = AbstractPropertiesService.getOrBuildCachedBindings(designItems[0]);
94
89
  return bindings.find(x => (x.target == BindingTarget.property || x.target == BindingTarget.attribute) && x.targetName == property.name);
95
90
  }
96
91
  getUnsetValue(designItems, property) {
@@ -64,10 +64,7 @@ export class ContentAndIdPropertiesService extends AbstractPropertiesService {
64
64
  all = all && has;
65
65
  some = some || has;
66
66
  });
67
- //TODO: optimize perf, do not call bindings service for each property.
68
- const bindings = designItems[0].serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
69
- return s.getBindings(designItems[0]);
70
- });
67
+ const bindings = AbstractPropertiesService.getOrBuildCachedBindings(designItems[0]);
71
68
  if (bindings && bindings.find(x => x.target == BindingTarget.property && x.targetName == property.name))
72
69
  return ValueType.bound;
73
70
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A WYSIWYG designer webcomponent for html components",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.1.117",
4
+ "version": "0.1.119",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",