@node-projects/web-component-designer 0.0.186 → 0.0.187

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,7 +6,7 @@ export declare class NpmPackageLoader {
6
6
  private _dependecies;
7
7
  constructor(packageSource?: string);
8
8
  static patchCustomElementsRegistryToHandleErrors(): void;
9
- loadNpmPackage(pkg: string, serviceContainer: ServiceContainer, paletteTree: PaletteTreeView, reportState?: (state: string) => void): Promise<void>;
9
+ loadNpmPackage(pkg: string, serviceContainer: ServiceContainer, paletteTree: PaletteTreeView, loadAllImports: boolean, reportState?: (state: string) => void): Promise<void>;
10
10
  loadDependency(dependency: string, version?: string, reportState?: (state: string) => void): Promise<void>;
11
11
  addToImportmap(baseUrl: string, packageJsonObj: {
12
12
  name?: string;
@@ -41,7 +41,7 @@ export class NpmPackageLoader {
41
41
  }
42
42
  }
43
43
  //TODO: remove paletteTree form params. elements should be added to serviceconatiner, and the container should notify
44
- async loadNpmPackage(pkg, serviceContainer, paletteTree, reportState) {
44
+ async loadNpmPackage(pkg, serviceContainer, paletteTree, loadAllImports, reportState) {
45
45
  const baseUrl = window.location.protocol + this._packageSource + pkg + '/';
46
46
  const packageJsonUrl = baseUrl + 'package.json';
47
47
  if (reportState)
@@ -106,7 +106,7 @@ export class NpmPackageLoader {
106
106
  serviceContainer.register('elementsService', elements);
107
107
  let properties = new WebcomponentManifestPropertiesService(packageJsonObj.name, customElementsJsonObj);
108
108
  serviceContainer.register('propertyService', properties);
109
- if (window.location.search.includes("loadAllImports")) {
109
+ if (loadAllImports) {
110
110
  for (let e of await elements.getElements()) {
111
111
  //@ts-ignore
112
112
  importShim(e.import);
@@ -17,6 +17,7 @@ export declare class DesignItem implements IDesignItem {
17
17
  appliedDesignerExtensions: Map<ExtensionType, IDesignerExtension[]>;
18
18
  shouldAppliedDesignerExtensions: Map<ExtensionType, IDesignerExtensionProvider[]>;
19
19
  clone(): Promise<IDesignItem>;
20
+ allMatching(selectors: string): Generator<IDesignItem, void, undefined>;
20
21
  replaceNode(newNode: Node): void;
21
22
  get nodeType(): NodeType;
22
23
  private _attributes;
@@ -31,6 +31,15 @@ export class DesignItem {
31
31
  }
32
32
  return null;
33
33
  }
34
+ *allMatching(selectors) {
35
+ if (this.hasChildren) {
36
+ for (let d of this.children()) {
37
+ if (d.element.matches(selectors))
38
+ yield d;
39
+ yield* d.allMatching(selectors);
40
+ }
41
+ }
42
+ }
34
43
  replaceNode(newNode) {
35
44
  DesignItem._designItemMap.delete(this.node);
36
45
  DesignItem._designItemMap.set(newNode, this);
@@ -19,6 +19,7 @@ export interface IDesignItem {
19
19
  readonly hasStyles: boolean;
20
20
  readonly hasChildren: boolean;
21
21
  children(): IterableIterator<IDesignItem>;
22
+ allMatching(selectors: string): IterableIterator<IDesignItem>;
22
23
  readonly childCount: number;
23
24
  readonly firstChild: IDesignItem;
24
25
  readonly parent: IDesignItem;
@@ -1,22 +1,21 @@
1
1
  import { DesignItem } from '../../item/DesignItem.js';
2
2
  import { CssAttributeParser } from '../../helper/CssAttributeParser.js';
3
3
  import { newElementFromString } from '../../helper/ElementHelper.js';
4
- import * as esprima from "esprima-next/dist/esm/esprima";
5
4
  function* getChildNodes(node) {
6
5
  switch (node.type) {
7
- case esprima.Syntax.Program:
6
+ case 'Program':
8
7
  yield node.body;
9
8
  break;
10
- case esprima.Syntax.ClassDeclaration:
9
+ case 'ClassDeclaration':
11
10
  yield node.body;
12
11
  break;
13
- case esprima.Syntax.MethodDefinition:
12
+ case 'MethodDefinition':
14
13
  yield node.value;
15
14
  break;
16
15
  }
17
16
  }
18
- // Alternative Parser, cause when you use the Browser, it instanciates the CusomElements, and some Elemnts remove
19
- // attributes from their DOM, so you loose Data
17
+ //WIP - not yet workin
18
+ //Parse HTML inside of Javascript Classes
20
19
  export class AbstractClassElementParserService {
21
20
  _parserUrl;
22
21
  _esprimaUrl;
@@ -32,6 +31,8 @@ export class AbstractClassElementParserService {
32
31
  const renderMethodStatement = renderMethod.value.body.body[0];
33
32
  const taggedTemplate = renderMethodStatement.argument;
34
33
  const templateLiteral = taggedTemplate.quasi;
34
+ //@ts-ignore
35
+ const tmp = getChildNodes(parsedModule);
35
36
  const html = templateLiteral.quasis.map(x => x.value.raw).join();
36
37
  //@ts-ignore
37
38
  let parser = await import(this._parserUrl);
@@ -35,6 +35,7 @@ export declare class DesignerCanvas extends BaseCustomWebComponentLazyAppend imp
35
35
  private _additionalStyle;
36
36
  private _currentContextMenu;
37
37
  private _backgroundImage;
38
+ private _enableSelectTextNodesOnClick;
38
39
  get zoomFactor(): number;
39
40
  set zoomFactor(value: number);
40
41
  get scaleFactor(): number;
@@ -40,6 +40,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
40
40
  _additionalStyle;
41
41
  _currentContextMenu;
42
42
  _backgroundImage;
43
+ _enableSelectTextNodesOnClick = false;
43
44
  get zoomFactor() {
44
45
  return this._zoomFactor;
45
46
  }
@@ -910,6 +911,18 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
910
911
  if (!currentElement) {
911
912
  currentElement = this._canvas;
912
913
  }
914
+ else if (this._enableSelectTextNodesOnClick) {
915
+ const norm = this.getNormalizedEventCoordinates(event);
916
+ for (let n of currentElement.childNodes) {
917
+ if (n.nodeType == NodeType.TextNode) {
918
+ let nc = this.getNormalizedElementCoordinates(n);
919
+ if (nc.x <= norm.x && nc.x + nc.width >= norm.x && nc.y <= norm.y && nc.y + nc.height >= norm.y) {
920
+ currentElement = n;
921
+ break;
922
+ }
923
+ }
924
+ }
925
+ }
913
926
  }
914
927
  if (this._activeTool) {
915
928
  this._activeTool.pointerEventHandler(this, event, currentElement);
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.186",
4
+ "version": "0.0.187",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",