@dooboostore/simple-web-component 1.0.50 → 1.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +735 -354
  2. package/dist/cjs/SwcAppEngine.js.map +2 -2
  3. package/dist/cjs/decorators/addEventListener.js +64 -146
  4. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  5. package/dist/cjs/decorators/applyAttribute.js +36 -48
  6. package/dist/cjs/decorators/applyAttribute.js.map +2 -2
  7. package/dist/cjs/decorators/applyClass.js +9 -12
  8. package/dist/cjs/decorators/applyClass.js.map +2 -2
  9. package/dist/cjs/decorators/applyNode.js +14 -22
  10. package/dist/cjs/decorators/applyNode.js.map +2 -2
  11. package/dist/cjs/decorators/applyProperty.js +12 -42
  12. package/dist/cjs/decorators/applyProperty.js.map +2 -2
  13. package/dist/cjs/decorators/applySlot.js +3 -3
  14. package/dist/cjs/decorators/applySlot.js.map +2 -2
  15. package/dist/cjs/decorators/applyStyle.js +9 -12
  16. package/dist/cjs/decorators/applyStyle.js.map +2 -2
  17. package/dist/cjs/decorators/around.js +124 -0
  18. package/dist/cjs/decorators/around.js.map +7 -0
  19. package/dist/cjs/decorators/changedAttribute.js +40 -12
  20. package/dist/cjs/decorators/changedAttribute.js.map +2 -2
  21. package/dist/cjs/decorators/elementDefine.js +224 -195
  22. package/dist/cjs/decorators/elementDefine.js.map +3 -3
  23. package/dist/cjs/decorators/emitCustomEvent.js +14 -12
  24. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  25. package/dist/cjs/decorators/eventMedia.js +36 -8
  26. package/dist/cjs/decorators/eventMedia.js.map +2 -2
  27. package/dist/cjs/decorators/fetch.js +278 -0
  28. package/dist/cjs/decorators/fetch.js.map +7 -0
  29. package/dist/cjs/decorators/index.js +5 -2
  30. package/dist/cjs/decorators/index.js.map +2 -2
  31. package/dist/cjs/decorators/intersectionObserver.js +33 -13
  32. package/dist/cjs/decorators/intersectionObserver.js.map +2 -2
  33. package/dist/cjs/decorators/lifecycles.js +11 -11
  34. package/dist/cjs/decorators/lifecycles.js.map +2 -2
  35. package/dist/cjs/decorators/mutationObserver.js +55 -39
  36. package/dist/cjs/decorators/mutationObserver.js.map +3 -3
  37. package/dist/cjs/decorators/parameter.js +92 -9
  38. package/dist/cjs/decorators/parameter.js.map +2 -2
  39. package/dist/cjs/decorators/publishSwcAppMessage.js +2 -2
  40. package/dist/cjs/decorators/publishSwcAppMessage.js.map +2 -2
  41. package/dist/cjs/decorators/query.js +11 -5
  42. package/dist/cjs/decorators/query.js.map +2 -2
  43. package/dist/cjs/decorators/requestAnimationFrame.js +7 -16
  44. package/dist/cjs/decorators/requestAnimationFrame.js.map +2 -2
  45. package/dist/cjs/decorators/resizeObserver.js +41 -17
  46. package/dist/cjs/decorators/resizeObserver.js.map +3 -3
  47. package/dist/cjs/decorators/setInterval.js +36 -25
  48. package/dist/cjs/decorators/setInterval.js.map +2 -2
  49. package/dist/cjs/decorators/setTimeout.js +36 -25
  50. package/dist/cjs/decorators/setTimeout.js.map +2 -2
  51. package/dist/cjs/decorators/state.js +13 -10
  52. package/dist/cjs/decorators/state.js.map +2 -2
  53. package/dist/cjs/decorators/{subscribeSwcAppMessageWhileConnected.js → subscribeSwcAppMessage.js} +20 -21
  54. package/dist/cjs/decorators/subscribeSwcAppMessage.js.map +7 -0
  55. package/dist/cjs/decorators/{subscribeSwcAppRouteChangeWhileConnected.js → subscribeSwcAppRouteChange.js} +23 -19
  56. package/dist/cjs/decorators/subscribeSwcAppRouteChange.js.map +7 -0
  57. package/dist/cjs/decorators/swcAppRoute.js +149 -0
  58. package/dist/cjs/decorators/swcAppRoute.js.map +7 -0
  59. package/dist/cjs/elements/SwcApp.js +70 -0
  60. package/dist/cjs/elements/SwcApp.js.map +2 -2
  61. package/dist/cjs/elements/SwcAppMixin.js +262 -83
  62. package/dist/cjs/elements/SwcAppMixin.js.map +3 -3
  63. package/dist/cjs/types/index.js +5 -1
  64. package/dist/cjs/types/index.js.map +2 -2
  65. package/dist/cjs/utils/Utils.js +36 -15
  66. package/dist/cjs/utils/Utils.js.map +2 -2
  67. package/dist/esm/SwcAppEngine.js.map +2 -2
  68. package/dist/esm/decorators/addEventListener.js +64 -146
  69. package/dist/esm/decorators/addEventListener.js.map +2 -2
  70. package/dist/esm/decorators/applyAttribute.js +36 -48
  71. package/dist/esm/decorators/applyAttribute.js.map +2 -2
  72. package/dist/esm/decorators/applyClass.js +9 -12
  73. package/dist/esm/decorators/applyClass.js.map +2 -2
  74. package/dist/esm/decorators/applyNode.js +15 -23
  75. package/dist/esm/decorators/applyNode.js.map +2 -2
  76. package/dist/esm/decorators/applyProperty.js +12 -42
  77. package/dist/esm/decorators/applyProperty.js.map +2 -2
  78. package/dist/esm/decorators/applySlot.js +3 -3
  79. package/dist/esm/decorators/applySlot.js.map +2 -2
  80. package/dist/esm/decorators/applyStyle.js +9 -12
  81. package/dist/esm/decorators/applyStyle.js.map +2 -2
  82. package/dist/esm/decorators/around.js +105 -0
  83. package/dist/esm/decorators/around.js.map +7 -0
  84. package/dist/esm/decorators/changedAttribute.js +40 -12
  85. package/dist/esm/decorators/changedAttribute.js.map +2 -2
  86. package/dist/esm/decorators/elementDefine.js +222 -193
  87. package/dist/esm/decorators/elementDefine.js.map +3 -3
  88. package/dist/esm/decorators/emitCustomEvent.js +15 -13
  89. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  90. package/dist/esm/decorators/eventMedia.js +36 -8
  91. package/dist/esm/decorators/eventMedia.js.map +2 -2
  92. package/dist/esm/decorators/fetch.js +259 -0
  93. package/dist/esm/decorators/fetch.js.map +7 -0
  94. package/dist/esm/decorators/index.js +5 -2
  95. package/dist/esm/decorators/index.js.map +2 -2
  96. package/dist/esm/decorators/intersectionObserver.js +33 -13
  97. package/dist/esm/decorators/intersectionObserver.js.map +2 -2
  98. package/dist/esm/decorators/lifecycles.js +11 -11
  99. package/dist/esm/decorators/lifecycles.js.map +2 -2
  100. package/dist/esm/decorators/mutationObserver.js +55 -39
  101. package/dist/esm/decorators/mutationObserver.js.map +3 -3
  102. package/dist/esm/decorators/parameter.js +92 -9
  103. package/dist/esm/decorators/parameter.js.map +2 -2
  104. package/dist/esm/decorators/publishSwcAppMessage.js +2 -2
  105. package/dist/esm/decorators/publishSwcAppMessage.js.map +2 -2
  106. package/dist/esm/decorators/query.js +11 -5
  107. package/dist/esm/decorators/query.js.map +2 -2
  108. package/dist/esm/decorators/requestAnimationFrame.js +8 -17
  109. package/dist/esm/decorators/requestAnimationFrame.js.map +2 -2
  110. package/dist/esm/decorators/resizeObserver.js +41 -17
  111. package/dist/esm/decorators/resizeObserver.js.map +2 -2
  112. package/dist/esm/decorators/setInterval.js +37 -26
  113. package/dist/esm/decorators/setInterval.js.map +2 -2
  114. package/dist/esm/decorators/setTimeout.js +37 -26
  115. package/dist/esm/decorators/setTimeout.js.map +2 -2
  116. package/dist/esm/decorators/state.js +13 -10
  117. package/dist/esm/decorators/state.js.map +2 -2
  118. package/dist/esm/decorators/subscribeSwcAppMessage.js +53 -0
  119. package/dist/esm/decorators/subscribeSwcAppMessage.js.map +7 -0
  120. package/dist/esm/decorators/{subscribeSwcAppRouteChangeWhileConnected.js → subscribeSwcAppRouteChange.js} +20 -16
  121. package/dist/esm/decorators/subscribeSwcAppRouteChange.js.map +7 -0
  122. package/dist/esm/decorators/swcAppRoute.js +130 -0
  123. package/dist/esm/decorators/swcAppRoute.js.map +7 -0
  124. package/dist/esm/elements/SwcApp.js +70 -0
  125. package/dist/esm/elements/SwcApp.js.map +2 -2
  126. package/dist/esm/elements/SwcAppMixin.js +264 -85
  127. package/dist/esm/elements/SwcAppMixin.js.map +3 -3
  128. package/dist/esm/types/index.js +5 -1
  129. package/dist/esm/types/index.js.map +2 -2
  130. package/dist/esm/utils/Utils.js +36 -15
  131. package/dist/esm/utils/Utils.js.map +2 -2
  132. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1893 -1000
  133. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  134. package/dist/types/SwcAppEngine.d.ts +1 -0
  135. package/dist/types/SwcAppEngine.d.ts.map +1 -1
  136. package/dist/types/decorators/addEventListener.d.ts +923 -960
  137. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  138. package/dist/types/decorators/applyAttribute.d.ts +26 -38
  139. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  140. package/dist/types/decorators/applyClass.d.ts +1 -3
  141. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  142. package/dist/types/decorators/applyNode.d.ts +15 -17
  143. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  144. package/dist/types/decorators/applyProperty.d.ts +25 -45
  145. package/dist/types/decorators/applyProperty.d.ts.map +1 -1
  146. package/dist/types/decorators/applyStyle.d.ts +1 -3
  147. package/dist/types/decorators/applyStyle.d.ts.map +1 -1
  148. package/dist/types/decorators/around.d.ts +87 -0
  149. package/dist/types/decorators/around.d.ts.map +1 -0
  150. package/dist/types/decorators/changedAttribute.d.ts +21 -1
  151. package/dist/types/decorators/changedAttribute.d.ts.map +1 -1
  152. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  153. package/dist/types/decorators/emitCustomEvent.d.ts +0 -1
  154. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  155. package/dist/types/decorators/eventMedia.d.ts +24 -1
  156. package/dist/types/decorators/eventMedia.d.ts.map +1 -1
  157. package/dist/types/decorators/fetch.d.ts +139 -0
  158. package/dist/types/decorators/fetch.d.ts.map +1 -0
  159. package/dist/types/decorators/index.d.ts +5 -2
  160. package/dist/types/decorators/index.d.ts.map +1 -1
  161. package/dist/types/decorators/intersectionObserver.d.ts +24 -11
  162. package/dist/types/decorators/intersectionObserver.d.ts.map +1 -1
  163. package/dist/types/decorators/lifecycles.d.ts +8 -7
  164. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  165. package/dist/types/decorators/mutationObserver.d.ts +26 -13
  166. package/dist/types/decorators/mutationObserver.d.ts.map +1 -1
  167. package/dist/types/decorators/parameter.d.ts +84 -6
  168. package/dist/types/decorators/parameter.d.ts.map +1 -1
  169. package/dist/types/decorators/publishSwcAppMessage.d.ts +0 -1
  170. package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
  171. package/dist/types/decorators/query.d.ts +7 -7
  172. package/dist/types/decorators/query.d.ts.map +1 -1
  173. package/dist/types/decorators/requestAnimationFrame.d.ts +1 -1
  174. package/dist/types/decorators/requestAnimationFrame.d.ts.map +1 -1
  175. package/dist/types/decorators/resizeObserver.d.ts +26 -13
  176. package/dist/types/decorators/resizeObserver.d.ts.map +1 -1
  177. package/dist/types/decorators/setInterval.d.ts +10 -0
  178. package/dist/types/decorators/setInterval.d.ts.map +1 -1
  179. package/dist/types/decorators/setTimeout.d.ts +10 -0
  180. package/dist/types/decorators/setTimeout.d.ts.map +1 -1
  181. package/dist/types/decorators/state.d.ts.map +1 -1
  182. package/dist/types/decorators/subscribeSwcAppMessage.d.ts +44 -0
  183. package/dist/types/decorators/subscribeSwcAppMessage.d.ts.map +1 -0
  184. package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts +60 -0
  185. package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts.map +1 -0
  186. package/dist/types/decorators/swcAppRoute.d.ts +94 -0
  187. package/dist/types/decorators/swcAppRoute.d.ts.map +1 -0
  188. package/dist/types/elements/SwcApp.d.ts.map +1 -1
  189. package/dist/types/elements/SwcAppMixin.d.ts +423 -388
  190. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  191. package/dist/types/types/index.d.ts +43 -4
  192. package/dist/types/types/index.d.ts.map +1 -1
  193. package/dist/types/utils/Utils.d.ts +15 -5
  194. package/dist/types/utils/Utils.d.ts.map +1 -1
  195. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1893 -1000
  196. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  197. package/package.json +8 -6
  198. package/src/SwcAppEngine.ts +1 -0
  199. package/src/decorators/addEventListener.ts +102 -96
  200. package/src/decorators/applyAttribute.ts +76 -138
  201. package/src/decorators/applyClass.ts +8 -14
  202. package/src/decorators/applyNode.ts +33 -41
  203. package/src/decorators/applyProperty.ts +51 -99
  204. package/src/decorators/applySlot.ts +3 -3
  205. package/src/decorators/applyStyle.ts +8 -14
  206. package/src/decorators/around.ts +196 -0
  207. package/src/decorators/changedAttribute.ts +39 -15
  208. package/src/decorators/elementDefine.ts +270 -219
  209. package/src/decorators/emitCustomEvent.ts +17 -13
  210. package/src/decorators/eventMedia.ts +50 -9
  211. package/src/decorators/fetch.ts +454 -0
  212. package/src/decorators/index.ts +5 -2
  213. package/src/decorators/intersectionObserver.ts +38 -24
  214. package/src/decorators/lifecycles.ts +24 -22
  215. package/src/decorators/mutationObserver.ts +71 -52
  216. package/src/decorators/parameter.ts +145 -14
  217. package/src/decorators/publishSwcAppMessage.ts +3 -4
  218. package/src/decorators/query.ts +22 -14
  219. package/src/decorators/requestAnimationFrame.ts +10 -19
  220. package/src/decorators/resizeObserver.ts +50 -29
  221. package/src/decorators/setInterval.ts +37 -26
  222. package/src/decorators/setTimeout.ts +37 -26
  223. package/src/decorators/state.ts +19 -13
  224. package/src/decorators/subscribeSwcAppMessage.ts +106 -0
  225. package/src/decorators/subscribeSwcAppRouteChange.ts +131 -0
  226. package/src/decorators/swcAppRoute.ts +231 -0
  227. package/src/elements/SwcApp.ts +40 -10
  228. package/src/elements/SwcAppMixin.ts +340 -101
  229. package/src/types/index.ts +38 -5
  230. package/src/utils/Utils.ts +50 -18
  231. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +0 -7
  232. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +0 -7
  233. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +0 -54
  234. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +0 -7
  235. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +0 -7
  236. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +0 -23
  237. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +0 -1
  238. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +0 -31
  239. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +0 -1
  240. package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +0 -91
  241. package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +0 -107
