@dooboostore/simple-web-component 1.0.0 → 1.0.2

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 (100) hide show
  1. package/README.md +70 -78
  2. package/dist/cjs/decorators/addEventListener.js +42 -0
  3. package/dist/cjs/decorators/addEventListener.js.map +7 -0
  4. package/dist/cjs/decorators/attributeChanged.js +24 -4
  5. package/dist/cjs/decorators/attributeChanged.js.map +2 -2
  6. package/dist/cjs/decorators/{element.js → elementDefind.js} +91 -13
  7. package/dist/cjs/decorators/elementDefind.js.map +7 -0
  8. package/dist/cjs/decorators/query.js +53 -0
  9. package/dist/cjs/decorators/query.js.map +7 -0
  10. package/dist/cjs/decorators/queryAll.js +53 -0
  11. package/dist/cjs/decorators/queryAll.js.map +7 -0
  12. package/dist/cjs/elements/SwcChoose.js +117 -0
  13. package/dist/cjs/elements/SwcChoose.js.map +7 -0
  14. package/dist/cjs/elements/SwcForOf.js +126 -0
  15. package/dist/cjs/elements/SwcForOf.js.map +7 -0
  16. package/dist/cjs/elements/SwcHTMLElementBase.js +102 -0
  17. package/dist/cjs/elements/SwcHTMLElementBase.js.map +7 -0
  18. package/dist/cjs/elements/SwcIf.js +127 -0
  19. package/dist/cjs/elements/SwcIf.js.map +7 -0
  20. package/dist/cjs/elements/SwcObject.js +115 -0
  21. package/dist/cjs/elements/SwcObject.js.map +7 -0
  22. package/dist/cjs/elements/SwcOther.js +56 -0
  23. package/dist/cjs/elements/SwcOther.js.map +7 -0
  24. package/dist/cjs/elements/SwcWhen.js +56 -0
  25. package/dist/cjs/elements/SwcWhen.js.map +7 -0
  26. package/dist/cjs/index.js +11 -1
  27. package/dist/cjs/index.js.map +2 -2
  28. package/dist/esm/decorators/addEventListener.js +23 -0
  29. package/dist/esm/decorators/addEventListener.js.map +7 -0
  30. package/dist/esm/decorators/attributeChanged.js +24 -4
  31. package/dist/esm/decorators/attributeChanged.js.map +2 -2
  32. package/dist/esm/decorators/{element.js → elementDefind.js} +89 -11
  33. package/dist/esm/decorators/elementDefind.js.map +7 -0
  34. package/dist/esm/decorators/query.js +34 -0
  35. package/dist/esm/decorators/query.js.map +7 -0
  36. package/dist/esm/decorators/queryAll.js +34 -0
  37. package/dist/esm/decorators/queryAll.js.map +7 -0
  38. package/dist/esm/elements/SwcChoose.js +98 -0
  39. package/dist/esm/elements/SwcChoose.js.map +7 -0
  40. package/dist/esm/elements/SwcForOf.js +107 -0
  41. package/dist/esm/elements/SwcForOf.js.map +7 -0
  42. package/dist/esm/elements/SwcHTMLElementBase.js +83 -0
  43. package/dist/esm/elements/SwcHTMLElementBase.js.map +7 -0
  44. package/dist/esm/elements/SwcIf.js +108 -0
  45. package/dist/esm/elements/SwcIf.js.map +7 -0
  46. package/dist/esm/elements/SwcObject.js +96 -0
  47. package/dist/esm/elements/SwcObject.js.map +7 -0
  48. package/dist/esm/elements/SwcOther.js +37 -0
  49. package/dist/esm/elements/SwcOther.js.map +7 -0
  50. package/dist/esm/elements/SwcWhen.js +37 -0
  51. package/dist/esm/elements/SwcWhen.js.map +7 -0
  52. package/dist/esm/index.js +11 -1
  53. package/dist/esm/index.js.map +2 -2
  54. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +744 -14
  55. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  56. package/dist/types/decorators/addEventListener.d.ts +16 -0
  57. package/dist/types/decorators/addEventListener.d.ts.map +1 -0
  58. package/dist/types/decorators/attributeChanged.d.ts +3 -1
  59. package/dist/types/decorators/attributeChanged.d.ts.map +1 -1
  60. package/dist/types/decorators/{element.d.ts → elementDefind.d.ts} +2 -2
  61. package/dist/types/decorators/elementDefind.d.ts.map +1 -0
  62. package/dist/types/decorators/query.d.ts +13 -0
  63. package/dist/types/decorators/query.d.ts.map +1 -0
  64. package/dist/types/decorators/queryAll.d.ts +13 -0
  65. package/dist/types/decorators/queryAll.d.ts.map +1 -0
  66. package/dist/types/elements/SwcChoose.d.ts +12 -0
  67. package/dist/types/elements/SwcChoose.d.ts.map +1 -0
  68. package/dist/types/elements/SwcForOf.d.ts +14 -0
  69. package/dist/types/elements/SwcForOf.d.ts.map +1 -0
  70. package/dist/types/elements/SwcHTMLElementBase.d.ts +14 -0
  71. package/dist/types/elements/SwcHTMLElementBase.d.ts.map +1 -0
  72. package/dist/types/elements/SwcIf.d.ts +14 -0
  73. package/dist/types/elements/SwcIf.d.ts.map +1 -0
  74. package/dist/types/elements/SwcObject.d.ts +14 -0
  75. package/dist/types/elements/SwcObject.d.ts.map +1 -0
  76. package/dist/types/elements/SwcOther.d.ts +5 -0
  77. package/dist/types/elements/SwcOther.d.ts.map +1 -0
  78. package/dist/types/elements/SwcWhen.d.ts +5 -0
  79. package/dist/types/elements/SwcWhen.d.ts.map +1 -0
  80. package/dist/types/index.d.ts +11 -1
  81. package/dist/types/index.d.ts.map +1 -1
  82. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +744 -14
  83. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  84. package/package.json +1 -1
  85. package/src/decorators/addEventListener.ts +35 -0
  86. package/src/decorators/attributeChanged.ts +29 -6
  87. package/src/decorators/{element.ts → elementDefind.ts} +121 -11
  88. package/src/decorators/query.ts +46 -0
  89. package/src/decorators/queryAll.ts +46 -0
  90. package/src/elements/SwcChoose.ts +83 -0
  91. package/src/elements/SwcForOf.ts +95 -0
  92. package/src/elements/SwcHTMLElementBase.ts +93 -0
  93. package/src/elements/SwcIf.ts +92 -0
  94. package/src/elements/SwcObject.ts +78 -0
  95. package/src/elements/SwcOther.ts +14 -0
  96. package/src/elements/SwcWhen.ts +14 -0
  97. package/src/index.ts +12 -2
  98. package/dist/cjs/decorators/element.js.map +0 -7
  99. package/dist/esm/decorators/element.js.map +0 -7
  100. package/dist/types/decorators/element.d.ts.map +0 -1
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var SwcOther_exports = {};
19
+ __export(SwcOther_exports, {
20
+ SwcOther: () => SwcOther
21
+ });
22
+ module.exports = __toCommonJS(SwcOther_exports);
23
+ var import__ = require("../index");
24
+ var __decorate = function(decorators, target, key, desc) {
25
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29
+ };
30
+ var __metadata = function(k, v) {
31
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
32
+ };
33
+ let SwcOther = class SwcOther2 extends HTMLElement {
34
+ styles() {
35
+ return `:host { display: contents; }`;
36
+ }
37
+ render() {
38
+ return `<slot></slot>`;
39
+ }
40
+ };
41
+ __decorate([
42
+ import__.style,
43
+ __metadata("design:type", Function),
44
+ __metadata("design:paramtypes", []),
45
+ __metadata("design:returntype", void 0)
46
+ ], SwcOther.prototype, "styles", null);
47
+ __decorate([
48
+ import__.template,
49
+ __metadata("design:type", Function),
50
+ __metadata("design:paramtypes", []),
51
+ __metadata("design:returntype", void 0)
52
+ ], SwcOther.prototype, "render", null);
53
+ SwcOther = __decorate([
54
+ (0, import__.elementDefind)({ tagName: "swc-other", useShadow: true })
55
+ ], SwcOther);
56
+ //# sourceMappingURL=SwcOther.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/elements/SwcOther.ts"],
4
+ "sourcesContent": ["import { elementDefind, template, style } from '../index';\n\n@elementDefind({ tagName: 'swc-other', useShadow: true })\nexport class SwcOther extends HTMLElement {\n @style\n styles() {\n return `:host { display: contents; }`;\n }\n\n @template\n render() {\n return `<slot></slot>`;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,eAA+C;;;;;;;;;;AAGxC,IAAM,WAAN,MAAMA,kBAAiB,YAAW;EAEvC,SAAM;AACJ,WAAO;EACT;EAGA,SAAM;AACJ,WAAO;EACT;;AAPA,WAAA;EADC;;;;;AAMD,WAAA;EADC;;;;;AANU,WAAQ,WAAA;MADpB,wBAAc,EAAE,SAAS,aAAa,WAAW,KAAI,CAAE;GAC3C,QAAQ;",
6
+ "names": ["SwcOther"]
7
+ }
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var SwcWhen_exports = {};
19
+ __export(SwcWhen_exports, {
20
+ SwcWhen: () => SwcWhen
21
+ });
22
+ module.exports = __toCommonJS(SwcWhen_exports);
23
+ var import__ = require("../index");
24
+ var __decorate = function(decorators, target, key, desc) {
25
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29
+ };
30
+ var __metadata = function(k, v) {
31
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
32
+ };
33
+ let SwcWhen = class SwcWhen2 extends HTMLElement {
34
+ styles() {
35
+ return `:host { display: contents; }`;
36
+ }
37
+ render() {
38
+ return `<slot></slot>`;
39
+ }
40
+ };
41
+ __decorate([
42
+ import__.style,
43
+ __metadata("design:type", Function),
44
+ __metadata("design:paramtypes", []),
45
+ __metadata("design:returntype", void 0)
46
+ ], SwcWhen.prototype, "styles", null);
47
+ __decorate([
48
+ import__.template,
49
+ __metadata("design:type", Function),
50
+ __metadata("design:paramtypes", []),
51
+ __metadata("design:returntype", void 0)
52
+ ], SwcWhen.prototype, "render", null);
53
+ SwcWhen = __decorate([
54
+ (0, import__.elementDefind)({ tagName: "swc-when", useShadow: true })
55
+ ], SwcWhen);
56
+ //# sourceMappingURL=SwcWhen.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/elements/SwcWhen.ts"],
4
+ "sourcesContent": ["import { elementDefind, template, style } from '../index';\n\n@elementDefind({ tagName: 'swc-when', useShadow: true })\nexport class SwcWhen extends HTMLElement {\n @style\n styles() {\n return `:host { display: contents; }`;\n }\n\n @template\n render() {\n return `<slot></slot>`;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,eAA+C;;;;;;;;;;AAGxC,IAAM,UAAN,MAAMA,iBAAgB,YAAW;EAEtC,SAAM;AACJ,WAAO;EACT;EAGA,SAAM;AACJ,WAAO;EACT;;AAPA,WAAA;EADC;;;;;AAMD,WAAA;EADC;;;;;AANU,UAAO,WAAA;MADnB,wBAAc,EAAE,SAAS,YAAY,WAAW,KAAI,CAAE;GAC1C,OAAO;",
6
+ "names": ["SwcWhen"]
7
+ }
package/dist/cjs/index.js CHANGED
@@ -14,8 +14,18 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
15
  var src_exports = {};
