@dooboostore/simple-web-component 1.0.32 → 1.0.34

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 (143) hide show
  1. package/README.md +280 -43
  2. package/dist/cjs/decorators/addEventListener.js.map +1 -1
  3. package/dist/cjs/decorators/applyAttribute.js +67 -57
  4. package/dist/cjs/decorators/applyAttribute.js.map +2 -2
  5. package/dist/cjs/decorators/applyClass.js +80 -70
  6. package/dist/cjs/decorators/applyClass.js.map +2 -2
  7. package/dist/cjs/decorators/applyNode.js +1 -8
  8. package/dist/cjs/decorators/applyNode.js.map +2 -2
  9. package/dist/cjs/decorators/applyStyle.js +66 -56
  10. package/dist/cjs/decorators/applyStyle.js.map +2 -2
  11. package/dist/cjs/decorators/attribute.js +35 -29
  12. package/dist/cjs/decorators/attribute.js.map +2 -2
  13. package/dist/cjs/decorators/changedAttributeHost.js +32 -12
  14. package/dist/cjs/decorators/changedAttributeHost.js.map +2 -2
  15. package/dist/cjs/decorators/elementDefine.js +29 -16
  16. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  17. package/dist/cjs/decorators/emitCustomEvent.js +57 -44
  18. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  19. package/dist/cjs/decorators/index.js +3 -1
  20. package/dist/cjs/decorators/index.js.map +2 -2
  21. package/dist/cjs/decorators/publishSwcAppMessage.js +86 -0
  22. package/dist/cjs/decorators/publishSwcAppMessage.js.map +7 -0
  23. package/dist/cjs/decorators/setProperty.js +50 -39
  24. package/dist/cjs/decorators/setProperty.js.map +2 -2
  25. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js +62 -0
  26. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +7 -0
  27. package/dist/cjs/decorators/{subscribeSwcAppRouteChange.js → subscribeSwcAppRouteChangeWhileConnected.js} +16 -16
  28. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +7 -0
  29. package/dist/cjs/elements/SwcAppEngine.js +7 -7
  30. package/dist/cjs/elements/SwcAppEngine.js.map +3 -3
  31. package/dist/cjs/elements/SwcAppMixin.js +90 -43
  32. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  33. package/dist/cjs/elements/SwcChoose.js +19 -15
  34. package/dist/cjs/elements/SwcChoose.js.map +2 -2
  35. package/dist/cjs/elements/register.js +21 -16
  36. package/dist/cjs/elements/register.js.map +2 -2
  37. package/dist/cjs/types.js.map +1 -1
  38. package/dist/cjs/utils/Utils.js +7 -3
  39. package/dist/cjs/utils/Utils.js.map +2 -2
  40. package/dist/esm/decorators/addEventListener.js.map +1 -1
  41. package/dist/esm/decorators/applyAttribute.js +67 -57
  42. package/dist/esm/decorators/applyAttribute.js.map +2 -2
  43. package/dist/esm/decorators/applyClass.js +80 -70
  44. package/dist/esm/decorators/applyClass.js.map +2 -2
  45. package/dist/esm/decorators/applyNode.js +1 -8
  46. package/dist/esm/decorators/applyNode.js.map +2 -2
  47. package/dist/esm/decorators/applyStyle.js +66 -56
  48. package/dist/esm/decorators/applyStyle.js.map +2 -2
  49. package/dist/esm/decorators/attribute.js +35 -29
  50. package/dist/esm/decorators/attribute.js.map +2 -2
  51. package/dist/esm/decorators/changedAttributeHost.js +32 -12
  52. package/dist/esm/decorators/changedAttributeHost.js.map +2 -2
  53. package/dist/esm/decorators/elementDefine.js +30 -17
  54. package/dist/esm/decorators/elementDefine.js.map +2 -2
  55. package/dist/esm/decorators/emitCustomEvent.js +57 -44
  56. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  57. package/dist/esm/decorators/index.js +3 -1
  58. package/dist/esm/decorators/index.js.map +2 -2
  59. package/dist/esm/decorators/publishSwcAppMessage.js +67 -0
  60. package/dist/esm/decorators/publishSwcAppMessage.js.map +7 -0
  61. package/dist/esm/decorators/setProperty.js +50 -39
  62. package/dist/esm/decorators/setProperty.js.map +2 -2
  63. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +43 -0
  64. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +7 -0
  65. package/dist/esm/decorators/{subscribeSwcAppRouteChange.js → subscribeSwcAppRouteChangeWhileConnected.js} +13 -13
  66. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +7 -0
  67. package/dist/esm/elements/SwcAppEngine.js +6 -6
  68. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  69. package/dist/esm/elements/SwcAppMixin.js +90 -43
  70. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  71. package/dist/esm/elements/SwcChoose.js +20 -16
  72. package/dist/esm/elements/SwcChoose.js.map +2 -2
  73. package/dist/esm/elements/register.js +22 -17
  74. package/dist/esm/elements/register.js.map +2 -2
  75. package/dist/esm/types.js.map +1 -1
  76. package/dist/esm/utils/Utils.js +7 -3
  77. package/dist/esm/utils/Utils.js.map +2 -2
  78. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +543 -348
  79. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  80. package/dist/types/decorators/addEventListener.d.ts +4 -1
  81. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  82. package/dist/types/decorators/applyAttribute.d.ts +5 -1
  83. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  84. package/dist/types/decorators/applyClass.d.ts +4 -0
  85. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  86. package/dist/types/decorators/applyNode.d.ts +4 -1
  87. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  88. package/dist/types/decorators/applyStyle.d.ts +5 -1
  89. package/dist/types/decorators/applyStyle.d.ts.map +1 -1
  90. package/dist/types/decorators/attribute.d.ts +5 -0
  91. package/dist/types/decorators/attribute.d.ts.map +1 -1
  92. package/dist/types/decorators/changedAttributeHost.d.ts +13 -3
  93. package/dist/types/decorators/changedAttributeHost.d.ts.map +1 -1
  94. package/dist/types/decorators/elementDefine.d.ts +1 -0
  95. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  96. package/dist/types/decorators/emitCustomEvent.d.ts +5 -1
  97. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  98. package/dist/types/decorators/index.d.ts +3 -1
  99. package/dist/types/decorators/index.d.ts.map +1 -1
  100. package/dist/types/decorators/publishSwcAppMessage.d.ts +13 -0
  101. package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -0
  102. package/dist/types/decorators/setProperty.d.ts +5 -1
  103. package/dist/types/decorators/setProperty.d.ts.map +1 -1
  104. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +16 -0
  105. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -0
  106. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +18 -0
  107. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -0
  108. package/dist/types/elements/SwcAppEngine.d.ts +6 -3
  109. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  110. package/dist/types/elements/SwcAppMixin.d.ts +8 -3
  111. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  112. package/dist/types/elements/register.d.ts.map +1 -1
  113. package/dist/types/types.d.ts +6 -0
  114. package/dist/types/types.d.ts.map +1 -1
  115. package/dist/types/utils/Utils.d.ts.map +1 -1
  116. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +543 -348
  117. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  118. package/package.json +4 -4
  119. package/src/decorators/addEventListener.ts +1 -1
  120. package/src/decorators/applyAttribute.ts +74 -61
  121. package/src/decorators/applyClass.ts +91 -77
  122. package/src/decorators/applyNode.ts +3 -12
  123. package/src/decorators/applyStyle.ts +75 -61
  124. package/src/decorators/attribute.ts +55 -43
  125. package/src/decorators/changedAttributeHost.ts +47 -14
  126. package/src/decorators/elementDefine.ts +38 -19
  127. package/src/decorators/emitCustomEvent.ts +65 -49
  128. package/src/decorators/index.ts +3 -1
  129. package/src/decorators/publishSwcAppMessage.ts +100 -0
  130. package/src/decorators/setProperty.ts +58 -44
  131. package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +73 -0
  132. package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +71 -0
  133. package/src/elements/SwcAppEngine.ts +11 -12
  134. package/src/elements/SwcAppMixin.ts +115 -44
  135. package/src/elements/SwcChoose.ts +28 -7
  136. package/src/elements/register.ts +28 -7
  137. package/src/types.ts +8 -0
  138. package/src/utils/Utils.ts +15 -5
  139. package/dist/cjs/decorators/subscribeSwcAppRouteChange.js.map +0 -7
  140. package/dist/esm/decorators/subscribeSwcAppRouteChange.js.map +0 -7
  141. package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts +0 -18
  142. package/dist/types/decorators/subscribeSwcAppRouteChange.d.ts.map +0 -1
  143. package/src/decorators/subscribeSwcAppRouteChange.ts +0 -71