@@ -27,15 +27,7 @@ var import_core = require("@dooboostore/core");
27
27
  var import_elementDefine = require("./elementDefine");
28
28
  var import_Utils = require("../utils/Utils");
29
29
  const REQUEST_ANIMATION_FRAME_METADATA_KEY = Symbol.for("simple-web-component:request-animation-frame");
30
- const activeMap = /* @__PURE__ */ new WeakMap();
31
- const getActiveEntries = (inst) => {
32
- let entries = activeMap.get(inst);
33
- if (!entries) {
34
- entries = [];
35
- activeMap.set(inst, entries);
36
- }
37
- return entries;
38
- };
30
+ const getActiveEntries = (inst) => inst.__swc_requestAnimationFrameIds ?? (inst.__swc_requestAnimationFrameIds = []);
39
31
  const startFrameLoop = (win, entries, frameFn) => {
40
32
  let currentId = 0;
41
33
  const step = (timestamp, prevValue) => {
@@ -75,10 +67,9 @@ const applyRequestAnimationFrame = (options, target, propertyKey, descriptor) =>
75
67
  const frameFn = typeof res === "function" ? res : res && typeof res === "object" && typeof res[vk] === "function" ? res[vk] : void 0;
76
68
  if (frameFn) {
77
69
  (0, import_elementDefine.ensureInit)(this);
78
- const conf = (0, import_elementDefine.getElementConfig)(this);
79
- const win = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
70
+ const win = import_Utils.SwcUtils.resolveWindow(this);
80
71
  const id = startFrameLoop(win, getActiveEntries(this), frameFn);
81
- normalizedOptions.created?.(import_Utils.SwcUtils.getHelperAndHostSet(win, this), id);
72
+ normalizedOptions.created?.(import_Utils.SwcUtils.getHelperAndHostSet(this), id);
82
73
  }
83
74
  return res;
84
75
  };
@@ -94,13 +85,13 @@ function requestAnimationFrame(optionsOrTarget, propertyKey, descriptor) {
94
85
  };
95
86
  }