16
16
  module.exports = __toCommonJS(src_exports);
17
- __reExport(src_exports, require("./decorators/element"), module.exports);
17
+ __reExport(src_exports, require("./decorators/elementDefind"), module.exports);
18
18
  __reExport(src_exports, require("./decorators/template"), module.exports);
19
19
  __reExport(src_exports, require("./decorators/style"), module.exports);
20
20
  __reExport(src_exports, require("./decorators/attributeChanged"), module.exports);
21
+ __reExport(src_exports, require("./decorators/query"), module.exports);
22
+ __reExport(src_exports, require("./decorators/queryAll"), module.exports);
23
+ __reExport(src_exports, require("./decorators/addEventListener"), module.exports);
24
+ __reExport(src_exports, require("./elements/SwcForOf"), module.exports);
25
+ __reExport(src_exports, require("./elements/SwcIf"), module.exports);
26
+ __reExport(src_exports, require("./elements/SwcChoose"), module.exports);
27
+ __reExport(src_exports, require("./elements/SwcWhen"), module.exports);
28
+ __reExport(src_exports, require("./elements/SwcOther"), module.exports);
29
+ __reExport(src_exports, require("./elements/SwcObject"), module.exports);
30
+ __reExport(src_exports, require("./elements/SwcHTMLElementBase"), module.exports);
21
31
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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;AAAA;AAAA,wBAAc,iCAAd;AACA,wBAAc,kCADd;AAEA,wBAAc,+BAFd;AAGA,wBAAc,0CAHd;",
4
+ "sourcesContent": ["export * from './decorators/elementDefind';\nexport * from './decorators/template';\nexport * from './decorators/style';\nexport * from './decorators/attributeChanged';\nexport * from './decorators/query';\nexport * from './decorators/queryAll';\nexport * from './decorators/addEventListener';\nexport * from './elements/SwcForOf';\nexport * from './elements/SwcIf';\nexport * from './elements/SwcChoose';\nexport * from './elements/SwcWhen';\nexport * from './elements/SwcOther';\nexport * from './elements/SwcObject';\nexport * from './elements/SwcHTMLElementBase';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,uCAAd;AACA,wBAAc,kCADd;AAEA,wBAAc,+BAFd;AAGA,wBAAc,0CAHd;AAIA,wBAAc,+BAJd;AAKA,wBAAc,kCALd;AAMA,wBAAc,0CANd;AAOA,wBAAc,gCAPd;AAQA,wBAAc,6BARd;AASA,wBAAc,iCATd;AAUA,wBAAc,+BAVd;AAWA,wBAAc,gCAXd;AAYA,wBAAc,iCAZd;AAaA,wBAAc,0CAbd;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,23 @@
1
+ import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
2
+ const ADD_EVENT_LISTENER_METADATA_KEY = Symbol("simple-web-component:add-event-listener");
3
+ const addEventListener = (options) => {
4
+ return (target, propertyKey, descriptor) => {
5
+ const constructor = target.constructor;
6
+ let listeners = ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);
7
+ if (!listeners) {
8
+ listeners = [];
9
+ ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);
10
+ }
11
+ listeners.push({ options, propertyKey });
12
+ };
13
+ };
14
+ const getAddEventListenerMetadata = (target) => {
15
+ const constructor = target instanceof Function ? target : target.constructor;
16
+ return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);
17
+ };
18
+ export {
19
+ ADD_EVENT_LISTENER_METADATA_KEY,
20
+ addEventListener,
21
+ getAddEventListenerMetadata
22
+ };
23
+ //# sourceMappingURL=addEventListener.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/addEventListener.ts"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n selector?: string;\n eventName: string;\n useShadow?: boolean;\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\nexport const addEventListener = (options: AddEventListenerOptions): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n\n let listeners = ReflectUtils.getMetadata<AddEventListenerMetadata[]>(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n if (!listeners) {\n listeners = [];\n ReflectUtils.defineMetadata(ADD_EVENT_LISTENER_METADATA_KEY, listeners, constructor);\n }\n listeners.push({ options, propertyKey });\n };\n};\n\nexport const getAddEventListenerMetadata = (target: any): AddEventListenerMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);\n};\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAgBtB,MAAM,kCAAkC,OAAO,yCAAyC;AAExF,MAAM,mBAAmB,CAAC,YAAsD;AACrF,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACvF,UAAM,cAAc,OAAO;AAE3B,QAAI,YAAY,aAAa,YAAwC,iCAAiC,WAAW;AACjH,QAAI,CAAC,WAAW;AACd,kBAAY,CAAC;AACb,mBAAa,eAAe,iCAAiC,WAAW,WAAW;AAAA,IACrF;AACA,cAAU,KAAK,EAAE,SAAS,YAAY,CAAC;AAAA,EACzC;AACF;AAEO,MAAM,8BAA8B,CAAC,WAAwD;AAClG,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,iCAAiC,WAAW;AAC9E;",
6
+ "names": []
7
+ }
@@ -1,22 +1,42 @@
1
1
  import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
