@node-projects/web-component-designer 0.0.284 → 0.0.286

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.
@@ -307,7 +307,10 @@ export class NpmPackageLoader {
307
307
  if (packageJsonObj.unpkg && !mainImport)
308
308
  mainImport = packageJsonObj.unpkg;
309
309
  if (!importMap.imports[packageJsonObj.name]) {
310
- importMap.imports[packageJsonObj.name] = baseUrl + removeTrailing(mainImport, '/');
310
+ if (mainImport)
311
+ importMap.imports[packageJsonObj.name] = baseUrl + removeTrailing(mainImport, '/');
312
+ else
313
+ console.warn('package: ' + baseUrl + 'no main import found');
311
314
  }
312
315
  importMap.imports[packageJsonObj.name + '/'] = baseUrl;
313
316
  //@ts-ignore
@@ -9,6 +9,7 @@ import { IDesignerExtension } from '../widgets/designerView/extensions/IDesigner
9
9
  import { ISize } from '../../interfaces/ISize.js';
10
10
  import { IDesignerExtensionProvider } from '../widgets/designerView/extensions/IDesignerExtensionProvider.js';
11
11
  import { IStyleRule } from '../services/stylesheetService/IStylesheetService.js';
12
+ import { TypedEvent } from '@node-projects/base-custom-webcomponent';
12
13
  import { IPlacementService } from '../services/placementService/IPlacementService.js';
13
14
  export declare class DesignItem implements IDesignItem {
14
15
  lastContainerSize: ISize;
@@ -18,6 +19,7 @@ export declare class DesignItem implements IDesignItem {
18
19
  instanceServiceContainer: InstanceServiceContainer;
19
20
  appliedDesignerExtensions: Map<ExtensionType, IDesignerExtension[]>;
20
21
  shouldAppliedDesignerExtensions: Map<ExtensionType, IDesignerExtensionProvider[]>;
22
+ nodeReplaced: TypedEvent<void>;
21
23
  clone(): Promise<IDesignItem>;
22
24
  allMatching(selectors: string): Generator<IDesignItem, void, undefined>;
23
25
  replaceNode(newNode: Node): void;
@@ -9,7 +9,7 @@ import { DomConverter } from '../widgets/designerView/DomConverter.js';
9
9
  import { DeleteAction } from '../services/undoService/transactionItems/DeleteAction.js';
10
10
  import { enableStylesheetService } from '../widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.js';
11
11
  import { AbstractStylesheetService } from '../services/stylesheetService/AbstractStylesheetService.js';
12
- import { cssFromString } from '@node-projects/base-custom-webcomponent';
12
+ import { TypedEvent, cssFromString } from '@node-projects/base-custom-webcomponent';
13
13
  const hideAtDesignTimeAttributeName = 'node-projects-hide-at-design-time';
14
14
  const hideAtRunTimeAttributeName = 'node-projects-hide-at-run-time';
15
15
  const lockAtDesignTimeAttributeName = 'node-projects-lock-at-design-time';
@@ -21,6 +21,7 @@ export class DesignItem {
21
21
  instanceServiceContainer;
22
22
  appliedDesignerExtensions = new Map();
23
23
  shouldAppliedDesignerExtensions = new Map();
24
+ nodeReplaced = new TypedEvent;
24
25
  async clone() {
25
26
  try {
26
27
  const html = DomConverter.ConvertToString([this], false);
@@ -46,6 +47,7 @@ export class DesignItem {
46
47
  DesignItem._designItemMap.delete(this.node);
47
48
  DesignItem._designItemMap.set(newNode, this);
48
49
  this.node = newNode;
50
+ this.nodeReplaced.emit();
49
51
  }
50
52
  get nodeType() {
51
53
  if (this.node instanceof Comment)
@@ -8,9 +8,11 @@ import { ISize } from "../../interfaces/ISize.js";
8
8
  import { IDesignerExtensionProvider } from '../widgets/designerView/extensions/IDesignerExtensionProvider.js';
9
9
  import { IStyleRule } from '../services/stylesheetService/IStylesheetService.js';
10
10
  import { IPlacementService } from '../services/placementService/IPlacementService.js';
11
+ import { TypedEvent } from '@node-projects/base-custom-webcomponent';
11
12
  export interface IDesignItem {
12
13
  lastContainerSize: ISize;
13
14
  replaceNode(newNode: Node): any;
15
+ nodeReplaced: TypedEvent<void>;
14
16
  clone(): Promise<IDesignItem>;
15
17
  readonly nodeType: NodeType;
16
18
  readonly name: string;
@@ -9,6 +9,7 @@ export declare class PropertyGrid extends BaseCustomWebComponentLazyAppend {
9
9
  private _propertyGridPropertyLists;
10
10
  private _propertyGridPropertyListsDict;
11
11
  private _itemsObserver;
12
+ private _nodeReplacedCb;
12
13
  private _instanceServiceContainer;
13
14
  private _selectionChangedHandler;
14
15
  static readonly style: CSSStyleSheet;
@@ -18,5 +19,5 @@ export declare class PropertyGrid extends BaseCustomWebComponentLazyAppend {
18
19
  set instanceServiceContainer(value: InstanceServiceContainer);
19
20
  get selectedItems(): IDesignItem[];
20
21
  set selectedItems(items: IDesignItem[]);
21
- private _observeItems;
22
+ private _observePrimarySelectionForChanges;
22
23
  }
@@ -9,6 +9,7 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
9
9
  _propertyGridPropertyLists;
10
10
  _propertyGridPropertyListsDict;
11
11
  _itemsObserver;
12
+ _nodeReplacedCb;
12
13
  _instanceServiceContainer;
13
14
  _selectionChangedHandler;
14
15
  static style = css `
@@ -100,17 +101,21 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
100
101
  if (visibleDict.has(a.title))
101
102
  a.refreshForDesignItems(items);
102
103
  }
103
- this._observeItems();
104
+ this._observePrimarySelectionForChanges();
104
105
  }
105
106
  }
106
107
  else {
107
108
  this._itemsObserver.disconnect();
109
+ this._nodeReplacedCb?.dispose();
110
+ this._nodeReplacedCb = null;
108
111
  }
109
112
  }
110
113
  }
111
- _observeItems() {
114
+ _observePrimarySelectionForChanges() {
115
+ this._nodeReplacedCb?.dispose();
112
116
  this._itemsObserver.disconnect();
113
117
  this._itemsObserver.observe(this._selectedItems[0].element, { attributes: true, childList: false, characterData: false });
118
+ this._nodeReplacedCb = this._selectedItems[0].nodeReplaced.on(() => this._observePrimarySelectionForChanges());
114
119
  }
115
120
  }
116
121
  customElements.define('node-projects-property-grid', PropertyGrid);
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.0.284",
4
+ "version": "0.0.286",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",