@@ -1,4 +1,4 @@
1
- import { elementDefine, attributeHost, changedAttributeHost } from '../decorators';
1
+ import { getElementConfig, elementDefine, attributeHost, changedAttributeHost, getAttributeValue } from '../decorators';
2
2
  import { SwcAppMixin } from './SwcAppMixin';
3
3
  import { SwcUtils } from '../utils/Utils';
4
4
  import { FunctionUtils,ActionExpression } from '@dooboostore/core';
@@ -318,7 +318,9 @@ export const registerAllElements = (w: any): Record<string, Constructor<HTMLElem
318
318
 
319
319
  @elementDefine('swc-choose', { extends: 'template', window: w })
320
320
  class SwcChoose extends HTMLTemplateElement {
321
- @attributeHost('value')
321
+ // @attributeHost('value')
322
+ // fetchValue: any;
323
+
322
324
  _value: any;
323
325
 
324
326
  @attributeHost('replace-wrap')
@@ -332,12 +334,29 @@ export const registerAllElements = (w: any): Record<string, Constructor<HTMLElem
332
334
  }
333
335
 
334
336
  set value(nv: any) {
335
- this.refresh(nv);
337
+ this._value = nv;
338
+ this.refresh(this._value);
339
+ }
340
+
341
+ constructor() {
342
+ super();
343
+ // console.log('swc chooooooooooooooooooooooooose constructor called!');
344
+ // console.log('swc cccccccss', this.getAttribute('value'));
345
+ }
346
+
347
+ // static get observedAttributes() {
348
+ // return ['value'];
349
+ // }
350
+
351
+ attributeChangedCallback(na, o, n) {
352
+ // console.log('-----------------choooooooose attr origin', na, o, n);
336
353
  }
