@dooboostore/simple-web-component 1.0.15 → 1.0.17

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 (108) hide show
  1. package/README.md +275 -91
  2. package/dist/cjs/decorators/addEventListener.js +2 -3
  3. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  4. package/dist/cjs/decorators/elementDefine.js +161 -34
  5. package/dist/cjs/decorators/elementDefine.js.map +3 -3
  6. package/dist/cjs/decorators/emitCustomEvent.js +2 -14
  7. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  8. package/dist/cjs/decorators/query.js +47 -36
  9. package/dist/cjs/decorators/query.js.map +2 -2
  10. package/dist/cjs/decorators/queryAll.js +42 -36
  11. package/dist/cjs/decorators/queryAll.js.map +2 -2
  12. package/dist/cjs/elements/SwcAppEngine.js +2 -1
  13. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  14. package/dist/cjs/elements/SwcAsync.js +188 -0
  15. package/dist/cjs/elements/SwcAsync.js.map +7 -0
  16. package/dist/cjs/elements/SwcChoose.js +155 -0
  17. package/dist/cjs/elements/SwcChoose.js.map +7 -0
  18. package/dist/cjs/elements/SwcIf.js +167 -0
  19. package/dist/cjs/elements/SwcIf.js.map +7 -0
  20. package/dist/cjs/elements/SwcLoop.js +246 -0
  21. package/dist/cjs/elements/SwcLoop.js.map +7 -0
  22. package/dist/cjs/elements/SwcSubTemplates.js +65 -0
  23. package/dist/cjs/elements/SwcSubTemplates.js.map +7 -0
  24. package/dist/cjs/elements/index.js +7 -0
  25. package/dist/cjs/elements/index.js.map +2 -2
  26. package/dist/cjs/index.js +1 -1
  27. package/dist/cjs/index.js.map +2 -2
  28. package/dist/cjs/types.js +1 -0
  29. package/dist/cjs/types.js.map +2 -2
  30. package/dist/cjs/utils/Utils.js +92 -162
  31. package/dist/cjs/utils/Utils.js.map +3 -3
  32. package/dist/esm/decorators/addEventListener.js +2 -3
  33. package/dist/esm/decorators/addEventListener.js.map +2 -2
  34. package/dist/esm/decorators/elementDefine.js +161 -34
  35. package/dist/esm/decorators/elementDefine.js.map +3 -3
  36. package/dist/esm/decorators/emitCustomEvent.js +2 -14
  37. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  38. package/dist/esm/decorators/query.js +47 -36
  39. package/dist/esm/decorators/query.js.map +2 -2
  40. package/dist/esm/decorators/queryAll.js +42 -36
  41. package/dist/esm/decorators/queryAll.js.map +2 -2
  42. package/dist/esm/elements/SwcAppEngine.js +2 -1
  43. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  44. package/dist/esm/elements/SwcAsync.js +169 -0
  45. package/dist/esm/elements/SwcAsync.js.map +7 -0
  46. package/dist/esm/elements/SwcChoose.js +136 -0
  47. package/dist/esm/elements/SwcChoose.js.map +7 -0
  48. package/dist/esm/elements/SwcIf.js +148 -0
  49. package/dist/esm/elements/SwcIf.js.map +7 -0
  50. package/dist/esm/elements/SwcLoop.js +227 -0
  51. package/dist/esm/elements/SwcLoop.js.map +7 -0
  52. package/dist/esm/elements/SwcSubTemplates.js +46 -0
  53. package/dist/esm/elements/SwcSubTemplates.js.map +7 -0
  54. package/dist/esm/elements/index.js +7 -0
  55. package/dist/esm/elements/index.js.map +2 -2
  56. package/dist/esm/index.js +1 -1
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/esm/types.js +1 -0
  59. package/dist/esm/types.js.map +2 -2
  60. package/dist/esm/utils/Utils.js +92 -162
  61. package/dist/esm/utils/Utils.js.map +3 -3
  62. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1150 -326
  63. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  64. package/dist/types/decorators/addEventListener.d.ts +10 -4
  65. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  66. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  67. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  68. package/dist/types/decorators/query.d.ts +4 -5
  69. package/dist/types/decorators/query.d.ts.map +1 -1
  70. package/dist/types/decorators/queryAll.d.ts +4 -5
  71. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  72. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  73. package/dist/types/elements/SwcAsync.d.ts +16 -0
  74. package/dist/types/elements/SwcAsync.d.ts.map +1 -0
  75. package/dist/types/elements/SwcChoose.d.ts +13 -0
  76. package/dist/types/elements/SwcChoose.d.ts.map +1 -0
  77. package/dist/types/elements/SwcIf.d.ts +15 -0
  78. package/dist/types/elements/SwcIf.d.ts.map +1 -0
  79. package/dist/types/elements/SwcLoop.d.ts +20 -0
  80. package/dist/types/elements/SwcLoop.d.ts.map +1 -0
  81. package/dist/types/elements/SwcSubTemplates.d.ts +13 -0
  82. package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -0
  83. package/dist/types/elements/index.d.ts +7 -0
  84. package/dist/types/elements/index.d.ts.map +1 -1
  85. package/dist/types/index.d.ts +1 -1
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/dist/types/types.d.ts +11 -1
  88. package/dist/types/types.d.ts.map +1 -1
  89. package/dist/types/utils/Utils.d.ts +19 -21
  90. package/dist/types/utils/Utils.d.ts.map +1 -1
  91. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1150 -326
  92. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  93. package/package.json +10 -3
  94. package/src/decorators/addEventListener.ts +11 -7
  95. package/src/decorators/elementDefine.ts +165 -39
  96. package/src/decorators/emitCustomEvent.ts +5 -21
  97. package/src/decorators/query.ts +46 -41
  98. package/src/decorators/queryAll.ts +45 -41
  99. package/src/elements/SwcAppEngine.ts +2 -1
  100. package/src/elements/SwcAsync.ts +163 -0
  101. package/src/elements/SwcChoose.ts +127 -0
  102. package/src/elements/SwcIf.ts +134 -0
  103. package/src/elements/SwcLoop.ts +215 -0
  104. package/src/elements/SwcSubTemplates.ts +19 -0
  105. package/src/elements/index.ts +8 -3
  106. package/src/index.ts +1 -1
  107. package/src/types.ts +15 -5
  108. package/src/utils/Utils.ts +111 -197
