@dooboostore/simple-web-component 1.0.49 → 1.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +790 -337
  2. package/dist/cjs/SwcAppEngine.js.map +2 -2
  3. package/dist/cjs/decorators/addEventListener.js +1925 -22
  4. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  5. package/dist/cjs/decorators/applyAttribute.js +41 -47
  6. package/dist/cjs/decorators/applyAttribute.js.map +2 -2
  7. package/dist/cjs/decorators/applyClass.js +14 -11
  8. package/dist/cjs/decorators/applyClass.js.map +2 -2
  9. package/dist/cjs/decorators/applyNode.js +19 -21
  10. package/dist/cjs/decorators/applyNode.js.map +2 -2
  11. package/dist/cjs/decorators/applyProperty.js +24 -48
  12. package/dist/cjs/decorators/applyProperty.js.map +2 -2
  13. package/dist/cjs/decorators/applySlot.js +9 -8
  14. package/dist/cjs/decorators/applySlot.js.map +2 -2
  15. package/dist/cjs/decorators/applyStyle.js +14 -11
  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 +61 -24
  20. package/dist/cjs/decorators/changedAttribute.js.map +2 -2
  21. package/dist/cjs/decorators/elementDefine.js +240 -196
  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 +112 -0
  26. package/dist/cjs/decorators/eventMedia.js.map +7 -0
  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 +8 -2
  30. package/dist/cjs/decorators/index.js.map +2 -2
  31. package/dist/cjs/decorators/intersectionObserver.js +76 -65
  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 +97 -90
  36. package/dist/cjs/decorators/mutationObserver.js.map +3 -3
  37. package/dist/cjs/decorators/parameter.js +156 -0
  38. package/dist/cjs/decorators/parameter.js.map +7 -0
  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 +115 -0
  44. package/dist/cjs/decorators/requestAnimationFrame.js.map +7 -0
  45. package/dist/cjs/decorators/resizeObserver.js +84 -69
  46. package/dist/cjs/decorators/resizeObserver.js.map +3 -3
  47. package/dist/cjs/decorators/setInterval.js +65 -22
  48. package/dist/cjs/decorators/setInterval.js.map +2 -2
  49. package/dist/cjs/decorators/setTimeout.js +68 -22
  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 +256 -67
  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/types/window.d.js.map +1 -1
  66. package/dist/cjs/utils/Utils.js +36 -15
  67. package/dist/cjs/utils/Utils.js.map +2 -2
  68. package/dist/esm/SwcAppEngine.js.map +2 -2
  69. package/dist/esm/decorators/addEventListener.js +1925 -22
  70. package/dist/esm/decorators/addEventListener.js.map +2 -2
  71. package/dist/esm/decorators/applyAttribute.js +41 -47
  72. package/dist/esm/decorators/applyAttribute.js.map +2 -2
  73. package/dist/esm/decorators/applyClass.js +14 -11
  74. package/dist/esm/decorators/applyClass.js.map +2 -2
  75. package/dist/esm/decorators/applyNode.js +20 -22
  76. package/dist/esm/decorators/applyNode.js.map +2 -2
  77. package/dist/esm/decorators/applyProperty.js +24 -48
  78. package/dist/esm/decorators/applyProperty.js.map +2 -2
  79. package/dist/esm/decorators/applySlot.js +9 -8
  80. package/dist/esm/decorators/applySlot.js.map +2 -2
  81. package/dist/esm/decorators/applyStyle.js +14 -11
  82. package/dist/esm/decorators/applyStyle.js.map +2 -2
  83. package/dist/esm/decorators/around.js +105 -0
  84. package/dist/esm/decorators/around.js.map +7 -0
  85. package/dist/esm/decorators/changedAttribute.js +61 -24
  86. package/dist/esm/decorators/changedAttribute.js.map +2 -2
  87. package/dist/esm/decorators/elementDefine.js +238 -194
  88. package/dist/esm/decorators/elementDefine.js.map +3 -3
  89. package/dist/esm/decorators/emitCustomEvent.js +15 -13
  90. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  91. package/dist/esm/decorators/eventMedia.js +94 -0
  92. package/dist/esm/decorators/eventMedia.js.map +7 -0
  93. package/dist/esm/decorators/fetch.js +259 -0
  94. package/dist/esm/decorators/fetch.js.map +7 -0
  95. package/dist/esm/decorators/index.js +8 -2
  96. package/dist/esm/decorators/index.js.map +2 -2
  97. package/dist/esm/decorators/intersectionObserver.js +76 -65
  98. package/dist/esm/decorators/intersectionObserver.js.map +2 -2
  99. package/dist/esm/decorators/lifecycles.js +11 -11
  100. package/dist/esm/decorators/lifecycles.js.map +2 -2
  101. package/dist/esm/decorators/mutationObserver.js +97 -90
  102. package/dist/esm/decorators/mutationObserver.js.map +3 -3
  103. package/dist/esm/decorators/parameter.js +137 -0
  104. package/dist/esm/decorators/parameter.js.map +7 -0
  105. package/dist/esm/decorators/publishSwcAppMessage.js +2 -2
  106. package/dist/esm/decorators/publishSwcAppMessage.js.map +2 -2
  107. package/dist/esm/decorators/query.js +11 -5
  108. package/dist/esm/decorators/query.js.map +2 -2
  109. package/dist/esm/decorators/requestAnimationFrame.js +96 -0
  110. package/dist/esm/decorators/requestAnimationFrame.js.map +7 -0
  111. package/dist/esm/decorators/resizeObserver.js +84 -69
  112. package/dist/esm/decorators/resizeObserver.js.map +2 -2
  113. package/dist/esm/decorators/setInterval.js +65 -23
  114. package/dist/esm/decorators/setInterval.js.map +2 -2
  115. package/dist/esm/decorators/setTimeout.js +68 -23
  116. package/dist/esm/decorators/setTimeout.js.map +2 -2
  117. package/dist/esm/decorators/state.js +13 -10
  118. package/dist/esm/decorators/state.js.map +2 -2
  119. package/dist/esm/decorators/subscribeSwcAppMessage.js +53 -0
  120. package/dist/esm/decorators/subscribeSwcAppMessage.js.map +7 -0
  121. package/dist/esm/decorators/{subscribeSwcAppRouteChangeWhileConnected.js → subscribeSwcAppRouteChange.js} +20 -16
  122. package/dist/esm/decorators/subscribeSwcAppRouteChange.js.map +7 -0
  123. package/dist/esm/decorators/swcAppRoute.js +130 -0
  124. package/dist/esm/decorators/swcAppRoute.js.map +7 -0
  125. package/dist/esm/elements/SwcApp.js +70 -0
  126. package/dist/esm/elements/SwcApp.js.map +2 -2
  127. package/dist/esm/elements/SwcAppMixin.js +258 -69
  128. package/dist/esm/elements/SwcAppMixin.js.map +3 -3
  129. package/dist/esm/types/index.js +5 -1
  130. package/dist/esm/types/index.js.map +2 -2
  131. package/dist/esm/utils/Utils.js +36 -15
  132. package/dist/esm/utils/Utils.js.map +2 -2
  133. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +4395 -1266
  134. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  135. package/dist/types/SwcAppEngine.d.ts +1 -0
  136. package/dist/types/SwcAppEngine.d.ts.map +1 -1
  137. package/dist/types/decorators/addEventListener.d.ts +936 -11
  138. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  139. package/dist/types/decorators/applyAttribute.d.ts +27 -37
  140. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  141. package/dist/types/decorators/applyClass.d.ts +2 -2
  142. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  143. package/dist/types/decorators/applyNode.d.ts +16 -16
  144. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  145. package/dist/types/decorators/applyProperty.d.ts +28 -44
  146. package/dist/types/decorators/applyProperty.d.ts.map +1 -1
  147. package/dist/types/decorators/applySlot.d.ts.map +1 -1
  148. package/dist/types/decorators/applyStyle.d.ts +2 -2
  149. package/dist/types/decorators/applyStyle.d.ts.map +1 -1
  150. package/dist/types/decorators/around.d.ts +87 -0
  151. package/dist/types/decorators/around.d.ts.map +1 -0
  152. package/dist/types/decorators/changedAttribute.d.ts +22 -4
  153. package/dist/types/decorators/changedAttribute.d.ts.map +1 -1
  154. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  155. package/dist/types/decorators/emitCustomEvent.d.ts +0 -1
  156. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  157. package/dist/types/decorators/eventMedia.d.ts +48 -0
  158. package/dist/types/decorators/eventMedia.d.ts.map +1 -0
  159. package/dist/types/decorators/fetch.d.ts +139 -0
  160. package/dist/types/decorators/fetch.d.ts.map +1 -0
  161. package/dist/types/decorators/index.d.ts +8 -2
  162. package/dist/types/decorators/index.d.ts.map +1 -1
  163. package/dist/types/decorators/intersectionObserver.d.ts +32 -10
  164. package/dist/types/decorators/intersectionObserver.d.ts.map +1 -1
  165. package/dist/types/decorators/lifecycles.d.ts +8 -7
  166. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  167. package/dist/types/decorators/mutationObserver.d.ts +34 -12
  168. package/dist/types/decorators/mutationObserver.d.ts.map +1 -1
  169. package/dist/types/decorators/parameter.d.ts +113 -0
  170. package/dist/types/decorators/parameter.d.ts.map +1 -0
  171. package/dist/types/decorators/publishSwcAppMessage.d.ts +0 -1
  172. package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
  173. package/dist/types/decorators/query.d.ts +7 -7
  174. package/dist/types/decorators/query.d.ts.map +1 -1
  175. package/dist/types/decorators/requestAnimationFrame.d.ts +47 -0
  176. package/dist/types/decorators/requestAnimationFrame.d.ts.map +1 -0
  177. package/dist/types/decorators/resizeObserver.d.ts +34 -12
  178. package/dist/types/decorators/resizeObserver.d.ts.map +1 -1
  179. package/dist/types/decorators/setInterval.d.ts +27 -5
  180. package/dist/types/decorators/setInterval.d.ts.map +1 -1
  181. package/dist/types/decorators/setTimeout.d.ts +27 -5
  182. package/dist/types/decorators/setTimeout.d.ts.map +1 -1
  183. package/dist/types/decorators/state.d.ts.map +1 -1
  184. package/dist/types/decorators/subscribeSwcAppMessage.d.ts +44 -0
  185. package/dist/types/decorators/subscribeSwcAppMessage.d.ts.map +1 -0
  186. package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts +60 -0
  187. package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts.map +1 -0
  188. package/dist/types/decorators/swcAppRoute.d.ts +94 -0
  189. package/dist/types/decorators/swcAppRoute.d.ts.map +1 -0
  190. package/dist/types/elements/SwcApp.d.ts.map +1 -1
  191. package/dist/types/elements/SwcAppMixin.d.ts +423 -388
  192. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  193. package/dist/types/types/index.d.ts +43 -4
  194. package/dist/types/types/index.d.ts.map +1 -1
  195. package/dist/types/utils/Utils.d.ts +15 -5
  196. package/dist/types/utils/Utils.d.ts.map +1 -1
  197. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +4395 -1266
  198. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  199. package/package.json +8 -6
  200. package/src/SwcAppEngine.ts +1 -0
  201. package/src/decorators/addEventListener.ts +1086 -28
  202. package/src/decorators/applyAttribute.ts +82 -134
  203. package/src/decorators/applyClass.ts +14 -10
  204. package/src/decorators/applyNode.ts +39 -37
  205. package/src/decorators/applyProperty.ts +72 -100
  206. package/src/decorators/applySlot.ts +9 -8
  207. package/src/decorators/applyStyle.ts +14 -10
  208. package/src/decorators/around.ts +196 -0
  209. package/src/decorators/changedAttribute.ts +65 -26
  210. package/src/decorators/elementDefine.ts +298 -220
  211. package/src/decorators/emitCustomEvent.ts +17 -13
  212. package/src/decorators/eventMedia.ts +119 -0
  213. package/src/decorators/fetch.ts +454 -0
  214. package/src/decorators/index.ts +8 -2
  215. package/src/decorators/intersectionObserver.ts +108 -78
  216. package/src/decorators/lifecycles.ts +24 -22
  217. package/src/decorators/mutationObserver.ts +140 -104
  218. package/src/decorators/parameter.ts +212 -0
  219. package/src/decorators/publishSwcAppMessage.ts +3 -4
  220. package/src/decorators/query.ts +22 -14
  221. package/src/decorators/requestAnimationFrame.ts +149 -0
  222. package/src/decorators/resizeObserver.ts +119 -82
  223. package/src/decorators/setInterval.ts +90 -23
  224. package/src/decorators/setTimeout.ts +93 -23
  225. package/src/decorators/state.ts +19 -13
  226. package/src/decorators/subscribeSwcAppMessage.ts +106 -0
  227. package/src/decorators/subscribeSwcAppRouteChange.ts +131 -0
  228. package/src/decorators/swcAppRoute.ts +231 -0
  229. package/src/elements/SwcApp.ts +40 -10
  230. package/src/elements/SwcAppMixin.ts +329 -85
  231. package/src/types/index.ts +38 -5
  232. package/src/types/window.d.ts +2 -18
  233. package/src/utils/Utils.ts +50 -18
  234. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +0 -7
  235. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +0 -7
  236. package/dist/cjs/examples/RxJSOperatorsExample.js +0 -285
  237. package/dist/cjs/examples/RxJSOperatorsExample.js.map +0 -7
  238. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +0 -54
  239. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +0 -7
  240. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +0 -7
  241. package/dist/esm/examples/RxJSOperatorsExample.js +0 -266
  242. package/dist/esm/examples/RxJSOperatorsExample.js.map +0 -7
  243. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +0 -23
  244. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +0 -1
  245. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +0 -31
  246. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +0 -1
  247. package/dist/types/examples/RxJSOperatorsExample.d.ts +0 -94
  248. package/dist/types/examples/RxJSOperatorsExample.d.ts.map +0 -1
  249. package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +0 -91
  250. package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +0 -107
  251. package/src/examples/RxJSOperatorsExample.ts +0 -279
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/mutationObserver.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions, SwcSelector, SwcFnSelector, HelperHostSet } from '../types';\n\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root\u00B7delegate \uC5C6\uC74C (MutationObserverInit + filter/removeObserver)\nexport interface MutationObserverBaseOptions extends MutationObserverInit {\n filter?: (matchedEls: HTMLElement[], meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n // observer \uD574\uC81C(disconnected) \uC2DC \uD638\uCD9C\uB418\uB294 \uCF5C\uBC31. \uCCAB \uBC88\uC9F8 \uC778\uC790\uB294 observe\uB41C target element, \uB450 \uBC88\uC9F8\uB294 \uC0AC\uC6A9\uC790 \uC635\uC158 \uAC1D\uCCB4.\n removeObserver?: (target: Element, optionValue: MutationObserverQueryOptions) => void;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uD5C8\uC6A9 (\uC140\uB809\uD130\uB85C \uD0D0\uC0C9/\uB378\uB9AC\uAC8C\uC774\uC158)\nexport type MutationObserverQueryOptions = MutationObserverBaseOptions & SwcQueryOptions & { delegate?: boolean };\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uAE08\uC9C0 (\uC774\uBBF8 \uC694\uC18C\uB97C \uC9C1\uC811 \uBC18\uD658)\nexport type MutationObserverNonQueryOptions = MutationObserverBaseOptions;\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type MutationObserverOptionsOf<S extends SwcSelector> = S extends string ? MutationObserverQueryOptions : MutationObserverNonQueryOptions;\n\nexport interface MutationObserverMetadata {\n propertyKey: string | symbol;\n selector: SwcSelector;\n options: MutationObserverQueryOptions;\n}\n\nexport const MUTATION_OBSERVER_METADATA_KEY = Symbol.for('simple-web-component:mutation-observer');\n\nexport function mutationObserver(target: SpecialSelector, options?: MutationObserverQueryOptions): MethodDecorator;\nexport function mutationObserver(selector: string, options?: MutationObserverQueryOptions): MethodDecorator;\nexport function mutationObserver(selector: SwcFnSelector, options?: MutationObserverNonQueryOptions): MethodDecorator;\nexport function mutationObserver(options?: MutationObserverQueryOptions): MethodDecorator;\n/**\n * @mutationObserver decorator to observe DOM mutations.\n */\nexport function mutationObserver(selectorOrOptions?: SwcSelector | MutationObserverQueryOptions, maybeOptions?: MutationObserverQueryOptions): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n let selector: SwcSelector = '$this';\n let options: MutationObserverQueryOptions = {};\n\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n selector = selectorOrOptions;\n options = maybeOptions ?? {};\n } else {\n selector = '$this';\n options = selectorOrOptions ?? {};\n }\n\n const constructor = targetObj.constructor;\n\n let observers = ReflectUtils.getMetadata<MutationObserverMetadata[]>(MUTATION_OBSERVER_METADATA_KEY, constructor);\n if (!observers) {\n observers = [];\n ReflectUtils.defineMetadata(MUTATION_OBSERVER_METADATA_KEY, observers, constructor);\n }\n\n observers.push({ propertyKey, selector, options });\n };\n}\n\nexport function mutationObserverThis<TEvent extends Event = Event>(options?: MutationObserverQueryOptions): MethodDecorator {\n return mutationObserver('$this', options);\n}\n\n// \u2500\u2500\u2500 root\uBCC4 delegate \uD5EC\uD37C (addEventListener\uC640 \uB3D9\uC77C \uD328\uD134) \u2500\u2500\u2500\n\nexport function mutationObserverDelegateLight(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateLight(options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateLight(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'light', delegate: true});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'light', delegate: true});\n}\n\nexport function mutationObserverDelegateShadow(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateShadow(options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateShadow(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'shadow', delegate: true});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'shadow', delegate: true});\n}\n\nexport function mutationObserverDelegateAll(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateAll(options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateAll(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'all', delegate: true});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'all', delegate: true});\n}\n\nexport function mutationObserverDelegate(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegate(options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegate(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'auto', delegate: true});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'auto', delegate: true});\n}\n\n// \u2500\u2500\u2500 root\uBCC4 \uC77C\uBC18 \uD5EC\uD37C (delegate \uC5C6\uC774, \uC140\uB809\uD130 \uC0DD\uB7B5 \uC2DC $this) \u2500\u2500\u2500\n\nexport function mutationObserverLight(selector: string, options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverLight(options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverLight(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'light'});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'light'});\n}\n\nexport function mutationObserverShadow(selector: string, options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverShadow(options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverShadow(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'shadow'});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'shadow'});\n}\n\nexport function mutationObserverAll(selector: string, options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverAll(options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverAll(selectorOrOptions?: string | Omit<MutationObserverQueryOptions, 'root'>, maybeOptions?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator {\n if (typeof selectorOrOptions === 'string' || typeof selectorOrOptions === 'function') {\n return mutationObserver(selectorOrOptions, {...maybeOptions ?? {}, root: 'all'});\n }\n return mutationObserver({...selectorOrOptions ?? {}, root: 'all'});\n}\n\nexport function getMutationObserverMetadata(target: any): MutationObserverMetadata[] | undefined {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(MUTATION_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// MutationObserverLifeCycler\n// observer \uB97C \uC9C1\uC811 \uC0DD\uC131\uD558\uC9C0 \uC54A\uACE0 OnConnectedResult \uB97C \uBC18\uD658\uD55C\uB2E4.\n// elementDefine \uC774 \uC218\uC9D1\uB41C MutationObserverSet \uC73C\uB85C observer \uB97C \uC0DD\uC131\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, MutationObserverSet, MutationObserverSetEntry, ObserverObserveTarget, OnConnectedResult } from '../types';\nimport { SwcUtils } from '../utils/Utils';\n\nexport class MutationObserverLifeCycler 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 = getMutationObserverMetadata(inst) ?? [];\n // \uCC98\uB9AC\uD560 \uBA54\uD0C0\uAC00 \uC5C6\uC73C\uBA74 observer \uBD88\uD544\uC694\n if (allMeta.length === 0) return;\n\n // \u2500\u2500 shadow / light \uB8E8\uD2B8\uBCC4 \uBD84\uB958 \u2500\u2500\n const shadowMetas = allMeta.filter(m => {\n const r = m.options.root || 'auto';\n return inst.shadowRoot && (r === 'shadow' || r === 'all' || r === 'auto');\n });\n const lightMetas = allMeta.filter(m => {\n const r = m.options.root || 'auto';\n return r === 'light' || r === 'all' || (!inst.shadowRoot && r === 'auto');\n });\n // \u2500\u2500 MutationObserverSet \uC0DD\uC131 \uD5EC\uD37C (\uB8E8\uD2B8\uBCC4) \u2500\u2500\n const buildSet = (\n root: HTMLElement | ShadowRoot,\n metas: MutationObserverMetadata[],\n ): { callback: MutationObserverSetEntry['callback']; observeTargets: ObserverObserveTarget<MutationObserverInit>[] } | null => {\n if (metas.length === 0) return null;\n\n const initFrom = (o: MutationObserverBaseOptions): MutationObserverInit => {\n const init: MutationObserverInit = {\n childList: o.childList, attributes: o.attributes, characterData: o.characterData,\n subtree: o.subtree, attributeFilter: o.attributeFilter,\n attributeOldValue: o.attributeOldValue, characterDataOldValue: o.characterDataOldValue,\n };\n if (!init.childList && !init.attributes && !init.characterData) init.childList = true;\n return init;\n };\n\n const fnObservedSets = new Map<MutationObserverMetadata, WeakSet<Element>>();\n\n const callback = (mutations: MutationRecord[], obs: MutationObserver) => {\n // \u2500\u2500 MutationObserver \uBA54\uD0C0 \uCF5C\uBC31 \u2500\u2500\n for (const meta of metas) {\n const { selector, options } = meta;\n let matchedEls: HTMLElement[] = [];\n\n const typeMatches = (m: MutationRecord): boolean => {\n const has = !!(options.childList || options.attributes || options.characterData);\n if (m.type === 'childList') return has ? !!options.childList : true;\n if (m.type === 'attributes') return !!options.attributes;\n if (m.type === 'characterData') return !!options.characterData;\n return true;\n };\n\n const collect = (matchesSel: (n: any) => boolean) =>\n mutations.flatMap(m => {\n if (!typeMatches(m)) return [];\n const els: HTMLElement[] = [];\n if (matchesSel(m.target)) els.push(m.target as HTMLElement);\n Array.from(m.addedNodes || []).filter(matchesSel).forEach(n => els.push(n as HTMLElement));\n Array.from(m.removedNodes || []).filter(matchesSel).forEach(n => els.push(n as HTMLElement));\n return els;\n });\n\n if (options.delegate && typeof selector === 'string') {\n const isThis = selector === '$this' || selector === '';\n matchedEls = collect(n => {\n if (!n || n.nodeType !== 1) return false;\n if (isThis) return true;\n const el = n as HTMLElement;\n return el.matches?.(selector) || !!el.closest?.(selector);\n });\n } else if (typeof selector === 'string') {\n const isThis = selector === '$this' || selector === '';\n matchedEls = collect(n => {\n if (!n || n.nodeType !== 1) return false;\n if (isThis) return true;\n return (n as HTMLElement).matches?.(selector);\n });\n } else if (typeof selector === 'function') {\n const set = fnObservedSets.get(meta);\n matchedEls = mutations.filter(m => typeMatches(m))\n .map(m => m.target as HTMLElement)\n .filter(t => t && t.nodeType === 1 && (set ? set.has(t) : false));\n } else {\n matchedEls = mutations.filter(m => typeMatches(m))\n .map(m => m.target as HTMLElement)\n .filter(t => t && t.nodeType === 1);\n }\n\n if (matchedEls.length === 0) continue;\n if (options.filter) {\n if (!options.filter(matchedEls, { currentThis: inst, helper: helperHostSet })) continue;\n }\n const hostSet = SwcUtils.getHostSet(inst);\n inst[meta.propertyKey](matchedEls, mutations, obs, { ...hostSet, $root: root });\n }\n\n };\n\n // \u2500\u2500 observe \uB300\uC0C1 \uBAA9\uB85D \uAD6C\uC131 \u2500\u2500\n const observeTargets: ObserverObserveTarget<MutationObserverInit>[] = [];\n\n // delegate \uC788\uC73C\uBA74 \uB8E8\uD2B8 \uC804\uCCB4 subtree observe\n if (metas.some(m => m.options.delegate)) {\n observeTargets.push({ target: root, options: { childList: true, subtree: true } });\n }\n\n // non-delegate: \uC140\uB809\uD130 \uB9E4\uCE6D \uC694\uC18C \uC9C1\uC811 observe\n for (const m of metas.filter(m => !m.options.delegate)) {\n const { selector, options } = m;\n const mInit = initFrom(options);\n if (typeof selector === 'string') {\n if (selector === '$this' || selector === '') {\n observeTargets.push({ target: root, options: mInit });\n } else {\n root.querySelectorAll(selector).forEach(el => observeTargets.push({ target: el as Element, options: mInit }));\n }\n } else if (typeof selector === 'function') {\n const res = (selector as any)(inst, helperHostSet);\n let targets: HTMLElement[] = [];\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 const set = new WeakSet<Element>();\n for (const el of targets) { set.add(el); observeTargets.push({ target: el, options: mInit }); }\n fnObservedSets.set(m, set);\n }\n }\n\n // removeObserver \uCF5C\uBC31 \uC218\uC9D1\n for (const m of metas) {\n if (m.options.removeObserver) removeObserverCallbacks.push({ fn: m.options.removeObserver, target: root, opts: m.options });\n }\n\n return { callback, observeTargets };\n };\n\n const shadowSet = inst.shadowRoot ? buildSet(inst.shadowRoot, shadowMetas) : null;\n const lightSet = buildSet(inst as any, lightMetas);\n\n // \uB450 \uB8E8\uD2B8\uC758 observe \uB300\uC0C1 + \uCF5C\uBC31\uC744 \uC5D4\uD2B8\uB9AC \uBC30\uC5F4(MutationObserverSet)\uB85C \uBCD1\uD569\n // \uAC19\uC740 \uB8E8\uD2B8\uC758 \uC5EC\uB7EC \uB300\uC0C1\uC740 \uAC19\uC740 callback \uC744 \uACF5\uC720\uD55C\uB2E4.\n const mutationObserverSet: MutationObserverSet = [\n ...(shadowSet?.observeTargets ?? []).map(t => ({ ...t, callback: shadowSet!.callback })),\n ...(lightSet?.observeTargets ?? []).map(t => ({ ...t, callback: lightSet!.callback })),\n ];\n if (mutationObserverSet.length === 0) return;\n\n return { mutationObserverSet };\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}"],
5
- "mappings": "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",
6
- "names": ["m"]
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { SpecialSelector, SwcQueryOptions, SwcSelector, SwcFnSelector, HelperHostSet } from '../types';\nimport { buildSwcParameterArgs } from './parameter';\n\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root\u00B7delegate \uC5C6\uC74C (MutationObserverInit + filter/removeObserver)\nexport interface MutationObserverBaseOptions extends MutationObserverInit {\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 @mutationObserverBeforeReturn \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 \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 // observer \uD574\uC81C(disconnected) \uC2DC \uD638\uCD9C\uB418\uB294 \uCF5C\uBC31. \uCCAB \uBC88\uC9F8 \uC778\uC790\uB294 observe\uB41C target element, \uB450 \uBC88\uC9F8\uB294 \uC0AC\uC6A9\uC790 \uC635\uC158 \uAC1D\uCCB4.\n removeObserver?: (target: Element, optionValue: MutationObserverQueryOptions) => void;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uD5C8\uC6A9 (\uC140\uB809\uD130\uB85C \uD0D0\uC0C9/\uB378\uB9AC\uAC8C\uC774\uC158)\nexport type MutationObserverQueryOptions = MutationObserverBaseOptions & SwcQueryOptions & { delegate?: boolean };\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root\u00B7delegate \uAE08\uC9C0 (\uC774\uBBF8 \uC694\uC18C\uB97C \uC9C1\uC811 \uBC18\uD658)\nexport type MutationObserverNonQueryOptions = MutationObserverBaseOptions;\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type MutationObserverOptionsOf<S extends SwcSelector> = S extends string ? MutationObserverQueryOptions : MutationObserverNonQueryOptions;\n\nexport interface MutationObserverMetadata {\n propertyKey: string | symbol;\n selector: SwcSelector;\n options: MutationObserverQueryOptions;\n}\n\nexport const MUTATION_OBSERVER_METADATA_KEY = Symbol.for('simple-web-component:mutation-observer');\n\nconst applyMutationObserver = (selector: SwcSelector, options: MutationObserverQueryOptions, targetObj: Object, propertyKey: string | symbol): void => {\n const constructor = targetObj.constructor;\n let observers = ReflectUtils.getOwnMetadata(MUTATION_OBSERVER_METADATA_KEY, constructor) as MutationObserverMetadata[] | undefined;\n if (!observers) {\n observers = [];\n ReflectUtils.defineMetadata(MUTATION_OBSERVER_METADATA_KEY, observers, constructor);\n }\n observers.push({ propertyKey, selector, options });\n};\n\nconst resolveMutationObserverArgs = (\n selectorOrOptions: SwcSelector | MutationObserverQueryOptions | undefined,\n maybeOptions: MutationObserverQueryOptions | undefined,\n extra: Partial<MutationObserverQueryOptions>\n): { selector: SwcSelector; options: MutationObserverQueryOptions } => {\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 * selectorOrOptionsOrTarget/maybeOptionsOrPropertyKey/descriptor\uC744 \uBC1B\uC544 bare(@decorator)\uC640\n * 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 dispatchMutationObserver = (\n selectorOrOptionsOrTarget: SwcSelector | MutationObserverQueryOptions | Object | undefined,\n maybeOptionsOrPropertyKey: MutationObserverQueryOptions | string | symbol | undefined,\n descriptor: PropertyDescriptor | undefined,\n extra: Partial<MutationObserverQueryOptions>\n): MethodDecorator | void => {\n if ((typeof maybeOptionsOrPropertyKey === 'string' || typeof maybeOptionsOrPropertyKey === 'symbol') && descriptor !== undefined) {\n // \uC635\uC158 \uC5C6\uC774: @decorator \u2014 \uC790\uAE30 \uC790\uC2E0\uC758 \uD558\uC704 \uC804\uCCB4(childList + subtree)\uB97C \uBCF8\uB2E4. \uBC94\uC704\uB97C \uC881\uD788\uB824\uBA74 \uC635\uC158\uC744 \uBA85\uC2DC.\n applyMutationObserver('$this', { subtree: true, ...extra }, selectorOrOptionsOrTarget as Object, maybeOptionsOrPropertyKey);\n return;\n }\n // \uC635\uC158\uACFC \uD568\uAED8: @decorator(selector, options) / @decorator(options)\n const { selector, options } = resolveMutationObserverArgs(\n selectorOrOptionsOrTarget as SwcSelector | MutationObserverQueryOptions | undefined,\n maybeOptionsOrPropertyKey as MutationObserverQueryOptions | undefined,\n extra\n );\n return (targetObj: Object, propertyKey: string | symbol) => {\n applyMutationObserver(selector, options, targetObj, propertyKey);\n };\n};\n\nexport function mutationObserver(target: SpecialSelector, options?: MutationObserverQueryOptions): MethodDecorator;\nexport function mutationObserver(selector: string, options?: MutationObserverQueryOptions): MethodDecorator;\nexport function mutationObserver(selector: SwcFnSelector, options?: MutationObserverNonQueryOptions): MethodDecorator;\nexport function mutationObserver(options: MutationObserverQueryOptions): MethodDecorator;\nexport function mutationObserver(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\n/**\n * @mutationObserver decorator to observe DOM mutations.\n * \uC635\uC158 \uC5C6\uC774 `@mutationObserver` \uADF8\uB300\uB85C \uBD99\uC5EC\uB3C4 \uB418\uACE0, `@mutationObserver(...)`\uCC98\uB7FC \uC140\uB809\uD130/\uC635\uC158\uC744 \uC904 \uC218\uB3C4 \uC788\uB2E4.\n */\nexport function mutationObserver(selectorOrOptionsOrTarget?: SwcSelector | MutationObserverQueryOptions | Object, maybeOptionsOrPropertyKey?: MutationObserverQueryOptions | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget, maybeOptionsOrPropertyKey, descriptor, {});\n}\n\n\n// \u2500\u2500\u2500 root\uBCC4 delegate \uD5EC\uD37C (addEventListener\uC640 \uB3D9\uC77C \uD328\uD134) \u2500\u2500\u2500\n\nexport function mutationObserverDelegateLight(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateLight(options: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateLight(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverDelegateLight(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'light', delegate: true });\n}\n\nexport function mutationObserverDelegateShadow(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateShadow(options: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateShadow(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverDelegateShadow(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'shadow', delegate: true });\n}\n\nexport function mutationObserverDelegateAll(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateAll(options: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegateAll(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverDelegateAll(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'all', delegate: true });\n}\n\nexport function mutationObserverDelegate(selector: string, options?: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegate(options: MutationObserverBaseOptions): MethodDecorator;\nexport function mutationObserverDelegate(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverDelegate(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(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 mutationObserverLight(selector: string, options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverLight(options: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverLight(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverLight(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'light' });\n}\n\nexport function mutationObserverShadow(selector: string, options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverShadow(options: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverShadow(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverShadow(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'shadow' });\n}\n\nexport function mutationObserverAll(selector: string, options?: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverAll(options: Omit<MutationObserverQueryOptions, 'root'>): MethodDecorator;\nexport function mutationObserverAll(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function mutationObserverAll(selectorOrOptionsOrTarget?: string | Omit<MutationObserverQueryOptions, 'root'> | Object, maybeOptionsOrPropertyKey?: Omit<MutationObserverQueryOptions, 'root'> | string | symbol, descriptor?: PropertyDescriptor): MethodDecorator | void {\n return dispatchMutationObserver(selectorOrOptionsOrTarget as any, maybeOptionsOrPropertyKey as any, descriptor, { root: 'all' });\n}\n\nexport function getMutationObserverMetadata(target: any): MutationObserverMetadata[] | undefined {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.findAllMetadata<any[]>(MUTATION_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// MutationObserverLifeCycler\n// observer \uB97C \uC9C1\uC811 \uC0DD\uC131\uD558\uC9C0 \uC54A\uACE0 OnConnectedResult \uB97C \uBC18\uD658\uD55C\uB2E4.\n// elementDefine \uC774 \uC218\uC9D1\uB41C MutationObserverSet \uC73C\uB85C observer \uB97C \uC0DD\uC131\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, MutationObserverSet, MutationObserverSetEntry, ObserverObserveTarget, ObserverScope, OnConnectedResult, ResizeObserverSet } from '../types';\nimport { SwcUtils } from '../utils/Utils';\n\nexport class MutationObserverLifeCycler 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 = (getMutationObserverMetadata(inst) ?? []).filter(m => inObserverScope(m, scope));\n // \uCC98\uB9AC\uD560 \uBA54\uD0C0\uAC00 \uC5C6\uC73C\uBA74 observer \uBD88\uD544\uC694\n if (allMeta.length === 0) return;\n\n // \u2500\u2500 shadow / light \uB8E8\uD2B8\uBCC4 \uBD84\uB958 \u2500\u2500\n const shadowMetas = allMeta.filter(m => {\n const r = m.options.root || 'auto';\n return inst.shadowRoot && (r === 'shadow' || r === 'all' || r === 'auto');\n });\n const lightMetas = allMeta.filter(m => {\n const r = m.options.root || 'auto';\n return r === 'light' || r === 'all' || (!inst.shadowRoot && r === 'auto');\n });\n // \u2500\u2500 MutationObserverSet \uC0DD\uC131 \uD5EC\uD37C (\uB8E8\uD2B8\uBCC4) \u2500\u2500\n const buildSet = (\n root: HTMLElement | ShadowRoot,\n metas: MutationObserverMetadata[],\n ): { callback: MutationObserverSetEntry['callback']; observeTargets: ObserverObserveTarget<MutationObserverInit>[] } | null => {\n if (metas.length === 0) return null;\n\n const initFrom = (o: MutationObserverBaseOptions): MutationObserverInit => {\n const init: MutationObserverInit = {\n childList: o.childList, attributes: o.attributes, characterData: o.characterData,\n subtree: o.subtree, attributeFilter: o.attributeFilter,\n attributeOldValue: o.attributeOldValue, characterDataOldValue: o.characterDataOldValue,\n };\n if (!init.childList && !init.attributes && !init.characterData) init.childList = true;\n return init;\n };\n\n // non-delegate \uBA54\uD0C0\uBCC4 observe \uB300\uC0C1. MO \uB294 \uC778\uC2A4\uD134\uC2A4\uB2F9 1\uAC1C\uB97C \uBAA8\uB4E0 \uBA54\uD0C0\uAC00 \uACF5\uC720\uD558\uBBC0\uB85C(\uC635\uC158\uB3C4 \uD569\uC9D1\uD569),\n // \uBA54\uD0C0\uB294 \uC790\uAE30 \uB300\uC0C1(subtree \uBA74 \uADF8 \uD558\uC704)\uC5D0\uC11C \uC628 \uB808\uCF54\uB4DC\uB9CC \uBC1B\uB294\uB2E4.\n const observedNodes = new Map<MutationObserverMetadata, Node[]>();\n const owns = (meta: MutationObserverMetadata, m: MutationRecord): boolean =>\n (observedNodes.get(meta) ?? []).some(o => o === m.target || (!!meta.options.subtree && o.contains(m.target)));\n\n const callback = (mutations: MutationRecord[], obs: MutationObserver) => {\n // \u2500\u2500 MutationObserver \uBA54\uD0C0 \uCF5C\uBC31 \u2500\u2500\n for (const meta of metas) {\n const { selector, options } = meta;\n let matchedEls: HTMLElement[] = [];\n // \uD578\uB4E4\uB7EC\uC5D0 \uB118\uAE38 \uB808\uCF54\uB4DC \u2014 non-delegate \uB294 \uC790\uAE30 \uB300\uC0C1 \uB808\uCF54\uB4DC\uB9CC (\uC635\uC800\uBC84\uB294 \uACF5\uC720\uB77C \uBC30\uCE58\uC5D0 \uB2E4\uB978 \uB300\uC0C1 \uB808\uCF54\uB4DC\uAC00 \uC11E\uC778\uB2E4)\n let records = mutations;\n\n const typeMatches = (m: MutationRecord): boolean => {\n const has = !!(options.childList || options.attributes || options.characterData);\n if (m.type === 'childList') return has ? !!options.childList : true;\n if (m.type === 'attributes') return !!options.attributes;\n if (m.type === 'characterData') return !!options.characterData;\n return true;\n };\n\n const collect = (matchesSel: (n: any) => boolean, records: MutationRecord[] = mutations) =>\n records.flatMap(m => {\n if (!typeMatches(m)) return [];\n const els: HTMLElement[] = [];\n if (matchesSel(m.target)) els.push(m.target as HTMLElement);\n Array.from(m.addedNodes || []).filter(matchesSel).forEach(n => els.push(n as HTMLElement));\n Array.from(m.removedNodes || []).filter(matchesSel).forEach(n => els.push(n as HTMLElement));\n return els;\n });\n\n if (typeof selector === 'string' && (selector === '$this' || selector === '')) {\n // \uC790\uAE30 \uC790\uC2E0\uC744 \uBCFC \uB54C\uB294 \uBC14\uB010/\uCD94\uAC00\uB41C \uB178\uB4DC\uAC00 \uC544\uB2C8\uB77C \uC790\uAE30 \uC790\uC2E0 \uD558\uB098 \u2014 \uD574\uB2F9 \uC885\uB958\uC758 \uBCC0\uD654\uAC00 \uC788\uC5C8\uC73C\uBA74 [inst]\n records = mutations.filter(m => typeMatches(m) && owns(meta, m));\n matchedEls = records.length ? [inst as HTMLElement] : [];\n } else if (options.delegate && typeof selector === 'string') {\n matchedEls = collect(n => {\n if (!n || n.nodeType !== 1) return false;\n const el = n as HTMLElement;\n return el.matches?.(selector) || !!el.closest?.(selector);\n });\n } else if (typeof selector === 'string') {\n records = mutations.filter(m => owns(meta, m));\n matchedEls = records.length ? collect(n => {\n if (!n || n.nodeType !== 1) return false;\n return (n as HTMLElement).matches?.(selector);\n }, records) : [];\n } else if (typeof selector === 'function') {\n // \uB808\uCF54\uB4DC\uAC00 \uC18D\uD55C observe \uB300\uC0C1 \uC694\uC18C (subtree \uBA74 \uD558\uC704 \uBCC0\uACBD\uB3C4 \uADF8 \uB300\uC0C1\uC73C\uB85C \uBB36\uB294\uB2E4)\n records = mutations.filter(m => typeMatches(m) && owns(meta, m));\n matchedEls = (observedNodes.get(meta) ?? []).filter(o =>\n records.some(m => o === m.target || (!!options.subtree && o.contains(m.target)))) as HTMLElement[];\n } else {\n matchedEls = mutations.filter(m => typeMatches(m))\n .map(m => m.target as HTMLElement)\n .filter(t => t && t.nodeType === 1);\n }\n\n if (matchedEls.length === 0) continue;\n // fire-and-forget async \uB7EC\uB108 \u2014 filter(async)/before/finally + @mutationObserverBeforeReturn \uC8FC\uC785.\n void (async () => {\n const helper = SwcUtils.getHelperAndHostSet(inst);\n if (options.filter && !(await options.filter(matchedEls, { currentThis: inst, helper }))) return;\n const hostSet = SwcUtils.getHostSet(inst);\n const helperSet = SwcUtils.getHelperSet(helperHostSet.$w);\n const legacyArgs = [matchedEls, records, obs, { ...hostSet, $root: root }];\n const buildArgs = (beforeReturn: any) => buildSwcParameterArgs(inst, meta.propertyKey, {\n hostSet, helperHostSet: helper, helperSet, mutationObserverBeforeReturn: beforeReturn\n }, [...legacyArgs, beforeReturn]);\n let args = buildArgs(undefined);\n if (options.before) { const br = await options.before(matchedEls, { currentThis: inst, helper }); args = buildArgs(br); }\n let result: any, error: any;\n try { result = await inst[meta.propertyKey](...args); }\n catch (e) { error = e; }\n finally { if (options.finally) await options.finally(matchedEls, { currentThis: inst, helper }, { args, result, error }); }\n if (error) throw error;\n })().catch(e => console.error('[SWC] mutationObserver handler error:', e));\n }\n\n };\n\n // \u2500\u2500 observe \uB300\uC0C1 \uBAA9\uB85D \uAD6C\uC131 \u2500\u2500\n const observeTargets: ObserverObserveTarget<MutationObserverInit>[] = [];\n\n // delegate \uC788\uC73C\uBA74 \uB8E8\uD2B8 \uC804\uCCB4 subtree observe\n if (metas.some(m => m.options.delegate)) {\n observeTargets.push({ target: root, options: { childList: true, subtree: true } });\n }\n\n // non-delegate: \uC140\uB809\uD130 \uB9E4\uCE6D \uC694\uC18C \uC9C1\uC811 observe\n for (const m of metas.filter(m => !m.options.delegate)) {\n const { selector, options } = m;\n const mInit = initFrom(options);\n if (typeof selector === 'string') {\n const nodes: Node[] = selector === '$this' || selector === '' ? [root] : Array.from(root.querySelectorAll(selector));\n for (const n of nodes) observeTargets.push({ target: n as Element, options: mInit });\n observedNodes.set(m, nodes);\n } else if (typeof selector === 'function') {\n const res = (selector as any)(inst, helperHostSet);\n let targets: HTMLElement[] = [];\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 for (const el of targets) observeTargets.push({ target: el, options: mInit });\n observedNodes.set(m, targets);\n }\n }\n\n // removeObserver \uCF5C\uBC31 \uC218\uC9D1\n for (const m of metas) {\n if (m.options.removeObserver) removeObserverCallbacks.push({ fn: m.options.removeObserver, target: root, opts: m.options });\n }\n\n return { callback, observeTargets };\n };\n\n const shadowSet = inst.shadowRoot ? buildSet(inst.shadowRoot, shadowMetas) : null;\n const lightSet = buildSet(inst as any, lightMetas);\n\n // \uB450 \uB8E8\uD2B8\uC758 observe \uB300\uC0C1 + \uCF5C\uBC31\uC744 \uC5D4\uD2B8\uB9AC \uBC30\uC5F4(MutationObserverSet)\uB85C \uBCD1\uD569\n // \uAC19\uC740 \uB8E8\uD2B8\uC758 \uC5EC\uB7EC \uB300\uC0C1\uC740 \uAC19\uC740 callback \uC744 \uACF5\uC720\uD55C\uB2E4.\n const mutationObserverSet: MutationObserverSet = [\n ...(shadowSet?.observeTargets ?? []).map(t => ({ ...t, callback: shadowSet!.callback })),\n ...(lightSet?.observeTargets ?? []).map(t => ({ ...t, callback: lightSet!.callback })),\n ];\n if (mutationObserverSet.length === 0) return;\n\n return { mutationObserverSet };\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": ["records", "m"]
7
7
  }
@@ -0,0 +1,137 @@
1
+ import { ReflectUtils } from "@dooboostore/core";
2
+ const SWC_PARAMETER_METADATA_KEY = Symbol.for("simple-web-component:parameter");
3
+ const registerParam = (kind, target, propertyKey, parameterIndex, key) => {
4
+ if (!propertyKey) return;
5
+ const constructor = target.constructor;
6
+ const saves = ReflectUtils.getOwnMetadata(SWC_PARAMETER_METADATA_KEY, constructor, propertyKey) ?? [];
7
+ saves.push(key === void 0 ? { index: parameterIndex, kind } : { index: parameterIndex, kind, key });
8
+ ReflectUtils.defineMetadata(SWC_PARAMETER_METADATA_KEY, saves, constructor, propertyKey);
9
+ };
10
+ function eventObject(target, propertyKey, parameterIndex) {
11
+ registerParam("eventObject", target, propertyKey, parameterIndex);
12
+ }
13
+ function matchedElement(target, propertyKey, parameterIndex) {
14
+ registerParam("matchedElement", target, propertyKey, parameterIndex);
15
+ }
16
+ function hostSet(target, propertyKey, parameterIndex) {
17
+ registerParam("hostSet", target, propertyKey, parameterIndex);
18
+ }
19
+ function helperHostSet(target, propertyKey, parameterIndex) {
20
+ registerParam("helperHostSet", target, propertyKey, parameterIndex);
21
+ }
22
+ function helperSet(target, propertyKey, parameterIndex) {
23
+ registerParam("helperSet", target, propertyKey, parameterIndex);
24
+ }
25
+ function swcAppRouterEvent(target, propertyKey, parameterIndex) {
26
+ registerParam("swcAppRouterEvent", target, propertyKey, parameterIndex);
27
+ }
28
+ function appMessage(target, propertyKey, parameterIndex) {
29
+ registerParam("appMessage", target, propertyKey, parameterIndex);
30
+ }
31
+ function eventBeforeReturn(target, propertyKey, parameterIndex) {
32
+ registerParam("eventBeforeReturn", target, propertyKey, parameterIndex);
33
+ }
34
+ function appMessageBeforeReturn(target, propertyKey, parameterIndex) {
35
+ registerParam("appMessageBeforeReturn", target, propertyKey, parameterIndex);
36
+ }
37
+ function routeChangeBeforeReturn(target, propertyKey, parameterIndex) {
38
+ registerParam("routeChangeBeforeReturn", target, propertyKey, parameterIndex);
39
+ }
40
+ function eventMediaBeforeReturn(target, propertyKey, parameterIndex) {
41
+ registerParam("eventMediaBeforeReturn", target, propertyKey, parameterIndex);
42
+ }
43
+ function mutationObserverBeforeReturn(target, propertyKey, parameterIndex) {
44
+ registerParam("mutationObserverBeforeReturn", target, propertyKey, parameterIndex);
45
+ }
46
+ function intersectionObserverBeforeReturn(target, propertyKey, parameterIndex) {
47
+ registerParam("intersectionObserverBeforeReturn", target, propertyKey, parameterIndex);
48
+ }
49
+ function resizeObserverBeforeReturn(target, propertyKey, parameterIndex) {
50
+ registerParam("resizeObserverBeforeReturn", target, propertyKey, parameterIndex);
51
+ }
52
+ function changedAttributeBeforeReturn(target, propertyKey, parameterIndex) {
53
+ registerParam("changedAttributeBeforeReturn", target, propertyKey, parameterIndex);
54
+ }
55
+ function setTimeoutBeforeReturn(target, propertyKey, parameterIndex) {
56
+ registerParam("setTimeoutBeforeReturn", target, propertyKey, parameterIndex);
57
+ }
58
+ function setIntervalBeforeReturn(target, propertyKey, parameterIndex) {
59
+ registerParam("setIntervalBeforeReturn", target, propertyKey, parameterIndex);
60
+ }
61
+ function fetchSettled(target, propertyKey, parameterIndex) {
62
+ registerParam("fetchSettled", target, propertyKey, parameterIndex);
63
+ }
64
+ const getParameterMetadata = (target, propertyKey) => {
65
+ const constructor = typeof target === "function" ? target : target.constructor;
66
+ return ReflectUtils.getMetadata(SWC_PARAMETER_METADATA_KEY, constructor, propertyKey) ?? [];
67
+ };
68
+ const buildSwcParameterArgs = (target, propertyKey, kindValues, legacyArgs) => {
69
+ const saves = getParameterMetadata(target, propertyKey);
70
+ if (saves.length === 0) return legacyArgs;
71
+ const maxIndex = Math.max(...saves.map((s) => s.index));
72
+ const args = new Array(maxIndex + 1);
73
+ for (const s of saves) {
74
+ const value = kindValues[s.kind];
75
+ args[s.index] = s.key !== void 0 && typeof value === "function" ? value(s.key) : value;
76
+ }
77
+ return args;
78
+ };
79
+ const keyedRouteParam = (kind) => (key) => (target, propertyKey, parameterIndex) => registerParam(kind, target, propertyKey, parameterIndex, key);
80
+ const routeParam = (kind) => (target, propertyKey, parameterIndex) => registerParam(kind, target, propertyKey, parameterIndex);
81
+ const swcAppRouteQueryParam = keyedRouteParam("swcAppRouteQueryParam");
82
+ const swcAppRouteFirstQueryParam = keyedRouteParam("swcAppRouteFirstQueryParam");
83
+ const swcAppRouteLastQueryParam = keyedRouteParam("swcAppRouteLastQueryParam");
84
+ const swcAppRouteQueryParams = keyedRouteParam("swcAppRouteQueryParams");
85
+ const swcAppRouteQueryParamObject = routeParam("swcAppRouteQueryParamObject");
86
+ const swcAppRouteFirstQueryParamObject = routeParam("swcAppRouteFirstQueryParamObject");
87
+ const swcAppRouteLastQueryParamObject = routeParam("swcAppRouteLastQueryParamObject");
88
+ const swcAppRouteQueryParamsObject = routeParam("swcAppRouteQueryParamsObject");
89
+ const swcAppRouteURLSearchParams = routeParam("swcAppRouteURLSearchParams");
90
+ const swcAppRoutePathVariable = keyedRouteParam("swcAppRoutePathVariable");
91
+ const swcAppRouteFirstPathVariable = keyedRouteParam("swcAppRouteFirstPathVariable");
92
+ const swcAppRouteLastPathVariable = keyedRouteParam("swcAppRouteLastPathVariable");
93
+ const swcAppRoutePathVariables = keyedRouteParam("swcAppRoutePathVariables");
94
+ const swcAppRoutePathVariableObject = routeParam("swcAppRoutePathVariableObject");
95
+ const swcAppRouteFirstPathVariableObject = routeParam("swcAppRouteFirstPathVariableObject");
96
+ const swcAppRouteLastPathVariableObject = routeParam("swcAppRouteLastPathVariableObject");
97
+ const swcAppRoutePathVariablesObject = routeParam("swcAppRoutePathVariablesObject");
98
+ export {
99
+ appMessage,
100
+ appMessageBeforeReturn,
101
+ buildSwcParameterArgs,
102
+ changedAttributeBeforeReturn,
103
+ eventBeforeReturn,
104
+ eventMediaBeforeReturn,
105
+ eventObject,
106
+ fetchSettled,
107
+ getParameterMetadata,
108
+ helperHostSet,
109
+ helperSet,
110
+ hostSet,
111
+ intersectionObserverBeforeReturn,
112
+ matchedElement,
113
+ mutationObserverBeforeReturn,
114
+ resizeObserverBeforeReturn,
115
+ routeChangeBeforeReturn,
116
+ setIntervalBeforeReturn,
117
+ setTimeoutBeforeReturn,
118
+ swcAppRouteFirstPathVariable,
119
+ swcAppRouteFirstPathVariableObject,
120
+ swcAppRouteFirstQueryParam,
121
+ swcAppRouteFirstQueryParamObject,
122
+ swcAppRouteLastPathVariable,
123
+ swcAppRouteLastPathVariableObject,
124
+ swcAppRouteLastQueryParam,
125
+ swcAppRouteLastQueryParamObject,
126
+ swcAppRoutePathVariable,
127
+ swcAppRoutePathVariableObject,
128
+ swcAppRoutePathVariables,
129
+ swcAppRoutePathVariablesObject,
130
+ swcAppRouteQueryParam,
131
+ swcAppRouteQueryParamObject,
132
+ swcAppRouteQueryParams,
133
+ swcAppRouteQueryParamsObject,
134
+ swcAppRouteURLSearchParams,
135
+ swcAppRouterEvent
136
+ };
137
+ //# sourceMappingURL=parameter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/parameter.ts"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\n\n/**\n * @eventObject/@matchedElement/@hostSet/@helperHostSet/@helperSet/@swcAppRouterEvent/@appMessage/@eventBeforeReturn \u2014\n * @event/lifecycle/subscribeSwcAppRouteChange/subscribeSwcAppMessage\n * \uACC4\uC5F4 \uD578\uB4E4\uB7EC\uC758 \uD30C\uB77C\uBBF8\uD130\uB97C \uC21C\uC11C \uBB34\uAD00\uD558\uAC8C \uC120\uC5B8\uD560 \uC218 \uC788\uAC8C \uD574\uC8FC\uB294 \uD30C\uB77C\uBBF8\uD130 \uB370\uCF54\uB808\uC774\uD130.\n * @dooboostore/simple-boot\uC758 @Inject\uC640 \uB3D9\uC77C\uD55C \uC778\uB371\uC2A4 \uAE30\uBC18 \uBA54\uD0C0\uB370\uC774\uD130 \uD328\uD134\uC744 \uB530\uB978\uB2E4:\n * \uB370\uCF54\uB808\uC774\uD130\uAC00 \uC2E4\uD589\uB418\uB294 \uC21C\uC11C\uAC00 \uC544\uB2C8\uB77C \uC2E4\uC81C parameterIndex\uB85C \uC2AC\uB86F\uC744 \uB9E4\uCE6D\uD558\uBBC0\uB85C,\n * \uC0AC\uC6A9\uC790\uAC00 \uD30C\uB77C\uBBF8\uD130 \uC120\uC5B8 \uC21C\uC11C\uB97C \uC790\uC720\uB86D\uAC8C \uBC14\uAFD4\uB3C4 \uB41C\uB2E4.\n */\nexport type SwcParamKind = 'eventObject' | 'matchedElement' | 'hostSet' | 'helperHostSet' | 'helperSet' | 'swcAppRouterEvent' | 'appMessage' | 'eventBeforeReturn' | 'appMessageBeforeReturn' | 'routeChangeBeforeReturn' | 'eventMediaBeforeReturn' | 'mutationObserverBeforeReturn' | 'intersectionObserverBeforeReturn' | 'resizeObserverBeforeReturn' | 'changedAttributeBeforeReturn' | 'setTimeoutBeforeReturn' | 'setIntervalBeforeReturn' | 'fetchSettled'\n | SwcRouteParamKind;\n\n/** \uB77C\uC6B0\uD2B8 \uD578\uB4E4\uB7EC \uC804\uC6A9 (subscribeSwcAppRouteChange \uAC00 \uCC44\uC6C0). kind \uC774\uB984 = \uB370\uCF54\uB808\uC774\uD130 \uC774\uB984 */\nexport type SwcRouteParamKind =\n | 'swcAppRouteQueryParam' | 'swcAppRouteFirstQueryParam' | 'swcAppRouteLastQueryParam' | 'swcAppRouteQueryParams'\n | 'swcAppRouteQueryParamObject' | 'swcAppRouteFirstQueryParamObject' | 'swcAppRouteLastQueryParamObject' | 'swcAppRouteQueryParamsObject'\n | 'swcAppRouteURLSearchParams'\n | 'swcAppRoutePathVariable' | 'swcAppRouteFirstPathVariable' | 'swcAppRouteLastPathVariable' | 'swcAppRoutePathVariables'\n | 'swcAppRoutePathVariableObject' | 'swcAppRouteFirstPathVariableObject' | 'swcAppRouteLastPathVariableObject' | 'swcAppRoutePathVariablesObject';\n\nconst SWC_PARAMETER_METADATA_KEY = Symbol.for('simple-web-component:parameter');\n\n/** key: @swcAppRouteQueryParam('q') \uCC98\uB7FC \uD0A4\uB97C \uBC1B\uB294 \uD30C\uB77C\uBBF8\uD130 \uB370\uCF54\uB808\uC774\uD130\uC758 \uD0A4 */\ntype SaveParamConfig = { index: number; kind: SwcParamKind; key?: string };\n\nconst registerParam = (kind: SwcParamKind, target: Object, propertyKey: string | symbol | undefined, parameterIndex: number, key?: string) => {\n if (!propertyKey) return;\n const constructor = target.constructor;\n const saves = (ReflectUtils.getOwnMetadata(SWC_PARAMETER_METADATA_KEY, constructor, propertyKey) ?? []) as SaveParamConfig[];\n saves.push(key === undefined ? { index: parameterIndex, kind } : { index: parameterIndex, kind, key });\n ReflectUtils.defineMetadata(SWC_PARAMETER_METADATA_KEY, saves, constructor, propertyKey);\n};\n\n/** \uC774\uBCA4\uD2B8 \uD578\uB4E4\uB7EC\uC758 \uC6D0\uBCF8 Event \uAC1D\uCCB4\uB97C \uC8FC\uC785\uD55C\uB2E4. */\nexport function eventObject(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('eventObject', target, propertyKey, parameterIndex);\n}\n\n/** delegate\uB85C \uB9E4\uCE6D\uB41C \uC2E4\uC81C \uC5D8\uB9AC\uBA3C\uD2B8($matchedElement)\uB97C \uC8FC\uC785\uD55C\uB2E4. */\nexport function matchedElement(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('matchedElement', target, propertyKey, parameterIndex);\n}\n\n/** HostSet(\uD638\uC2A4\uD2B8 \uD2B8\uB9AC \uC815\uBCF4 \u2014 $host/$hosts/$firstHost/$appHost \uB4F1)\uC744 \uC8FC\uC785\uD55C\uB2E4. */\nexport function hostSet(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('hostSet', target, propertyKey, parameterIndex);\n}\n\n/** HelperHostSet(HelperSet + HostSet + $this \uC804\uCCB4 \uBB36\uC74C)\uC744 \uC8FC\uC785\uD55C\uB2E4. */\nexport function helperHostSet(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('helperHostSet', target, propertyKey, parameterIndex);\n}\n\n/** HelperSet($d/$w/$q/$qa/$qi \uB4F1 \uC21C\uC218 DOM/window \uD5EC\uD37C, \uD638\uC2A4\uD2B8 \uD2B8\uB9AC \uC815\uBCF4 \uC5C6\uC74C)\uC744 \uC8FC\uC785\uD55C\uB2E4. */\nexport function helperSet(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('helperSet', target, propertyKey, parameterIndex);\n}\n\n/** @subscribeSwcAppRouteChange \uD578\uB4E4\uB7EC\uC758 \uB77C\uC6B0\uD2B8 \uBCC0\uACBD \uC774\uBCA4\uD2B8({...RouterEventType, pathData})\uB97C \uC8FC\uC785\uD55C\uB2E4. */\nexport function swcAppRouterEvent(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('swcAppRouterEvent', target, propertyKey, parameterIndex);\n}\n\n/** @subscribeSwcAppMessage \uD578\uB4E4\uB7EC\uC758 SwcAppMessage \uD398\uC774\uB85C\uB4DC\uB97C \uC8FC\uC785\uD55C\uB2E4. */\nexport function appMessage(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('appMessage', target, propertyKey, parameterIndex);\n}\n\n/**\n * @event \uACC4\uC5F4\uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4.\n * (before\uC5D0\uC11C async\uB85C \uC900\uBE44\uD55C \uB370\uC774\uD130\uB97C \uD578\uB4E4\uB7EC\uAC00 \uBC1B\uB294 \uC6A9\uB3C4. before \uC5C6\uC73C\uBA74 undefined)\n * \uC608: @eventClick({ before: () => loadUser() }) onClick(@eventBeforeReturn user) { ... }\n */\nexport function eventBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('eventBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/**\n * @subscribeSwcAppMessage \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4.\n * (before\uC5D0\uC11C async\uB85C \uC900\uBE44\uD55C \uB370\uC774\uD130\uB97C \uD578\uB4E4\uB7EC\uAC00 \uBC1B\uB294 \uC6A9\uB3C4. \uC5C6\uC73C\uBA74 undefined)\n * \uC608: onMsg(@appMessage m, @appMessageBeforeReturn prepared) { ... }\n */\nexport function appMessageBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('appMessageBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/**\n * @subscribeSwcAppRouteChange \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4.\n * (before\uC5D0\uC11C async \uAC00\uB4DC/\uC900\uBE44\uD55C \uB370\uC774\uD130\uB97C \uD578\uB4E4\uB7EC\uAC00 \uBC1B\uB294 \uC6A9\uB3C4. \uC5C6\uC73C\uBA74 undefined)\n * \uC608: routeChanged(@swcAppRouterEvent e, @routeChangeBeforeReturn guard) { ... }\n */\nexport function routeChangeBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('routeChangeBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/**\n * @eventMedia \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined)\n * \uC608: @eventMediaChange('(max-width:600px)', { before: () => ... }) onMobile(@eventMediaBeforeReturn v) { ... }\n */\nexport function eventMediaBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('eventMediaBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/** @mutationObserver \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined) */\nexport function mutationObserverBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('mutationObserverBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/** @intersectionObserver \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined) */\nexport function intersectionObserverBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('intersectionObserverBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/** @resizeObserver \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined) */\nexport function resizeObserverBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('resizeObserverBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/** @changedAttribute \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined) */\nexport function changedAttributeBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('changedAttributeBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/** @setTimeout(type:'onConnected') \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined) */\nexport function setTimeoutBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('setTimeoutBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/** @setInterval(type:'onConnected') \uC758 before \uD6C5\uC774 \uC774\uBC88 \uD638\uCD9C\uC5D0 \uB9AC\uD134\uD55C \uAC12\uC744 \uC8FC\uC785\uD55C\uB2E4. (before \uC5C6\uC73C\uBA74 undefined) */\nexport function setIntervalBeforeReturn(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('setIntervalBeforeReturn', target, propertyKey, parameterIndex);\n}\n\n/**\n * @fetch(trigger:'before') \uC758 fetch settled \uACB0\uACFC(PromiseSettledResult)\uB97C \uC8FC\uC785\uD55C\uB2E4.\n * \uC608: save(@fetchSettled settled) { ... }\n */\nexport function fetchSettled(target: Object, propertyKey: string | symbol, parameterIndex: number): void {\n registerParam('fetchSettled', target, propertyKey, parameterIndex);\n}\n\nexport const getParameterMetadata = (target: any, propertyKey: string | symbol): SaveParamConfig[] => {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.getMetadata(SWC_PARAMETER_METADATA_KEY, constructor, propertyKey) ?? [];\n};\n\n/**\n * \uC704 \uD30C\uB77C\uBBF8\uD130 \uB370\uCF54\uB808\uC774\uD130 \uBA54\uD0C0\uB370\uC774\uD130\uAC00 \uD558\uB098\uB77C\uB3C4 \uC788\uC73C\uBA74 kind\uBCC4 \uAC12\uC744 index \uC21C\uC11C\uC5D0 \uB9DE\uAC8C\n * \uBC30\uC5F4\uB85C \uC870\uB9BD\uD558\uACE0, \uD558\uB098\uB3C4 \uC5C6\uC73C\uBA74 \uAE30\uC874 \uC704\uCE58 \uC778\uC790(legacyArgs)\uB97C \uADF8\uB300\uB85C \uBC18\uD658\uD55C\uB2E4 \u2014 \uC644\uC804 \uD558\uC704\uD638\uD658.\n */\nexport const buildSwcParameterArgs = (\n target: any,\n propertyKey: string | symbol,\n kindValues: Partial<Record<SwcParamKind, any>>,\n legacyArgs: any[]\n): any[] => {\n const saves = getParameterMetadata(target, propertyKey);\n if (saves.length === 0) return legacyArgs;\n const maxIndex = Math.max(...saves.map(s => s.index));\n const args: any[] = new Array(maxIndex + 1);\n for (const s of saves) {\n const value = kindValues[s.kind];\n // \uD0A4\uB97C \uBC1B\uB294 kind \uB294 kindValues \uC5D0 (key) => \uAC12 resolver \uAC00 \uB4E4\uC5B4 \uC788\uB2E4\n args[s.index] = s.key !== undefined && typeof value === 'function' ? value(s.key) : value;\n }\n return args;\n};\n\n// \u2500\u2500\u2500 \uB77C\uC6B0\uD2B8 \uD30C\uB77C\uBBF8\uD130 (@subscribeSwcAppRouteChange \uD578\uB4E4\uB7EC) \u2500\u2500\u2500\n// \uADDC\uCE59: \uC811\uB450\uC5B4 \uC5C6\uC74C = First, First/Last = \uAC19\uC740 \uD0A4\uAC00 \uC5EC\uB7EC \uBC88\uC77C \uB54C \uCCAB/\uB9C8\uC9C0\uB9C9 \uAC12, \uBCF5\uC218\uD615 = \uBAA8\uB4E0 \uAC12 \uBC30\uC5F4.\n\nconst keyedRouteParam = (kind: SwcRouteParamKind) => (key: string): ParameterDecorator =>\n (target, propertyKey, parameterIndex) => registerParam(kind, target, propertyKey, parameterIndex, key);\nconst routeParam = (kind: SwcRouteParamKind): ParameterDecorator =>\n (target, propertyKey, parameterIndex) => registerParam(kind, target, propertyKey, parameterIndex);\n\n/** ?tag=a&tag=b \u2192 @swcAppRouteQueryParam('tag') = 'a' (\uC5C6\uC73C\uBA74 null) */\nexport const swcAppRouteQueryParam = keyedRouteParam('swcAppRouteQueryParam');\n/** = swcAppRouteQueryParam */\nexport const swcAppRouteFirstQueryParam = keyedRouteParam('swcAppRouteFirstQueryParam');\n/** ?tag=a&tag=b \u2192 'b' */\nexport const swcAppRouteLastQueryParam = keyedRouteParam('swcAppRouteLastQueryParam');\n/** ?tag=a&tag=b \u2192 ['a', 'b'] */\nexport const swcAppRouteQueryParams = keyedRouteParam('swcAppRouteQueryParams');\n/** ?tag=a&tag=b \u2192 { tag: 'a' } */\nexport const swcAppRouteQueryParamObject = routeParam('swcAppRouteQueryParamObject');\n/** = swcAppRouteQueryParamObject */\nexport const swcAppRouteFirstQueryParamObject = routeParam('swcAppRouteFirstQueryParamObject');\n/** ?tag=a&tag=b \u2192 { tag: 'b' } */\nexport const swcAppRouteLastQueryParamObject = routeParam('swcAppRouteLastQueryParamObject');\n/** ?tag=a&tag=b \u2192 { tag: ['a', 'b'] } */\nexport const swcAppRouteQueryParamsObject = routeParam('swcAppRouteQueryParamsObject');\n/** URLSearchParams \uADF8\uB300\uB85C */\nexport const swcAppRouteURLSearchParams = routeParam('swcAppRouteURLSearchParams');\n\n/** '/a/{id}/b/{id}' \u2190 '/a/1/b/2' \u2192 @swcAppRoutePathVariable('id') = '1' */\nexport const swcAppRoutePathVariable = keyedRouteParam('swcAppRoutePathVariable');\n/** = swcAppRoutePathVariable */\nexport const swcAppRouteFirstPathVariable = keyedRouteParam('swcAppRouteFirstPathVariable');\n/** \u2192 '2' */\nexport const swcAppRouteLastPathVariable = keyedRouteParam('swcAppRouteLastPathVariable');\n/** \u2192 ['1', '2'] */\nexport const swcAppRoutePathVariables = keyedRouteParam('swcAppRoutePathVariables');\n/** \u2192 { id: '1' } */\nexport const swcAppRoutePathVariableObject = routeParam('swcAppRoutePathVariableObject');\n/** = swcAppRoutePathVariableObject */\nexport const swcAppRouteFirstPathVariableObject = routeParam('swcAppRouteFirstPathVariableObject');\n/** \u2192 { id: '2' } */\nexport const swcAppRouteLastPathVariableObject = routeParam('swcAppRouteLastPathVariableObject');\n/** \u2192 { id: ['1', '2'] } */\nexport const swcAppRoutePathVariablesObject = routeParam('swcAppRoutePathVariablesObject');\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -69,8 +69,8 @@ function publishSwcAppMessage(targetOrMessageTypeOrOptions, propertyKeyOrOptions
69
69
  }
70
70
  const publishMessage = publishSwcAppMessage;
71
71
  const getPublishSwcAppMessageMetadata = (target) => {
72
- const constructor = target instanceof Function ? target : target.constructor;
73
- return ReflectUtils.getOwnMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, constructor);
72
+ const constructor = typeof target === "function" ? target : target.constructor;
73
+ return ReflectUtils.findAllMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, constructor).flat();
74
74
  };