96
87
  const findAllRequestAnimationFrameMetadata = (target) => {
97
- const constructor = target instanceof Function ? target : target.constructor;
88
+ const constructor = typeof target === "function" ? target : target.constructor;
98
89
  return (import_core.ReflectUtils.findAllMetadata(REQUEST_ANIMATION_FRAME_METADATA_KEY, constructor) || []).flat();
99
90
  };
100
91
  class RequestAnimationFrameLifeCycler {
101
92
  onConnected(helperHostSet) {
102
93
  const inst = helperHostSet.$this;
103
- activeMap.delete(inst);
94
+ inst.__swc_requestAnimationFrameIds = [];
104
95
  const entries = getActiveEntries(inst);
105
96
  for (const meta of findAllRequestAnimationFrameMetadata(inst)) {
106
97
  if (meta.options.type !== "onConnected") continue;
@@ -111,14 +102,14 @@ class RequestAnimationFrameLifeCycler {
111
102
  }
112
103
  onDisconnected(helperHostSet) {
113
104
  const inst = helperHostSet.$this;
114
- for (const id of activeMap.get(inst) ?? []) {
105
+ for (const id of inst.__swc_requestAnimationFrameIds ?? []) {
115
106
  try {
116
107
  helperHostSet.$w.cancelAnimationFrame(id);
117
108
  } catch (e) {
118
109
  console.error("[SWC] cancelAnimationFrame error:", e);
119
110
  }
120
111
  }
121
- activeMap.delete(inst);
112
+ inst.__swc_requestAnimationFrameIds = [];
122
113
  }
123
114
  }
124
115
  //# sourceMappingURL=requestAnimationFrame.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/requestAnimationFrame.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } 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 activeMap = new WeakMap<any, number[]>();\nconst getActiveEntries = (inst: any): number[] => {\n let entries = activeMap.get(inst);\n if (!entries) {\n entries = [];\n activeMap.set(inst, entries);\n }\n return entries;\n};\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 conf = getElementConfig(this);\n const win = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n const id = startFrameLoop(win, getActiveEntries(this), frameFn);\n normalizedOptions.created?.(SwcUtils.getHelperAndHostSet(win, 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() \uB610\uB294 @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 = target instanceof 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 activeMap.delete(inst); // \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 activeMap.get(inst) ?? []) {\n try {\n helperHostSet.$w.cancelAnimationFrame(id);\n } catch (e) {\n console.error('[SWC] cancelAnimationFrame error:', e);\n }\n }\n activeMap.delete(inst);\n }\n}\n"],
5
- "mappings": "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",
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
6
  "names": ["propertyKey", "descriptor"]
7
7
  }
@@ -29,16 +29,17 @@ __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
  const applyResizeObserver = (selector, options, targetObj, propertyKey) => {
40
41
  const constructor = targetObj.constructor;
41
- let observers = import_core.ReflectUtils.getMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor);
42
+ let observers = import_core.ReflectUtils.getOwnMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor);
42
43
  if (!observers) {
43
44
  observers = [];
44
45
  import_core.ReflectUtils.defineMetadata(RESIZE_OBSERVER_METADATA_KEY, observers, constructor);
@@ -68,9 +69,6 @@ const dispatchResizeObserver = (selectorOrOptionsOrTarget, maybeOptionsOrPropert
68
69
  function resizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
69
70
  return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, {});
70
71
  }
71
- function resizeObserverThis(optionsOrTarget, propertyKey, descriptor) {
72
- return dispatchResizeObserver(optionsOrTarget, propertyKey, descriptor, {});
73
- }
74
72
  function resizeObserverDelegateLight(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor) {
75
73
  return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "light", delegate: true });