2
2
  const ATTRIBUTE_CHANGED_METADATA_KEY = Symbol("simple-web-component:attribute-changed");
3
- const attributeChanged = (attributeName) => {
4
- return (target, propertyKey, descriptor) => {
3
+ const ATTRIBUTE_CHANGED_WILDCARD = "*";
4
+ function attributeChanged(arg1, arg2, arg3) {
5
+ const decorator = (attributeName, target, propertyKey) => {
5
6
  const constructor = target.constructor;
6
7
  let meta = ReflectUtils.getMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
7
8
  if (!meta) {
8
9
  meta = /* @__PURE__ */ new Map();
9
10
  ReflectUtils.defineMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, meta, constructor);
10
11
  }
11
- meta.set(attributeName, propertyKey);
12
+ let methods = meta.get(attributeName);
13
+ if (!methods) {
14
+ methods = [];
15
+ meta.set(attributeName, methods);
16
+ }
17
+ if (!methods.includes(propertyKey)) {
18
+ methods.push(propertyKey);
19
+ }
12
20
  };
13
- };
21
+ if (typeof arg1 === "string") {
22
+ return (target, propertyKey) => {
23
+ decorator(arg1, target, propertyKey);
24
+ };
25
+ } else if (Array.isArray(arg1)) {
26
+ return (target, propertyKey) => {
27
+ arg1.forEach((name) => decorator(name, target, propertyKey));
28
+ };
29
+ } else if (arg1 && arg2) {
30
+ decorator(ATTRIBUTE_CHANGED_WILDCARD, arg1, arg2);
31
+ }
32
+ }
14
33
  const getAttributeChangedMap = (target) => {
15
34
  const constructor = target instanceof Function ? target : target.constructor;
16
35
  return ReflectUtils.getMetadata(ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
17
36
  };
18
37
  export {
19
38
  ATTRIBUTE_CHANGED_METADATA_KEY,
39
+ ATTRIBUTE_CHANGED_WILDCARD,
20
40
  attributeChanged,
21
41
  getAttributeChangedMap
22
42
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/attributeChanged.ts"],
4
- "sourcesContent": ["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"],
5
- "mappings": "AAAA,SAAS,oBAAoB;AAEtB,MAAM,iCAAiC,OAAO,wCAAwC;AAEtF,MAAM,mBAAmB,CAAC,kBAA2C;AAC1E,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACvF,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,aAAa,YAA0C,gCAAgC,WAAW;AAC7G,QAAI,CAAC,MAAM;AACT,aAAO,oBAAI,IAA6B;AACxC,mBAAa,eAAe,gCAAgC,MAAM,WAAW;AAAA,IAC/E;AACA,SAAK,IAAI,eAAe,WAAW;AAAA,EACrC;AACF;AAEO,MAAM,yBAAyB,CAAC,WAA0D;AAC/F,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,gCAAgC,WAAW;AAC7E;",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport const ATTRIBUTE_CHANGED_METADATA_KEY = Symbol('simple-web-component:attribute-changed');\nexport const ATTRIBUTE_CHANGED_WILDCARD = '*';\n\nexport function attributeChanged(attributeName: string | string[]): MethodDecorator;\nexport function attributeChanged(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function attributeChanged(arg1: string | string[] | Object, arg2?: string | symbol, arg3?: PropertyDescriptor): MethodDecorator | void {\n const decorator = (attributeName: string, target: Object, propertyKey: string | symbol) => {\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\n let methods = meta.get(attributeName);\n if (!methods) {\n methods = [];\n meta.set(attributeName, methods);\n }\n if (!methods.includes(propertyKey)) {\n methods.push(propertyKey);\n }\n };\n\n if (typeof arg1 === 'string') {\n return (target: Object, propertyKey: string | symbol) => {\n decorator(arg1, target, propertyKey);\n };\n } else if (Array.isArray(arg1)) {\n return (target: Object, propertyKey: string | symbol) => {\n arg1.forEach(name => decorator(name, target, propertyKey));\n };\n } else if (arg1 && arg2) {\n decorator(ATTRIBUTE_CHANGED_WILDCARD, arg1, arg2);\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"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAEtB,MAAM,iCAAiC,OAAO,wCAAwC;AACtF,MAAM,6BAA6B;AAInC,SAAS,iBAAiB,MAAkC,MAAwB,MAAmD;AAC5I,QAAM,YAAY,CAAC,eAAuB,QAAgB,gBAAiC;AACzF,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,aAAa,YAA8C,gCAAgC,WAAW;AACjH,QAAI,CAAC,MAAM;AACT,aAAO,oBAAI,IAAiC;AAC5C,mBAAa,eAAe,gCAAgC,MAAM,WAAW;AAAA,IAC/E;AAEA,QAAI,UAAU,KAAK,IAAI,aAAa;AACpC,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAC;AACX,WAAK,IAAI,eAAe,OAAO;AAAA,IACjC;AACA,QAAI,CAAC,QAAQ,SAAS,WAAW,GAAG;AAClC,cAAQ,KAAK,WAAW;AAAA,IAC1B;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,CAAC,QAAgB,gBAAiC;AACvD,gBAAU,MAAM,QAAQ,WAAW;AAAA,IACrC;AAAA,EACF,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,WAAO,CAAC,QAAgB,gBAAiC;AACvD,WAAK,QAAQ,UAAQ,UAAU,MAAM,QAAQ,WAAW,CAAC;AAAA,IAC3D;AAAA,EACF,WAAW,QAAQ,MAAM;AACvB,cAAU,4BAA4B,MAAM,IAAI;AAAA,EAClD;AACF;AAEO,MAAM,yBAAyB,CAAC,WAA0D;AAC/F,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,gCAAgC,WAAW;AAC7E;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,10 @@
1
1
  import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
2
- import { getAttributeChangedMap } from "./attributeChanged.js";
2
+ import { getAttributeChangedMap, ATTRIBUTE_CHANGED_WILDCARD } from "./attributeChanged.js";
3
3
  import { getTemplateMethod } from "./template.js";
4
4
  import { getStyleMethod } from "./style.js";
5
+ import { getQueryMetadata } from "./query.js";
6
+ import { getQueryAllMetadata } from "./queryAll.js";
7
+ import { getAddEventListenerMetadata } from "./addEventListener.js";
5
8
  const ELEMENT_CONFIG_KEY = Symbol("simple-web-component:element-config");
6
9
  const BUILT_IN_TAG_MAP = /* @__PURE__ */ new Map();
7
10
  const registerTag = (className, tagName) => {
@@ -67,7 +70,7 @@ const registerTag = (className, tagName) => {
67
70
  ["HTMLVideoElement", "video"],
68
71
  ["HTMLHeadingElement", "h1"]
69
72
  ].forEach(([cls, tag]) => registerTag(cls, tag));
70
- const element = (inConfig) => (constructor) => {
73
+ const elementDefind = (inConfig) => (constructor) => {
71
74
  const config = typeof inConfig === "string" ? { tagName: inConfig } : inConfig;
72
75
  let extendsTagName = config.extends;
73
76
  if (!extendsTagName) {
@@ -80,7 +83,7 @@ const element = (inConfig) => (constructor) => {
80
83
  }
81
84
  }
82
85
  const attributeChangedMap = getAttributeChangedMap(constructor);
83
- const observedFromDecorators = attributeChangedMap ? Array.from(attributeChangedMap.keys()) : [];
86
+ const observedFromDecorators = attributeChangedMap ? Array.from(attributeChangedMap.keys()).filter((it) => it !== ATTRIBUTE_CHANGED_WILDCARD) : [];
84
87
  const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...config.observedAttributes ?? [], ...observedFromDecorators])];
85
88
  const NewClass = class extends constructor {
86
89
  static get observedAttributes() {
@@ -88,11 +91,68 @@ const element = (inConfig) => (constructor) => {
88
91
  }
89
92
  constructor(...args) {
90
93
  super(...args);
94
+ this._observer = null;
95
+ this._boundElements = /* @__PURE__ */ new WeakMap();
91
96
  if (config.useShadow === true && !this.shadowRoot) {
92
97
  this.attachShadow({ mode: "open" });
93
98
  }
94
99
  }
100
+ _syncDecorators() {
101
+ const queryMetadata = getQueryMetadata(this);
102
+ if (queryMetadata) {
103
+ queryMetadata.filter((it) => it.isMethod).forEach((it) => {
104
+ const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
105
+ const element = root.querySelector(it.selector);
106
+ if (element) {
107
+ let bound = this._boundElements.get(element);
108
+ if (!bound) {
109
+ bound = /* @__PURE__ */ new Set();
110
+ this._boundElements.set(element, bound);
111
+ }
112
+ if (!bound.has(it.propertyKey)) {
113
+ this[it.propertyKey](element);
114
+ bound.add(it.propertyKey);
115
+ }
116
+ }
117
+ });
118
+ }
119
+ const queryAllMetadata = getQueryAllMetadata(this);
120
+ if (queryAllMetadata) {
121
+ queryAllMetadata.filter((it) => it.isMethod).forEach((it) => {
122
+ const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
123
+ const elements = root.querySelectorAll(it.selector);
124
+ this[it.propertyKey](elements);
125
+ });
126
+ }
127
+ const eventListeners = getAddEventListenerMetadata(this);
128
+ if (eventListeners) {
129
+ eventListeners.forEach((it) => {
130
+ const { selector, eventName, useShadow, ...options } = it.options;
131
+ const root = useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
132
+ const targetElements = selector ? root.querySelectorAll(selector) : [this];
133
+ targetElements.forEach((targetElement) => {
134
+ if (targetElement) {
135
+ let bound = this._boundElements.get(targetElement);
136
+ if (!bound) {
137
+ bound = /* @__PURE__ */ new Set();
138
+ this._boundElements.set(targetElement, bound);
139
+ }
140
+ const eventKey = `event:${String(it.propertyKey)}:${eventName}`;
141
+ if (!bound.has(eventKey)) {
142
+ targetElement.addEventListener(eventName, (event) => {
143
+ this[it.propertyKey](event);
144
+ }, options);
145
+ bound.add(eventKey);
146
+ }
147
+ }
148
+ });
149
+ });
150
+ }
151
+ }
95
152
  disconnectedCallback() {
153
+ if (this._observer) {
154
+ this._observer.disconnect();
155
+ }
96
156
  if (super.disconnectedCallback) {
97
157
  super.disconnectedCallback();
98
158
  }
@@ -108,9 +168,6 @@ const element = (inConfig) => (constructor) => {
108
168
  }
109
169
  }
110
170
  async connectedCallback() {
111
- if (super.connectedCallback) {
112
- await super.connectedCallback();
113
- }
114
171
  const templateMethod = getTemplateMethod(this);
115
172
  const styleMethod = getStyleMethod(this);
116
173
  const template = templateMethod ? await this[templateMethod]() : void 0;
@@ -132,15 +189,36 @@ const element = (inConfig) => (constructor) => {
132
189
  } else {
133
190
  this.innerHTML = content;
134
191
  }
192
+ this._syncDecorators();
193
+ this._observer = new MutationObserver(() => {
194
+ this._syncDecorators();
195
+ });
196
+ const target = this.shadowRoot || this;
197
+ this._observer.observe(target, { childList: true, subtree: true });
198
+ if (super.connectedCallback) {
199
+ await super.connectedCallback();
200
+ }
135
201
  }
136
202
  // 4. Handle attribute changes and route to decorated methods
137
203
  attributeChangedCallback(name, oldValue, newValue) {
138
204
  if (super.attributeChangedCallback) {
139
205
  super.attributeChangedCallback(name, oldValue, newValue);
140
206
  }
141
- const methodKey = attributeChangedMap?.get(name);
142
- if (methodKey && typeof this[methodKey] === "function") {
143
- this[methodKey](newValue, oldValue);
207
+ const methodKeys = attributeChangedMap?.get(name);
208
+ if (methodKeys && Array.isArray(methodKeys)) {
209
+ methodKeys.forEach((key) => {
210
+ if (typeof this[key] === "function") {
211
+ this[key](newValue, oldValue, name);
212
+ }
213
+ });
214
+ }
215
+ const wildcardMethodKeys = attributeChangedMap?.get(ATTRIBUTE_CHANGED_WILDCARD);
216
+ if (wildcardMethodKeys && Array.isArray(wildcardMethodKeys)) {
217
+ wildcardMethodKeys.forEach((key) => {
218
+ if (typeof this[key] === "function") {
219
+ this[key](newValue, oldValue, name);
220
+ }
221
+ });
144
222
  }
145
223
  }
146
224
  };
@@ -158,7 +236,7 @@ const getElementConfig = (target) => {
158
236
  };
159
237
  export {
160
238
  ELEMENT_CONFIG_KEY,
161
- element,
239
+ elementDefind,
162
240
  getElementConfig
163
241
  };
164
- //# sourceMappingURL=element.js.map
242
+ //# sourceMappingURL=elementDefind.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/elementDefind.ts"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getAttributeChangedMap, ATTRIBUTE_CHANGED_WILDCARD } from './attributeChanged';\nimport { getTemplateMethod } from './template';\nimport { getStyleMethod } from './style';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\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 elementDefind =\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()).filter(it => it !== ATTRIBUTE_CHANGED_WILDCARD) : [];\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 private _observer: MutationObserver | null = null;\n private _boundElements = new WeakMap<Element, Set<string | symbol>>();\n\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 private _syncDecorators() {\n // 5. Execute @query and @queryAll methods\n const queryMetadata = getQueryMetadata(this);\n if (queryMetadata) {\n queryMetadata\n .filter(it => it.isMethod)\n .forEach(it => {\n const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n const element = root.querySelector(it.selector);\n\n // 중복 호출 방지: 해당 selector로 찾은 요소가 이전과 다를 때만 호출하거나,\n // 또는 매번 호출할지 결정해야 함. 여기서는 새로운 요소가 발견되면 호출하는 방식으로 처리.\n if (element) {\n let bound = this._boundElements.get(element);\n if (!bound) {\n bound = new Set();\n this._boundElements.set(element, bound);\n }\n if (!bound.has(it.propertyKey)) {\n (this as any)[it.propertyKey](element);\n bound.add(it.propertyKey);\n }\n }\n });\n }\n\n const queryAllMetadata = getQueryAllMetadata(this);\n if (queryAllMetadata) {\n queryAllMetadata\n .filter(it => it.isMethod)\n .forEach(it => {\n const root = it.options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n const elements = root.querySelectorAll(it.selector);\n\n // queryAll은 목록이 바뀔 수 있으므로 일단 호출하되,\n // 내부 로직은 사용자에게 맡기거나 좀 더 정교한 비교가 필요할 수 있음.\n // 여기서는 단순하게 호출만 다시 함. (사용자가 요청한 '다시 호출' 반영)\n (this as any)[it.propertyKey](elements);\n });\n }\n\n // 6. Register @addEventListener methods\n const eventListeners = getAddEventListenerMetadata(this);\n if (eventListeners) {\n eventListeners.forEach(it => {\n const { selector, eventName, useShadow, ...options } = it.options;\n const root = useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n const targetElements = selector ? root.querySelectorAll(selector) : [this as any as Element];\n\n targetElements.forEach(targetElement => {\n if (targetElement) {\n let bound = this._boundElements.get(targetElement);\n if (!bound) {\n bound = new Set();\n this._boundElements.set(targetElement, bound);\n }\n\n // 중복 바인딩 방지: (요소, 이벤트, 메서드) 조합 확인\n const eventKey = `event:${String(it.propertyKey)}:${eventName}`;\n if (!bound.has(eventKey)) {\n targetElement.addEventListener(\n eventName,\n event => {\n (this as any)[it.propertyKey](event);\n },\n options\n );\n bound.add(eventKey);\n }\n }\n });\n });\n }\n }\n\n disconnectedCallback() {\n if (this._observer) {\n this._observer.disconnect();\n }\n if (super.disconnectedCallback) {\n super.disconnectedCallback();\n }\n }\n\n connectedMoveCallback() {\n //default logic...\n if (super.connectedMoveCallback) {\n super.connectedMoveCallback();\n }\n }\n\n adoptedCallback() {\n //default logic...\n if (super.adoptedCallback) {\n super.adoptedCallback();\n }\n }\n\n async connectedCallback() {\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 (this as any)._syncDecorators();\n\n // 7. Watch for DOM changes (MutationObserver)\n this._observer = new MutationObserver(() => {\n (this as any)._syncDecorators();\n });\n const target = this.shadowRoot || this;\n this._observer.observe(target, { childList: true, subtree: true });\n\n if (super.connectedCallback) {\n await super.connectedCallback();\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 all methods associated with @attributeChanged\n const methodKeys = attributeChangedMap?.get(name);\n if (methodKeys && Array.isArray(methodKeys)) {\n methodKeys.forEach(key => {\n if (typeof (this as any)[key] === 'function') {\n (this as any)[key](newValue, oldValue, name);\n }\n });\n }\n\n // Call the wildcard methods if they exist\n const wildcardMethodKeys = attributeChangedMap?.get(ATTRIBUTE_CHANGED_WILDCARD);\n if (wildcardMethodKeys && Array.isArray(wildcardMethodKeys)) {\n wildcardMethodKeys.forEach(key => {\n if (typeof (this as any)[key] === 'function') {\n (this as any)[key](newValue, oldValue, name);\n }\n });\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,34 @@
1
+ import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
2
+ const QUERY_METADATA_KEY = Symbol("simple-web-component:query");
3
+ const query = (selector, options = { useShadow: true }) => {
4
+ return (target, propertyKey, descriptor) => {
5
+ const isMethod = !!descriptor;
6
+ const constructor = target.constructor;
7
+ let queries = ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
8
+ if (!queries) {
9
+ queries = [];
10
+ ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);
11
+ }
12
+ queries.push({ selector, options, propertyKey, isMethod });
13
+ if (!isMethod) {
14
+ Object.defineProperty(target, propertyKey, {
15
+ get() {
16
+ const root = options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
17
+ return root.querySelector(selector);
18
+ },
19
+ enumerable: true,
20
+ configurable: true
21
+ });
22
+ }
23
+ };
24
+ };
25
+ const getQueryMetadata = (target) => {
26
+ const constructor = target instanceof Function ? target : target.constructor;
27
+ return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
28
+ };
29
+ export {
30
+ QUERY_METADATA_KEY,
31
+ getQueryMetadata,
32
+ query
33
+ };
34
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/query.ts"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface QueryOptions {\n useShadow?: boolean;\n}\n\nexport interface QueryMetadata {\n selector: string;\n options: QueryOptions;\n propertyKey: string | symbol;\n isMethod: boolean;\n}\n\nexport const QUERY_METADATA_KEY = Symbol('simple-web-component:query');\n\nexport const query = (selector: string, options: QueryOptions = { useShadow: true }): any => {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const isMethod = !!descriptor;\n const constructor = target.constructor;\n\n // \uBA54\uD0C0\uB370\uC774\uD130 \uC800\uC7A5 (\uB098\uC911\uC5D0 elementDefind\uC5D0\uC11C \uC0AC\uC6A9)\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ selector, options, propertyKey, isMethod });\n\n if (!isMethod) {\n // \uC18D\uC131 \uB370\uCF54\uB808\uC774\uD130\uC778 \uACBD\uC6B0: \uAE30\uC874\uCC98\uB7FC Lazy Getter \uC124\uC815\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n const root = options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n return root.querySelector(selector);\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n};\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAatB,MAAM,qBAAqB,OAAO,4BAA4B;AAE9D,MAAM,QAAQ,CAAC,UAAkB,UAAwB,EAAE,WAAW,KAAK,MAAW;AAC3F,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACxF,UAAM,WAAW,CAAC,CAAC;AACnB,UAAM,cAAc,OAAO;AAG3B,QAAI,UAAU,aAAa,YAA6B,oBAAoB,WAAW;AACvF,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAC;AACX,mBAAa,eAAe,oBAAoB,SAAS,WAAW;AAAA,IACtE;AACA,YAAQ,KAAK,EAAE,UAAU,SAAS,aAAa,SAAS,CAAC;AAEzD,QAAI,CAAC,UAAU;AAEb,aAAO,eAAe,QAAQ,aAAa;AAAA,QACzC,MAAuB;AACrB,gBAAM,OAAO,QAAQ,cAAc,SAAS,KAAK,aAAa,KAAK,aAAa;AAChF,iBAAO,KAAK,cAAc,QAAQ;AAAA,QACpC;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,MAAM,mBAAmB,CAAC,WAA6C;AAC5E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,oBAAoB,WAAW;AACjE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,34 @@
1
+ import { ReflectUtils } from "@dooboostore/core/reflect/ReflectUtils";
2
+ const QUERY_ALL_METADATA_KEY = Symbol("simple-web-component:query-all");
3
+ const queryAll = (selector, options = { useShadow: true }) => {
4
+ return (target, propertyKey, descriptor) => {
5
+ const isMethod = !!descriptor;
6
+ const constructor = target.constructor;
7
+ let queries = ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);
8
+ if (!queries) {
9
+ queries = [];
10
+ ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);
11
+ }
12
+ queries.push({ selector, options, propertyKey, isMethod });
13
+ if (!isMethod) {
14
+ Object.defineProperty(target, propertyKey, {
15
+ get() {
16
+ const root = options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;
17
+ return root.querySelectorAll(selector);
18
+ },
19
+ enumerable: true,
20
+ configurable: true
21
+ });
22
+ }
23
+ };
24
+ };
25
+ const getQueryAllMetadata = (target) => {
26
+ const constructor = target instanceof Function ? target : target.constructor;
27
+ return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);
28
+ };
29
+ export {
30
+ QUERY_ALL_METADATA_KEY,
31
+ getQueryAllMetadata,
32
+ queryAll
33
+ };
34
+ //# sourceMappingURL=queryAll.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/queryAll.ts"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface QueryAllOptions {\n useShadow?: boolean;\n}\n\nexport interface QueryAllMetadata {\n selector: string;\n options: QueryAllOptions;\n propertyKey: string | symbol;\n isMethod: boolean;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol('simple-web-component:query-all');\n\nexport const queryAll = (selector: string, options: QueryAllOptions = { useShadow: true }): any => {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const isMethod = !!descriptor;\n const constructor = target.constructor;\n\n // \uBA54\uD0C0\uB370\uC774\uD130 \uC800\uC7A5 (\uB098\uC911\uC5D0 elementDefind\uC5D0\uC11C \uC0AC\uC6A9)\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ selector, options, propertyKey, isMethod });\n\n if (!isMethod) {\n // \uC18D\uC131 \uB370\uCF54\uB808\uC774\uD130\uC778 \uACBD\uC6B0: \uAE30\uC874\uCC98\uB7FC Lazy Getter \uC124\uC815\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n const root = options.useShadow !== false && this.shadowRoot ? this.shadowRoot : this;\n return root.querySelectorAll(selector);\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n};\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAatB,MAAM,yBAAyB,OAAO,gCAAgC;AAEtE,MAAM,WAAW,CAAC,UAAkB,UAA2B,EAAE,WAAW,KAAK,MAAW;AACjG,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACxF,UAAM,WAAW,CAAC,CAAC;AACnB,UAAM,cAAc,OAAO;AAG3B,QAAI,UAAU,aAAa,YAAgC,wBAAwB,WAAW;AAC9F,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAC;AACX,mBAAa,eAAe,wBAAwB,SAAS,WAAW;AAAA,IAC1E;AACA,YAAQ,KAAK,EAAE,UAAU,SAAS,aAAa,SAAS,CAAC;AAEzD,QAAI,CAAC,UAAU;AAEb,aAAO,eAAe,QAAQ,aAAa;AAAA,QACzC,MAAuB;AACrB,gBAAM,OAAO,QAAQ,cAAc,SAAS,KAAK,aAAa,KAAK,aAAa;AAChF,iBAAO,KAAK,iBAAiB,QAAQ;AAAA,QACvC;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,MAAM,sBAAsB,CAAC,WAAgD;AAClF,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,wBAAwB,WAAW;AACrE;",
6
+ "names": []
7
+ }