@@ -23,6 +23,7 @@ __export(elementDefine_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(elementDefine_exports);
25
25
  var import_ReflectUtils = require("@dooboostore/core/reflect/ReflectUtils");
26
+ var import_FunctionUtils = require("@dooboostore/core/function/FunctionUtils");
26
27
  var import_innerHtml = require("./innerHtml");
27
28
  var import_addEventListener = require("./addEventListener");
28
29
  var import_lifecycles = require("./lifecycles");
@@ -34,6 +35,7 @@ var import_config = require("../config/config");
34
35
  var import_Inject = require("@dooboostore/simple-boot/decorators/inject/Inject");
35
36
  var import_types = require("../types");
36
37
  const ELEMENT_CONFIG_KEY = Symbol("simple-web-component:element-config");
38
+ const globalDelegatedRoots = /* @__PURE__ */ new WeakSet();
37
39
  function buildEnv(configWindow) {
38
40
  const win = configWindow || (typeof window !== "undefined" ? window : void 0);
39
41
  const doc = win?.document;
@@ -42,13 +44,7 @@ function buildEnv(configWindow) {
42
44
  if (win?.[cls])
43
45
  builtInTagMap.set(win[cls], tag);
44
46
  }
45
- const domHelpers = {
46
- $d: doc,
47
- $w: win,
48
- $q: (sel, root) => (root ?? doc).querySelector(sel),
49
- $qa: (sel, root) => Array.from((root ?? doc).querySelectorAll(sel)),
50
- $qi: (id, root) => (root ?? doc).getElementById(id)
51
- };
47
+ const domHelpers = import_Utils.SwcUtils.getHelperSet(win);
52
48
  return { win, doc, builtInTagMap, domHelpers };
53
49
  }
54
50
  const getHandlers = (inst) => {
@@ -60,8 +56,6 @@ const elementDefine = (inConfig) => (constructor) => {
60
56
  const config = typeof inConfig === "string" ? { name: inConfig } : inConfig;
61
57
  const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);
62
58
  config.window = win;
63
- const SWC_DOM_HELPER_KEYS = Object.keys(SWC_DOM_HELPERS);
64
- const SWC_DOM_HELPER_VALS = () => SWC_DOM_HELPER_KEYS.map((k) => SWC_DOM_HELPERS[k]);
65
59
  let extendsTagName = config.extends;
66
60
  if (!extendsTagName) {
67
61
  let proto = constructor;
@@ -87,9 +81,7 @@ const elementDefine = (inConfig) => (constructor) => {
87
81
  if (script) {
88
82
  try {
89
83
  const args = { ...hostSet, ...SWC_DOM_HELPERS, ...extraArgs };
90
- const argNames = Object.keys(args);
91
- const argValues = Object.values(args);
92
- new Function(...argNames, script).apply(this, argValues);
84
+ import_FunctionUtils.FunctionUtils.execute({ script, context: this, args });
93
85
  } catch (e) {
94
86
  console.error(`[SWC] Failed to execute ${attrName}:`, e);
95
87
  }
@@ -112,10 +104,12 @@ const elementDefine = (inConfig) => (constructor) => {
112
104
  return this[methodName](...extraArgs);
113
105
  }
114
106
  }
115
- _bindAttributeEvent(el, attrName, script) {
116
- if (!attrName.startsWith("swc-on-"))
117
- return;
118
- const eventName = attrName.substring(7);
107
+ _bindAttributeEvent(el, attrName, script, eventName) {
108
+ if (!eventName) {
109
+ if (!attrName.startsWith("swc-on-"))
110
+ return;
111
+ eventName = attrName.substring(7);
112
+ }
119
113
  if (swcLifecycleAttributes.includes(attrName))
120
114
  return;
121
115
  const elHandlers = getHandlers(this);
@@ -129,9 +123,13 @@ const elementDefine = (inConfig) => (constructor) => {
129
123
  el.removeEventListener(eventName, oldHandler);
130
124
  const handler = (event) => {
131
125
  const hostSet = import_Utils.SwcUtils.getHostSet(el);
132
- const argNames = Object.keys(hostSet);
133
- const argValues = Object.values(hostSet);
134
- new Function("event", "$data", ...argNames, ...SWC_DOM_HELPER_KEYS, script).call(el, event, event.detail, ...argValues, ...SWC_DOM_HELPER_VALS());
126
+ const args = {
127
+ event,
128
+ $data: event.detail,
129
+ ...hostSet,
130
+ ...SWC_DOM_HELPERS
131
+ };
132
+ import_FunctionUtils.FunctionUtils.execute({ script, context: el, args });
135
133
  };
136
134
  el.addEventListener(eventName, handler);
137
135
  handlers.set(attrName, handler);
@@ -140,6 +138,7 @@ const elementDefine = (inConfig) => (constructor) => {
140
138
  super(...args);
141
139
  this._swcId = Math.random().toString(36).substring(2, 11);
142
140
  this._emitHandlers = /* @__PURE__ */ new Map();
141
+ this._boundListeners = [];
143
142
  const hostSet = import_Utils.SwcUtils.getHostSet(this);
144
143
  this._executeSwcScript("swc-on-constructor", hostSet);
145
144
  if (innerHtmlList.some((it) => it.options.useShadow === true) && !this.shadowRoot) {
@@ -150,6 +149,9 @@ const elementDefine = (inConfig) => (constructor) => {
150
149
  return mergedObservedAttributes;
151
150
  }
152
151
  async connectedCallback() {
152
+ const conf = getElementConfig(this);
153
+ const currentWin = conf?.window || window;
154
+ const currentDoc = currentWin.document;
153
155
  const hostSet = import_Utils.SwcUtils.getHostSet(this);
154
156
  this._executeSwcScript("swc-on-before-connected", hostSet);
155
157
  const bMethods = (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_BEFORE_CONNECTED_METADATA_KEY);
@@ -175,19 +177,122 @@ const elementDefine = (inConfig) => (constructor) => {
175
177
  if (lContent)
176
178
  this.innerHTML = lContent;
177
179
  }
180
+ const createDelegationHandler = (delegateHost) => (event) => {
181
+ if (event.__swc_handled)
182
+ return;
183
+ const path = event.composedPath();
184
+ const type = event.type;
185
+ const attrName = `swc-on-${type}`;
186
+ for (const node of path) {
187
+ if (node === delegateHost)
188
+ break;
189
+ if (!(node instanceof HTMLElement))
190
+ continue;
191
+ const script = node.getAttribute?.(attrName);
192
+ if (script && !getElementConfig(node)) {
193
+ const host = import_Utils.SwcUtils.findNearestSwcHost(node);
194
+ if (host) {
195
+ const childHostSet = import_Utils.SwcUtils.getHostSet(node);
196
+ const args = {
197
+ event,
198
+ $data: event.detail,
199
+ ...childHostSet,
200
+ ...SWC_DOM_HELPERS
201
+ };
202
+ import_FunctionUtils.FunctionUtils.execute({ script, context: node, args });
203
+ event.__swc_handled = true;
204
+ break;
205
+ }
206
+ }
207
+ }
208
+ };
209
+ import_config.DOM_EVENT_NAMES.forEach((type) => {
210
+ this.addEventListener(type, createDelegationHandler(this));
211
+ this._boundListeners.push({ target: this, type, handler: createDelegationHandler(this) });
212
+ });
213
+ const hasParentHost = import_Utils.SwcUtils.findAllSwcHosts(this).length > 0;
214
+ if (!hasParentHost) {
215
+ const root = this.getRootNode();
216
+ if (!globalDelegatedRoots.has(root)) {
217
+ import_config.DOM_EVENT_NAMES.forEach((type) => {
218
+ const handler = createDelegationHandler(root);
219
+ root.addEventListener(type, handler);
220
+ });
221
+ globalDelegatedRoots.add(root);
222
+ }
223
+ }
178
224
  addEventListenerList.forEach((meta) => {
179
- const { type, query, root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault } = meta.options;
180
- const targetEls = [];
181
- if (!query) {
182
- targetEls.push(this);
225
+ const { selector, type, options } = meta;
226
+ const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate, removeOnDisconnected } = options;
227
+ const opts = { capture, once, passive };
228
+ const bindTargets = [];
229
+ if (selector === ":window") {
230
+ bindTargets.push(currentWin);
231
+ } else if (selector === ":document") {
232
+ bindTargets.push(currentDoc);
233
+ } else if (selector === ":parentHost") {
234
+ if (hostSet.$parentHost)
235
+ bindTargets.push(hostSet.$parentHost);
236
+ } else if (selector === ":appHost") {
237
+ if (hostSet.$appHost)
238
+ bindTargets.push(hostSet.$appHost);
239
+ } else if (selector === ":firstHost") {
240
+ if (hostSet.$firstHost)
241
+ bindTargets.push(hostSet.$firstHost);
242
+ } else if (selector === ":lastHost") {
243
+ if (hostSet.$lastHost)
244
+ bindTargets.push(hostSet.$lastHost);
245
+ } else if (selector === ":firstAppHost") {
246
+ if (hostSet.$firstAppHost)
247
+ bindTargets.push(hostSet.$firstAppHost);
248
+ } else if (selector === ":lastAppHost") {
249
+ if (hostSet.$lastAppHost)
250
+ bindTargets.push(hostSet.$lastAppHost);
251
+ } else if (!selector || selector === ":host") {
252
+ bindTargets.push(this);
253
+ } else if (delegate) {
254
+ const bindRoots = [];
255
+ const r = root || "auto";
256
+ if (r === "auto")
257
+ bindRoots.push(this.shadowRoot || this);
258
+ else if (r === "light")
259
+ bindRoots.push(this);
260
+ else if (r === "shadow") {
261
+ if (this.shadowRoot)
262
+ bindRoots.push(this.shadowRoot);
263
+ } else if (r === "all") {
264
+ bindRoots.push(this);
265
+ if (this.shadowRoot)
266
+ bindRoots.push(this.shadowRoot);
267
+ }
268
+ bindRoots.forEach((br) => {
269
+ const handler = (event) => {
270
+ const matchedEl = event.target.closest(selector);
271
+ if (matchedEl && br.contains(matchedEl)) {
272
+ if (stopPropagation)
273
+ event.stopPropagation();
274
+ if (stopImmediatePropagation)
275
+ event.stopImmediatePropagation();
276
+ if (preventDefault)
277
+ event.preventDefault();
278
+ const currentHostSet = import_Utils.SwcUtils.getHostSet(this);
279
+ this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl]);
280
+ }
281
+ };
282
+ br.addEventListener(type, handler, opts);
283
+ const self = this;
284
+ if (removeOnDisconnected === true || br !== self && br !== self.shadowRoot) {
285
+ this._boundListeners.push({ target: br, type, handler, options: opts });
286
+ }
287
+ });
183
288
  } else {
184
289
  const searchRoots = [];
185
290
  const r = root || "auto";
186
- if (r === "auto") {
291
+ if (r === "auto")
187
292
  searchRoots.push(this.shadowRoot || this);
188
- } else if (r === "light") {
293
+ else if (r === "light")
189
294
  searchRoots.push(this);
190
- } else if (r === "shadow") {
295
+ else if (r === "shadow") {
191
296
  if (this.shadowRoot)
192
297
  searchRoots.push(this.shadowRoot);
193
298
  } else if (r === "all") {
@@ -196,11 +301,10 @@ const elementDefine = (inConfig) => (constructor) => {
196
301
  searchRoots.push(this.shadowRoot);
197
302
  }
198
303
  searchRoots.forEach((sr) => {
199
- const found = sr.querySelectorAll(query);
200
- found.forEach((el) => targetEls.push(el));
304
+ sr.querySelectorAll(selector).forEach((el) => bindTargets.push(el));
201
305
  });
202
306
  }
203
- targetEls.forEach((el) => {
307
+ bindTargets.forEach((target) => {
204
308
  const handler = (event) => {
205
309
  if (stopPropagation)
206
310
  event.stopPropagation();
@@ -208,11 +312,13 @@ const elementDefine = (inConfig) => (constructor) => {
208
312
  event.stopImmediatePropagation();
209
313
  if (preventDefault)
210
314
  event.preventDefault();
211
- const hostSet2 = import_Utils.SwcUtils.getHostSet(this);
212
- this._invokeLifecycleMethod(meta.propertyKey, hostSet2, [event, hostSet2]);
315
+ const currentHostSet = import_Utils.SwcUtils.getHostSet(this);
316
+ this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet]);
213
317
  };
214
- const options = { capture, once, passive };
215
- el.addEventListener(type, handler, options);
318
+ target.addEventListener(type, handler, opts);
319
+ if (removeOnDisconnected === true || target === currentWin || target === currentDoc) {
320
+ this._boundListeners.push({ target, type, handler, options: opts });
321
+ }
216
322
  });
217
323
  });
218
324
  if (super.connectedCallback)
@@ -231,6 +337,8 @@ const elementDefine = (inConfig) => (constructor) => {
231
337
  const bMethods = (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_BEFORE_DISCONNECTED_METADATA_KEY);
232
338
  if (bMethods)
233
339
  bMethods.forEach((m) => this._invokeLifecycleMethod(m, hostSet));
340
+ this._boundListeners.forEach((l) => l.target.removeEventListener(l.type, l.handler, l.options));
341
+ this._boundListeners = [];
234
342
  if (super.disconnectedCallback)
235
343
  super.disconnectedCallback();
236
344
  const aMethods = (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_AFTER_DISCONNECTED_METADATA_KEY);
@@ -258,7 +366,9 @@ const elementDefine = (inConfig) => (constructor) => {
258
366
  super.attributeChangedCallback(name, old, newVal);
259
367
  if (name.startsWith("swc-on-") && !swcLifecycleAttributes.includes(name)) {
260
368
  if (newVal !== null) {
261
- this._bindAttributeEvent(this, name, newVal);
369
+ const customEventMeta = emitCustomEventList.find((it) => it.options.attributeName === name);
370
+ const eventName = customEventMeta ? customEventMeta.options.type : name.substring(7);
371
+ this._bindAttributeEvent(this, name, newVal, eventName);
262
372
  }
263
373
  }
264
374
  const mKeys = attrChangeMap.get(name);
@@ -283,6 +393,23 @@ const elementDefine = (inConfig) => (constructor) => {
283
393
  };
284
394
  }
285
395
  });
396
+ emitCustomEventList.forEach((meta) => {
397
+ const { propertyKey, options } = meta;
398
+ const original = NewClass.prototype[propertyKey];
399
+ if (typeof original === "function") {
400
+ NewClass.prototype[propertyKey] = function(...args) {
401
+ const detail = original.apply(this, args);
402
+ const event = new CustomEvent(options.type, {
403
+ detail,
404
+ bubbles: options.bubbles,
405
+ composed: options.composed,
406
+ cancelable: options.cancelable
407
+ });
408
+ this.dispatchEvent(event);
409
+ return detail;
410
+ };
411
+ }
412
+ });
286
413
  const originalProto = constructor.prototype;
287
414
  const newProto = NewClass.prototype;
288
415
  Object.getOwnPropertyNames(originalProto).forEach((name) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/elementDefine.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getInnerHtmlMetadataList } from './innerHtml';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, ON_ADD_EVENT_LISTENER_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD, findAllLifecycleMetadata } from './lifecycles';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { changedAttribute, findAllAttributeChangedMetadata } from './changedAttribute';\nimport { setAttribute, findAllSetAttributeMetadata } from './setAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';\nimport { SituationType, SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { InjectSituationType, HostSet, SwcAppInterface } from '../types';\n\n// --- Core Interfaces & Types (Integrated) ---\n\nexport interface ElementConfig {\n name: string;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n window?: Window;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\n\n// --- Environment Initialization Helper ---\n\nfunction buildEnv(configWindow?: Window) {\n const win: any = configWindow || (typeof window !== 'undefined' ? window : undefined);\n const doc: Document = win?.document;\n\n const builtInTagMap = new Map<any, string>();\n for (const [cls, tag] of HTML_TAG_ENTRIES) {\n if (win?.[cls]) builtInTagMap.set(win[cls], tag);\n }\n\n const domHelpers = {\n $d: doc,\n $w: win,\n $q: (sel: string, root?: Element | Document | ShadowRoot) => (root ?? doc).querySelector(sel),\n $qa: (sel: string, root?: Element | Document | ShadowRoot) => Array.from((root ?? doc).querySelectorAll(sel)),\n $qi: (id: string, root?: Document | ShadowRoot) => (root ?? doc).getElementById(id)\n } as const;\n\n return { win, doc, builtInTagMap, domHelpers };\n}\n\nconst getHandlers = (inst: any) => {\n if (!inst.__swc_attributeEventHandlers) inst.__swc_attributeEventHandlers = new Map();\n return inst.__swc_attributeEventHandlers;\n};\n\nexport const elementDefine =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;\n const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);\n config.window = win;\n const SWC_DOM_HELPER_KEYS = Object.keys(SWC_DOM_HELPERS) as (keyof typeof SWC_DOM_HELPERS)[];\n const SWC_DOM_HELPER_VALS = () => SWC_DOM_HELPER_KEYS.map(k => (SWC_DOM_HELPERS as any)[k]);\n\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = 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 config.extends = extendsTagName;\n }\n\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];\n const addEventListenerList = getAddEventListenerMetadata(constructor) || [];\n const attrChangeMap = findAllAttributeChangedMetadata(constructor);\n const setAttrMap = findAllSetAttributeMetadata(constructor);\n\n const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];\n const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);\n\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...attrChangeMap.keys(), ...setAttrMap.keys(), ...emitCustomEventList.map(it => it.options.attributeName!), ...swcLifecycleAttributes, ...swcOnEvents])];\n const innerHtmlList = getInnerHtmlMetadataList(constructor) || [];\n\n const NewClass = class extends (constructor as any) {\n private _swcId = Math.random().toString(36).substring(2, 11);\n private _emitHandlers = new Map<string, EventListener>();\n\n private _executeSwcScript(attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {\n const script = this.getAttribute(attrName);\n if (script) {\n try {\n const args = { ...hostSet, ...SWC_DOM_HELPERS, ...extraArgs };\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n new Function(...argNames, script).apply(this, argValues);\n } catch (e) {\n console.error(`[SWC] Failed to execute ${attrName}:`, e);\n }\n }\n }\n\n private async _invokeLifecycleMethod(methodName: string | symbol, hostSet: HostSet, extraArgs: any[] = []) {\n if (typeof (this as any)[methodName] !== 'function') return;\n const app = hostSet.$appHost?.simpleApplication;\n\n if (app) {\n const otherStorage = new Map<any, any>();\n const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: hostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: hostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: hostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: hostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: hostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: hostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: hostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: hostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: hostSet.$lastAppHost })]);\n otherStorage.set(SituationTypeContainers, situations);\n\n return app.simstanceManager.executeBindParameterSimPromise(\n {\n target: this,\n targetKey: methodName,\n inputParameters: extraArgs\n },\n otherStorage\n );\n } else {\n return (this as any)[methodName](...extraArgs);\n }\n }\n\n private _bindAttributeEvent(el: HTMLElement, attrName: string, script: string) {\n if (!attrName.startsWith('swc-on-')) return;\n const eventName = attrName.substring(7);\n if (swcLifecycleAttributes.includes(attrName)) return;\n\n const elHandlers = getHandlers(this);\n let handlers = elHandlers.get(el);\n if (!handlers) {\n handlers = new Map();\n elHandlers.set(el, handlers);\n }\n\n const oldHandler = handlers.get(attrName);\n if (oldHandler) el.removeEventListener(eventName, oldHandler);\n\n const handler = (event: any) => {\n const hostSet = SwcUtils.getHostSet(el);\n const argNames = Object.keys(hostSet);\n const argValues = Object.values(hostSet);\n new Function('event', '$data', ...argNames, ...SWC_DOM_HELPER_KEYS, script).call(el, event, (event as CustomEvent).detail, ...argValues, ...SWC_DOM_HELPER_VALS());\n };\n\n el.addEventListener(eventName, handler);\n handlers.set(attrName, handler);\n }\n\n constructor(...args: any[]) {\n super(...args);\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-constructor', hostSet);\n\n if (innerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n async connectedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n\n this._executeSwcScript('swc-on-before-connected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n if (typeof (this as any).initCore === 'function') (this as any).initCore();\n\n if (innerHtmlList.length > 0) {\n let sContent = '',\n lContent = '';\n for (const meta of innerHtmlList) {\n const res = await (this as any)[meta.propertyKey]();\n if (res !== undefined) {\n if (meta.options.useShadow) sContent += res;\n else lContent += res;\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n }\n\n // --- @addEventListener binding ---\n addEventListenerList.forEach(meta => {\n const { type, query, root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault } = meta.options;\n const targetEls: (HTMLElement | Element | Document | ShadowRoot | Window)[] = [];\n\n if (!query) {\n targetEls.push(this as any);\n } else {\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') {\n searchRoots.push((this.shadowRoot || (this as any)) as any);\n } else if (r === 'light') {\n searchRoots.push(this as any);\n } else if (r === 'shadow') {\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n }\n\n searchRoots.forEach(sr => {\n const found = sr.querySelectorAll(query);\n found.forEach(el => targetEls.push(el as any));\n });\n }\n\n targetEls.forEach(el => {\n const handler = (event: Event) => {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n\n const hostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, hostSet, [event, hostSet]);\n };\n const options = { capture, once, passive };\n el.addEventListener(type, handler, options);\n });\n });\n\n if (super.connectedCallback) await super.connectedCallback();\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n this._executeSwcScript('swc-on-connected', hostSet);\n this._executeSwcScript('swc-on-after-connected', hostSet);\n }\n\n disconnectedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-disconnected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n if (super.disconnectedCallback) super.disconnectedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-disconnected', hostSet);\n this._executeSwcScript('swc-on-after-disconnected', hostSet);\n }\n\n adoptedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-adopted', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n if (super.adoptedCallback) super.adoptedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-adopted', hostSet);\n this._executeSwcScript('swc-on-after-adopted', hostSet);\n }\n\n attributeChangedCallback(name: string, old: string | null, newVal: string | null) {\n if (super.attributeChangedCallback) super.attributeChangedCallback(name, old, newVal);\n\n if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {\n if (newVal !== null) {\n this._bindAttributeEvent(this as any, name, newVal);\n }\n }\n\n const mKeys = attrChangeMap.get(name);\n if (mKeys && Array.isArray(mKeys)) {\n const hSet = SwcUtils.getHostSet(this as any);\n mKeys.forEach(key => this._invokeLifecycleMethod(key, hSet, [newVal, old, name]));\n }\n }\n };\n\n // --- @setAttribute wrapping logic ---\n setAttrMap.forEach((methodName, attrName) => {\n const original = NewClass.prototype[methodName as any];\n if (typeof original === 'function') {\n NewClass.prototype[methodName as any] = function (...args: any[]) {\n const res = original.apply(this, args);\n if (res !== undefined) {\n if (res === null) this.removeAttribute(attrName);\n else this.setAttribute(attrName, String(res));\n }\n return res;\n };\n }\n });\n\n const originalProto = constructor.prototype;\n const newProto = NewClass.prototype;\n Object.getOwnPropertyNames(originalProto).forEach(name => {\n if (name === 'constructor') return;\n const keys = Reflect.getMetadataKeys(originalProto, name);\n keys.forEach(key => Reflect.defineMetadata(key, Reflect.getMetadata(key, originalProto, name), newProto, name));\n });\n\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, constructor);\n const registry = config.customElementRegistry || (win as any)?.customElements;\n if (registry && !registry.get(config.name)) {\n registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);\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": ["hostSet"]
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { FunctionUtils } from '@dooboostore/core/function/FunctionUtils';\nimport { getInnerHtmlMetadataList } from './innerHtml';\nimport { getQueryMetadata } from './query';\nimport { getQueryAllMetadata } from './queryAll';\nimport { getAddEventListenerMetadata } from './addEventListener';\nimport { ON_BEFORE_CONNECTED_METADATA_KEY, ON_AFTER_CONNECTED_METADATA_KEY, ON_BEFORE_DISCONNECTED_METADATA_KEY, ON_AFTER_DISCONNECTED_METADATA_KEY, ON_BEFORE_ADOPTED_METADATA_KEY, ON_AFTER_ADOPTED_METADATA_KEY, ON_ADD_EVENT_LISTENER_METADATA_KEY, ATTRIBUTE_CHANGED_WILDCARD, findAllLifecycleMetadata } from './lifecycles';\nimport { getEmitCustomEventMetadataList } from './emitCustomEvent';\nimport { changedAttribute, findAllAttributeChangedMetadata } from './changedAttribute';\nimport { setAttribute, findAllSetAttributeMetadata } from './setAttribute';\nimport { SwcUtils } from '../utils/Utils';\nimport { HTML_TAG_ENTRIES, DOM_EVENT_NAMES } from '../config/config';\nimport { SituationType, SituationTypeContainer, SituationTypeContainers } from '@dooboostore/simple-boot/decorators/inject/Inject';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { Router } from '@dooboostore/core-web/routers/Router';\nimport { InjectSituationType, HostSet, SwcAppInterface } from '../types';\n\n// --- Core Interfaces & Types ---\n\nexport interface ElementConfig {\n name: string;\n extends?: string;\n observedAttributes?: string[];\n customElementRegistry?: CustomElementRegistry;\n window?: Window;\n}\n\nexport const ELEMENT_CONFIG_KEY = Symbol('simple-web-component:element-config');\n\n// Shared state for global delegation to prevent multiple listeners on the same root\nconst globalDelegatedRoots = new WeakSet<Node>();\n\n// --- Environment Initialization Helper ---\n\nfunction buildEnv(configWindow?: Window) {\n const win: any = configWindow || (typeof window !== 'undefined' ? window : undefined);\n const doc: Document = win?.document;\n\n const builtInTagMap = new Map<any, string>();\n for (const [cls, tag] of HTML_TAG_ENTRIES) {\n if (win?.[cls]) builtInTagMap.set(win[cls], tag);\n }\n\n const domHelpers = SwcUtils.getHelperSet(win);\n return { win, doc, builtInTagMap, domHelpers };\n}\n\nconst getHandlers = (inst: any) => {\n if (!inst.__swc_attributeEventHandlers) inst.__swc_attributeEventHandlers = new Map();\n return inst.__swc_attributeEventHandlers;\n};\n\nexport const elementDefine =\n (inConfig: ElementConfig | string): ClassDecorator =>\n (constructor: any) => {\n const config: ElementConfig = typeof inConfig === 'string' ? { name: inConfig } : inConfig;\n const { win, doc, builtInTagMap: BUILT_IN_TAG_MAP, domHelpers: SWC_DOM_HELPERS } = buildEnv(config.window);\n config.window = win;\n\n let extendsTagName = config.extends;\n if (!extendsTagName) {\n let proto = 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 config.extends = extendsTagName;\n }\n\n const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];\n const addEventListenerList = getAddEventListenerMetadata(constructor) || [];\n const attrChangeMap = findAllAttributeChangedMetadata(constructor);\n const setAttrMap = findAllSetAttributeMetadata(constructor);\n\n const swcLifecycleAttributes = ['swc-on-constructor', 'swc-on-connected', 'swc-on-disconnected', 'swc-on-before-connected', 'swc-on-after-connected', 'swc-on-before-disconnected', 'swc-on-after-disconnected', 'swc-on-before-adopted', 'swc-on-after-adopted', 'swc-on-attribute-changed'];\n const swcOnEvents = DOM_EVENT_NAMES.map(e => `swc-on-${e}`);\n\n const mergedObservedAttributes = [...new Set([...(config.observedAttributes ?? []), ...attrChangeMap.keys(), ...setAttrMap.keys(), ...emitCustomEventList.map(it => it.options.attributeName!), ...swcLifecycleAttributes, ...swcOnEvents])];\n const innerHtmlList = getInnerHtmlMetadataList(constructor) || [];\n\n const NewClass = class extends (constructor as any) {\n private _swcId = Math.random().toString(36).substring(2, 11);\n private _emitHandlers = new Map<string, EventListener>();\n private _boundListeners: Array<{ target: EventTarget; type: string; handler: EventListener; options?: any }> = [];\n\n private _executeSwcScript(attrName: string, hostSet: HostSet, extraArgs: Record<string, any> = {}) {\n const script = this.getAttribute(attrName);\n if (script) {\n try {\n const args = { ...hostSet, ...SWC_DOM_HELPERS, ...extraArgs };\n FunctionUtils.execute({ script, context: this, args });\n } catch (e) {\n console.error(`[SWC] Failed to execute ${attrName}:`, e);\n }\n }\n }\n\n private async _invokeLifecycleMethod(methodName: string | symbol, hostSet: HostSet, extraArgs: any[] = []) {\n if (typeof (this as any)[methodName] !== 'function') return;\n const app = hostSet.$appHost?.simpleApplication;\n\n if (app) {\n const otherStorage = new Map<any, any>();\n const situations = new SituationTypeContainers([new SituationTypeContainer({ situationType: InjectSituationType.HOST_SET, data: hostSet }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOST, data: hostSet.$appHost }), new SituationTypeContainer({ situationType: InjectSituationType.APP_HOSTS, data: hostSet.$appHosts }), new SituationTypeContainer({ situationType: InjectSituationType.HOST, data: hostSet.$host }), new SituationTypeContainer({ situationType: InjectSituationType.HOSTS, data: hostSet.$hosts }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_HOST, data: hostSet.$firstHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_HOST, data: hostSet.$lastHost }), new SituationTypeContainer({ situationType: InjectSituationType.FIRST_APP_HOST, data: hostSet.$firstAppHost }), new SituationTypeContainer({ situationType: InjectSituationType.LAST_APP_HOST, data: hostSet.$lastAppHost })]);\n otherStorage.set(SituationTypeContainers, situations);\n\n return app.simstanceManager.executeBindParameterSimPromise(\n {\n target: this,\n targetKey: methodName,\n inputParameters: extraArgs\n },\n otherStorage\n );\n } else {\n return (this as any)[methodName](...extraArgs);\n }\n }\n\n private _bindAttributeEvent(el: HTMLElement, attrName: string, script: string, eventName?: string) {\n if (!eventName) {\n if (!attrName.startsWith('swc-on-')) return;\n eventName = attrName.substring(7);\n }\n if (swcLifecycleAttributes.includes(attrName)) return;\n\n const elHandlers = getHandlers(this);\n let handlers = elHandlers.get(el);\n if (!handlers) {\n handlers = new Map();\n elHandlers.set(el, handlers);\n }\n\n const oldHandler = handlers.get(attrName);\n if (oldHandler) el.removeEventListener(eventName, oldHandler);\n\n const handler = (event: any) => {\n const hostSet = SwcUtils.getHostSet(el);\n const args = {\n event,\n $data: (event as CustomEvent).detail,\n ...hostSet,\n ...SWC_DOM_HELPERS\n };\n FunctionUtils.execute({ script, context: el, args });\n };\n\n el.addEventListener(eventName, handler);\n handlers.set(attrName, handler);\n }\n\n constructor(...args: any[]) {\n super(...args);\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-constructor', hostSet);\n\n if (innerHtmlList.some(it => it.options.useShadow === true) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n }\n\n static get observedAttributes() {\n return mergedObservedAttributes;\n }\n\n async connectedCallback() {\n const conf = getElementConfig(this);\n const currentWin = conf?.window || window;\n const currentDoc = currentWin.document;\n\n const hostSet = SwcUtils.getHostSet(this as any);\n\n this._executeSwcScript('swc-on-before-connected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_CONNECTED_METADATA_KEY);\n if (bMethods) {\n for (const m of bMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n if (typeof (this as any).initCore === 'function') (this as any).initCore();\n\n if (innerHtmlList.length > 0) {\n let sContent = '',\n lContent = '';\n for (const meta of innerHtmlList) {\n const res = await (this as any)[meta.propertyKey]();\n if (res !== undefined) {\n if (meta.options.useShadow) sContent += res;\n else lContent += res;\n }\n }\n if (this.shadowRoot) this.shadowRoot.innerHTML = sContent;\n if (lContent) this.innerHTML = lContent;\n }\n\n // --- Optimized Host Delegation ---\n const createDelegationHandler = (delegateHost: any) => (event: Event) => {\n if ((event as any).__swc_handled) return;\n\n const path = event.composedPath();\n const type = event.type;\n const attrName = `swc-on-${type}`;\n\n for (const node of path) {\n if (node === delegateHost) break;\n if (!(node instanceof HTMLElement)) continue;\n\n const script = node.getAttribute?.(attrName);\n if (script && !getElementConfig(node)) {\n const host = SwcUtils.findNearestSwcHost(node);\n if (host) {\n const childHostSet = SwcUtils.getHostSet(node);\n const args = {\n event,\n $data: (event as CustomEvent).detail,\n ...childHostSet,\n ...SWC_DOM_HELPERS\n };\n FunctionUtils.execute({ script, context: node, args });\n (event as any).__swc_handled = true;\n break;\n }\n }\n }\n };\n\n // 1. Local Delegation (To itself)\n DOM_EVENT_NAMES.forEach(type => {\n this.addEventListener(type, createDelegationHandler(this));\n this._boundListeners.push({ target: this as any, type, handler: createDelegationHandler(this) });\n });\n\n // 2. Structural/Global Delegation (If no parent host exists)\n const hasParentHost = SwcUtils.findAllSwcHosts(this as any).length > 0;\n if (!hasParentHost) {\n const root = this.getRootNode();\n if (!globalDelegatedRoots.has(root)) {\n DOM_EVENT_NAMES.forEach(type => {\n const handler = createDelegationHandler(root);\n root.addEventListener(type, handler);\n });\n globalDelegatedRoots.add(root);\n }\n }\n\n // --- @addEventListener binding (Direct/Delegate/Global) ---\n addEventListenerList.forEach(meta => {\n const { selector, type, options } = meta;\n const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate, removeOnDisconnected } = options;\n const opts = { capture, once, passive };\n\n const bindTargets: EventTarget[] = [];\n\n if (selector === ':window') {\n bindTargets.push(currentWin);\n } else if (selector === ':document') {\n bindTargets.push(currentDoc);\n } else if (selector === ':parentHost') {\n if (hostSet.$parentHost) bindTargets.push(hostSet.$parentHost);\n } else if (selector === ':appHost') {\n if (hostSet.$appHost) bindTargets.push(hostSet.$appHost);\n } else if (selector === ':firstHost') {\n if (hostSet.$firstHost) bindTargets.push(hostSet.$firstHost);\n } else if (selector === ':lastHost') {\n if (hostSet.$lastHost) bindTargets.push(hostSet.$lastHost);\n } else if (selector === ':firstAppHost') {\n if (hostSet.$firstAppHost) bindTargets.push(hostSet.$firstAppHost);\n } else if (selector === ':lastAppHost') {\n if (hostSet.$lastAppHost) bindTargets.push(hostSet.$lastAppHost);\n } else if (!selector || selector === ':host') {\n bindTargets.push(this as any);\n } else if (delegate) {\n const bindRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') bindRoots.push(this.shadowRoot || (this as any));\n else if (r === 'light') bindRoots.push(this as any);\n else if (r === 'shadow') {\n if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n bindRoots.push(this as any);\n if (this.shadowRoot) bindRoots.push(this.shadowRoot as any);\n }\n\n bindRoots.forEach(br => {\n const handler = (event: Event) => {\n const matchedEl = (event.target as HTMLElement).closest(selector);\n if (matchedEl && (br as any).contains(matchedEl)) {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl]);\n }\n };\n br.addEventListener(type, handler, opts);\n const self: any = this;\n if (removeOnDisconnected === true || (br !== self && br !== self.shadowRoot)) {\n this._boundListeners.push({ target: br, type, handler, options: opts });\n }\n });\n } else {\n const searchRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') searchRoots.push((this.shadowRoot || (this as any)) as any);\n else if (r === 'light') searchRoots.push(this as any);\n else if (r === 'shadow') {\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n } else if (r === 'all') {\n searchRoots.push(this as any);\n if (this.shadowRoot) searchRoots.push(this.shadowRoot as any);\n }\n\n searchRoots.forEach(sr => {\n sr.querySelectorAll(selector).forEach(el => bindTargets.push(el));\n });\n }\n\n bindTargets.forEach(target => {\n const handler = (event: Event) => {\n if (stopPropagation) event.stopPropagation();\n if (stopImmediatePropagation) event.stopImmediatePropagation();\n if (preventDefault) event.preventDefault();\n const currentHostSet = SwcUtils.getHostSet(this as any);\n this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet]);\n };\n target.addEventListener(type, handler, opts);\n if (removeOnDisconnected === true || target === currentWin || target === currentDoc) {\n this._boundListeners.push({ target, type, handler, options: opts });\n }\n });\n });\n\n if (super.connectedCallback) await super.connectedCallback();\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);\n if (aMethods) {\n for (const m of aMethods) await this._invokeLifecycleMethod(m, hostSet);\n }\n\n this._executeSwcScript('swc-on-connected', hostSet);\n this._executeSwcScript('swc-on-after-connected', hostSet);\n }\n\n disconnectedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-disconnected', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_DISCONNECTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n this._boundListeners.forEach(l => l.target.removeEventListener(l.type, l.handler, l.options));\n this._boundListeners = [];\n\n if (super.disconnectedCallback) super.disconnectedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_DISCONNECTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-disconnected', hostSet);\n this._executeSwcScript('swc-on-after-disconnected', hostSet);\n }\n\n adoptedCallback() {\n const hostSet = SwcUtils.getHostSet(this as any);\n this._executeSwcScript('swc-on-before-adopted', hostSet);\n const bMethods = findAllLifecycleMetadata(this, ON_BEFORE_ADOPTED_METADATA_KEY);\n if (bMethods) bMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n\n if (super.adoptedCallback) super.adoptedCallback();\n\n const aMethods = findAllLifecycleMetadata(this, ON_AFTER_ADOPTED_METADATA_KEY);\n if (aMethods) aMethods.forEach(m => this._invokeLifecycleMethod(m, hostSet));\n this._executeSwcScript('swc-on-adopted', hostSet);\n this._executeSwcScript('swc-on-after-adopted', hostSet);\n }\n\n attributeChangedCallback(name: string, old: string | null, newVal: string | null) {\n if (super.attributeChangedCallback) super.attributeChangedCallback(name, old, newVal);\n\n if (name.startsWith('swc-on-') && !swcLifecycleAttributes.includes(name)) {\n if (newVal !== null) {\n const customEventMeta = emitCustomEventList.find(it => it.options.attributeName === name);\n const eventName = customEventMeta ? customEventMeta.options.type : name.substring(7);\n this._bindAttributeEvent(this as any, name, newVal, eventName);\n }\n }\n\n const mKeys = attrChangeMap.get(name);\n if (mKeys && Array.isArray(mKeys)) {\n const hSet = SwcUtils.getHostSet(this as any);\n mKeys.forEach(key => this._invokeLifecycleMethod(key, hSet, [newVal, old, name]));\n }\n }\n };\n\n // --- @setAttribute wrapping logic ---\n setAttrMap.forEach((methodName, attrName) => {\n const original = NewClass.prototype[methodName as any];\n if (typeof original === 'function') {\n NewClass.prototype[methodName as any] = function (...args: any[]) {\n const res = original.apply(this, args);\n if (res !== undefined) {\n if (res === null) this.removeAttribute(attrName);\n else this.setAttribute(attrName, String(res));\n }\n return res;\n };\n }\n });\n\n // --- @emitCustomEvent wrapping logic ---\n emitCustomEventList.forEach(meta => {\n const { propertyKey, options } = meta;\n const original = NewClass.prototype[propertyKey as any];\n if (typeof original === 'function') {\n NewClass.prototype[propertyKey as any] = function (...args: any[]) {\n const detail = original.apply(this, args);\n const event = new CustomEvent(options.type, {\n detail,\n bubbles: options.bubbles,\n composed: options.composed,\n cancelable: options.cancelable\n });\n this.dispatchEvent(event);\n return detail;\n };\n }\n });\n\n const originalProto = constructor.prototype;\n const newProto = NewClass.prototype;\n Object.getOwnPropertyNames(originalProto).forEach(name => {\n if (name === 'constructor') return;\n const keys = Reflect.getMetadataKeys(originalProto, name);\n keys.forEach(key => Reflect.defineMetadata(key, Reflect.getMetadata(key, originalProto, name), newProto, name));\n });\n\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, NewClass);\n ReflectUtils.defineMetadata(ELEMENT_CONFIG_KEY, config, constructor);\n const registry = config.customElementRegistry || (win as any)?.customElements;\n if (registry && !registry.get(config.name)) {\n registry.define(config.name, NewClass as any, config.extends ? { extends: config.extends } : undefined);\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
7
  }
@@ -25,11 +25,11 @@ module.exports = __toCommonJS(emitCustomEvent_exports);
25
25
  var import_ReflectUtils = require("@dooboostore/core/reflect/ReflectUtils");
26
26
  const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol("simple-web-component:emit-custom-event");
27
27
  function emitCustomEvent(typeOrOptions) {
28
- return (target, propertyKey, descriptor) => {
28
+ return (target, propertyKey) => {
29
29
  const constructor = target.constructor;
30
30
  const options = typeof typeOrOptions === "string" ? { type: typeOrOptions } : typeOrOptions;
31
31
  if (!options.attributeName) {
32
- options.attributeName = `on${options.type}`;
32
+ options.attributeName = `swc-on-${options.type}`;
33
33
  }
34
34
  if (options.bubbles === void 0) options.bubbles = true;
35
35
  if (options.composed === void 0) options.composed = true;
@@ -39,18 +39,6 @@ function emitCustomEvent(typeOrOptions) {
39
39
  import_ReflectUtils.ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);
40
40
  }
41
41
  list.push({ propertyKey, options });
42
- const originalMethod = descriptor.value;
43
- descriptor.value = function(...args) {
44
- const detail = originalMethod.apply(this, args);
45
- const event = new CustomEvent(options.type, {
46
- detail,
47
- bubbles: options.bubbles,
48
- composed: options.composed,
49
- cancelable: options.cancelable
50
- });
51
- this.dispatchEvent(event);
52
- return detail;
53
- };
54
42
  };
55
43
  }
56
44
  const getEmitCustomEventMetadataList = (target) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/emitCustomEvent.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface EmitCustomEventOptions {\n type: string;\n attributeName?: string; // Default: on + type\n bubbles?: boolean; // Default: true\n composed?: boolean; // Default: true\n cancelable?: boolean;\n}\n\nexport interface EmitCustomEventMetadata {\n propertyKey: string | symbol;\n options: EmitCustomEventOptions;\n}\n\nexport const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol('simple-web-component:emit-custom-event');\n\nexport function emitCustomEvent(typeOrOptions: string | EmitCustomEventOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n const options: EmitCustomEventOptions = typeof typeOrOptions === 'string' ? { type: typeOrOptions } : typeOrOptions;\n\n if (!options.attributeName) {\n options.attributeName = `on${options.type}`;\n }\n if (options.bubbles === undefined) options.bubbles = true;\n if (options.composed === undefined) options.composed = true;\n\n let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n\n // Wrap the original method to dispatch event after execution\n const originalMethod = descriptor.value;\n descriptor.value = function (this: HTMLElement, ...args: any[]) {\n const detail = originalMethod.apply(this, args);\n\n const event = new CustomEvent(options.type, {\n detail,\n bubbles: options.bubbles,\n composed: options.composed,\n cancelable: options.cancelable\n });\n\n this.dispatchEvent(event);\n return detail;\n };\n };\n}\n\nexport const getEmitCustomEventMetadataList = (target: any): EmitCustomEventMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAetB,MAAM,iCAAiC,OAAO,wCAAwC;AAEtF,SAAS,gBAAgB,eAAiE;AAC/F,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACvF,UAAM,cAAc,OAAO;AAC3B,UAAM,UAAkC,OAAO,kBAAkB,WAAW,EAAE,MAAM,cAAc,IAAI;AAEtG,QAAI,CAAC,QAAQ,eAAe;AAC1B,cAAQ,gBAAgB,KAAK,QAAQ,IAAI;AAAA,IAC3C;AACA,QAAI,QAAQ,YAAY,OAAW,SAAQ,UAAU;AACrD,QAAI,QAAQ,aAAa,OAAW,SAAQ,WAAW;AAEvD,QAAI,OAAO,iCAAa,YAAuC,gCAAgC,WAAW;AAC1G,QAAI,CAAC,MAAM;AACT,aAAO,CAAC;AACR,uCAAa,eAAe,gCAAgC,MAAM,WAAW;AAAA,IAC/E;AACA,SAAK,KAAK,EAAE,aAAa,QAAQ,CAAC;AAGlC,UAAM,iBAAiB,WAAW;AAClC,eAAW,QAAQ,YAAgC,MAAa;AAC9D,YAAM,SAAS,eAAe,MAAM,MAAM,IAAI;AAE9C,YAAM,QAAQ,IAAI,YAAY,QAAQ,MAAM;AAAA,QAC1C;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ;AAAA,QAClB,YAAY,QAAQ;AAAA,MACtB,CAAC;AAED,WAAK,cAAc,KAAK;AACxB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,iCAAiC,CAAC,WAAuD;AACpG,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,gCAAgC,WAAW;AAC7E;",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface EmitCustomEventOptions {\n type: string;\n attributeName?: string;\n bubbles?: boolean;\n composed?: boolean;\n cancelable?: boolean;\n}\n\nexport interface EmitCustomEventMetadata {\n propertyKey: string | symbol;\n options: EmitCustomEventOptions;\n}\n\nexport const EMIT_CUSTOM_EVENT_METADATA_KEY = Symbol('simple-web-component:emit-custom-event');\n\nexport function emitCustomEvent(typeOrOptions: string | EmitCustomEventOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n const options: EmitCustomEventOptions = typeof typeOrOptions === 'string' ? { type: typeOrOptions } : typeOrOptions;\n\n if (!options.attributeName) {\n options.attributeName = `swc-on-${options.type}`;\n }\n if (options.bubbles === undefined) options.bubbles = true;\n if (options.composed === undefined) options.composed = true;\n\n let list = ReflectUtils.getMetadata<EmitCustomEventMetadata[]>(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, options });\n };\n}\n\nexport const getEmitCustomEventMetadataList = (target: any): EmitCustomEventMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAetB,MAAM,iCAAiC,OAAO,wCAAwC;AAEtF,SAAS,gBAAgB,eAAiE;AAC/F,SAAO,CAAC,QAAgB,gBAAiC;AACvD,UAAM,cAAc,OAAO;AAC3B,UAAM,UAAkC,OAAO,kBAAkB,WAAW,EAAE,MAAM,cAAc,IAAI;AAEtG,QAAI,CAAC,QAAQ,eAAe;AAC1B,cAAQ,gBAAgB,UAAU,QAAQ,IAAI;AAAA,IAChD;AACA,QAAI,QAAQ,YAAY,OAAW,SAAQ,UAAU;AACrD,QAAI,QAAQ,aAAa,OAAW,SAAQ,WAAW;AAEvD,QAAI,OAAO,iCAAa,YAAuC,gCAAgC,WAAW;AAC1G,QAAI,CAAC,MAAM;AACT,aAAO,CAAC;AACR,uCAAa,eAAe,gCAAgC,MAAM,WAAW;AAAA,IAC/E;AACA,SAAK,KAAK,EAAE,aAAa,QAAQ,CAAC;AAAA,EACpC;AACF;AAEO,MAAM,iCAAiC,CAAC,WAAuD;AACpG,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,gCAAgC,WAAW;AAC7E;",
6
6
  "names": []
7
7
  }
@@ -23,49 +23,60 @@ __export(query_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(query_exports);
25
25
  var import_ReflectUtils = require("@dooboostore/core/reflect/ReflectUtils");
26
+ var import_elementDefine = require("./elementDefine");
27
+ var import_Utils = require("../utils/Utils");
26
28
  const QUERY_METADATA_KEY = Symbol("simple-web-component:query");
27
- function query(arg1, arg2) {
28
- const decorator = (selector, options, target, propertyKey, descriptor) => {
29
- const isMethod = !!descriptor;
29
+ function query(selector, options = {}) {
30
+ return (target, propertyKey, descriptor) => {
31
+ if (descriptor !== void 0) {
32
+ throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);
33
+ }
30
34
  const constructor = target.constructor;
31
35
  let queries = import_ReflectUtils.ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
32
36
  if (!queries) {
33
37
  queries = [];
34
38
  import_ReflectUtils.ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);
35
39
  }
36
- queries.push({ selector, options, propertyKey, isMethod });
37
- if (!isMethod) {
38
- Object.defineProperty(target, propertyKey, {
39
- get() {
40
- if (!selector)
41
- return this;
42
- let searchRoot = this;
43
- if (options.root === "shadow")
44
- searchRoot = this.shadowRoot || this;
45
- else if (options.root === "light")
46
- searchRoot = this;
47
- else
48
- searchRoot = this.shadowRoot || this;
49
- return searchRoot.querySelector(selector);
50
- },
51
- enumerable: true,
52
- configurable: true
53
- });
54
- }
55
- };
56
- if (arg1 && typeof arg2 === "string") {
57
- return decorator("", {}, arg1, arg2);
58
- }
59
- return (target, propertyKey, descriptor) => {
60
- let selector = "";
61
- let options = {};
62
- if (typeof arg1 === "string") {
63
- selector = arg1;
64
- } else if (typeof arg1 === "object") {
65
- options = arg1;
66
- selector = options.selector || "";
67
- }
68
- decorator(selector, options, target, propertyKey, descriptor);
40
+ queries.push({ selector, options, propertyKey });
41
+ Object.defineProperty(target, propertyKey, {
42
+ get() {
43
+ const hostSet = import_Utils.SwcUtils.getHostSet(this);
44
+ if (selector === ":parentHost")
45
+ return hostSet.$parentHost;
46
+ if (selector === ":appHost")
47
+ return hostSet.$appHost;
48
+ if (selector === ":firstHost")
49
+ return hostSet.$firstHost;
50
+ if (selector === ":lastHost")
51
+ return hostSet.$lastHost;
52
+ if (selector === ":firstAppHost")
53
+ return hostSet.$firstAppHost;
54
+ if (selector === ":lastAppHost")
55
+ return hostSet.$lastAppHost;
56
+ const config = (0, import_elementDefine.getElementConfig)(this);
57
+ const win = config?.window || window;
58
+ const doc = win.document;
59
+ if (selector === ":window")
60
+ return win;
61
+ if (selector === ":document")
62
+ return doc;
63
+ if (!selector || selector === ":host")
64
+ return this;
65
+ const r = options.root || "auto";
66
+ if (r === "shadow") {
67
+ return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;
68
+ }
69
+ if (r === "light") {
70
+ return this.querySelector(selector);
71
+ }
72
+ if (r === "all") {
73
+ return this.shadowRoot?.querySelector(selector) || this.querySelector(selector);
74
+ }
75
+ return (this.shadowRoot || this).querySelector(selector);
76
+ },
77
+ enumerable: true,
78
+ configurable: true
79
+ });
69
80
  };
70
81
  }
71
82
  const getQueryMetadata = (target) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/query.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface QueryOptions {\n selector?: string;\n root?: 'light' | 'shadow' | 'all' | 'auto';\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 function query(selector: string): any;\nexport function query(options: QueryOptions): any;\nexport function query(target: Object, propertyKey: string | symbol): void;\nexport function query(arg1?: string | QueryOptions | Object, arg2?: string | symbol): any {\n const decorator = (selector: string, options: QueryOptions, target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const isMethod = !!descriptor;\n const constructor = target.constructor;\n\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 Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n if (!selector) return this;\n let searchRoot: Node = this;\n if (options.root === 'shadow') searchRoot = this.shadowRoot || this;\n else if (options.root === 'light') searchRoot = this;\n else searchRoot = this.shadowRoot || this; // Default: Auto (Shadow-First)\n\n return (searchRoot as HTMLElement).querySelector(selector);\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n\n // Case: @query (parameterless decorator)\n if (arg1 && typeof arg2 === 'string') {\n return decorator('', {}, arg1 as Object, arg2 as string | symbol);\n }\n\n // Case: @query('selector') or @query({ selector: '...', ... })\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n let selector = '';\n let options: QueryOptions = {};\n\n if (typeof arg1 === 'string') {\n selector = arg1;\n } else if (typeof arg1 === 'object') {\n options = arg1 as QueryOptions;\n selector = options.selector || '';\n }\n\n decorator(selector, options, target, propertyKey, descriptor);\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;;;;;;;0BAA6B;AActB,MAAM,qBAAqB,OAAO,4BAA4B;AAK/D,SAAU,MAAM,MAAuC,MAAsB;AACjF,QAAM,YAAY,CAAC,UAAkB,SAAuB,QAAgB,aAA8B,eAAmC;AAC3I,UAAM,WAAW,CAAC,CAAC;AACnB,UAAM,cAAc,OAAO;AAE3B,QAAI,UAAU,iCAAa,YAA6B,oBAAoB,WAAW;AACvF,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAA;AACV,uCAAa,eAAe,oBAAoB,SAAS,WAAW;IACtE;AACA,YAAQ,KAAK,EAAE,UAAU,SAAS,aAAa,SAAQ,CAAE;AAEzD,QAAI,CAAC,UAAU;AACb,aAAO,eAAe,QAAQ,aAAa;QACzC,MAAG;AACD,cAAI,CAAC;AAAU,mBAAO;AACtB,cAAI,aAAmB;AACvB,cAAI,QAAQ,SAAS;AAAU,yBAAa,KAAK,cAAc;mBACtD,QAAQ,SAAS;AAAS,yBAAa;;AAC3C,yBAAa,KAAK,cAAc;AAErC,iBAAQ,WAA2B,cAAc,QAAQ;QAC3D;QACA,YAAY;QACZ,cAAc;OACf;IACH;EACF;AAGA,MAAI,QAAQ,OAAO,SAAS,UAAU;AACpC,WAAO,UAAU,IAAI,CAAA,GAAI,MAAgB,IAAuB;EAClE;AAGA,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACvF,QAAI,WAAW;AACf,QAAI,UAAwB,CAAA;AAE5B,QAAI,OAAO,SAAS,UAAU;AAC5B,iBAAW;IACb,WAAW,OAAO,SAAS,UAAU;AACnC,gBAAU;AACV,iBAAW,QAAQ,YAAY;IACjC;AAEA,cAAU,UAAU,SAAS,QAAQ,aAAa,UAAU;EAC9D;AACF;AAEO,MAAM,mBAAmB,CAAC,WAA4C;AAC3E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,oBAAoB,WAAW;AACjE;",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\n\nexport interface QueryOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n}\n\nexport interface QueryMetadata {\n selector: string;\n options: QueryOptions;\n propertyKey: string | symbol;\n}\n\nexport const QUERY_METADATA_KEY = Symbol('simple-web-component:query');\n\n/**\n * @query decorator to inject a single element into a class property.\n */\nexport function query(selector: string, options: QueryOptions = {}): PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = target.constructor;\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 });\n\n Object.defineProperty(target, propertyKey, {\n get(this: HTMLElement) {\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':parentHost') return hostSet.$parentHost;\n if (selector === ':appHost') return hostSet.$appHost;\n if (selector === ':firstHost') return hostSet.$firstHost;\n if (selector === ':lastHost') return hostSet.$lastHost;\n if (selector === ':firstAppHost') return hostSet.$firstAppHost;\n if (selector === ':lastAppHost') return hostSet.$lastAppHost;\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n const doc = win.document;\n\n if (selector === ':window') return win;\n if (selector === ':document') return doc;\n if (!selector || selector === ':host') return this;\n\n // --- Standard Selectors ---\n const r = options.root || 'auto';\n\n if (r === 'shadow') {\n return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n }\n if (r === 'light') {\n return this.querySelector(selector);\n }\n if (r === 'all') {\n return this.shadowRoot?.querySelector(selector) || this.querySelector(selector);\n }\n // auto\n return (this.shadowRoot || this).querySelector(selector);\n },\n enumerable: true,\n configurable: true\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;;;;;;;0BAA6B;AAC7B,2BAAiC;AACjC,mBAAyB;AAYlB,MAAM,qBAAqB,OAAO,4BAA4B;AAK/D,SAAU,MAAM,UAAkB,UAAwB,CAAA,GAAE;AAChE,SAAO,CAAC,QAAgB,aAA8B,eAA4B;AAChF,QAAI,eAAe,QAAW;AAC5B,YAAM,IAAI,MAAM,wDAAwD,OAAO,WAAW,CAAC,GAAG;IAChG;AAEA,UAAM,cAAc,OAAO;AAC3B,QAAI,UAAU,iCAAa,YAA6B,oBAAoB,WAAW;AACvF,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAA;AACV,uCAAa,eAAe,oBAAoB,SAAS,WAAW;IACtE;AACA,YAAQ,KAAK,EAAE,UAAU,SAAS,YAAW,CAAE;AAE/C,WAAO,eAAe,QAAQ,aAAa;MACzC,MAAG;AAED,cAAM,UAAU,sBAAS,WAAW,IAAI;AACxC,YAAI,aAAa;AAAe,iBAAO,QAAQ;AAC/C,YAAI,aAAa;AAAY,iBAAO,QAAQ;AAC5C,YAAI,aAAa;AAAc,iBAAO,QAAQ;AAC9C,YAAI,aAAa;AAAa,iBAAO,QAAQ;AAC7C,YAAI,aAAa;AAAiB,iBAAO,QAAQ;AACjD,YAAI,aAAa;AAAgB,iBAAO,QAAQ;AAGhD,cAAM,aAAS,uCAAiB,IAAI;AACpC,cAAM,MAAM,QAAQ,UAAU;AAC9B,cAAM,MAAM,IAAI;AAEhB,YAAI,aAAa;AAAW,iBAAO;AACnC,YAAI,aAAa;AAAa,iBAAO;AACrC,YAAI,CAAC,YAAY,aAAa;AAAS,iBAAO;AAG9C,cAAM,IAAI,QAAQ,QAAQ;AAE1B,YAAI,MAAM,UAAU;AAClB,iBAAO,KAAK,aAAa,KAAK,WAAW,cAAc,QAAQ,IAAI;QACrE;AACA,YAAI,MAAM,SAAS;AACjB,iBAAO,KAAK,cAAc,QAAQ;QACpC;AACA,YAAI,MAAM,OAAO;AACf,iBAAO,KAAK,YAAY,cAAc,QAAQ,KAAK,KAAK,cAAc,QAAQ;QAChF;AAEA,gBAAQ,KAAK,cAAc,MAAM,cAAc,QAAQ;MACzD;MACA,YAAY;MACZ,cAAc;KACf;EACH;AACF;AAEO,MAAM,mBAAmB,CAAC,WAA4C;AAC3E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,oBAAoB,WAAW;AACjE;",
6
6
  "names": []
7
7
  }