76
74
  }
@@ -93,24 +91,25 @@ function resizeObserverAll(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey,
93
91
  return dispatchResizeObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, { root: "all" });
94
92
  }
95
93
  function getResizeObserverMetadata(target) {
96
- const constructor = target instanceof Function ? target : target.constructor;
97
- return import_core.ReflectUtils.getMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor);
94
+ const constructor = typeof target === "function" ? target : target.constructor;
95
+ return import_core.ReflectUtils.findAllMetadata(RESIZE_OBSERVER_METADATA_KEY, constructor).flat();
98
96
  }
99
97
  class ResizeObserverLifeCycler {
100
98
  constructor() {
101
99
  __publicField(this, "removeObserverCallbacksMap", /* @__PURE__ */ new WeakMap());
102
100
  }
103
- onConnected(helperHostSet) {
101
+ onConnected(helperHostSet, _set, scope) {
104
102
  const inst = helperHostSet.$this;
105
103
  const currentWin = helperHostSet.$w;
106
- const removeObserverCallbacks = [];
104
+ const removeObserverCallbacks = scope === "rest" && this.removeObserverCallbacksMap.get(inst) || [];
107
105
  this.removeObserverCallbacksMap.set(inst, removeObserverCallbacks);
108
- const allMeta = getResizeObserverMetadata(inst) ?? [];
106
+ const allMeta = (getResizeObserverMetadata(inst) ?? []).filter((m) => (0, import_types2.inObserverScope)(m, scope));
109
107
  if (allMeta.length === 0) return;
110
108
  const root = inst.shadowRoot || inst;
111
109
  for (const m of allMeta) {
112
110
  if (m.options.removeObserver) removeObserverCallbacks.push({ fn: m.options.removeObserver, target: root, opts: m.options });
113
111
  }
112
+ const metaTargets = /* @__PURE__ */ new Map();
114
113
  const callback = (entries, obs) => {
115
114
  for (const m of allMeta) {
116
115
  let matchedEls;
@@ -122,14 +121,38 @@ class ResizeObserverLifeCycler {
122
121
  return el.matches?.(m.selector) || !!el.closest?.(m.selector);
123
122
  });
124
123
  } else {
125
- matchedEls = entries.map((e) => e.target).filter((t) => t && t.nodeType === 1);
124
+ const set = metaTargets.get(m);
125
+ matchedEls = entries.map((e) => e.target).filter((t) => t && t.nodeType === 1 && !!set?.has(t));
126
126
  }
127
127
  if (matchedEls.length === 0) continue;
128
- if (m.options.filter) {
129
- if (!m.options.filter(matchedEls, { currentThis: inst, helper: helperHostSet })) continue;
130
- }
131
- const hostSet = import_Utils.SwcUtils.getHostSet(inst);
132
- inst[m.propertyKey](matchedEls, entries, obs, { ...hostSet, $root: root });
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));
133
156
  }
