@node-projects/web-component-designer 0.0.75 → 0.0.79

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 (71) hide show
  1. package/README.md +2 -2
  2. package/dist/elements/documentContainer.d.ts +3 -0
  3. package/dist/elements/documentContainer.js +13 -3
  4. package/dist/elements/helper/ElementHelper.d.ts +7 -0
  5. package/dist/elements/helper/ElementHelper.js +13 -0
  6. package/dist/elements/helper/IndentedTextWriter.d.ts +1 -0
  7. package/dist/elements/helper/IndentedTextWriter.js +3 -0
  8. package/dist/elements/services/BaseServiceContainer.d.ts +1 -0
  9. package/dist/elements/services/BaseServiceContainer.js +7 -0
  10. package/dist/elements/services/DefaultServiceBootstrap.js +1 -1
  11. package/dist/elements/services/ServiceContainer.d.ts +1 -1
  12. package/dist/elements/services/ServiceContainer.js +2 -2
  13. package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +1 -1
  14. package/dist/elements/services/demoProviderService/DemoProviderService.js +3 -2
  15. package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +1 -1
  16. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.d.ts +22 -0
  17. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.js +125 -0
  18. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +22 -0
  19. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +133 -0
  20. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.d.ts +22 -0
  21. package/dist/elements/services/htmlWriterService/HtmlWriterService copy.js +118 -0
  22. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +2 -2
  23. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +34 -19
  24. package/dist/elements/services/htmlWriterService/IHtmlWriterService.d.ts +5 -6
  25. package/dist/elements/services/htmlWriterService/LitElementWriterService.d.ts +14 -0
  26. package/dist/elements/services/htmlWriterService/LitElementWriterService.js +123 -0
  27. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.d.ts +9 -0
  28. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js +43 -0
  29. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.d.ts +22 -0
  30. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.js +125 -0
  31. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.d.ts +27 -0
  32. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +93 -0
  33. package/dist/elements/services/initializationService/DefaultIntializationService.d.ts +6 -0
  34. package/dist/elements/services/initializationService/DefaultIntializationService.js +22 -0
  35. package/dist/elements/services/initializationService/IIntializationService copy.d.ts +4 -0
  36. package/dist/elements/services/initializationService/IIntializationService copy.js +1 -0
  37. package/dist/elements/services/instanceService/DefaultInstanceService.js +1 -1
  38. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.d.ts +26 -0
  39. package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.js +69 -0
  40. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +25 -0
  41. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +92 -0
  42. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +0 -1
  43. package/dist/elements/services/propertiesService/IPropertiesService.d.ts +0 -1
  44. package/dist/elements/services/propertiesService/IProperty.d.ts +5 -1
  45. package/dist/elements/services/propertiesService/PropertyType.d.ts +6 -0
  46. package/dist/elements/services/propertiesService/PropertyType.js +7 -0
  47. package/dist/elements/services/propertiesService/services/AbstractBasePropertiesService.js +7 -6
  48. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +3 -2
  49. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +11 -4
  50. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +81 -41
  51. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.d.ts +4 -0
  52. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +5 -1
  53. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.js +7 -6
  54. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +25 -12
  55. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +1 -2
  56. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.js +1 -1
  57. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.d.ts +0 -0
  58. package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.js +1 -0
  59. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.d.ts +26 -0
  60. package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.js +69 -0
  61. package/dist/elements/widgets/demoView/IDemoView.d.ts +1 -1
  62. package/dist/elements/widgets/demoView/demoView.d.ts +1 -1
  63. package/dist/elements/widgets/demoView/demoView.js +2 -2
  64. package/dist/elements/widgets/designerView/DomConverter.js +1 -7
  65. package/dist/elements/widgets/designerView/designerCanvas.js +6 -0
  66. package/dist/elements/widgets/designerView/overlayLayerView.js +1 -2
  67. package/dist/elements/widgets/paletteView/paletteTreeView.js +13 -8
  68. package/dist/elements/widgets/paletteView/paletteView.js +10 -5
  69. package/dist/index.d.ts +4 -0
  70. package/dist/index.js +4 -0
  71. package/package.json +5 -4
