@dooboostore/simple-web-component 1.0.43 → 1.0.45
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 +312 -63
- package/dist/cjs/SwcAppEngine.js +3 -1
- package/dist/cjs/SwcAppEngine.js.map +2 -2
- package/dist/cjs/decorators/addEventListener.js.map +2 -2
- package/dist/cjs/decorators/applyAttribute.js +66 -43
- package/dist/cjs/decorators/applyAttribute.js.map +2 -2
- package/dist/cjs/decorators/applyClass.js +110 -43
- package/dist/cjs/decorators/applyClass.js.map +3 -3
- package/dist/cjs/decorators/applyNode.js +200 -112
- package/dist/cjs/decorators/applyNode.js.map +2 -2
- package/dist/cjs/decorators/applyProperty.js +49 -45
- package/dist/cjs/decorators/applyProperty.js.map +2 -2
- package/dist/cjs/decorators/applyStyle.js +92 -37
- package/dist/cjs/decorators/applyStyle.js.map +3 -3
- package/dist/cjs/decorators/{changedAttributeThis.js → changedAttribute.js} +6 -6
- package/dist/cjs/decorators/changedAttribute.js.map +7 -0
- package/dist/cjs/decorators/elementDefine.js +81 -31
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/emitCustomEvent.js +80 -52
- package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
- package/dist/cjs/decorators/index.js +1 -1
- package/dist/cjs/decorators/index.js.map +2 -2
- package/dist/cjs/decorators/publishSwcAppMessage.js +5 -5
- package/dist/cjs/decorators/publishSwcAppMessage.js.map +3 -3
- package/dist/cjs/decorators/query.js +133 -147
- package/dist/cjs/decorators/query.js.map +3 -3
- package/dist/cjs/decorators/queryAll.js +143 -132
- package/dist/cjs/decorators/queryAll.js.map +3 -3
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js +2 -0
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -0
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/cjs/elements/SwcAppMixin.js +17 -2
- package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
- package/dist/cjs/examples/RxJSOperatorsExample.js +285 -0
- package/dist/cjs/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/router/ElementRouter.js +4 -0
- package/dist/cjs/router/ElementRouter.js.map +2 -2
- package/dist/cjs/types/window.d.js.map +1 -1
- package/dist/esm/SwcAppEngine.js +3 -1
- package/dist/esm/SwcAppEngine.js.map +2 -2
- package/dist/esm/decorators/addEventListener.js.map +2 -2
- package/dist/esm/decorators/applyAttribute.js +66 -43
- package/dist/esm/decorators/applyAttribute.js.map +2 -2
- package/dist/esm/decorators/applyClass.js +110 -43
- package/dist/esm/decorators/applyClass.js.map +3 -3
- package/dist/esm/decorators/applyNode.js +200 -112
- package/dist/esm/decorators/applyNode.js.map +2 -2
- package/dist/esm/decorators/applyProperty.js +49 -45
- package/dist/esm/decorators/applyProperty.js.map +2 -2
- package/dist/esm/decorators/applyStyle.js +92 -37
- package/dist/esm/decorators/applyStyle.js.map +3 -3
- package/dist/esm/decorators/{changedAttributeThis.js → changedAttribute.js} +3 -3
- package/dist/esm/decorators/changedAttribute.js.map +7 -0
- package/dist/esm/decorators/elementDefine.js +79 -29
- package/dist/esm/decorators/elementDefine.js.map +2 -2
- package/dist/esm/decorators/emitCustomEvent.js +80 -52
- package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
- package/dist/esm/decorators/index.js +1 -1
- package/dist/esm/decorators/index.js.map +1 -1
- package/dist/esm/decorators/publishSwcAppMessage.js +5 -5
- package/dist/esm/decorators/publishSwcAppMessage.js.map +3 -3
- package/dist/esm/decorators/query.js +133 -147
- package/dist/esm/decorators/query.js.map +3 -3
- package/dist/esm/decorators/queryAll.js +143 -132
- package/dist/esm/decorators/queryAll.js.map +3 -3
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +2 -0
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -0
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/esm/elements/SwcAppMixin.js +18 -3
- package/dist/esm/elements/SwcAppMixin.js.map +2 -2
- package/dist/esm/examples/RxJSOperatorsExample.js +266 -0
- package/dist/esm/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/router/ElementRouter.js +4 -0
- package/dist/esm/router/ElementRouter.js.map +2 -2
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1118 -633
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/SwcAppEngine.d.ts.map +1 -1
- package/dist/types/decorators/addEventListener.d.ts +19 -15
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/applyAttribute.d.ts +45 -26
- package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
- package/dist/types/decorators/applyClass.d.ts +19 -38
- package/dist/types/decorators/applyClass.d.ts.map +1 -1
- package/dist/types/decorators/applyNode.d.ts +175 -32
- package/dist/types/decorators/applyNode.d.ts.map +1 -1
- package/dist/types/decorators/applyProperty.d.ts +38 -25
- package/dist/types/decorators/applyProperty.d.ts.map +1 -1
- package/dist/types/decorators/applyStyle.d.ts +10 -9
- package/dist/types/decorators/applyStyle.d.ts.map +1 -1
- package/dist/types/decorators/{changedAttributeThis.d.ts → changedAttribute.d.ts} +2 -2
- package/dist/types/decorators/changedAttribute.d.ts.map +1 -0
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/decorators/emitCustomEvent.d.ts +6 -12
- package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
- package/dist/types/decorators/index.d.ts +1 -1
- package/dist/types/decorators/index.d.ts.map +1 -1
- package/dist/types/decorators/publishSwcAppMessage.d.ts +1 -1
- package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
- package/dist/types/decorators/query.d.ts +16 -29
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/queryAll.d.ts +16 -23
- package/dist/types/decorators/queryAll.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +1 -0
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +2 -0
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -1
- package/dist/types/elements/SwcAppMixin.d.ts +4 -4
- package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
- package/dist/types/examples/RxJSOperatorsExample.d.ts +94 -0
- package/dist/types/examples/RxJSOperatorsExample.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/router/ElementRouter.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1118 -633
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +1 -1
- package/src/SwcAppEngine.ts +3 -1
- package/src/decorators/addEventListener.ts +31 -25
- package/src/decorators/applyAttribute.ts +164 -86
- package/src/decorators/applyClass.ts +161 -41
- package/src/decorators/applyNode.ts +408 -108
- package/src/decorators/applyProperty.ts +100 -89
- package/src/decorators/applyStyle.ts +131 -37
- package/src/decorators/{changedAttributeThis.ts → changedAttribute.ts} +1 -1
- package/src/decorators/elementDefine.ts +96 -30
- package/src/decorators/emitCustomEvent.ts +92 -60
- package/src/decorators/index.ts +1 -1
- package/src/decorators/publishSwcAppMessage.ts +1 -1
- package/src/decorators/query.ts +155 -162
- package/src/decorators/queryAll.ts +157 -139
- package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +1 -0
- package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +3 -1
- package/src/elements/SwcAppMixin.ts +43 -24
- package/src/examples/RxJSOperatorsExample.ts +279 -0
- package/src/index.ts +2 -0
- package/src/router/ElementRouter.ts +4 -0
- package/src/types/window.d.ts +3 -0
- package/dist/cjs/decorators/changedAttributeThis.js.map +0 -7
- package/dist/esm/decorators/changedAttributeThis.js.map +0 -7
- package/dist/types/decorators/changedAttributeThis.d.ts.map +0 -1
|
@@ -19,162 +19,148 @@ var query_exports = {};
|
|
|
19
19
|
__export(query_exports, {
|
|
20
20
|
QUERY_METADATA_KEY: () => QUERY_METADATA_KEY,
|
|
21
21
|
getQueryMetadata: () => getQueryMetadata,
|
|
22
|
-
query: () => query
|
|
23
|
-
queryAppHost: () => queryAppHost,
|
|
24
|
-
queryDocument: () => queryDocument,
|
|
25
|
-
queryHost: () => queryHost,
|
|
26
|
-
queryThis: () => queryThis,
|
|
27
|
-
queryWindow: () => queryWindow
|
|
22
|
+
query: () => query
|
|
28
23
|
});
|
|
29
24
|
module.exports = __toCommonJS(query_exports);
|
|
30
25
|
var import_core = require("@dooboostore/core");
|
|
31
26
|
var import_elementDefine = require("./elementDefine");
|
|
32
27
|
var import_Utils = require("../utils/Utils");
|
|
33
28
|
const QUERY_METADATA_KEY = Symbol.for("simple-web-component:query");
|
|
34
|
-
function query(selectorOrTarget,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (selector === "$this")
|
|
66
|
-
return applyRoot(this);
|
|
67
|
-
if (selector === "$host")
|
|
68
|
-
return applyRoot(hostSet.$host);
|
|
69
|
-
if (selector === "$parentHost")
|
|
70
|
-
return applyRoot(hostSet.$parentHost);
|
|
71
|
-
if (selector === "$appHost")
|
|
72
|
-
return applyRoot(hostSet.$appHost);
|
|
73
|
-
if (selector === "$firstHost")
|
|
74
|
-
return applyRoot(hostSet.$firstHost);
|
|
75
|
-
if (selector === "$lastHost")
|
|
76
|
-
return applyRoot(hostSet.$lastHost);
|
|
77
|
-
if (selector === "$firstAppHost")
|
|
78
|
-
return applyRoot(hostSet.$firstAppHost);
|
|
79
|
-
if (selector === "$lastAppHost")
|
|
80
|
-
return applyRoot(hostSet.$lastAppHost);
|
|
81
|
-
const config = (0, import_elementDefine.getElementConfig)(this);
|
|
82
|
-
const win = config?.window || window;
|
|
83
|
-
if (selector === "$window")
|
|
84
|
-
return win;
|
|
85
|
-
if (selector === "$document")
|
|
86
|
-
return win.document;
|
|
87
|
-
if (r === "shadow")
|
|
88
|
-
return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;
|
|
89
|
-
if (r === "light")
|
|
90
|
-
return this.querySelector(selector);
|
|
91
|
-
if (r === "all") {
|
|
92
|
-
const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;
|
|
93
|
-
return shadowMatch || this.querySelector(selector);
|
|
94
|
-
}
|
|
95
|
-
return (this.shadowRoot || this).querySelector(selector);
|
|
96
|
-
},
|
|
97
|
-
set(nv) {
|
|
98
|
-
(0, import_elementDefine.ensureInit)(this);
|
|
99
|
-
if (nv === null || nv === void 0) {
|
|
100
|
-
const selector = selectorOrTarget;
|
|
101
|
-
if (selector.startsWith("$") && selector !== "$this")
|
|
102
|
-
return;
|
|
103
|
-
const r = options.root || "auto";
|
|
104
|
-
const targets = [];
|
|
105
|
-
if (r === "shadow") {
|
|
106
|
-
if (this.shadowRoot?.querySelector(selector))
|
|
107
|
-
targets.push(this.shadowRoot.querySelector(selector));
|
|
108
|
-
} else if (r === "light") {
|
|
109
|
-
if (this.querySelector(selector))
|
|
110
|
-
targets.push(this.querySelector(selector));
|
|
111
|
-
} else if (r === "all") {
|
|
112
|
-
if (this.shadowRoot?.querySelector(selector))
|
|
113
|
-
targets.push(this.shadowRoot.querySelector(selector));
|
|
114
|
-
if (this.querySelector(selector))
|
|
115
|
-
targets.push(this.querySelector(selector));
|
|
29
|
+
function query(selectorOrTarget, optionsOrPropertyKey, descriptor) {
|
|
30
|
+
if (descriptor !== void 0 && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
|
|
31
|
+
throw new Error(`@query decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);
|
|
32
|
+
}
|
|
33
|
+
if (typeof selectorOrTarget === "string" || typeof selectorOrTarget === "function") {
|
|
34
|
+
return (targetObj, propertyKey, descriptor2) => {
|
|
35
|
+
if (descriptor2 !== void 0) {
|
|
36
|
+
throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);
|
|
37
|
+
}
|
|
38
|
+
const constructor = targetObj.constructor;
|
|
39
|
+
let queries = import_core.ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
|
|
40
|
+
if (!queries) {
|
|
41
|
+
queries = [];
|
|
42
|
+
import_core.ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);
|
|
43
|
+
}
|
|
44
|
+
queries.push({ propertyKey, selector: selectorOrTarget, options: optionsOrPropertyKey || {} });
|
|
45
|
+
Object.defineProperty(targetObj, propertyKey, {
|
|
46
|
+
get() {
|
|
47
|
+
(0, import_elementDefine.ensureInit)(this);
|
|
48
|
+
const config = (0, import_elementDefine.getElementConfig)(this);
|
|
49
|
+
const win = config?.window || window;
|
|
50
|
+
const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(win, this);
|
|
51
|
+
let resolvedSelector;
|
|
52
|
+
let resolvedElement = null;
|
|
53
|
+
if (typeof selectorOrTarget === "function") {
|
|
54
|
+
const result = selectorOrTarget(this, hostSet);
|
|
55
|
+
if (result instanceof win.Node || result instanceof win.Element) {
|
|
56
|
+
resolvedElement = result instanceof win.HTMLElement ? result : null;
|
|
57
|
+
} else if (result instanceof win.NodeList || Array.isArray(result)) {
|
|
58
|
+
resolvedElement = result.length > 0 && result[0] instanceof win.HTMLElement ? result[0] : null;
|
|
59
|
+
}
|
|
116
60
|
} else {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
61
|
+
resolvedSelector = selectorOrTarget;
|
|
62
|
+
const r = optionsOrPropertyKey?.root || "auto";
|
|
63
|
+
const applyRoot = (t) => {
|
|
64
|
+
if (!t || !(t instanceof HTMLElement))
|
|
65
|
+
return t;
|
|
66
|
+
if (r === "auto")
|
|
67
|
+
return t.shadowRoot || t;
|
|
68
|
+
if (r === "shadow")
|
|
69
|
+
return t.shadowRoot;
|
|
70
|
+
if (r === "light")
|
|
71
|
+
return t;
|
|
72
|
+
if (r === "all")
|
|
73
|
+
return t.shadowRoot || t;
|
|
74
|
+
return t;
|
|
75
|
+
};
|
|
76
|
+
if (resolvedSelector === "$this")
|
|
77
|
+
resolvedElement = applyRoot(this);
|
|
78
|
+
else if (resolvedSelector === "$host")
|
|
79
|
+
resolvedElement = applyRoot(hostSet.$host);
|
|
80
|
+
else if (resolvedSelector === "$parentHost")
|
|
81
|
+
resolvedElement = applyRoot(hostSet.$parentHost);
|
|
82
|
+
else if (resolvedSelector === "$appHost")
|
|
83
|
+
resolvedElement = applyRoot(hostSet.$appHost);
|
|
84
|
+
else if (resolvedSelector === "$firstHost")
|
|
85
|
+
resolvedElement = applyRoot(hostSet.$firstHost);
|
|
86
|
+
else if (resolvedSelector === "$lastHost")
|
|
87
|
+
resolvedElement = applyRoot(hostSet.$lastHost);
|
|
88
|
+
else if (resolvedSelector === "$firstAppHost")
|
|
89
|
+
resolvedElement = applyRoot(hostSet.$firstAppHost);
|
|
90
|
+
else if (resolvedSelector === "$lastAppHost")
|
|
91
|
+
resolvedElement = applyRoot(hostSet.$lastAppHost);
|
|
92
|
+
else if (resolvedSelector === "$window")
|
|
93
|
+
return win;
|
|
94
|
+
else if (resolvedSelector === "$document")
|
|
95
|
+
return win.document;
|
|
96
|
+
else {
|
|
97
|
+
if (r === "shadow")
|
|
98
|
+
resolvedElement = this.shadowRoot ? this.shadowRoot.querySelector(resolvedSelector) : null;
|
|
99
|
+
else if (r === "light")
|
|
100
|
+
resolvedElement = this.querySelector(resolvedSelector);
|
|
101
|
+
else if (r === "all") {
|
|
102
|
+
const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(resolvedSelector) : null;
|
|
103
|
+
resolvedElement = shadowMatch || this.querySelector(resolvedSelector);
|
|
104
|
+
} else
|
|
105
|
+
resolvedElement = (this.shadowRoot || this).querySelector(resolvedSelector);
|
|
106
|
+
}
|
|
120
107
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
} else {
|
|
176
|
-
return query("$appHost", {});
|
|
108
|
+
if (resolvedElement instanceof win.HTMLElement && optionsOrPropertyKey?.filter) {
|
|
109
|
+
const shouldInclude = optionsOrPropertyKey.filter(resolvedElement, { currentThis: this, helper: hostSet });
|
|
110
|
+
if (!shouldInclude) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return resolvedElement;
|
|
115
|
+
},
|
|
116
|
+
set(nv) {
|
|
117
|
+
(0, import_elementDefine.ensureInit)(this);
|
|
118
|
+
if (nv === null || nv === void 0) {
|
|
119
|
+
const config = (0, import_elementDefine.getElementConfig)(this);
|
|
120
|
+
const win = config?.window || window;
|
|
121
|
+
const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(win, this);
|
|
122
|
+
if (typeof selectorOrTarget === "function") {
|
|
123
|
+
const result = selectorOrTarget(this, hostSet);
|
|
124
|
+
if (result instanceof win.Element) {
|
|
125
|
+
result.remove();
|
|
126
|
+
} else if (result instanceof win.NodeList || Array.isArray(result)) {
|
|
127
|
+
const el = result.length > 0 ? result[0] : null;
|
|
128
|
+
if (el instanceof win.Element) {
|
|
129
|
+
el.remove();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const resolvedSelector = selectorOrTarget;
|
|
135
|
+
if (resolvedSelector.startsWith("$") && resolvedSelector !== "$this")
|
|
136
|
+
return;
|
|
137
|
+
const r = optionsOrPropertyKey?.root || "auto";
|
|
138
|
+
const targets = [];
|
|
139
|
+
if (r === "shadow") {
|
|
140
|
+
if (this.shadowRoot?.querySelector(resolvedSelector))
|
|
141
|
+
targets.push(this.shadowRoot.querySelector(resolvedSelector));
|
|
142
|
+
} else if (r === "light") {
|
|
143
|
+
if (this.querySelector(resolvedSelector))
|
|
144
|
+
targets.push(this.querySelector(resolvedSelector));
|
|
145
|
+
} else if (r === "all") {
|
|
146
|
+
if (this.shadowRoot?.querySelector(resolvedSelector))
|
|
147
|
+
targets.push(this.shadowRoot.querySelector(resolvedSelector));
|
|
148
|
+
if (this.querySelector(resolvedSelector))
|
|
149
|
+
targets.push(this.querySelector(resolvedSelector));
|
|
150
|
+
} else {
|
|
151
|
+
const el = (this.shadowRoot || this).querySelector(resolvedSelector);
|
|
152
|
+
if (el)
|
|
153
|
+
targets.push(el);
|
|
154
|
+
}
|
|
155
|
+
targets.forEach((t) => t.remove());
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
enumerable: true,
|
|
159
|
+
configurable: true
|
|
160
|
+
});
|
|
161
|
+
};
|
|
177
162
|
}
|
|
163
|
+
return query("$this", selectorOrTarget);
|
|
178
164
|
}
|
|
179
165
|
const getQueryMetadata = (target) => {
|
|
180
166
|
const constructor = target instanceof Function ? target : target.constructor;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/decorators/query.ts"],
|
|
4
|
-
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport interface QueryOptions extends SwcQueryOptions {\n /**\n * Filter function to determine whether to include the element.\n * If it returns false, the element is skipped.\n */\n filter?: (target: HTMLElement, meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n}\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: string | ((currentThis: any, helper: HelperHostSet) => Node | NodeList | Element | Element[] | null);\n options: QueryOptions ;\n}\n\nexport const QUERY_METADATA_KEY = Symbol.for('simple-web-component:query');\n\nexport function query(target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor | void;\nexport function query(selector: string | ((currentThis: any, helper: HelperHostSet) => Node | NodeList | Element | Element[] | null), options?: QueryOptions): PropertyDecorator;\nexport function query(options?: QueryOptions): PropertyDecorator;\n/**\n * @query decorator to inject a single element into a class property.\n * \n * Supports both string selectors and function-based selectors:\n * - String selector: @query('#my-element')\n * - Function selector: @query((currentThis, helper) => currentThis.shadowRoot?.querySelector('.item'))\n * \n * Supports filtering:\n * - @query('#my-element', { filter: (target, meta) => target.hasAttribute('active') })\n */\nexport function query(selectorOrTarget?: string | ((currentThis: any, helper: HelperHostSet) => Node | NodeList | Element | Element[] | null) | Object, optionsOrPropertyKey?: QueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n // Bare decorator: @query\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return (targetObj: 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 = targetObj.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({ propertyKey, selector: selectorOrTarget as any, options: optionsOrPropertyKey as QueryOptions || {} });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const config = getElementConfig(this);\n const win = config?.window || window;\n const hostSet = SwcUtils.getHelperAndHostSet(win, this);\n \n // Resolve selector - can be string or function\n let resolvedSelector: string;\n let resolvedElement: HTMLElement | null = null;\n \n if (typeof selectorOrTarget === 'function') {\n const result = (selectorOrTarget as any)(this, hostSet);\n // If function returns a Node/Element, return it directly\n if (result instanceof win.Node || result instanceof win.Element) {\n resolvedElement = result instanceof win.HTMLElement ? (result as HTMLElement) : null;\n }\n // If function returns NodeList or Element[], return first element\n else if (result instanceof win.NodeList || Array.isArray(result)) {\n resolvedElement = result.length > 0 && result[0] instanceof win.HTMLElement ? (result[0] as HTMLElement) : null;\n }\n } else {\n resolvedSelector = selectorOrTarget;\n\n const r = (optionsOrPropertyKey as QueryOptions)?.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof HTMLElement)) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t; \n return t;\n };\n\n // --- Special Selectors: HostSet ---\n if (resolvedSelector === '$this') resolvedElement = applyRoot(this);\n else if (resolvedSelector === '$host') resolvedElement = applyRoot(hostSet.$host);\n else if (resolvedSelector === '$parentHost') resolvedElement = applyRoot(hostSet.$parentHost);\n else if (resolvedSelector === '$appHost') resolvedElement = applyRoot(hostSet.$appHost);\n else if (resolvedSelector === '$firstHost') resolvedElement = applyRoot(hostSet.$firstHost);\n else if (resolvedSelector === '$lastHost') resolvedElement = applyRoot(hostSet.$lastHost);\n else if (resolvedSelector === '$firstAppHost') resolvedElement = applyRoot(hostSet.$firstAppHost);\n else if (resolvedSelector === '$lastAppHost') resolvedElement = applyRoot(hostSet.$lastAppHost);\n // --- Special Selectors: Env ---\n else if (resolvedSelector === '$window') return win;\n else if (resolvedSelector === '$document') return win.document;\n // --- Standard Selectors ---\n else {\n if (r === 'shadow') resolvedElement = this.shadowRoot ? (this.shadowRoot.querySelector(resolvedSelector) as HTMLElement | null) : null;\n else if (r === 'light') resolvedElement = this.querySelector(resolvedSelector) as HTMLElement | null;\n else if (r === 'all') {\n const shadowMatch = this.shadowRoot ? (this.shadowRoot.querySelector(resolvedSelector) as HTMLElement | null) : null;\n resolvedElement = shadowMatch || (this.querySelector(resolvedSelector) as HTMLElement | null);\n }\n else resolvedElement = ((this.shadowRoot || this).querySelector(resolvedSelector) as HTMLElement | null);\n }\n }\n\n // Apply filter if provided\n if (resolvedElement instanceof win.HTMLElement && (optionsOrPropertyKey as QueryOptions)?.filter) {\n const shouldInclude = (optionsOrPropertyKey as QueryOptions).filter!(resolvedElement, { currentThis: this, helper: hostSet });\n if (!shouldInclude) {\n return null;\n }\n }\n\n return resolvedElement;\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined) {\n const config = getElementConfig(this);\n const win = config?.window || window;\n const hostSet = SwcUtils.getHelperAndHostSet(win, this);\n \n // Resolve selector - can be string or function\n if (typeof selectorOrTarget === 'function') {\n // Get the element from function and remove it\n const result = (selectorOrTarget as any)(this, hostSet);\n if (result instanceof win.Element) {\n (result as Element).remove();\n } else if (result instanceof win.NodeList || Array.isArray(result)) {\n const el = result.length > 0 ? result[0] : null;\n if (el instanceof win.Element) {\n (el as Element).remove();\n }\n }\n return;\n }\n \n const resolvedSelector = selectorOrTarget;\n \n if (resolvedSelector.startsWith('$') && resolvedSelector !== '$this') return;\n\n const r = (optionsOrPropertyKey as QueryOptions)?.root || 'auto';\n const targets: Element[] = [];\n\n if (r === 'shadow') {\n if (this.shadowRoot?.querySelector(resolvedSelector)) targets.push(this.shadowRoot.querySelector(resolvedSelector)!);\n } else if (r === 'light') {\n if (this.querySelector(resolvedSelector)) targets.push(this.querySelector(resolvedSelector)!);\n } else if (r === 'all') {\n if (this.shadowRoot?.querySelector(resolvedSelector)) targets.push(this.shadowRoot.querySelector(resolvedSelector)!);\n if (this.querySelector(resolvedSelector)) targets.push(this.querySelector(resolvedSelector)!);\n } else {\n const el = (this.shadowRoot || this).querySelector(resolvedSelector);\n if (el) targets.push(el);\n }\n\n targets.forEach(t => t.remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n }\n // Without selector (defaults to $this)\n return query('$this', selectorOrTarget as SwcQueryOptions);\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor) ?? [];\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["descriptor"]
|
|
7
7
|
}
|