134
157
  };
135
158
  const resizeObserverSet = [];
@@ -163,6 +186,7 @@ class ResizeObserverLifeCycler {
163
186
  }
164
187
  }
165
188
  }
189
+ metaTargets.set(m, new WeakSet(targets));
166
190
  for (const el of targets) resizeObserverSet.push({ target: el, options: m.options.box ? { box: m.options.box } : void 0, callback });
167
191
  }
168
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\nconst applyResizeObserver = (selector: SwcSelector, options: ResizeObserverOptions, targetObj: Object, propertyKey: string | symbol): void => {\n const constructor = targetObj.constructor;\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 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()/@decorator(...)) \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() / @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\nexport function resizeObserverThis(options?: ResizeObserverQueryOptions): MethodDecorator;\nexport function resizeObserverThis(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function resizeObserverThis(optionsOrTarget?: ResizeObserverQueryOptions | Object, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchResizeObserver(optionsOrTarget, propertyKey, descriptor, {});\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 = 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": "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",
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": "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",
6
+ "names": ["import_types"]
7
7
  }
@@ -26,16 +26,9 @@ module.exports = __toCommonJS(setInterval_exports);
26
26
  var import_core = require("@dooboostore/core");
27
27
  var import_elementDefine = require("./elementDefine");
28
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");
30
- const activeMap = /* @__PURE__ */ new WeakMap();
31
- const getActiveEntries = (inst) => {
32
- let entries = activeMap.get(inst);
33
- if (!entries) {
34
- entries = [];
35
- activeMap.set(inst, entries);
36
- }
37
- return entries;
38
- };
31
+ const getActiveEntries = (inst) => inst.__swc_intervalIds ?? (inst.__swc_intervalIds = []);
39
32
  function setInterval(interval, options = {}) {
40
33
  return (target, propertyKey, descriptor) => {
41
34
  const constructor = target.constructor;
@@ -56,8 +49,7 @@ function setInterval(interval, options = {}) {
56
49
  const tickFn = typeof res === "function" ? res : res && typeof res === "object" && typeof res[vk] === "function" ? res[vk] : void 0;
57
50
  if (tickFn) {
58
51
  (0, import_elementDefine.ensureInit)(this);
59
- const conf = (0, import_elementDefine.getElementConfig)(this);
60
- const win = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
52
+ const win = import_Utils.SwcUtils.resolveWindow(this);
61
53
  const id = win.setInterval(() => {
62
54
  try {
63
55
  tickFn(id);
@@ -65,7 +57,7 @@ function setInterval(interval, options = {}) {
65
57
  console.error("[SWC] setInterval tick error:", e);
66
58
  }
67
59
  }, interval);
68
- normalizedOptions.created?.(import_Utils.SwcUtils.getHelperAndHostSet(win, this), id);
60
+ normalizedOptions.created?.(import_Utils.SwcUtils.getHelperAndHostSet(this), id);
69
61
  getActiveEntries(this).push(id);
70
62
  }
71
63
  return res;
@@ -74,26 +66,45 @@ function setInterval(interval, options = {}) {
74
66
  };
75
67
  }
76
68
  const findAllSetIntervalMetadata = (target) => {
77
- const constructor = target instanceof Function ? target : target.constructor;
69
+ const constructor = typeof target === "function" ? target : target.constructor;
78
70
  return (import_core.ReflectUtils.findAllMetadata(SET_INTERVAL_METADATA_KEY, constructor) || []).flat();
79
71
  };
80
72
  class SetIntervalLifeCycler {
81
73
  onConnected(helperHostSet) {
82
74
  const inst = helperHostSet.$this;
83
- activeMap.delete(inst);
75
+ inst.__swc_intervalIds = [];
84
76
  for (const meta of findAllSetIntervalMetadata(inst)) {
85
77
  if (meta.options.type !== "onConnected") continue;
86
78
  const id = helperHostSet.$w.setInterval(() => {
87
- const args = meta.options.parameter?.(helperHostSet) ?? [];
88
- try {
89
- const res = inst[meta.propertyKey](...args);
90
- const vk = meta.options.valueKey ?? SET_INTERVAL_METADATA_KEY;
91
- if (res && typeof res === "object" && typeof res[vk] === "function") {
92
- res[vk](id);
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 });
93
105
  }
94
- } catch (e) {
95
- console.error("[SWC] setInterval tick error:", e);
96
- }
106
+ if (error) console.error("[SWC] setInterval tick error:", error);
107
+ })().catch((e) => console.error("[SWC] setInterval tick error:", e));
97
108
  }, meta.interval);
98
109
  meta.options.created?.(helperHostSet, id);
99
110
  getActiveEntries(inst).push(id);
@@ -101,14 +112,14 @@ class SetIntervalLifeCycler {
101
112
  }
102
113
  onDisconnected(helperHostSet) {
103
114
  const inst = helperHostSet.$this;
104
- for (const id of activeMap.get(inst) ?? []) {
115
+ for (const id of inst.__swc_intervalIds ?? []) {
105
116
  try {
106
117
  helperHostSet.$w.clearInterval(id);
107
118
  } catch (e) {
108
119
  console.error("[SWC] clearInterval error:", e);
109
120
  }
110
121
  }
111
- activeMap.delete(inst);
122
+ inst.__swc_intervalIds = [];
112
123
  }
113
124
  }
114
125
  //# sourceMappingURL=setInterval.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/setInterval.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { ElementDefineLifeCycler, HelperHostSet } from '../types';\n\nexport const SET_INTERVAL_METADATA_KEY = Symbol.for('simple-web-component:set-interval');\n\nexport type SetIntervalType = 'onConnected' | 'returnValue';\n\nexport interface SetIntervalOptions {\n /**\n * 'onConnected' (connect \uC2DC \uC790\uB3D9\uC73C\uB85C \uC2DC\uC791, 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\uC774 \uC2E4\uC81C\uB85C \uBC18\uBCF5 \uC2E4\uD589\uB420 \uD568\uC218\uAC00 \uB41C\uB2E4 - \uC544\uB798 \uC124\uBA85 \uCC38\uACE0).\n */\n type?: SetIntervalType;\n /** \uB9E4 tick\uB9C8\uB2E4 \uB370\uCF54\uB808\uC774\uD2B8\uB41C \uBA54\uC11C\uB4DC\uC5D0 \uB118\uAE38 \uC778\uC790\uB97C \uACC4\uC0B0. type:'onConnected'\uC5D0\uC11C\uB9CC \uC758\uBBF8\uAC00 \uC788\uC74C (\uC5C6\uC73C\uBA74 \uC778\uC790 \uC5C6\uC774 \uD638\uCD9C). */\n parameter?: (set: HelperHostSet) => any[];\n /** \uD0C0\uC774\uBA38 \uB4F1\uB85D \uC9C1\uD6C4 1\uD68C \uD638\uCD9C (\uB514\uBC84\uAE45/\uB85C\uAE45\uC6A9). id\uB294 \uC2E4\uC81C setInterval \uBC18\uD658\uAC12 - cleanup\uC740 \uC790\uB3D9\uC73C\uB85C \uCC98\uB9AC\uB418\uBBC0\uB85C \uC9C1\uC811 clear\uD560 \uD544\uC694 \uC5C6\uC74C. */\n created?: (set: HelperHostSet, id: number) => void;\n /**\n * type:'onConnected' - \uB9E4 tick\uB9C8\uB2E4 \uB370\uCF54\uB808\uC774\uD2B8\uB41C \uBA54\uC11C\uB4DC\uC758 \uB9AC\uD134\uAC12\uC774 \uAC1D\uCCB4\uC774\uACE0 \uC774 \uD0A4\uC758 \uAC12\uC774 \uD568\uC218\uC774\uBA74 (id: number)\uB85C \uD638\uCD9C\uD55C\uB2E4.\n * type:'returnValue' - \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 \"\uC2E4\uC81C\uB85C \uBC18\uBCF5 \uC2E4\uD589\uB420 \uD568\uC218\"\uB85C \uC0AC\uC6A9\uD55C\uB2E4.\n * \uC548 \uC8FC\uBA74 SET_INTERVAL_METADATA_KEY\uB85C \uD3F4\uBC31\uD55C\uB2E4 - applyAttribute.ts/applyNode.ts\uC758 valueKey\uC640 \uB3D9\uC77C\uD55C \uCEE8\uBCA4\uC158\n * (\uB9AC\uD134 \uAC1D\uCCB4\uC5D0\uC11C \uC774 \uB370\uCF54\uB808\uC774\uD130 \uBAAB\uB9CC \uBF51\uC544 \uC4F0\uACE0, \uB2E4\uB978 \uB370\uCF54\uB808\uC774\uD130\uC640 \uC2A4\uD0DD\uD560 \uB54C\uB9CC \uCEE4\uC2A4\uD140 \uD0A4\uB85C \uAD6C\uBD84\uD558\uBA74 \uB41C\uB2E4).\n */\n valueKey?: symbol | string;\n}\n\nexport interface SetIntervalMetadata {\n propertyKey: string | symbol;\n interval: number;\n options: SetIntervalOptions;\n}\n\nconst activeMap = new WeakMap<any, number[]>();\nconst getActiveEntries = (inst: any): number[] => {\n let entries = activeMap.get(inst);\n if (!entries) {\n entries = [];\n activeMap.set(inst, entries);\n }\n return entries;\n};\n\n/**\n * type:'onConnected' - connect \uC2DC \uC790\uB3D9\uC73C\uB85C setInterval\uC744 \uAC78\uACE0, disconnect \uC2DC \uC790\uB3D9\uC73C\uB85C clearInterval \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 \uC0C8 setInterval\uC758 \uBC18\uBCF5 \uCF5C\uBC31\uC73C\uB85C \uB4F1\uB85D\uD55C\uB2E4.\n * \uD638\uCD9C\uD560 \uB54C\uB9C8\uB2E4 \uBCC4\uB3C4\uC758 \uC0C8 \uD0C0\uC774\uBA38\uAC00 \uC0DD\uAE30\uBA70, disconnect \uC2DC \uC804\uBD80 \uC815\uB9AC\uB41C\uB2E4. \uC6D0\uBCF8 \uB9AC\uD134\uAC12\uC740 \uADF8\uB300\uB85C \uD1B5\uACFC\uC2DC\uD0A4\uBBC0\uB85C\n * \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 */\nexport function setInterval(interval: number, options: SetIntervalOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const constructor = target.constructor;\n const normalizedOptions: SetIntervalOptions = { ...options, type: options.type ?? 'returnValue' };\n\n let metaList = ReflectUtils.getOwnMetadata(SET_INTERVAL_METADATA_KEY, constructor) as SetIntervalMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(SET_INTERVAL_METADATA_KEY, metaList, constructor);\n }\n metaList.push({ propertyKey, interval, 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 ?? SET_INTERVAL_METADATA_KEY;\n const tickFn: ((id: number) => void) | undefined =\n typeof res === 'function' ? res : res && typeof res === 'object' && typeof res[vk] === 'function' ? res[vk] : undefined;\n\n if (tickFn) {\n ensureInit(this);\n const conf = getElementConfig(this);\n const win = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n const id = win.setInterval(() => {\n try {\n tickFn(id);\n } catch (e) {\n console.error('[SWC] setInterval tick error:', e);\n }\n }, interval);\n normalizedOptions.created?.(SwcUtils.getHelperAndHostSet(win, this), id);\n getActiveEntries(this).push(id);\n }\n return res;\n };\n return descriptor;\n };\n}\n\nexport const findAllSetIntervalMetadata = (target: any): SetIntervalMetadata[] => {\n const constructor = target instanceof Function ? target : target.constructor;\n return (ReflectUtils.findAllMetadata<SetIntervalMetadata[]>(SET_INTERVAL_METADATA_KEY, constructor) || []).flat();\n};\n\nexport class SetIntervalLifeCycler implements ElementDefineLifeCycler {\n onConnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n activeMap.delete(inst); // \uC7AC\uC5F0\uACB0 \uB300\uBE44 \uB9AC\uC14B\n for (const meta of findAllSetIntervalMetadata(inst)) {\n if (meta.options.type !== 'onConnected') continue; // returnValue \uD0C0\uC785\uC740 \uC218\uB3D9 \uD638\uCD9C\uC744 \uAE30\uB2E4\uB9BC\n const id = helperHostSet.$w.setInterval(() => {\n const args = meta.options.parameter?.(helperHostSet) ?? [];\n try {\n const res = inst[meta.propertyKey](...args);\n const vk = meta.options.valueKey ?? SET_INTERVAL_METADATA_KEY;\n if (res && typeof res === 'object' && typeof res[vk] === 'function') {\n res[vk](id);\n }\n } catch (e) {\n console.error('[SWC] setInterval tick error:', e);\n }\n }, meta.interval);\n meta.options.created?.(helperHostSet, id);\n getActiveEntries(inst).push(id);\n }\n }\n\n onDisconnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n for (const id of activeMap.get(inst) ?? []) {\n try {\n helperHostSet.$w.clearInterval(id);\n } catch (e) {\n console.error('[SWC] clearInterval error:', e);\n }\n }\n activeMap.delete(inst);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { buildSwcParameterArgs } from './parameter';\nimport { ElementDefineLifeCycler, HelperHostSet } from '../types';\n\nexport const SET_INTERVAL_METADATA_KEY = Symbol.for('simple-web-component:set-interval');\n\nexport type SetIntervalType = 'onConnected' | 'returnValue';\n\nexport interface SetIntervalOptions {\n /**\n * 'onConnected' (connect \uC2DC \uC790\uB3D9\uC73C\uB85C \uC2DC\uC791, 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\uC774 \uC2E4\uC81C\uB85C \uBC18\uBCF5 \uC2E4\uD589\uB420 \uD568\uC218\uAC00 \uB41C\uB2E4 - \uC544\uB798 \uC124\uBA85 \uCC38\uACE0).\n */\n type?: SetIntervalType;\n /** \uB9E4 tick\uB9C8\uB2E4 \uB370\uCF54\uB808\uC774\uD2B8\uB41C \uBA54\uC11C\uB4DC\uC5D0 \uB118\uAE38 \uC778\uC790\uB97C \uACC4\uC0B0. type:'onConnected'\uC5D0\uC11C\uB9CC \uC758\uBBF8\uAC00 \uC788\uC74C (\uC5C6\uC73C\uBA74 \uC778\uC790 \uC5C6\uC774 \uD638\uCD9C). */\n parameter?: (set: HelperHostSet) => any[];\n /** \uD0C0\uC774\uBA38 \uB4F1\uB85D \uC9C1\uD6C4 1\uD68C \uD638\uCD9C (\uB514\uBC84\uAE45/\uB85C\uAE45\uC6A9). id\uB294 \uC2E4\uC81C setInterval \uBC18\uD658\uAC12 - cleanup\uC740 \uC790\uB3D9\uC73C\uB85C \uCC98\uB9AC\uB418\uBBC0\uB85C \uC9C1\uC811 clear\uD560 \uD544\uC694 \uC5C6\uC74C. */\n created?: (set: HelperHostSet, id: number) => void;\n /** [type:'onConnected' \uC804\uC6A9] \uB9E4 tick \uC2E4\uD589 \uC5EC\uBD80 \uAC8C\uC774\uD2B8. Promise<boolean>\uB3C4 \uAC00\uB2A5. false\uBA74 \uC774 tick \uC2A4\uD0B5. */\n filter?: (set: HelperHostSet) => boolean | Promise<boolean>;\n /** [type:'onConnected' \uC804\uC6A9] tick \uD578\uB4E4\uB7EC \uC9C1\uC804 \uD6C5. await\uB418\uACE0, \uB9AC\uD134\uAC12\uC740 @setIntervalBeforeReturn \uC73C\uB85C \uC8FC\uC785\uB41C\uB2E4. */\n before?: (set: HelperHostSet) => any | Promise<any>;\n /** [type:'onConnected' \uC804\uC6A9] tick \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. */\n finally?: (set: HelperHostSet, ctx: { args: any[]; result?: any; error?: any }) => any | Promise<any>;\n /**\n * type:'onConnected' - \uB9E4 tick\uB9C8\uB2E4 \uB370\uCF54\uB808\uC774\uD2B8\uB41C \uBA54\uC11C\uB4DC\uC758 \uB9AC\uD134\uAC12\uC774 \uAC1D\uCCB4\uC774\uACE0 \uC774 \uD0A4\uC758 \uAC12\uC774 \uD568\uC218\uC774\uBA74 (id: number)\uB85C \uD638\uCD9C\uD55C\uB2E4.\n * type:'returnValue' - \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 \"\uC2E4\uC81C\uB85C \uBC18\uBCF5 \uC2E4\uD589\uB420 \uD568\uC218\"\uB85C \uC0AC\uC6A9\uD55C\uB2E4.\n * \uC548 \uC8FC\uBA74 SET_INTERVAL_METADATA_KEY\uB85C \uD3F4\uBC31\uD55C\uB2E4 - applyAttribute.ts/applyNode.ts\uC758 valueKey\uC640 \uB3D9\uC77C\uD55C \uCEE8\uBCA4\uC158\n * (\uB9AC\uD134 \uAC1D\uCCB4\uC5D0\uC11C \uC774 \uB370\uCF54\uB808\uC774\uD130 \uBAAB\uB9CC \uBF51\uC544 \uC4F0\uACE0, \uB2E4\uB978 \uB370\uCF54\uB808\uC774\uD130\uC640 \uC2A4\uD0DD\uD560 \uB54C\uB9CC \uCEE4\uC2A4\uD140 \uD0A4\uB85C \uAD6C\uBD84\uD558\uBA74 \uB41C\uB2E4).\n */\n valueKey?: symbol | string;\n}\n\nexport interface SetIntervalMetadata {\n propertyKey: string | symbol;\n interval: number;\n options: SetIntervalOptions;\n}\n\nconst getActiveEntries = (inst: any): number[] => (inst.__swc_intervalIds ??= []);\n\n/**\n * type:'onConnected' - connect \uC2DC \uC790\uB3D9\uC73C\uB85C setInterval\uC744 \uAC78\uACE0, disconnect \uC2DC \uC790\uB3D9\uC73C\uB85C clearInterval \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 \uC0C8 setInterval\uC758 \uBC18\uBCF5 \uCF5C\uBC31\uC73C\uB85C \uB4F1\uB85D\uD55C\uB2E4.\n * \uD638\uCD9C\uD560 \uB54C\uB9C8\uB2E4 \uBCC4\uB3C4\uC758 \uC0C8 \uD0C0\uC774\uBA38\uAC00 \uC0DD\uAE30\uBA70, disconnect \uC2DC \uC804\uBD80 \uC815\uB9AC\uB41C\uB2E4. \uC6D0\uBCF8 \uB9AC\uD134\uAC12\uC740 \uADF8\uB300\uB85C \uD1B5\uACFC\uC2DC\uD0A4\uBBC0\uB85C\n * \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 */\nexport function setInterval(interval: number, options: SetIntervalOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const constructor = target.constructor;\n const normalizedOptions: SetIntervalOptions = { ...options, type: options.type ?? 'returnValue' };\n\n let metaList = ReflectUtils.getOwnMetadata(SET_INTERVAL_METADATA_KEY, constructor) as SetIntervalMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(SET_INTERVAL_METADATA_KEY, metaList, constructor);\n }\n metaList.push({ propertyKey, interval, 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 ?? SET_INTERVAL_METADATA_KEY;\n const tickFn: ((id: number) => void) | undefined =\n typeof res === 'function' ? res : res && typeof res === 'object' && typeof res[vk] === 'function' ? res[vk] : undefined;\n\n if (tickFn) {\n ensureInit(this);\n const win = SwcUtils.resolveWindow(this);\n const id = win.setInterval(() => {\n try {\n tickFn(id);\n } catch (e) {\n console.error('[SWC] setInterval tick error:', e);\n }\n }, interval);\n normalizedOptions.created?.(SwcUtils.getHelperAndHostSet(this), id);\n getActiveEntries(this).push(id);\n }\n return res;\n };\n return descriptor;\n };\n}\n\nexport const findAllSetIntervalMetadata = (target: any): SetIntervalMetadata[] => {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return (ReflectUtils.findAllMetadata<SetIntervalMetadata[]>(SET_INTERVAL_METADATA_KEY, constructor) || []).flat();\n};\n\nexport class SetIntervalLifeCycler implements ElementDefineLifeCycler {\n onConnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n inst.__swc_intervalIds = []; // \uC7AC\uC5F0\uACB0 \uB300\uBE44 \uB9AC\uC14B\n for (const meta of findAllSetIntervalMetadata(inst)) {\n if (meta.options.type !== 'onConnected') continue; // returnValue \uD0C0\uC785\uC740 \uC218\uB3D9 \uD638\uCD9C\uC744 \uAE30\uB2E4\uB9BC\n const id = helperHostSet.$w.setInterval(() => {\n void (async () => {\n const helper = SwcUtils.getHelperAndHostSet(inst);\n if (meta.options.filter && !(await meta.options.filter(helper))) return;\n const paramArgs = meta.options.parameter?.(helperHostSet) ?? [];\n const hostSet = SwcUtils.getHostSet(inst);\n const helperSet = SwcUtils.getHelperSet(helperHostSet.$w);\n const buildArgs = (beforeReturn: any) => buildSwcParameterArgs(inst, meta.propertyKey, {\n hostSet, helperHostSet: helper, helperSet, setIntervalBeforeReturn: beforeReturn\n }, [...paramArgs, beforeReturn]);\n let args = buildArgs(undefined);\n if (meta.options.before) { const br = await meta.options.before(helper); args = buildArgs(br); }\n let result: any, error: any;\n try {\n result = await inst[meta.propertyKey](...args);\n const vk = meta.options.valueKey ?? SET_INTERVAL_METADATA_KEY;\n if (result && typeof result === 'object' && typeof result[vk] === 'function') result[vk](id);\n } catch (e) {\n error = e;\n } finally {\n if (meta.options.finally) await meta.options.finally(helper, { args, result, error });\n }\n if (error) console.error('[SWC] setInterval tick error:', error);\n })().catch(e => console.error('[SWC] setInterval tick error:', e));\n }, meta.interval);\n meta.options.created?.(helperHostSet, id);\n getActiveEntries(inst).push(id);\n }\n }\n\n onDisconnected(helperHostSet: HelperHostSet): void {\n const inst = helperHostSet.$this;\n for (const id of inst.__swc_intervalIds ?? []) {\n try {\n helperHostSet.$w.clearInterval(id);\n } catch (e) {\n console.error('[SWC] clearInterval error:', e);\n }\n }\n inst.__swc_intervalIds = [];\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }