@dooboostore/simple-web-component 1.0.16 → 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.
- package/README.md +93 -0
- package/dist/cjs/decorators/addEventListener.js.map +2 -2
- package/dist/cjs/decorators/elementDefine.js +133 -62
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/query.js +22 -0
- package/dist/cjs/decorators/query.js.map +2 -2
- package/dist/cjs/decorators/queryAll.js +14 -0
- package/dist/cjs/decorators/queryAll.js.map +2 -2
- package/dist/cjs/elements/SwcAppEngine.js +2 -1
- package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
- package/dist/cjs/elements/SwcAsync.js +188 -0
- package/dist/cjs/elements/SwcAsync.js.map +7 -0
- package/dist/cjs/elements/SwcChoose.js +155 -0
- package/dist/cjs/elements/SwcChoose.js.map +7 -0
- package/dist/cjs/elements/SwcIf.js +167 -0
- package/dist/cjs/elements/SwcIf.js.map +7 -0
- package/dist/cjs/elements/SwcLoop.js +246 -0
- package/dist/cjs/elements/SwcLoop.js.map +7 -0
- package/dist/cjs/elements/SwcSubTemplates.js +65 -0
- package/dist/cjs/elements/SwcSubTemplates.js.map +7 -0
- package/dist/cjs/elements/index.js +7 -0
- package/dist/cjs/elements/index.js.map +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/Utils.js +74 -37
- package/dist/cjs/utils/Utils.js.map +3 -3
- package/dist/esm/decorators/addEventListener.js.map +2 -2
- package/dist/esm/decorators/elementDefine.js +133 -62
- package/dist/esm/decorators/elementDefine.js.map +3 -3
- package/dist/esm/decorators/query.js +22 -0
- package/dist/esm/decorators/query.js.map +2 -2
- package/dist/esm/decorators/queryAll.js +14 -0
- package/dist/esm/decorators/queryAll.js.map +2 -2
- package/dist/esm/elements/SwcAppEngine.js +2 -1
- package/dist/esm/elements/SwcAppEngine.js.map +2 -2
- package/dist/esm/elements/SwcAsync.js +169 -0
- package/dist/esm/elements/SwcAsync.js.map +7 -0
- package/dist/esm/elements/SwcChoose.js +136 -0
- package/dist/esm/elements/SwcChoose.js.map +7 -0
- package/dist/esm/elements/SwcIf.js +148 -0
- package/dist/esm/elements/SwcIf.js.map +7 -0
- package/dist/esm/elements/SwcLoop.js +227 -0
- package/dist/esm/elements/SwcLoop.js.map +7 -0
- package/dist/esm/elements/SwcSubTemplates.js +46 -0
- package/dist/esm/elements/SwcSubTemplates.js.map +7 -0
- package/dist/esm/elements/index.js +7 -0
- package/dist/esm/elements/index.js.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/Utils.js +74 -37
- package/dist/esm/utils/Utils.js.map +3 -3
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1047 -140
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/decorators/addEventListener.d.ts +1 -0
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/decorators/query.d.ts +0 -2
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/queryAll.d.ts +0 -2
- package/dist/types/decorators/queryAll.d.ts.map +1 -1
- package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
- package/dist/types/elements/SwcAsync.d.ts +16 -0
- package/dist/types/elements/SwcAsync.d.ts.map +1 -0
- package/dist/types/elements/SwcChoose.d.ts +13 -0
- package/dist/types/elements/SwcChoose.d.ts.map +1 -0
- package/dist/types/elements/SwcIf.d.ts +15 -0
- package/dist/types/elements/SwcIf.d.ts.map +1 -0
- package/dist/types/elements/SwcLoop.d.ts +20 -0
- package/dist/types/elements/SwcLoop.d.ts.map +1 -0
- package/dist/types/elements/SwcSubTemplates.d.ts +13 -0
- package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -0
- package/dist/types/elements/index.d.ts +7 -0
- package/dist/types/elements/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +8 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/Utils.d.ts +16 -10
- package/dist/types/utils/Utils.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1047 -140
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +10 -3
- package/src/decorators/addEventListener.ts +1 -0
- package/src/decorators/elementDefine.ts +137 -66
- package/src/decorators/query.ts +20 -2
- package/src/decorators/queryAll.ts +16 -2
- package/src/elements/SwcAppEngine.ts +2 -1
- package/src/elements/SwcAsync.ts +163 -0
- package/src/elements/SwcChoose.ts +127 -0
- package/src/elements/SwcIf.ts +134 -0
- package/src/elements/SwcLoop.ts +215 -0
- package/src/elements/SwcSubTemplates.ts +19 -0
- package/src/elements/index.ts +8 -3
- package/src/index.ts +1 -1
- package/src/types.ts +9 -1
- package/src/utils/Utils.ts +86 -36
package/README.md
CHANGED
|
@@ -278,5 +278,98 @@ Executed in **Parent -> Child** order.
|
|
|
278
278
|
|
|
279
279
|
---
|
|
280
280
|
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 🔄 Structural Directives (Advanced)
|
|
284
|
+
|
|
285
|
+
SWC provides 4 core templates that empower your HTML without wrapper elements: `swc-loop`, `swc-if`, `swc-choose`, and `swc-async`. They all share a consistent, high-performance API.
|
|
286
|
+
|
|
287
|
+
### Common Attributes:
|
|
288
|
+
- **`on-get-value`**: Script to fetch data (supports return-less expressions).
|
|
289
|
+
- **`on-clone-nodes`**: Callback after a group of nodes is cloned (Args: `$index`, `$item`, `$nodes`, `$elements`, `$firstElement`, `$state`).
|
|
290
|
+
- **`on-clone-node`**: Callback for each individual node (Args: `$node`, `$nodeIndex`, and all group args).
|
|
291
|
+
- **`on-get-portal`**: Script that returns an `Element` or selector string to render content in a different part of the DOM.
|
|
292
|
+
|
|
293
|
+
### 1. `swc-if` (Conditional Rendering)
|
|
294
|
+
Renders content only when the condition is truthy. Supports a fallback `swc-default` state.
|
|
295
|
+
```html
|
|
296
|
+
<template is="swc-if" on-get-value="isAdmin">
|
|
297
|
+
<template is="swc-default"><p>Please login as admin.</p></template>
|
|
298
|
+
<div class="admin-panel">Welcome, Master!</div>
|
|
299
|
+
</template>
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 2. `swc-loop` (High-Performance Iteration)
|
|
303
|
+
Efficiently renders lists with surgical updates and index preservation.
|
|
304
|
+
```html
|
|
305
|
+
<template is="swc-loop" on-get-value="users"
|
|
306
|
+
on-clone-node="if($isElement) $node.querySelector('.name').textContent = $item.name">
|
|
307
|
+
<template is="swc-default"><p>No users found.</p></template>
|
|
308
|
+
<div class="user-row"><span class="name"></span></div>
|
|
309
|
+
</template>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 3. `swc-choose` (Switch-Case Logic)
|
|
313
|
+
Selects the first matching `swc-when` or falls back to `swc-otherwise`.
|
|
314
|
+
```html
|
|
315
|
+
<template is="swc-choose" on-get-value="user.role">
|
|
316
|
+
<template is="swc-default">Please select a role.</template>
|
|
317
|
+
<template is="swc-when" value="admin">Admin Dashboard</template>
|
|
318
|
+
<template is="swc-when" value="user">User Home</template>
|
|
319
|
+
<template is="swc-otherwise">Access Denied</template>
|
|
320
|
+
</template>
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### 4. `swc-async` (Declarative Promises)
|
|
324
|
+
Handles Promise states (Loading, Error, Success) without manual state management.
|
|
325
|
+
```html
|
|
326
|
+
<template is="swc-async" on-get-value="fetchData()">
|
|
327
|
+
<template is="swc-loading">🌀 Loading...</template>
|
|
328
|
+
<template is="swc-error">❌ Error: {{$error.message}}</template>
|
|
329
|
+
<template is="swc-success">✅ Data: {{$value.title}}</template>
|
|
330
|
+
</template>
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Advanced: Integrated Portal Support
|
|
334
|
+
All directives above support the **`on-get-portal`** attribute to render content elsewhere.
|
|
335
|
+
```html
|
|
336
|
+
<template is="swc-if" on-get-value="showModal" on-get-portal="'body'">
|
|
337
|
+
<div class="modal-overlay">I am rendered at the end of <body>!</div>
|
|
338
|
+
</template>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## ⚡ Integrated Event & Query Selectors
|
|
344
|
+
|
|
345
|
+
Both `@addEventListener` and `@query` support special selectors to navigate the environment and component hierarchy seamlessly.
|
|
346
|
+
|
|
347
|
+
| Selector | Target Description |
|
|
348
|
+
|---|---|
|
|
349
|
+
| `:host` | The component itself (default for empty selector). |
|
|
350
|
+
| `:parentHost` | The immediate parent SWC component. |
|
|
351
|
+
| `:appHost` | The nearest parent `<swc-app>` instance. |
|
|
352
|
+
| `:window` | The environment-aware global `window` object. |
|
|
353
|
+
| `:document` | The environment-aware global `document` object. |
|
|
354
|
+
| `:hosts` | Array of all SWC ancestors (Root -> Self). |
|
|
355
|
+
|
|
356
|
+
### Global Event Example
|
|
357
|
+
```typescript
|
|
358
|
+
@elementDefine('auto-cleanup-demo')
|
|
359
|
+
class CleanupDemo extends HTMLElement {
|
|
360
|
+
// Automatically attaches to window and REMOVES on disconnectedCallback
|
|
361
|
+
@addEventListener(':window', 'resize', { removeOnDisconnected: true })
|
|
362
|
+
onResize(event: UIEvent) {
|
|
363
|
+
console.log('Window resized!', this.id);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## ⚡ Performance Features
|
|
369
|
+
- **Smart Delegation**: Host-level delegation with `__swc_handled` duplicate protection.
|
|
370
|
+
- **Index-Preserving Removal**: `SwcLoop` maintains stable indices during item removal for maximum UI consistency.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
281
374
|
## 📜 License
|
|
282
375
|
MIT
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/decorators/addEventListener.ts"],
|
|
4
|
-
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n delegate?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n selector: string;\n type: string;\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\n/**\n * @addEventListener decorator to bind events to elements.\n * Usage: @addEventListener('.btn', 'click') onClick() { ... }\n * Usage: @addEventListener('', 'scroll', { passive: true }) onScroll() { ... }\n */\nexport function addEventListener(selector: string, type: string, 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({ selector, type, 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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n root?: 'light' | 'shadow' | 'all' | 'auto';\n capture?: boolean;\n once?: boolean;\n passive?: boolean;\n stopPropagation?: boolean;\n stopImmediatePropagation?: boolean;\n preventDefault?: boolean;\n delegate?: boolean;\n removeOnDisconnected?: boolean;\n}\n\nexport interface AddEventListenerMetadata {\n selector: string;\n type: string;\n options: AddEventListenerOptions;\n propertyKey: string | symbol;\n}\n\nexport const ADD_EVENT_LISTENER_METADATA_KEY = Symbol('simple-web-component:add-event-listener');\n\n/**\n * @addEventListener decorator to bind events to elements.\n * Usage: @addEventListener('.btn', 'click') onClick() { ... }\n * Usage: @addEventListener('', 'scroll', { passive: true }) onScroll() { ... }\n */\nexport function addEventListener(selector: string, type: string, 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({ selector, type, 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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA6B;AAqBtB,MAAM,kCAAkC,OAAO,yCAAyC;AAOxF,SAAS,iBAAiB,UAAkB,MAAc,UAAmC,CAAC,GAAoB;AACvH,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACvF,UAAM,cAAc,OAAO;AAE3B,QAAI,YAAY,iCAAa,YAAwC,iCAAiC,WAAW;AACjH,QAAI,CAAC,WAAW;AACd,kBAAY,CAAC;AACb,uCAAa,eAAe,iCAAiC,WAAW,WAAW;AAAA,IACrF;AACA,cAAU,KAAK,EAAE,UAAU,MAAM,SAAS,YAAY,CAAC;AAAA,EACzD;AACF;AAEO,MAAM,8BAA8B,CAAC,WAAwD;AAClG,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,iCAAa,YAAY,iCAAiC,WAAW;AAC9E;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -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
|
-
|
|
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
|
}
|
|
@@ -131,9 +123,13 @@ const elementDefine = (inConfig) => (constructor) => {
|
|
|
131
123
|
el.removeEventListener(eventName, oldHandler);
|
|
132
124
|
const handler = (event) => {
|
|
133
125
|
const hostSet = import_Utils.SwcUtils.getHostSet(el);
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
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 });
|
|
137
133
|
};
|
|
138
134
|
el.addEventListener(eventName, handler);
|
|
139
135
|
handlers.set(attrName, handler);
|
|
@@ -142,6 +138,7 @@ const elementDefine = (inConfig) => (constructor) => {
|
|
|
142
138
|
super(...args);
|
|
143
139
|
this._swcId = Math.random().toString(36).substring(2, 11);
|
|
144
140
|
this._emitHandlers = /* @__PURE__ */ new Map();
|
|
141
|
+
this._boundListeners = [];
|
|
145
142
|
const hostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
146
143
|
this._executeSwcScript("swc-on-constructor", hostSet);
|
|
147
144
|
if (innerHtmlList.some((it) => it.options.useShadow === true) && !this.shadowRoot) {
|
|
@@ -152,6 +149,9 @@ const elementDefine = (inConfig) => (constructor) => {
|
|
|
152
149
|
return mergedObservedAttributes;
|
|
153
150
|
}
|
|
154
151
|
async connectedCallback() {
|
|
152
|
+
const conf = getElementConfig(this);
|
|
153
|
+
const currentWin = conf?.window || window;
|
|
154
|
+
const currentDoc = currentWin.document;
|
|
155
155
|
const hostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
156
156
|
this._executeSwcScript("swc-on-before-connected", hostSet);
|
|
157
157
|
const bMethods = (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_BEFORE_CONNECTED_METADATA_KEY);
|
|
@@ -177,17 +177,87 @@ const elementDefine = (inConfig) => (constructor) => {
|
|
|
177
177
|
if (lContent)
|
|
178
178
|
this.innerHTML = lContent;
|
|
179
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
|
+
}
|
|
180
224
|
addEventListenerList.forEach((meta) => {
|
|
181
225
|
const { selector, type, options } = meta;
|
|
182
|
-
const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate } = options;
|
|
183
|
-
|
|
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) {
|
|
184
254
|
const bindRoots = [];
|
|
185
255
|
const r = root || "auto";
|
|
186
|
-
if (r === "auto")
|
|
256
|
+
if (r === "auto")
|
|
187
257
|
bindRoots.push(this.shadowRoot || this);
|
|
188
|
-
|
|
258
|
+
else if (r === "light")
|
|
189
259
|
bindRoots.push(this);
|
|
190
|
-
|
|
260
|
+
else if (r === "shadow") {
|
|
191
261
|
if (this.shadowRoot)
|
|
192
262
|
bindRoots.push(this.shadowRoot);
|
|
193
263
|
} else if (r === "all") {
|
|
@@ -195,62 +265,61 @@ const elementDefine = (inConfig) => (constructor) => {
|
|
|
195
265
|
if (this.shadowRoot)
|
|
196
266
|
bindRoots.push(this.shadowRoot);
|
|
197
267
|
}
|
|
198
|
-
bindRoots.forEach((
|
|
268
|
+
bindRoots.forEach((br) => {
|
|
199
269
|
const handler = (event) => {
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
if (matchedEl && bindRoot.contains(matchedEl)) {
|
|
270
|
+
const matchedEl = event.target.closest(selector);
|
|
271
|
+
if (matchedEl && br.contains(matchedEl)) {
|
|
203
272
|
if (stopPropagation)
|
|
204
273
|
event.stopPropagation();
|
|
205
274
|
if (stopImmediatePropagation)
|
|
206
275
|
event.stopImmediatePropagation();
|
|
207
276
|
if (preventDefault)
|
|
208
277
|
event.preventDefault();
|
|
209
|
-
const
|
|
210
|
-
this._invokeLifecycleMethod(meta.propertyKey,
|
|
278
|
+
const currentHostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
279
|
+
this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl]);
|
|
211
280
|
}
|
|
212
281
|
};
|
|
213
|
-
|
|
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
|
+
}
|
|
214
287
|
});
|
|
215
288
|
} else {
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
} else if (r === "all") {
|
|
230
|
-
searchRoots.push(this);
|
|
231
|
-
if (this.shadowRoot)
|
|
232
|
-
searchRoots.push(this.shadowRoot);
|
|
233
|
-
}
|
|
234
|
-
searchRoots.forEach((sr) => {
|
|
235
|
-
const found = sr.querySelectorAll(selector);
|
|
236
|
-
found.forEach((el) => targetEls.push(el));
|
|
237
|
-
});
|
|
289
|
+
const searchRoots = [];
|
|
290
|
+
const r = root || "auto";
|
|
291
|
+
if (r === "auto")
|
|
292
|
+
searchRoots.push(this.shadowRoot || this);
|
|
293
|
+
else if (r === "light")
|
|
294
|
+
searchRoots.push(this);
|
|
295
|
+
else if (r === "shadow") {
|
|
296
|
+
if (this.shadowRoot)
|
|
297
|
+
searchRoots.push(this.shadowRoot);
|
|
298
|
+
} else if (r === "all") {
|
|
299
|
+
searchRoots.push(this);
|
|
300
|
+
if (this.shadowRoot)
|
|
301
|
+
searchRoots.push(this.shadowRoot);
|
|
238
302
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
if (stopPropagation)
|
|
242
|
-
event.stopPropagation();
|
|
243
|
-
if (stopImmediatePropagation)
|
|
244
|
-
event.stopImmediatePropagation();
|
|
245
|
-
if (preventDefault)
|
|
246
|
-
event.preventDefault();
|
|
247
|
-
const hostSet2 = import_Utils.SwcUtils.getHostSet(this);
|
|
248
|
-
this._invokeLifecycleMethod(meta.propertyKey, hostSet2, [event, hostSet2]);
|
|
249
|
-
};
|
|
250
|
-
const opts = { capture, once, passive };
|
|
251
|
-
el.addEventListener(type, handler, opts);
|
|
303
|
+
searchRoots.forEach((sr) => {
|
|
304
|
+
sr.querySelectorAll(selector).forEach((el) => bindTargets.push(el));
|
|
252
305
|
});
|
|
253
306
|
}
|
|
307
|
+
bindTargets.forEach((target) => {
|
|
308
|
+
const handler = (event) => {
|
|
309
|
+
if (stopPropagation)
|
|
310
|
+
event.stopPropagation();
|
|
311
|
+
if (stopImmediatePropagation)
|
|
312
|
+
event.stopImmediatePropagation();
|
|
313
|
+
if (preventDefault)
|
|
314
|
+
event.preventDefault();
|
|
315
|
+
const currentHostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
316
|
+
this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet]);
|
|
317
|
+
};
|
|
318
|
+
target.addEventListener(type, handler, opts);
|
|
319
|
+
if (removeOnDisconnected === true || target === currentWin || target === currentDoc) {
|
|
320
|
+
this._boundListeners.push({ target, type, handler, options: opts });
|
|
321
|
+
}
|
|
322
|
+
});
|
|
254
323
|
});
|
|
255
324
|
if (super.connectedCallback)
|
|
256
325
|
await super.connectedCallback();
|
|
@@ -268,6 +337,8 @@ const elementDefine = (inConfig) => (constructor) => {
|
|
|
268
337
|
const bMethods = (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_BEFORE_DISCONNECTED_METADATA_KEY);
|
|
269
338
|
if (bMethods)
|
|
270
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 = [];
|
|
271
342
|
if (super.disconnectedCallback)
|
|
272
343
|
super.disconnectedCallback();
|
|
273
344
|
const aMethods = (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_AFTER_DISCONNECTED_METADATA_KEY);
|
|
@@ -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, 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 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 { selector, type, options } = meta;\n const { root, capture, once, passive, stopPropagation, stopImmediatePropagation, preventDefault, delegate } = options;\n\n if (delegate && selector && selector !== ':host') {\n const bindRoots: (HTMLElement | ShadowRoot)[] = [];\n const r = root || 'auto';\n if (r === 'auto') {\n bindRoots.push(this.shadowRoot || (this as any));\n } else if (r === 'light') {\n 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(bindRoot => {\n const handler = (event: Event) => {\n const target = event.target as HTMLElement;\n const matchedEl = target.closest(selector);\n if (matchedEl && (bindRoot as any).contains(matchedEl)) {\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, matchedEl]);\n }\n };\n bindRoot.addEventListener(type, handler, { capture, once, passive });\n });\n } else {\n const targetEls: (HTMLElement | Element | Document | ShadowRoot | Window)[] = [];\n if (!selector || selector === ':host') {\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(selector);\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 opts = { capture, once, passive };\n el.addEventListener(type, handler, 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 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": [
|
|
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
|
}
|
|
@@ -23,6 +23,8 @@ __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
29
|
function query(selector, options = {}) {
|
|
28
30
|
return (target, propertyKey, descriptor) => {
|
|
@@ -38,6 +40,26 @@ function query(selector, options = {}) {
|
|
|
38
40
|
queries.push({ selector, options, propertyKey });
|
|
39
41
|
Object.defineProperty(target, propertyKey, {
|
|
40
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;
|
|
41
63
|
if (!selector || selector === ":host")
|
|
42
64
|
return this;
|
|
43
65
|
const r = options.root || "auto";
|
|
@@ -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 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
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;;;;;;;0BAA6B;
|
|
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
|
}
|