@dooboostore/simple-web-component 1.0.47 → 1.0.49
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 +223 -27
- package/dist/cjs/config/config.js +1 -1
- package/dist/cjs/config/config.js.map +2 -2
- package/dist/cjs/decorators/addEventListener.js +412 -16
- package/dist/cjs/decorators/addEventListener.js.map +3 -3
- package/dist/cjs/decorators/applyAttribute.js +25 -0
- package/dist/cjs/decorators/applyAttribute.js.map +2 -2
- package/dist/cjs/decorators/applyClass.js +49 -18
- package/dist/cjs/decorators/applyClass.js.map +3 -3
- package/dist/cjs/decorators/applyNode.js +67 -1
- package/dist/cjs/decorators/applyNode.js.map +3 -3
- package/dist/cjs/decorators/applyProperty.js +101 -3
- package/dist/cjs/decorators/applyProperty.js.map +2 -2
- package/dist/cjs/decorators/applyStyle.js +36 -5
- package/dist/cjs/decorators/applyStyle.js.map +2 -2
- package/dist/cjs/decorators/changedAttribute.js +39 -0
- package/dist/cjs/decorators/changedAttribute.js.map +2 -2
- package/dist/cjs/decorators/elementDefine.js +244 -225
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/emitCustomEvent.js +55 -0
- package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
- package/dist/cjs/decorators/index.js +5 -1
- package/dist/cjs/decorators/index.js.map +2 -2
- package/dist/cjs/decorators/intersectionObserver.js +209 -0
- package/dist/cjs/decorators/intersectionObserver.js.map +7 -0
- package/dist/cjs/decorators/mutationObserver.js +244 -0
- package/dist/cjs/decorators/mutationObserver.js.map +7 -0
- package/dist/cjs/decorators/query.js +129 -102
- package/dist/cjs/decorators/query.js.map +2 -2
- package/dist/cjs/decorators/resizeObserver.js +191 -0
- package/dist/cjs/decorators/resizeObserver.js.map +7 -0
- package/dist/cjs/decorators/setInterval.js +82 -0
- package/dist/cjs/decorators/setInterval.js.map +7 -0
- package/dist/cjs/decorators/setTimeout.js +82 -0
- package/dist/cjs/decorators/setTimeout.js.map +7 -0
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js +9 -0
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js +9 -0
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/cjs/examples/RxJSOperatorsExample.js +285 -0
- package/dist/cjs/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/esm/config/config.js +1 -1
- package/dist/esm/config/config.js.map +2 -2
- package/dist/esm/decorators/addEventListener.js +413 -16
- package/dist/esm/decorators/addEventListener.js.map +3 -3
- package/dist/esm/decorators/applyAttribute.js +25 -0
- package/dist/esm/decorators/applyAttribute.js.map +2 -2
- package/dist/esm/decorators/applyClass.js +49 -18
- package/dist/esm/decorators/applyClass.js.map +3 -3
- package/dist/esm/decorators/applyNode.js +67 -1
- package/dist/esm/decorators/applyNode.js.map +3 -3
- package/dist/esm/decorators/applyProperty.js +101 -3
- package/dist/esm/decorators/applyProperty.js.map +2 -2
- package/dist/esm/decorators/applyStyle.js +36 -5
- package/dist/esm/decorators/applyStyle.js.map +2 -2
- package/dist/esm/decorators/changedAttribute.js +40 -0
- package/dist/esm/decorators/changedAttribute.js.map +2 -2
- package/dist/esm/decorators/elementDefine.js +249 -230
- package/dist/esm/decorators/elementDefine.js.map +3 -3
- package/dist/esm/decorators/emitCustomEvent.js +55 -0
- package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
- package/dist/esm/decorators/index.js +5 -1
- package/dist/esm/decorators/index.js.map +2 -2
- package/dist/esm/decorators/intersectionObserver.js +191 -0
- package/dist/esm/decorators/intersectionObserver.js.map +7 -0
- package/dist/esm/decorators/mutationObserver.js +226 -0
- package/dist/esm/decorators/mutationObserver.js.map +7 -0
- package/dist/esm/decorators/query.js +129 -102
- package/dist/esm/decorators/query.js.map +2 -2
- package/dist/esm/decorators/resizeObserver.js +173 -0
- package/dist/esm/decorators/resizeObserver.js.map +7 -0
- package/dist/esm/decorators/setInterval.js +64 -0
- package/dist/esm/decorators/setInterval.js.map +7 -0
- package/dist/esm/decorators/setTimeout.js +64 -0
- package/dist/esm/decorators/setTimeout.js.map +7 -0
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +9 -0
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js +9 -0
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/esm/examples/RxJSOperatorsExample.js +266 -0
- package/dist/esm/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +2413 -889
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/config/config.d.ts.map +1 -1
- package/dist/types/decorators/addEventListener.d.ts +93 -23
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/applyAttribute.d.ts +22 -34
- package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
- package/dist/types/decorators/applyClass.d.ts +34 -34
- package/dist/types/decorators/applyClass.d.ts.map +1 -1
- package/dist/types/decorators/applyNode.d.ts +30 -20
- package/dist/types/decorators/applyNode.d.ts.map +1 -1
- package/dist/types/decorators/applyProperty.d.ts +57 -34
- package/dist/types/decorators/applyProperty.d.ts.map +1 -1
- package/dist/types/decorators/applyStyle.d.ts +25 -12
- package/dist/types/decorators/applyStyle.d.ts.map +1 -1
- package/dist/types/decorators/changedAttribute.d.ts +11 -0
- package/dist/types/decorators/changedAttribute.d.ts.map +1 -1
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/decorators/emitCustomEvent.d.ts +28 -4
- package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
- package/dist/types/decorators/index.d.ts +5 -1
- package/dist/types/decorators/index.d.ts.map +1 -1
- package/dist/types/decorators/intersectionObserver.d.ts +49 -0
- package/dist/types/decorators/intersectionObserver.d.ts.map +1 -0
- package/dist/types/decorators/mutationObserver.d.ts +46 -0
- package/dist/types/decorators/mutationObserver.d.ts.map +1 -0
- package/dist/types/decorators/query.d.ts +63 -8
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/resizeObserver.d.ts +48 -0
- package/dist/types/decorators/resizeObserver.d.ts.map +1 -0
- package/dist/types/decorators/setInterval.d.ts +29 -0
- package/dist/types/decorators/setInterval.d.ts.map +1 -0
- package/dist/types/decorators/setTimeout.d.ts +29 -0
- package/dist/types/decorators/setTimeout.d.ts.map +1 -0
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +7 -1
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +6 -0
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.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/types/index.d.ts +104 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +2413 -889
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +8 -6
- package/src/config/config.ts +1 -1
- package/src/decorators/addEventListener.ts +426 -23
- package/src/decorators/applyAttribute.ts +50 -36
- package/src/decorators/applyClass.ts +76 -26
- package/src/decorators/applyNode.ts +114 -36
- package/src/decorators/applyProperty.ts +152 -40
- package/src/decorators/applyStyle.ts +64 -17
- package/src/decorators/changedAttribute.ts +46 -0
- package/src/decorators/elementDefine.ts +301 -317
- package/src/decorators/emitCustomEvent.ts +73 -5
- package/src/decorators/index.ts +5 -1
- package/src/decorators/intersectionObserver.ts +259 -0
- package/src/decorators/mutationObserver.ts +304 -0
- package/src/decorators/query.ts +182 -117
- package/src/decorators/resizeObserver.ts +235 -0
- package/src/decorators/setInterval.ts +80 -0
- package/src/decorators/setTimeout.ts +80 -0
- package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +17 -0
- package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +19 -0
- package/src/examples/RxJSOperatorsExample.ts +279 -0
- package/src/types/index.ts +141 -0
- package/dist/cjs/decorators/queryAll.js +0 -181
- package/dist/cjs/decorators/queryAll.js.map +0 -7
- package/dist/cjs/elements/tt/SwcAppMixin.js +0 -1
- package/dist/cjs/elements/tt/SwcAppMixin.js.map +0 -7
- package/dist/cjs/elements/tt/SwcAsync.js +0 -1
- package/dist/cjs/elements/tt/SwcAsync.js.map +0 -7
- package/dist/cjs/elements/tt/SwcAsyncTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcAsyncTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcChoose.js +0 -1
- package/dist/cjs/elements/tt/SwcChoose.js.map +0 -7
- package/dist/cjs/elements/tt/SwcChooseTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcChooseTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcIf.js +0 -1
- package/dist/cjs/elements/tt/SwcIf.js.map +0 -7
- package/dist/cjs/elements/tt/SwcIfTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcIfTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcLoop.js +0 -1
- package/dist/cjs/elements/tt/SwcLoop.js.map +0 -7
- package/dist/cjs/elements/tt/SwcLoopTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcLoopTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcSubTemplates.js +0 -1
- package/dist/cjs/elements/tt/SwcSubTemplates.js.map +0 -7
- package/dist/cjs/elements/tt/register.js +0 -1
- package/dist/cjs/elements/tt/register.js.map +0 -7
- package/dist/esm/decorators/queryAll.js +0 -162
- package/dist/esm/decorators/queryAll.js.map +0 -7
- package/dist/esm/elements/tt/SwcAppMixin.js +0 -1
- package/dist/esm/elements/tt/SwcAppMixin.js.map +0 -7
- package/dist/esm/elements/tt/SwcAsync.js +0 -1
- package/dist/esm/elements/tt/SwcAsync.js.map +0 -7
- package/dist/esm/elements/tt/SwcAsyncTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcAsyncTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcChoose.js +0 -1
- package/dist/esm/elements/tt/SwcChoose.js.map +0 -7
- package/dist/esm/elements/tt/SwcChooseTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcChooseTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcIf.js +0 -1
- package/dist/esm/elements/tt/SwcIf.js.map +0 -7
- package/dist/esm/elements/tt/SwcIfTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcIfTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcLoop.js +0 -1
- package/dist/esm/elements/tt/SwcLoop.js.map +0 -7
- package/dist/esm/elements/tt/SwcLoopTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcLoopTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcSubTemplates.js +0 -1
- package/dist/esm/elements/tt/SwcSubTemplates.js.map +0 -7
- package/dist/esm/elements/tt/register.js +0 -1
- package/dist/esm/elements/tt/register.js.map +0 -7
- package/dist/types/decorators/queryAll.d.ts +0 -22
- package/dist/types/decorators/queryAll.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcAppMixin.d.ts +0 -1
- package/dist/types/elements/tt/SwcAppMixin.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcAsync.d.ts +0 -1
- package/dist/types/elements/tt/SwcAsync.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcAsyncTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcAsyncTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcChoose.d.ts +0 -1
- package/dist/types/elements/tt/SwcChoose.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcChooseTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcChooseTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcIf.d.ts +0 -1
- package/dist/types/elements/tt/SwcIf.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcIfTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcIfTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcLoop.d.ts +0 -1
- package/dist/types/elements/tt/SwcLoop.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcLoopTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcLoopTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcSubTemplates.d.ts +0 -1
- package/dist/types/elements/tt/SwcSubTemplates.d.ts.map +0 -1
- package/dist/types/elements/tt/register.d.ts +0 -1
- package/dist/types/elements/tt/register.d.ts.map +0 -1
- package/src/decorators/queryAll.ts +0 -186
- package/src/elements/tt/SwcAppMixin.ts +0 -13
- package/src/elements/tt/SwcAsync.ts +0 -139
- package/src/elements/tt/SwcAsyncTemplate.ts +0 -126
- package/src/elements/tt/SwcChoose.ts +0 -182
- package/src/elements/tt/SwcChooseTemplate.ts +0 -229
- package/src/elements/tt/SwcIf.ts +0 -145
- package/src/elements/tt/SwcIfTemplate.ts +0 -158
- package/src/elements/tt/SwcLoop.ts +0 -222
- package/src/elements/tt/SwcLoopTemplate.ts +0 -255
- package/src/elements/tt/SwcSubTemplates.ts +0 -6
- package/src/elements/tt/register.ts +0 -720
|
@@ -24,14 +24,15 @@ __export(elementDefine_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(elementDefine_exports);
|
|
26
26
|
var import_core = require("@dooboostore/core");
|
|
27
|
-
var import_operators = require("@dooboostore/core/message/operators");
|
|
28
27
|
var import_addEventListener = require("./addEventListener");
|
|
28
|
+
var import_mutationObserver = require("./mutationObserver");
|
|
29
|
+
var import_resizeObserver = require("./resizeObserver");
|
|
30
|
+
var import_intersectionObserver = require("./intersectionObserver");
|
|
29
31
|
var import_lifecycles = require("./lifecycles");
|
|
30
32
|
var import_emitCustomEvent = require("./emitCustomEvent");
|
|
31
33
|
var import_changedAttribute = require("./changedAttribute");
|
|
32
34
|
var import_applyAttribute = require("./applyAttribute");
|
|
33
35
|
var import_query = require("./query");
|
|
34
|
-
var import_queryAll = require("./queryAll");
|
|
35
36
|
var import_Utils = require("../utils/Utils");
|
|
36
37
|
var import_config = require("../config/config");
|
|
37
38
|
var import_Inject = require("@dooboostore/simple-boot/decorators/inject/Inject");
|
|
@@ -40,6 +41,10 @@ var import_core_web = require("@dooboostore/core-web");
|
|
|
40
41
|
var import_SwcAppMixin = require("../elements/SwcAppMixin");
|
|
41
42
|
var import_state = require("./state");
|
|
42
43
|
var import_applyProperty = require("./applyProperty");
|
|
44
|
+
var import_subscribeSwcAppMessageWhileConnected = require("./subscribeSwcAppMessageWhileConnected");
|
|
45
|
+
var import_subscribeSwcAppRouteChangeWhileConnected = require("./subscribeSwcAppRouteChangeWhileConnected");
|
|
46
|
+
var import_setInterval = require("./setInterval");
|
|
47
|
+
var import_setTimeout = require("./setTimeout");
|
|
43
48
|
const ELEMENT_CONFIG_KEY = Symbol.for("simple-web-component:element-config");
|
|
44
49
|
const getElementConfig = (target) => {
|
|
45
50
|
const constructor = target instanceof Function ? target : target.constructor;
|
|
@@ -49,7 +54,6 @@ const ensureInit = (inst) => {
|
|
|
49
54
|
if (!inst.__swc_initialized) {
|
|
50
55
|
inst._swcId = inst?.getAttribute?.("swc-use-ssr") ?? "s" + Math.random().toString(36).substring(2, 11).toLowerCase();
|
|
51
56
|
inst._emitHandlers = /* @__PURE__ */ new Map();
|
|
52
|
-
inst._boundListeners = [];
|
|
53
57
|
inst.__swc_initialized = true;
|
|
54
58
|
const target = inst instanceof Function ? inst : inst.constructor;
|
|
55
59
|
const attributeAllList = (0, import_applyAttribute.findAllAttributeMetadata)(target).filter((it) => it.type === "property");
|
|
@@ -64,7 +68,7 @@ const ensureInit = (inst) => {
|
|
|
64
68
|
delete inst[meta.propertyKey];
|
|
65
69
|
});
|
|
66
70
|
}
|
|
67
|
-
const queryAllList = (0,
|
|
71
|
+
const queryAllList = (0, import_query.getQueryAllMetadata)(target);
|
|
68
72
|
if (queryAllList) {
|
|
69
73
|
queryAllList.forEach((meta) => {
|
|
70
74
|
delete inst[meta.propertyKey];
|
|
@@ -248,10 +252,6 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
248
252
|
}
|
|
249
253
|
metadata.extends = extendsTagName;
|
|
250
254
|
}
|
|
251
|
-
const emitCustomEventList = (0, import_emitCustomEvent.getEmitCustomEventMetadataList)(constructor) || [];
|
|
252
|
-
const emitHostCustomEventList = emitCustomEventList.filter((meta) => meta.selector === "$this" || meta.selector === "");
|
|
253
|
-
const addEventListenerList = (0, import_addEventListener.getAddEventListenerMetadata)(constructor) || [];
|
|
254
|
-
const attrChangeMap = (0, import_changedAttribute.findAllAttributeChangedMetadata)(constructor);
|
|
255
255
|
const attributeList = (0, import_applyAttribute.findAllAttributeMetadata)(constructor);
|
|
256
256
|
const applyAttributeMap = (0, import_applyAttribute.findAllAttributeApplyMetadata)(constructor);
|
|
257
257
|
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"];
|
|
@@ -259,10 +259,222 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
259
259
|
const attributeApplyNames = Array.from(applyAttributeMap.values()).map((it) => it.targetAttributeName).filter(Boolean);
|
|
260
260
|
const hostAttributes = attributeList.filter((it) => it.selector === "$this").map((it) => it.propertyKey || String(it.propertyKey));
|
|
261
261
|
const originalStaticObservedAttributes = constructor.observedAttributes ?? [];
|
|
262
|
-
const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...metadata.observedAttributes ?? [], ...originalStaticObservedAttributes, ...attrChangeMap.keys(), ...attributeApplyNames, ...hostAttributes, ...emitHostCustomEventList.map((it) => it.options.attributeName).filter(Boolean), ...swcLifecycleAttributes, ...swcOnEvents])];
|
|
263
262
|
const proto = constructor.prototype;
|
|
264
263
|
setupPrototype(proto, win);
|
|
265
264
|
let helperHostSet = null;
|
|
265
|
+
const eventCycler = new import_addEventListener.EventListenerLifeCycler();
|
|
266
|
+
const cyclers = [
|
|
267
|
+
eventCycler,
|
|
268
|
+
new import_changedAttribute.ChangedAttributeLifeCycler(),
|
|
269
|
+
new import_emitCustomEvent.EmitCustomEventLifeCycler(),
|
|
270
|
+
new import_resizeObserver.ResizeObserverLifeCycler(),
|
|
271
|
+
new import_intersectionObserver.IntersectionObserverLifeCycler(),
|
|
272
|
+
new import_mutationObserver.MutationObserverLifeCycler(),
|
|
273
|
+
new import_subscribeSwcAppMessageWhileConnected.MessageSubscribeLifeCycler(),
|
|
274
|
+
new import_subscribeSwcAppRouteChangeWhileConnected.RouteSubscribeLifeCycler(),
|
|
275
|
+
new import_setInterval.SetIntervalLifeCycler(),
|
|
276
|
+
new import_setTimeout.SetTimeoutLifeCycler()
|
|
277
|
+
];
|
|
278
|
+
const cyclerObservedAttributes = cyclers.flatMap((c) => c.getObservedAttributeNames?.(constructor) ?? []);
|
|
279
|
+
const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...metadata.observedAttributes ?? [], ...originalStaticObservedAttributes, ...cyclerObservedAttributes, ...attributeApplyNames, ...hostAttributes, ...swcLifecycleAttributes, ...swcOnEvents])];
|
|
280
|
+
const buildObservers = async (helperHostSet2) => {
|
|
281
|
+
const inst = helperHostSet2.$this;
|
|
282
|
+
const observers = [];
|
|
283
|
+
let resizeObserverSet = [];
|
|
284
|
+
let mutationObserverSet = [];
|
|
285
|
+
let intersectionObserverSet = [];
|
|
286
|
+
const resolveDelegateRoots = (delegateRoot) => {
|
|
287
|
+
const r = delegateRoot || "auto";
|
|
288
|
+
const roots = [];
|
|
289
|
+
if (r === "auto") roots.push(inst.shadowRoot || inst);
|
|
290
|
+
else if (r === "light") roots.push(inst);
|
|
291
|
+
else if (r === "shadow" && inst.shadowRoot) roots.push(inst.shadowRoot);
|
|
292
|
+
else if (r === "all") {
|
|
293
|
+
roots.push(inst);
|
|
294
|
+
if (inst.shadowRoot) roots.push(inst.shadowRoot);
|
|
295
|
+
}
|
|
296
|
+
return roots;
|
|
297
|
+
};
|
|
298
|
+
for (const c of cyclers) {
|
|
299
|
+
const result = await c.onConnected?.(helperHostSet2, resizeObserverSet);
|
|
300
|
+
if (!result) continue;
|
|
301
|
+
if (result.resizeObserverSet?.length) resizeObserverSet = [...resizeObserverSet, ...result.resizeObserverSet];
|
|
302
|
+
if (result.mutationObserverSet?.length) mutationObserverSet = [...mutationObserverSet, ...result.mutationObserverSet];
|
|
303
|
+
if (result.intersectionObserverSet?.length) intersectionObserverSet = [...intersectionObserverSet, ...result.intersectionObserverSet];
|
|
304
|
+
}
|
|
305
|
+
const resizeDelegates = (resizeObserverSet ?? []).filter((t) => t.delegate && typeof t.target === "string");
|
|
306
|
+
let resizeObserve;
|
|
307
|
+
let resizeUnobserve;
|
|
308
|
+
const resizeObserved = /* @__PURE__ */ new WeakSet();
|
|
309
|
+
if (resizeObserverSet?.length) {
|
|
310
|
+
const roCallbacks = [...new Set(resizeObserverSet.map((e) => e.callback))];
|
|
311
|
+
const ro = new win.ResizeObserver((entries, obs) => {
|
|
312
|
+
for (const cb of roCallbacks) cb(entries, obs);
|
|
313
|
+
});
|
|
314
|
+
for (const e of resizeObserverSet) {
|
|
315
|
+
if (e.delegate) continue;
|
|
316
|
+
if (typeof e.target === "string") {
|
|
317
|
+
const scope = resolveDelegateRoots(e.delegateRoot);
|
|
318
|
+
for (const sr of scope) {
|
|
319
|
+
sr.querySelectorAll(e.target).forEach((el) => {
|
|
320
|
+
if (!resizeObserved.has(el)) {
|
|
321
|
+
ro.observe(el, e.options);
|
|
322
|
+
resizeObserved.add(el);
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
ro.observe(e.target, e.options);
|
|
329
|
+
if (e.target instanceof Element) resizeObserved.add(e.target);
|
|
330
|
+
}
|
|
331
|
+
resizeObserve = (el, opts) => {
|
|
332
|
+
if (resizeObserved.has(el)) return;
|
|
333
|
+
ro.observe(el, opts);
|
|
334
|
+
resizeObserved.add(el);
|
|
335
|
+
};
|
|
336
|
+
resizeUnobserve = (el) => {
|
|
337
|
+
if (!resizeObserved.has(el)) return;
|
|
338
|
+
ro.unobserve(el);
|
|
339
|
+
resizeObserved.delete(el);
|
|
340
|
+
};
|
|
341
|
+
observers.push(ro);
|
|
342
|
+
}
|
|
343
|
+
const intersectionDelegates = [];
|
|
344
|
+
for (const group of intersectionObserverSet) {
|
|
345
|
+
const ioCallbacks = [...new Set(group.observeTargets.map((e) => e.callback))];
|
|
346
|
+
const io = new win.IntersectionObserver((entries, obs) => {
|
|
347
|
+
for (const cb of ioCallbacks) cb(entries, obs);
|
|
348
|
+
}, group.options);
|
|
349
|
+
const ioObserved = /* @__PURE__ */ new WeakSet();
|
|
350
|
+
for (const e of group.observeTargets) {
|
|
351
|
+
if (e.delegate) {
|
|
352
|
+
const target = e.target;
|
|
353
|
+
const observe = (el) => {
|
|
354
|
+
if (ioObserved.has(el)) return;
|
|
355
|
+
io.observe(el);
|
|
356
|
+
ioObserved.add(el);
|
|
357
|
+
};
|
|
358
|
+
const unobserve = (el) => {
|
|
359
|
+
if (!ioObserved.has(el)) return;
|
|
360
|
+
io.unobserve(el);
|
|
361
|
+
ioObserved.delete(el);
|
|
362
|
+
};
|
|
363
|
+
intersectionDelegates.push({ target, delegateRoot: e.delegateRoot, observe, unobserve });
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
if (typeof e.target === "string") {
|
|
367
|
+
const scope = resolveDelegateRoots(e.delegateRoot);
|
|
368
|
+
for (const sr of scope) {
|
|
369
|
+
sr.querySelectorAll(e.target).forEach((el) => {
|
|
370
|
+
if (!ioObserved.has(el)) {
|
|
371
|
+
io.observe(el);
|
|
372
|
+
ioObserved.add(el);
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
io.observe(e.target);
|
|
379
|
+
if (e.target instanceof Element) ioObserved.add(e.target);
|
|
380
|
+
}
|
|
381
|
+
observers.push(io);
|
|
382
|
+
}
|
|
383
|
+
const handleResizeDelegate = (n, observe) => {
|
|
384
|
+
if (!resizeObserve || !resizeUnobserve || n.nodeType !== 1) return;
|
|
385
|
+
const el = n;
|
|
386
|
+
for (const d of resizeDelegates) {
|
|
387
|
+
const isThis = d.target === "$this" || d.target === "";
|
|
388
|
+
const matchesSel = (node) => {
|
|
389
|
+
if (!node || node.nodeType !== 1) return false;
|
|
390
|
+
if (isThis) return true;
|
|
391
|
+
return node.matches?.(d.target) || !!node.closest?.(d.target);
|
|
392
|
+
};
|
|
393
|
+
if (matchesSel(el)) {
|
|
394
|
+
observe ? resizeObserve(el, d.options) : resizeUnobserve(el);
|
|
395
|
+
} else if (!isThis) {
|
|
396
|
+
el.querySelectorAll(d.target).forEach((sub) => {
|
|
397
|
+
observe ? resizeObserve(sub, d.options) : resizeUnobserve(sub);
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
const handleIntersectionDelegate = (n, observe) => {
|
|
403
|
+
if (n.nodeType !== 1) return;
|
|
404
|
+
const el = n;
|
|
405
|
+
for (const d of intersectionDelegates) {
|
|
406
|
+
const isThis = d.target === "$this" || d.target === "";
|
|
407
|
+
const matchesSel = (node) => {
|
|
408
|
+
if (!node || node.nodeType !== 1) return false;
|
|
409
|
+
if (isThis) return true;
|
|
410
|
+
return node.matches?.(d.target) || !!node.closest?.(d.target);
|
|
411
|
+
};
|
|
412
|
+
if (matchesSel(el)) {
|
|
413
|
+
observe ? d.observe(el) : d.unobserve(el);
|
|
414
|
+
} else if (!isThis) {
|
|
415
|
+
el.querySelectorAll(d.target).forEach((sub) => {
|
|
416
|
+
observe ? d.observe(sub) : d.unobserve(sub);
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
if (mutationObserverSet?.length || resizeDelegates.length > 0 || intersectionDelegates.length > 0) {
|
|
422
|
+
const callbacks = [...new Set((mutationObserverSet ?? []).map((e) => e.callback))];
|
|
423
|
+
const mo = new win.MutationObserver((mutations, obs) => {
|
|
424
|
+
for (const mut of mutations) {
|
|
425
|
+
Array.from(mut.addedNodes || []).forEach((n) => {
|
|
426
|
+
handleResizeDelegate(n, true);
|
|
427
|
+
handleIntersectionDelegate(n, true);
|
|
428
|
+
});
|
|
429
|
+
Array.from(mut.removedNodes || []).forEach((n) => {
|
|
430
|
+
handleResizeDelegate(n, false);
|
|
431
|
+
handleIntersectionDelegate(n, false);
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
for (const cb of callbacks) cb(mutations, obs);
|
|
435
|
+
});
|
|
436
|
+
const moObserveTargets = /* @__PURE__ */ new Map();
|
|
437
|
+
const mergeMutationInit = (existing, next) => {
|
|
438
|
+
if (!existing) return next;
|
|
439
|
+
const mergedFilter = existing.attributeFilter || next.attributeFilter ? [.../* @__PURE__ */ new Set([...existing.attributeFilter ?? [], ...next.attributeFilter ?? []])] : void 0;
|
|
440
|
+
return {
|
|
441
|
+
childList: existing.childList || next.childList,
|
|
442
|
+
attributes: existing.attributes || next.attributes,
|
|
443
|
+
characterData: existing.characterData || next.characterData,
|
|
444
|
+
subtree: existing.subtree || next.subtree,
|
|
445
|
+
attributeOldValue: existing.attributeOldValue || next.attributeOldValue,
|
|
446
|
+
characterDataOldValue: existing.characterDataOldValue || next.characterDataOldValue,
|
|
447
|
+
attributeFilter: mergedFilter
|
|
448
|
+
};
|
|
449
|
+
};
|
|
450
|
+
const addObserveTarget = (target, options) => {
|
|
451
|
+
moObserveTargets.set(target, mergeMutationInit(moObserveTargets.get(target), options));
|
|
452
|
+
};
|
|
453
|
+
for (const e of mutationObserverSet ?? []) {
|
|
454
|
+
if (e.delegate) continue;
|
|
455
|
+
const init = e.options ?? { childList: true };
|
|
456
|
+
if (typeof e.target === "string") {
|
|
457
|
+
const scope = resolveDelegateRoots(e.delegateRoot);
|
|
458
|
+
for (const sr of scope) {
|
|
459
|
+
sr.querySelectorAll(e.target).forEach((el) => addObserveTarget(el, init));
|
|
460
|
+
}
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
463
|
+
addObserveTarget(e.target, init);
|
|
464
|
+
}
|
|
465
|
+
for (const d of resizeDelegates) {
|
|
466
|
+
for (const r of resolveDelegateRoots(d.delegateRoot)) addObserveTarget(r, { childList: true, subtree: true });
|
|
467
|
+
}
|
|
468
|
+
for (const d of intersectionDelegates) {
|
|
469
|
+
for (const r of resolveDelegateRoots(d.delegateRoot)) addObserveTarget(r, { childList: true, subtree: true });
|
|
470
|
+
}
|
|
471
|
+
for (const [target, options] of moObserveTargets) {
|
|
472
|
+
mo.observe(target, options);
|
|
473
|
+
}
|
|
474
|
+
observers.push(mo);
|
|
475
|
+
}
|
|
476
|
+
inst.__swc_observers = observers;
|
|
477
|
+
};
|
|
266
478
|
const originalConnected = proto.connectedCallback;
|
|
267
479
|
proto.connectedCallback = async function() {
|
|
268
480
|
ensureInit(this);
|
|
@@ -278,14 +490,12 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
278
490
|
}
|
|
279
491
|
const conf = getElementConfig(this);
|
|
280
492
|
const currentWin = this._resolveWindow(conf);
|
|
281
|
-
const
|
|
282
|
-
for (const m of bMethods) await this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
493
|
+
for (const m of (0, import_lifecycles.findAllOnConnectedBeforeMetadata)(this)) await this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
283
494
|
this._executeSwcScript("swc-on-before-connected", helperHostSet);
|
|
284
495
|
const targetConnectedList = useSsr ? [] : (0, import_lifecycles.findAllOnConnectedMetadata)(constructor);
|
|
285
496
|
const shadowMode = conf?.useShadow || targetConnectedList.find((it) => it.options.useShadow)?.options.useShadow;
|
|
286
497
|
if (shadowMode && !this.shadowRoot) {
|
|
287
498
|
const mode = shadowMode === true ? "open" : shadowMode;
|
|
288
|
-
console.log("tagName=", this.tagName, "mode", mode, this.shadowRoot);
|
|
289
499
|
this.attachShadow({ mode });
|
|
290
500
|
}
|
|
291
501
|
const stateContext = { ...helperHostSet };
|
|
@@ -294,7 +504,6 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
294
504
|
});
|
|
295
505
|
const shadowChildren = [];
|
|
296
506
|
const lightChildren = [];
|
|
297
|
-
console.log("targetConnectList", this.tagName, targetConnectedList.length);
|
|
298
507
|
if (targetConnectedList.length > 0) {
|
|
299
508
|
for (const meta of targetConnectedList) {
|
|
300
509
|
let res = await this._invokeLifecycleMethod(meta.propertyKey, helperHostSet);
|
|
@@ -335,188 +544,14 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
335
544
|
});
|
|
336
545
|
globalDelegatedRoots.add(root);
|
|
337
546
|
}
|
|
338
|
-
|
|
339
|
-
const nonDelegateListeners = [];
|
|
340
|
-
addEventListenerList.forEach((meta) => {
|
|
341
|
-
const isStringSelector = typeof meta.selector === "string";
|
|
342
|
-
if (meta.options.delegate && isStringSelector && meta.selector !== "$window" && meta.selector !== "$document" && meta.selector !== "$host" && meta.selector !== "$appHost" && meta.selector !== "$firstHost" && meta.selector !== "$lastHost" && meta.selector !== "$firstAppHost" && meta.selector !== "$lastAppHost" && meta.selector !== "$hosts" && meta.selector !== "$appHosts" && meta.selector !== "$this" && meta.selector !== "") {
|
|
343
|
-
delegateListeners.push(meta);
|
|
344
|
-
} else {
|
|
345
|
-
nonDelegateListeners.push(meta);
|
|
346
|
-
}
|
|
347
|
-
});
|
|
348
|
-
const delegatesByTypeAndRoot = /* @__PURE__ */ new Map();
|
|
349
|
-
delegateListeners.forEach((meta) => {
|
|
350
|
-
const r = meta.options.root || "auto";
|
|
351
|
-
const rootKey = `${meta.type}:${r}`;
|
|
352
|
-
if (!delegatesByTypeAndRoot.has(rootKey)) {
|
|
353
|
-
delegatesByTypeAndRoot.set(rootKey, []);
|
|
354
|
-
}
|
|
355
|
-
delegatesByTypeAndRoot.get(rootKey).push(meta);
|
|
356
|
-
});
|
|
357
|
-
delegatesByTypeAndRoot.forEach((metaList, typeRootKey) => {
|
|
358
|
-
const [type, rStr] = typeRootKey.split(":");
|
|
359
|
-
const r = rStr === "auto" ? "auto" : rStr;
|
|
360
|
-
const opts = { capture: metaList[0].options.capture, once: metaList[0].options.once, passive: metaList[0].options.passive };
|
|
361
|
-
const bindRoots = [];
|
|
362
|
-
if (r === "auto") bindRoots.push(this.shadowRoot || this);
|
|
363
|
-
else if (r === "light") bindRoots.push(this);
|
|
364
|
-
else if (r === "shadow" && this.shadowRoot) bindRoots.push(this.shadowRoot);
|
|
365
|
-
else if (r === "all") {
|
|
366
|
-
bindRoots.push(this);
|
|
367
|
-
if (this.shadowRoot) bindRoots.push(this.shadowRoot);
|
|
368
|
-
}
|
|
369
|
-
bindRoots.forEach((br) => {
|
|
370
|
-
const sortedMetaList = [...metaList].sort((a, b) => {
|
|
371
|
-
const aStop = a.options.stopPropagation ? 1 : 0;
|
|
372
|
-
const bStop = b.options.stopPropagation ? 1 : 0;
|
|
373
|
-
return bStop - aStop;
|
|
374
|
-
});
|
|
375
|
-
const unifiedHandler = async (event) => {
|
|
376
|
-
for (const meta of sortedMetaList) {
|
|
377
|
-
const { selector, options } = meta;
|
|
378
|
-
const matchedEl = event.target?.closest(selector);
|
|
379
|
-
if (matchedEl && br.contains(matchedEl)) {
|
|
380
|
-
if (options.filter) {
|
|
381
|
-
const helper = import_Utils.SwcUtils.getHelperAndHostSet(currentWin, matchedEl);
|
|
382
|
-
if (!options.filter(event, helper)) {
|
|
383
|
-
continue;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
if (options.stopPropagation) event.stopPropagation();
|
|
387
|
-
if (options.stopImmediatePropagation) event.stopImmediatePropagation();
|
|
388
|
-
if (options.preventDefault) event.preventDefault();
|
|
389
|
-
const currentHostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
390
|
-
const args = { event, ...currentHostSet, $el: matchedEl, $root: br };
|
|
391
|
-
await this[meta.propertyKey](event, { ...currentHostSet, $matchedElement: matchedEl }, args);
|
|
392
|
-
if (event.cancelBubble) break;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
};
|
|
396
|
-
br.addEventListener(type, unifiedHandler, opts);
|
|
397
|
-
this._boundListeners.push({ target: br, type, handler: unifiedHandler, options: opts });
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
nonDelegateListeners.forEach((meta) => {
|
|
401
|
-
const { selector, type, options } = meta;
|
|
402
|
-
const opts = { capture: options.capture, once: options.once, passive: options.passive };
|
|
403
|
-
const bindTargets = [];
|
|
404
|
-
const r = options.root || "auto";
|
|
405
|
-
let resolvedSelector = null;
|
|
406
|
-
if (typeof selector === "function") {
|
|
407
|
-
const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(currentWin, this);
|
|
408
|
-
const result = selector(this, hostSet);
|
|
409
|
-
if (typeof result === "string") {
|
|
410
|
-
resolvedSelector = result;
|
|
411
|
-
} else if (result instanceof currentWin.Element) {
|
|
412
|
-
bindTargets.push(result);
|
|
413
|
-
} else if (result instanceof currentWin.NodeList) {
|
|
414
|
-
bindTargets.push(...Array.from(result));
|
|
415
|
-
} else if (Array.isArray(result)) {
|
|
416
|
-
bindTargets.push(...result);
|
|
417
|
-
}
|
|
418
|
-
} else {
|
|
419
|
-
resolvedSelector = selector;
|
|
420
|
-
}
|
|
421
|
-
const applyRootOption = (target) => {
|
|
422
|
-
if (!target) return;
|
|
423
|
-
if (r === "auto") {
|
|
424
|
-
bindTargets.push(target.shadowRoot || target);
|
|
425
|
-
} else {
|
|
426
|
-
if (r === "light" || r === "all") bindTargets.push(target);
|
|
427
|
-
if ((r === "shadow" || r === "all") && target.shadowRoot) bindTargets.push(target.shadowRoot);
|
|
428
|
-
}
|
|
429
|
-
};
|
|
430
|
-
if (resolvedSelector) {
|
|
431
|
-
if (resolvedSelector === "$window") bindTargets.push(currentWin);
|
|
432
|
-
else if (resolvedSelector === "$document") bindTargets.push(currentWin.document);
|
|
433
|
-
else if (resolvedSelector === "$host") applyRootOption(helperHostSet.$host);
|
|
434
|
-
else if (resolvedSelector === "$parentHost") applyRootOption(helperHostSet.$parentHost);
|
|
435
|
-
else if (resolvedSelector === "$appHost") applyRootOption(helperHostSet.$appHost);
|
|
436
|
-
else if (resolvedSelector === "$firstHost") applyRootOption(helperHostSet.$firstHost);
|
|
437
|
-
else if (resolvedSelector === "$lastHost") applyRootOption(helperHostSet.$lastHost);
|
|
438
|
-
else if (resolvedSelector === "$firstAppHost") applyRootOption(helperHostSet.$firstAppHost);
|
|
439
|
-
else if (resolvedSelector === "$lastAppHost") applyRootOption(helperHostSet.$lastAppHost);
|
|
440
|
-
else if (resolvedSelector === "$hosts") helperHostSet.$hosts.forEach(applyRootOption);
|
|
441
|
-
else if (resolvedSelector === "$appHosts") helperHostSet.$appHosts.forEach(applyRootOption);
|
|
442
|
-
else if (resolvedSelector === "$this" || !resolvedSelector) applyRootOption(this);
|
|
443
|
-
else {
|
|
444
|
-
const searchRoots = [];
|
|
445
|
-
if (r === "auto") searchRoots.push(this.shadowRoot || this);
|
|
446
|
-
else if (r === "light") searchRoots.push(this);
|
|
447
|
-
else if (r === "shadow" && this.shadowRoot) searchRoots.push(this.shadowRoot);
|
|
448
|
-
else if (r === "all") {
|
|
449
|
-
searchRoots.push(this);
|
|
450
|
-
if (this.shadowRoot) searchRoots.push(this.shadowRoot);
|
|
451
|
-
}
|
|
452
|
-
searchRoots.forEach((sr) => {
|
|
453
|
-
sr.querySelectorAll(resolvedSelector).forEach((el) => bindTargets.push(el));
|
|
454
|
-
});
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
bindTargets.forEach((t) => {
|
|
458
|
-
const handler = async (event) => {
|
|
459
|
-
if (options.filter) {
|
|
460
|
-
const helper = import_Utils.SwcUtils.getHelperAndHostSet(currentWin, t);
|
|
461
|
-
if (!options.filter(event, { currentThis: this, helper })) {
|
|
462
|
-
return;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
if (options.stopPropagation) event.stopPropagation();
|
|
466
|
-
if (options.stopImmediatePropagation) event.stopImmediatePropagation();
|
|
467
|
-
if (options.preventDefault) event.preventDefault();
|
|
468
|
-
const currentHostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
469
|
-
const args = { event, ...currentHostSet, $el: t, $root: t };
|
|
470
|
-
await this[meta.propertyKey](event, { currentHostSet, $matchedElement: event.currentTarget }, args);
|
|
471
|
-
};
|
|
472
|
-
const eventSubject = new import_core.Subject();
|
|
473
|
-
let eventStream = eventSubject;
|
|
474
|
-
if (options.debounceTime !== void 0 && options.debounceTime > 0) {
|
|
475
|
-
eventStream = eventStream.pipe((0, import_operators.debounceTime)(options.debounceTime));
|
|
476
|
-
}
|
|
477
|
-
if (options.throttleTime !== void 0 && options.throttleTime > 0) {
|
|
478
|
-
eventStream = eventStream.pipe((0, import_operators.throttleTime)(options.throttleTime));
|
|
479
|
-
}
|
|
480
|
-
if (options.distinctUntilChanged !== void 0 && options.distinctUntilChanged !== false) {
|
|
481
|
-
if (typeof options.distinctUntilChanged === "function") {
|
|
482
|
-
eventStream = eventStream.pipe((0, import_operators.distinctUntilChanged)(options.distinctUntilChanged));
|
|
483
|
-
} else {
|
|
484
|
-
eventStream = eventStream.pipe((0, import_operators.distinctUntilChanged)());
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
const subscription = eventStream.subscribe({
|
|
488
|
-
next: (event) => {
|
|
489
|
-
handler(event).catch((err) => console.error("Event handler error:", err));
|
|
490
|
-
},
|
|
491
|
-
error: (err) => console.error("Event stream error:", err)
|
|
492
|
-
});
|
|
493
|
-
const wrappedHandler = (event) => {
|
|
494
|
-
eventSubject.next(event);
|
|
495
|
-
};
|
|
496
|
-
t.addEventListener(type, wrappedHandler, opts);
|
|
497
|
-
this._boundListeners.push({ target: t, type, handler: wrappedHandler, options: opts, subscription });
|
|
498
|
-
});
|
|
499
|
-
});
|
|
547
|
+
await buildObservers(import_Utils.SwcUtils.getHelperAndHostSet(win, this));
|
|
500
548
|
if (originalConnected) await originalConnected.apply(this);
|
|
501
|
-
const
|
|
502
|
-
for (const m of aMethods) await this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
549
|
+
for (const m of (0, import_lifecycles.findAllOnConnectedAfterMetadata)(this)) await this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
503
550
|
this._executeSwcScript("swc-on-connected", helperHostSet);
|
|
504
551
|
this._executeSwcScript("swc-on-after-connected", helperHostSet);
|
|
505
552
|
this.__swc_connected = true;
|
|
506
|
-
for (let [name2, metaList] of Array.from(attrChangeMap)) {
|
|
507
|
-
for (const meta of metaList) {
|
|
508
|
-
if (meta.options.while === "connected") {
|
|
509
|
-
const val = (0, import_applyAttribute.getAttributeValue)(this, name2, { type: meta.options.type });
|
|
510
|
-
if (val !== null) {
|
|
511
|
-
await this[meta.propertyKey](val, null, name2, helperHostSet);
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
553
|
} finally {
|
|
517
|
-
for (
|
|
518
|
-
await this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
519
|
-
}
|
|
554
|
+
for (const m of (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_CONNECTED_COMPLETED_METADATA_KEY)) await this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
520
555
|
if (appHost && typeof appHost._connectedDone === "function") {
|
|
521
556
|
await appHost._connectedDone(this);
|
|
522
557
|
}
|
|
@@ -524,26 +559,24 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
524
559
|
};
|
|
525
560
|
const originalDisconnected = proto.disconnectedCallback;
|
|
526
561
|
proto.disconnectedCallback = function() {
|
|
527
|
-
const appHost = helperHostSet
|
|
562
|
+
const appHost = helperHostSet?.$appHost;
|
|
528
563
|
if (appHost && typeof appHost._disconnected === "function") {
|
|
529
564
|
appHost._disconnected(this);
|
|
530
565
|
}
|
|
531
566
|
this._executeSwcScript("swc-on-before-disconnected", helperHostSet);
|
|
532
|
-
const
|
|
533
|
-
for (const
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
});
|
|
541
|
-
this._boundListeners = [];
|
|
567
|
+
for (const m of (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_BEFORE_DISCONNECTED_METADATA_KEY)) this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
568
|
+
for (const c of cyclers) c.onDisconnected?.(helperHostSet);
|
|
569
|
+
for (const o of this.__swc_observers ?? []) {
|
|
570
|
+
try {
|
|
571
|
+
o?.disconnect?.();
|
|
572
|
+
} catch (e) {
|
|
573
|
+
console.error("[SWC] observer disconnect error:", e);
|
|
574
|
+
}
|
|
542
575
|
}
|
|
576
|
+
this.__swc_observers = [];
|
|
543
577
|
new import_core_web.ElementApply(this, { id: this._swcId }).removeAllEventListener();
|
|
544
578
|
if (originalDisconnected) originalDisconnected.apply(this);
|
|
545
|
-
const
|
|
546
|
-
for (const m of aMethods) this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
579
|
+
for (const m of (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_AFTER_DISCONNECTED_METADATA_KEY)) this._invokeLifecycleMethod(m.propertyKey, helperHostSet);
|
|
547
580
|
this._executeSwcScript("swc-on-disconnected", helperHostSet);
|
|
548
581
|
this._executeSwcScript("swc-on-after-disconnected", helperHostSet);
|
|
549
582
|
this.__swc_connected = false;
|
|
@@ -552,35 +585,34 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
552
585
|
proto.adoptedCallback = function() {
|
|
553
586
|
const hostSet = import_Utils.SwcUtils.getHostSet(this);
|
|
554
587
|
this._executeSwcScript("swc-on-before-adopted", hostSet);
|
|
555
|
-
const
|
|
556
|
-
for (const
|
|
588
|
+
for (const m of (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_BEFORE_ADOPTED_METADATA_KEY)) this._invokeLifecycleMethod(m.propertyKey, hostSet);
|
|
589
|
+
for (const c of cyclers) c.onAdopted?.(helperHostSet);
|
|
557
590
|
if (originalAdopted) originalAdopted.apply(this);
|
|
558
|
-
const
|
|
559
|
-
for (const m of aMethods) this._invokeLifecycleMethod(m.propertyKey, hostSet);
|
|
591
|
+
for (const m of (0, import_lifecycles.findAllLifecycleMetadata)(this, import_lifecycles.ON_AFTER_ADOPTED_METADATA_KEY)) this._invokeLifecycleMethod(m.propertyKey, hostSet);
|
|
560
592
|
this._executeSwcScript("swc-on-adopted", hostSet);
|
|
561
593
|
this._executeSwcScript("swc-on-after-adopted", hostSet);
|
|
562
594
|
};
|
|
563
595
|
const originalAttributeChanged = proto.attributeChangedCallback;
|
|
564
596
|
proto.attributeChangedCallback = function(name2, old, newVal) {
|
|
565
597
|
if (originalAttributeChanged) originalAttributeChanged.apply(this, [name2, old, newVal]);
|
|
566
|
-
const
|
|
598
|
+
const helperAndHostSet = import_Utils.SwcUtils.getHelperAndHostSet(win, this);
|
|
567
599
|
let processedVal = newVal;
|
|
568
600
|
if (newVal !== null) {
|
|
569
601
|
const ae = new import_core.ActionExpression(newVal);
|
|
570
602
|
const expr = ae.getFirstExpression("callReturn");
|
|
571
603
|
if (expr) {
|
|
572
604
|
const win2 = this._resolveWindow?.() || (typeof window !== "undefined" ? window : void 0);
|
|
573
|
-
const
|
|
605
|
+
const exprHelperAndHostSet = import_Utils.SwcUtils.getHelperAndHostSet(win2, this);
|
|
574
606
|
const script = import_core_web.ConvertUtils.decodeHtmlEntity(expr.script, win2.document);
|
|
575
607
|
try {
|
|
576
608
|
const result = import_core.FunctionUtils.executeReturn({
|
|
577
609
|
script,
|
|
578
610
|
context: this,
|
|
579
|
-
args:
|
|
611
|
+
args: exprHelperAndHostSet
|
|
580
612
|
});
|
|
581
613
|
processedVal = result;
|
|
582
614
|
} catch (e) {
|
|
583
|
-
console.error(`[SWC] Failed to execute directive {{= ${expr.script} }} on attribute ${name2}: ${
|
|
615
|
+
console.error(`[SWC] Failed to execute directive {{= ${expr.script} }} on attribute ${name2}: ${exprHelperAndHostSet}`, e);
|
|
584
616
|
processedVal = newVal;
|
|
585
617
|
}
|
|
586
618
|
}
|
|
@@ -591,20 +623,7 @@ const elementDefine = (name, config = {}) => (constructor) => {
|
|
|
591
623
|
this._bindAttributeEvent(this, name2, newVal, eventName);
|
|
592
624
|
}
|
|
593
625
|
}
|
|
594
|
-
const
|
|
595
|
-
if (hostCustomEventMeta && newVal !== null) {
|
|
596
|
-
this._bindAttributeEvent(this, name2, newVal, hostCustomEventMeta.type);
|
|
597
|
-
}
|
|
598
|
-
const metaList = attrChangeMap.get(name2);
|
|
599
|
-
if (metaList && Array.isArray(metaList)) {
|
|
600
|
-
for (const meta of metaList) {
|
|
601
|
-
if (meta.options.while === "connected" && !this.__swc_connected) {
|
|
602
|
-
continue;
|
|
603
|
-
}
|
|
604
|
-
const convertedVal = (0, import_changedAttribute.convertAttributeValue)(processedVal, meta.options.type);
|
|
605
|
-
this[meta.propertyKey](convertedVal, old, name2, hSet);
|
|
606
|
-
}
|
|
607
|
-
}
|
|
626
|
+
for (const c of cyclers) c.onAttributeChanged?.(helperAndHostSet, name2, old, processedVal);
|
|
608
627
|
};
|
|
609
628
|
Object.defineProperty(constructor, "observedAttributes", {
|
|
610
629
|
get: () => mergedObservedAttributes,
|