@dooboostore/simple-web-component 1.0.0
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 +102 -0
- package/dist/cjs/bundle-entry.js +18 -0
- package/dist/cjs/bundle-entry.js.map +7 -0
- package/dist/cjs/decorators/attributeChanged.js +42 -0
- package/dist/cjs/decorators/attributeChanged.js.map +7 -0
- package/dist/cjs/decorators/element.js +183 -0
- package/dist/cjs/decorators/element.js.map +7 -0
- package/dist/cjs/decorators/style.js +34 -0
- package/dist/cjs/decorators/style.js.map +7 -0
- package/dist/cjs/decorators/template.js +34 -0
- package/dist/cjs/decorators/template.js.map +7 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +5 -0
- package/dist/esm/bundle-entry.js +2 -0
- package/dist/esm/bundle-entry.js.map +7 -0
- package/dist/esm/decorators/attributeChanged.js +23 -0
- package/dist/esm/decorators/attributeChanged.js.map +7 -0
- package/dist/esm/decorators/element.js +164 -0
- package/dist/esm/decorators/element.js.map +7 -0
- package/dist/esm/decorators/style.js +15 -0
- package/dist/esm/decorators/style.js.map +7 -0
- package/dist/esm/decorators/template.js +15 -0
- package/dist/esm/decorators/template.js.map +7 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +260 -0
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +7 -0
- package/dist/types/bundle-entry.d.ts +2 -0
- package/dist/types/bundle-entry.d.ts.map +1 -0
- package/dist/types/decorators/attributeChanged.d.ts +4 -0
- package/dist/types/decorators/attributeChanged.d.ts.map +1 -0
- package/dist/types/decorators/element.d.ts +11 -0
- package/dist/types/decorators/element.d.ts.map +1 -0
- package/dist/types/decorators/style.d.ts +4 -0
- package/dist/types/decorators/style.d.ts.map +1 -0
- package/dist/types/decorators/template.d.ts +4 -0
- package/dist/types/decorators/template.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +284 -0
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +7 -0
- package/package.json +93 -0
- package/src/bundle-entry.ts +1 -0
- package/src/decorators/attributeChanged.ts +20 -0
- package/src/decorators/element.ts +201 -0
- package/src/decorators/style.ts +12 -0
- package/src/decorators/template.ts +14 -0
- package/src/index.ts +4 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
|
|
2
|
+
import { getAttributeChangedMap } from "./attributeChanged.js";
|
|
3
|
+
import { getTemplateMethod } from "./template.js";
|
|
4
|
+
import { getStyleMethod } from "./style.js";
|
|
5
|
+
const ELEMENT_CONFIG_KEY = Symbol("simple-web-component:element-config");
|
|
6
|
+
const BUILT_IN_TAG_MAP = /* @__PURE__ */ new Map();
|
|
7
|
+
const registerTag = (className, tagName) => {
|
|
8
|
+
if (typeof globalThis !== "undefined" && globalThis[className]) {
|
|
9
|
+
BUILT_IN_TAG_MAP.set(globalThis[className], tagName);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
[
|
|
13
|
+
["HTMLAnchorElement", "a"],
|
|
14
|
+
["HTMLAreaElement", "area"],
|
|
15
|
+
["HTMLAudioElement", "audio"],
|
|
16
|
+
["HTMLBaseElement", "base"],
|
|
17
|
+
["HTMLButtonElement", "button"],
|
|
18
|
+
["HTMLCanvasElement", "canvas"],
|
|
19
|
+
["HTMLDataElement", "data"],
|
|
20
|
+
["HTMLDataListElement", "datalist"],
|
|
21
|
+
["HTMLDetailsElement", "details"],
|
|
22
|
+
["HTMLDialogElement", "dialog"],
|
|
23
|
+
["HTMLDivElement", "div"],
|
|
24
|
+
["HTMLDListElement", "dl"],
|
|
25
|
+
["HTMLEmbedElement", "embed"],
|
|
26
|
+
["HTMLFieldSetElement", "fieldset"],
|
|
27
|
+
["HTMLFormElement", "form"],
|
|
28
|
+
["HTMLHRElement", "hr"],
|
|
29
|
+
["HTMLIFrameElement", "iframe"],
|
|
30
|
+
["HTMLImageElement", "img"],
|
|
31
|
+
["HTMLInputElement", "input"],
|
|
32
|
+
["HTMLLabelElement", "label"],
|
|
33
|
+
["HTMLLegendElement", "legend"],
|
|
34
|
+
["HTMLLIElement", "li"],
|
|
35
|
+
["HTMLLinkElement", "link"],
|
|
36
|
+
["HTMLMapElement", "map"],
|
|
37
|
+
["HTMLMetaElement", "meta"],
|
|
38
|
+
["HTMLMeterElement", "meter"],
|
|
39
|
+
["HTMLModElement", "del"],
|
|
40
|
+
["HTMLObjectElement", "object"],
|
|
41
|
+
["HTMLOListElement", "ol"],
|
|
42
|
+
["HTMLOptGroupElement", "optgroup"],
|
|
43
|
+
["HTMLOptionElement", "option"],
|
|
44
|
+
["HTMLOutputElement", "output"],
|
|
45
|
+
["HTMLParagraphElement", "p"],
|
|
46
|
+
["HTMLParamElement", "param"],
|
|
47
|
+
["HTMLPictureElement", "picture"],
|
|
48
|
+
["HTMLPreElement", "pre"],
|
|
49
|
+
["HTMLProgressElement", "progress"],
|
|
50
|
+
["HTMLQuoteElement", "blockquote"],
|
|
51
|
+
["HTMLScriptElement", "script"],
|
|
52
|
+
["HTMLSelectElement", "select"],
|
|
53
|
+
["HTMLSlotElement", "slot"],
|
|
54
|
+
["HTMLSourceElement", "source"],
|
|
55
|
+
["HTMLSpanElement", "span"],
|
|
56
|
+
["HTMLStyleElement", "style"],
|
|
57
|
+
["HTMLTableElement", "table"],
|
|
58
|
+
["HTMLTableSectionElement", "tbody"],
|
|
59
|
+
["HTMLTableCellElement", "td"],
|
|
60
|
+
["HTMLTemplateElement", "template"],
|
|
61
|
+
["HTMLTextAreaElement", "textarea"],
|
|
62
|
+
["HTMLTimeElement", "time"],
|
|
63
|
+
["HTMLTitleElement", "title"],
|
|
64
|
+
["HTMLTableRowElement", "tr"],
|
|
65
|
+
["HTMLTrackElement", "track"],
|
|
66
|
+
["HTMLUListElement", "ul"],
|
|
67
|
+
["HTMLVideoElement", "video"],
|
|
68
|
+
["HTMLHeadingElement", "h1"]
|
|
69
|
+
].forEach(([cls, tag]) => registerTag(cls, tag));
|
|
70
|
+
const element = (inConfig) => (constructor) => {
|
|
71
|
+
const config = typeof inConfig === "string" ? { tagName: inConfig } : inConfig;
|
|
72
|
+
let extendsTagName = config.extends;
|
|
73
|
+
if (!extendsTagName) {
|
|
74
|
+
let proto = Object.getPrototypeOf(constructor);
|
|
75
|
+
while (proto && proto !== HTMLElement && proto !== Function.prototype) {
|
|
76
|
+
extendsTagName = BUILT_IN_TAG_MAP.get(proto);
|
|
77
|
+
if (extendsTagName)
|
|
78
|
+
break;
|
|
79
|
+
proto = Object.getPrototypeOf(proto);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const attributeChangedMap = getAttributeChangedMap(constructor);
|
|
83
|
+
const observedFromDecorators = attributeChangedMap ? Array.from(attributeChangedMap.keys()) : [];
|
|
84
|
+
const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...config.observedAttributes ?? [], ...observedFromDecorators])];
|
|
85
|
+
const NewClass = class extends constructor {
|
|
86
|
+
static get observedAttributes() {
|
|
87
|
+
return mergedObservedAttributes;
|
|
88
|
+
}
|
|
89
|
+
constructor(...args) {
|
|
90
|
+
super(...args);
|
|
91
|
+
if (config.useShadow === true && !this.shadowRoot) {
|
|
92
|
+
this.attachShadow({ mode: "open" });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
disconnectedCallback() {
|
|
96
|
+
if (super.disconnectedCallback) {
|
|
97
|
+
super.disconnectedCallback();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
connectedMoveCallback() {
|
|
101
|
+
if (super.connectedMoveCallback) {
|
|
102
|
+
super.connectedMoveCallback();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
adoptedCallback() {
|
|
106
|
+
if (super.adoptedCallback) {
|
|
107
|
+
super.adoptedCallback();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async connectedCallback() {
|
|
111
|
+
if (super.connectedCallback) {
|
|
112
|
+
await super.connectedCallback();
|
|
113
|
+
}
|
|
114
|
+
const templateMethod = getTemplateMethod(this);
|
|
115
|
+
const styleMethod = getStyleMethod(this);
|
|
116
|
+
const template = templateMethod ? await this[templateMethod]() : void 0;
|
|
117
|
+
const style = styleMethod ? await this[styleMethod]() : void 0;
|
|
118
|
+
if (!this.shadowRoot && template === void 0 && style === void 0) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
let content = "";
|
|
122
|
+
if (style !== void 0 && style.trim().length > 0) {
|
|
123
|
+
content += `<style>${style}</style>`;
|
|
124
|
+
}
|
|
125
|
+
if (template !== void 0) {
|
|
126
|
+
content += template;
|
|
127
|
+
} else if (!this.shadowRoot) {
|
|
128
|
+
content += this.innerHTML;
|
|
129
|
+
}
|
|
130
|
+
if (this.shadowRoot) {
|
|
131
|
+
this.shadowRoot.innerHTML = content;
|
|
132
|
+
} else {
|
|
133
|
+
this.innerHTML = content;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// 4. Handle attribute changes and route to decorated methods
|
|
137
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
138
|
+
if (super.attributeChangedCallback) {
|
|
139
|
+
super.attributeChangedCallback(name, oldValue, newValue);
|
|
140
|
+
}
|
|
141
|
+
const methodKey = attributeChangedMap?.get(name);
|
|
142
|
+
if (methodKey && typeof this[methodKey] === "function") {
|
|
143
|
+
this[methodKey](newValue, oldValue);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
const registry = config.customElementRegistry || (typeof customElements !== "undefined" ? customElements : void 0);
|
|
148
|
+
if (registry && !registry.get(config.tagName)) {
|
|
149
|
+
const options = extendsTagName ? { extends: extendsTagName } : void 0;
|
|
150
|
+
registry.define(config.tagName, NewClass, options);
|
|
151
|
+
}
|
|
152
|
+
ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);
|
|
153
|
+
return NewClass;
|
|
154
|
+
};
|
|
155
|
+
const getElementConfig = (target) => {
|
|
156
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
157
|
+
return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);
|
|
158
|
+
};
|
|
159
|
+
export {
|
|
160
|
+
ELEMENT_CONFIG_KEY,
|
|
161
|
+
element,
|
|
162
|
+
getElementConfig
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=element.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/decorators/element.ts"],
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getAttributeChangedMap } from './attributeChanged';\nimport { getTemplateMethod } from './template';\nimport { getStyleMethod } from './style';\n\nexport interface ElementConfig {\n tagName: string;\n useShadow?: boolean;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\n\nconst BUILT_IN_TAG_MAP = new Map<any, string>();\n\nconst registerTag = (className: string, tagName: string) => {\n if (typeof globalThis !== 'undefined' && (globalThis as any)[className]) {\n BUILT_IN_TAG_MAP.set((globalThis as any)[className], tagName);\n }\n};\n\n// Register comprehensive list of supported tags for automatic extends inference\n[\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1']\n].forEach(([cls, tag]) => registerTag(cls, tag));\n\nexport const element =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { tagName: inConfig } : inConfig;\n\n // 1. Automatically derive extendsTagName from prototype chain if not provided\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = Object.getPrototypeOf(constructor);\n while (proto && proto !== HTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n // 2. Automatically collect observed attributes from @attributeChanged decorators\n const attributeChangedMap = getAttributeChangedMap(constructor);\n const observedFromDecorators = attributeChangedMap ? Array.from(attributeChangedMap.keys()) : [];\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...observedFromDecorators])];\n\n // 3. Create a new anonymous class that extends the original constructor\n const NewClass = class extends (constructor as any) {\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n constructor(...args: any[]) {\n super(...args);\n if (config.useShadow === true && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n disconnectedCallback() {\n if (super.disconnectedCallback) {\n super.disconnectedCallback();\n }\n }\n\n connectedMoveCallback() {\n if (super.connectedMoveCallback) {\n super.connectedMoveCallback();\n }\n }\n\n adoptedCallback() {\n if (super.adoptedCallback) {\n super.adoptedCallback();\n }\n }\n\n async connectedCallback() {\n if (super.connectedCallback) {\n await super.connectedCallback();\n }\n\n const templateMethod = getTemplateMethod(this);\n const styleMethod = getStyleMethod(this);\n\n const template = templateMethod ? await (this as any)[templateMethod]() : undefined;\n const style = styleMethod ? await (this as any)[styleMethod]() : undefined;\n\n // If not using shadow DOM and no decorators are present, do nothing\n if (!this.shadowRoot && template === undefined && style === undefined) {\n return;\n }\n\n let content = '';\n if (style !== undefined && style.trim().length > 0) {\n content += `<style>${style}</style>`;\n }\n\n if (template !== undefined) {\n content += template;\n } else if (!this.shadowRoot) {\n content += this.innerHTML;\n }\n\n if (this.shadowRoot) {\n this.shadowRoot.innerHTML = content;\n } else {\n this.innerHTML = content;\n }\n }\n\n // 4. Handle attribute changes and route to decorated methods\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n // Call the original callback if it exists\n if (super.attributeChangedCallback) {\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n // Call the method associated with @attributeChanged\n const methodKey = attributeChangedMap?.get(name);\n if (methodKey && typeof (this as any)[methodKey] === 'function') {\n (this as any)[methodKey](newValue, oldValue);\n }\n }\n };\n\n // 5. Register Custom Element using specified or default registry\n const registry = config.customElementRegistry || (typeof customElements !== 'undefined' ? customElements : undefined);\n if (registry && !registry.get(config.tagName)) {\n const options = extendsTagName ? { extends: extendsTagName } : undefined;\n registry.define(config.tagName, NewClass as any, options);\n }\n\n // 6. Save metadata\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n\n return NewClass as any;\n };\n\nexport const getElementConfig = (target: any): ElementConfig | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
|
|
2
|
+
const STYLE_METHOD_KEY = Symbol("simple-web-component:style-method");
|
|
3
|
+
const style = (target, propertyKey, descriptor) => {
|
|
4
|
+
ReflectUtils.defineMetadata(STYLE_METHOD_KEY, propertyKey, target.constructor);
|
|
5
|
+
};
|
|
6
|
+
const getStyleMethod = (target) => {
|
|
7
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
8
|
+
return ReflectUtils.getMetadata(STYLE_METHOD_KEY, constructor);
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
STYLE_METHOD_KEY,
|
|
12
|
+
getStyleMethod,
|
|
13
|
+
style
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/decorators/style.ts"],
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const STYLE_METHOD_KEY = Symbol('simple-web-component:style-method');\n\nexport const style: MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(STYLE_METHOD_KEY, propertyKey, target.constructor);\n};\n\nexport const getStyleMethod = (target: any): string | symbol | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(STYLE_METHOD_KEY, constructor);\n};\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,oBAAoB;AAEtB,MAAM,mBAAmB,OAAO,mCAAmC;AAEnE,MAAM,QAAyB,CAAC,QAAgB,aAA8B,eAAmC;AACtH,eAAa,eAAe,kBAAkB,aAAa,OAAO,WAAW;AAC/E;AAEO,MAAM,iBAAiB,CAAC,WAA6C;AAC1E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,kBAAkB,WAAW;AAC/D;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
|
|
2
|
+
const TEMPLATE_METHOD_KEY = Symbol("simple-web-component:template-method");
|
|
3
|
+
const template = (target, propertyKey, descriptor) => {
|
|
4
|
+
ReflectUtils.defineMetadata(TEMPLATE_METHOD_KEY, propertyKey, target.constructor);
|
|
5
|
+
};
|
|
6
|
+
const getTemplateMethod = (target) => {
|
|
7
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
8
|
+
return ReflectUtils.getMetadata(TEMPLATE_METHOD_KEY, constructor);
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
TEMPLATE_METHOD_KEY,
|
|
12
|
+
getTemplateMethod,
|
|
13
|
+
template
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/decorators/template.ts"],
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const TEMPLATE_METHOD_KEY = Symbol('simple-web-component:template-method');\n\nexport const template: MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n // console.log('setTemplateMethod target.constructor', target.constructor)\n ReflectUtils.defineMetadata(TEMPLATE_METHOD_KEY, propertyKey, target.constructor);\n};\n\nexport const getTemplateMethod = (target: any): string | symbol | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n // console.log('getTemplateMethod constructor', constructor)\n return ReflectUtils.getMetadata(TEMPLATE_METHOD_KEY, constructor);\n};\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,oBAAoB;AAEtB,MAAM,sBAAsB,OAAO,sCAAsC;AAEzE,MAAM,WAA4B,CAAC,QAAgB,aAA8B,eAAmC;AAEzH,eAAa,eAAe,qBAAqB,aAAa,OAAO,WAAW;AAClF;AAEO,MAAM,oBAAoB,CAAC,WAA6C;AAC7E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AAEjE,SAAO,aAAa,YAAY,qBAAqB,WAAW;AAClE;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["export * from './decorators/element';\nexport * from './decorators/template';\nexport * from './decorators/style';\nexport * from './decorators/attributeChanged';"],
|
|
5
|
+
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
// ../core/dist/esm/reflect/ReflectUtils.js
|
|
2
|
+
var ReflectUtils;
|
|
3
|
+
((ReflectUtils2) => {
|
|
4
|
+
ReflectUtils2.getParameterTypes = (target, propertyKey) => {
|
|
5
|
+
if (propertyKey) {
|
|
6
|
+
return Reflect.getMetadata("design:paramtypes", target, propertyKey) || [];
|
|
7
|
+
} else {
|
|
8
|
+
return Reflect.getMetadata("design:paramtypes", target) || [];
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
ReflectUtils2.getReturnType = (target, propertyKey) => {
|
|
12
|
+
return Reflect.getMetadata("design:returntype", target, propertyKey);
|
|
13
|
+
};
|
|
14
|
+
ReflectUtils2.getType = (target, propertyKey) => {
|
|
15
|
+
if (propertyKey) {
|
|
16
|
+
return Reflect.getMetadata("design:type", target, propertyKey);
|
|
17
|
+
} else {
|
|
18
|
+
return Reflect.getMetadata("design:type", target);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
ReflectUtils2.getMetadata = (metadataKey, target, propertyKey) => {
|
|
22
|
+
if (propertyKey) {
|
|
23
|
+
return Reflect.getMetadata(metadataKey, target, propertyKey);
|
|
24
|
+
} else {
|
|
25
|
+
return Reflect.getMetadata(metadataKey, target);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
ReflectUtils2.getMetadataKeys = (target) => {
|
|
29
|
+
return Reflect.getMetadataKeys(target);
|
|
30
|
+
};
|
|
31
|
+
ReflectUtils2.getOwnMetadata = (metadataKey, target, propertyKey) => {
|
|
32
|
+
if (propertyKey) {
|
|
33
|
+
return Reflect.getOwnMetadata(metadataKey, target, propertyKey);
|
|
34
|
+
} else {
|
|
35
|
+
return Reflect.getOwnMetadata(metadataKey, target);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
ReflectUtils2.getMetadatas = (target) => {
|
|
39
|
+
return ReflectUtils2.getMetadataKeys(target).map((it) => ReflectUtils2.getMetadata(it, target));
|
|
40
|
+
};
|
|
41
|
+
ReflectUtils2.metadata = (metadataKey, data) => {
|
|
42
|
+
return Reflect.metadata(metadataKey, data);
|
|
43
|
+
};
|
|
44
|
+
ReflectUtils2.defineMetadata = (metadataKey, value, target, propertyKey) => {
|
|
45
|
+
if (propertyKey && Reflect.defineMetadata) {
|
|
46
|
+
Reflect.defineMetadata(metadataKey, value, target, propertyKey);
|
|
47
|
+
} else if (Reflect.defineMetadata) {
|
|
48
|
+
Reflect.defineMetadata(metadataKey, value, target);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
})(ReflectUtils || (ReflectUtils = {}));
|
|
52
|
+
|
|
53
|
+
// src/decorators/attributeChanged.ts
|
|
54
|
+
var ATTRIBUTE_CHANGED_METADATA_KEY = Symbol("simple-web-component:attribute-changed");
|
|
55
|
+
var attributeChanged = (attributeName) => {
|
|
56
|
+
return (target, propertyKey, descriptor) => {
|
|
57
|
+
const constructor = target.constructor;
|
|
58
|
+
let meta = ReflectUtils.getMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
|
|
59
|
+
if (!meta) {
|
|
60
|
+
meta = /* @__PURE__ */ new Map();
|
|
61
|
+
ReflectUtils.defineMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);
|
|
62
|
+
}
|
|
63
|
+
meta.set(attributeName, propertyKey);
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
var getAttributeChangedMap = (target) => {
|
|
67
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
68
|
+
return ReflectUtils.getMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/decorators/template.ts
|
|
72
|
+
var TEMPLATE_METHOD_KEY = Symbol("simple-web-component:template-method");
|
|
73
|
+
var template = (target, propertyKey, descriptor) => {
|
|
74
|
+
ReflectUtils.defineMetadata(TEMPLATE_METHOD_KEY, propertyKey, target.constructor);
|
|
75
|
+
};
|
|
76
|
+
var getTemplateMethod = (target) => {
|
|
77
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
78
|
+
return ReflectUtils.getMetadata(TEMPLATE_METHOD_KEY, constructor);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/decorators/style.ts
|
|
82
|
+
var STYLE_METHOD_KEY = Symbol("simple-web-component:style-method");
|
|
83
|
+
var style = (target, propertyKey, descriptor) => {
|
|
84
|
+
ReflectUtils.defineMetadata(STYLE_METHOD_KEY, propertyKey, target.constructor);
|
|
85
|
+
};
|
|
86
|
+
var getStyleMethod = (target) => {
|
|
87
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
88
|
+
return ReflectUtils.getMetadata(STYLE_METHOD_KEY, constructor);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// src/decorators/element.ts
|
|
92
|
+
var ELEMENT_CONFIG_KEY = Symbol("simple-web-component:element-config");
|
|
93
|
+
var BUILT_IN_TAG_MAP = /* @__PURE__ */ new Map();
|
|
94
|
+
var registerTag = (className, tagName) => {
|
|
95
|
+
if (typeof globalThis !== "undefined" && globalThis[className]) {
|
|
96
|
+
BUILT_IN_TAG_MAP.set(globalThis[className], tagName);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
[
|
|
100
|
+
["HTMLAnchorElement", "a"],
|
|
101
|
+
["HTMLAreaElement", "area"],
|
|
102
|
+
["HTMLAudioElement", "audio"],
|
|
103
|
+
["HTMLBaseElement", "base"],
|
|
104
|
+
["HTMLButtonElement", "button"],
|
|
105
|
+
["HTMLCanvasElement", "canvas"],
|
|
106
|
+
["HTMLDataElement", "data"],
|
|
107
|
+
["HTMLDataListElement", "datalist"],
|
|
108
|
+
["HTMLDetailsElement", "details"],
|
|
109
|
+
["HTMLDialogElement", "dialog"],
|
|
110
|
+
["HTMLDivElement", "div"],
|
|
111
|
+
["HTMLDListElement", "dl"],
|
|
112
|
+
["HTMLEmbedElement", "embed"],
|
|
113
|
+
["HTMLFieldSetElement", "fieldset"],
|
|
114
|
+
["HTMLFormElement", "form"],
|
|
115
|
+
["HTMLHRElement", "hr"],
|
|
116
|
+
["HTMLIFrameElement", "iframe"],
|
|
117
|
+
["HTMLImageElement", "img"],
|
|
118
|
+
["HTMLInputElement", "input"],
|
|
119
|
+
["HTMLLabelElement", "label"],
|
|
120
|
+
["HTMLLegendElement", "legend"],
|
|
121
|
+
["HTMLLIElement", "li"],
|
|
122
|
+
["HTMLLinkElement", "link"],
|
|
123
|
+
["HTMLMapElement", "map"],
|
|
124
|
+
["HTMLMetaElement", "meta"],
|
|
125
|
+
["HTMLMeterElement", "meter"],
|
|
126
|
+
["HTMLModElement", "del"],
|
|
127
|
+
["HTMLObjectElement", "object"],
|
|
128
|
+
["HTMLOListElement", "ol"],
|
|
129
|
+
["HTMLOptGroupElement", "optgroup"],
|
|
130
|
+
["HTMLOptionElement", "option"],
|
|
131
|
+
["HTMLOutputElement", "output"],
|
|
132
|
+
["HTMLParagraphElement", "p"],
|
|
133
|
+
["HTMLParamElement", "param"],
|
|
134
|
+
["HTMLPictureElement", "picture"],
|
|
135
|
+
["HTMLPreElement", "pre"],
|
|
136
|
+
["HTMLProgressElement", "progress"],
|
|
137
|
+
["HTMLQuoteElement", "blockquote"],
|
|
138
|
+
["HTMLScriptElement", "script"],
|
|
139
|
+
["HTMLSelectElement", "select"],
|
|
140
|
+
["HTMLSlotElement", "slot"],
|
|
141
|
+
["HTMLSourceElement", "source"],
|
|
142
|
+
["HTMLSpanElement", "span"],
|
|
143
|
+
["HTMLStyleElement", "style"],
|
|
144
|
+
["HTMLTableElement", "table"],
|
|
145
|
+
["HTMLTableSectionElement", "tbody"],
|
|
146
|
+
["HTMLTableCellElement", "td"],
|
|
147
|
+
["HTMLTemplateElement", "template"],
|
|
148
|
+
["HTMLTextAreaElement", "textarea"],
|
|
149
|
+
["HTMLTimeElement", "time"],
|
|
150
|
+
["HTMLTitleElement", "title"],
|
|
151
|
+
["HTMLTableRowElement", "tr"],
|
|
152
|
+
["HTMLTrackElement", "track"],
|
|
153
|
+
["HTMLUListElement", "ul"],
|
|
154
|
+
["HTMLVideoElement", "video"],
|
|
155
|
+
["HTMLHeadingElement", "h1"]
|
|
156
|
+
].forEach(([cls, tag]) => registerTag(cls, tag));
|
|
157
|
+
var element = (inConfig) => (constructor) => {
|
|
158
|
+
const config = typeof inConfig === "string" ? { tagName: inConfig } : inConfig;
|
|
159
|
+
let extendsTagName = config.extends;
|
|
160
|
+
if (!extendsTagName) {
|
|
161
|
+
let proto = Object.getPrototypeOf(constructor);
|
|
162
|
+
while (proto && proto !== HTMLElement && proto !== Function.prototype) {
|
|
163
|
+
extendsTagName = BUILT_IN_TAG_MAP.get(proto);
|
|
164
|
+
if (extendsTagName)
|
|
165
|
+
break;
|
|
166
|
+
proto = Object.getPrototypeOf(proto);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const attributeChangedMap = getAttributeChangedMap(constructor);
|
|
170
|
+
const observedFromDecorators = attributeChangedMap ? Array.from(attributeChangedMap.keys()) : [];
|
|
171
|
+
const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...config.observedAttributes ?? [], ...observedFromDecorators])];
|
|
172
|
+
const NewClass = class extends constructor {
|
|
173
|
+
static get observedAttributes() {
|
|
174
|
+
return mergedObservedAttributes;
|
|
175
|
+
}
|
|
176
|
+
constructor(...args) {
|
|
177
|
+
super(...args);
|
|
178
|
+
if (config.useShadow === true && !this.shadowRoot) {
|
|
179
|
+
this.attachShadow({ mode: "open" });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
disconnectedCallback() {
|
|
183
|
+
if (super.disconnectedCallback) {
|
|
184
|
+
super.disconnectedCallback();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
connectedMoveCallback() {
|
|
188
|
+
if (super.connectedMoveCallback) {
|
|
189
|
+
super.connectedMoveCallback();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
adoptedCallback() {
|
|
193
|
+
if (super.adoptedCallback) {
|
|
194
|
+
super.adoptedCallback();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async connectedCallback() {
|
|
198
|
+
if (super.connectedCallback) {
|
|
199
|
+
await super.connectedCallback();
|
|
200
|
+
}
|
|
201
|
+
const templateMethod = getTemplateMethod(this);
|
|
202
|
+
const styleMethod = getStyleMethod(this);
|
|
203
|
+
const template2 = templateMethod ? await this[templateMethod]() : void 0;
|
|
204
|
+
const style2 = styleMethod ? await this[styleMethod]() : void 0;
|
|
205
|
+
if (!this.shadowRoot && template2 === void 0 && style2 === void 0) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
let content = "";
|
|
209
|
+
if (style2 !== void 0 && style2.trim().length > 0) {
|
|
210
|
+
content += `<style>${style2}</style>`;
|
|
211
|
+
}
|
|
212
|
+
if (template2 !== void 0) {
|
|
213
|
+
content += template2;
|
|
214
|
+
} else if (!this.shadowRoot) {
|
|
215
|
+
content += this.innerHTML;
|
|
216
|
+
}
|
|
217
|
+
if (this.shadowRoot) {
|
|
218
|
+
this.shadowRoot.innerHTML = content;
|
|
219
|
+
} else {
|
|
220
|
+
this.innerHTML = content;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// 4. Handle attribute changes and route to decorated methods
|
|
224
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
225
|
+
if (super.attributeChangedCallback) {
|
|
226
|
+
super.attributeChangedCallback(name, oldValue, newValue);
|
|
227
|
+
}
|
|
228
|
+
const methodKey = attributeChangedMap?.get(name);
|
|
229
|
+
if (methodKey && typeof this[methodKey] === "function") {
|
|
230
|
+
this[methodKey](newValue, oldValue);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
const registry = config.customElementRegistry || (typeof customElements !== "undefined" ? customElements : void 0);
|
|
235
|
+
if (registry && !registry.get(config.tagName)) {
|
|
236
|
+
const options = extendsTagName ? { extends: extendsTagName } : void 0;
|
|
237
|
+
registry.define(config.tagName, NewClass, options);
|
|
238
|
+
}
|
|
239
|
+
ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);
|
|
240
|
+
return NewClass;
|
|
241
|
+
};
|
|
242
|
+
var getElementConfig = (target) => {
|
|
243
|
+
const constructor = target instanceof Function ? target : target.constructor;
|
|
244
|
+
return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);
|
|
245
|
+
};
|
|
246
|
+
export {
|
|
247
|
+
ATTRIBUTE_CHANGED_METADATA_KEY,
|
|
248
|
+
ELEMENT_CONFIG_KEY,
|
|
249
|
+
STYLE_METHOD_KEY,
|
|
250
|
+
TEMPLATE_METHOD_KEY,
|
|
251
|
+
attributeChanged,
|
|
252
|
+
element,
|
|
253
|
+
getAttributeChangedMap,
|
|
254
|
+
getElementConfig,
|
|
255
|
+
getStyleMethod,
|
|
256
|
+
getTemplateMethod,
|
|
257
|
+
style,
|
|
258
|
+
template
|
|
259
|
+
};
|
|
260
|
+
//# sourceMappingURL=dooboostore-simple-web-component.esm.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../core/src/reflect/ReflectUtils.ts", "../../src/decorators/attributeChanged.ts", "../../src/decorators/template.ts", "../../src/decorators/style.ts", "../../src/decorators/element.ts"],
|
|
4
|
+
"sourcesContent": ["import { ConstructorType } from '../types';\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n // console.log('---------param')\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n }\n\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n }\n\n // @Reflect.metadata(\"design:type\", Point)\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n }\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n\n\n //\n // let tt = target;\n // // proxy \uAC78\uB9B0\uAC70\uB294 \uC624\uB9AC\uC9C0\uB110 constructor\uC5D0 \uB4E4\uC5B4\uAC00\uC788\uC744\uACBD\uC6B0\uB3C4\uC788\uC5B4\uC11C reflect\uAC00 proxy\uC758 constructor\uC5D0\uC11C \uCC3E\uB294\uACBD\uC6B0\uB3C4\uC788\uB2E4,\n // // \uC11C\uBC84\uB791 \uD504\uB860\uD2B8\uB791 \uB2E4\uB978\uB4EF.. \uADF8\uB798\uC11C \uC704\uB85C \uCC3E\uC544\uAC00\uBA74\uC11C\n // while (tt) {\n // let meta: any = undefined;\n // if (propertyKey) {\n // meta = Reflect.getMetadata(metadataKey, tt, propertyKey);\n // } else {\n // meta = Reflect.getMetadata(metadataKey, tt);\n // }\n // if (meta) {\n // return meta;\n // }\n // tt = Reflect.getPrototypeOf(tt);\n // }\n }\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n }\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string): number[] | any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n }\n\n export const getMetadatas = (target: any) => {\n return ReflectUtils.getMetadataKeys(target).map(it => ReflectUtils.getMetadata(it, target));\n }\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n }\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n // console.log(\"Reflect:\",Reflect)\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n // Reflect.defineMetadata(\"design:paramtypes\", value, target);\n }\n // console.log(\"Reflect:\",Reflect.getMetadata(metadataKey, target))\n // console.log(\"Reflect:\",Reflect.getMetadata('design:paramtypes', target))\n }\n}\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const ATTRIBUTE_CHANGED_METADATA_KEY = Symbol('simple-web-component:attribute-changed');\n\nexport const attributeChanged = (attributeName: string): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let meta = ReflectUtils.getMetadata<Map<string, string | symbol>>(ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n if (!meta) {\n meta = new Map<string, string | symbol>();\n ReflectUtils.defineMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);\n }\n meta.set(attributeName, propertyKey);\n };\n};\n\nexport const getAttributeChangedMap = (target: any): Map<string, string | symbol> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const TEMPLATE_METHOD_KEY = Symbol('simple-web-component:template-method');\n\nexport const template: MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n // console.log('setTemplateMethod target.constructor', target.constructor)\n ReflectUtils.defineMetadata(TEMPLATE_METHOD_KEY, propertyKey, target.constructor);\n};\n\nexport const getTemplateMethod = (target: any): string | symbol | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n // console.log('getTemplateMethod constructor', constructor)\n return ReflectUtils.getMetadata(TEMPLATE_METHOD_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const STYLE_METHOD_KEY = Symbol('simple-web-component:style-method');\n\nexport const style: MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n ReflectUtils.defineMetadata(STYLE_METHOD_KEY, propertyKey, target.constructor);\n};\n\nexport const getStyleMethod = (target: any): string | symbol | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(STYLE_METHOD_KEY, constructor);\n};\n", "import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getAttributeChangedMap } from './attributeChanged';\nimport { getTemplateMethod } from './template';\nimport { getStyleMethod } from './style';\n\nexport interface ElementConfig {\n tagName: string;\n useShadow?: boolean;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\n\nconst BUILT_IN_TAG_MAP = new Map<any, string>();\n\nconst registerTag = (className: string, tagName: string) => {\n if (typeof globalThis !== 'undefined' && (globalThis as any)[className]) {\n BUILT_IN_TAG_MAP.set((globalThis as any)[className], tagName);\n }\n};\n\n// Register comprehensive list of supported tags for automatic extends inference\n[\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1']\n].forEach(([cls, tag]) => registerTag(cls, tag));\n\nexport const element =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { tagName: inConfig } : inConfig;\n\n // 1. Automatically derive extendsTagName from prototype chain if not provided\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = Object.getPrototypeOf(constructor);\n while (proto && proto !== HTMLElement && proto !== Function.prototype) {\n extendsTagName = BUILT_IN_TAG_MAP.get(proto);\n if (extendsTagName) break;\n proto = Object.getPrototypeOf(proto);\n }\n }\n\n // 2. Automatically collect observed attributes from @attributeChanged decorators\n const attributeChangedMap = getAttributeChangedMap(constructor);\n const observedFromDecorators = attributeChangedMap ? Array.from(attributeChangedMap.keys()) : [];\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...observedFromDecorators])];\n\n // 3. Create a new anonymous class that extends the original constructor\n const NewClass = class extends (constructor as any) {\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n constructor(...args: any[]) {\n super(...args);\n if (config.useShadow === true && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n disconnectedCallback() {\n if (super.disconnectedCallback) {\n super.disconnectedCallback();\n }\n }\n\n connectedMoveCallback() {\n if (super.connectedMoveCallback) {\n super.connectedMoveCallback();\n }\n }\n\n adoptedCallback() {\n if (super.adoptedCallback) {\n super.adoptedCallback();\n }\n }\n\n async connectedCallback() {\n if (super.connectedCallback) {\n await super.connectedCallback();\n }\n\n const templateMethod = getTemplateMethod(this);\n const styleMethod = getStyleMethod(this);\n\n const template = templateMethod ? await (this as any)[templateMethod]() : undefined;\n const style = styleMethod ? await (this as any)[styleMethod]() : undefined;\n\n // If not using shadow DOM and no decorators are present, do nothing\n if (!this.shadowRoot && template === undefined && style === undefined) {\n return;\n }\n\n let content = '';\n if (style !== undefined && style.trim().length > 0) {\n content += `<style>${style}</style>`;\n }\n\n if (template !== undefined) {\n content += template;\n } else if (!this.shadowRoot) {\n content += this.innerHTML;\n }\n\n if (this.shadowRoot) {\n this.shadowRoot.innerHTML = content;\n } else {\n this.innerHTML = content;\n }\n }\n\n // 4. Handle attribute changes and route to decorated methods\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n // Call the original callback if it exists\n if (super.attributeChangedCallback) {\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n // Call the method associated with @attributeChanged\n const methodKey = attributeChangedMap?.get(name);\n if (methodKey && typeof (this as any)[methodKey] === 'function') {\n (this as any)[methodKey](newValue, oldValue);\n }\n }\n };\n\n // 5. Register Custom Element using specified or default registry\n const registry = config.customElementRegistry || (typeof customElements !== 'undefined' ? customElements : undefined);\n if (registry && !registry.get(config.tagName)) {\n const options = extendsTagName ? { extends: extendsTagName } : undefined;\n registry.define(config.tagName, NewClass as any, options);\n }\n\n // 6. Save metadata\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n\n return NewClass as any;\n };\n\nexport const getElementConfig = (target: any): ElementConfig | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ELEMENT_CONFIG_KEY, constructor);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ReflectUtils", "template", "style"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-entry.d.ts","sourceRoot":"","sources":["../../src/bundle-entry.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const ATTRIBUTE_CHANGED_METADATA_KEY: unique symbol;
|
|
2
|
+
export declare const attributeChanged: (attributeName: string) => MethodDecorator;
|
|
3
|
+
export declare const getAttributeChangedMap: (target: any) => Map<string, string | symbol> | undefined;
|
|
4
|
+
//# sourceMappingURL=attributeChanged.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributeChanged.d.ts","sourceRoot":"","sources":["../../../src/decorators/attributeChanged.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B,eAAmD,CAAC;AAE/F,eAAO,MAAM,gBAAgB,GAAI,eAAe,MAAM,KAAG,eAUxD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,GAAG,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAGnF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ElementConfig {
|
|
2
|
+
tagName: string;
|
|
3
|
+
useShadow?: boolean;
|
|
4
|
+
extends?: string;
|
|
5
|
+
observedAttributes?: string[];
|
|
6
|
+
customElementRegistry?: CustomElementRegistry;
|
|
7
|
+
}
|
|
8
|
+
export declare const ELEMENT_CONFIG_KEY: unique symbol;
|
|
9
|
+
export declare const element: (inConfig: ElementConfig | string) => ClassDecorator;
|
|
10
|
+
export declare const getElementConfig: (target: any) => ElementConfig | undefined;
|
|
11
|
+
//# sourceMappingURL=element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../src/decorators/element.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,eAAO,MAAM,kBAAkB,eAAgD,CAAC;AAsEhF,eAAO,MAAM,OAAO,GACjB,UAAU,aAAa,GAAG,MAAM,KAAG,cA+GnC,CAAC;AAEJ,eAAO,MAAM,gBAAgB,GAAI,QAAQ,GAAG,KAAG,aAAa,GAAG,SAG9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/decorators/style.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,eAA8C,CAAC;AAE5E,eAAO,MAAM,KAAK,EAAE,eAEnB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,KAAG,MAAM,GAAG,MAAM,GAAG,SAG9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/decorators/template.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,eAAiD,CAAC;AAElF,eAAO,MAAM,QAAQ,EAAE,eAGtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,GAAG,KAAG,MAAM,GAAG,MAAM,GAAG,SAIjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC"}
|