@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.
- package/README.md +2 -2
- package/dist/elements/documentContainer.d.ts +3 -0
- package/dist/elements/documentContainer.js +13 -3
- package/dist/elements/helper/ElementHelper.d.ts +7 -0
- package/dist/elements/helper/ElementHelper.js +13 -0
- package/dist/elements/helper/IndentedTextWriter.d.ts +1 -0
- package/dist/elements/helper/IndentedTextWriter.js +3 -0
- package/dist/elements/services/BaseServiceContainer.d.ts +1 -0
- package/dist/elements/services/BaseServiceContainer.js +7 -0
- package/dist/elements/services/DefaultServiceBootstrap.js +1 -1
- package/dist/elements/services/ServiceContainer.d.ts +1 -1
- package/dist/elements/services/ServiceContainer.js +2 -2
- package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +1 -1
- package/dist/elements/services/demoProviderService/DemoProviderService.js +3 -2
- package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +1 -1
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.d.ts +22 -0
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService copy.js +125 -0
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +22 -0
- package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +133 -0
- package/dist/elements/services/htmlWriterService/HtmlWriterService copy.d.ts +22 -0
- package/dist/elements/services/htmlWriterService/HtmlWriterService copy.js +118 -0
- package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +2 -2
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js +34 -19
- package/dist/elements/services/htmlWriterService/IHtmlWriterService.d.ts +5 -6
- package/dist/elements/services/htmlWriterService/LitElementWriterService.d.ts +14 -0
- package/dist/elements/services/htmlWriterService/LitElementWriterService.js +123 -0
- package/dist/elements/services/htmlWriterService/LitTsElementWriterService.d.ts +9 -0
- package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js +43 -0
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.d.ts +22 -0
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService copy.js +125 -0
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.d.ts +27 -0
- package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +93 -0
- package/dist/elements/services/initializationService/DefaultIntializationService.d.ts +6 -0
- package/dist/elements/services/initializationService/DefaultIntializationService.js +22 -0
- package/dist/elements/services/initializationService/IIntializationService copy.d.ts +4 -0
- package/dist/elements/services/initializationService/IIntializationService copy.js +1 -0
- package/dist/elements/services/instanceService/DefaultInstanceService.js +1 -1
- package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.d.ts +26 -0
- package/dist/elements/services/manifestLoaders/WebcomponentManifestParserService.js +69 -0
- package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +25 -0
- package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +92 -0
- package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +0 -1
- package/dist/elements/services/propertiesService/IPropertiesService.d.ts +0 -1
- package/dist/elements/services/propertiesService/IProperty.d.ts +5 -1
- package/dist/elements/services/propertiesService/PropertyType.d.ts +6 -0
- package/dist/elements/services/propertiesService/PropertyType.js +7 -0
- package/dist/elements/services/propertiesService/services/AbstractBasePropertiesService.js +7 -6
- package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +3 -2
- package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +11 -4
- package/dist/elements/services/propertiesService/services/CssPropertiesService.js +81 -41
- package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.d.ts +4 -0
- package/dist/elements/services/propertiesService/services/ListPropertiesService.js +5 -1
- package/dist/elements/services/propertiesService/services/Lit2PropertiesService.js +7 -6
- package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +25 -12
- package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +1 -2
- package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.js +1 -1
- package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.d.ts +0 -0
- package/dist/elements/services/webcomponentManifestParserService/WebcomponentManifestParserService.1.js +1 -0
- package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.d.ts +26 -0
- package/dist/elements/services/webcomponentManifestParserService/webcomponentManifestParserService.js +69 -0
- package/dist/elements/widgets/demoView/IDemoView.d.ts +1 -1
- package/dist/elements/widgets/demoView/demoView.d.ts +1 -1
- package/dist/elements/widgets/demoView/demoView.js +2 -2
- package/dist/elements/widgets/designerView/DomConverter.js +1 -7
- package/dist/elements/widgets/designerView/designerCanvas.js +6 -0
- package/dist/elements/widgets/designerView/overlayLayerView.js +1 -2
- package/dist/elements/widgets/paletteView/paletteTreeView.js +13 -8
- package/dist/elements/widgets/paletteView/paletteView.js +10 -5
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- 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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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.
|
|
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
|
+
}
|
|
@@ -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,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";
|