@@ -0,0 +1,93 @@
1
+ import { DomConverter } from '../../widgets/designerView/DomConverter';
2
+ import { CssCombiner } from '../../helper/CssCombiner';
3
+ import { NodeType } from '../../item/NodeType';
4
+ import { PropertiesHelper } from '../propertiesService/services/PropertiesHelper';
5
+ import { ElementDisplayType, getElementDisplaytype } from '../../helper/ElementHelper.js';
6
+ export var ElementContainerType;
7
+ (function (ElementContainerType) {
8
+ ElementContainerType[ElementContainerType["block"] = 0] = "block";
9
+ ElementContainerType[ElementContainerType["complex"] = 1] = "complex";
10
+ })(ElementContainerType || (ElementContainerType = {}));
11
+ export class SimpleHtmlWriterService {
12
+ writeAttributes(writeContext, designItem) {
13
+ if (designItem.hasAttributes) {
14
+ for (const a of designItem.attributes) {
15
+ writeContext.indentedTextWriter.write(' ');
16
+ if (typeof a[1] === 'string') {
17
+ if (a[1] === "")
18
+ writeContext.indentedTextWriter.write(a[0]);
19
+ else
20
+ writeContext.indentedTextWriter.write(a[0] + '="' + DomConverter.normalizeAttributeValue(a[1]) + '"');
21
+ }
22
+ else if (!a[1])
23
+ writeContext.indentedTextWriter.write(a[0]);
24
+ else {
25
+ }
26
+ }
27
+ }
28
+ }
29
+ writeStyles(writeContext, designItem) {
30
+ if (designItem.hasStyles) {
31
+ writeContext.indentedTextWriter.write(' style="');
32
+ let styles = designItem.styles;
33
+ if (writeContext.options.compressCssToShorthandProperties)
34
+ styles = CssCombiner.combine(styles);
35
+ for (const s of styles) {
36
+ if (s[0]) {
37
+ writeContext.indentedTextWriter.write(PropertiesHelper.camelToDashCase(s[0]) + ':' + DomConverter.normalizeAttributeValue(s[1]) + ';');
38
+ }
39
+ }
40
+ writeContext.indentedTextWriter.write('"');
41
+ }
42
+ }
43
+ _writeTextNode(writeContext, designItem) {
44
+ writeContext.lastElementDisplayType = ElementDisplayType.inline;
45
+ let content = DomConverter.normalizeContentValue(designItem.content);
46
+ writeContext.indentedTextWriter.write(content);
47
+ }
48
+ _writeCommentNode(writeContext, designItem) {
49
+ writeContext.indentedTextWriter.write('<!--' + designItem.content + '-->');
50
+ }
51
+ _writeElementNode(writeContext, designItem) {
52
+ const currentElementDisplayType = getElementDisplaytype(designItem.element);
53
+ writeContext.lastElementDisplayType = currentElementDisplayType;
54
+ writeContext.indentedTextWriter.write('<' + designItem.name);
55
+ this.writeAttributes(writeContext, designItem);
56
+ this.writeStyles(writeContext, designItem);
57
+ writeContext.indentedTextWriter.write('>');
58
+ if (designItem.hasChildren) {
59
+ const children = designItem.children();
60
+ this._writeDesignItemList(currentElementDisplayType, writeContext, children);
61
+ }
62
+ else if (designItem.hasContent) {
63
+ writeContext.indentedTextWriter.write(DomConverter.normalizeContentValue(designItem.content));
64
+ }
65
+ if (!DomConverter.IsSelfClosingElement(designItem.name)) {
66
+ writeContext.indentedTextWriter.write('</' + designItem.name + '>');
67
+ if (currentElementDisplayType !== ElementDisplayType.none) {
68
+ writeContext.lastElementDisplayType = currentElementDisplayType;
69
+ }
70
+ }
71
+ }
72
+ _writeDesignItemList(currentElementDisplayType, writeContext, children) {
73
+ for (const c of children) {
74
+ this._writeInternal(writeContext, c);
75
+ }
76
+ }
77
+ _writeInternal(writeContext, designItem) {
78
+ const start = writeContext.indentedTextWriter.position;
79
+ if (designItem.nodeType === NodeType.TextNode)
80
+ this._writeTextNode(writeContext, designItem);
81
+ else if (designItem.nodeType === NodeType.Comment)
82
+ this._writeCommentNode(writeContext, designItem);
83
+ else if (designItem.nodeType === NodeType.Element)
84
+ this._writeElementNode(writeContext, designItem);
85
+ if (writeContext.designItemsAssignmentList) {
86
+ writeContext.designItemsAssignmentList.set(designItem, { start: start, length: writeContext.indentedTextWriter.position - start - 1 });
87
+ }
88
+ }
89
+ write(indentedTextWriter, designItems, rootContainerKeepInline, options, designItemsAssignmentList) {
90
+ const context = { indentedTextWriter, options, lastElementDisplayType: null, containerDisplayType: ElementContainerType.block, designItemsAssignmentList };
91
+ this._writeDesignItemList(ElementDisplayType.inline, context, designItems);
92
+ }
93
+ }
@@ -0,0 +1,6 @@
1
+ import { IDesignItem } from '../../item/IDesignItem';
2
+ import { IIntializationService } from './IIntializationService';
3
+ export declare class DefaultIntializationService implements IIntializationService {
4
+ init(designItem: IDesignItem): void;
5
+ initializeIframe(iframe: HTMLIFrameElement): void;
6
+ }
@@ -0,0 +1,22 @@
1
+ export class DefaultIntializationService {
2
+ init(designItem) {
3
+ if (designItem.name == 'iframe') {
4
+ this.initializeIframe(designItem.element);
5
+ }
6
+ }
7
+ initializeIframe(iframe) {
8
+ iframe.contentDocument.body.style.pointerEvents = 'none';
9
+ function cloneIframeEvent(event) {
10
+ var clRect = iframe.getBoundingClientRect();
11
+ let data = { ...event };
12
+ data.clientX = event.clientX + clRect.left;
13
+ data.clientY = event.clientY + clRect.top;
14
+ var evt = new PointerEvent(event.type, data); //new CustomEvent('pointerdown', {bubbles: true, cancelable: false});
15
+ iframe.dispatchEvent(evt);
16
+ }
17
+ iframe.contentWindow.addEventListener('pointerdown', cloneIframeEvent);
18
+ iframe.contentWindow.addEventListener('pointermove', cloneIframeEvent);
19
+ iframe.contentWindow.addEventListener('pointerup', cloneIframeEvent);
20
+ }
21
+ ;
22
+ }
@@ -0,0 +1,4 @@
1
+ import { IDesignItem } from '../../item/IDesignItem';
2
+ export interface IIntializationService {
3
+ init(designItem: IDesignItem): void;
4
+ }
@@ -53,7 +53,7 @@ export class DefaultInstanceService {
53
53
  if (definition.defaultProperties) {
54
54
  let propertiesService = null;
55
55
  if (definition.type) {
56
- propertiesService = serviceContainer.getLastServiceWhere('propertyService', (x) => x.name == definition.type);
56
+ propertiesService = serviceContainer.getLastServiceWhere('propertyService', (x) => x.isHandledElement(designItem));
57
57
  }
58
58
  let properties = propertiesService.getProperties(designItem);
59
59
  for (let a in definition.defaultProperties) {
@@ -0,0 +1,26 @@
1
+ import { IDesignItem } from "../../..";
2
+ import { BindingTarget } from "../../item/BindingTarget";
3
+ import { IElementDefinition } from "../elementsService/IElementDefinition";
4
+ import { IElementsService } from "../elementsService/IElementsService";
5
+ import { IPropertiesService } from "../propertiesService/IPropertiesService";
6
+ import { IProperty } from "../propertiesService/IProperty";
7
+ import { ValueType } from "../propertiesService/ValueType";
8
+ export declare class WebcomponentManifestParserService implements IElementsService, IPropertiesService {
9
+ private _name;
10
+ get name(): string;
11
+ private _packageData;
12
+ private _elementList;
13
+ private _resolveStored;
14
+ private _rejectStored;
15
+ constructor(name: string, file: string);
16
+ getElements(): Promise<IElementDefinition[]>;
17
+ isHandledElement(designItem: IDesignItem): boolean;
18
+ getProperties(designItem: IDesignItem): IProperty[];
19
+ getProperty(designItem: IDesignItem, name: string): IProperty;
20
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
21
+ setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
22
+ clearValue(designItems: IDesignItem[], property: IProperty): void;
23
+ isSet(designItems: IDesignItem[], property: IProperty): ValueType;
24
+ getValue(designItems: IDesignItem[], property: IProperty): void;
25
+ getUnsetValue(designItems: IDesignItem[], property: IProperty): void;
26
+ }
@@ -0,0 +1,69 @@
1
+ export class WebcomponentManifestParserService {
2
+ _name;
3
+ get name() { return this._name; }
4
+ _packageData;
5
+ _elementList;
6
+ _resolveStored;
7
+ _rejectStored;
8
+ constructor(name, file) {
9
+ this._name = name;
10
+ import(file, { assert: { type: 'json' } }).then(module => {
11
+ this._packageData = module.default;
12
+ this._elementList = [];
13
+ for (let m of this._packageData.modules) {
14
+ for (let e of m.exports) {
15
+ if (e.kind == 'custom-element-definition') {
16
+ this._elementList.push({ tag: e.name });
17
+ }
18
+ }
19
+ if (this._resolveStored) {
20
+ this._resolveStored.forEach(x => x(this._elementList));
21
+ this._resolveStored = null;
22
+ this._rejectStored = null;
23
+ }
24
+ }
25
+ }).catch(err => {
26
+ if (this._rejectStored) {
27
+ this._rejectStored.forEach(x => x(err));
28
+ this._resolveStored = null;
29
+ this._rejectStored = null;
30
+ }
31
+ });
32
+ }
33
+ async getElements() {
34
+ if (this._packageData)
35
+ return Promise.resolve(this._elementList);
36
+ if (!this._resolveStored) {
37
+ this._resolveStored = [];
38
+ this._rejectStored = [];
39
+ }
40
+ return new Promise((resolve, reject) => { this._resolveStored.push(resolve); this._rejectStored.push(reject); });
41
+ }
42
+ isHandledElement(designItem) {
43
+ throw new Error("Method not implemented.");
44
+ }
45
+ getProperties(designItem) {
46
+ throw new Error("Method not implemented.");
47
+ }
48
+ getProperty(designItem, name) {
49
+ throw new Error("Method not implemented.");
50
+ }
51
+ getPropertyTarget(designItem, property) {
52
+ throw new Error("Method not implemented.");
53
+ }
54
+ setValue(designItems, property, value) {
55
+ throw new Error("Method not implemented.");
56
+ }
57
+ clearValue(designItems, property) {
58
+ throw new Error("Method not implemented.");
59
+ }
60
+ isSet(designItems, property) {
61
+ throw new Error("Method not implemented.");
62
+ }
63
+ getValue(designItems, property) {
64
+ throw new Error("Method not implemented.");
65
+ }
66
+ getUnsetValue(designItems, property) {
67
+ throw new Error("Method not implemented.");
68
+ }
69
+ }
@@ -0,0 +1,25 @@
1
+ import { BindingTarget } from "../../item/BindingTarget";
2
+ import { IElementDefinition } from "../elementsService/IElementDefinition";
3
+ import { IElementsService } from "../elementsService/IElementsService";
4
+ import { IPropertiesService } from "../propertiesService/IPropertiesService";
5
+ import { IProperty } from "../propertiesService/IProperty";
6
+ import { IDesignItem } from "../../item/IDesignItem";
7
+ import { UnkownElementPropertiesService } from "../propertiesService/services/UnkownElementPropertiesService";
8
+ export declare class WebcomponentManifestParserService extends UnkownElementPropertiesService implements IElementsService, IPropertiesService {
9
+ private _name;
10
+ get name(): string;
11
+ private _packageData;
12
+ private _elementList;
13
+ private _propertiesList;
14
+ private _resolveStored;
15
+ private _rejectStored;
16
+ private _importPrefix;
17
+ constructor(name: string, fileOrObject: string | object, importPrefix?: string);
18
+ private _parseManifest;
19
+ private manifestClassPropertyTypeToEditorPropertyType;
20
+ getElements(): Promise<IElementDefinition[]>;
21
+ isHandledElement(designItem: IDesignItem): boolean;
22
+ getProperties(designItem: IDesignItem): IProperty[];
23
+ getProperty(designItem: IDesignItem, name: string): IProperty;
24
+ getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
25
+ }
@@ -0,0 +1,92 @@
1
+ import { BindingTarget } from "../../item/BindingTarget";
2
+ import { PropertyType } from "../propertiesService/PropertyType";
3
+ import { UnkownElementPropertiesService } from "../propertiesService/services/UnkownElementPropertiesService";
4
+ export class WebcomponentManifestParserService extends UnkownElementPropertiesService {
5
+ _name;
6
+ get name() { return this._name; }
7
+ _packageData;
8
+ _elementList;
9
+ _propertiesList;
10
+ _resolveStored;
11
+ _rejectStored;
12
+ _importPrefix = '';
13
+ constructor(name, fileOrObject, importPrefix = '') {
14
+ super();
15
+ this._name = name;
16
+ this._importPrefix = importPrefix;
17
+ if (typeof fileOrObject === 'string') {
18
+ this._importPrefix = this._importPrefix ?? fileOrObject.split('/').slice(0, -1).join('/');
19
+ import(fileOrObject, { assert: { type: 'json' } }).then(module => {
20
+ this._packageData = module.default;
21
+ this._parseManifest();
22
+ }).catch(err => {
23
+ if (this._rejectStored) {
24
+ this._rejectStored.forEach(x => x(err));
25
+ this._resolveStored = null;
26
+ this._rejectStored = null;
27
+ }
28
+ });
29
+ }
30
+ else {
31
+ this._packageData = fileOrObject;
32
+ this._parseManifest();
33
+ }
34
+ }
35
+ _parseManifest() {
36
+ this._elementList = [];
37
+ this._propertiesList = {};
38
+ for (let m of this._packageData.modules) {
39
+ for (let e of m.exports) {
40
+ if (e.kind == 'custom-element-definition') {
41
+ this._elementList.push({ tag: e.name, import: this._importPrefix + '/' + e.declaration.module });
42
+ let properties = [];
43
+ let declaration = m.declarations.find(x => x.name == e.declaration.name);
44
+ for (let d of declaration.members) {
45
+ if (d.kind == 'field') {
46
+ let pType = PropertyType.property;
47
+ if (declaration.attributes)
48
+ pType = declaration.attributes.find(x => x.fieldName == d.name) != null ? PropertyType.propertyAndAttribute : PropertyType.property;
49
+ properties.push({ name: d.name, service: this, propertyType: pType, type: this.manifestClassPropertyTypeToEditorPropertyType(d.type?.text) });
50
+ }
51
+ }
52
+ this._propertiesList[e.name] = properties;
53
+ }
54
+ }
55
+ if (this._resolveStored) {
56
+ this._resolveStored.forEach(x => x(this._elementList));
57
+ this._resolveStored = null;
58
+ this._rejectStored = null;
59
+ }
60
+ }
61
+ }
62
+ manifestClassPropertyTypeToEditorPropertyType(type) {
63
+ if (type) {
64
+ if (type.toLowerCase() === 'boolean')
65
+ return 'boolean';
66
+ if (type.toLowerCase() === 'number')
67
+ return 'number';
68
+ }
69
+ return type;
70
+ }
71
+ async getElements() {
72
+ if (this._packageData)
73
+ return Promise.resolve(this._elementList);
74
+ if (!this._resolveStored) {
75
+ this._resolveStored = [];
76
+ this._rejectStored = [];
77
+ }
78
+ return new Promise((resolve, reject) => { this._resolveStored.push(resolve); this._rejectStored.push(reject); });
79
+ }
80
+ isHandledElement(designItem) {
81
+ return this._elementList.find(x => x.tag == designItem.name) != null;
82
+ }
83
+ getProperties(designItem) {
84
+ return this._propertiesList[designItem.name];
85
+ }
86
+ getProperty(designItem, name) {
87
+ return this._propertiesList[designItem.name].find(x => x.name == name);
88
+ }
89
+ getPropertyTarget(designItem, property) {
90
+ return this._propertiesList[designItem.name].find(x => x.name == property.name).propertyType == PropertyType.attribute ? BindingTarget.attribute : BindingTarget.property;
91
+ }
92
+ }
@@ -49,7 +49,6 @@ export class DefaultEditorTypesService {
49
49
  return new ThicknessPropertyEditor(property);
50
50
  }
51
51
  case "css-length":
52
- case "thickness":
53
52
  case "string":
54
53
  default:
55
54
  {
@@ -4,7 +4,6 @@ import { IDesignItem } from '../../item/IDesignItem';
4
4
  import { ValueType } from './ValueType';
5
5
  import { BindingTarget } from '../../item/BindingTarget';
6
6
  export interface IPropertiesService extends IService {
7
- readonly name: string;
8
7
  isHandledElement(designItem: IDesignItem): boolean;
9
8
  getProperties(designItem: IDesignItem): IProperty[];
10
9
  getProperty(designItem: IDesignItem, name: string): IProperty;
@@ -1,9 +1,12 @@
1
1
  import { IPropertiesService } from './IPropertiesService';
2
2
  import { IPropertyEditor } from './IPropertyEditor';
3
+ import { PropertyType } from './PropertyType';
3
4
  export interface IProperty {
4
5
  name: string;
6
+ propertyName?: string;
7
+ attributeName?: string;
5
8
  description?: string;
6
- type?: string;
9
+ type?: 'json' | 'color' | 'date' | 'number' | 'list' | 'enum' | 'boolean' | 'img-lis' | 'thickness' | 'css-length' | 'string' | string;
7
10
  default?: any;
8
11
  min?: number;
9
12
  max?: number;
@@ -14,4 +17,5 @@ export interface IProperty {
14
17
  value?: any;
15
18
  service: IPropertiesService;
16
19
  defaultValue?: any;
20
+ propertyType: PropertyType;
17
21
  }
@@ -0,0 +1,6 @@
1
+ export declare enum PropertyType {
2
+ property = "property",
3
+ attribute = "attribute",
4
+ propertyAndAttribute = "propertyAndAttribute",
5
+ cssValue = "cssvalue"
6
+ }
@@ -0,0 +1,7 @@
1
+ export var PropertyType;
2
+ (function (PropertyType) {
3
+ PropertyType["property"] = "property";
4
+ PropertyType["attribute"] = "attribute";
5
+ PropertyType["propertyAndAttribute"] = "propertyAndAttribute";
6
+ PropertyType["cssValue"] = "cssvalue";
7
+ })(PropertyType || (PropertyType = {}));
@@ -1,5 +1,6 @@
1
1
  import { PropertiesHelper } from './PropertiesHelper';
2
2
  import { UnkownElementPropertiesService } from "./UnkownElementPropertiesService";
3
+ import { PropertyType } from '../PropertyType';
3
4
  export class AbstractBasePropertiesService extends UnkownElementPropertiesService {
4
5
  getProperties(designItem) {
5
6
  if (!this.isHandledElement(designItem))
@@ -14,27 +15,27 @@ export class AbstractBasePropertiesService extends UnkownElementPropertiesServic
14
15
  if (polymerProperty.type)
15
16
  type = polymerProperty.type;
16
17
  if (type === String) {
17
- let property = { name: name, type: "string", service: this };
18
+ let property = { name: name, type: "string", service: this, propertyType: PropertyType.propertyAndAttribute };
18
19
  properties.push(property);
19
20
  }
20
21
  else if (type === Object) {
21
- let property = { name: name, type: "object", service: this };
22
+ let property = { name: name, type: "object", service: this, propertyType: PropertyType.propertyAndAttribute };
22
23
  properties.push(property);
23
24
  }
24
25
  else if (type === Number) {
25
- let property = { name: name, type: "number", service: this };
26
+ let property = { name: name, type: "number", service: this, propertyType: PropertyType.propertyAndAttribute };
26
27
  properties.push(property);
27
28
  }
28
29
  else if (type === Date) {
29
- let property = { name: name, type: "date", service: this };
30
+ let property = { name: name, type: "date", service: this, propertyType: PropertyType.propertyAndAttribute };
30
31
  properties.push(property);
31
32
  }
32
33
  else if (type === Boolean) {
33
- let property = { name: name, type: "boolean", service: this };
34
+ let property = { name: name, type: "boolean", service: this, propertyType: PropertyType.propertyAndAttribute };
34
35
  properties.push(property);
35
36
  }
36
37
  else if (PropertiesHelper.isTypescriptEnum(type)) {
37
- let property = { name: name, type: "enum", enumValues: PropertiesHelper.getTypescriptEnumEntries(type), service: this };
38
+ let property = { name: name, type: "enum", enumValues: PropertiesHelper.getTypescriptEnumEntries(type), service: this, propertyType: PropertyType.propertyAndAttribute };
38
39
  properties.push(property);
39
40
  }
40
41
  }
@@ -1,18 +1,19 @@
1
1
  import { ValueType } from "../ValueType";
2
2
  import { BindingTarget } from "../../../item/BindingTarget";
3
+ import { PropertyType } from "../PropertyType";
3
4
  export class AttributesPropertiesService {
4
5
  name = "attributes";
5
6
  isHandledElement(designItem) {
6
7
  return true;
7
8
  }
8
9
  getProperty(designItem, name) {
9
- return { name: name, type: 'string', service: this };
10
+ return { name: name, type: 'string', service: this, propertyType: PropertyType.propertyAndAttribute };
10
11
  }
11
12
  getProperties(designItem) {
12
13
  if (designItem) {
13
14
  let p = [];
14
15
  for (let a of designItem.attributes.keys()) {
15
- p.push({ name: a, type: 'string', service: this });
16
+ p.push({ name: a, type: 'string', service: this, propertyType: PropertyType.propertyAndAttribute });
16
17
  }
17
18
  return p;
18
19
  }
@@ -1,24 +1,31 @@
1
1
  import { ValueType } from "../ValueType";
2
2
  import { BindingTarget } from "../../../item/BindingTarget";
3
+ import { PropertyType } from "../PropertyType";
3
4
  export class CommonPropertiesService {
4
5
  //@ts-ignore
5
6
  commonProperties = [
6
7
  {
7
8
  name: "id",
8
9
  type: "string",
9
- service: this
10
+ service: this,
11
+ propertyType: PropertyType.propertyAndAttribute
10
12
  }, {
11
13
  name: "class",
12
14
  type: "string",
13
- service: this
15
+ service: this,
16
+ attributeName: "class",
17
+ propertyName: "className",
18
+ propertyType: PropertyType.propertyAndAttribute
14
19
  }, {
15
20
  name: "title",
16
21
  type: "string",
17
- service: this
22
+ service: this,
23
+ propertyType: PropertyType.propertyAndAttribute
18
24
  }, {
19
25
  name: "tabindex",
20
26
  type: "number",
21
- service: this
27
+ service: this,
28
+ propertyType: PropertyType.propertyAndAttribute
22
29
  }
23
30
  ];
24
31
  name = "common";