337
354
 
338
355
  @changedAttributeHost('value')
339
- private setValue() {
340
- this.refresh();
356
+ private setValue(value: any, o: string, n: string) {
357
+ // console.log('-----------------choooooooose attr setValue', value, o, n);
358
+ this._value = value;
359
+ this.refresh(this._value);
341
360
  }
342
361
 
343
362
  @changedAttributeHost('replace-wrap')
@@ -367,11 +386,13 @@ export const registerAllElements = (w: any): Record<string, Constructor<HTMLElem
367
386
  return ae.getUnprocessedTemplate();
368
387
  }
369
388
 
370
- refresh(value = this._value) {
389
+ refresh(value?: any) {
390
+ value = getAttributeValue(this, 'value') ?? this._value;
391
+ // console.log('chooooooooo refresh->', value);
371
392
  const portal = this.parentElement;
372
393
  if (!portal) return;
373
394
 
374
- const win = this.ownerDocument?.defaultView || window;
395
+ const win = (getElementConfig(this).window ?? this.ownerDocument?.defaultView) || window;
375
396
  const helperSet = SwcUtils.getHelperAndHostSet(win, this);
376
397
  const groupArgs = { ...helperSet, $value: value };
377
398
 
package/src/types.ts CHANGED
@@ -42,6 +42,13 @@ export type HostSet = {
42
42
  };
43
43
 
44
44
  export type HelperHostSet = HelperSet & HostSet & {$this: any};
45
+
46
+ export type SwcAppMessage<T = any> = {
47
+ publisher?: any;
48
+ data?: T;
49
+ type?: string;
50
+ };
51
+
45
52
  export interface SwcChooseInterface extends HTMLTemplateElement {
46
53
  value: any;
47
54
  refresh(): void;
@@ -58,4 +65,5 @@ export interface SwcAppInterface extends HTMLElement {
58
65
  reload(): void;
59
66
  back(): void;
60
67
  forward(): void;
68
+ publishMessage(message: SwcAppMessage): void;
61
69
  }
@@ -249,8 +249,10 @@ export namespace SwcUtils {
249
249
  };
250
250
 
251
251
  export const getAppHosts = (el: HTMLElement): SwcAppInterface[] => {
252
- const hosts = getHosts(el);
253
- return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];
252
+ // const hosts = getHosts(el);
253
+ // return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];
254
+ const hosts = SwcUtils.findAllParentAppHostsDirect(el);
255
+ return hosts;
254
256
  };
255
257
 
256
258
  export const getAppHost = (el: HTMLElement): SwcAppInterface | undefined => {
@@ -277,7 +279,15 @@ export namespace SwcUtils {
277
279
  */
278
280
  export const findAllParentAppHostsDirect = (el: HTMLElement): SwcAppInterface[] => {
279
281
  const appHosts: SwcAppInterface[] = [];
280
-
282
+
283
+ const w = el.ownerDocument?.defaultView || ((typeof window !== 'undefined' ? window : undefined) as any);
284
+
285
+ // Guard against SSR environment where window might be undefined
286
+ if (!w) {
287
+ return appHosts;
288
+ }
289
+
290
+ // console.log('------?',w.ShadowRoot);
281
291
  // el 자체부터 시작 (el이 app host일 수도 있음)
282
292
  let current: HTMLElement | null = el;
283
293
 
@@ -296,9 +306,9 @@ export namespace SwcUtils {
296
306
  } else {
297
307
  // parentElement가 없음 = Shadow root의 직접 자식일 수 있음
298
308
  const root = current.getRootNode();
299
- if (root instanceof ShadowRoot) {
309
+ if (w.ShadowRoot && root instanceof w.ShadowRoot) {
300
310
  // Shadow host로 올라가기
301
- current = root.host as HTMLElement;
311
+ current = (root as ShadowRoot).host as HTMLElement;
302
312
  } else {
303
313
  // Document root 도달
304
314
  break;
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/decorators/subscribeSwcAppRouteChange.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { Router } from '@dooboostore/core-web';\n\nexport const SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY = Symbol.for('simple-web-component:subscribe-swc-app-route-change');\n\nexport interface SwcAppRouteChangeSubscriberMetadata {\n propertyKey: string | symbol;\n pathPattern?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nexport interface SwcAppRouteChangeOptions {\n path?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nfunction createSwcAppRouteChangeSubscriber(options?: SwcAppRouteChangeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const pathPattern = options?.path;\n const filter = options?.filter;\n\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor) as SwcAppRouteChangeSubscriberMetadata[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, pathPattern, filter });\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 subscribeSwcAppRouteChange(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 subscribeSwcAppRouteChange(): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPattern: string): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPatterns: string[]): MethodDecorator;\nexport function subscribeSwcAppRouteChange(options: SwcAppRouteChangeOptions): MethodDecorator;\n\n// \uC2E4\uC81C \uAD6C\uD604 (\uC774\uC911 \uBAA8\uB4DC)\nexport function subscribeSwcAppRouteChange(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n // \uC9C1\uC811 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC5C6\uC74C): @subscribeSwcAppRouteChange\n // propertyKey\uAC00 string | symbol\uC774\uACE0 descriptor\uAC00 \uC788\uC73C\uBA74 \uC9C1\uC811 \uC0AC\uC6A9\n if (propertyKey && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return createSwcAppRouteChangeSubscriber({})(targetOrOptions, propertyKey, descriptor);\n }\n \n // \uD568\uC218\uB85C \uD638\uCD9C\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC788\uC74C): @subscribeSwcAppRouteChange() / @subscribeSwcAppRouteChange('/path')\n let options: SwcAppRouteChangeOptions = {};\n\n if (Array.isArray(targetOrOptions)) {\n // \uBC30\uC5F4: @subscribeSwcAppRouteChange(['/path1', '/path2'])\n options.path = targetOrOptions;\n } else if (typeof targetOrOptions === 'string') {\n // \uBB38\uC790\uC5F4: @subscribeSwcAppRouteChange('/path')\n options.path = targetOrOptions;\n } else if (targetOrOptions && typeof targetOrOptions === 'object') {\n // \uAC1D\uCCB4: @subscribeSwcAppRouteChange({ path: '/path', filter: ... })\n options = targetOrOptions;\n }\n\n return createSwcAppRouteChangeSubscriber(options);\n}\n\n// Helper function to retrieve route change subscribers metadata\nexport const getSubscribeSwcAppRouteChangeMetadata = (target: any): SwcAppRouteChangeSubscriberMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAGtB,MAAM,8CAA8C,OAAO,IAAI,qDAAqD;AAa3H,SAAS,kCAAkC,SAAqD;AAC9F,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACxF,UAAM,cAAc,SAAS;AAC7B,UAAM,SAAS,SAAS;AAExB,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,yBAAa,eAAe,6CAA6C,WAAW;AAC/F,QAAI,CAAC,MAAM;AACT,aAAO,CAAC;AACR,+BAAa,eAAe,6CAA6C,MAAM,WAAW;AAAA,IAC5F;AACA,SAAK,KAAK,EAAE,aAAa,aAAa,OAAO,CAAC;AAE9C,WAAO;AAAA,EACT;AACF;AAWO,SAAS,2BAA2B,iBAAuB,aAA+B,YAAsC;AAGrI,MAAI,gBAAgB,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACvF,WAAO,kCAAkC,CAAC,CAAC,EAAE,iBAAiB,aAAa,UAAU;AAAA,EACvF;AAGA,MAAI,UAAoC,CAAC;AAEzC,MAAI,MAAM,QAAQ,eAAe,GAAG;AAElC,YAAQ,OAAO;AAAA,EACjB,WAAW,OAAO,oBAAoB,UAAU;AAE9C,YAAQ,OAAO;AAAA,EACjB,WAAW,mBAAmB,OAAO,oBAAoB,UAAU;AAEjE,cAAU;AAAA,EACZ;AAEA,SAAO,kCAAkC,OAAO;AAClD;AAGO,MAAM,wCAAwC,CAAC,WAAmE;AACvH,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,yBAAa,eAAe,6CAA6C,WAAW;AAC7F;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/decorators/subscribeSwcAppRouteChange.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { Router } from '@dooboostore/core-web';\n\nexport const SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY = Symbol.for('simple-web-component:subscribe-swc-app-route-change');\n\nexport interface SwcAppRouteChangeSubscriberMetadata {\n propertyKey: string | symbol;\n pathPattern?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nexport interface SwcAppRouteChangeOptions {\n path?: string | string[];\n filter?: (router: Router) => boolean;\n}\n\nfunction createSwcAppRouteChangeSubscriber(options?: SwcAppRouteChangeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const pathPattern = options?.path;\n const filter = options?.filter;\n\n const constructor = target.constructor;\n let list = ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor) as SwcAppRouteChangeSubscriberMetadata[];\n if (!list) {\n list = [];\n ReflectUtils.defineMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, list, constructor);\n }\n list.push({ propertyKey, pathPattern, filter });\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 subscribeSwcAppRouteChange(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 subscribeSwcAppRouteChange(): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPattern: string): MethodDecorator;\nexport function subscribeSwcAppRouteChange(pathPatterns: string[]): MethodDecorator;\nexport function subscribeSwcAppRouteChange(options: SwcAppRouteChangeOptions): MethodDecorator;\n\n// \uC2E4\uC81C \uAD6C\uD604 (\uC774\uC911 \uBAA8\uB4DC)\nexport function subscribeSwcAppRouteChange(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n // \uC9C1\uC811 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC5C6\uC74C): @subscribeSwcAppRouteChange\n // propertyKey\uAC00 string | symbol\uC774\uACE0 descriptor\uAC00 \uC788\uC73C\uBA74 \uC9C1\uC811 \uC0AC\uC6A9\n if (propertyKey && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return createSwcAppRouteChangeSubscriber({})(targetOrOptions, propertyKey, descriptor);\n }\n \n // \uD568\uC218\uB85C \uD638\uCD9C\uB41C \uACBD\uC6B0 (\uAD04\uD638 \uC788\uC74C): @subscribeSwcAppRouteChange() / @subscribeSwcAppRouteChange('/path')\n let options: SwcAppRouteChangeOptions = {};\n\n if (Array.isArray(targetOrOptions)) {\n // \uBC30\uC5F4: @subscribeSwcAppRouteChange(['/path1', '/path2'])\n options.path = targetOrOptions;\n } else if (typeof targetOrOptions === 'string') {\n // \uBB38\uC790\uC5F4: @subscribeSwcAppRouteChange('/path')\n options.path = targetOrOptions;\n } else if (targetOrOptions && typeof targetOrOptions === 'object') {\n // \uAC1D\uCCB4: @subscribeSwcAppRouteChange({ path: '/path', filter: ... })\n options = targetOrOptions;\n }\n\n return createSwcAppRouteChangeSubscriber(options);\n}\n\n// Helper function to retrieve route change subscribers metadata\nexport const getSubscribeSwcAppRouteChangeMetadata = (target: any): SwcAppRouteChangeSubscriberMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor);\n};\n"],
5
- "mappings": "AAAA,SAAS,oBAAoB;AAGtB,MAAM,8CAA8C,OAAO,IAAI,qDAAqD;AAa3H,SAAS,kCAAkC,SAAqD;AAC9F,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACxF,UAAM,cAAc,SAAS;AAC7B,UAAM,SAAS,SAAS;AAExB,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,aAAa,eAAe,6CAA6C,WAAW;AAC/F,QAAI,CAAC,MAAM;AACT,aAAO,CAAC;AACR,mBAAa,eAAe,6CAA6C,MAAM,WAAW;AAAA,IAC5F;AACA,SAAK,KAAK,EAAE,aAAa,aAAa,OAAO,CAAC;AAE9C,WAAO;AAAA,EACT;AACF;AAWO,SAAS,2BAA2B,iBAAuB,aAA+B,YAAsC;AAGrI,MAAI,gBAAgB,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACvF,WAAO,kCAAkC,CAAC,CAAC,EAAE,iBAAiB,aAAa,UAAU;AAAA,EACvF;AAGA,MAAI,UAAoC,CAAC;AAEzC,MAAI,MAAM,QAAQ,eAAe,GAAG;AAElC,YAAQ,OAAO;AAAA,EACjB,WAAW,OAAO,oBAAoB,UAAU;AAE9C,YAAQ,OAAO;AAAA,EACjB,WAAW,mBAAmB,OAAO,oBAAoB,UAAU;AAEjE,cAAU;AAAA,EACZ;AAEA,SAAO,kCAAkC,OAAO;AAClD;AAGO,MAAM,wCAAwC,CAAC,WAAmE;AACvH,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,eAAe,6CAA6C,WAAW;AAC7F;",
6
- "names": []
7
- }
@@ -1,18 +0,0 @@
1
- import { Router } from '@dooboostore/core-web';
2
- export declare const SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY: unique symbol;
3
- export interface SwcAppRouteChangeSubscriberMetadata {
4
- propertyKey: string | symbol;
5
- pathPattern?: string | string[];
6
- filter?: (router: Router) => boolean;
7
- }
8
- export interface SwcAppRouteChangeOptions {
9
- path?: string | string[];
10
- filter?: (router: Router) => boolean;
11
- }
12
- export declare function subscribeSwcAppRouteChange(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
13
- export declare function subscribeSwcAppRouteChange(): MethodDecorator;
14
- export declare function subscribeSwcAppRouteChange(pathPattern: string): MethodDecorator;
15
- export declare function subscribeSwcAppRouteChange(pathPatterns: string[]): MethodDecorator;
16
- export declare function subscribeSwcAppRouteChange(options: SwcAppRouteChangeOptions): MethodDecorator;
17
- export declare const getSubscribeSwcAppRouteChangeMetadata: (target: any) => SwcAppRouteChangeSubscriberMetadata[] | undefined;
18
- //# sourceMappingURL=subscribeSwcAppRouteChange.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscribeSwcAppRouteChange.d.ts","sourceRoot":"","sources":["../../../src/decorators/subscribeSwcAppRouteChange.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,eAAO,MAAM,2CAA2C,eAAoE,CAAC;AAE7H,MAAM,WAAW,mCAAmC;IAClD,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACtC;AAoBD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAEpJ,wBAAgB,0BAA0B,IAAI,eAAe,CAAC;AAC9D,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC;AACjF,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC;AACpF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,wBAAwB,GAAG,eAAe,CAAC;AA4B/F,eAAO,MAAM,qCAAqC,GAAI,QAAQ,GAAG,KAAG,mCAAmC,EAAE,GAAG,SAG3G,CAAC"}
@@ -1,71 +0,0 @@
1
- import { ReflectUtils } from '@dooboostore/core';
2
- import { Router } from '@dooboostore/core-web';
3
-
4
- export const SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY = Symbol.for('simple-web-component:subscribe-swc-app-route-change');
5
-
6
- export interface SwcAppRouteChangeSubscriberMetadata {
7
- propertyKey: string | symbol;
8
- pathPattern?: string | string[];
9
- filter?: (router: Router) => boolean;
10
- }
11
-
12
- export interface SwcAppRouteChangeOptions {
13
- path?: string | string[];
14
- filter?: (router: Router) => boolean;
15
- }
16
-
17
- function createSwcAppRouteChangeSubscriber(options?: SwcAppRouteChangeOptions): MethodDecorator {
18
- return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {
19
- const pathPattern = options?.path;
20
- const filter = options?.filter;
21
-
22
- const constructor = target.constructor;
23
- let list = ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor) as SwcAppRouteChangeSubscriberMetadata[];
24
- if (!list) {
25
- list = [];
26
- ReflectUtils.defineMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, list, constructor);
27
- }
28
- list.push({ propertyKey, pathPattern, filter });
29
-
30
- return descriptor;
31
- };
32
- }
33
-
34
- // 오버로드 시그니처 - 직접 사용 (괄호 없음)
35
- export function subscribeSwcAppRouteChange(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
36
- // 오버로드 시그니처 - 함수 호출 (괄호 있음)
37
- export function subscribeSwcAppRouteChange(): MethodDecorator;
38
- export function subscribeSwcAppRouteChange(pathPattern: string): MethodDecorator;
39
- export function subscribeSwcAppRouteChange(pathPatterns: string[]): MethodDecorator;
40
- export function subscribeSwcAppRouteChange(options: SwcAppRouteChangeOptions): MethodDecorator;
41
-
42
- // 실제 구현 (이중 모드)
43
- export function subscribeSwcAppRouteChange(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
44
- // 직접 데코레이터로 사용된 경우 (괄호 없음): @subscribeSwcAppRouteChange
45
- // propertyKey가 string | symbol이고 descriptor가 있으면 직접 사용
46
- if (propertyKey && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {
47
- return createSwcAppRouteChangeSubscriber({})(targetOrOptions, propertyKey, descriptor);
48
- }
49
-
50
- // 함수로 호출된 경우 (괄호 있음): @subscribeSwcAppRouteChange() / @subscribeSwcAppRouteChange('/path')
51
- let options: SwcAppRouteChangeOptions = {};
52
-
53
- if (Array.isArray(targetOrOptions)) {
54
- // 배열: @subscribeSwcAppRouteChange(['/path1', '/path2'])
55
- options.path = targetOrOptions;
56
- } else if (typeof targetOrOptions === 'string') {
57
- // 문자열: @subscribeSwcAppRouteChange('/path')
58
- options.path = targetOrOptions;
59
- } else if (targetOrOptions && typeof targetOrOptions === 'object') {
60
- // 객체: @subscribeSwcAppRouteChange({ path: '/path', filter: ... })
61
- options = targetOrOptions;
62
- }
63
-
64
- return createSwcAppRouteChangeSubscriber(options);
65
- }
66
-
67
- // Helper function to retrieve route change subscribers metadata
68
- export const getSubscribeSwcAppRouteChangeMetadata = (target: any): SwcAppRouteChangeSubscriberMetadata[] | undefined => {
69
- const constructor = target instanceof Function ? target : target.constructor;
70
- return ReflectUtils.getOwnMetadata(SUBSCRIBE_SWC_APP_ROUTE_CHANGE_METADATA_KEY, constructor);
71
- };