@dooboostore/simple-web-component 1.0.43 → 1.0.45

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 (146) hide show
  1. package/README.md +312 -63
  2. package/dist/cjs/SwcAppEngine.js +3 -1
  3. package/dist/cjs/SwcAppEngine.js.map +2 -2
  4. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  5. package/dist/cjs/decorators/applyAttribute.js +66 -43
  6. package/dist/cjs/decorators/applyAttribute.js.map +2 -2
  7. package/dist/cjs/decorators/applyClass.js +110 -43
  8. package/dist/cjs/decorators/applyClass.js.map +3 -3
  9. package/dist/cjs/decorators/applyNode.js +200 -112
  10. package/dist/cjs/decorators/applyNode.js.map +2 -2
  11. package/dist/cjs/decorators/applyProperty.js +49 -45
  12. package/dist/cjs/decorators/applyProperty.js.map +2 -2
  13. package/dist/cjs/decorators/applyStyle.js +92 -37
  14. package/dist/cjs/decorators/applyStyle.js.map +3 -3
  15. package/dist/cjs/decorators/{changedAttributeThis.js → changedAttribute.js} +6 -6
  16. package/dist/cjs/decorators/changedAttribute.js.map +7 -0
  17. package/dist/cjs/decorators/elementDefine.js +81 -31
  18. package/dist/cjs/decorators/elementDefine.js.map +3 -3
  19. package/dist/cjs/decorators/emitCustomEvent.js +80 -52
  20. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  21. package/dist/cjs/decorators/index.js +1 -1
  22. package/dist/cjs/decorators/index.js.map +2 -2
  23. package/dist/cjs/decorators/publishSwcAppMessage.js +5 -5
  24. package/dist/cjs/decorators/publishSwcAppMessage.js.map +3 -3
  25. package/dist/cjs/decorators/query.js +133 -147
  26. package/dist/cjs/decorators/query.js.map +3 -3
  27. package/dist/cjs/decorators/queryAll.js +143 -132
  28. package/dist/cjs/decorators/queryAll.js.map +3 -3
  29. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js +2 -0
  30. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
  31. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -0
  32. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
  33. package/dist/cjs/elements/SwcAppMixin.js +17 -2
  34. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  35. package/dist/cjs/examples/RxJSOperatorsExample.js +285 -0
  36. package/dist/cjs/examples/RxJSOperatorsExample.js.map +7 -0
  37. package/dist/cjs/index.js +1 -0
  38. package/dist/cjs/index.js.map +2 -2
  39. package/dist/cjs/router/ElementRouter.js +4 -0
  40. package/dist/cjs/router/ElementRouter.js.map +2 -2
  41. package/dist/cjs/types/window.d.js.map +1 -1
  42. package/dist/esm/SwcAppEngine.js +3 -1
  43. package/dist/esm/SwcAppEngine.js.map +2 -2
  44. package/dist/esm/decorators/addEventListener.js.map +2 -2
  45. package/dist/esm/decorators/applyAttribute.js +66 -43
  46. package/dist/esm/decorators/applyAttribute.js.map +2 -2
  47. package/dist/esm/decorators/applyClass.js +110 -43
  48. package/dist/esm/decorators/applyClass.js.map +3 -3
  49. package/dist/esm/decorators/applyNode.js +200 -112
  50. package/dist/esm/decorators/applyNode.js.map +2 -2
  51. package/dist/esm/decorators/applyProperty.js +49 -45
  52. package/dist/esm/decorators/applyProperty.js.map +2 -2
  53. package/dist/esm/decorators/applyStyle.js +92 -37
  54. package/dist/esm/decorators/applyStyle.js.map +3 -3
  55. package/dist/esm/decorators/{changedAttributeThis.js → changedAttribute.js} +3 -3
  56. package/dist/esm/decorators/changedAttribute.js.map +7 -0
  57. package/dist/esm/decorators/elementDefine.js +79 -29
  58. package/dist/esm/decorators/elementDefine.js.map +2 -2
  59. package/dist/esm/decorators/emitCustomEvent.js +80 -52
  60. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  61. package/dist/esm/decorators/index.js +1 -1
  62. package/dist/esm/decorators/index.js.map +1 -1
  63. package/dist/esm/decorators/publishSwcAppMessage.js +5 -5
  64. package/dist/esm/decorators/publishSwcAppMessage.js.map +3 -3
  65. package/dist/esm/decorators/query.js +133 -147
  66. package/dist/esm/decorators/query.js.map +3 -3
  67. package/dist/esm/decorators/queryAll.js +143 -132
  68. package/dist/esm/decorators/queryAll.js.map +3 -3
  69. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +2 -0
  70. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
  71. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -0
  72. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
  73. package/dist/esm/elements/SwcAppMixin.js +18 -3
  74. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  75. package/dist/esm/examples/RxJSOperatorsExample.js +266 -0
  76. package/dist/esm/examples/RxJSOperatorsExample.js.map +7 -0
  77. package/dist/esm/index.js +1 -0
  78. package/dist/esm/index.js.map +2 -2
  79. package/dist/esm/router/ElementRouter.js +4 -0
  80. package/dist/esm/router/ElementRouter.js.map +2 -2
  81. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1118 -633
  82. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  83. package/dist/types/SwcAppEngine.d.ts.map +1 -1
  84. package/dist/types/decorators/addEventListener.d.ts +19 -15
  85. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  86. package/dist/types/decorators/applyAttribute.d.ts +45 -26
  87. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  88. package/dist/types/decorators/applyClass.d.ts +19 -38
  89. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  90. package/dist/types/decorators/applyNode.d.ts +175 -32
  91. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  92. package/dist/types/decorators/applyProperty.d.ts +38 -25
  93. package/dist/types/decorators/applyProperty.d.ts.map +1 -1
  94. package/dist/types/decorators/applyStyle.d.ts +10 -9
  95. package/dist/types/decorators/applyStyle.d.ts.map +1 -1
  96. package/dist/types/decorators/{changedAttributeThis.d.ts → changedAttribute.d.ts} +2 -2
  97. package/dist/types/decorators/changedAttribute.d.ts.map +1 -0
  98. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  99. package/dist/types/decorators/emitCustomEvent.d.ts +6 -12
  100. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  101. package/dist/types/decorators/index.d.ts +1 -1
  102. package/dist/types/decorators/index.d.ts.map +1 -1
  103. package/dist/types/decorators/publishSwcAppMessage.d.ts +1 -1
  104. package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
  105. package/dist/types/decorators/query.d.ts +16 -29
  106. package/dist/types/decorators/query.d.ts.map +1 -1
  107. package/dist/types/decorators/queryAll.d.ts +16 -23
  108. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  109. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +1 -0
  110. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -1
  111. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +2 -0
  112. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -1
  113. package/dist/types/elements/SwcAppMixin.d.ts +4 -4
  114. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  115. package/dist/types/examples/RxJSOperatorsExample.d.ts +94 -0
  116. package/dist/types/examples/RxJSOperatorsExample.d.ts.map +1 -0
  117. package/dist/types/index.d.ts +1 -0
  118. package/dist/types/index.d.ts.map +1 -1
  119. package/dist/types/router/ElementRouter.d.ts.map +1 -1
  120. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1118 -633
  121. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  122. package/package.json +1 -1
  123. package/src/SwcAppEngine.ts +3 -1
  124. package/src/decorators/addEventListener.ts +31 -25
  125. package/src/decorators/applyAttribute.ts +164 -86
  126. package/src/decorators/applyClass.ts +161 -41
  127. package/src/decorators/applyNode.ts +408 -108
  128. package/src/decorators/applyProperty.ts +100 -89
  129. package/src/decorators/applyStyle.ts +131 -37
  130. package/src/decorators/{changedAttributeThis.ts → changedAttribute.ts} +1 -1
  131. package/src/decorators/elementDefine.ts +96 -30
  132. package/src/decorators/emitCustomEvent.ts +92 -60
  133. package/src/decorators/index.ts +1 -1
  134. package/src/decorators/publishSwcAppMessage.ts +1 -1
  135. package/src/decorators/query.ts +155 -162
  136. package/src/decorators/queryAll.ts +157 -139
  137. package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +1 -0
  138. package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +3 -1
  139. package/src/elements/SwcAppMixin.ts +43 -24
  140. package/src/examples/RxJSOperatorsExample.ts +279 -0
  141. package/src/index.ts +2 -0
  142. package/src/router/ElementRouter.ts +4 -0
  143. package/src/types/window.d.ts +3 -0
  144. package/dist/cjs/decorators/changedAttributeThis.js.map +0 -7
  145. package/dist/esm/decorators/changedAttributeThis.js.map +0 -7
  146. package/dist/types/decorators/changedAttributeThis.d.ts.map +0 -1