75
75
  export {
76
76
  PUBLISH_SWC_APP_MESSAGE_METADATA_KEY,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/publishSwcAppMessage.ts"],
4
- "sourcesContent": ["import {ReflectUtils} from '@dooboostore/core';\nimport {SwcUtils} from '../utils/Utils';\n\nexport const PUBLISH_SWC_APP_MESSAGE_METADATA_KEY = Symbol.for('simple-web-component:publish-swc-app-message');\n\nexport interface PublishSwcAppMessageMetadata {\n propertyKey: string | symbol;\n messageType?: string;\n}\n\nexport interface PublishSwcAppMessageOptions {\n messageType?: string;\n /**\n * Custom key to extract value from return object.\n * If not provided, uses PUBLISH_SWC_APP_MESSAGE_METADATA_KEY by default.\n * Useful when multiple @publishSwcAppMessage decorators are on the same method.\n * \n * Example:\n * @publishSwcAppMessage('event1', { valueKey: 'detail1' })\n * @publishSwcAppMessage('event2', { valueKey: 'detail2' })\n * myMethod() {\n * return {\n * detail1: { type: 'event1', data: 'value1' },\n * detail2: { type: 'event2', data: 'value2' }\n * };\n * }\n */\n valueKey?: symbol | string;\n}\n\nfunction createPublishSwcAppMessage(messageType?: string, options?: PublishSwcAppMessageOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, constructor) as PublishSwcAppMessageMetadata[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, messageType });\n \n if (!descriptor) {\n return descriptor;\n }\n\n // \uBA54\uC11C\uB4DC \uB798\uD551 - \uC6D0\uBCF8 \uBA54\uC11C\uB4DC\uC758 \uBC18\uD658\uAC12\uC744 \uCEA1\uCC98\uD558\uC5EC \uBA54\uC2DC\uC9C0 \uBC1C\uD589\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // \uC6D0\uBCF8 \uBA54\uC11C\uB4DC \uC2E4\uD589\n const result = originalMethod.apply(this, args);\n\n /**\n * Extract value for this decorator from method return value\n * \n * If return value is an object with this decorator's key,\n * use that value. Otherwise use the entire return value.\n * \n * Uses valueKey from options if provided, otherwise uses PUBLISH_SWC_APP_MESSAGE_METADATA_KEY.\n */\n const extractValue = (v: any) => {\n const keyToUse = options?.valueKey ?? PUBLISH_SWC_APP_MESSAGE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\n }\n return v;\n };\n\n const publishMessage = (data: any) => {\n // appHost \uCC3E\uC544\uC11C \uBA54\uC2DC\uC9C0 \uBC1C\uD589\n const appHost = SwcUtils.getAppHost(this as HTMLElement);\n if (appHost) {\n appHost.publishMessage({\n publisher: this,\n data,\n type: messageType\n });\n }\n };\n \n // Promise \uCCB4\uD06C\n if (result instanceof Promise) {\n result.then((data) => {\n const extracted = extractValue(data);\n publishMessage(extracted);\n }).catch((err) => {\n console.warn('publishSwcAppMessage async error:', err);\n });\n } else {\n // \uB3D9\uAE30 \uD638\uCD9C - \uBC14\uB85C \uBA54\uC2DC\uC9C0 \uBC1C\uD589\n const extracted = extractValue(result);\n publishMessage(extracted);\n }\n \n return result;\n };\n\n return descriptor;\n };\n}\n\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uC9C1\uC811 \uC0AC\uC6A9 (\uAD04\uD638 \uC5C6\uC74C)\nexport function publishSwcAppMessage(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uD568\uC218 \uD638\uCD9C (\uAD04\uD638 \uC788\uC74C)\nexport function publishSwcAppMessage(): MethodDecorator;\nexport function publishSwcAppMessage(messageType: string): MethodDecorator;\nexport function publishSwcAppMessage(messageType: string, options: PublishSwcAppMessageOptions): MethodDecorator;\nexport function publishSwcAppMessage(options: PublishSwcAppMessageOptions): MethodDecorator;\n\nexport function publishSwcAppMessage(targetOrMessageTypeOrOptions?: any, propertyKeyOrOptions?: string | symbol | PublishSwcAppMessageOptions, descriptor?: PropertyDescriptor): any {\n // \uC9C1\uC811 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC5C6\uC74C): @publishSwcAppMessage\n if (targetOrMessageTypeOrOptions && typeof targetOrMessageTypeOrOptions === 'object' && \n propertyKeyOrOptions && (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol') &&\n descriptor) {\n const target = targetOrMessageTypeOrOptions;\n return createPublishSwcAppMessage()(target, propertyKeyOrOptions, descriptor);\n }\n\n // \uD568\uC218\uB85C \uD638\uCD9C\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC788\uC74C): @publishSwcAppMessage() / @publishSwcAppMessage('messageType') / @publishSwcAppMessage({...})\n let messageType: string | undefined;\n let options: PublishSwcAppMessageOptions | undefined;\n\n if (typeof targetOrMessageTypeOrOptions === 'string') {\n // \uBA54\uC2DC\uC9C0 \uD0C0\uC785 \uC804\uB2EC: @publishSwcAppMessage('messageType')\n messageType = targetOrMessageTypeOrOptions;\n if (typeof propertyKeyOrOptions === 'object' && propertyKeyOrOptions !== null) {\n options = propertyKeyOrOptions as PublishSwcAppMessageOptions;\n }\n } else if (typeof targetOrMessageTypeOrOptions === 'object' && targetOrMessageTypeOrOptions !== null) {\n // \uC635\uC158 \uAC1D\uCCB4 \uC804\uB2EC: @publishSwcAppMessage({...})\n options = targetOrMessageTypeOrOptions as PublishSwcAppMessageOptions;\n messageType = options.messageType;\n }\n\n return createPublishSwcAppMessage(messageType, options);\n}\n\n// --- Aliases: publish... ---\nexport const publishMessage = publishSwcAppMessage;\n\n// Helper function to retrieve publish message metadata\nexport const getPublishSwcAppMessageMetadata = (target: any): PublishSwcAppMessageMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getOwnMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, constructor);\n};\n"],
5
- "mappings": "AAAA,SAAQ,oBAAmB;AAC3B,SAAQ,gBAAe;AAEhB,MAAM,uCAAuC,OAAO,IAAI,8CAA8C;AA2B7G,SAAS,2BAA2B,aAAsB,SAAwD;AAChH,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACxF,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,aAAa,eAAe,sCAAsC,WAAW;AACxF,QAAI,CAAC,MAAM;AACT,aAAO,CAAC;AACR,mBAAa,eAAe,sCAAsC,MAAM,WAAW;AAAA,IACrF;AACA,SAAK,KAAK,EAAE,aAAa,YAAY,CAAC;AAEtC,QAAI,CAAC,YAAY;AACf,aAAO;AAAA,IACT;AAGA,UAAM,iBAAiB,WAAW;AAClC,eAAW,QAAQ,YAAa,MAAa;AAE3C,YAAM,SAAS,eAAe,MAAM,MAAM,IAAI;AAU9C,YAAM,eAAe,CAAC,MAAW;AAC/B,cAAM,WAAW,SAAS,YAAY;AACtC,YAAI,KAAK,OAAO,MAAM,YAAY,YAAY,GAAG;AAC/C,iBAAO,EAAE,QAAQ;AAAA,QACnB;AACA,eAAO;AAAA,MACT;AAEA,YAAMA,kBAAiB,CAAC,SAAc;AAEpC,cAAM,UAAU,SAAS,WAAW,IAAmB;AACvD,YAAI,SAAS;AACX,kBAAQ,eAAe;AAAA,YACrB,WAAW;AAAA,YACX;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAGA,UAAI,kBAAkB,SAAS;AAC7B,eAAO,KAAK,CAAC,SAAS;AACpB,gBAAM,YAAY,aAAa,IAAI;AACnC,UAAAA,gBAAe,SAAS;AAAA,QAC1B,CAAC,EAAE,MAAM,CAAC,QAAQ;AAChB,kBAAQ,KAAK,qCAAqC,GAAG;AAAA,QACvD,CAAC;AAAA,MACH,OAAO;AAEL,cAAM,YAAY,aAAa,MAAM;AACrC,QAAAA,gBAAe,SAAS;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;AAUO,SAAS,qBAAqB,8BAAoC,sBAAsE,YAAsC;AAEnL,MAAI,gCAAgC,OAAO,iCAAiC,YACxE,yBAAyB,OAAO,yBAAyB,YAAY,OAAO,yBAAyB,aACrG,YAAY;AACd,UAAM,SAAS;AACf,WAAO,2BAA2B,EAAE,QAAQ,sBAAsB,UAAU;AAAA,EAC9E;AAGA,MAAI;AACJ,MAAI;AAEJ,MAAI,OAAO,iCAAiC,UAAU;AAEpD,kBAAc;AACd,QAAI,OAAO,yBAAyB,YAAY,yBAAyB,MAAM;AAC7E,gBAAU;AAAA,IACZ;AAAA,EACF,WAAW,OAAO,iCAAiC,YAAY,iCAAiC,MAAM;AAEpG,cAAU;AACV,kBAAc,QAAQ;AAAA,EACxB;AAEA,SAAO,2BAA2B,aAAa,OAAO;AACxD;AAGO,MAAM,iBAAiB;AAGvB,MAAM,kCAAkC,CAAC,WAA4D;AAC1G,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,eAAe,sCAAsC,WAAW;AACtF;",
4
+ "sourcesContent": ["import {ReflectUtils} from '@dooboostore/core';\nimport {SwcUtils} from '../utils/Utils';\n\nexport const PUBLISH_SWC_APP_MESSAGE_METADATA_KEY = Symbol.for('simple-web-component:publish-swc-app-message');\n\nexport interface PublishSwcAppMessageMetadata {\n propertyKey: string | symbol;\n messageType?: string;\n}\n\nexport interface PublishSwcAppMessageOptions {\n messageType?: string;\n /**\n * Custom key to extract value from return object.\n * If not provided, uses PUBLISH_SWC_APP_MESSAGE_METADATA_KEY by default.\n * Useful when multiple @publishSwcAppMessage decorators are on the same method.\n * \n * Example:\n * @publishSwcAppMessage('event1', { valueKey: 'detail1' })\n * @publishSwcAppMessage('event2', { valueKey: 'detail2' })\n * myMethod() {\n * return {\n * detail1: { type: 'event1', data: 'value1' },\n * detail2: { type: 'event2', data: 'value2' }\n * };\n * }\n */\n valueKey?: symbol | string;\n}\n\nfunction createPublishSwcAppMessage(messageType?: string, options?: PublishSwcAppMessageOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, constructor) as PublishSwcAppMessageMetadata[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, messageType });\n \n if (!descriptor) {\n return descriptor;\n }\n\n // \uBA54\uC11C\uB4DC \uB798\uD551 - \uC6D0\uBCF8 \uBA54\uC11C\uB4DC\uC758 \uBC18\uD658\uAC12\uC744 \uCEA1\uCC98\uD558\uC5EC \uBA54\uC2DC\uC9C0 \uBC1C\uD589\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n // \uC6D0\uBCF8 \uBA54\uC11C\uB4DC \uC2E4\uD589\n const result = originalMethod.apply(this, args);\n\n /**\n * Extract value for this decorator from method return value\n * \n * If return value is an object with this decorator's key,\n * use that value. Otherwise use the entire return value.\n * \n * Uses valueKey from options if provided, otherwise uses PUBLISH_SWC_APP_MESSAGE_METADATA_KEY.\n */\n const extractValue = (v: any) => {\n const keyToUse = options?.valueKey ?? PUBLISH_SWC_APP_MESSAGE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\n }\n return v;\n };\n\n const publishMessage = (data: any) => {\n // appHost \uCC3E\uC544\uC11C \uBA54\uC2DC\uC9C0 \uBC1C\uD589\n const appHost = SwcUtils.getAppHost(this as HTMLElement);\n if (appHost) {\n appHost.publishMessage({\n publisher: this,\n data,\n type: messageType\n });\n }\n };\n \n // Promise \uCCB4\uD06C\n if (result instanceof Promise) {\n result.then((data) => {\n const extracted = extractValue(data);\n publishMessage(extracted);\n }).catch((err) => {\n console.warn('publishSwcAppMessage async error:', err);\n });\n } else {\n // \uB3D9\uAE30 \uD638\uCD9C - \uBC14\uB85C \uBA54\uC2DC\uC9C0 \uBC1C\uD589\n const extracted = extractValue(result);\n publishMessage(extracted);\n }\n \n return result;\n };\n\n return descriptor;\n };\n}\n\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uC9C1\uC811 \uC0AC\uC6A9 (\uAD04\uD638 \uC5C6\uC74C)\nexport function publishSwcAppMessage(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\n// \uC624\uBC84\uB85C\uB4DC \uC2DC\uADF8\uB2C8\uCC98 - \uD568\uC218 \uD638\uCD9C (\uAD04\uD638 \uC788\uC74C)\nexport function publishSwcAppMessage(messageType: string): MethodDecorator;\nexport function publishSwcAppMessage(messageType: string, options: PublishSwcAppMessageOptions): MethodDecorator;\nexport function publishSwcAppMessage(options: PublishSwcAppMessageOptions): MethodDecorator;\n\nexport function publishSwcAppMessage(targetOrMessageTypeOrOptions?: any, propertyKeyOrOptions?: string | symbol | PublishSwcAppMessageOptions, descriptor?: PropertyDescriptor): any {\n // \uC9C1\uC811 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC5C6\uC74C): @publishSwcAppMessage\n if (targetOrMessageTypeOrOptions && typeof targetOrMessageTypeOrOptions === 'object' && \n propertyKeyOrOptions && (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol') &&\n descriptor) {\n const target = targetOrMessageTypeOrOptions;\n return createPublishSwcAppMessage()(target, propertyKeyOrOptions, descriptor);\n }\n\n // \uD568\uC218\uB85C \uD638\uCD9C\uB41C \uACBD\uC6B0 (\uC778\uC790 \uC788\uC74C): @publishSwcAppMessage('messageType') / @publishSwcAppMessage({...})\n let messageType: string | undefined;\n let options: PublishSwcAppMessageOptions | undefined;\n\n if (typeof targetOrMessageTypeOrOptions === 'string') {\n // \uBA54\uC2DC\uC9C0 \uD0C0\uC785 \uC804\uB2EC: @publishSwcAppMessage('messageType')\n messageType = targetOrMessageTypeOrOptions;\n if (typeof propertyKeyOrOptions === 'object' && propertyKeyOrOptions !== null) {\n options = propertyKeyOrOptions as PublishSwcAppMessageOptions;\n }\n } else if (typeof targetOrMessageTypeOrOptions === 'object' && targetOrMessageTypeOrOptions !== null) {\n // \uC635\uC158 \uAC1D\uCCB4 \uC804\uB2EC: @publishSwcAppMessage({...})\n options = targetOrMessageTypeOrOptions as PublishSwcAppMessageOptions;\n messageType = options.messageType;\n }\n\n return createPublishSwcAppMessage(messageType, options);\n}\n\n// --- Aliases: publish... ---\nexport const publishMessage = publishSwcAppMessage;\n\n// Helper function to retrieve publish message metadata\nexport const getPublishSwcAppMessageMetadata = (target: any): PublishSwcAppMessageMetadata[] | undefined => {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.findAllMetadata<any[]>(PUBLISH_SWC_APP_MESSAGE_METADATA_KEY, constructor).flat();\n};\n"],
5
+ "mappings": "AAAA,SAAQ,oBAAmB;AAC3B,SAAQ,gBAAe;AAEhB,MAAM,uCAAuC,OAAO,IAAI,8CAA8C;AA2B7G,SAAS,2BAA2B,aAAsB,SAAwD;AAChH,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACxF,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,aAAa,eAAe,sCAAsC,WAAW;AACxF,QAAI,CAAC,MAAM;AACT,aAAO,CAAC;AACR,mBAAa,eAAe,sCAAsC,MAAM,WAAW;AAAA,IACrF;AACA,SAAK,KAAK,EAAE,aAAa,YAAY,CAAC;AAEtC,QAAI,CAAC,YAAY;AACf,aAAO;AAAA,IACT;AAGA,UAAM,iBAAiB,WAAW;AAClC,eAAW,QAAQ,YAAa,MAAa;AAE3C,YAAM,SAAS,eAAe,MAAM,MAAM,IAAI;AAU9C,YAAM,eAAe,CAAC,MAAW;AAC/B,cAAM,WAAW,SAAS,YAAY;AACtC,YAAI,KAAK,OAAO,MAAM,YAAY,YAAY,GAAG;AAC/C,iBAAO,EAAE,QAAQ;AAAA,QACnB;AACA,eAAO;AAAA,MACT;AAEA,YAAMA,kBAAiB,CAAC,SAAc;AAEpC,cAAM,UAAU,SAAS,WAAW,IAAmB;AACvD,YAAI,SAAS;AACX,kBAAQ,eAAe;AAAA,YACrB,WAAW;AAAA,YACX;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAGA,UAAI,kBAAkB,SAAS;AAC7B,eAAO,KAAK,CAAC,SAAS;AACpB,gBAAM,YAAY,aAAa,IAAI;AACnC,UAAAA,gBAAe,SAAS;AAAA,QAC1B,CAAC,EAAE,MAAM,CAAC,QAAQ;AAChB,kBAAQ,KAAK,qCAAqC,GAAG;AAAA,QACvD,CAAC;AAAA,MACH,OAAO;AAEL,cAAM,YAAY,aAAa,MAAM;AACrC,QAAAA,gBAAe,SAAS;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;AASO,SAAS,qBAAqB,8BAAoC,sBAAsE,YAAsC;AAEnL,MAAI,gCAAgC,OAAO,iCAAiC,YACxE,yBAAyB,OAAO,yBAAyB,YAAY,OAAO,yBAAyB,aACrG,YAAY;AACd,UAAM,SAAS;AACf,WAAO,2BAA2B,EAAE,QAAQ,sBAAsB,UAAU;AAAA,EAC9E;AAGA,MAAI;AACJ,MAAI;AAEJ,MAAI,OAAO,iCAAiC,UAAU;AAEpD,kBAAc;AACd,QAAI,OAAO,yBAAyB,YAAY,yBAAyB,MAAM;AAC7E,gBAAU;AAAA,IACZ;AAAA,EACF,WAAW,OAAO,iCAAiC,YAAY,iCAAiC,MAAM;AAEpG,cAAU;AACV,kBAAc,QAAQ;AAAA,EACxB;AAEA,SAAO,2BAA2B,aAAa,OAAO;AACxD;AAGO,MAAM,iBAAiB;AAGvB,MAAM,kCAAkC,CAAC,WAA4D;AAC1G,QAAM,cAAc,OAAO,WAAW,aAAa,SAAS,OAAO;AACnE,SAAO,aAAa,gBAAuB,sCAAsC,WAAW,EAAE,KAAK;AACrG;",
6
6
  "names": ["publishMessage"]
7
7
  }
