@node-projects/web-component-designer 0.1.93 → 0.1.94

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.
@@ -6,6 +6,8 @@ import { BindingTarget } from '../../../item/BindingTarget.js';
6
6
  import { IBinding } from '../../../item/IBinding.js';
7
7
  import { IPropertyGroup } from '../IPropertyGroup.js';
8
8
  export declare abstract class AbstractPropertiesService implements IPropertiesService {
9
+ constructor(recreateElementsOnPropertyChange?: boolean);
10
+ protected _recreateElementsOnPropertyChange: boolean;
9
11
  private static _stylesCache;
10
12
  private _cssCacheClearTimer;
11
13
  private static _bindingsCache;
@@ -22,4 +24,5 @@ export declare abstract class AbstractPropertiesService implements IPropertiesSe
22
24
  getValue(designItems: IDesignItem[], property: IProperty): string | boolean;
23
25
  getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
24
26
  getUnsetValue(designItems: IDesignItem[], property: IProperty): any;
27
+ protected static recreateElements(service: IPropertiesService, designItems: IDesignItem[]): void;
25
28
  }
@@ -3,7 +3,12 @@ import { PropertiesHelper } from './PropertiesHelper.js';
3
3
  import { BindingTarget } from '../../../item/BindingTarget.js';
4
4
  import { PropertyType } from '../PropertyType.js';
5
5
  import { NodeType } from '../../../item/NodeType.js';
6
+ import { newElementFromString } from '../../../helper/ElementHelper.js';
6
7
  export class AbstractPropertiesService {
8
+ constructor(recreateElementsOnPropertyChange) {
9
+ this._recreateElementsOnPropertyChange = recreateElementsOnPropertyChange;
10
+ }
11
+ _recreateElementsOnPropertyChange = false;
7
12
  static _stylesCache = new Map;
8
13
  _cssCacheClearTimer;
9
14
  static _bindingsCache = new Map;
@@ -64,6 +69,8 @@ export class AbstractPropertiesService {
64
69
  this._notifyChangedProperty(d, property, value);
65
70
  }
66
71
  cg.commit();
72
+ if (this._recreateElementsOnPropertyChange)
73
+ AbstractPropertiesService.recreateElements(this, designItems);
67
74
  }
68
75
  getPropertyTarget(designItem, property) {
69
76
  if (property.propertyType == PropertyType.attribute)
@@ -94,6 +101,8 @@ export class AbstractPropertiesService {
94
101
  this._notifyChangedProperty(d, property, undefined);
95
102
  }
96
103
  cg.commit();
104
+ if (this._recreateElementsOnPropertyChange)
105
+ AbstractPropertiesService.recreateElements(this, designItems);
97
106
  }
98
107
  isSet(designItems, property) {
99
108
  let all = true;
@@ -233,4 +242,23 @@ export class AbstractPropertiesService {
233
242
  else
234
243
  return property.defaultValue;
235
244
  }
245
+ static recreateElements(service, designItems) {
246
+ for (let d of designItems) {
247
+ if (!service.isHandledElement(d))
248
+ continue;
249
+ let txt = '<' + d.name + ' ';
250
+ for (let a of d.element.attributes) {
251
+ txt += a.name + '="' + a.value.replaceAll('"', '&quot;') + '" ';
252
+ }
253
+ txt += '></' + d.name + '>';
254
+ let element = newElementFromString(txt); // some custom elements only parse attributes during constructor call
255
+ for (let c of [...d.element.childNodes])
256
+ element.appendChild(c);
257
+ element.style.pointerEvents = 'auto';
258
+ d.node.insertAdjacentElement('beforebegin', element);
259
+ if (d.node.parentNode)
260
+ d.node.parentNode.removeChild(d.node);
261
+ d.replaceNode(element);
262
+ }
263
+ }
236
264
  }
@@ -11,7 +11,7 @@ export class CssCurrentPropertiesService extends CommonPropertiesService {
11
11
  return RefreshMode.fullOnValueChange;
12
12
  }
13
13
  constructor() {
14
- super();
14
+ super(false);
15
15
  this.name = 'styles';
16
16
  }
17
17
  isHandledElement(designItem) {
@@ -6,7 +6,7 @@ import { BindingTarget } from '../../../item/BindingTarget.js';
6
6
  export class CssCustomPropertiesService extends CommonPropertiesService {
7
7
  removeInheritedCustomProperties;
8
8
  constructor(removeInheritedCustomProperties = true) {
9
- super();
9
+ super(false);
10
10
  this.name = 'customProperties';
11
11
  this.removeInheritedCustomProperties = removeInheritedCustomProperties;
12
12
  }
@@ -79,7 +79,7 @@ export class CssPropertiesService extends CommonPropertiesService {
79
79
  "stroke-opacity"
80
80
  ];
81
81
  constructor(name) {
82
- super();
82
+ super(false);
83
83
  this.name = name;
84
84
  }
85
85
  isHandledElement(designItem) {
@@ -8,7 +8,7 @@ export declare class ListPropertiesService extends AbstractPropertiesService {
8
8
  getRefreshMode(designItem: IDesignItem): RefreshMode;
9
9
  name: string;
10
10
  private _propertys;
11
- constructor(propertyDefinitions: IJsonPropertyDefinitions);
11
+ constructor(propertyDefinitions: IJsonPropertyDefinitions, recreateElementsOnPropertyChange?: boolean);
12
12
  isHandledElement(designItem: IDesignItem): boolean;
13
13
  protected _notifyChangedProperty(designItem: IDesignItem, property: IProperty, value: any): void;
14
14
  getProperties(designItem: IDesignItem): IProperty[] | IPropertyGroup[];
@@ -7,8 +7,8 @@ export class ListPropertiesService extends AbstractPropertiesService {
7
7
  }
8
8
  name = "list";
9
9
  _propertys = new Map();
10
- constructor(propertyDefinitions) {
11
- super();
10
+ constructor(propertyDefinitions, recreateElementsOnPropertyChange) {
11
+ super(recreateElementsOnPropertyChange);
12
12
  for (let e in propertyDefinitions) {
13
13
  let parr = [];
14
14
  this._propertys.set(e, parr);
@@ -9,7 +9,7 @@ export declare class WebcomponentManifestPropertiesService extends AbstractPrope
9
9
  private _name;
10
10
  get name(): string;
11
11
  private _propertiesList;
12
- constructor(name: string, manifest: any);
12
+ constructor(name: string, manifest: any, recreateElementsOnPropertyChange?: boolean);
13
13
  private _parseManifest;
14
14
  static manifestClassPropertyTypeToEditorPropertyType(type: string, editor: string): [type: string, values?: string[]];
15
15
  isHandledElement(designItem: IDesignItem): boolean;
@@ -9,8 +9,8 @@ export class WebcomponentManifestPropertiesService extends AbstractPropertiesSer
9
9
  _name;
10
10
  get name() { return this._name; }
11
11
  _propertiesList;
12
- constructor(name, manifest) {
13
- super();
12
+ constructor(name, manifest, recreateElementsOnPropertyChange) {
13
+ super(recreateElementsOnPropertyChange);
14
14
  this._name = name;
15
15
  this._parseManifest(manifest);
16
16
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.1.93",
4
+ "version": "0.1.94",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "jochen.kuehner@gmx.de",