@@ -23,10 +23,8 @@ __export(applyProperty_exports, {
23
23
  findAllPropertyApplyMetadata: () => findAllPropertyApplyMetadata,
24
24
  findAllPropertyMetadata: () => findAllPropertyMetadata,
25
25
  property: () => property,
26
- propertyThis: () => propertyThis,
27
26
  resolvePropertyTargets: () => resolvePropertyTargets,
28
- setProperty: () => setProperty,
29
- setPropertyThis: () => setPropertyThis
27
+ setProperty: () => setProperty
30
28
  });
31
29
  module.exports = __toCommonJS(applyProperty_exports);
32
30
  var import_core = require("@dooboostore/core");
@@ -38,6 +36,27 @@ const resolvePropertyTargets = (inst, selector, options) => {
38
36
  const currentWin = conf.window;
39
37
  const r = options.root || "auto";
40
38
  const results = [];
39
+ let resolvedSelector = selector;
40
+ if (typeof selector === "function") {
41
+ const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(currentWin, inst);
42
+ resolvedSelector = selector(inst, hostSet);
43
+ }
44
+ if (resolvedSelector instanceof currentWin.Element) {
45
+ results.push(resolvedSelector);
46
+ return results;
47
+ }
48
+ if (resolvedSelector instanceof currentWin.NodeList) {
49
+ results.push(...Array.from(resolvedSelector));
50
+ return results;
51
+ }
52
+ if (Array.isArray(resolvedSelector)) {
53
+ results.push(...resolvedSelector);
54
+ return results;
55
+ }
56
+ if (resolvedSelector === null) {
57
+ return results;
58
+ }
59
+ const stringSelector = resolvedSelector;
41
60
  const applyRoot = (target) => {
42
61
  if (!target) return;
43
62
  if (r === "auto") {
@@ -47,37 +66,37 @@ const resolvePropertyTargets = (inst, selector, options) => {
47
66
  if ((r === "shadow" || r === "all") && target.shadowRoot) results.push(target.shadowRoot);
48
67
  }
49
68
  };
50
- if (selector === "$this" || !selector) {
69
+ if (stringSelector === "$this" || !stringSelector) {
51
70
  applyRoot(inst);
52
- } else if (selector === "$window") {
71
+ } else if (stringSelector === "$window") {
53
72
  results.push(currentWin);
54
- } else if (selector === "$document") {
73
+ } else if (stringSelector === "$document") {
55
74
  results.push(currentWin.document);
56
75
  } else {
57
76
  const hostSet = import_Utils.SwcUtils.getHostSet(inst);
58
- if (selector === "$host") applyRoot(hostSet.$host);
59
- else if (selector === "$parentHost") applyRoot(hostSet.$parentHost);
60
- else if (selector === "$appHost") applyRoot(hostSet.$appHost);
61
- else if (selector === "$firstHost") applyRoot(hostSet.$firstHost);
62
- else if (selector === "$lastHost") applyRoot(hostSet.$lastHost);
63
- else if (selector === "$firstAppHost") applyRoot(hostSet.$firstAppHost);
64
- else if (selector === "$lastAppHost") applyRoot(hostSet.$lastAppHost);
65
- else if (selector === "$hosts") hostSet.$hosts.forEach(applyRoot);
66
- else if (selector === "$appHosts") hostSet.$appHosts.forEach(applyRoot);
77
+ if (stringSelector === "$host") applyRoot(hostSet.$host);
78
+ else if (stringSelector === "$parentHost") applyRoot(hostSet.$parentHost);
79
+ else if (stringSelector === "$appHost") applyRoot(hostSet.$appHost);
80
+ else if (stringSelector === "$firstHost") applyRoot(hostSet.$firstHost);
81
+ else if (stringSelector === "$lastHost") applyRoot(hostSet.$lastHost);
82
+ else if (stringSelector === "$firstAppHost") applyRoot(hostSet.$firstAppHost);
83
+ else if (stringSelector === "$lastAppHost") applyRoot(hostSet.$lastAppHost);
84
+ else if (stringSelector === "$hosts") hostSet.$hosts.forEach(applyRoot);
85
+ else if (stringSelector === "$appHosts") hostSet.$appHosts.forEach(applyRoot);
67
86
  else {
68
87
  if (r === "shadow") {
69
- const found = inst.shadowRoot?.querySelectorAll(selector);
88
+ const found = inst.shadowRoot?.querySelectorAll(stringSelector);
70
89
  if (found) results.push(...found);
71
90
  } else if (r === "light") {
72
- const found = inst.querySelectorAll(selector);
91
+ const found = inst.querySelectorAll(stringSelector);
73
92
  if (found) results.push(...found);
74
93
  } else if (r === "all") {
75
- const sMatch = inst.shadowRoot?.querySelectorAll(selector);
76
- const lMatch = inst.querySelectorAll(selector);
94
+ const sMatch = inst.shadowRoot?.querySelectorAll(stringSelector);
95
+ const lMatch = inst.querySelectorAll(stringSelector);
77
96
  if (sMatch) results.push(...sMatch);
78
97
  if (lMatch) results.push(...lMatch);
79
98
  } else {
80
- const found = (inst.shadowRoot || inst).querySelectorAll(selector);
99
+ const found = (inst.shadowRoot || inst).querySelectorAll(stringSelector);
81
100
  if (found) results.push(...found);
82
101
  }
83
102
  }
@@ -176,35 +195,20 @@ function applyProperty(selector, targetPropertyKeyOrOptions, options) {
176
195
  });
177
196
  };
178
197
  }
179
- function property(selector, targetPropertyKeyOrOptions, options) {
180
- return applyProperty(selector, targetPropertyKeyOrOptions, options);
181
- }
182
- function propertyThis(targetOrOptions, propertyKeyOrOptions, descriptor) {
183
- if (typeof targetOrOptions === "object" && targetOrOptions !== null && !Array.isArray(targetOrOptions) && (typeof propertyKeyOrOptions === "string" || typeof propertyKeyOrOptions === "symbol")) {
184
- return applyProperty("$this", void 0, {})(targetOrOptions, propertyKeyOrOptions, descriptor);
198
+ function property(selectorOrTarget, targetPropertyKeyOrOptions, optionsOrDescriptor) {
199
+ if (optionsOrDescriptor !== void 0 && (typeof targetPropertyKeyOrOptions === "string" || typeof targetPropertyKeyOrOptions === "symbol")) {
200
+ return applyProperty("$this", void 0, {})(selectorOrTarget, targetPropertyKeyOrOptions, optionsOrDescriptor);
185
201
  }
186
- if (typeof targetOrOptions === "string" || typeof targetOrOptions === "symbol") {
187
- return applyProperty("$this", targetOrOptions, propertyKeyOrOptions);
188
- } else if (targetOrOptions && typeof targetOrOptions === "object") {
189
- return applyProperty("$this", void 0, targetOrOptions);
190
- } else {
191
- return applyProperty("$this", void 0, {});
202
+ if (typeof selectorOrTarget === "string") {
203
+ return applyProperty(selectorOrTarget, targetPropertyKeyOrOptions, optionsOrDescriptor);
192
204
  }
205
+ return applyProperty("$this", void 0, selectorOrTarget);
193
206
  }
194
- function setProperty(selector, targetPropertyKeyOrOptions, options) {
195
- return applyProperty(selector, targetPropertyKeyOrOptions, options);
196
- }
197
- function setPropertyThis(targetOrOptions, propertyKeyOrOptions, descriptor) {
198
- if (typeof targetOrOptions === "object" && targetOrOptions !== null && !Array.isArray(targetOrOptions) && (typeof propertyKeyOrOptions === "string" || typeof propertyKeyOrOptions === "symbol")) {
199
- return applyProperty("$this", void 0, {})(targetOrOptions, propertyKeyOrOptions, descriptor);
200
- }
201
- if (typeof targetOrOptions === "string" || typeof targetOrOptions === "symbol") {
202
- return applyProperty("$this", targetOrOptions, propertyKeyOrOptions);
203
- } else if (targetOrOptions && typeof targetOrOptions === "object") {
204
- return applyProperty("$this", void 0, targetOrOptions);
205
- } else {
206
- return applyProperty("$this", void 0, {});
207
+ function setProperty(selectorOrOptions, targetPropertyKeyOrOptions, optionsOrUndefined) {
208
+ if (typeof selectorOrOptions === "string") {
209
+ return applyProperty(selectorOrOptions, targetPropertyKeyOrOptions, optionsOrUndefined);
207
210
  }
211
+ return applyProperty("$this", void 0, selectorOrOptions);
208
212
  }
209
213
  const findAllPropertyMetadata = (target) => {
210
214
  const actualTarget = target instanceof Function ? target : target.constructor;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/applyProperty.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport interface PropertyOptions extends SwcQueryOptions {\n name?: string | symbol;\n filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;\n /**\n * Custom key to extract value from return object.\n * If not provided, uses PROPERTY_METADATA_KEY by default.\n * Useful when multiple @setProperty decorators are on the same method.\n * \n * Example:\n * @setProperty('selector1', { valueKey: 'prop1' })\n * @setProperty('selector2', { valueKey: 'prop2' })\n * myMethod() {\n * return {\n * prop1: 'value1',\n * prop2: 'value2'\n * };\n * }\n * \n * Or with symbols:\n * @setProperty('selector1', { valueKey: Symbol.for('prop1') })\n * @setProperty('selector2', { valueKey: Symbol.for('prop2') })\n * myMethod() {\n * return {\n * [Symbol.for('prop1')]: 'value1',\n * [Symbol.for('prop2')]: 'value2'\n * };\n * }\n */\n valueKey?: symbol | string;\n}\n\nexport interface PropertyMetadata {\n propertyKey: string | symbol;\n selector: string;\n targetPropertyKey: string | symbol;\n options: PropertyOptions;\n type: 'property' | 'method';\n}\n\nexport const PROPERTY_METADATA_KEY = Symbol.for('simple-web-component:property');\n\n// ============================================\n// Utilities\n// ============================================\n\n/**\n * Resolve target elements based on selector and options\n * Handles special selectors ($this, $host, etc.) and CSS selectors\n * Returns HTMLElement[] but can include Window and Document for property access\n */\nexport const resolvePropertyTargets = (inst: any, selector: string, options: PropertyOptions): any[] => {\n const conf = getElementConfig(inst);\n const currentWin = conf.window;\n const r = options.root || 'auto';\n const results: any[] = [];\n\n const applyRoot = (target: any) => {\n if (!target) return;\n if (r === 'auto') {\n results.push(target);\n } else {\n if (r === 'light' || r === 'all') results.push(target);\n if ((r === 'shadow' || r === 'all') && target.shadowRoot) results.push(target.shadowRoot);\n }\n };\n\n if (selector === '$this' || !selector) {\n applyRoot(inst);\n } else if (selector === '$window') {\n results.push(currentWin);\n } else if (selector === '$document') {\n results.push(currentWin.document);\n } else {\n const hostSet = SwcUtils.getHostSet(inst);\n if (selector === '$host') applyRoot(hostSet.$host);\n else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === '$appHost') applyRoot(hostSet.$appHost as any);\n else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost as any);\n else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost as any);\n else if (selector === '$hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);\n else {\n if (r === 'shadow') {\n const found = inst.shadowRoot?.querySelectorAll(selector);\n if (found) results.push(...found);\n } else if (r === 'light') {\n const found = inst.querySelectorAll(selector);\n if (found) results.push(...found);\n } else if (r === 'all') {\n const sMatch = inst.shadowRoot?.querySelectorAll(selector);\n const lMatch = inst.querySelectorAll(selector);\n if (sMatch) results.push(...sMatch);\n if (lMatch) results.push(...lMatch);\n } else {\n const found = (inst.shadowRoot || inst).querySelectorAll(selector);\n if (found) results.push(...found);\n }\n }\n }\n return results;\n};\n\n/**\n * @applyProperty decorator - set/get element properties\n * \n * Usage:\n * - @applyProperty('selector', 'propertyName') - Set property with explicit name\n * - @applyProperty('selector') - Use property name as target property name\n * - @applyProperty('selector', { name: 'propertyName' }) - Set property via options\n * - Return null/undefined to skip setting\n */\nexport function applyProperty(selector: string, targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function applyProperty(selector: string, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function applyProperty(selector: string, targetPropertyKeyOrOptions?: string | symbol | PropertyOptions, options?: PropertyOptions): MethodDecorator & PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n // ensureInit(target as any);\n \n const constructor = target.constructor;\n const metaType: 'property' | 'method' = descriptor && typeof descriptor.value === 'function' ? 'method' : 'property';\n \n // Parse arguments\n let finalOptions: PropertyOptions = {};\n let targetPropertyKey: string | symbol;\n \n if (typeof targetPropertyKeyOrOptions === 'string' || typeof targetPropertyKeyOrOptions === 'symbol') {\n // applyProperty('selector', 'propertyName', options?)\n targetPropertyKey = targetPropertyKeyOrOptions;\n finalOptions = options || {};\n } else if (targetPropertyKeyOrOptions) {\n // applyProperty('selector', options)\n finalOptions = targetPropertyKeyOrOptions;\n targetPropertyKey = finalOptions.name || propertyKey;\n } else {\n // applyProperty('selector')\n targetPropertyKey = propertyKey;\n }\n\n // Store metadata\n let metaList = ReflectUtils.getOwnMetadata(PROPERTY_METADATA_KEY, constructor) as PropertyMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(PROPERTY_METADATA_KEY, metaList, constructor);\n }\n metaList.push({\n propertyKey,\n selector,\n targetPropertyKey,\n options: finalOptions,\n type: metaType\n });\n\n // Helper: apply resolved value to targets\n const applyValueToTargets = (inst: any, resolvedValue: any) => {\n if (resolvedValue === undefined) return resolvedValue;\n\n const targetEls = resolvePropertyTargets(inst, selector, finalOptions);\n const conf = getElementConfig(inst);\n const currentWin = conf.window;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, inst);\n\n targetEls.forEach(targetEl => {\n // Apply filter if provided\n if (finalOptions.filter && !finalOptions.filter(targetEl, resolvedValue, { currentThis: inst, helper: hostSet })) {\n return;\n }\n\n const resolvedRes = typeof resolvedValue === 'function' ? (resolvedValue as any)(targetEl, hostSet) : resolvedValue;\n (targetEl as any)[targetPropertyKey] = resolvedRes;\n });\n\n return resolvedValue;\n };\n\n // Method decorator: wrap method to apply its return value to properties\n if (descriptor && typeof descriptor.value === 'function') {\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n const res = (original as any).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 symbol key,\n * use that value. Otherwise use the entire return value.\n * \n * Example:\n * @setProperty('selector')\n * myMethod() {\n * return {\n * [PROPERTY_METADATA_KEY]: 'property-value',\n * [OTHER_DECORATOR_KEY]: 'other-value'\n * };\n * }\n * \n * This decorator will use 'property-value'\n */\n const extractValue = (v: any) => {\n if (v && typeof v === 'object' && PROPERTY_METADATA_KEY in v) {\n return v[PROPERTY_METADATA_KEY];\n }\n return v;\n };\n\n if (res instanceof Promise) {\n return res.then((v: any) => { \n const extracted = extractValue(v);\n applyValueToTargets(this, extracted); \n return v; \n });\n } else {\n const extracted = extractValue(res);\n applyValueToTargets(this, extracted);\n return res;\n }\n };\n return;\n }\n\n // Property decorator: define getter/setter to proxy to element properties\n Object.defineProperty(target, propertyKey, {\n configurable: true,\n enumerable: true,\n get(this: any) {\n ensureInit(this);\n // Read from matched elements\n const targetEls = resolvePropertyTargets(this, selector, finalOptions);\n const conf = getElementConfig(this);\n const currentWin = conf.window;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, this);\n\n // Apply filter\n const filtered = targetEls.filter(el => {\n if (finalOptions.filter && !finalOptions.filter(el, (el as any)[targetPropertyKey], { currentThis: this, helper: hostSet })) {\n return false;\n }\n return true;\n });\n\n const values = filtered.map(el => (el as any)[targetPropertyKey]);\n return values.length === 1 ? values[0] : values;\n },\n set(this: any, value: any) {\n ensureInit(this);\n applyValueToTargets(this, value);\n }\n });\n };\n}\n\n// ============================================\n// Convenience Aliases\n// ============================================\n\n/**\n * @property - Alias for @applyProperty\n */\nexport function property(selector: string, targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function property(selector: string, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function property(selector: string, targetPropertyKeyOrOptions?: string | symbol | PropertyOptions, options?: PropertyOptions): MethodDecorator & PropertyDecorator {\n return applyProperty(selector, targetPropertyKeyOrOptions as any, options);\n}\n\n/**\n * @propertyThis - Apply property on $this element\n * Can be used as: @propertyThis or @propertyThis('propertyName') or @propertyThis({ name: 'propertyName' })\n */\nexport function propertyThis(target: Object, propertyKey: string | symbol): void;\nexport function propertyThis(targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function propertyThis(options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function propertyThis(targetOrOptions?: any, propertyKeyOrOptions?: any, descriptor?: PropertyDescriptor): any {\n // Direct decorator usage: @propertyThis\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null && !Array.isArray(targetOrOptions) && \n (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol')) {\n // Called as @propertyThis (target, propertyKey)\n return applyProperty('$this', undefined as any, {})(targetOrOptions, propertyKeyOrOptions, descriptor);\n }\n \n // Called with parameters\n if (typeof targetOrOptions === 'string' || typeof targetOrOptions === 'symbol') {\n // @propertyThis('propertyName', options?)\n return applyProperty('$this', targetOrOptions, propertyKeyOrOptions);\n } else if (targetOrOptions && typeof targetOrOptions === 'object') {\n // @propertyThis({ name: 'propertyName' })\n return applyProperty('$this', undefined as any, targetOrOptions);\n } else {\n // @propertyThis() or @propertyThis\n return applyProperty('$this', undefined as any, {});\n }\n}\n\n/**\n * @setProperty - Alias for @applyProperty (method-decorator semantics)\n */\nexport function setProperty(selector: string, targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator;\nexport function setProperty(selector: string, options?: PropertyOptions): MethodDecorator;\nexport function setProperty(selector: string, targetPropertyKeyOrOptions?: string | symbol | PropertyOptions, options?: PropertyOptions): MethodDecorator {\n return applyProperty(selector, targetPropertyKeyOrOptions as any, options) as MethodDecorator;\n}\n\n/**\n * @setPropertyThis - Set property on $this element\n * Can be used as: @setPropertyThis or @setPropertyThis('propertyName') or @setPropertyThis({ name: 'propertyName' })\n */\nexport function setPropertyThis(target: Object, propertyKey: string | symbol): void;\nexport function setPropertyThis(targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator;\nexport function setPropertyThis(options?: PropertyOptions): MethodDecorator;\nexport function setPropertyThis(targetOrOptions?: any, propertyKeyOrOptions?: any, descriptor?: PropertyDescriptor): any {\n // Direct decorator usage: @setPropertyThis\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null && !Array.isArray(targetOrOptions) && \n (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol')) {\n // Called as @setPropertyThis (target, propertyKey)\n return applyProperty('$this', undefined as any, {})(targetOrOptions, propertyKeyOrOptions, descriptor);\n }\n \n // Called with parameters\n if (typeof targetOrOptions === 'string' || typeof targetOrOptions === 'symbol') {\n // @setPropertyThis('propertyName', options?)\n return applyProperty('$this', targetOrOptions, propertyKeyOrOptions) as MethodDecorator;\n } else if (targetOrOptions && typeof targetOrOptions === 'object') {\n // @setPropertyThis({ name: 'propertyName' })\n return applyProperty('$this', undefined as any, targetOrOptions) as MethodDecorator;\n } else {\n // @setPropertyThis() or @setPropertyThis\n return applyProperty('$this', undefined as any, {}) as MethodDecorator;\n }\n}\n\n\n\n// ============================================\n// Metadata Helpers\n// ============================================\n\nexport const findAllPropertyMetadata = (target: any): PropertyMetadata[] => {\n const actualTarget = target instanceof Function ? target : target.constructor;\n return ReflectUtils.findAllMetadata<PropertyMetadata[]>(PROPERTY_METADATA_KEY, actualTarget).flat();\n};\n\n// Backward compatibility alias\nexport const findAllPropertyApplyMetadata = (target: any): Map<string | symbol, PropertyMetadata> => {\n const result = new Map<string | symbol, PropertyMetadata>();\n findAllPropertyMetadata(target).forEach(meta => {\n result.set(meta.propertyKey, meta);\n });\n return result;\n};\n\n\nexport default applyProperty;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions, HelperHostSet } from '../types';\n\nexport interface PropertyOptions extends SwcQueryOptions {\n name?: string | symbol;\n filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;\n /**\n * Custom key to extract value from return object.\n * If not provided, uses PROPERTY_METADATA_KEY by default.\n * Useful when multiple @setProperty decorators are on the same method.\n * \n * Example:\n * @setProperty('selector1', { valueKey: 'prop1' })\n * @setProperty('selector2', { valueKey: 'prop2' })\n * myMethod() {\n * return {\n * prop1: 'value1',\n * prop2: 'value2'\n * };\n * }\n * \n * Or with symbols:\n * @setProperty('selector1', { valueKey: Symbol.for('prop1') })\n * @setProperty('selector2', { valueKey: Symbol.for('prop2') })\n * myMethod() {\n * return {\n * [Symbol.for('prop1')]: 'value1',\n * [Symbol.for('prop2')]: 'value2'\n * };\n * }\n */\n valueKey?: symbol | string;\n}\n\nexport type PropertySelector = string | ((currentThis: any, helper: HelperHostSet) => NodeList | Element | Element[] | null);\n\nexport interface PropertyMetadata {\n propertyKey: string | symbol;\n selector: PropertySelector;\n targetPropertyKey: string | symbol;\n options: PropertyOptions;\n type: 'property' | 'method';\n}\n\nexport const PROPERTY_METADATA_KEY = Symbol.for('simple-web-component:property');\n\n// ============================================\n// Utilities\n// ============================================\n\n/**\n * Resolve target elements based on selector and options\n * Handles special selectors ($this, $host, etc.), CSS selectors, and function-based selectors\n * Returns HTMLElement[] but can include Window and Document for property access\n */\nexport const resolvePropertyTargets = (inst: any, selector: PropertySelector, options: PropertyOptions): any[] => {\n const conf = getElementConfig(inst);\n const currentWin = conf.window;\n const r = options.root || 'auto';\n const results: any[] = [];\n\n // Resolve selector if it's a function\n let resolvedSelector: string | Element | NodeList | Element[] | null = selector as any;\n if (typeof selector === 'function') {\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, inst);\n resolvedSelector = selector(inst, hostSet);\n }\n\n // If selector function returned elements directly, use them\n if (resolvedSelector instanceof currentWin.Element) {\n results.push(resolvedSelector);\n return results;\n }\n if (resolvedSelector instanceof currentWin.NodeList) {\n results.push(...Array.from(resolvedSelector));\n return results;\n }\n if (Array.isArray(resolvedSelector)) {\n results.push(...resolvedSelector);\n return results;\n }\n if (resolvedSelector === null) {\n return results;\n }\n\n // Handle string selector\n const stringSelector = resolvedSelector as string;\n\n const applyRoot = (target: any) => {\n if (!target) return;\n if (r === 'auto') {\n results.push(target);\n } else {\n if (r === 'light' || r === 'all') results.push(target);\n if ((r === 'shadow' || r === 'all') && target.shadowRoot) results.push(target.shadowRoot);\n }\n };\n\n if (stringSelector === '$this' || !stringSelector) {\n applyRoot(inst);\n } else if (stringSelector === '$window') {\n results.push(currentWin);\n } else if (stringSelector === '$document') {\n results.push(currentWin.document);\n } else {\n const hostSet = SwcUtils.getHostSet(inst);\n if (stringSelector === '$host') applyRoot(hostSet.$host);\n else if (stringSelector === '$parentHost') applyRoot(hostSet.$parentHost);\n else if (stringSelector === '$appHost') applyRoot(hostSet.$appHost as any);\n else if (stringSelector === '$firstHost') applyRoot(hostSet.$firstHost);\n else if (stringSelector === '$lastHost') applyRoot(hostSet.$lastHost);\n else if (stringSelector === '$firstAppHost') applyRoot(hostSet.$firstAppHost as any);\n else if (stringSelector === '$lastAppHost') applyRoot(hostSet.$lastAppHost as any);\n else if (stringSelector === '$hosts') hostSet.$hosts.forEach(applyRoot);\n else if (stringSelector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);\n else {\n if (r === 'shadow') {\n const found = inst.shadowRoot?.querySelectorAll(stringSelector);\n if (found) results.push(...found);\n } else if (r === 'light') {\n const found = inst.querySelectorAll(stringSelector);\n if (found) results.push(...found);\n } else if (r === 'all') {\n const sMatch = inst.shadowRoot?.querySelectorAll(stringSelector);\n const lMatch = inst.querySelectorAll(stringSelector);\n if (sMatch) results.push(...sMatch);\n if (lMatch) results.push(...lMatch);\n } else {\n const found = (inst.shadowRoot || inst).querySelectorAll(stringSelector);\n if (found) results.push(...found);\n }\n }\n }\n return results;\n};\n\n/**\n * @applyProperty decorator - set/get element properties\n * \n * Usage:\n * - @applyProperty('selector', 'propertyName') - Set property with explicit name\n * - @applyProperty('selector') - Use property name as target property name\n * - @applyProperty('selector', { name: 'propertyName' }) - Set property via options\n * - @applyProperty((this, helper) => 'selector', 'propertyName') - Function-based selector\n * - Return null/undefined to skip setting\n */\nexport function applyProperty(selector: PropertySelector, targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function applyProperty(selector: PropertySelector, options?: PropertyOptions): MethodDecorator & PropertyDecorator;\nexport function applyProperty(selector: PropertySelector, targetPropertyKeyOrOptions?: string | symbol | PropertyOptions, options?: PropertyOptions): MethodDecorator & PropertyDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n // ensureInit(target as any);\n \n const constructor = target.constructor;\n const metaType: 'property' | 'method' = descriptor && typeof descriptor.value === 'function' ? 'method' : 'property';\n \n // Parse arguments\n let finalOptions: PropertyOptions = {};\n let targetPropertyKey: string | symbol;\n \n if (typeof targetPropertyKeyOrOptions === 'string' || typeof targetPropertyKeyOrOptions === 'symbol') {\n // applyProperty('selector', 'propertyName', options?)\n targetPropertyKey = targetPropertyKeyOrOptions;\n finalOptions = options || {};\n } else if (targetPropertyKeyOrOptions) {\n // applyProperty('selector', options)\n finalOptions = targetPropertyKeyOrOptions;\n targetPropertyKey = finalOptions.name || propertyKey;\n } else {\n // applyProperty('selector')\n targetPropertyKey = propertyKey;\n }\n\n // Store metadata\n let metaList = ReflectUtils.getOwnMetadata(PROPERTY_METADATA_KEY, constructor) as PropertyMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(PROPERTY_METADATA_KEY, metaList, constructor);\n }\n metaList.push({\n propertyKey,\n selector: selector as PropertySelector,\n targetPropertyKey,\n options: finalOptions,\n type: metaType\n });\n\n // Helper: apply resolved value to targets\n const applyValueToTargets = (inst: any, resolvedValue: any) => {\n if (resolvedValue === undefined) return resolvedValue;\n\n const targetEls = resolvePropertyTargets(inst, selector, finalOptions);\n const conf = getElementConfig(inst);\n const currentWin = conf.window;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, inst);\n\n targetEls.forEach(targetEl => {\n // Apply filter if provided\n if (finalOptions.filter && !finalOptions.filter(targetEl, resolvedValue, { currentThis: inst, helper: hostSet })) {\n return;\n }\n\n const resolvedRes = typeof resolvedValue === 'function' ? (resolvedValue as any)(targetEl, hostSet) : resolvedValue;\n (targetEl as any)[targetPropertyKey] = resolvedRes;\n });\n\n return resolvedValue;\n };\n\n // Method decorator: wrap method to apply its return value to properties\n if (descriptor && typeof descriptor.value === 'function') {\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n const res = (original as any).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 symbol key,\n * use that value. Otherwise use the entire return value.\n * \n * Example:\n * @setProperty('selector')\n * myMethod() {\n * return {\n * [PROPERTY_METADATA_KEY]: 'property-value',\n * [OTHER_DECORATOR_KEY]: 'other-value'\n * };\n * }\n * \n * This decorator will use 'property-value'\n */\n const extractValue = (v: any) => {\n if (v && typeof v === 'object' && PROPERTY_METADATA_KEY in v) {\n return v[PROPERTY_METADATA_KEY];\n }\n return v;\n };\n\n if (res instanceof Promise) {\n return res.then((v: any) => { \n const extracted = extractValue(v);\n applyValueToTargets(this, extracted); \n return v; \n });\n } else {\n const extracted = extractValue(res);\n applyValueToTargets(this, extracted);\n return res;\n }\n };\n return;\n }\n\n // Property decorator: define getter/setter to proxy to element properties\n Object.defineProperty(target, propertyKey, {\n configurable: true,\n enumerable: true,\n get(this: any) {\n ensureInit(this);\n // Read from matched elements\n const targetEls = resolvePropertyTargets(this, selector, finalOptions);\n const conf = getElementConfig(this);\n const currentWin = conf.window;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, this);\n\n // Apply filter\n const filtered = targetEls.filter(el => {\n if (finalOptions.filter && !finalOptions.filter(el, (el as any)[targetPropertyKey], { currentThis: this, helper: hostSet })) {\n return false;\n }\n return true;\n });\n\n const values = filtered.map(el => (el as any)[targetPropertyKey]);\n return values.length === 1 ? values[0] : values;\n },\n set(this: any, value: any) {\n ensureInit(this);\n applyValueToTargets(this, value);\n }\n });\n };\n}\n\n// ============================================\n// Convenience Aliases\n// ============================================\n\n/**\n * @property - Field decorator for binding element properties (read/write)\n * \n * Usage:\n * - @property('selector', 'propertyName') - Bind to specific property\n * - @property('selector') - Use field name as property name\n * - @property('selector', options) - Bind with options\n * - @property((this, helper) => 'selector', 'propertyName') - Function-based selector\n * - @property - Bare decorator (binds to $this with field name)\n * \n * Note: This decorator is for FIELDS ONLY. For methods, use @setProperty.\n */\nexport function property(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function property(selector: PropertySelector, targetPropertyKey: string | symbol, options?: PropertyOptions): PropertyDecorator;\nexport function property(selector: PropertySelector, options?: PropertyOptions): PropertyDecorator;\nexport function property(selectorOrTarget?: PropertySelector | Object, targetPropertyKeyOrOptions?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @property\n if (optionsOrDescriptor !== undefined && (typeof targetPropertyKeyOrOptions === 'string' || typeof targetPropertyKeyOrOptions === 'symbol')) {\n return applyProperty('$this', undefined as any, {})(selectorOrTarget as Object, targetPropertyKeyOrOptions, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string') {\n return applyProperty(selectorOrTarget, targetPropertyKeyOrOptions as any, optionsOrDescriptor as PropertyOptions);\n }\n // Without selector (defaults to $this)\n return applyProperty('$this', undefined as any, selectorOrTarget as PropertyOptions);\n}\n\n/**\n * @setProperty - Method decorator for setting element properties from method return value\n * \n * Usage:\n * - @setProperty('selector', 'propertyName') - Set specific property\n * - @setProperty('selector') - Use method name as property name\n * - @setProperty('selector', options) - Set with options\n * - @setProperty((this, helper) => 'selector', 'propertyName') - Function-based selector\n * - @setProperty - Bare decorator (sets on $this with method name)\n * \n * Note: This decorator is for METHODS ONLY. For fields, use @property.\n * \n * Example:\n * @setProperty('selector', 'disabled')\n * disableElement() {\n * return true;\n * }\n */\nexport function setProperty(selector: PropertySelector, targetPropertyKey: string | symbol, options?: PropertyOptions): MethodDecorator;\nexport function setProperty(selector: PropertySelector, options?: PropertyOptions): MethodDecorator;\nexport function setProperty(selectorOrOptions?: PropertySelector | PropertyOptions, targetPropertyKeyOrOptions?: any, optionsOrUndefined?: PropertyOptions): MethodDecorator {\n // With selector\n if (typeof selectorOrOptions === 'string') {\n return applyProperty(selectorOrOptions, targetPropertyKeyOrOptions as any, optionsOrUndefined as PropertyOptions) as MethodDecorator;\n }\n // Without selector (defaults to $this)\n return applyProperty('$this', undefined as any, selectorOrOptions as PropertyOptions) as MethodDecorator;\n}\n\n// ============================================\n// Metadata Helpers\n// ============================================\n\nexport const findAllPropertyMetadata = (target: any): PropertyMetadata[] => {\n const actualTarget = target instanceof Function ? target : target.constructor;\n return ReflectUtils.findAllMetadata<PropertyMetadata[]>(PROPERTY_METADATA_KEY, actualTarget).flat();\n};\n\n// Backward compatibility alias\nexport const findAllPropertyApplyMetadata = (target: any): Map<string | symbol, PropertyMetadata> => {\n const result = new Map<string | symbol, PropertyMetadata>();\n findAllPropertyMetadata(target).forEach(meta => {\n result.set(meta.propertyKey, meta);\n });\n return result;\n};\n\n\nexport default applyProperty;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -19,20 +19,68 @@ var applyStyle_exports = {};
19
19
  __export(applyStyle_exports, {
20
20
  STYLE_METADATA_KEY: () => STYLE_METADATA_KEY,
21
21
  applyStyle: () => applyStyle,
22
- applyStyleThis: () => applyStyleThis,
23
22
  findAllStyleMetadata: () => findAllStyleMetadata,
24
23
  removeStyle: () => removeStyle,
25
- removeStyleThis: () => removeStyleThis,
26
24
  setStyle: () => setStyle,
27
- setStyleThis: () => setStyleThis,
28
- updateStyle: () => updateStyle,
29
- updateStyleThis: () => updateStyleThis
25
+ updateStyle: () => updateStyle
30
26
  });
31
27
  module.exports = __toCommonJS(applyStyle_exports);
32
28
  var import_core = require("@dooboostore/core");
33
29
  var import_elementDefine = require("./elementDefine");
34
30
  var import_Utils = require("../utils/Utils");
35
31
  const STYLE_METADATA_KEY = Symbol.for("simple-web-component:style");
32
+ const resolveSelector = (selector, inst, win) => {
33
+ if (typeof selector === "function") {
34
+ const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(win, inst);
35
+ const result = selector(inst, hostSet);
36
+ if (result instanceof win.Element) {
37
+ return [result];
38
+ }
39
+ if (result instanceof win.NodeList) {
40
+ return Array.from(result);
41
+ }
42
+ if (Array.isArray(result)) {
43
+ return result;
44
+ }
45
+ if (result === null) {
46
+ return [];
47
+ }
48
+ return result;
49
+ }
50
+ return selector;
51
+ };
52
+ const getTargetElements = (selector, inst, win, root) => {
53
+ const resolved = resolveSelector(selector, inst, win);
54
+ if (Array.isArray(resolved)) {
55
+ return resolved;
56
+ }
57
+ const stringSelector = resolved;
58
+ const targetEls = [];
59
+ const host = inst;
60
+ const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(win, inst);
61
+ const applyRoot = (t) => {
62
+ if (!t || !(t instanceof win.HTMLElement)) return;
63
+ targetEls.push(t);
64
+ };
65
+ if (stringSelector === "$this" || !stringSelector) applyRoot(host);
66
+ else if (stringSelector === "$host") applyRoot(hostSet.$host);
67
+ else if (stringSelector === "$parentHost") applyRoot(hostSet.$parentHost);
68
+ else if (stringSelector === "$appHost") applyRoot(hostSet.$appHost);
69
+ else if (stringSelector === "$firstHost") applyRoot(hostSet.$firstHost);
70
+ else if (stringSelector === "$lastHost") applyRoot(hostSet.$lastHost);
71
+ else if (stringSelector === "$firstAppHost") applyRoot(hostSet.$firstAppHost);
72
+ else if (stringSelector === "$lastAppHost") applyRoot(hostSet.$lastAppHost);
73
+ else if (stringSelector === "$hosts") hostSet.$hosts.forEach(applyRoot);
74
+ else if (stringSelector === "$appHosts") hostSet.$appHosts.forEach(applyRoot);
75
+ else {
76
+ const targetRoot = root === "auto" ? host.shadowRoot || host : root === "shadow" ? host.shadowRoot : host;
77
+ if (targetRoot) {
78
+ const found = targetRoot.querySelectorAll(stringSelector);
79
+ if (found) targetEls.push(...Array.from(found));
80
+ }
81
+ }
82
+ return targetEls;
83
+ };
36
84
  function createStyleDecorator(action) {
37
85
  return (selector, options = {}) => {
38
86
  return (target, propertyKey, descriptor) => {
@@ -60,28 +108,7 @@ function createStyleDecorator(action) {
60
108
  const host = this;
61
109
  const hostSet = { ...import_Utils.SwcUtils.getHelperAndHostSet(win, host), $this: this };
62
110
  const r = options.root || "auto";
63
- const targetEls = [];
64
- const applyRoot = (t) => {
65
- if (!t || !(t instanceof win.HTMLElement)) return;
66
- targetEls.push(t);
67
- };
68
- if (selector === "$this" || !selector) applyRoot(host);
69
- else if (selector === "$host") applyRoot(hostSet.$host);
70
- else if (selector === "$parentHost") applyRoot(hostSet.$parentHost);
71
- else if (selector === "$appHost") applyRoot(hostSet.$appHost);
72
- else if (selector === "$firstHost") applyRoot(hostSet.$firstHost);
73
- else if (selector === "$lastHost") applyRoot(hostSet.$lastHost);
74
- else if (selector === "$firstAppHost") applyRoot(hostSet.$firstAppHost);
75
- else if (selector === "$lastAppHost") applyRoot(hostSet.$lastAppHost);
76
- else if (selector === "$hosts") hostSet.$hosts.forEach(applyRoot);
77
- else if (selector === "$appHosts") hostSet.$appHosts.forEach(applyRoot);
78
- else {
79
- const targetRoot = r === "auto" ? host.shadowRoot || host : r === "shadow" ? host.shadowRoot : host;
80
- if (targetRoot) {
81
- const found = targetRoot.querySelectorAll(selector);
82
- if (found) targetEls.push(...Array.from(found));
83
- }
84
- }
111
+ const targetEls = getTargetElements(selector, this, win, r);
85
112
  targetEls.forEach((targetEl) => {
86
113
  if (options.filter && !options.filter(targetEl, resolvedValue, { currentThis: this, helper: hostSet })) {
87
114
  return;
@@ -128,18 +155,46 @@ function createStyleDecorator(action) {
128
155
  };
129
156
  };
130
157
  }
131
- function applyStyle(selector, action = "update", options = {}) {
132
- return createStyleDecorator(action)(selector, options);
133
- }
134
- const setStyle = (selector, options = {}) => createStyleDecorator("set")(selector, options);
135
- const updateStyle = (selector, options = {}) => createStyleDecorator("update")(selector, options);
136
- const removeStyle = (selector, options = {}) => createStyleDecorator("remove")(selector, options);
137
- function applyStyleThis(action = "update", options = {}) {
158
+ function applyStyle(selectorOrTarget, actionOrPropertyKey, optionsOrDescriptor) {
159
+ if (optionsOrDescriptor !== void 0 && (typeof actionOrPropertyKey === "string" || typeof actionOrPropertyKey === "symbol")) {
160
+ return createStyleDecorator("update")("$this", {})(selectorOrTarget, actionOrPropertyKey, optionsOrDescriptor);
161
+ }
162
+ if (typeof selectorOrTarget === "string") {
163
+ const action2 = typeof actionOrPropertyKey === "string" ? actionOrPropertyKey : "update";
164
+ const options2 = typeof actionOrPropertyKey === "object" ? actionOrPropertyKey : optionsOrDescriptor;
165
+ return createStyleDecorator(action2)(selectorOrTarget, options2);
166
+ }
167
+ const action = typeof selectorOrTarget === "string" ? selectorOrTarget : "update";
168
+ const options = typeof selectorOrTarget === "object" ? selectorOrTarget : actionOrPropertyKey;
138
169
  return createStyleDecorator(action)("$this", options);
139
170
  }
140
- const setStyleThis = (options = {}) => createStyleDecorator("set")("$this", options);
141
- const updateStyleThis = (options = {}) => createStyleDecorator("update")("$this", options);
142
- const removeStyleThis = (options = {}) => createStyleDecorator("remove")("$this", options);
171
+ function setStyle(selectorOrTarget, optionsOrPropertyKey, descriptor) {
172
+ if (descriptor !== void 0 && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
173
+ return createStyleDecorator("set")("$this", {})(selectorOrTarget, optionsOrPropertyKey, descriptor);
174
+ }
175
+ if (typeof selectorOrTarget === "string") {
176
+ return createStyleDecorator("set")(selectorOrTarget, optionsOrPropertyKey);
177
+ }
178
+ return createStyleDecorator("set")("$this", selectorOrTarget);
179
+ }
180
+ function updateStyle(selectorOrTarget, optionsOrPropertyKey, descriptor) {
181
+ if (descriptor !== void 0 && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
182
+ return createStyleDecorator("update")("$this", {})(selectorOrTarget, optionsOrPropertyKey, descriptor);
183
+ }
184
+ if (typeof selectorOrTarget === "string") {
185
+ return createStyleDecorator("update")(selectorOrTarget, optionsOrPropertyKey);
186
+ }
187
+ return createStyleDecorator("update")("$this", selectorOrTarget);
188
+ }
189
+ function removeStyle(selectorOrTarget, optionsOrPropertyKey, descriptor) {
190
+ if (descriptor !== void 0 && (typeof optionsOrPropertyKey === "string" || typeof optionsOrPropertyKey === "symbol")) {
191
+ return createStyleDecorator("remove")("$this", {})(selectorOrTarget, optionsOrPropertyKey, descriptor);
192
+ }
193
+ if (typeof selectorOrTarget === "string") {
194
+ return createStyleDecorator("remove")(selectorOrTarget, optionsOrPropertyKey);
195
+ }
196
+ return createStyleDecorator("remove")("$this", selectorOrTarget);
197
+ }
143
198
  const findAllStyleMetadata = (target) => {
144
199
  const result = /* @__PURE__ */ new Map();
145
200
  const maps = import_core.ReflectUtils.findAllMetadata(STYLE_METADATA_KEY, target);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/applyStyle.ts"],
4
- "sourcesContent": ["import {ReflectUtils} from '@dooboostore/core';\nimport {ensureInit} from './elementDefine';\nimport {SwcUtils} from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions, HelperHostSet } from '../types';\n\nexport type StyleAction = 'set' | 'update' | 'remove';\n\nexport interface StyleApplyOptions extends SwcQueryOptions {\n filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;\n /**\n * Custom key to extract value from return object.\n * If not provided, uses STYLE_METADATA_KEY by default.\n * Useful when multiple @applyStyle decorators are on the same method.\n */\n valueKey?: symbol | string;\n}\n\nexport interface StyleApplyMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: StyleAction;\n options: StyleApplyOptions;\n}\n\nexport const STYLE_METADATA_KEY = Symbol.for('simple-web-component:style');\n\nfunction createStyleDecorator(action: StyleAction) {\n return (selector: string, options: StyleApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(STYLE_METADATA_KEY, constructor) as Map<string | symbol, StyleApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, StyleApplyMetadata>();\n ReflectUtils.defineMetadata(STYLE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, action, options });\n\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n const res = (original as any).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 STYLE_METADATA_KEY.\n */\n const extractValue = (v: any) => {\n const keyToUse = options.valueKey ?? STYLE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\n }\n return v;\n };\n\n const handleResult = (resolvedValue: any) => {\n if (resolvedValue !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = options.root || 'auto';\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (selector === '$this' || !selector) applyRoot(host);\n else if (selector === '$host') applyRoot(hostSet.$host);\n else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === '$appHost') applyRoot(hostSet.$appHost);\n else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === '$hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);\n else {\n const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n if (options.filter && !options.filter(targetEl, resolvedValue, {currentThis: this, helper: hostSet})) {\n return;\n }\n const resolvedRes = typeof resolvedValue === 'function' ? (resolvedValue as any)(targetEl, hostSet) : resolvedValue;\n\n if (action === 'set' || action === 'update') {\n if (action === 'set') targetEl.style.cssText = '';\n \n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n if (finalVal === null || finalVal === undefined) {\n targetEl.style.removeProperty(prop);\n } else {\n targetEl.style[prop as any] = String(finalVal);\n }\n });\n } else if (typeof resolvedRes === 'string') {\n targetEl.style.cssText = resolvedRes;\n }\n } else if (action === 'remove') {\n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const shouldRemove = typeof val === 'function' ? val(targetEl, hostSet) : !!val;\n if (shouldRemove) {\n targetEl.style.removeProperty(prop);\n }\n });\n } else {\n const props = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];\n props.forEach(p => targetEl.style.removeProperty(String(p)));\n }\n }\n });\n }\n return resolvedValue;\n };\n\n if (res instanceof Promise) {\n return res.then((v: any) => handleResult(extractValue(v)));\n } else {\n return handleResult(extractValue(res));\n }\n };\n return descriptor;\n };\n };\n}\n\nexport function applyStyle(selector: string, action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {\n return createStyleDecorator(action)(selector, options);\n}\n\nexport const setStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('set')(selector, options);\nexport const updateStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('update')(selector, options);\nexport const removeStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('remove')(selector, options);\n\n// This versions\nexport function applyStyleThis(action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {\n return createStyleDecorator(action)('$this', options);\n}\nexport const setStyleThis = (options: StyleApplyOptions = {}) => createStyleDecorator('set')('$this', options);\nexport const updateStyleThis = (options: StyleApplyOptions = {}) => createStyleDecorator('update')('$this', options);\nexport const removeStyleThis = (options: StyleApplyOptions = {}) => createStyleDecorator('remove')('$this', options);\n\nexport const findAllStyleMetadata = (target: any): Map<string | symbol, StyleApplyMetadata> => {\n const result = new Map<string | symbol, StyleApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, StyleApplyMetadata>>(STYLE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import {ReflectUtils} from '@dooboostore/core';\nimport {ensureInit} from './elementDefine';\nimport {SwcUtils} from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions, HelperHostSet } from '../types';\n\nexport type StyleAction = 'set' | 'update' | 'remove';\n\nexport interface StyleApplyOptions extends SwcQueryOptions {\n filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;\n /**\n * Custom key to extract value from return object.\n * If not provided, uses STYLE_METADATA_KEY by default.\n * Useful when multiple @applyStyle decorators are on the same method.\n */\n valueKey?: symbol | string;\n}\n\nexport type StyleSelector = string | ((currentThis: any, helper: HelperHostSet) => NodeList | Element | Element[] | null);\n\nexport interface StyleApplyMetadata {\n propertyKey: string | symbol;\n selector: StyleSelector;\n action: StyleAction;\n options: StyleApplyOptions;\n}\n\nexport const STYLE_METADATA_KEY = Symbol.for('simple-web-component:style');\n\n/**\n * Resolve selector to string or elements\n * Handles function-based selectors and returns elements if applicable\n */\nconst resolveSelector = (selector: StyleSelector, inst: any, win: Window): string | HTMLElement[] => {\n if (typeof selector === 'function') {\n const hostSet = SwcUtils.getHelperAndHostSet(win, inst);\n const result = selector(inst, hostSet);\n \n if (result instanceof win.Element) {\n return [result as HTMLElement];\n }\n if (result instanceof win.NodeList) {\n return Array.from(result) as HTMLElement[];\n }\n if (Array.isArray(result)) {\n return result as HTMLElement[];\n }\n if (result === null) {\n return [];\n }\n return result as string;\n }\n return selector as string;\n};\n\n/**\n * Get target elements from selector\n */\nconst getTargetElements = (selector: StyleSelector, inst: any, win: Window, root: string): HTMLElement[] => {\n const resolved = resolveSelector(selector, inst, win);\n \n if (Array.isArray(resolved)) {\n return resolved;\n }\n\n const stringSelector = resolved as string;\n const targetEls: HTMLElement[] = [];\n const host = inst as unknown as HTMLElement;\n const hostSet = SwcUtils.getHelperAndHostSet(win, inst);\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof win.HTMLElement)) return;\n targetEls.push(t);\n };\n\n if (stringSelector === '$this' || !stringSelector) applyRoot(host);\n else if (stringSelector === '$host') applyRoot(hostSet.$host);\n else if (stringSelector === '$parentHost') applyRoot(hostSet.$parentHost);\n else if (stringSelector === '$appHost') applyRoot(hostSet.$appHost);\n else if (stringSelector === '$firstHost') applyRoot(hostSet.$firstHost);\n else if (stringSelector === '$lastHost') applyRoot(hostSet.$lastHost);\n else if (stringSelector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (stringSelector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (stringSelector === '$hosts') hostSet.$hosts.forEach(applyRoot);\n else if (stringSelector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);\n else {\n const targetRoot = root === 'auto' ? (host.shadowRoot || host) : (root === 'shadow' ? host.shadowRoot : host);\n if (targetRoot) {\n const found = targetRoot.querySelectorAll(stringSelector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n return targetEls;\n};\n\nfunction createStyleDecorator(action: StyleAction) {\n return (selector: StyleSelector, options: StyleApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(STYLE_METADATA_KEY, constructor) as Map<string | symbol, StyleApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, StyleApplyMetadata>();\n ReflectUtils.defineMetadata(STYLE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, action, options });\n\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n const res = (original as any).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 STYLE_METADATA_KEY.\n */\n const extractValue = (v: any) => {\n const keyToUse = options.valueKey ?? STYLE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\n }\n return v;\n };\n\n const handleResult = (resolvedValue: any) => {\n if (resolvedValue !== undefined) {\n const win = (this as any).ownerDocument?.defaultView || window;\n const host = this as unknown as HTMLElement;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };\n const r = options.root || 'auto';\n const targetEls = getTargetElements(selector, this, win, r);\n\n targetEls.forEach(targetEl => {\n if (options.filter && !options.filter(targetEl, resolvedValue, {currentThis: this, helper: hostSet})) {\n return;\n }\n const resolvedRes = typeof resolvedValue === 'function' ? (resolvedValue as any)(targetEl, hostSet) : resolvedValue;\n\n if (action === 'set' || action === 'update') {\n if (action === 'set') targetEl.style.cssText = '';\n \n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const finalVal = typeof val === 'function' ? val(targetEl, hostSet) : val;\n if (finalVal === null || finalVal === undefined) {\n targetEl.style.removeProperty(prop);\n } else {\n targetEl.style[prop as any] = String(finalVal);\n }\n });\n } else if (typeof resolvedRes === 'string') {\n targetEl.style.cssText = resolvedRes;\n }\n } else if (action === 'remove') {\n if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([prop, val]) => {\n const shouldRemove = typeof val === 'function' ? val(targetEl, hostSet) : !!val;\n if (shouldRemove) {\n targetEl.style.removeProperty(prop);\n }\n });\n } else {\n const props = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];\n props.forEach(p => targetEl.style.removeProperty(String(p)));\n }\n }\n });\n }\n return resolvedValue;\n };\n\n if (res instanceof Promise) {\n return res.then((v: any) => handleResult(extractValue(v)));\n } else {\n return handleResult(extractValue(res));\n }\n };\n return descriptor;\n };\n };\n}\n\nexport function applyStyle(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function applyStyle(selector: StyleSelector, action?: StyleAction, options?: StyleApplyOptions): MethodDecorator;\nexport function applyStyle(selectorOrTarget?: any, actionOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @applyStyle\n if (optionsOrDescriptor !== undefined && (typeof actionOrPropertyKey === 'string' || typeof actionOrPropertyKey === 'symbol')) {\n return createStyleDecorator('update')('$this', {})(selectorOrTarget as Object, actionOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string') {\n const action = (typeof actionOrPropertyKey === 'string' ? actionOrPropertyKey : 'update') as StyleAction;\n const options = (typeof actionOrPropertyKey === 'object' ? actionOrPropertyKey : optionsOrDescriptor) as StyleApplyOptions | undefined;\n return createStyleDecorator(action)(selectorOrTarget, options);\n }\n // Without selector (defaults to $this)\n const action = (typeof selectorOrTarget === 'string' ? selectorOrTarget : 'update') as StyleAction;\n const options = (typeof selectorOrTarget === 'object' ? selectorOrTarget : actionOrPropertyKey) as StyleApplyOptions | undefined;\n return createStyleDecorator(action)('$this', options);\n}\n\nexport function setStyle(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function setStyle(selector: StyleSelector, options?: StyleApplyOptions): MethodDecorator;\nexport function setStyle(selectorOrTarget?: any, optionsOrPropertyKey?: any, descriptor?: any): any {\n // Bare decorator: @setStyle\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n return createStyleDecorator('set')('$this', {})(selectorOrTarget as Object, optionsOrPropertyKey, descriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string') {\n return createStyleDecorator('set')(selectorOrTarget, optionsOrPropertyKey as StyleApplyOptions);\n }\n // Without selector (defaults to $this)\n return createStyleDecorator('set')('$this', selectorOrTarget as StyleApplyOptions);\n}\n\nexport function updateStyle(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function updateStyle(selector: StyleSelector, options?: StyleApplyOptions): MethodDecorator;\nexport function updateStyle(selectorOrTarget?: any, optionsOrPropertyKey?: any, descriptor?: any): any {\n // Bare decorator: @updateStyle\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n return createStyleDecorator('update')('$this', {})(selectorOrTarget as Object, optionsOrPropertyKey, descriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string') {\n return createStyleDecorator('update')(selectorOrTarget, optionsOrPropertyKey as StyleApplyOptions);\n }\n // Without selector (defaults to $this)\n return createStyleDecorator('update')('$this', selectorOrTarget as StyleApplyOptions);\n}\n\nexport function removeStyle(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function removeStyle(selector: StyleSelector, options?: StyleApplyOptions): MethodDecorator;\nexport function removeStyle(selectorOrTarget?: any, optionsOrPropertyKey?: any, descriptor?: any): any {\n // Bare decorator: @removeStyle\n if (descriptor !== undefined && (typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol')) {\n return createStyleDecorator('remove')('$this', {})(selectorOrTarget as Object, optionsOrPropertyKey, descriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string') {\n return createStyleDecorator('remove')(selectorOrTarget, optionsOrPropertyKey as StyleApplyOptions);\n }\n // Without selector (defaults to $this)\n return createStyleDecorator('remove')('$this', selectorOrTarget as StyleApplyOptions);\n}\n\nexport const findAllStyleMetadata = (target: any): Map<string | symbol, StyleApplyMetadata> => {\n const result = new Map<string | symbol, StyleApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, StyleApplyMetadata>>(STYLE_METADATA_KEY, target);\n maps.forEach(map => {\n if (map instanceof Map) {\n map.forEach((v, k) => result.set(k, v));\n }\n });\n return result;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["action", "options"]
7
7
  }
@@ -15,15 +15,15 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var changedAttributeThis_exports = {};
19
- __export(changedAttributeThis_exports, {
18
+ var changedAttribute_exports = {};
19
+ __export(changedAttribute_exports, {
20
20
  ON_ATTRIBUTE_CHANGED_METADATA_KEY: () => ON_ATTRIBUTE_CHANGED_METADATA_KEY,
21
- changedAttributeThis: () => changedAttributeThis,
21
+ changedAttribute: () => changedAttribute,
22
22
  convertAttributeValue: () => convertAttributeValue,
23
23
  findAllAttributeChangedMetadata: () => findAllAttributeChangedMetadata,
24
24
  getChangedAttributeMetadata: () => getChangedAttributeMetadata
25
25
  });
26
- module.exports = __toCommonJS(changedAttributeThis_exports);
26
+ module.exports = __toCommonJS(changedAttribute_exports);
27
27
  var import_core = require("@dooboostore/core");
28
28
  const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol.for("simple-web-component:on-attribute-changed");
29
29
  const convertValue = (val, type) => {
@@ -32,7 +32,7 @@ const convertValue = (val, type) => {
32
32
  if (type === Boolean) return val === "false" || val === "0" ? false : true;
33
33
  return val;
34
34
  };
35
- function changedAttributeThis(attributeName, options = {}) {
35
+ function changedAttribute(attributeName, options = {}) {
36
36
  return (target, propertyKey) => {
37
37
  const constructor = target.constructor;
38
38
  let metaList = import_core.ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
@@ -69,4 +69,4 @@ const findAllAttributeChangedMetadata = (target) => {
69
69
  const convertAttributeValue = (val, type) => {
70
70
  return convertValue(val, type);
71
71
  };
72
- //# sourceMappingURL=changedAttributeThis.js.map
72
+ //# sourceMappingURL=changedAttribute.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/decorators/changedAttribute.ts"],
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\n\nexport const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol.for('simple-web-component:on-attribute-changed');\n\nexport interface ChangedAttributeThisOptions {\n type?: typeof Number | typeof Boolean | typeof String;\n while?: 'connected';\n}\n\nexport interface ChangedAttributeThisMetadata {\n attributeName: string;\n propertyKey: string | symbol;\n options: ChangedAttributeThisOptions;\n}\n\nconst convertValue = (val: any, type: any): any => {\n if (val === null || val === undefined) return val;\n if (type === Number) return Number(val);\n if (type === Boolean) return val === 'false' || val === '0' ? false : true;\n return val;\n};\n\n/**\n * @changedAttributeThis decorator - fires when any attribute on $this changes\n */\nexport function changedAttribute(attributeName?: string, options: ChangedAttributeThisOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as ChangedAttributeThisMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, metaList, constructor);\n }\n\n const name = attributeName || String(propertyKey);\n metaList.push({\n attributeName: name,\n propertyKey,\n options\n });\n };\n}\n\nexport const getChangedAttributeMetadata = (target: any): ChangedAttributeThisMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);\n};\n\nexport const findAllAttributeChangedMetadata = (target: any): Map<string, ChangedAttributeThisMetadata[]> => {\n const constructor = target instanceof Function ? target : target.constructor;\n const metaList = ReflectUtils.findAllMetadata<ChangedAttributeThisMetadata[]>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) || [];\n\n const result = new Map<string, ChangedAttributeThisMetadata[]>();\n metaList.forEach(meta => {\n meta.forEach(item => {\n if (!result.has(item.attributeName)) {\n result.set(item.attributeName, []);\n }\n result.get(item.attributeName)!.push(item);\n });\n });\n return result;\n};\n\nexport const convertAttributeValue = (val: any, type?: typeof Number | typeof Boolean | typeof String): any => {\n return convertValue(val, type);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA6B;AAEtB,MAAM,oCAAoC,OAAO,IAAI,2CAA2C;AAavG,MAAM,eAAe,CAAC,KAAU,SAAmB;AACjD,MAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO;AAC9C,MAAI,SAAS,OAAQ,QAAO,OAAO,GAAG;AACtC,MAAI,SAAS,QAAS,QAAO,QAAQ,WAAW,QAAQ,MAAM,QAAQ;AACtE,SAAO;AACT;AAKO,SAAS,iBAAiB,eAAwB,UAAuC,CAAC,GAAoB;AACnH,SAAO,CAAC,QAAgB,gBAAiC;AACvD,UAAM,cAAc,OAAO;AAC3B,QAAI,WAAW,yBAAa,eAAe,mCAAmC,WAAW;AACzF,QAAI,CAAC,UAAU;AACb,iBAAW,CAAC;AACZ,+BAAa,eAAe,mCAAmC,UAAU,WAAW;AAAA,IACtF;AAEA,UAAM,OAAO,iBAAiB,OAAO,WAAW;AAChD,aAAS,KAAK;AAAA,MACZ,eAAe;AAAA,MACf;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,MAAM,8BAA8B,CAAC,WAA4D;AACtG,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,yBAAa,YAAY,mCAAmC,WAAW;AAChF;AAEO,MAAM,kCAAkC,CAAC,WAA6D;AAC3G,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,QAAM,WAAW,yBAAa,gBAAgD,mCAAmC,WAAW,KAAK,CAAC;AAElI,QAAM,SAAS,oBAAI,IAA4C;AAC/D,WAAS,QAAQ,UAAQ;AACvB,SAAK,QAAQ,UAAQ;AACnB,UAAI,CAAC,OAAO,IAAI,KAAK,aAAa,GAAG;AACnC,eAAO,IAAI,KAAK,eAAe,CAAC,CAAC;AAAA,MACnC;AACA,aAAO,IAAI,KAAK,aAAa,EAAG,KAAK,IAAI;AAAA,IAC3C,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;AAEO,MAAM,wBAAwB,CAAC,KAAU,SAA+D;AAC7G,SAAO,aAAa,KAAK,IAAI;AAC/B;",
6
+ "names": []
7
+ }