@@ -3,7 +3,7 @@ import { getElementConfig, ensureInit } from "./elementDefine.js";
3
3
  import { SwcUtils } from "../utils/Utils.js";
4
4
  const QUERY_METADATA_KEY = Symbol.for("simple-web-component:query");
5
5
  const resolveQueryElements = (inst, selector, options, win) => {
6
- const hostSet = SwcUtils.getHelperAndHostSet(win, inst);
6
+ const hostSet = SwcUtils.getHelperAndHostSet(inst);
7
7
  let all = [];
8
8
  if (typeof selector === "function") {
9
9
  const result = selector(inst, hostSet);
@@ -77,13 +77,16 @@ function query(selectorOrTarget, optionsOrPropertyKey, descriptor) {
77
77
  if (descriptor !== void 0 && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
78
78
  throw new Error(`@query decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);
79
79
  }
80
+ if (selectorOrTarget && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
81
+ return query("$this")(selectorOrTarget, optionsOrPropertyKey);
82
+ }
80
83
  if (typeof selectorOrTarget === "string" || typeof selectorOrTarget === "function") {
81
84
  return (targetObj, propertyKey, descriptor2) => {
82
85
  if (descriptor2 !== void 0) {
83
86
  throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);
84
87
  }
85
88
  const constructor = targetObj.constructor;
86
- let queries = ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
89
+ let queries = ReflectUtils.getOwnMetadata(QUERY_METADATA_KEY, constructor);
87
90
  if (!queries) {
88
91
  queries = [];
89
92
  ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);
@@ -124,13 +127,16 @@ function query(selectorOrTarget, optionsOrPropertyKey, descriptor) {
124
127
  return query("$this", selectorOrTarget);
125
128
  }
126
129
  const getQueryMetadata = (target) => {
127
- const constructor = target instanceof Function ? target : target.constructor;
128
- return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor) ?? [];
130
+ const constructor = typeof target === "function" ? target : target.constructor;
131
+ return ReflectUtils.findAllMetadata(QUERY_METADATA_KEY, constructor).flat();
129
132
  };
130
133
  const QUERY_ALL_METADATA_KEY = QUERY_METADATA_KEY;
131
134
  function queryAll(selectorOrTarget, optionsOrPropertyKey, descriptor) {
132
135
  if (descriptor !== void 0 && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
133
- return query(selectorOrTarget, optionsOrPropertyKey, descriptor);
136
+ throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);
137
+ }
138
+ if (selectorOrTarget && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
139
+ return query("$this", { pick: "all" })(selectorOrTarget, optionsOrPropertyKey);
134
140
  }
135
141
  if (typeof selectorOrTarget === "string" || typeof selectorOrTarget === "function") {
136
142
  return query(selectorOrTarget, { ...optionsOrPropertyKey ?? {}, pick: "all" });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/query.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, SwcRootType, SwcFnSelector, SwcSelector, HelperHostSet } from '../types';\n\nexport type QueryPick = 'first' | 'last' | 'all' | 'even' | 'odd' | number;\n\nexport interface QueryBaseOptions {\n // 어떤 요소를 고를지 — 기본 'first'(단일). 'all'/'even'/'odd'는 배열, number는 인덱스(단일)\n pick?: QueryPick;\n filter?: (target: HTMLElement, meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n}\n// 문자열 셀렉터 전용 — root 허용\nexport type QueryOptions = QueryBaseOptions & SwcQueryOptions;\n// 함수 셀렉터 전용 — root 금지\nexport type QueryNonQueryOptions = QueryBaseOptions;\n\nexport type QueryFnSelector = SwcFnSelector;\nexport type QuerySelector = SwcSelector;\n\n// 셀렉터 종류에 따라 옵션 타입 분기\nexport type QueryOptionsOf<S extends QuerySelector> = S extends string ? QueryOptions : QueryNonQueryOptions;\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: QuerySelector;\n options: QueryOptions;\n}\n\nexport const QUERY_METADATA_KEY = Symbol.for('simple-web-component:query');\n\n/**\n * 셀렉터를 해석해 매칭된 모든 요소를 배열로 반환한다 (query/queryAll 공용).\n * $window/$document는 요소가 아니므로 여기서 처리하지 않는다.\n */\nexport const resolveQueryElements = (\n inst: any,\n selector: QuerySelector,\n options: QueryOptions,\n win: Window\n): HTMLElement[] => {\n const hostSet = SwcUtils.getHelperAndHostSet(win, inst);\n let all: HTMLElement[] = [];\n\n if (typeof selector === 'function') {\n const result = (selector as any)(inst, hostSet);\n if (result instanceof win.NodeList) all = Array.from(result as NodeList).filter(e => e instanceof win.HTMLElement) as HTMLElement[];\n else if (Array.isArray(result)) all = (result as any[]).filter(e => e instanceof win.HTMLElement) as HTMLElement[];\n else if (result instanceof win.HTMLElement) all = [result as HTMLElement];\n } else if (typeof selector === 'string') {\n const r = (options as any)?.root || 'auto';\n if (selector === '$this') all = [inst as HTMLElement];\n else if (selector === '$host') all = hostSet.$host ? [hostSet.$host] : [];\n else if (selector === '$parentHost') all = hostSet.$parentHost ? [hostSet.$parentHost] : [];\n else if (selector === '$appHost') all = hostSet.$appHost ? [hostSet.$appHost as any] : [];\n else if (selector === '$firstHost') all = hostSet.$firstHost ? [hostSet.$firstHost] : [];\n else if (selector === '$lastHost') all = hostSet.$lastHost ? [hostSet.$lastHost] : [];\n else if (selector === '$firstAppHost') all = hostSet.$firstAppHost ? [hostSet.$firstAppHost as any] : [];\n else if (selector === '$lastAppHost') all = hostSet.$lastAppHost ? [hostSet.$lastAppHost as any] : [];\n else if (selector === '$hosts') all = hostSet.$hosts.filter(Boolean);\n else if (selector === '$appHosts') all = hostSet.$appHosts.filter(Boolean) as any[];\n else {\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 scope of scopes) {\n const found = scope?.querySelectorAll?.(selector) as NodeListOf<HTMLElement> | undefined;\n if (found?.length) all.push(...Array.from(found).filter(e => e instanceof win.HTMLElement));\n }\n }\n }\n\n if ((options as any)?.filter) {\n all = all.filter(el => (options as any).filter(el, { currentThis: inst, helper: hostSet }));\n }\n return all;\n};\n\n/**\n * 매칭된 요소 배열에서 pick 옵션에 따라 요소를 고른다.\n * - 'first'(기본) / 'last' / number(인덱스) → 단일 요소\n * - 'all' / 'even'(0,2,4...) / 'odd'(1,3,5...) → 배열\n */\nexport const pickElements = (\n all: HTMLElement[],\n pick: QueryPick\n): HTMLElement | HTMLElement[] | null => {\n if (pick === 'all') return all;\n if (pick === 'even') return all.filter((_, i) => i % 2 === 0);\n if (pick === 'odd') return all.filter((_, i) => i % 2 === 1);\n if (typeof pick === 'number') return all[pick] ?? null;\n if (pick === 'last') return all.length ? all[all.length - 1] : null;\n return all.length ? all[0] : null;\n};\n\nexport function query(target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor | void;\nexport function query(selector: string, options?: QueryOptions): PropertyDecorator;\nexport function query(selector: QueryFnSelector, options?: QueryNonQueryOptions): PropertyDecorator;\nexport function query(options?: QueryOptions): PropertyDecorator;\n/**\n * @query decorator — 클래스 필드에 요소를 주입한다.\n *\n * - 문자열 셀렉터: CSS / 특수 셀렉터($this,$host,$window,...), root 옵션으로 탐색 영역 지정\n * - 함수 셀렉터: (currentThis, helper) => Node | NodeList | Element | Element[] | null (root 금지)\n * - options.pick: 'first'(기본) | 'last' | 'all' | 'even' | 'odd' | number\n */\nexport function query(selectorOrTarget?: string | ((currentThis: any, helper: HelperHostSet) => Node | NodeList | Element | Element[] | null) | Object, optionsOrPropertyKey?: QueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n // Bare decorator: @query\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget as any, options: (optionsOrPropertyKey as QueryOptions) || {} });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const config = getElementConfig(this);\n const win = config?.window || window;\n const options = (optionsOrPropertyKey as QueryOptions) || {};\n\n // $window/$document는 요소가 아니므로 항상 단일 반환\n if (typeof selectorOrTarget === 'string' && selectorOrTarget === '$window') return win;\n if (typeof selectorOrTarget === 'string' && selectorOrTarget === '$document') return win.document;\n\n const all = resolveQueryElements(this, selectorOrTarget as QuerySelector, options, win);\n return pickElements(all, options.pick ?? 'first');\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const config = getElementConfig(this);\n const win = config?.window || window;\n const options = (optionsOrPropertyKey as QueryOptions) || {};\n const all = resolveQueryElements(this, selectorOrTarget as QuerySelector, options, win);\n const picked = pickElements(all, options.pick ?? 'first');\n if (Array.isArray(picked)) picked.forEach(t => t.remove());\n else if (picked) picked.remove();\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n }\n // Without selector (defaults to $this)\n return query('$this', selectorOrTarget as QueryOptions);\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor) ?? [];\n};\n\n// ─── queryAll (query의 pick:'all' 편의 래퍼 — 호환용) ───\nexport const QUERY_ALL_METADATA_KEY = QUERY_METADATA_KEY;\n\nexport function queryAll(target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor | void;\nexport function queryAll(selector: string, options?: Omit<QueryOptions, 'pick'>): PropertyDecorator;\nexport function queryAll(selector: QueryFnSelector, options?: Omit<QueryNonQueryOptions, 'pick'>): PropertyDecorator;\nexport function queryAll(options?: Omit<QueryOptions, 'pick'>): PropertyDecorator;\nexport function queryAll(selectorOrTarget?: any, optionsOrPropertyKey?: any, descriptor?: PropertyDescriptor): any {\n // bare(필드 직접 적용)는 query로 위임\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n return query(selectorOrTarget, optionsOrPropertyKey, descriptor);\n }\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return query(selectorOrTarget, {...(optionsOrPropertyKey ?? {}), pick: 'all'});\n }\n return query({...(selectorOrTarget ?? {}), pick: 'all'});\n}\n\nexport const getQueryAllMetadata = getQueryMetadata;\n\n// ─── root별 편의 데코레이터 ───\n\n/**\n * @queryShadow(selector, options?) — shadow DOM에서 요소를 쿼리\n */\nexport function queryShadow(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'shadow'});\n}\n\n/**\n * @queryLight(selector, options?) — light DOM에서 요소를 쿼리\n */\nexport function queryLight(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'light'});\n}\n\n/**\n * @queryAllRoots(selector, options?) — shadow+light 모두에서 요소를 쿼리 (pick 기본 first)\n */\nexport function queryAllRoots(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'all'});\n}\n\n/**\n * @queryAllShadow(selector, options?) — shadow DOM에서 모든 매칭 요소를 배열로 쿼리\n */\nexport function queryAllShadow(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'shadow', pick: 'all'});\n}\n\n/**\n * @queryAllLight(selector, options?) — light DOM에서 모든 매칭 요소를 배열로 쿼리\n */\nexport function queryAllLight(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'light', pick: 'all'});\n}\n\n/**\n * @queryAllAll(selector, options?) — shadow+light 모두에서 모든 매칭 요소를 배열로 쿼리\n */\nexport function queryAllAll(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'all', pick: 'all'});\n}\n\n/**\n * @queryIn(root, pick?) — root + pick 조합 팩토리.\n * first/last/even/odd/all/number를 모두 지원하는 데코레이터를 생성한다.\n *\n * @example\n * @queryIn('shadow', 'even')('.item') // shadow DOM 짝수 인덱스들\n * @queryIn('light', 2)('.item') // light DOM 3번째 요소\n * @queryIn('all')('.item') // root all, pick 기본 first\n */\nexport const queryIn = (root: SwcRootType, pick?: QueryPick) =>\n (selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator =>\n query(selector as any, {...options ?? {}, root, ...(pick !== undefined ? {pick} : {})});"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, SwcRootType, SwcFnSelector, SwcSelector, HelperHostSet } from '../types';\n\nexport type QueryPick = 'first' | 'last' | 'all' | 'even' | 'odd' | number;\n\nexport interface QueryBaseOptions {\n // 어떤 요소를 고를지 — 기본 'first'(단일). 'all'/'even'/'odd'는 배열, number는 인덱스(단일)\n pick?: QueryPick;\n filter?: (target: HTMLElement, meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n}\n// 문자열 셀렉터 전용 — root 허용\nexport type QueryOptions = QueryBaseOptions & SwcQueryOptions;\n// 함수 셀렉터 전용 — root 금지\nexport type QueryNonQueryOptions = QueryBaseOptions;\n\nexport type QueryFnSelector = SwcFnSelector;\nexport type QuerySelector = SwcSelector;\n\n// 셀렉터 종류에 따라 옵션 타입 분기\nexport type QueryOptionsOf<S extends QuerySelector> = S extends string ? QueryOptions : QueryNonQueryOptions;\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: QuerySelector;\n options: QueryOptions;\n}\n\nexport const QUERY_METADATA_KEY = Symbol.for('simple-web-component:query');\n\n/**\n * 셀렉터를 해석해 매칭된 모든 요소를 배열로 반환한다 (query/queryAll 공용).\n * $window/$document는 요소가 아니므로 여기서 처리하지 않는다.\n */\nexport const resolveQueryElements = (\n inst: any,\n selector: QuerySelector,\n options: QueryOptions,\n win: Window\n): HTMLElement[] => {\n const hostSet = SwcUtils.getHelperAndHostSet(inst);\n let all: HTMLElement[] = [];\n\n if (typeof selector === 'function') {\n const result = (selector as any)(inst, hostSet);\n if (result instanceof win.NodeList) all = Array.from(result as NodeList).filter(e => e instanceof win.HTMLElement) as HTMLElement[];\n else if (Array.isArray(result)) all = (result as any[]).filter(e => e instanceof win.HTMLElement) as HTMLElement[];\n else if (result instanceof win.HTMLElement) all = [result as HTMLElement];\n } else if (typeof selector === 'string') {\n const r = (options as any)?.root || 'auto';\n if (selector === '$this') all = [inst as HTMLElement];\n else if (selector === '$host') all = hostSet.$host ? [hostSet.$host] : [];\n else if (selector === '$parentHost') all = hostSet.$parentHost ? [hostSet.$parentHost] : [];\n else if (selector === '$appHost') all = hostSet.$appHost ? [hostSet.$appHost as any] : [];\n else if (selector === '$firstHost') all = hostSet.$firstHost ? [hostSet.$firstHost] : [];\n else if (selector === '$lastHost') all = hostSet.$lastHost ? [hostSet.$lastHost] : [];\n else if (selector === '$firstAppHost') all = hostSet.$firstAppHost ? [hostSet.$firstAppHost as any] : [];\n else if (selector === '$lastAppHost') all = hostSet.$lastAppHost ? [hostSet.$lastAppHost as any] : [];\n else if (selector === '$hosts') all = hostSet.$hosts.filter(Boolean);\n else if (selector === '$appHosts') all = hostSet.$appHosts.filter(Boolean) as any[];\n else {\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 scope of scopes) {\n const found = scope?.querySelectorAll?.(selector) as NodeListOf<HTMLElement> | undefined;\n if (found?.length) all.push(...Array.from(found).filter(e => e instanceof win.HTMLElement));\n }\n }\n }\n\n if ((options as any)?.filter) {\n all = all.filter(el => (options as any).filter(el, { currentThis: inst, helper: hostSet }));\n }\n return all;\n};\n\n/**\n * 매칭된 요소 배열에서 pick 옵션에 따라 요소를 고른다.\n * - 'first'(기본) / 'last' / number(인덱스) → 단일 요소\n * - 'all' / 'even'(0,2,4...) / 'odd'(1,3,5...) → 배열\n */\nexport const pickElements = (\n all: HTMLElement[],\n pick: QueryPick\n): HTMLElement | HTMLElement[] | null => {\n if (pick === 'all') return all;\n if (pick === 'even') return all.filter((_, i) => i % 2 === 0);\n if (pick === 'odd') return all.filter((_, i) => i % 2 === 1);\n if (typeof pick === 'number') return all[pick] ?? null;\n if (pick === 'last') return all.length ? all[all.length - 1] : null;\n return all.length ? all[0] : null;\n};\n\nexport function query(selector: string, options?: QueryOptions): PropertyDecorator;\nexport function query(selector: QueryFnSelector, options?: QueryNonQueryOptions): PropertyDecorator;\nexport function query(options: QueryOptions): PropertyDecorator;\n// bare(@query) 시그니처는 맨 뒤 — @attribute 와 같은 이유 (TS1240/TS1271)\nexport function query(target: Object, propertyKey: string | symbol): void;\n/**\n * @query decorator — 클래스 필드에 요소를 주입한다.\n *\n * - 문자열 셀렉터: CSS / 특수 셀렉터($this,$host,$window,...), root 옵션으로 탐색 영역 지정\n * - 함수 셀렉터: (currentThis, helper) => Node | NodeList | Element | Element[] | null (root 금지)\n * - options.pick: 'first'(기본) | 'last' | 'all' | 'even' | 'odd' | number\n */\nexport function query(selectorOrTarget?: string | ((currentThis: any, helper: HelperHostSet) => Node | NodeList | Element | Element[] | null) | Object, optionsOrPropertyKey?: QueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n // Bare decorator: @query\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);\n }\n // bare: @query — 자기 자신($this). 빈 괄호 @query() 는 타입에서 막는다 (인자가 없으면 괄호도 없다)\n if (selectorOrTarget && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n return query('$this')(selectorOrTarget, optionsOrPropertyKey);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getOwnMetadata(QUERY_METADATA_KEY, constructor) as QueryMetadata[] | undefined;\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget as any, options: (optionsOrPropertyKey as QueryOptions) || {} });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const config = getElementConfig(this);\n const win = config?.window || window;\n const options = (optionsOrPropertyKey as QueryOptions) || {};\n\n // $window/$document는 요소가 아니므로 항상 단일 반환\n if (typeof selectorOrTarget === 'string' && selectorOrTarget === '$window') return win;\n if (typeof selectorOrTarget === 'string' && selectorOrTarget === '$document') return win.document;\n\n const all = resolveQueryElements(this, selectorOrTarget as QuerySelector, options, win);\n return pickElements(all, options.pick ?? 'first');\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const config = getElementConfig(this);\n const win = config?.window || window;\n const options = (optionsOrPropertyKey as QueryOptions) || {};\n const all = resolveQueryElements(this, selectorOrTarget as QuerySelector, options, win);\n const picked = pickElements(all, options.pick ?? 'first');\n if (Array.isArray(picked)) picked.forEach(t => t.remove());\n else if (picked) picked.remove();\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n }\n // 옵션만: $this\n return query('$this', selectorOrTarget as QueryOptions);\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] => {\n const constructor = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.findAllMetadata<any[]>(QUERY_METADATA_KEY, constructor).flat();\n};\n\n// ─── queryAll (query의 pick:'all' 편의 래퍼 — 호환용) ───\nexport const QUERY_ALL_METADATA_KEY = QUERY_METADATA_KEY;\n\nexport function queryAll(selector: string, options?: Omit<QueryOptions, 'pick'>): PropertyDecorator;\nexport function queryAll(selector: QueryFnSelector, options?: Omit<QueryNonQueryOptions, 'pick'>): PropertyDecorator;\nexport function queryAll(options: Omit<QueryOptions, 'pick'>): PropertyDecorator;\nexport function queryAll(target: Object, propertyKey: string | symbol): void;\nexport function queryAll(selectorOrTarget?: any, optionsOrPropertyKey?: any, descriptor?: PropertyDescriptor): any {\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(optionsOrPropertyKey)})`);\n }\n // bare: @queryAll — [$this]. 빈 괄호 @queryAll() 는 타입에서 막는다\n if (selectorOrTarget && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n return query('$this', { pick: 'all' })(selectorOrTarget, optionsOrPropertyKey);\n }\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return query(selectorOrTarget, {...(optionsOrPropertyKey ?? {}), pick: 'all'});\n }\n return query({...(selectorOrTarget ?? {}), pick: 'all'});\n}\n\nexport const getQueryAllMetadata = getQueryMetadata;\n\n// ─── root별 편의 데코레이터 ───\n\n/**\n * @queryShadow(selector, options?) — shadow DOM에서 요소를 쿼리\n */\nexport function queryShadow(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'shadow'});\n}\n\n/**\n * @queryLight(selector, options?) — light DOM에서 요소를 쿼리\n */\nexport function queryLight(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'light'});\n}\n\n/**\n * @queryAllRoots(selector, options?) — shadow+light 모두에서 요소를 쿼리 (pick 기본 first)\n */\nexport function queryAllRoots(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'all'});\n}\n\n/**\n * @queryAllShadow(selector, options?) — shadow DOM에서 모든 매칭 요소를 배열로 쿼리\n */\nexport function queryAllShadow(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'shadow', pick: 'all'});\n}\n\n/**\n * @queryAllLight(selector, options?) — light DOM에서 모든 매칭 요소를 배열로 쿼리\n */\nexport function queryAllLight(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'light', pick: 'all'});\n}\n\n/**\n * @queryAllAll(selector, options?) — shadow+light 모두에서 모든 매칭 요소를 배열로 쿼리\n */\nexport function queryAllAll(selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator {\n return query(selector as any, {...options ?? {}, root: 'all', pick: 'all'});\n}\n\n/**\n * @queryIn(root, pick?) — root + pick 조합 팩토리.\n * first/last/even/odd/all/number를 모두 지원하는 데코레이터를 생성한다.\n *\n * @example\n * @(queryIn('shadow', 'even')('.item')) // shadow DOM 짝수 인덱스들 (호출이 이어지면 바깥 괄호 필요)\n * @(queryIn('light', 2)('.item')) // light DOM 3번째 요소\n * @(queryIn('all')('.item')) // root all, pick 기본 first\n */\nexport const queryIn = (root: SwcRootType, pick?: QueryPick) =>\n (selector: string | QueryFnSelector, options?: QueryBaseOptions): PropertyDecorator =>\n query(selector as any, {...options ?? {}, root, ...(pick !== undefined ? {pick} : {})});"],
5
+ "mappings": "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",
6
6
  "names": ["descriptor"]
7
7
  }