@dooboostore/simple-web-component 1.0.49 → 1.0.51
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 +790 -337
- package/dist/cjs/SwcAppEngine.js.map +2 -2
- package/dist/cjs/decorators/addEventListener.js +1925 -22
- package/dist/cjs/decorators/addEventListener.js.map +2 -2
- package/dist/cjs/decorators/applyAttribute.js +41 -47
- package/dist/cjs/decorators/applyAttribute.js.map +2 -2
- package/dist/cjs/decorators/applyClass.js +14 -11
- package/dist/cjs/decorators/applyClass.js.map +2 -2
- package/dist/cjs/decorators/applyNode.js +19 -21
- package/dist/cjs/decorators/applyNode.js.map +2 -2
- package/dist/cjs/decorators/applyProperty.js +24 -48
- package/dist/cjs/decorators/applyProperty.js.map +2 -2
- package/dist/cjs/decorators/applySlot.js +9 -8
- package/dist/cjs/decorators/applySlot.js.map +2 -2
- package/dist/cjs/decorators/applyStyle.js +14 -11
- package/dist/cjs/decorators/applyStyle.js.map +2 -2
- package/dist/cjs/decorators/around.js +124 -0
- package/dist/cjs/decorators/around.js.map +7 -0
- package/dist/cjs/decorators/changedAttribute.js +61 -24
- package/dist/cjs/decorators/changedAttribute.js.map +2 -2
- package/dist/cjs/decorators/elementDefine.js +240 -196
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/emitCustomEvent.js +14 -12
- package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
- package/dist/cjs/decorators/eventMedia.js +112 -0
- package/dist/cjs/decorators/eventMedia.js.map +7 -0
- package/dist/cjs/decorators/fetch.js +278 -0
- package/dist/cjs/decorators/fetch.js.map +7 -0
- package/dist/cjs/decorators/index.js +8 -2
- package/dist/cjs/decorators/index.js.map +2 -2
- package/dist/cjs/decorators/intersectionObserver.js +76 -65
- package/dist/cjs/decorators/intersectionObserver.js.map +2 -2
- package/dist/cjs/decorators/lifecycles.js +11 -11
- package/dist/cjs/decorators/lifecycles.js.map +2 -2
- package/dist/cjs/decorators/mutationObserver.js +97 -90
- package/dist/cjs/decorators/mutationObserver.js.map +3 -3
- package/dist/cjs/decorators/parameter.js +156 -0
- package/dist/cjs/decorators/parameter.js.map +7 -0
- package/dist/cjs/decorators/publishSwcAppMessage.js +2 -2
- package/dist/cjs/decorators/publishSwcAppMessage.js.map +2 -2
- package/dist/cjs/decorators/query.js +11 -5
- package/dist/cjs/decorators/query.js.map +2 -2
- package/dist/cjs/decorators/requestAnimationFrame.js +115 -0
- package/dist/cjs/decorators/requestAnimationFrame.js.map +7 -0
- package/dist/cjs/decorators/resizeObserver.js +84 -69
- package/dist/cjs/decorators/resizeObserver.js.map +3 -3
- package/dist/cjs/decorators/setInterval.js +65 -22
- package/dist/cjs/decorators/setInterval.js.map +2 -2
- package/dist/cjs/decorators/setTimeout.js +68 -22
- package/dist/cjs/decorators/setTimeout.js.map +2 -2
- package/dist/cjs/decorators/state.js +13 -10
- package/dist/cjs/decorators/state.js.map +2 -2
- package/dist/cjs/decorators/{subscribeSwcAppMessageWhileConnected.js → subscribeSwcAppMessage.js} +20 -21
- package/dist/cjs/decorators/subscribeSwcAppMessage.js.map +7 -0
- package/dist/cjs/decorators/{subscribeSwcAppRouteChangeWhileConnected.js → subscribeSwcAppRouteChange.js} +23 -19
- package/dist/cjs/decorators/subscribeSwcAppRouteChange.js.map +7 -0
- package/dist/cjs/decorators/swcAppRoute.js +149 -0
- package/dist/cjs/decorators/swcAppRoute.js.map +7 -0
- package/dist/cjs/elements/SwcApp.js +70 -0
- package/dist/cjs/elements/SwcApp.js.map +2 -2
- package/dist/cjs/elements/SwcAppMixin.js +256 -67
- package/dist/cjs/elements/SwcAppMixin.js.map +3 -3
- package/dist/cjs/types/index.js +5 -1
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/cjs/types/window.d.js.map +1 -1
- package/dist/cjs/utils/Utils.js +36 -15
- package/dist/cjs/utils/Utils.js.map +2 -2
- package/dist/esm/SwcAppEngine.js.map +2 -2
- package/dist/esm/decorators/addEventListener.js +1925 -22
- package/dist/esm/decorators/addEventListener.js.map +2 -2
- package/dist/esm/decorators/applyAttribute.js +41 -47
- package/dist/esm/decorators/applyAttribute.js.map +2 -2
- package/dist/esm/decorators/applyClass.js +14 -11
- package/dist/esm/decorators/applyClass.js.map +2 -2
- package/dist/esm/decorators/applyNode.js +20 -22
- package/dist/esm/decorators/applyNode.js.map +2 -2
- package/dist/esm/decorators/applyProperty.js +24 -48
- package/dist/esm/decorators/applyProperty.js.map +2 -2
- package/dist/esm/decorators/applySlot.js +9 -8
- package/dist/esm/decorators/applySlot.js.map +2 -2
- package/dist/esm/decorators/applyStyle.js +14 -11
- package/dist/esm/decorators/applyStyle.js.map +2 -2
- package/dist/esm/decorators/around.js +105 -0
- package/dist/esm/decorators/around.js.map +7 -0
- package/dist/esm/decorators/changedAttribute.js +61 -24
- package/dist/esm/decorators/changedAttribute.js.map +2 -2
- package/dist/esm/decorators/elementDefine.js +238 -194
- package/dist/esm/decorators/elementDefine.js.map +3 -3
- package/dist/esm/decorators/emitCustomEvent.js +15 -13
- package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
- package/dist/esm/decorators/eventMedia.js +94 -0
- package/dist/esm/decorators/eventMedia.js.map +7 -0
- package/dist/esm/decorators/fetch.js +259 -0
- package/dist/esm/decorators/fetch.js.map +7 -0
- package/dist/esm/decorators/index.js +8 -2
- package/dist/esm/decorators/index.js.map +2 -2
- package/dist/esm/decorators/intersectionObserver.js +76 -65
- package/dist/esm/decorators/intersectionObserver.js.map +2 -2
- package/dist/esm/decorators/lifecycles.js +11 -11
- package/dist/esm/decorators/lifecycles.js.map +2 -2
- package/dist/esm/decorators/mutationObserver.js +97 -90
- package/dist/esm/decorators/mutationObserver.js.map +3 -3
- package/dist/esm/decorators/parameter.js +137 -0
- package/dist/esm/decorators/parameter.js.map +7 -0
- package/dist/esm/decorators/publishSwcAppMessage.js +2 -2
- package/dist/esm/decorators/publishSwcAppMessage.js.map +2 -2
- package/dist/esm/decorators/query.js +11 -5
- package/dist/esm/decorators/query.js.map +2 -2
- package/dist/esm/decorators/requestAnimationFrame.js +96 -0
- package/dist/esm/decorators/requestAnimationFrame.js.map +7 -0
- package/dist/esm/decorators/resizeObserver.js +84 -69
- package/dist/esm/decorators/resizeObserver.js.map +2 -2
- package/dist/esm/decorators/setInterval.js +65 -23
- package/dist/esm/decorators/setInterval.js.map +2 -2
- package/dist/esm/decorators/setTimeout.js +68 -23
- package/dist/esm/decorators/setTimeout.js.map +2 -2
- package/dist/esm/decorators/state.js +13 -10
- package/dist/esm/decorators/state.js.map +2 -2
- package/dist/esm/decorators/subscribeSwcAppMessage.js +53 -0
- package/dist/esm/decorators/subscribeSwcAppMessage.js.map +7 -0
- package/dist/esm/decorators/{subscribeSwcAppRouteChangeWhileConnected.js → subscribeSwcAppRouteChange.js} +20 -16
- package/dist/esm/decorators/subscribeSwcAppRouteChange.js.map +7 -0
- package/dist/esm/decorators/swcAppRoute.js +130 -0
- package/dist/esm/decorators/swcAppRoute.js.map +7 -0
- package/dist/esm/elements/SwcApp.js +70 -0
- package/dist/esm/elements/SwcApp.js.map +2 -2
- package/dist/esm/elements/SwcAppMixin.js +258 -69
- package/dist/esm/elements/SwcAppMixin.js.map +3 -3
- package/dist/esm/types/index.js +5 -1
- package/dist/esm/types/index.js.map +2 -2
- package/dist/esm/utils/Utils.js +36 -15
- package/dist/esm/utils/Utils.js.map +2 -2
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +4395 -1266
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/SwcAppEngine.d.ts +1 -0
- package/dist/types/SwcAppEngine.d.ts.map +1 -1
- package/dist/types/decorators/addEventListener.d.ts +936 -11
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/applyAttribute.d.ts +27 -37
- package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
- package/dist/types/decorators/applyClass.d.ts +2 -2
- package/dist/types/decorators/applyClass.d.ts.map +1 -1
- package/dist/types/decorators/applyNode.d.ts +16 -16
- package/dist/types/decorators/applyNode.d.ts.map +1 -1
- package/dist/types/decorators/applyProperty.d.ts +28 -44
- package/dist/types/decorators/applyProperty.d.ts.map +1 -1
- package/dist/types/decorators/applySlot.d.ts.map +1 -1
- package/dist/types/decorators/applyStyle.d.ts +2 -2
- package/dist/types/decorators/applyStyle.d.ts.map +1 -1
- package/dist/types/decorators/around.d.ts +87 -0
- package/dist/types/decorators/around.d.ts.map +1 -0
- package/dist/types/decorators/changedAttribute.d.ts +22 -4
- 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 +0 -1
- package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
- package/dist/types/decorators/eventMedia.d.ts +48 -0
- package/dist/types/decorators/eventMedia.d.ts.map +1 -0
- package/dist/types/decorators/fetch.d.ts +139 -0
- package/dist/types/decorators/fetch.d.ts.map +1 -0
- package/dist/types/decorators/index.d.ts +8 -2
- package/dist/types/decorators/index.d.ts.map +1 -1
- package/dist/types/decorators/intersectionObserver.d.ts +32 -10
- package/dist/types/decorators/intersectionObserver.d.ts.map +1 -1
- package/dist/types/decorators/lifecycles.d.ts +8 -7
- package/dist/types/decorators/lifecycles.d.ts.map +1 -1
- package/dist/types/decorators/mutationObserver.d.ts +34 -12
- package/dist/types/decorators/mutationObserver.d.ts.map +1 -1
- package/dist/types/decorators/parameter.d.ts +113 -0
- package/dist/types/decorators/parameter.d.ts.map +1 -0
- package/dist/types/decorators/publishSwcAppMessage.d.ts +0 -1
- package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
- package/dist/types/decorators/query.d.ts +7 -7
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/requestAnimationFrame.d.ts +47 -0
- package/dist/types/decorators/requestAnimationFrame.d.ts.map +1 -0
- package/dist/types/decorators/resizeObserver.d.ts +34 -12
- package/dist/types/decorators/resizeObserver.d.ts.map +1 -1
- package/dist/types/decorators/setInterval.d.ts +27 -5
- package/dist/types/decorators/setInterval.d.ts.map +1 -1
- package/dist/types/decorators/setTimeout.d.ts +27 -5
- package/dist/types/decorators/setTimeout.d.ts.map +1 -1
- package/dist/types/decorators/state.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppMessage.d.ts +44 -0
- package/dist/types/decorators/subscribeSwcAppMessage.d.ts.map +1 -0
- package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts +60 -0
- package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts.map +1 -0
- package/dist/types/decorators/swcAppRoute.d.ts +94 -0
- package/dist/types/decorators/swcAppRoute.d.ts.map +1 -0
- package/dist/types/elements/SwcApp.d.ts.map +1 -1
- package/dist/types/elements/SwcAppMixin.d.ts +423 -388
- package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +43 -4
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/Utils.d.ts +15 -5
- package/dist/types/utils/Utils.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +4395 -1266
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +8 -6
- package/src/SwcAppEngine.ts +1 -0
- package/src/decorators/addEventListener.ts +1086 -28
- package/src/decorators/applyAttribute.ts +82 -134
- package/src/decorators/applyClass.ts +14 -10
- package/src/decorators/applyNode.ts +39 -37
- package/src/decorators/applyProperty.ts +72 -100
- package/src/decorators/applySlot.ts +9 -8
- package/src/decorators/applyStyle.ts +14 -10
- package/src/decorators/around.ts +196 -0
- package/src/decorators/changedAttribute.ts +65 -26
- package/src/decorators/elementDefine.ts +298 -220
- package/src/decorators/emitCustomEvent.ts +17 -13
- package/src/decorators/eventMedia.ts +119 -0
- package/src/decorators/fetch.ts +454 -0
- package/src/decorators/index.ts +8 -2
- package/src/decorators/intersectionObserver.ts +108 -78
- package/src/decorators/lifecycles.ts +24 -22
- package/src/decorators/mutationObserver.ts +140 -104
- package/src/decorators/parameter.ts +212 -0
- package/src/decorators/publishSwcAppMessage.ts +3 -4
- package/src/decorators/query.ts +22 -14
- package/src/decorators/requestAnimationFrame.ts +149 -0
- package/src/decorators/resizeObserver.ts +119 -82
- package/src/decorators/setInterval.ts +90 -23
- package/src/decorators/setTimeout.ts +93 -23
- package/src/decorators/state.ts +19 -13
- package/src/decorators/subscribeSwcAppMessage.ts +106 -0
- package/src/decorators/subscribeSwcAppRouteChange.ts +131 -0
- package/src/decorators/swcAppRoute.ts +231 -0
- package/src/elements/SwcApp.ts +40 -10
- package/src/elements/SwcAppMixin.ts +329 -85
- package/src/types/index.ts +38 -5
- package/src/types/window.d.ts +2 -18
- package/src/utils/Utils.ts +50 -18
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +0 -7
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +0 -7
- package/dist/cjs/examples/RxJSOperatorsExample.js +0 -285
- package/dist/cjs/examples/RxJSOperatorsExample.js.map +0 -7
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +0 -54
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +0 -7
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +0 -7
- package/dist/esm/examples/RxJSOperatorsExample.js +0 -266
- package/dist/esm/examples/RxJSOperatorsExample.js.map +0 -7
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +0 -23
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +0 -1
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +0 -31
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +0 -1
- package/dist/types/examples/RxJSOperatorsExample.d.ts +0 -94
- package/dist/types/examples/RxJSOperatorsExample.d.ts.map +0 -1
- package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +0 -91
- package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +0 -107
- package/src/examples/RxJSOperatorsExample.ts +0 -279
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var requestAnimationFrame_exports = {};
|
|
19
|
+
__export(requestAnimationFrame_exports, {
|
|
20
|
+
REQUEST_ANIMATION_FRAME_METADATA_KEY: () => REQUEST_ANIMATION_FRAME_METADATA_KEY,
|
|
21
|
+
RequestAnimationFrameLifeCycler: () => RequestAnimationFrameLifeCycler,
|
|
22
|
+
findAllRequestAnimationFrameMetadata: () => findAllRequestAnimationFrameMetadata,
|
|
23
|
+
requestAnimationFrame: () => requestAnimationFrame
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(requestAnimationFrame_exports);
|
|
26
|
+
var import_core = require("@dooboostore/core");
|
|
27
|
+
var import_elementDefine = require("./elementDefine");
|
|
28
|
+
var import_Utils = require("../utils/Utils");
|
|
29
|
+
const REQUEST_ANIMATION_FRAME_METADATA_KEY = Symbol.for("simple-web-component:request-animation-frame");
|
|
30
|
+
const getActiveEntries = (inst) => inst.__swc_requestAnimationFrameIds ?? (inst.__swc_requestAnimationFrameIds = []);
|
|
31
|
+
const startFrameLoop = (win, entries, frameFn) => {
|
|
32
|
+
let currentId = 0;
|
|
33
|
+
const step = (timestamp, prevValue) => {
|
|
34
|
+
const idx = entries.indexOf(currentId);
|
|
35
|
+
if (idx >= 0) entries.splice(idx, 1);
|
|
36
|
+
let result;
|
|
37
|
+
try {
|
|
38
|
+
result = frameFn(timestamp, prevValue);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
console.error("[SWC] requestAnimationFrame callback error:", e);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (result === void 0 || result === null) return;
|
|
44
|
+
currentId = win.requestAnimationFrame((ts) => step(ts, result));
|
|
45
|
+
entries.push(currentId);
|
|
46
|
+
};
|
|
47
|
+
currentId = win.requestAnimationFrame((ts) => step(ts, void 0));
|
|
48
|
+
entries.push(currentId);
|
|
49
|
+
return currentId;
|
|
50
|
+
};
|
|
51
|
+
const applyRequestAnimationFrame = (options, target, propertyKey, descriptor) => {
|
|
52
|
+
const constructor = target.constructor;
|
|
53
|
+
const normalizedOptions = { ...options, type: options.type ?? "returnValue" };
|
|
54
|
+
let metaList = import_core.ReflectUtils.getOwnMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, constructor);
|
|
55
|
+
if (!metaList) {
|
|
56
|
+
metaList = [];
|
|
57
|
+
import_core.ReflectUtils.defineMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, metaList, constructor);
|
|
58
|
+
}
|
|
59
|
+
metaList.push({ propertyKey, options: normalizedOptions });
|
|
60
|
+
if (normalizedOptions.type === "onConnected" || !descriptor) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const original = descriptor.value;
|
|
64
|
+
descriptor.value = function(...args) {
|
|
65
|
+
const res = original.apply(this, args);
|
|
66
|
+
const vk = normalizedOptions.valueKey ?? REQUEST_ANIMATION_FRAME_METADATA_KEY;
|
|
67
|
+
const frameFn = typeof res === "function" ? res : res && typeof res === "object" && typeof res[vk] === "function" ? res[vk] : void 0;
|
|
68
|
+
if (frameFn) {
|
|
69
|
+
(0, import_elementDefine.ensureInit)(this);
|
|
70
|
+
const win = import_Utils.SwcUtils.resolveWindow(this);
|
|
71
|
+
const id = startFrameLoop(win, getActiveEntries(this), frameFn);
|
|
72
|
+
normalizedOptions.created?.(import_Utils.SwcUtils.getHelperAndHostSet(this), id);
|
|
73
|
+
}
|
|
74
|
+
return res;
|
|
75
|
+
};
|
|
76
|
+
return descriptor;
|
|
77
|
+
};
|
|
78
|
+
function requestAnimationFrame(optionsOrTarget, propertyKey, descriptor) {
|
|
79
|
+
if (propertyKey !== void 0) {
|
|
80
|
+
applyRequestAnimationFrame({}, optionsOrTarget, propertyKey, descriptor);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
return (target, propertyKey2, descriptor2) => {
|
|
84
|
+
return applyRequestAnimationFrame(optionsOrTarget ?? {}, target, propertyKey2, descriptor2);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const findAllRequestAnimationFrameMetadata = (target) => {
|
|
88
|
+
const constructor = typeof target === "function" ? target : target.constructor;
|
|
89
|
+
return (import_core.ReflectUtils.findAllMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, constructor) || []).flat();
|
|
90
|
+
};
|
|
91
|
+
class RequestAnimationFrameLifeCycler {
|
|
92
|
+
onConnected(helperHostSet) {
|
|
93
|
+
const inst = helperHostSet.$this;
|
|
94
|
+
inst.__swc_requestAnimationFrameIds = [];
|
|
95
|
+
const entries = getActiveEntries(inst);
|
|
96
|
+
for (const meta of findAllRequestAnimationFrameMetadata(inst)) {
|
|
97
|
+
if (meta.options.type !== "onConnected") continue;
|
|
98
|
+
const frameFn = (timestamp, prevValue) => inst[meta.propertyKey](timestamp, prevValue);
|
|
99
|
+
const id = startFrameLoop(helperHostSet.$w, entries, frameFn);
|
|
100
|
+
meta.options.created?.(helperHostSet, id);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onDisconnected(helperHostSet) {
|
|
104
|
+
const inst = helperHostSet.$this;
|
|
105
|
+
for (const id of inst.__swc_requestAnimationFrameIds ?? []) {
|
|
106
|
+
try {
|
|
107
|
+
helperHostSet.$w.cancelAnimationFrame(id);
|
|
108
|
+
} catch (e) {
|
|
109
|
+
console.error("[SWC] cancelAnimationFrame error:", e);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
inst.__swc_requestAnimationFrameIds = [];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=requestAnimationFrame.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/decorators/requestAnimationFrame.ts"],
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { ElementDefineLifeCycler, HelperHostSet } from '../types';\n\nexport const REQUEST_ANIMATION_FRAME_METADATA_KEY = Symbol.for('simple-web-component:request-animation-frame');\n\nexport type RequestAnimationFrameType = 'onConnected' | 'returnValue';\n\nexport interface RequestAnimationFrameOptions {\n /**\n * 'onConnected' - connect \uC2DC \uC790\uB3D9\uC73C\uB85C \uB8E8\uD504 \uC2DC\uC791 (\uB9E4 \uD504\uB808\uC784 \uB370\uCF54\uB808\uC774\uD2B8\uB41C \uBA54\uC11C\uB4DC\uB97C \uC9C1\uC811 \uD638\uCD9C), disconnect \uC2DC \uC790\uB3D9 \uC815\uB9AC.\n * 'returnValue'(\uAE30\uBCF8\uAC12) - \uC790\uB3D9 \uC2DC\uC791 \uC5C6\uC74C. \uAC1C\uBC1C\uC790\uAC00 \uC774 \uBA54\uC11C\uB4DC\uB97C \uC9C1\uC811 \uD638\uCD9C\uD574\uC57C \uC2DC\uC791\uB418\uACE0,\n * \uADF8 \uD638\uCD9C\uC758 \uB9AC\uD134\uAC12(\uB610\uB294 valueKey\uB85C \uBF51\uC740 \uAC12)\uC774 \uC2E4\uC81C\uB85C \uB9E4 \uD504\uB808\uC784 \uD638\uCD9C\uB420 \uD568\uC218\uAC00 \uB41C\uB2E4.\n */\n type?: RequestAnimationFrameType;\n /** \uB8E8\uD504 \uC2DC\uC791 \uC9C1\uD6C4 1\uD68C \uD638\uCD9C (\uB514\uBC84\uAE45/\uB85C\uAE45\uC6A9). id\uB294 \uCCAB requestAnimationFrame \uBC18\uD658\uAC12 - cleanup\uC740 \uC790\uB3D9\uC73C\uB85C \uCC98\uB9AC\uB418\uBBC0\uB85C \uC9C1\uC811 \uCDE8\uC18C\uD560 \uD544\uC694 \uC5C6\uC74C. */\n created?: (set: HelperHostSet, id: number) => void;\n /**\n * type:'returnValue' \uC804\uC6A9 - \uB9AC\uD134\uAC12\uC774 \uD568\uC218\uBA74 \uADF8 \uC790\uCCB4\uB97C, \uAC1D\uCCB4\uBA74 \uC774 \uD0A4\uC758 \uAC12\uC774 \uD568\uC218\uC77C \uB54C \uADF8 \uAC12\uC744\n * \"\uB9E4 \uD504\uB808\uC784 \uD638\uCD9C\uB420 \uD568\uC218\"\uB85C \uC0AC\uC6A9\uD55C\uB2E4. \uC548 \uC8FC\uBA74 REQUEST_ANIMATION_FRAME_METADATA_KEY\uB85C \uD3F4\uBC31\uD55C\uB2E4 -\n * applyAttribute.ts/applyNode.ts\uC758 valueKey\uC640 \uB3D9\uC77C\uD55C \uCEE8\uBCA4\uC158.\n */\n valueKey?: symbol | string;\n}\n\nexport interface RequestAnimationFrameMetadata {\n propertyKey: string | symbol;\n options: RequestAnimationFrameOptions;\n}\n\n/**\n * \uD504\uB808\uC784 \uCF5C\uBC31 \uC2DC\uADF8\uB2C8\uCC98.\n * - timestamp: \uC774\uBC88 \uD504\uB808\uC784\uC758 \uC2DC\uAC01 (requestAnimationFrame\uC774 \uB118\uACA8\uC8FC\uB294 \uAC12)\n * - prevValue: \uC9C1\uC804 \uD638\uCD9C\uC774 \uB9AC\uD134\uD55C \uAC12 (\uCCAB \uD638\uCD9C\uC5D0\uC11C\uB294 undefined)\n * \uB9AC\uD134\uAC12\uC774 undefined/null\uC774\uBA74 \uB2E4\uC74C \uD504\uB808\uC784\uC744 \uC608\uC57D\uD558\uC9C0 \uC54A\uACE0 \uB8E8\uD504\uAC00 \uBA48\uCD98\uB2E4 (\uAC1C\uBC1C\uC790\uAC00 \uC885\uB8CC\uB97C \uC81C\uC5B4).\n * undefined/null\uC774 \uC544\uB2CC \uAC12\uC744 \uB9AC\uD134\uD558\uBA74 \uADF8 \uAC12 \uADF8\uB300\uB85C \uB2E4\uC74C \uD638\uCD9C\uC758 prevValue\uB85C \uC804\uB2EC\uB41C\uB2E4.\n */\nexport type FrameCallback = (timestamp: number, prevValue?: any) => any;\n\nconst getActiveEntries = (inst: any): number[] => (inst.__swc_requestAnimationFrameIds ??= []);\n\nconst startFrameLoop = (win: Window, entries: number[], frameFn: FrameCallback): number => {\n let currentId = 0;\n const step = (timestamp: number, prevValue?: any) => {\n const idx = entries.indexOf(currentId);\n if (idx >= 0) entries.splice(idx, 1);\n let result: any;\n try {\n result = frameFn(timestamp, prevValue);\n } catch (e) {\n console.error('[SWC] requestAnimationFrame callback error:', e);\n return;\n }\n if (result === undefined || result === null) return; // \uAC1C\uBC1C\uC790\uAC00 \uC885\uB8CC\uB97C \uC2E0\uD638\uD568 - \uB2E4\uC74C \uD504\uB808\uC784 \uC608\uC57D \uC548 \uD568\n currentId = win.requestAnimationFrame(ts => step(ts, result));\n entries.push(currentId);\n };\n currentId = win.requestAnimationFrame(ts => step(ts, undefined));\n entries.push(currentId);\n return currentId;\n};\n\nconst applyRequestAnimationFrame = (options: RequestAnimationFrameOptions, target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor | void => {\n const constructor = target.constructor;\n const normalizedOptions: RequestAnimationFrameOptions = { ...options, type: options.type ?? 'returnValue' };\n\n let metaList = ReflectUtils.getOwnMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, constructor) as RequestAnimationFrameMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, metaList, constructor);\n }\n metaList.push({ propertyKey, options: normalizedOptions });\n\n if (normalizedOptions.type === 'onConnected' || !descriptor) {\n return; // LifeCycler\uAC00 connect/disconnect\uB97C \uC804\uB2F4 - wrapping \uBD88\uD544\uC694\n }\n\n const original = descriptor.value;\n descriptor.value = function (this: any, ...args: any[]) {\n const res = original.apply(this, args);\n // valueKey\uB97C \uC548 \uC8FC\uBA74 \uC774 \uB370\uCF54\uB808\uC774\uD130 \uC804\uC6A9 METADATA_KEY\uB85C \uD3F4\uBC31 (applyAttribute.ts/applyNode.ts\uC640 \uB3D9\uC77C\uD55C \uCEE8\uBCA4\uC158)\n const vk = normalizedOptions.valueKey ?? REQUEST_ANIMATION_FRAME_METADATA_KEY;\n const frameFn: FrameCallback | undefined =\n typeof res === 'function' ? res : res && typeof res === 'object' && typeof res[vk] === 'function' ? res[vk] : undefined;\n\n if (frameFn) {\n ensureInit(this);\n const win = SwcUtils.resolveWindow(this);\n const id = startFrameLoop(win, getActiveEntries(this), frameFn);\n normalizedOptions.created?.(SwcUtils.getHelperAndHostSet(this), id);\n }\n return res;\n };\n return descriptor;\n};\n\n/**\n * type:'onConnected' - connect \uC2DC \uC790\uB3D9\uC73C\uB85C \uB9E4 \uD504\uB808\uC784 \uB8E8\uD504\uB97C \uC2DC\uC791\uD558\uACE0, disconnect \uC2DC \uC790\uB3D9\uC73C\uB85C cancelAnimationFrame \uD55C\uB2E4.\n * type:'returnValue'(\uAE30\uBCF8\uAC12) - \uBA54\uC11C\uB4DC\uB97C \uAC10\uC2F8\uC9C0 \uC54A\uB294 \uB300\uC2E0, \uD638\uCD9C\uB420 \uB54C\uB9C8\uB2E4(\uAC1C\uBC1C\uC790\uAC00 \uC9C1\uC811 \uD638\uCD9C) \uC6D0\uBCF8 \uB85C\uC9C1\uC744\n * \uADF8\uB300\uB85C \uC2E4\uD589\uD558\uACE0 \uB9AC\uD134\uAC12(\uB610\uB294 valueKey\uB85C \uBF51\uC740 \uAC12)\uC774 \uD568\uC218\uBA74 \uADF8 \uD568\uC218\uB97C \uB9E4 \uD504\uB808\uC784 \uD638\uCD9C\uB418\uB294 \uB8E8\uD504\uB85C \uB4F1\uB85D\uD55C\uB2E4.\n * \uC6D0\uBCF8 \uB9AC\uD134\uAC12\uC740 \uADF8\uB300\uB85C \uD1B5\uACFC\uC2DC\uD0A4\uBBC0\uB85C \uB2E4\uB978 \uB370\uCF54\uB808\uC774\uD130\uC640 \uAC19\uC740 \uBA54\uC11C\uB4DC\uC5D0 \uC2A4\uD0DD\uD574\uB3C4 \uC21C\uC11C\uC5D0 \uC0C1\uAD00\uC5C6\uC774 \uC548\uC804\uD558\uB2E4.\n *\n * \uC635\uC158 \uC5C6\uC774 `@requestAnimationFrame` \uADF8\uB300\uB85C \uBD99\uC5EC\uB3C4 \uB418\uACE0, `@requestAnimationFrame({...})`\uCC98\uB7FC \uC635\uC158\uC744 \uC904 \uC218\uB3C4 \uC788\uB2E4.\n */\nexport function requestAnimationFrame(options: RequestAnimationFrameOptions): MethodDecorator;\nexport function requestAnimationFrame(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function requestAnimationFrame(optionsOrTarget?: RequestAnimationFrameOptions | Object, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n if (propertyKey !== undefined) {\n // \uC635\uC158 \uC5C6\uC774: @requestAnimationFrame\n applyRequestAnimationFrame({}, optionsOrTarget as Object, propertyKey, descriptor);\n return;\n }\n // \uC635\uC158\uACFC \uD568\uAED8: @requestAnimationFrame({...})\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n return applyRequestAnimationFrame((optionsOrTarget as RequestAnimationFrameOptions) ?? {}, target, propertyKey, descriptor);\n };\n}\n\nexport const findAllRequestAnimationFrameMetadata = (target: any): RequestAnimationFrameMetadata[] => {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return (ReflectUtils.findAllMetadata<RequestAnimationFrameMetadata[]>(REQUEST_ANIMATION_FRAME_METADATA_KEY, constructor) || []).flat();\n};\n\nexport class RequestAnimationFrameLifeCycler implements ElementDefineLifeCycler {\n onConnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n inst.__swc_requestAnimationFrameIds = []; // \uC7AC\uC5F0\uACB0 \uB300\uBE44 \uB9AC\uC14B\n const entries = getActiveEntries(inst);\n for (const meta of findAllRequestAnimationFrameMetadata(inst)) {\n if (meta.options.type !== 'onConnected') continue; // returnValue \uD0C0\uC785\uC740 \uC218\uB3D9 \uD638\uCD9C\uC744 \uAE30\uB2E4\uB9BC\n const frameFn: FrameCallback = (timestamp, prevValue) => inst[meta.propertyKey](timestamp, prevValue);\n const id = startFrameLoop(helperHostSet.$w, entries, frameFn);\n meta.options.created?.(helperHostSet, id);\n }\n }\n\n onDisconnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n for (const id of inst.__swc_requestAnimationFrameIds ?? []) {\n try {\n helperHostSet.$w.cancelAnimationFrame(id);\n } catch (e) {\n console.error('[SWC] cancelAnimationFrame error:', e);\n }\n }\n inst.__swc_requestAnimationFrameIds = [];\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["propertyKey", "descriptor"]
|
|
7
|
+
}
|
|
@@ -29,97 +29,87 @@ __export(resizeObserver_exports, {
|
|
|
29
29
|
resizeObserverDelegateLight: () => resizeObserverDelegateLight,
|
|
30
30
|
resizeObserverDelegateShadow: () => resizeObserverDelegateShadow,
|
|
31
31
|
resizeObserverLight: () => resizeObserverLight,
|
|
32
|
-
resizeObserverShadow: () => resizeObserverShadow
|
|
33
|
-
resizeObserverThis: () => resizeObserverThis
|
|
32
|
+
resizeObserverShadow: () => resizeObserverShadow
|
|
34
33
|
});
|
|
35
34
|
module.exports = __toCommonJS(resizeObserver_exports);
|
|
36
35
|
var import_core = require("@dooboostore/core");
|
|
36
|
+
var import_parameter = require("./parameter");
|
|
37
|
+
var import_types2 = require("../types");
|
|
37
38
|
var import_Utils = require("../utils/Utils");
|
|
38
39
|
const RESIZE_OBSERVER_METADATA_KEY = Symbol.for("simple-web-component:resize-observer");
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
options = maybeOptions ?? {};
|
|
46
|
-
} else {
|
|
47
|
-
selector = "$this";
|
|
48
|
-
options = selectorOrOptions ?? {};
|
|
49
|
-
}
|
|
50
|
-
const constructor = targetObj.constructor;
|
|
51
|
-
let observers = import_core.ReflectUtils.getMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor);
|
|
52
|
-
if (!observers) {
|
|
53
|
-
observers = [];
|
|
54
|
-
import_core.ReflectUtils.defineMetadata(RESIZE_OBSERVER_METADATA_KEY, observers, constructor);
|
|
55
|
-
}
|
|
56
|
-
observers.push({ propertyKey, selector, options });
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
function resizeObserverThis(options) {
|
|
60
|
-
return resizeObserver("$this", options);
|
|
61
|
-
}
|
|
62
|
-
function resizeObserverDelegateLight(selectorOrOptions, maybeOptions) {
|
|
63
|
-
if (typeof selectorOrOptions === "string" || typeof selectorOrOptions === "function") {
|
|
64
|
-
return resizeObserver(selectorOrOptions, { ...maybeOptions ?? {}, root: "light", delegate: true });
|
|
40
|
+
const applyResizeObserver = (selector, options, targetObj, propertyKey) => {
|
|
41
|
+
const constructor = targetObj.constructor;
|
|
42
|
+
let observers = import_core.ReflectUtils.getOwnMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor);
|
|
43
|
+
if (!observers) {
|
|
44
|
+
observers = [];
|
|
45
|
+
import_core.ReflectUtils.defineMetadata(RESIZE_OBSERVER_METADATA_KEY, observers, constructor);
|
|
65
46
|
}
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
47
|
+
observers.push({ propertyKey, selector, options });
|
|
48
|
+
};
|
|
49
|
+
const resolveResizeObserverArgs = (selectorOrOptions, maybeOptions, extra) => {
|
|
69
50
|
if (typeof selectorOrOptions === "string" || typeof selectorOrOptions === "function") {
|
|
70
|
-
return
|
|
51
|
+
return { selector: selectorOrOptions, options: { ...maybeOptions ?? {}, ...extra } };
|
|
71
52
|
}
|
|
72
|
-
return
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (typeof
|
|
76
|
-
|
|
53
|
+
return { selector: "$this", options: { ...selectorOrOptions ?? {}, ...extra } };
|
|
54
|
+
};
|
|
55
|
+
const dispatchResizeObserver = (selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, extra) => {
|
|
56
|
+
if ((typeof maybeOptionsOrPropertyKey === "string" || typeof maybeOptionsOrPropertyKey === "symbol") && descriptor !== void 0) {
|
|
57
|
+
applyResizeObserver("$this", { ...extra }, selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey);
|
|
58
|
+
return;
|
|
77
59
|
}
|
|
78
|
-
|
|
60
|
+
const { selector, options } = resolveResizeObserverArgs(
|
|
61
|
+
selectorOrOptionsOrTarget,
|
|
62
|
+
maybeOptionsOrPropertyKey,
|
|
63
|
+
extra
|
|
64
|
+
);
|
|
65
|
+
return (targetObj, propertyKey) => {
|
|
66
|
+
applyResizeObserver(selector, options, targetObj, propertyKey);
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
function resizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
70
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, {});
|
|
79
71
|
}
|
|
80
|
-
function
|
|
81
|
-
|
|
82
|
-
return resizeObserver(selectorOrOptions, { ...maybeOptions ?? {}, root: "auto", delegate: true });
|
|
83
|
-
}
|
|
84
|
-
return resizeObserver({ ...selectorOrOptions ?? {}, root: "auto", delegate: true });
|
|
72
|
+
function resizeObserverDelegateLight(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
73
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "light", delegate: true });
|
|
85
74
|
}
|
|
86
|
-
function
|
|
87
|
-
|
|
88
|
-
return resizeObserver(selectorOrOptions, { ...maybeOptions ?? {}, root: "light" });
|
|
89
|
-
}
|
|
90
|
-
return resizeObserver({ ...selectorOrOptions ?? {}, root: "light" });
|
|
75
|
+
function resizeObserverDelegateShadow(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
76
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "shadow", delegate: true });
|
|
91
77
|
}
|
|
92
|
-
function
|
|
93
|
-
|
|
94
|
-
return resizeObserver(selectorOrOptions, { ...maybeOptions ?? {}, root: "shadow" });
|
|
95
|
-
}
|
|
96
|
-
return resizeObserver({ ...selectorOrOptions ?? {}, root: "shadow" });
|
|
78
|
+
function resizeObserverDelegateAll(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
79
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "all", delegate: true });
|
|
97
80
|
}
|
|
98
|
-
function
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return
|
|
81
|
+
function resizeObserverDelegate(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
82
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "auto", delegate: true });
|
|
83
|
+
}
|
|
84
|
+
function resizeObserverLight(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
85
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "light" });
|
|
86
|
+
}
|
|
87
|
+
function resizeObserverShadow(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
88
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "shadow" });
|
|
89
|
+
}
|
|
90
|
+
function resizeObserverAll(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
|
|
91
|
+
return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "all" });
|
|
103
92
|
}
|
|
104
93
|
function getResizeObserverMetadata(target) {
|
|
105
|
-
const constructor = target
|
|
106
|
-
return import_core.ReflectUtils.
|
|
94
|
+
const constructor = typeof target === "function" ? target : target.constructor;
|
|
95
|
+
return import_core.ReflectUtils.findAllMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor).flat();
|
|
107
96
|
}
|
|
108
97
|
class ResizeObserverLifeCycler {
|
|
109
98
|
constructor() {
|
|
110
99
|
__publicField(this, "removeObserverCallbacksMap", /* @__PURE__ */ new WeakMap());
|
|
111
100
|
}
|
|
112
|
-
onConnected(helperHostSet) {
|
|
101
|
+
onConnected(helperHostSet, _set, scope) {
|
|
113
102
|
const inst = helperHostSet.$this;
|
|
114
103
|
const currentWin = helperHostSet.$w;
|
|
115
|
-
const removeObserverCallbacks = [];
|
|
104
|
+
const removeObserverCallbacks = scope === "rest" && this.removeObserverCallbacksMap.get(inst) || [];
|
|
116
105
|
this.removeObserverCallbacksMap.set(inst, removeObserverCallbacks);
|
|
117
|
-
const allMeta = getResizeObserverMetadata(inst) ?? [];
|
|
106
|
+
const allMeta = (getResizeObserverMetadata(inst) ?? []).filter((m) => (0, import_types2.inObserverScope)(m, scope));
|
|
118
107
|
if (allMeta.length === 0) return;
|
|
119
108
|
const root = inst.shadowRoot || inst;
|
|
120
109
|
for (const m of allMeta) {
|
|
121
110
|
if (m.options.removeObserver) removeObserverCallbacks.push({ fn: m.options.removeObserver, target: root, opts: m.options });
|
|
122
111
|
}
|
|
112
|
+
const metaTargets = /* @__PURE__ */ new Map();
|
|
123
113
|
const callback = (entries, obs) => {
|
|
124
114
|
for (const m of allMeta) {
|
|
125
115
|
let matchedEls;
|
|
@@ -131,14 +121,38 @@ class ResizeObserverLifeCycler {
|
|
|
131
121
|
return el.matches?.(m.selector) || !!el.closest?.(m.selector);
|
|
132
122
|
});
|
|
133
123
|
} else {
|
|
134
|
-
|
|
124
|
+
const set = metaTargets.get(m);
|
|
125
|
+
matchedEls = entries.map((e) => e.target).filter((t) => t && t.nodeType === 1 && !!set?.has(t));
|
|
135
126
|
}
|
|
136
127
|
if (matchedEls.length === 0) continue;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
const opts = m.options;
|
|
129
|
+
void (async () => {
|
|
130
|
+
const helper = import_Utils.SwcUtils.getHelperAndHostSet(inst);
|
|
131
|
+
if (opts.filter && !await opts.filter(matchedEls, { currentThis: inst, helper })) return;
|
|
132
|
+
const hostSet = import_Utils.SwcUtils.getHostSet(inst);
|
|
133
|
+
const helperSet = import_Utils.SwcUtils.getHelperSet(helperHostSet.$w);
|
|
134
|
+
const legacyArgs = [matchedEls, entries.filter((e) => matchedEls.includes(e.target)), obs, { ...hostSet, $root: root }];
|
|
135
|
+
const buildArgs = (beforeReturn) => (0, import_parameter.buildSwcParameterArgs)(inst, m.propertyKey, {
|
|
136
|
+
hostSet,
|
|
137
|
+
helperHostSet: helper,
|
|
138
|
+
helperSet,
|
|
139
|
+
resizeObserverBeforeReturn: beforeReturn
|
|
140
|
+
}, [...legacyArgs, beforeReturn]);
|
|
141
|
+
let args = buildArgs(void 0);
|
|
142
|
+
if (opts.before) {
|
|
143
|
+
const br = await opts.before(matchedEls, { currentThis: inst, helper });
|
|
144
|
+
args = buildArgs(br);
|
|
145
|
+
}
|
|
146
|
+
let result, error;
|
|
147
|
+
try {
|
|
148
|
+
result = await inst[m.propertyKey](...args);
|
|
149
|
+
} catch (e) {
|
|
150
|
+
error = e;
|
|
151
|
+
} finally {
|
|
152
|
+
if (opts.finally) await opts.finally(matchedEls, { currentThis: inst, helper }, { args, result, error });
|
|
153
|
+
}
|
|
154
|
+
if (error) throw error;
|
|
155
|
+
})().catch((e) => console.error("[SWC] resizeObserver handler error:", e));
|
|
142
156
|
}
|
|
143
157
|
};
|
|
144
158
|
const resizeObserverSet = [];
|
|
@@ -172,6 +186,7 @@ class ResizeObserverLifeCycler {
|
|
|
172
186
|
}
|
|
173
187
|
}
|
|
174
188
|
}
|
|
189
|
+
metaTargets.set(m, new WeakSet(targets));
|
|
175
190
|
for (const el of targets) resizeObserverSet.push({ target: el, options: m.options.box ? { box: m.options.box } : void 0, callback });
|
|
176
191
|
}
|
|
177
192
|
return { resizeObserverSet };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/decorators/resizeObserver.ts"],
|
|
4
|
-
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions, SwcFnSelector, SwcSelector, HelperHostSet } from '../types';\n\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root\u00B7delegate \uC5C6\uC74C\nexport interface ResizeObserverBaseOptions {\n box?: 'content-box' | 'border-box' | 'device-pixel-content-box';\n filter?: (matchedEls: HTMLElement[], meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n removeObserver?: (target: Element, optionValue: ResizeObserverOptions) => void;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uD5C8\uC6A9\nexport type ResizeObserverQueryOptions = ResizeObserverBaseOptions & SwcQueryOptions & { delegate?: boolean };\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uAE08\uC9C0\nexport type ResizeObserverNonQueryOptions = ResizeObserverBaseOptions;\n// \uB0B4\uBD80 \uC800\uC7A5/\uD574\uC11D\uC6A9\nexport type ResizeObserverOptions = ResizeObserverQueryOptions;\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type ResizeObserverOptionsOf<S extends SwcSelector> = S extends string ? ResizeObserverQueryOptions : ResizeObserverNonQueryOptions;\n\nexport interface ResizeObserverMetadata {\n propertyKey: string | symbol;\n selector: SwcSelector;\n options: ResizeObserverOptions;\n}\n\nexport const RESIZE_OBSERVER_METADATA_KEY = Symbol.for('simple-web-component:resize-observer');\n\nexport function resizeObserver(target: SpecialSelector, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserver(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserver(selector: SwcFnSelector, options?: ResizeObserverNonQueryOptions): MethodDecorator;\nexport function resizeObserver(options?: ResizeObserverQueryOptions): MethodDecorator;\n/**\n * @resizeObserver decorator to observe element size changes.\n */\nexport function resizeObserver(selectorOrOptions?: SwcSelector | ResizeObserverOptions, maybeOptions?: ResizeObserverOptions): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n let selector: SwcSelector = '$this';\n let options: ResizeObserverOptions = {};\n\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n selector = selectorOrOptions;\n options = maybeOptions ?? {};\n } else {\n selector = '$this';\n options = selectorOrOptions ?? {};\n }\n\n const constructor = targetObj.constructor;\n\n let observers = ReflectUtils.getMetadata<ResizeObserverMetadata[]>(RESIZE_OBSERVER_METADATA_KEY, constructor);\n if (!observers) {\n observers = [];\n ReflectUtils.defineMetadata(RESIZE_OBSERVER_METADATA_KEY, observers, constructor);\n }\n\n observers.push({ propertyKey, selector, options });\n };\n}\n\nexport function resizeObserverThis(options?: ResizeObserverQueryOptions): MethodDecorator {\n return resizeObserver('$this', options);\n}\n\n// \u2500\u2500\u2500 root\uBCC4 delegate \uD5EC\uD37C (root \uC8FC\uC785 \u2192 \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9) \u2500\u2500\u2500\n\nexport function resizeObserverDelegateLight(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateLight(options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateLight(selectorOrOptions?: string | Omit<ResizeObserverQueryOptions, 'delegate'>, maybeOptions?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'light', delegate: true});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'light', delegate: true});\n}\n\nexport function resizeObserverDelegateShadow(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateShadow(options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateShadow(selectorOrOptions?: string | Omit<ResizeObserverQueryOptions, 'delegate'>, maybeOptions?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'shadow', delegate: true});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'shadow', delegate: true});\n}\n\nexport function resizeObserverDelegateAll(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateAll(options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateAll(selectorOrOptions?: string | Omit<ResizeObserverQueryOptions, 'delegate'>, maybeOptions?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'all', delegate: true});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'all', delegate: true});\n}\n\nexport function resizeObserverDelegate(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegate(options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegate(selectorOrOptions?: string | Omit<ResizeObserverQueryOptions, 'delegate'>, maybeOptions?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'auto', delegate: true});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'auto', delegate: true});\n}\n\n// \u2500\u2500\u2500 root\uBCC4 \uC77C\uBC18 \uD5EC\uD37C (delegate \uC5C6\uC774, \uC140\uB809\uD130 \uC0DD\uB7B5 \uC2DC $this) \u2500\u2500\u2500\n\nexport function resizeObserverLight(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverLight(options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverLight(selectorOrOptions?: string | ResizeObserverQueryOptions, maybeOptions?: ResizeObserverQueryOptions): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'light'});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'light'});\n}\n\nexport function resizeObserverShadow(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverShadow(options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverShadow(selectorOrOptions?: string | ResizeObserverQueryOptions, maybeOptions?: ResizeObserverQueryOptions): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'shadow'});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'shadow'});\n}\n\nexport function resizeObserverAll(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverAll(options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverAll(selectorOrOptions?: string | ResizeObserverQueryOptions, maybeOptions?: ResizeObserverQueryOptions): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return resizeObserver(selectorOrOptions as any, {...maybeOptions ?? {}, root: 'all'});\n }\n return resizeObserver({...selectorOrOptions ?? {}, root: 'all'});\n}\n\nexport function getResizeObserverMetadata(target: any): ResizeObserverMetadata[] | undefined {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor);\n}\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// ResizeObserverLifeCycler\n// observer \uB97C \uC9C1\uC811 \uC0DD\uC131\uD558\uC9C0 \uC54A\uACE0 OnConnectedResult \uB97C \uBC18\uD658\uD55C\uB2E4.\n// elementDefine \uC774 \uC218\uC9D1\uB41C ResizeObserverSet \uC73C\uB85C observer \uB97C \uC0DD\uC131\uD558\uACE0,\n// observe/unobserve \uD568\uC218\uB97C \uC8FC\uC785\uD574 MutationObserver delegate \uCD94\uC801\uC774 \uC0AC\uC6A9\uD560 \uC218 \uC788\uAC8C \uD55C\uB2E4.\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nimport { ElementDefineLifeCycler, OnConnectedResult, ResizeObserverSet, ResizeObserverSetEntry } from '../types';\nimport { SwcUtils } from '../utils/Utils';\n\nexport class ResizeObserverLifeCycler implements ElementDefineLifeCycler {\n private readonly removeObserverCallbacksMap = new WeakMap<Element, Array<{ fn: (target: Element, opts: unknown) => void; target: any; opts: unknown }>>();\n\n onConnected(helperHostSet: HelperHostSet): OnConnectedResult | void {\n const inst = helperHostSet.$this;\n const currentWin = helperHostSet.$w;\n\n const removeObserverCallbacks: Array<{ fn: (target: Element, opts: unknown) => void; target: any; opts: unknown }> = [];\n this.removeObserverCallbacksMap.set(inst, removeObserverCallbacks);\n\n const allMeta = getResizeObserverMetadata(inst) ?? [];\n if (allMeta.length === 0) return;\n\n const root: HTMLElement | ShadowRoot = inst.shadowRoot || inst;\n\n // removeObserver \uCF5C\uBC31 \uC218\uC9D1\n for (const m of allMeta) {\n if (m.options.removeObserver) removeObserverCallbacks.push({ fn: m.options.removeObserver, target: root, opts: m.options });\n }\n\n // \u2500\u2500 ResizeObserver \uCF5C\uBC31 \u2500\u2500\n const callback: ResizeObserverSetEntry['callback'] = (entries, obs) => {\n for (const m of allMeta) {\n let matchedEls: HTMLElement[];\n if (m.options.delegate && typeof m.selector === 'string') {\n const isThis = m.selector === '$this' || m.selector === '';\n matchedEls = entries.map(e => e.target as HTMLElement).filter(el => {\n if (!el || el.nodeType !== 1) return false;\n if (isThis) return true;\n return el.matches?.(m.selector as string) || !!el.closest?.(m.selector as string);\n });\n } else {\n matchedEls = entries.map(e => e.target as HTMLElement).filter(t => t && t.nodeType === 1);\n }\n if (matchedEls.length === 0) continue;\n if (m.options.filter) {\n if (!m.options.filter(matchedEls, { currentThis: inst, helper: helperHostSet })) continue;\n }\n const hostSet = SwcUtils.getHostSet(inst);\n inst[m.propertyKey](matchedEls, entries, obs, { ...hostSet, $root: root });\n }\n };\n\n // \u2500\u2500 observe \uB300\uC0C1 \uBAA9\uB85D \uAD6C\uC131 \u2500\u2500\n // - non-delegate: \uC2E4\uC81C \uC694\uC18C\uB97C \uCD08\uAE30 observe\n // - delegate: \uB3D9\uC801 \uCD94\uC801\uC6A9 \uC140\uB809\uD130 \uBB38\uC790\uC5F4\uB85C \uC120\uC5B8 (elementDefine \uC758 MutationObserver \uCF5C\uBC31\uC774 observe/unobserve)\n // \uBAA8\uB4E0 \uB300\uC0C1\uC740 \uC774 \uB8E8\uD2B8\uC758 callback \uC744 \uACF5\uC720\uD55C\uB2E4.\n const resizeObserverSet: ResizeObserverSet = [];\n for (const m of allMeta) {\n if (m.options.delegate && typeof m.selector === 'string') {\n resizeObserverSet.push({ target: m.selector, delegate: true, delegateRoot: m.options.root, options: m.options.box ? { box: m.options.box } : undefined, callback });\n continue;\n }\n let targets: HTMLElement[] = [];\n\n if (typeof m.selector === 'function') {\n const res = (m.selector as any)(inst, helperHostSet);\n if (res instanceof currentWin.HTMLElement) targets = [res as HTMLElement];\n else if (res instanceof currentWin.NodeList) targets = Array.from(res as NodeList).filter((e: any) => e instanceof currentWin.HTMLElement) as HTMLElement[];\n else if (Array.isArray(res)) targets = res.filter((e: any) => e instanceof currentWin.HTMLElement) as HTMLElement[];\n } else if (typeof m.selector === 'string') {\n if (m.selector === '$this' || m.selector === '') {\n targets = [inst as HTMLElement];\n } else {\n const r: any = m.options.root || 'auto';\n const scopes: any[] = [];\n if (r === 'auto') scopes.push(inst.shadowRoot || inst);\n else if (r === 'light') scopes.push(inst);\n else if (r === 'shadow' && inst.shadowRoot) scopes.push(inst.shadowRoot);\n else if (r === 'all') { scopes.push(inst); if (inst.shadowRoot) scopes.push(inst.shadowRoot); }\n for (const s of scopes) {\n const found = s?.querySelectorAll?.(m.selector as string) as NodeListOf<HTMLElement> | undefined;\n if (found?.length) targets.push(...Array.from(found));\n }\n }\n }\n for (const el of targets) resizeObserverSet.push({ target: el, options: m.options.box ? { box: m.options.box } : undefined, callback });\n }\n\n return { resizeObserverSet };\n }\n\n onDisconnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n for (const cb of this.removeObserverCallbacksMap.get(inst) ?? []) {\n try { cb.fn(cb.target, cb.opts); } catch (e) { console.error('[SWC] removeObserver error:', e); }\n }\n this.removeObserverCallbacksMap.delete(inst);\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions, SwcFnSelector, SwcSelector, HelperHostSet } from '../types';\nimport { buildSwcParameterArgs } from './parameter';\n\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root\u00B7delegate \uC5C6\uC74C\nexport interface ResizeObserverBaseOptions {\n box?: 'content-box' | 'border-box' | 'device-pixel-content-box';\n /** \uB9E4\uCE6D \uC2DC \uD578\uB4E4\uB7EC \uC2E4\uD589 \uC5EC\uBD80 \uAC8C\uC774\uD2B8. Promise<boolean>\uB3C4 \uB418\uC5B4 async \uD310\uC815 \uAC00\uB2A5. false\uBA74 \uC2A4\uD0B5. */\n filter?: (matchedEls: HTMLElement[], meta: { currentThis: any, helper: HelperHostSet }) => boolean | Promise<boolean>;\n /** filter \uD1B5\uACFC \uD6C4 \uD578\uB4E4\uB7EC \uC9C1\uC804 \uD6C5. await\uB418\uACE0, \uB9AC\uD134\uAC12\uC740 @resizeObserverBeforeReturn \uC73C\uB85C \uD578\uB4E4\uB7EC\uC5D0 \uC8FC\uC785\uB41C\uB2E4. */\n before?: (matchedEls: HTMLElement[], meta: { currentThis: any, helper: HelperHostSet }) => any | Promise<any>;\n /** \uD578\uB4E4\uB7EC\uAC00 \uC131\uACF5/\uC2E4\uD328\uD574\uB3C4 \uD56D\uC0C1 \uC2E4\uD589\uB418\uB294 \uC815\uB9AC \uD6C5. ctx\uB85C \uC778\uC790/\uACB0\uACFC/\uC5D0\uB7EC\uB97C \uBC1B\uB294\uB2E4. \uC5D0\uB7EC\uB294 \uB85C\uAE45\uB428. */\n finally?: (matchedEls: HTMLElement[], meta: { currentThis: any, helper: HelperHostSet }, ctx: { args: any[]; result?: any; error?: any }) => any | Promise<any>;\n removeObserver?: (target: Element, optionValue: ResizeObserverOptions) => void;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uD5C8\uC6A9\nexport type ResizeObserverQueryOptions = ResizeObserverBaseOptions & SwcQueryOptions & { delegate?: boolean };\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uAE08\uC9C0\nexport type ResizeObserverNonQueryOptions = ResizeObserverBaseOptions;\n// \uB0B4\uBD80 \uC800\uC7A5/\uD574\uC11D\uC6A9\nexport type ResizeObserverOptions = ResizeObserverQueryOptions;\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type ResizeObserverOptionsOf<S extends SwcSelector> = S extends string ? ResizeObserverQueryOptions : ResizeObserverNonQueryOptions;\n\nexport interface ResizeObserverMetadata {\n propertyKey: string | symbol;\n selector: SwcSelector;\n options: ResizeObserverOptions;\n}\n\nexport const RESIZE_OBSERVER_METADATA_KEY = Symbol.for('simple-web-component:resize-observer');\n\nconst applyResizeObserver = (selector: SwcSelector, options: ResizeObserverOptions, targetObj: Object, propertyKey: string | symbol): void => {\n const constructor = targetObj.constructor;\n let observers = ReflectUtils.getOwnMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor) as ResizeObserverMetadata[] | undefined;\n if (!observers) {\n observers = [];\n ReflectUtils.defineMetadata(RESIZE_OBSERVER_METADATA_KEY, observers, constructor);\n }\n observers.push({ propertyKey, selector, options });\n};\n\nconst resolveResizeObserverArgs = (\n selectorOrOptions: SwcSelector | ResizeObserverOptions | undefined,\n maybeOptions: ResizeObserverOptions | undefined,\n extra: Partial<ResizeObserverOptions>\n): { selector: SwcSelector; options: ResizeObserverOptions } => {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return { selector: selectorOrOptions, options: { ...(maybeOptions ?? {}), ...extra } };\n }\n return { selector: '$this', options: { ...(selectorOrOptions ?? {}), ...extra } };\n};\n\n/**\n * bare(@decorator)\uC640 factory(@decorator(...), \uBE48 \uAD04\uD638\uB294 \uD0C0\uC785\uC5D0\uC11C \uB9C9\uC74C) \uD638\uCD9C\uC744 \uBAA8\uB450 \uCC98\uB9AC\uD558\uB294 \uACF5\uD1B5 \uB514\uC2A4\uD328\uCC98.\n * extra\uB294 Light/Shadow/All/Delegate \uBCC0\uD615\uC774 \uAC15\uC81C\uB85C \uB367\uC50C\uC6B0\uB294 \uC635\uC158(root, delegate \uB4F1)\uC774\uB2E4.\n */\nconst dispatchResizeObserver = (\n selectorOrOptionsOrTarget: SwcSelector | ResizeObserverOptions | Object | undefined,\n maybeOptionsOrPropertyKey: ResizeObserverOptions | string | symbol | undefined,\n descriptor: PropertyDescriptor | undefined,\n extra: Partial<ResizeObserverOptions>\n): MethodDecorator | void => {\n if ((typeof maybeOptionsOrPropertyKey === 'string' || typeof maybeOptionsOrPropertyKey === 'symbol') && descriptor !== undefined) {\n // \uC635\uC158 \uC5C6\uC774: @decorator\n applyResizeObserver('$this', { ...extra }, selectorOrOptionsOrTarget as Object, maybeOptionsOrPropertyKey);\n return;\n }\n // \uC635\uC158\uACFC \uD568\uAED8: @decorator(selector, options) / @decorator(options)\n const { selector, options } = resolveResizeObserverArgs(\n selectorOrOptionsOrTarget as SwcSelector | ResizeObserverOptions | undefined,\n maybeOptionsOrPropertyKey as ResizeObserverOptions | undefined,\n extra\n );\n return (targetObj: Object, propertyKey: string | symbol) => {\n applyResizeObserver(selector, options, targetObj, propertyKey);\n };\n};\n\nexport function resizeObserver(target: SpecialSelector, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserver(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserver(selector: SwcFnSelector, options?: ResizeObserverNonQueryOptions): MethodDecorator;\nexport function resizeObserver(options: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserver(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\n/**\n * @resizeObserver decorator to observe element size changes.\n * \uC635\uC158 \uC5C6\uC774 `@resizeObserver` \uADF8\uB300\uB85C \uBD99\uC5EC\uB3C4 \uB418\uACE0, `@resizeObserver(...)`\uCC98\uB7FC \uC140\uB809\uD130/\uC635\uC158\uC744 \uC904 \uC218\uB3C4 \uC788\uB2E4.\n */\nexport function resizeObserver(selectorOrOptionsOrTarget?: SwcSelector | ResizeObserverOptions | Object, maybeOptionsOrPropertyKey?: ResizeObserverOptions | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, {});\n}\n\n\n// \u2500\u2500\u2500 root\uBCC4 delegate \uD5EC\uD37C (root \uC8FC\uC785 \u2192 \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9) \u2500\u2500\u2500\n\nexport function resizeObserverDelegateLight(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateLight(options: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateLight(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverDelegateLight(selectorOrOptionsOrTarget?: string | Omit<ResizeObserverQueryOptions, 'delegate'> | Object, maybeOptionsOrPropertyKey?: Omit<ResizeObserverQueryOptions, 'delegate'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'light', delegate: true });\n}\n\nexport function resizeObserverDelegateShadow(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateShadow(options: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateShadow(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverDelegateShadow(selectorOrOptionsOrTarget?: string | Omit<ResizeObserverQueryOptions, 'delegate'> | Object, maybeOptionsOrPropertyKey?: Omit<ResizeObserverQueryOptions, 'delegate'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'shadow', delegate: true });\n}\n\nexport function resizeObserverDelegateAll(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateAll(options: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegateAll(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverDelegateAll(selectorOrOptionsOrTarget?: string | Omit<ResizeObserverQueryOptions, 'delegate'> | Object, maybeOptionsOrPropertyKey?: Omit<ResizeObserverQueryOptions, 'delegate'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'all', delegate: true });\n}\n\nexport function resizeObserverDelegate(selector: string, options?: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegate(options: Omit<ResizeObserverQueryOptions, 'delegate'>): MethodDecorator;\nexport function resizeObserverDelegate(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverDelegate(selectorOrOptionsOrTarget?: string | Omit<ResizeObserverQueryOptions, 'delegate'> | Object, maybeOptionsOrPropertyKey?: Omit<ResizeObserverQueryOptions, 'delegate'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'auto', delegate: true });\n}\n\n// \u2500\u2500\u2500 root\uBCC4 \uC77C\uBC18 \uD5EC\uD37C (delegate \uC5C6\uC774, \uC140\uB809\uD130 \uC0DD\uB7B5 \uC2DC $this) \u2500\u2500\u2500\n\nexport function resizeObserverLight(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverLight(options: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverLight(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverLight(selectorOrOptionsOrTarget?: string | ResizeObserverQueryOptions | Object, maybeOptionsOrPropertyKey?: ResizeObserverQueryOptions | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'light' });\n}\n\nexport function resizeObserverShadow(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverShadow(options: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverShadow(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverShadow(selectorOrOptionsOrTarget?: string | ResizeObserverQueryOptions | Object, maybeOptionsOrPropertyKey?: ResizeObserverQueryOptions | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'shadow' });\n}\n\nexport function resizeObserverAll(selector: string, options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverAll(options: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverAll(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverAll(selectorOrOptionsOrTarget?: string | ResizeObserverQueryOptions | Object, maybeOptionsOrPropertyKey?: ResizeObserverQueryOptions | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'all' });\n}\n\nexport function getResizeObserverMetadata(target: any): ResizeObserverMetadata[] | undefined {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.findAllMetadata<any[]>(RESIZE_OBSERVER_METADATA_KEY, constructor).flat();\n}\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// ResizeObserverLifeCycler\n// observer \uB97C \uC9C1\uC811 \uC0DD\uC131\uD558\uC9C0 \uC54A\uACE0 OnConnectedResult \uB97C \uBC18\uD658\uD55C\uB2E4.\n// elementDefine \uC774 \uC218\uC9D1\uB41C ResizeObserverSet \uC73C\uB85C observer \uB97C \uC0DD\uC131\uD558\uACE0,\n// observe/unobserve \uD568\uC218\uB97C \uC8FC\uC785\uD574 MutationObserver delegate \uCD94\uC801\uC774 \uC0AC\uC6A9\uD560 \uC218 \uC788\uAC8C \uD55C\uB2E4.\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nimport { ElementDefineLifeCycler, inObserverScope, ObserverScope, OnConnectedResult, ResizeObserverSet, ResizeObserverSetEntry } from '../types';\nimport { SwcUtils } from '../utils/Utils';\n\nexport class ResizeObserverLifeCycler implements ElementDefineLifeCycler {\n private readonly removeObserverCallbacksMap = new WeakMap<Element, Array<{ fn: (target: Element, opts: unknown) => void; target: any; opts: unknown }>>();\n\n onConnected(helperHostSet: HelperHostSet, _set?: ResizeObserverSet, scope?: ObserverScope): OnConnectedResult | void {\n const inst = helperHostSet.$this;\n const currentWin = helperHostSet.$w;\n\n // 'rest' \uB294 \uAC19\uC740 connect \uC758 'self' \uB4A4\uC5D0 \uC624\uBBC0\uB85C \uC774\uC5B4 \uBD99\uC774\uACE0, \uADF8 \uC678(\uC0C8 connect)\uB294 \uC0C8\uB85C \uC2DC\uC791\uD55C\uB2E4.\n const removeObserverCallbacks = (scope === 'rest' && this.removeObserverCallbacksMap.get(inst)) || [];\n this.removeObserverCallbacksMap.set(inst, removeObserverCallbacks);\n\n const allMeta = (getResizeObserverMetadata(inst) ?? []).filter(m => inObserverScope(m, scope));\n if (allMeta.length === 0) return;\n\n const root: HTMLElement | ShadowRoot = inst.shadowRoot || inst;\n\n // removeObserver \uCF5C\uBC31 \uC218\uC9D1\n for (const m of allMeta) {\n if (m.options.removeObserver) removeObserverCallbacks.push({ fn: m.options.removeObserver, target: root, opts: m.options });\n }\n\n // non-delegate \uBA54\uD0C0\uBCC4 observe \uB300\uC0C1 \u2014 \uCF5C\uBC31\uC740 \uBAA8\uB4E0 \uBA54\uD0C0\uAC00 \uACF5\uC720\uD558\uBBC0\uB85C, \uC5D4\uD2B8\uB9AC\uB97C \uC790\uAE30 \uB300\uC0C1\uC5D0\uB9CC \uBC30\uB2EC\uD55C\uB2E4.\n const metaTargets = new Map<typeof allMeta[number], WeakSet<Element>>();\n\n // \u2500\u2500 ResizeObserver \uCF5C\uBC31 \u2500\u2500\n const callback: ResizeObserverSetEntry['callback'] = (entries, obs) => {\n for (const m of allMeta) {\n let matchedEls: HTMLElement[];\n if (m.options.delegate && typeof m.selector === 'string') {\n const isThis = m.selector === '$this' || m.selector === '';\n matchedEls = entries.map(e => e.target as HTMLElement).filter(el => {\n if (!el || el.nodeType !== 1) return false;\n if (isThis) return true;\n return el.matches?.(m.selector as string) || !!el.closest?.(m.selector as string);\n });\n } else {\n const set = metaTargets.get(m);\n matchedEls = entries.map(e => e.target as HTMLElement).filter(t => t && t.nodeType === 1 && !!set?.has(t));\n }\n if (matchedEls.length === 0) continue;\n const opts = m.options;\n void (async () => {\n const helper = SwcUtils.getHelperAndHostSet(inst);\n if (opts.filter && !(await opts.filter(matchedEls, { currentThis: inst, helper }))) return;\n const hostSet = SwcUtils.getHostSet(inst);\n const helperSet = SwcUtils.getHelperSet(helperHostSet.$w);\n // entries \uB3C4 \uC774 \uBA54\uC11C\uB4DC \uB300\uC0C1 \uAC83\uB9CC (\uC635\uC800\uBC84\uB294 \uACF5\uC720\uB77C \uBC30\uCE58\uC5D0 \uB2E4\uB978 \uB300\uC0C1 \uC5D4\uD2B8\uB9AC\uAC00 \uC11E\uC778\uB2E4)\n const legacyArgs = [matchedEls, entries.filter(e => matchedEls.includes(e.target as HTMLElement)), obs, { ...hostSet, $root: root }];\n const buildArgs = (beforeReturn: any) => buildSwcParameterArgs(inst, m.propertyKey, {\n hostSet, helperHostSet: helper, helperSet, resizeObserverBeforeReturn: beforeReturn\n }, [...legacyArgs, beforeReturn]);\n let args = buildArgs(undefined);\n if (opts.before) { const br = await opts.before(matchedEls, { currentThis: inst, helper }); args = buildArgs(br); }\n let result: any, error: any;\n try { result = await inst[m.propertyKey](...args); }\n catch (e) { error = e; }\n finally { if (opts.finally) await opts.finally(matchedEls, { currentThis: inst, helper }, { args, result, error }); }\n if (error) throw error;\n })().catch(e => console.error('[SWC] resizeObserver handler error:', e));\n }\n };\n\n // \u2500\u2500 observe \uB300\uC0C1 \uBAA9\uB85D \uAD6C\uC131 \u2500\u2500\n // - non-delegate: \uC2E4\uC81C \uC694\uC18C\uB97C \uCD08\uAE30 observe\n // - delegate: \uB3D9\uC801 \uCD94\uC801\uC6A9 \uC140\uB809\uD130 \uBB38\uC790\uC5F4\uB85C \uC120\uC5B8 (elementDefine \uC758 MutationObserver \uCF5C\uBC31\uC774 observe/unobserve)\n // \uBAA8\uB4E0 \uB300\uC0C1\uC740 \uC774 \uB8E8\uD2B8\uC758 callback \uC744 \uACF5\uC720\uD55C\uB2E4.\n const resizeObserverSet: ResizeObserverSet = [];\n for (const m of allMeta) {\n if (m.options.delegate && typeof m.selector === 'string') {\n resizeObserverSet.push({ target: m.selector, delegate: true, delegateRoot: m.options.root, options: m.options.box ? { box: m.options.box } : undefined, callback });\n continue;\n }\n let targets: HTMLElement[] = [];\n\n if (typeof m.selector === 'function') {\n const res = (m.selector as any)(inst, helperHostSet);\n if (res instanceof currentWin.HTMLElement) targets = [res as HTMLElement];\n else if (res instanceof currentWin.NodeList) targets = Array.from(res as NodeList).filter((e: any) => e instanceof currentWin.HTMLElement) as HTMLElement[];\n else if (Array.isArray(res)) targets = res.filter((e: any) => e instanceof currentWin.HTMLElement) as HTMLElement[];\n } else if (typeof m.selector === 'string') {\n if (m.selector === '$this' || m.selector === '') {\n targets = [inst as HTMLElement];\n } else {\n const r: any = m.options.root || 'auto';\n const scopes: any[] = [];\n if (r === 'auto') scopes.push(inst.shadowRoot || inst);\n else if (r === 'light') scopes.push(inst);\n else if (r === 'shadow' && inst.shadowRoot) scopes.push(inst.shadowRoot);\n else if (r === 'all') { scopes.push(inst); if (inst.shadowRoot) scopes.push(inst.shadowRoot); }\n for (const s of scopes) {\n const found = s?.querySelectorAll?.(m.selector as string) as NodeListOf<HTMLElement> | undefined;\n if (found?.length) targets.push(...Array.from(found));\n }\n }\n }\n metaTargets.set(m, new WeakSet(targets));\n for (const el of targets) resizeObserverSet.push({ target: el, options: m.options.box ? { box: m.options.box } : undefined, callback });\n }\n\n return { resizeObserverSet };\n }\n\n onDisconnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n for (const cb of this.removeObserverCallbacksMap.get(inst) ?? []) {\n try { cb.fn(cb.target, cb.opts); } catch (e) { console.error('[SWC] removeObserver error:', e); }\n }\n this.removeObserverCallbacksMap.delete(inst);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAE7B,uBAAsC;AA6JtC,IAAAA,gBAAsI;AACtI,mBAAyB;AAhIlB,MAAM,+BAA+B,OAAO,IAAI,sCAAsC;AAE7F,MAAM,sBAAsB,CAAC,UAAuB,SAAgC,WAAmB,gBAAuC;AAC5I,QAAM,cAAc,UAAU;AAC9B,MAAI,YAAY,yBAAa,eAAe,8BAA8B,WAAW;AACrF,MAAI,CAAC,WAAW;AACd,gBAAY,CAAC;AACb,6BAAa,eAAe,8BAA8B,WAAW,WAAW;AAAA,EAClF;AACA,YAAU,KAAK,EAAE,aAAa,UAAU,QAAQ,CAAC;AACnD;AAEA,MAAM,4BAA4B,CAChC,mBACA,cACA,UAC8D;AAC9D,MAAI,OAAO,sBAAsB,YAAY,OAAO,sBAAsB,YAAY;AACpF,WAAO,EAAE,UAAU,mBAAmB,SAAS,EAAE,GAAI,gBAAgB,CAAC,GAAI,GAAG,MAAM,EAAE;AAAA,EACvF;AACA,SAAO,EAAE,UAAU,SAAS,SAAS,EAAE,GAAI,qBAAqB,CAAC,GAAI,GAAG,MAAM,EAAE;AAClF;AAMA,MAAM,yBAAyB,CAC7B,2BACA,2BACA,YACA,UAC2B;AAC3B,OAAK,OAAO,8BAA8B,YAAY,OAAO,8BAA8B,aAAa,eAAe,QAAW;AAEhI,wBAAoB,SAAS,EAAE,GAAG,MAAM,GAAG,2BAAqC,yBAAyB;AACzG;AAAA,EACF;AAEA,QAAM,EAAE,UAAU,QAAQ,IAAI;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO,CAAC,WAAmB,gBAAiC;AAC1D,wBAAoB,UAAU,SAAS,WAAW,WAAW;AAAA,EAC/D;AACF;AAWO,SAAS,eAAe,2BAA0E,2BAAqE,YAAyD;AACrO,SAAO,uBAAuB,2BAA2B,2BAA2B,YAAY,CAAC,CAAC;AACpG;AAQO,SAAS,4BAA4B,2BAA4F,2BAA4F,YAAyD;AAC3R,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,SAAS,UAAU,KAAK,CAAC;AACjJ;AAKO,SAAS,6BAA6B,2BAA4F,2BAA4F,YAAyD;AAC5R,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,UAAU,UAAU,KAAK,CAAC;AAClJ;AAKO,SAAS,0BAA0B,2BAA4F,2BAA4F,YAAyD;AACzR,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,OAAO,UAAU,KAAK,CAAC;AAC/I;AAKO,SAAS,uBAAuB,2BAA4F,2BAA4F,YAAyD;AACtR,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAChJ;AAOO,SAAS,oBAAoB,2BAA0E,2BAA0E,YAAyD;AAC/O,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,QAAQ,CAAC;AACjI;AAKO,SAAS,qBAAqB,2BAA0E,2BAA0E,YAAyD;AAChP,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,SAAS,CAAC;AAClI;AAKO,SAAS,kBAAkB,2BAA0E,2BAA0E,YAAyD;AAC7O,SAAO,uBAAuB,2BAAkC,2BAAkC,YAAY,EAAE,MAAM,MAAM,CAAC;AAC/H;AAEO,SAAS,0BAA0B,QAAmD;AAC3F,QAAM,cAAc,OAAO,WAAW,aAAa,SAAS,OAAO;AACnE,SAAO,yBAAa,gBAAuB,8BAA8B,WAAW,EAAE,KAAK;AAC7F;AAWO,MAAM,yBAA4D;AAAA,EAAlE;AACL,wBAAiB,8BAA6B,oBAAI,QAAsG;AAAA;AAAA,EAExJ,YAAY,eAA8B,MAA0B,OAAiD;AACnH,UAAM,OAAO,cAAc;AAC3B,UAAM,aAAa,cAAc;AAGjC,UAAM,0BAA2B,UAAU,UAAU,KAAK,2BAA2B,IAAI,IAAI,KAAM,CAAC;AACpG,SAAK,2BAA2B,IAAI,MAAM,uBAAuB;AAEjE,UAAM,WAAW,0BAA0B,IAAI,KAAK,CAAC,GAAG,OAAO,WAAK,+BAAgB,GAAG,KAAK,CAAC;AAC7F,QAAI,QAAQ,WAAW,EAAG;AAE1B,UAAM,OAAiC,KAAK,cAAc;AAG1D,eAAW,KAAK,SAAS;AACvB,UAAI,EAAE,QAAQ,eAAgB,yBAAwB,KAAK,EAAE,IAAI,EAAE,QAAQ,gBAAgB,QAAQ,MAAM,MAAM,EAAE,QAAQ,CAAC;AAAA,IAC5H;AAGA,UAAM,cAAc,oBAAI,IAA8C;AAGtE,UAAM,WAA+C,CAAC,SAAS,QAAQ;AACrE,iBAAW,KAAK,SAAS;AACvB,YAAI;AACJ,YAAI,EAAE,QAAQ,YAAY,OAAO,EAAE,aAAa,UAAU;AACxD,gBAAM,SAAS,EAAE,aAAa,WAAW,EAAE,aAAa;AACxD,uBAAa,QAAQ,IAAI,OAAK,EAAE,MAAqB,EAAE,OAAO,QAAM;AAClE,gBAAI,CAAC,MAAM,GAAG,aAAa,EAAG,QAAO;AACrC,gBAAI,OAAQ,QAAO;AACnB,mBAAO,GAAG,UAAU,EAAE,QAAkB,KAAK,CAAC,CAAC,GAAG,UAAU,EAAE,QAAkB;AAAA,UAClF,CAAC;AAAA,QACH,OAAO;AACL,gBAAM,MAAM,YAAY,IAAI,CAAC;AAC7B,uBAAa,QAAQ,IAAI,OAAK,EAAE,MAAqB,EAAE,OAAO,OAAK,KAAK,EAAE,aAAa,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAAA,QAC3G;AACA,YAAI,WAAW,WAAW,EAAG;AAC7B,cAAM,OAAO,EAAE;AACf,cAAM,YAAY;AAChB,gBAAM,SAAS,sBAAS,oBAAoB,IAAI;AAChD,cAAI,KAAK,UAAU,CAAE,MAAM,KAAK,OAAO,YAAY,EAAE,aAAa,MAAM,OAAO,CAAC,EAAI;AACpF,gBAAM,UAAU,sBAAS,WAAW,IAAI;AACxC,gBAAM,YAAY,sBAAS,aAAa,cAAc,EAAE;AAExD,gBAAM,aAAa,CAAC,YAAY,QAAQ,OAAO,OAAK,WAAW,SAAS,EAAE,MAAqB,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,OAAO,KAAK,CAAC;AACnI,gBAAM,YAAY,CAAC,qBAAsB,wCAAsB,MAAM,EAAE,aAAa;AAAA,YAClF;AAAA,YAAS,eAAe;AAAA,YAAQ;AAAA,YAAW,4BAA4B;AAAA,UACzE,GAAG,CAAC,GAAG,YAAY,YAAY,CAAC;AAChC,cAAI,OAAO,UAAU,MAAS;AAC9B,cAAI,KAAK,QAAQ;AAAE,kBAAM,KAAK,MAAM,KAAK,OAAO,YAAY,EAAE,aAAa,MAAM,OAAO,CAAC;AAAG,mBAAO,UAAU,EAAE;AAAA,UAAG;AAClH,cAAI,QAAa;AACjB,cAAI;AAAE,qBAAS,MAAM,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;AAAA,UAAG,SAC5C,GAAG;AAAE,oBAAQ;AAAA,UAAG,UACvB;AAAU,gBAAI,KAAK,QAAS,OAAM,KAAK,QAAQ,YAAY,EAAE,aAAa,MAAM,OAAO,GAAG,EAAE,MAAM,QAAQ,MAAM,CAAC;AAAA,UAAG;AACpH,cAAI,MAAO,OAAM;AAAA,QACnB,GAAG,EAAE,MAAM,OAAK,QAAQ,MAAM,uCAAuC,CAAC,CAAC;AAAA,MACzE;AAAA,IACF;AAMA,UAAM,oBAAuC,CAAC;AAC9C,eAAW,KAAK,SAAS;AACvB,UAAI,EAAE,QAAQ,YAAY,OAAO,EAAE,aAAa,UAAU;AACxD,0BAAkB,KAAK,EAAE,QAAQ,EAAE,UAAU,UAAU,MAAM,cAAc,EAAE,QAAQ,MAAM,SAAS,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,QAAW,SAAS,CAAC;AAClK;AAAA,MACF;AACA,UAAI,UAAyB,CAAC;AAE9B,UAAI,OAAO,EAAE,aAAa,YAAY;AACpC,cAAM,MAAO,EAAE,SAAiB,MAAM,aAAa;AACnD,YAAI,eAAe,WAAW,YAAa,WAAU,CAAC,GAAkB;AAAA,iBAC/D,eAAe,WAAW,SAAU,WAAU,MAAM,KAAK,GAAe,EAAE,OAAO,CAAC,MAAW,aAAa,WAAW,WAAW;AAAA,iBAChI,MAAM,QAAQ,GAAG,EAAG,WAAU,IAAI,OAAO,CAAC,MAAW,aAAa,WAAW,WAAW;AAAA,MACnG,WAAW,OAAO,EAAE,aAAa,UAAU;AACzC,YAAI,EAAE,aAAa,WAAW,EAAE,aAAa,IAAI;AAC/C,oBAAU,CAAC,IAAmB;AAAA,QAChC,OAAO;AACL,gBAAM,IAAS,EAAE,QAAQ,QAAQ;AACjC,gBAAM,SAAgB,CAAC;AACvB,cAAI,MAAM,OAAQ,QAAO,KAAK,KAAK,cAAc,IAAI;AAAA,mBAC5C,MAAM,QAAS,QAAO,KAAK,IAAI;AAAA,mBAC/B,MAAM,YAAY,KAAK,WAAY,QAAO,KAAK,KAAK,UAAU;AAAA,mBAC9D,MAAM,OAAO;AAAE,mBAAO,KAAK,IAAI;AAAG,gBAAI,KAAK,WAAY,QAAO,KAAK,KAAK,UAAU;AAAA,UAAG;AAC9F,qBAAW,KAAK,QAAQ;AACtB,kBAAM,QAAQ,GAAG,mBAAmB,EAAE,QAAkB;AACxD,gBAAI,OAAO,OAAQ,SAAQ,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AACA,kBAAY,IAAI,GAAG,IAAI,QAAQ,OAAO,CAAC;AACvC,iBAAW,MAAM,QAAS,mBAAkB,KAAK,EAAE,QAAQ,IAAI,SAAS,EAAE,QAAQ,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,QAAW,SAAS,CAAC;AAAA,IACxI;AAEA,WAAO,EAAE,kBAAkB;AAAA,EAC7B;AAAA,EAEA,eAAe,eAAoC;AACjD,UAAM,OAAO,cAAc;AAC3B,eAAW,MAAM,KAAK,2BAA2B,IAAI,IAAI,KAAK,CAAC,GAAG;AAChE,UAAI;AAAE,WAAG,GAAG,GAAG,QAAQ,GAAG,IAAI;AAAA,MAAG,SAAS,GAAG;AAAE,gBAAQ,MAAM,+BAA+B,CAAC;AAAA,MAAG;AAAA,IAClG;AACA,SAAK,2BAA2B,OAAO,IAAI;AAAA,EAC7C;AACF;",
|
|
6
|
+
"names": ["import_types"]
|
|
7
7
|
}
|
|
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
7
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,7 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
15
|
return to;
|
|
17
16
|
};
|
|
18
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
20
18
|
var setInterval_exports = {};
|
|
21
19
|
__export(setInterval_exports, {
|
|
22
20
|
SET_INTERVAL_METADATA_KEY: () => SET_INTERVAL_METADATA_KEY,
|
|
@@ -26,57 +24,102 @@ __export(setInterval_exports, {
|
|
|
26
24
|
});
|
|
27
25
|
module.exports = __toCommonJS(setInterval_exports);
|
|
28
26
|
var import_core = require("@dooboostore/core");
|
|
27
|
+
var import_elementDefine = require("./elementDefine");
|
|
28
|
+
var import_Utils = require("../utils/Utils");
|
|
29
|
+
var import_parameter = require("./parameter");
|
|
29
30
|
const SET_INTERVAL_METADATA_KEY = Symbol.for("simple-web-component:set-interval");
|
|
31
|
+
const getActiveEntries = (inst) => inst.__swc_intervalIds ?? (inst.__swc_intervalIds = []);
|
|
30
32
|
function setInterval(interval, options = {}) {
|
|
31
|
-
return (target, propertyKey) => {
|
|
33
|
+
return (target, propertyKey, descriptor) => {
|
|
32
34
|
const constructor = target.constructor;
|
|
35
|
+
const normalizedOptions = { ...options, type: options.type ?? "returnValue" };
|
|
33
36
|
let metaList = import_core.ReflectUtils.getOwnMetadata(SET_INTERVAL_METADATA_KEY, constructor);
|
|
34
37
|
if (!metaList) {
|
|
35
38
|
metaList = [];
|
|
36
39
|
import_core.ReflectUtils.defineMetadata(SET_INTERVAL_METADATA_KEY, metaList, constructor);
|
|
37
40
|
}
|
|
38
|
-
metaList.push({ propertyKey, interval, options });
|
|
41
|
+
metaList.push({ propertyKey, interval, options: normalizedOptions });
|
|
42
|
+
if (normalizedOptions.type === "onConnected" || !descriptor) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const original = descriptor.value;
|
|
46
|
+
descriptor.value = function(...args) {
|
|
47
|
+
const res = original.apply(this, args);
|
|
48
|
+
const vk = normalizedOptions.valueKey ?? SET_INTERVAL_METADATA_KEY;
|
|
49
|
+
const tickFn = typeof res === "function" ? res : res && typeof res === "object" && typeof res[vk] === "function" ? res[vk] : void 0;
|
|
50
|
+
if (tickFn) {
|
|
51
|
+
(0, import_elementDefine.ensureInit)(this);
|
|
52
|
+
const win = import_Utils.SwcUtils.resolveWindow(this);
|
|
53
|
+
const id = win.setInterval(() => {
|
|
54
|
+
try {
|
|
55
|
+
tickFn(id);
|
|
56
|
+
} catch (e) {
|
|
57
|
+
console.error("[SWC] setInterval tick error:", e);
|
|
58
|
+
}
|
|
59
|
+
}, interval);
|
|
60
|
+
normalizedOptions.created?.(import_Utils.SwcUtils.getHelperAndHostSet(this), id);
|
|
61
|
+
getActiveEntries(this).push(id);
|
|
62
|
+
}
|
|
63
|
+
return res;
|
|
64
|
+
};
|
|
65
|
+
return descriptor;
|
|
39
66
|
};
|
|
40
67
|
}
|
|
41
68
|
const findAllSetIntervalMetadata = (target) => {
|
|
42
|
-
const constructor = target
|
|
69
|
+
const constructor = typeof target === "function" ? target : target.constructor;
|
|
43
70
|
return (import_core.ReflectUtils.findAllMetadata(SET_INTERVAL_METADATA_KEY, constructor) || []).flat();
|
|
44
71
|
};
|
|
45
72
|
class SetIntervalLifeCycler {
|
|
46
|
-
constructor() {
|
|
47
|
-
__publicField(this, "activeMap", /* @__PURE__ */ new WeakMap());
|
|
48
|
-
}
|
|
49
73
|
onConnected(helperHostSet) {
|
|
50
74
|
const inst = helperHostSet.$this;
|
|
51
|
-
|
|
75
|
+
inst.__swc_intervalIds = [];
|
|
52
76
|
for (const meta of findAllSetIntervalMetadata(inst)) {
|
|
77
|
+
if (meta.options.type !== "onConnected") continue;
|
|
53
78
|
const id = helperHostSet.$w.setInterval(() => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
79
|
+
void (async () => {
|
|
80
|
+
const helper = import_Utils.SwcUtils.getHelperAndHostSet(inst);
|
|
81
|
+
if (meta.options.filter && !await meta.options.filter(helper)) return;
|
|
82
|
+
const paramArgs = meta.options.parameter?.(helperHostSet) ?? [];
|
|
83
|
+
const hostSet = import_Utils.SwcUtils.getHostSet(inst);
|
|
84
|
+
const helperSet = import_Utils.SwcUtils.getHelperSet(helperHostSet.$w);
|
|
85
|
+
const buildArgs = (beforeReturn) => (0, import_parameter.buildSwcParameterArgs)(inst, meta.propertyKey, {
|
|
86
|
+
hostSet,
|
|
87
|
+
helperHostSet: helper,
|
|
88
|
+
helperSet,
|
|
89
|
+
setIntervalBeforeReturn: beforeReturn
|
|
90
|
+
}, [...paramArgs, beforeReturn]);
|
|
91
|
+
let args = buildArgs(void 0);
|
|
92
|
+
if (meta.options.before) {
|
|
93
|
+
const br = await meta.options.before(helper);
|
|
94
|
+
args = buildArgs(br);
|
|
95
|
+
}
|
|
96
|
+
let result, error;
|
|
97
|
+
try {
|
|
98
|
+
result = await inst[meta.propertyKey](...args);
|
|
99
|
+
const vk = meta.options.valueKey ?? SET_INTERVAL_METADATA_KEY;
|
|
100
|
+
if (result && typeof result === "object" && typeof result[vk] === "function") result[vk](id);
|
|
101
|
+
} catch (e) {
|
|
102
|
+
error = e;
|
|
103
|
+
} finally {
|
|
104
|
+
if (meta.options.finally) await meta.options.finally(helper, { args, result, error });
|
|
60
105
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
106
|
+
if (error) console.error("[SWC] setInterval tick error:", error);
|
|
107
|
+
})().catch((e) => console.error("[SWC] setInterval tick error:", e));
|
|
64
108
|
}, meta.interval);
|
|
65
109
|
meta.options.created?.(helperHostSet, id);
|
|
66
|
-
|
|
110
|
+
getActiveEntries(inst).push(id);
|
|
67
111
|
}
|
|
68
|
-
this.activeMap.set(inst, ids);
|
|
69
112
|
}
|
|
70
113
|
onDisconnected(helperHostSet) {
|
|
71
114
|
const inst = helperHostSet.$this;
|
|
72
|
-
for (const id of
|
|
115
|
+
for (const id of inst.__swc_intervalIds ?? []) {
|
|
73
116
|
try {
|
|
74
117
|
helperHostSet.$w.clearInterval(id);
|
|
75
118
|
} catch (e) {
|
|
76
119
|
console.error("[SWC] clearInterval error:", e);
|
|
77
120
|
}
|
|
78
121
|
}
|
|
79
|
-
|
|
122
|
+
inst.__swc_intervalIds = [];
|
|
80
123
|
}
|
|
81
124
|
}
|
|
82
125
|
//# sourceMappingURL=setInterval.js.map
|