@dooboostore/simple-web-component 1.0.54 → 1.0.56

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 (124) hide show
  1. package/README.md +342 -56
  2. package/dist/cjs/decorators/addEventListener.js +37 -14
  3. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  4. package/dist/cjs/decorators/applyAttribute.js +6 -3
  5. package/dist/cjs/decorators/applyAttribute.js.map +2 -2
  6. package/dist/cjs/decorators/applyClass.js +18 -2
  7. package/dist/cjs/decorators/applyClass.js.map +2 -2
  8. package/dist/cjs/decorators/applyNode.js +10 -3
  9. package/dist/cjs/decorators/applyNode.js.map +2 -2
  10. package/dist/cjs/decorators/changedAttribute.js +2 -5
  11. package/dist/cjs/decorators/changedAttribute.js.map +2 -2
  12. package/dist/cjs/decorators/elementDefine.js +13 -2
  13. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  14. package/dist/cjs/decorators/eventMedia.js +2 -5
  15. package/dist/cjs/decorators/eventMedia.js.map +2 -2
  16. package/dist/cjs/decorators/fetch.js +216 -82
  17. package/dist/cjs/decorators/fetch.js.map +3 -3
  18. package/dist/cjs/decorators/index.js +1 -0
  19. package/dist/cjs/decorators/index.js.map +2 -2
  20. package/dist/cjs/decorators/intersectionObserver.js +3 -6
  21. package/dist/cjs/decorators/intersectionObserver.js.map +2 -2
  22. package/dist/cjs/decorators/mutationObserver.js +3 -6
  23. package/dist/cjs/decorators/mutationObserver.js.map +2 -2
  24. package/dist/cjs/decorators/parameter.js +197 -33
  25. package/dist/cjs/decorators/parameter.js.map +3 -3
  26. package/dist/cjs/decorators/persistState.js +474 -0
  27. package/dist/cjs/decorators/persistState.js.map +7 -0
  28. package/dist/cjs/decorators/resizeObserver.js +3 -6
  29. package/dist/cjs/decorators/resizeObserver.js.map +2 -2
  30. package/dist/cjs/decorators/setInterval.js +2 -5
  31. package/dist/cjs/decorators/setInterval.js.map +2 -2
  32. package/dist/cjs/decorators/setTimeout.js +2 -5
  33. package/dist/cjs/decorators/setTimeout.js.map +2 -2
  34. package/dist/cjs/decorators/subscribeSwcAppMessage.js.map +1 -1
  35. package/dist/cjs/elements/SwcAppMixin.js +50 -2
  36. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  37. package/dist/esm/decorators/addEventListener.js +38 -15
  38. package/dist/esm/decorators/addEventListener.js.map +2 -2
  39. package/dist/esm/decorators/applyAttribute.js +6 -3
  40. package/dist/esm/decorators/applyAttribute.js.map +2 -2
  41. package/dist/esm/decorators/applyClass.js +18 -2
  42. package/dist/esm/decorators/applyClass.js.map +2 -2
  43. package/dist/esm/decorators/applyNode.js +10 -3
  44. package/dist/esm/decorators/applyNode.js.map +2 -2
  45. package/dist/esm/decorators/changedAttribute.js +3 -6
  46. package/dist/esm/decorators/changedAttribute.js.map +2 -2
  47. package/dist/esm/decorators/elementDefine.js +15 -4
  48. package/dist/esm/decorators/elementDefine.js.map +2 -2
  49. package/dist/esm/decorators/eventMedia.js +3 -6
  50. package/dist/esm/decorators/eventMedia.js.map +2 -2
  51. package/dist/esm/decorators/fetch.js +216 -82
  52. package/dist/esm/decorators/fetch.js.map +3 -3
  53. package/dist/esm/decorators/index.js +1 -0
  54. package/dist/esm/decorators/index.js.map +2 -2
  55. package/dist/esm/decorators/intersectionObserver.js +4 -7
  56. package/dist/esm/decorators/intersectionObserver.js.map +2 -2
  57. package/dist/esm/decorators/mutationObserver.js +4 -7
  58. package/dist/esm/decorators/mutationObserver.js.map +2 -2
  59. package/dist/esm/decorators/parameter.js +197 -33
  60. package/dist/esm/decorators/parameter.js.map +3 -3
  61. package/dist/esm/decorators/persistState.js +455 -0
  62. package/dist/esm/decorators/persistState.js.map +7 -0
  63. package/dist/esm/decorators/resizeObserver.js +4 -7
  64. package/dist/esm/decorators/resizeObserver.js.map +2 -2
  65. package/dist/esm/decorators/setInterval.js +3 -6
  66. package/dist/esm/decorators/setInterval.js.map +2 -2
  67. package/dist/esm/decorators/setTimeout.js +3 -6
  68. package/dist/esm/decorators/setTimeout.js.map +2 -2
  69. package/dist/esm/decorators/subscribeSwcAppMessage.js.map +1 -1
  70. package/dist/esm/elements/SwcAppMixin.js +51 -3
  71. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  72. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +4491 -3637
  73. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  74. package/dist/types/decorators/addEventListener.d.ts +15 -0
  75. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  76. package/dist/types/decorators/applyAttribute.d.ts +1 -0
  77. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  78. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  79. package/dist/types/decorators/applyNode.d.ts +4 -2
  80. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  81. package/dist/types/decorators/changedAttribute.d.ts.map +1 -1
  82. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  83. package/dist/types/decorators/eventMedia.d.ts.map +1 -1
  84. package/dist/types/decorators/fetch.d.ts +52 -31
  85. package/dist/types/decorators/fetch.d.ts.map +1 -1
  86. package/dist/types/decorators/index.d.ts +1 -0
  87. package/dist/types/decorators/index.d.ts.map +1 -1
  88. package/dist/types/decorators/intersectionObserver.d.ts.map +1 -1
  89. package/dist/types/decorators/mutationObserver.d.ts.map +1 -1
  90. package/dist/types/decorators/parameter.d.ts +169 -31
  91. package/dist/types/decorators/parameter.d.ts.map +1 -1
  92. package/dist/types/decorators/persistState.d.ts +66 -0
  93. package/dist/types/decorators/persistState.d.ts.map +1 -0
  94. package/dist/types/decorators/resizeObserver.d.ts.map +1 -1
  95. package/dist/types/decorators/setInterval.d.ts.map +1 -1
  96. package/dist/types/decorators/setTimeout.d.ts.map +1 -1
  97. package/dist/types/decorators/subscribeSwcAppMessage.d.ts +1 -1
  98. package/dist/types/decorators/subscribeSwcAppMessage.d.ts.map +1 -1
  99. package/dist/types/elements/SwcAppMixin.d.ts +12 -0
  100. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  101. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +4491 -3637
  102. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  103. package/lsp/bin/swc-lsp.js +3 -0
  104. package/lsp/out/server/server.js +9960 -0
  105. package/lsp/package.json +56 -0
  106. package/package.json +24 -9
  107. package/src/decorators/addEventListener.ts +23 -15
  108. package/src/decorators/applyAttribute.ts +8 -3
  109. package/src/decorators/applyClass.ts +22 -2
  110. package/src/decorators/applyNode.ts +18 -6
  111. package/src/decorators/changedAttribute.ts +3 -4
  112. package/src/decorators/elementDefine.ts +19 -7
  113. package/src/decorators/eventMedia.ts +3 -6
  114. package/src/decorators/fetch.ts +270 -140
  115. package/src/decorators/index.ts +1 -0
  116. package/src/decorators/intersectionObserver.ts +4 -5
  117. package/src/decorators/mutationObserver.ts +4 -5
  118. package/src/decorators/parameter.ts +326 -42
  119. package/src/decorators/persistState.ts +408 -0
  120. package/src/decorators/resizeObserver.ts +4 -5
  121. package/src/decorators/setInterval.ts +3 -4
  122. package/src/decorators/setTimeout.ts +3 -4
  123. package/src/decorators/subscribeSwcAppMessage.ts +1 -1
  124. package/src/elements/SwcAppMixin.ts +64 -5
@@ -247,16 +247,19 @@ function removeAttribute(selector, attributeName, options) {
247
247
  const original = descriptor.value;
248
248
  descriptor.value = function(...args) {
249
249
  const res = original.apply(this, args);
250
- const doRemove = () => {
250
+ const doRemove = (v) => {
251
+ const vk = options?.valueKey;
252
+ const go = vk !== void 0 ? v && typeof v === "object" ? v[vk] : void 0 : true;
253
+ if (!go) return;
251
254
  resolveAttributeTargets(this, selector, options ?? {}).forEach((el) => el.removeAttribute(attributeName));
252
255
  };
253
256
  if (res instanceof Promise) {
254
257
  return res.then((v) => {
255
- doRemove();
258
+ doRemove(v);
256
259
  return v;
257
260
  });
258
261
  }
259
- doRemove();
262
+ doRemove(res);
260
263
  return res;
261
264
  };
262
265
  return descriptor;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/applyAttribute.ts"],
4
- "sourcesContent": ["import {ReflectUtils, FunctionUtils, ActionExpression} from '@dooboostore/core';\nimport {ensureInit, getElementConfig} from './elementDefine';\nimport {SwcUtils} from '../utils/Utils';\nimport {SwcQueryOptions, HelperHostSet, SwcFnSelector, SwcSelector} from '../types';\nimport {ConvertUtils} from '@dooboostore/core-web';\n\n// ============================================\n// Types & Interfaces\n// ============================================\n\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root \uC5C6\uC74C\nexport interface AttributeBaseOptions {\n name?: string;\n type?: typeof Number | typeof Boolean | typeof String;\n filter?: (target: HTMLElement, value: any, meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n valueKey?: symbol | string;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uD5C8\uC6A9 (\uCEF4\uD3EC\uB10C\uD2B8 DOM \uD2B8\uB9AC \uC548\uC5D0\uC11C \uD0D0\uC0C9)\nexport type AttributeQueryOptions = AttributeBaseOptions & SwcQueryOptions;\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uAE08\uC9C0 (\uC774\uBBF8 \uC694\uC18C\uB97C \uC9C1\uC811 \uBC18\uD658)\nexport type AttributeNonQueryOptions = AttributeBaseOptions;\n// \uB0B4\uBD80 \uC800\uC7A5/\uD574\uC11D\uC6A9 \u2014 root optional\uC774\uB77C \uB450 \uC885\uB958 \uBAA8\uB450 \uC800\uC7A5 \uAC00\uB2A5\nexport type AttributeOptions = AttributeQueryOptions;\n\nexport type AttributeFnSelector = SwcFnSelector;\nexport type AttributeSelector = SwcSelector;\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type AttributeOptionsOf<S extends AttributeSelector> = S extends string ? AttributeQueryOptions : AttributeNonQueryOptions;\n\nexport interface AttributeMetadata {\n propertyKey: string | symbol;\n selector: AttributeSelector;\n targetAttributeName: string;\n options: AttributeOptions;\n type: 'property' | 'method';\n}\n\nexport const ATTRIBUTE_METADATA_KEY = Symbol.for('simple-web-component:attribute');\n\n// ============================================\n// Utilities\n// ============================================\n\n\n// \uBB38\uC790\uC5F4(attribute \uC6D0\uBB38)\uC740 'false'/'0' \uB9CC false. {{= }} \uACB0\uACFC\uCC98\uB7FC \uC774\uBBF8 JS \uAC12\uC774\uBA74 \uADF8 \uAC12\uC758 \uCC38/\uAC70\uC9D3\uC744 \uB530\uB978\uB2E4\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 typeof val === 'string' ? !(val === 'false' || val === '0') : Boolean(val);\n return val;\n};\n\nexport {convertValue};\n\nexport const getAttributeValue = (inst: any, attrName: string, options?: AttributeOptions & { selector?: AttributeSelector }): any => {\n const currentWin = SwcUtils.resolveWindow(inst);\n\n // If selector is not provided, use inst itself\n const targets = options?.selector ? resolveAttributeTargets(inst, options.selector, options) : [inst];\n\n const primaryTarget = targets[0];\n\n if (primaryTarget && typeof (primaryTarget as any).hasAttribute === 'function' && (primaryTarget as any).hasAttribute(attrName)) {\n let domVal = (primaryTarget as any).getAttribute(attrName);\n\n // \uD45C\uD604\uC2DD \uCCB4\uD06C\n const ae = new ActionExpression(domVal);\n const expr = ae.getFirstExpression('callReturn');\n if (expr) {\n try {\n const result = FunctionUtils.executeReturn({\n script: ConvertUtils.decodeHtmlEntity(expr.script, currentWin.document),\n context: inst,\n args: SwcUtils.getHelperAndHostSet(inst)\n });\n return convertValue(result, options?.type);\n } catch (err) {\n console.error(`[SWC] Failed to execute directive {{= ${expr.script} }}:`, err);\n return convertValue(domVal, options?.type);\n }\n }\n\n return convertValue(domVal, options?.type);\n }\n\n // If no target found, return null\n return null;\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[] for attribute operations\n */\nexport const resolveAttributeTargets = (inst: any, selector: AttributeSelector, options: AttributeOptions): HTMLElement[] => {\n const conf = getElementConfig(inst);\n const currentWin = conf.window;\n const r = options.root || 'auto';\n const results: HTMLElement[] = [];\n\n // Resolve selector if it's a function\n let resolvedSelector: string | Node | Element | NodeList | Element[] | null = selector as any;\n if (typeof selector === 'function') {\n const hostSet = SwcUtils.getHelperAndHostSet(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 as HTMLElement);\n return results;\n }\n if (resolvedSelector instanceof currentWin.NodeList) {\n results.push(...(Array.from(resolvedSelector) as HTMLElement[]));\n return results;\n }\n if (Array.isArray(resolvedSelector)) {\n results.push(...(resolvedSelector as HTMLElement[]));\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 {\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 * @applyAttribute decorator - set/get element attributes\n *\n * Usage:\n * - @applyAttribute('selector', 'attrName') - Set attribute with explicit name\n * - @applyAttribute('selector') - Use property name as attribute name\n * - @applyAttribute('selector', { name: 'attrName' }) - Set attribute via options\n * - @applyAttribute((this, helper) => 'selector', 'attrName') - Function-based selector\n * - Return null to remove attribute\n */\nexport function applyAttribute<S extends AttributeSelector>(selector: S, targetAttributeName: string, options?: AttributeOptionsOf<S>): MethodDecorator & PropertyDecorator;\nexport function applyAttribute<S extends AttributeSelector>(selector: S, options?: AttributeOptionsOf<S>): MethodDecorator & PropertyDecorator;\nexport function applyAttribute(selector: AttributeSelector, targetAttributeNameOrOptions?: string | AttributeOptions, options?: AttributeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n // ensureInit(target as any);\n\n const constructor = target.constructor;\n const designType = (Reflect as any).getMetadata('design:type', target, propertyKey);\n const metaType: 'property' | 'method' = descriptor && typeof descriptor.value === 'function' ? 'method' : 'property';\n\n // Parse arguments\n let finalOptions: AttributeOptions = {};\n let targetAttributeName: string;\n\n if (typeof targetAttributeNameOrOptions === 'string') {\n // applyAttribute('selector', 'attrName', options?)\n targetAttributeName = targetAttributeNameOrOptions;\n finalOptions = options || {};\n } else if (targetAttributeNameOrOptions) {\n // applyAttribute('selector', options)\n finalOptions = targetAttributeNameOrOptions;\n targetAttributeName = finalOptions.name || String(propertyKey);\n } else {\n // applyAttribute('selector')\n targetAttributeName = String(propertyKey);\n }\n\n // Store metadata\n let metaList = ReflectUtils.getOwnMetadata(ATTRIBUTE_METADATA_KEY, constructor) as AttributeMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(ATTRIBUTE_METADATA_KEY, metaList, constructor);\n }\n metaList.push({\n propertyKey,\n selector: selector as AttributeSelector,\n targetAttributeName,\n options: finalOptions,\n type: metaType\n });\n\n // Helper: Apply resolved value to targets\n const applyValueToTargets = (inst: any, resolvedValue: any) => {\n const targetEls = resolveAttributeTargets(inst, selector, finalOptions);\n const hostSet = SwcUtils.getHelperAndHostSet(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 if (resolvedValue === null) {\n // Remove attribute if value is null\n targetEl.removeAttribute(targetAttributeName);\n } else if (resolvedValue !== undefined) {\n // Set attribute\n targetEl.setAttribute(targetAttributeName, resolvedValue === true ? '' : String(resolvedValue));\n }\n });\n\n return resolvedValue;\n };\n\n // Method decorator: wrap method to apply its return value to attributes\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 key,\n * use that value. Otherwise use the entire return value.\n * \n * Uses valueKey from options if provided, otherwise uses ATTRIBUTE_METADATA_KEY.\n * \n * Example:\n * @attribute('selector1', 'attr1-name', { valueKey: 'attr1' })\n * @attribute('selector2', 'attr2-name', { valueKey: 'attr2' })\n * myMethod() {\n * return {\n * attr1: 'attribute-value1',\n * attr2: 'attribute-value2'\n * };\n * }\n * \n * First decorator will use 'attribute-value1', second will use 'attribute-value2'\n */\n const extractValue = (v: any) => {\n const keyToUse = finalOptions.valueKey ?? ATTRIBUTE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\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 attributes\n Object.defineProperty(target, propertyKey, {\n configurable: true,\n enumerable: true,\n get(this: any) {\n ensureInit(this);\n const mergedOptions = {...finalOptions, selector, type: finalOptions.type || designType};\n return getAttributeValue(this, targetAttributeName, mergedOptions);\n },\n set(this: any, value: any) {\n ensureInit(this);\n\n if (value instanceof Promise) {\n value.then((v: any) => applyValueToTargets(this, v)).catch(() => { /* swallow */\n });\n } else {\n applyValueToTargets(this, value);\n }\n }\n });\n };\n}\n\n// ============================================\n// Convenience Aliases\n// ============================================\n\n/**\n * @attribute - \uD544\uB4DC/\uBA54\uC11C\uB4DC \uACF5\uC6A9. \uBD99\uC740 \uACF3\uC5D0 \uB530\uB77C \uB3D9\uC791\uC774 \uAC08\uB9B0\uB2E4.\n * - \uD544\uB4DC: \uC5D8\uB9AC\uBA3C\uD2B8 attribute \uB97C \uC77D\uACE0 \uC4F0\uB294 getter/setter\n * - \uBA54\uC11C\uB4DC: \uB9AC\uD134\uAC12\uC744 \uC5D8\uB9AC\uBA3C\uD2B8 attribute \uC5D0 \uC801\uC6A9 (null \uC774\uBA74 \uC81C\uAC70, undefined \uBA74 \uBB34\uC2DC)\n *\n * \uBB38\uC790\uC5F4\uC774 \uD558\uB098\uBA74 \uC790\uAE30 \uC790\uC2E0($this)\uC758 attribute \uC774\uB984, \uB458\uC774\uBA74 (\uC140\uB809\uD130, attribute \uC774\uB984).\n * - @attribute - $this \uC758 attribute, \uC774\uB984\uC740 \uD544\uB4DC/\uBA54\uC11C\uB4DC \uC774\uB984\n * - @attribute('product-id') / @attribute('product-id', options) - $this \uC758 product-id\n * - @attribute('#user', 'product-id', options?) - \uC140\uB809\uD130 \uB300\uC0C1\uC758 product-id\n * - @attribute((this, helper) => el, 'product-id') - \uD568\uC218 \uC140\uB809\uD130\n * - @attribute(options) - $this, \uC774\uB984\uC740 options.name \uB610\uB294 \uD544\uB4DC/\uBA54\uC11C\uB4DC \uC774\uB984\n *\n * Example:\n * @attribute('product-id') productId: string;\n *\n * @attribute('.card', 'data-status')\n * updateStatus() { return 'active'; }\n */\nexport function attribute(attributeName: string, options?: AttributeQueryOptions): MethodDecorator & PropertyDecorator;\nexport function attribute(selector: string, attributeName: string, options?: AttributeQueryOptions): MethodDecorator & PropertyDecorator;\nexport function attribute(selector: AttributeFnSelector, attributeName: string, options?: AttributeNonQueryOptions): MethodDecorator & PropertyDecorator;\nexport function attribute(options: AttributeOptions): MethodDecorator & PropertyDecorator;\n// bare(@attribute) \uC2DC\uADF8\uB2C8\uCC98\uB294 \uB9E8 \uB4A4 \u2014 \uC55E\uC5D0 \uC788\uC73C\uBA74 \uBB38\uC790\uC5F4 \uB450 \uAC1C\uC9DC\uB9AC \uD638\uCD9C\uC774 (target, key) \uB85C \uBA3C\uC800 \uC7A1\uD600 TS1240\nexport function attribute(target: Object, propertyKey: string | symbol): void;\nexport function attribute(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function attribute(selectorOrAttributeOrTarget?: AttributeSelector | AttributeOptions | Object, attributeNameOrOptions?: any, optionsOrDescriptor?: any): any {\n // \uBB38\uC790\uC5F4: \uD558\uB098\uBA74 $this \uC758 attribute \uC774\uB984, \uB458\uC774\uBA74 (\uC140\uB809\uD130, attribute \uC774\uB984)\n if (typeof selectorOrAttributeOrTarget === 'string') {\n if (typeof attributeNameOrOptions !== 'string') {\n return applyAttribute('$this', selectorOrAttributeOrTarget, attributeNameOrOptions as AttributeOptions);\n }\n return applyAttribute(selectorOrAttributeOrTarget, attributeNameOrOptions, optionsOrDescriptor as AttributeOptions);\n }\n // \uD568\uC218 \uC140\uB809\uD130\n if (typeof selectorOrAttributeOrTarget === 'function') {\n return applyAttribute(selectorOrAttributeOrTarget as AttributeFnSelector, attributeNameOrOptions, optionsOrDescriptor as AttributeOptions);\n }\n // bare: @attribute \u2014 \uB370\uCF54\uB808\uC774\uD130\uB85C \uBC14\uB85C \uD638\uCD9C\uB428 (target=prototype, key[, descriptor])\n if (selectorOrAttributeOrTarget && (typeof attributeNameOrOptions === 'string' || typeof attributeNameOrOptions === 'symbol')) {\n return applyAttribute('$this', {})(selectorOrAttributeOrTarget as Object, attributeNameOrOptions, optionsOrDescriptor as PropertyDescriptor);\n }\n // \uC635\uC158\uB9CC: $this\n return applyAttribute('$this', selectorOrAttributeOrTarget as AttributeOptions);\n}\n\n/**\n * @removeAttribute - \uBA54\uC11C\uB4DC \uC2E4\uD589 \uC2DC \uC5D8\uB9AC\uBA3C\uD2B8 \uC18D\uC131 \uC81C\uAC70 (\uBC18\uD658\uAC12 \uADF8\uB300\uB85C \uD1B5\uACFC).\n * \uB77C\uC6B0\uD2B8 \uAD6C\uB3C5\uCC98\uB7FC \uAC12\uC744 \uB9AC\uD134\uD558\uBA74 \uC548 \uB418\uB294 \uACF3\uC5D0\uC11C @attribute \uC5D0 null \uC744 \uB9AC\uD134\uD558\uB294 \uB300\uC2E0 \uBA85\uC2DC\uC801\uC73C\uB85C \uC0AC\uC6A9.\n *\n * Usage:\n * - @removeAttribute('nav', 'href') - Remove attribute from selector\n * - @removeAttribute('$this', 'href') - Remove attribute from $this\n */\nexport function removeAttribute(selector: string, attributeName: string, options?: AttributeQueryOptions): MethodDecorator;\nexport function removeAttribute(selector: AttributeFnSelector, attributeName: string, options?: AttributeNonQueryOptions): MethodDecorator;\nexport function removeAttribute(selector: AttributeSelector, attributeName: string, options?: AttributeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n const res = (original as any).apply(this, args);\n const doRemove = () => {\n resolveAttributeTargets(this, selector, options ?? {}).forEach((el) => el.removeAttribute(attributeName));\n };\n if (res instanceof Promise) {\n return res.then((v: any) => {\n doRemove();\n return v;\n });\n }\n doRemove();\n return res;\n };\n return descriptor;\n };\n}\n\n// ============================================\n// Metadata Helpers\n// ============================================\n\nexport const findAllAttributeMetadata = (target: any): AttributeMetadata[] => {\n const actualTarget = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.findAllMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, actualTarget).flat();\n};\n\n// Backward compatibility alias\nexport const findAllAttributeApplyMetadata = (target: any): Map<string | symbol, AttributeMetadata> => {\n const result = new Map<string | symbol, AttributeMetadata>();\n findAllAttributeMetadata(target).forEach(meta => {\n result.set(meta.propertyKey, meta);\n });\n return result;\n};\n\n// \u2500\u2500\u2500 Aliases \u2500\u2500\u2500\n// applyAttribute \uB2E8\uCD95\uBA85\nexport const attr = applyAttribute;\n\n// \u2500\u2500\u2500 \uD3B8\uC758 \uD5EC\uD37C (selector/root \uC0DD\uB7B5) \u2500\u2500\u2500\n\nexport function attrAppHost(targetAttributeName: string, options?: AttributeQueryOptions): MethodDecorator;\nexport function attrAppHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function attrAppHost(targetAttributeNameOrTarget?: string | Object, optionsOrPropertyKey?: AttributeQueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n if ((typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol') && descriptor !== undefined) {\n return (applyAttribute('$appHost', undefined as any, {}) as any)(targetAttributeNameOrTarget, optionsOrPropertyKey, descriptor);\n }\n return applyAttribute('$appHost', targetAttributeNameOrTarget as any, optionsOrPropertyKey as AttributeQueryOptions);\n}\nexport function attrLight(selector: string, targetAttributeName?: string, options?: Omit<AttributeQueryOptions, 'root'>): MethodDecorator {\n return applyAttribute(selector, targetAttributeName, {...options ?? {}, root: 'light'});\n}\nexport function attrShadow(selector: string, targetAttributeName?: string, options?: Omit<AttributeQueryOptions, 'root'>): MethodDecorator {\n return applyAttribute(selector, targetAttributeName, {...options ?? {}, root: 'shadow'});\n}\nexport function attrAll(selector: string, targetAttributeName?: string, options?: Omit<AttributeQueryOptions, 'root'>): MethodDecorator {\n return applyAttribute(selector, targetAttributeName, {...options ?? {}, root: 'all'});\n}\n\nexport default applyAttribute;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {ReflectUtils, FunctionUtils, ActionExpression} from '@dooboostore/core';\nimport {ensureInit, getElementConfig} from './elementDefine';\nimport {SwcUtils} from '../utils/Utils';\nimport {SwcQueryOptions, HelperHostSet, SwcFnSelector, SwcSelector} from '../types';\nimport {ConvertUtils} from '@dooboostore/core-web';\n\n// ============================================\n// Types & Interfaces\n// ============================================\n\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root \uC5C6\uC74C\nexport interface AttributeBaseOptions {\n name?: string;\n type?: typeof Number | typeof Boolean | typeof String;\n filter?: (target: HTMLElement, value: any, meta: { currentThis: any, helper: HelperHostSet }) => boolean;\n valueKey?: symbol | string;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uD5C8\uC6A9 (\uCEF4\uD3EC\uB10C\uD2B8 DOM \uD2B8\uB9AC \uC548\uC5D0\uC11C \uD0D0\uC0C9)\nexport type AttributeQueryOptions = AttributeBaseOptions & SwcQueryOptions;\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uAE08\uC9C0 (\uC774\uBBF8 \uC694\uC18C\uB97C \uC9C1\uC811 \uBC18\uD658)\nexport type AttributeNonQueryOptions = AttributeBaseOptions;\n// \uB0B4\uBD80 \uC800\uC7A5/\uD574\uC11D\uC6A9 \u2014 root optional\uC774\uB77C \uB450 \uC885\uB958 \uBAA8\uB450 \uC800\uC7A5 \uAC00\uB2A5\nexport type AttributeOptions = AttributeQueryOptions;\n\nexport type AttributeFnSelector = SwcFnSelector;\nexport type AttributeSelector = SwcSelector;\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type AttributeOptionsOf<S extends AttributeSelector> = S extends string ? AttributeQueryOptions : AttributeNonQueryOptions;\n\nexport interface AttributeMetadata {\n propertyKey: string | symbol;\n selector: AttributeSelector;\n targetAttributeName: string;\n options: AttributeOptions;\n type: 'property' | 'method';\n}\n\nexport const ATTRIBUTE_METADATA_KEY = Symbol.for('simple-web-component:attribute');\n\n// ============================================\n// Utilities\n// ============================================\n\n\n// \uBB38\uC790\uC5F4(attribute \uC6D0\uBB38)\uC740 'false'/'0' \uB9CC false. {{= }} \uACB0\uACFC\uCC98\uB7FC \uC774\uBBF8 JS \uAC12\uC774\uBA74 \uADF8 \uAC12\uC758 \uCC38/\uAC70\uC9D3\uC744 \uB530\uB978\uB2E4\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 typeof val === 'string' ? !(val === 'false' || val === '0') : Boolean(val);\n return val;\n};\n\nexport {convertValue};\n\nexport const getAttributeValue = (inst: any, attrName: string, options?: AttributeOptions & { selector?: AttributeSelector }): any => {\n const currentWin = SwcUtils.resolveWindow(inst);\n\n // If selector is not provided, use inst itself\n const targets = options?.selector ? resolveAttributeTargets(inst, options.selector, options) : [inst];\n\n const primaryTarget = targets[0];\n\n if (primaryTarget && typeof (primaryTarget as any).hasAttribute === 'function' && (primaryTarget as any).hasAttribute(attrName)) {\n let domVal = (primaryTarget as any).getAttribute(attrName);\n\n // \uD45C\uD604\uC2DD \uCCB4\uD06C\n const ae = new ActionExpression(domVal);\n const expr = ae.getFirstExpression('callReturn');\n if (expr) {\n try {\n const result = FunctionUtils.executeReturn({\n script: ConvertUtils.decodeHtmlEntity(expr.script, currentWin.document),\n context: inst,\n args: SwcUtils.getHelperAndHostSet(inst)\n });\n return convertValue(result, options?.type);\n } catch (err) {\n console.error(`[SWC] Failed to execute directive {{= ${expr.script} }}:`, err);\n return convertValue(domVal, options?.type);\n }\n }\n\n return convertValue(domVal, options?.type);\n }\n\n // If no target found, return null\n return null;\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[] for attribute operations\n */\nexport const resolveAttributeTargets = (inst: any, selector: AttributeSelector, options: AttributeOptions): HTMLElement[] => {\n const conf = getElementConfig(inst);\n const currentWin = conf.window;\n const r = options.root || 'auto';\n const results: HTMLElement[] = [];\n\n // Resolve selector if it's a function\n let resolvedSelector: string | Node | Element | NodeList | Element[] | null = selector as any;\n if (typeof selector === 'function') {\n const hostSet = SwcUtils.getHelperAndHostSet(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 as HTMLElement);\n return results;\n }\n if (resolvedSelector instanceof currentWin.NodeList) {\n results.push(...(Array.from(resolvedSelector) as HTMLElement[]));\n return results;\n }\n if (Array.isArray(resolvedSelector)) {\n results.push(...(resolvedSelector as HTMLElement[]));\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 {\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 * @applyAttribute decorator - set/get element attributes\n *\n * Usage:\n * - @applyAttribute('selector', 'attrName') - Set attribute with explicit name\n * - @applyAttribute('selector') - Use property name as attribute name\n * - @applyAttribute('selector', { name: 'attrName' }) - Set attribute via options\n * - @applyAttribute((this, helper) => 'selector', 'attrName') - Function-based selector\n * - Return null to remove attribute\n */\nexport function applyAttribute<S extends AttributeSelector>(selector: S, targetAttributeName: string, options?: AttributeOptionsOf<S>): MethodDecorator & PropertyDecorator;\nexport function applyAttribute<S extends AttributeSelector>(selector: S, options?: AttributeOptionsOf<S>): MethodDecorator & PropertyDecorator;\nexport function applyAttribute(selector: AttributeSelector, targetAttributeNameOrOptions?: string | AttributeOptions, options?: AttributeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n // ensureInit(target as any);\n\n const constructor = target.constructor;\n const designType = (Reflect as any).getMetadata('design:type', target, propertyKey);\n const metaType: 'property' | 'method' = descriptor && typeof descriptor.value === 'function' ? 'method' : 'property';\n\n // Parse arguments\n let finalOptions: AttributeOptions = {};\n let targetAttributeName: string;\n\n if (typeof targetAttributeNameOrOptions === 'string') {\n // applyAttribute('selector', 'attrName', options?)\n targetAttributeName = targetAttributeNameOrOptions;\n finalOptions = options || {};\n } else if (targetAttributeNameOrOptions) {\n // applyAttribute('selector', options)\n finalOptions = targetAttributeNameOrOptions;\n targetAttributeName = finalOptions.name || String(propertyKey);\n } else {\n // applyAttribute('selector')\n targetAttributeName = String(propertyKey);\n }\n\n // Store metadata\n let metaList = ReflectUtils.getOwnMetadata(ATTRIBUTE_METADATA_KEY, constructor) as AttributeMetadata[];\n if (!metaList) {\n metaList = [];\n ReflectUtils.defineMetadata(ATTRIBUTE_METADATA_KEY, metaList, constructor);\n }\n metaList.push({\n propertyKey,\n selector: selector as AttributeSelector,\n targetAttributeName,\n options: finalOptions,\n type: metaType\n });\n\n // Helper: Apply resolved value to targets\n const applyValueToTargets = (inst: any, resolvedValue: any) => {\n const targetEls = resolveAttributeTargets(inst, selector, finalOptions);\n const hostSet = SwcUtils.getHelperAndHostSet(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 if (resolvedValue === null) {\n // Remove attribute if value is null\n targetEl.removeAttribute(targetAttributeName);\n } else if (resolvedValue !== undefined) {\n // Set attribute\n targetEl.setAttribute(targetAttributeName, resolvedValue === true ? '' : String(resolvedValue));\n }\n });\n\n return resolvedValue;\n };\n\n // Method decorator: wrap method to apply its return value to attributes\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 key,\n * use that value. Otherwise use the entire return value.\n * \n * Uses valueKey from options if provided, otherwise uses ATTRIBUTE_METADATA_KEY.\n * \n * Example:\n * @attribute('selector1', 'attr1-name', { valueKey: 'attr1' })\n * @attribute('selector2', 'attr2-name', { valueKey: 'attr2' })\n * myMethod() {\n * return {\n * attr1: 'attribute-value1',\n * attr2: 'attribute-value2'\n * };\n * }\n * \n * First decorator will use 'attribute-value1', second will use 'attribute-value2'\n */\n const extractValue = (v: any) => {\n const keyToUse = finalOptions.valueKey ?? ATTRIBUTE_METADATA_KEY;\n if (v && typeof v === 'object' && keyToUse in v) {\n return v[keyToUse];\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 attributes\n Object.defineProperty(target, propertyKey, {\n configurable: true,\n enumerable: true,\n get(this: any) {\n ensureInit(this);\n const mergedOptions = {...finalOptions, selector, type: finalOptions.type || designType};\n return getAttributeValue(this, targetAttributeName, mergedOptions);\n },\n set(this: any, value: any) {\n ensureInit(this);\n\n if (value instanceof Promise) {\n value.then((v: any) => applyValueToTargets(this, v)).catch(() => { /* swallow */\n });\n } else {\n applyValueToTargets(this, value);\n }\n }\n });\n };\n}\n\n// ============================================\n// Convenience Aliases\n// ============================================\n\n/**\n * @attribute - \uD544\uB4DC/\uBA54\uC11C\uB4DC \uACF5\uC6A9. \uBD99\uC740 \uACF3\uC5D0 \uB530\uB77C \uB3D9\uC791\uC774 \uAC08\uB9B0\uB2E4.\n * - \uD544\uB4DC: \uC5D8\uB9AC\uBA3C\uD2B8 attribute \uB97C \uC77D\uACE0 \uC4F0\uB294 getter/setter\n * - \uBA54\uC11C\uB4DC: \uB9AC\uD134\uAC12\uC744 \uC5D8\uB9AC\uBA3C\uD2B8 attribute \uC5D0 \uC801\uC6A9 (null \uC774\uBA74 \uC81C\uAC70, undefined \uBA74 \uBB34\uC2DC)\n *\n * \uBB38\uC790\uC5F4\uC774 \uD558\uB098\uBA74 \uC790\uAE30 \uC790\uC2E0($this)\uC758 attribute \uC774\uB984, \uB458\uC774\uBA74 (\uC140\uB809\uD130, attribute \uC774\uB984).\n * - @attribute - $this \uC758 attribute, \uC774\uB984\uC740 \uD544\uB4DC/\uBA54\uC11C\uB4DC \uC774\uB984\n * - @attribute('product-id') / @attribute('product-id', options) - $this \uC758 product-id\n * - @attribute('#user', 'product-id', options?) - \uC140\uB809\uD130 \uB300\uC0C1\uC758 product-id\n * - @attribute((this, helper) => el, 'product-id') - \uD568\uC218 \uC140\uB809\uD130\n * - @attribute(options) - $this, \uC774\uB984\uC740 options.name \uB610\uB294 \uD544\uB4DC/\uBA54\uC11C\uB4DC \uC774\uB984\n *\n * Example:\n * @attribute('product-id') productId: string;\n *\n * @attribute('.card', 'data-status')\n * updateStatus() { return 'active'; }\n */\nexport function attribute(attributeName: string, options?: AttributeQueryOptions): MethodDecorator & PropertyDecorator;\nexport function attribute(selector: string, attributeName: string, options?: AttributeQueryOptions): MethodDecorator & PropertyDecorator;\nexport function attribute(selector: AttributeFnSelector, attributeName: string, options?: AttributeNonQueryOptions): MethodDecorator & PropertyDecorator;\nexport function attribute(options: AttributeOptions): MethodDecorator & PropertyDecorator;\n// bare(@attribute) \uC2DC\uADF8\uB2C8\uCC98\uB294 \uB9E8 \uB4A4 \u2014 \uC55E\uC5D0 \uC788\uC73C\uBA74 \uBB38\uC790\uC5F4 \uB450 \uAC1C\uC9DC\uB9AC \uD638\uCD9C\uC774 (target, key) \uB85C \uBA3C\uC800 \uC7A1\uD600 TS1240\nexport function attribute(target: Object, propertyKey: string | symbol): void;\nexport function attribute(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function attribute(selectorOrAttributeOrTarget?: AttributeSelector | AttributeOptions | Object, attributeNameOrOptions?: any, optionsOrDescriptor?: any): any {\n // \uBB38\uC790\uC5F4: \uD558\uB098\uBA74 $this \uC758 attribute \uC774\uB984, \uB458\uC774\uBA74 (\uC140\uB809\uD130, attribute \uC774\uB984)\n if (typeof selectorOrAttributeOrTarget === 'string') {\n if (typeof attributeNameOrOptions !== 'string') {\n return applyAttribute('$this', selectorOrAttributeOrTarget, attributeNameOrOptions as AttributeOptions);\n }\n return applyAttribute(selectorOrAttributeOrTarget, attributeNameOrOptions, optionsOrDescriptor as AttributeOptions);\n }\n // \uD568\uC218 \uC140\uB809\uD130\n if (typeof selectorOrAttributeOrTarget === 'function') {\n return applyAttribute(selectorOrAttributeOrTarget as AttributeFnSelector, attributeNameOrOptions, optionsOrDescriptor as AttributeOptions);\n }\n // bare: @attribute \u2014 \uB370\uCF54\uB808\uC774\uD130\uB85C \uBC14\uB85C \uD638\uCD9C\uB428 (target=prototype, key[, descriptor])\n if (selectorOrAttributeOrTarget && (typeof attributeNameOrOptions === 'string' || typeof attributeNameOrOptions === 'symbol')) {\n return applyAttribute('$this', {})(selectorOrAttributeOrTarget as Object, attributeNameOrOptions, optionsOrDescriptor as PropertyDescriptor);\n }\n // \uC635\uC158\uB9CC: $this\n return applyAttribute('$this', selectorOrAttributeOrTarget as AttributeOptions);\n}\n\n/**\n * @removeAttribute - \uBA54\uC11C\uB4DC \uC2E4\uD589 \uC2DC \uC5D8\uB9AC\uBA3C\uD2B8 \uC18D\uC131 \uC81C\uAC70 (\uBC18\uD658\uAC12 \uADF8\uB300\uB85C \uD1B5\uACFC).\n * \uBC18\uD658\uAC12\uACFC \uC0C1\uAD00\uC5C6\uC774 \uC9C0\uC6B4\uB2E4. valueKey \uB97C \uC92C\uC744 \uB54C\uB9CC \uADF8 \uD0A4 \uAC12\uC774 truthy \uC778\uC9C0 \uBCF8\uB2E4 (@removeNode \uC640 \uAC19\uC740 \uADDC\uCE59).\n * \uB77C\uC6B0\uD2B8 \uAD6C\uB3C5\uCC98\uB7FC \uAC12\uC744 \uB9AC\uD134\uD558\uBA74 \uC548 \uB418\uB294 \uACF3\uC5D0\uC11C @attribute \uC5D0 null \uC744 \uB9AC\uD134\uD558\uB294 \uB300\uC2E0 \uBA85\uC2DC\uC801\uC73C\uB85C \uC0AC\uC6A9.\n *\n * Usage:\n * - @removeAttribute('nav', 'href') - Remove attribute from selector\n * - @removeAttribute('$this', 'href') - Remove attribute from $this\n */\nexport function removeAttribute(selector: string, attributeName: string, options?: AttributeQueryOptions): MethodDecorator;\nexport function removeAttribute(selector: AttributeFnSelector, attributeName: string, options?: AttributeNonQueryOptions): MethodDecorator;\nexport function removeAttribute(selector: AttributeSelector, attributeName: string, options?: AttributeOptions): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n const res = (original as any).apply(this, args);\n // \uC774\uB984\uC5D0 \uC774\uBBF8 \uC758\uB3C4\uAC00 \uC788\uC73C\uB2C8 \uBC18\uD658\uAC12\uACFC \uC0C1\uAD00\uC5C6\uC774 \uC9C0\uC6B4\uB2E4. valueKey \uB97C \uC92C\uC744 \uB54C\uB9CC \uADF8 \uD0A4 \uAC12\uC774 truthy \uC778\uC9C0 \uBCF8\uB2E4.\n const doRemove = (v: any) => {\n const vk = options?.valueKey;\n const go = vk !== undefined ? (v && typeof v === 'object' ? v[vk] : undefined) : true;\n if (!go) return;\n resolveAttributeTargets(this, selector, options ?? {}).forEach((el) => el.removeAttribute(attributeName));\n };\n if (res instanceof Promise) {\n return res.then((v: any) => {\n doRemove(v);\n return v;\n });\n }\n doRemove(res);\n return res;\n };\n return descriptor;\n };\n}\n\n// ============================================\n// Metadata Helpers\n// ============================================\n\nexport const findAllAttributeMetadata = (target: any): AttributeMetadata[] => {\n const actualTarget = typeof target === 'function' ? target : target.constructor;\n return ReflectUtils.findAllMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, actualTarget).flat();\n};\n\n// Backward compatibility alias\nexport const findAllAttributeApplyMetadata = (target: any): Map<string | symbol, AttributeMetadata> => {\n const result = new Map<string | symbol, AttributeMetadata>();\n findAllAttributeMetadata(target).forEach(meta => {\n result.set(meta.propertyKey, meta);\n });\n return result;\n};\n\n// \u2500\u2500\u2500 Aliases \u2500\u2500\u2500\n// applyAttribute \uB2E8\uCD95\uBA85\nexport const attr = applyAttribute;\n\n// \u2500\u2500\u2500 \uD3B8\uC758 \uD5EC\uD37C (selector/root \uC0DD\uB7B5) \u2500\u2500\u2500\n\nexport function attrAppHost(targetAttributeName: string, options?: AttributeQueryOptions): MethodDecorator;\nexport function attrAppHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function attrAppHost(targetAttributeNameOrTarget?: string | Object, optionsOrPropertyKey?: AttributeQueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n if ((typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol') && descriptor !== undefined) {\n return (applyAttribute('$appHost', undefined as any, {}) as any)(targetAttributeNameOrTarget, optionsOrPropertyKey, descriptor);\n }\n return applyAttribute('$appHost', targetAttributeNameOrTarget as any, optionsOrPropertyKey as AttributeQueryOptions);\n}\nexport function attrLight(selector: string, targetAttributeName?: string, options?: Omit<AttributeQueryOptions, 'root'>): MethodDecorator {\n return applyAttribute(selector, targetAttributeName, {...options ?? {}, root: 'light'});\n}\nexport function attrShadow(selector: string, targetAttributeName?: string, options?: Omit<AttributeQueryOptions, 'root'>): MethodDecorator {\n return applyAttribute(selector, targetAttributeName, {...options ?? {}, root: 'shadow'});\n}\nexport function attrAll(selector: string, targetAttributeName?: string, options?: Omit<AttributeQueryOptions, 'root'>): MethodDecorator {\n return applyAttribute(selector, targetAttributeName, {...options ?? {}, root: 'all'});\n}\n\nexport default applyAttribute;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -176,13 +176,29 @@ function createClassDecorator(action) {
176
176
  }
177
177
  return resolvedValue;
178
178
  };
179
+ const fixedName = typeof classMap === "string" && (action === "add" || action === "remove" || action === "toggle") ? classMap : void 0;
180
+ const applyFixed = (raw) => {
181
+ const vk = finalOptions.valueKey;
182
+ const v = vk !== void 0 ? raw && typeof raw === "object" ? raw[vk] : void 0 : action === "toggle" ? raw : true;
183
+ if (vk !== void 0 && (action === "toggle" ? v === void 0 : !v)) return;
184
+ const win = this.ownerDocument?.defaultView || window;
185
+ const hostSet = { ...import_Utils.SwcUtils.getHelperAndHostSet(this), $this: this };
186
+ getTargetElements(selector, this, win, finalOptions.root || "auto").forEach((el) => {
187
+ if (finalOptions.filter && !finalOptions.filter(el, v, { currentThis: this, helper: hostSet })) return;
188
+ if (action === "add") el.classList.add(fixedName);
189
+ else if (action === "remove") el.classList.remove(fixedName);
190
+ else if (v === void 0) el.classList.toggle(fixedName);
191
+ else el.classList.toggle(fixedName, !!v);
192
+ });
193
+ };
194
+ const run = (raw) => fixedName ? applyFixed(raw) : handleResult(extractValue(raw));
179
195
  if (res instanceof Promise) {
180
196
  return res.then((v) => {
181
- handleResult(extractValue(v));
197
+ run(v);
182
198
  return v;
183
199
  });
184
200
  } else {
185
- handleResult(extractValue(res));
201
+ run(res);
186
202
  return res;
187
203
  }
188
204
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/applyClass.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions, SwcFnSelector, SwcSelector, HelperHostSet } from '../types';\n\nexport const CLASS_METADATA_KEY = Symbol.for('simple-web-component:class');\n\nexport type ClassAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';\n\n/**\n * Resolve selector to string or elements\n * Handles function-based selectors and returns elements if applicable\n */\nconst resolveSelector = (selector: ClassSelector, inst: any, win: Window): string | HTMLElement[] => {\n if (typeof selector === 'function') {\n const hostSet = SwcUtils.getHelperAndHostSet(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 if (result instanceof win.Node) {\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: ClassSelector, 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(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\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root \uC5C6\uC74C\nexport interface ClassBaseOptions {\n filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;\n valueKey?: symbol | string;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uD5C8\uC6A9 (classMapOrOptions \uD310\uBCC4\uC744 \uC704\uD574 root \uD544\uC694)\nexport type ClassQueryOptions = ClassBaseOptions & SwcQueryOptions;\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uAE08\uC9C0. \uB2E8, classMapOrOptions\uC758 options \uC790\uB9AC\uC5D0 \uC62C \uC218 \uC5C6\uC74C(root\uAC00 \uC5C6\uC5B4 classMap\uACFC \uD310\uBCC4 \uBD88\uAC00)\nexport type ClassNonQueryOptions = ClassBaseOptions;\nexport type ClassApplyOptions = ClassQueryOptions;\n\nexport type ClassFnSelector = SwcFnSelector;\nexport type ClassSelector = SwcSelector;\nexport type ClassMapType = { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean };\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type ClassOptionsOf<S extends ClassSelector> = S extends string ? ClassQueryOptions : ClassNonQueryOptions;\n\nexport interface ClassApplyMetadata {\n propertyKey: string | symbol;\n selector: ClassSelector;\n action: ClassAction;\n options: ClassApplyOptions;\n}\n\nfunction createClassDecorator(action: ClassAction) {\n return (selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(CLASS_METADATA_KEY, constructor) as Map<string | symbol, ClassApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ClassApplyMetadata>();\n ReflectUtils.defineMetadata(CLASS_METADATA_KEY, metaList, constructor);\n }\n\n let classMap: any = undefined;\n let finalOptions = options;\n\n if (typeof classMapOrOptions === 'string' || (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && !('root' in classMapOrOptions))) {\n classMap = classMapOrOptions;\n } else if (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && 'root' in classMapOrOptions) {\n finalOptions = classMapOrOptions as ClassApplyOptions;\n }\n\n metaList.set(propertyKey, { propertyKey, selector, action, options: finalOptions });\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 CLASS_METADATA_KEY.\n */\n const extractValue = (v: any) => {\n const keyToUse = finalOptions.valueKey ?? CLASS_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(host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls = getTargetElements(selector, this, win, r);\n\n targetEls.forEach(targetEl => {\n if (finalOptions.filter && !finalOptions.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') {\n let classes = '';\n if (classMap && typeof classMap === 'string') {\n classes = resolvedRes ? classMap : '';\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n classes = Object.entries(resolvedRes as any)\n .filter(([_, force]) => typeof force === 'function' ? force(targetEl, hostSet) : !!force)\n .map(([cls]) => cls)\n .join(' ');\n } else {\n classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).join(' ') : String(resolvedRes);\n }\n targetEl.className = classes;\n } else if (action === 'update' || action === 'toggle') {\n if (classMap && typeof classMap === 'string') {\n targetEl.classList.toggle(classMap, !!resolvedRes);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const isActive = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n targetEl.classList.toggle(cls, isActive);\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'update') targetEl.classList.add(...classes);\n else classes.forEach(c => targetEl.classList.toggle(c));\n }\n } else if (action === 'add' || action === 'remove') {\n if (classMap && typeof classMap === 'string' && !!resolvedRes) {\n if (action === 'add') targetEl.classList.add(classMap);\n else targetEl.classList.remove(classMap);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const shouldExecute = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n if (shouldExecute) {\n if (action === 'add') targetEl.classList.add(cls);\n else targetEl.classList.remove(cls);\n }\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'add') targetEl.classList.add(...classes);\n else targetEl.classList.remove(...classes);\n }\n }\n });\n }\n return resolvedValue;\n };\n\n if (res instanceof Promise) {\n // \uC790\uAE30 \uBAAB(valueKey)\uB9CC \uC801\uC6A9\uD558\uACE0 \uC6D0\uB798 \uBC18\uD658\uAC12\uC740 \uADF8\uB300\uB85C \uC704\uB85C \uB118\uAE34\uB2E4 \u2014 \uC704\uC5D0 \uC313\uC778 \uB2E4\uB978 \uC544\uC6C3\uD48B\uB3C4 \uC790\uAE30 \uD0A4\uB97C \uCC3E\uAC8C\n return res.then((v: any) => { handleResult(extractValue(v)); return v; });\n } else {\n handleResult(extractValue(res));\n return res;\n }\n };\n return descriptor;\n };\n };\n}\n\nexport function applyClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function applyClass(selector: string, action?: ClassAction, options?: ClassQueryOptions): MethodDecorator;\nexport function applyClass(selector: ClassFnSelector, action?: ClassAction, options?: ClassNonQueryOptions): MethodDecorator;\nexport function applyClass(selectorOrTarget?: any, actionOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @applyClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof actionOrPropertyKey === 'string' || typeof actionOrPropertyKey === 'symbol')) {\n return createClassDecorator('update')('$this', {})(selectorOrTarget as Object, actionOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n const action = (typeof actionOrPropertyKey === 'string' ? actionOrPropertyKey : 'update') as ClassAction;\n const options = (typeof actionOrPropertyKey === 'object' ? actionOrPropertyKey : optionsOrDescriptor) as ClassApplyOptions | undefined;\n return createClassDecorator(action)(selectorOrTarget, options);\n }\n // Without selector (defaults to $this)\n const action = (typeof selectorOrTarget === 'string' ? selectorOrTarget : 'update') as ClassAction;\n const options = (typeof selectorOrTarget === 'object' ? selectorOrTarget : actionOrPropertyKey) as ClassApplyOptions | undefined;\n return createClassDecorator(action)('$this', options);\n}\n\nexport function setClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function setClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function setClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function setClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @setClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('set')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('set')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('set')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function updateClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function updateClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function updateClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function updateClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @updateClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('update')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('update')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('update')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function addClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function addClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function addClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function addClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @addClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('add')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('add')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('add')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function removeClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function removeClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function removeClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function removeClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @removeClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('remove')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('remove')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('remove')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function toggleClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function toggleClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function toggleClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function toggleClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @toggleClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('toggle')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('toggle')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('toggle')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\n// \u2500\u2500\u2500 Aliases \u2500\u2500\u2500\n// class\uB294 \uC608\uC57D\uC5B4\uB77C cls \uC0AC\uC6A9\nexport const cls = applyClass;\n\n// \u2500\u2500\u2500 \uD3B8\uC758 \uD5EC\uD37C (selector/root \uC0DD\uB7B5) \u2500\u2500\u2500\n\nexport function clsAppHost(action: ClassAction, options?: ClassQueryOptions): MethodDecorator;\nexport function clsAppHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function clsAppHost(actionOrTarget?: ClassAction | Object, optionsOrPropertyKey?: ClassQueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n if ((typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol') && descriptor !== undefined) {\n return (applyClass('$appHost', undefined as any, {}) as any)(actionOrTarget, optionsOrPropertyKey, descriptor);\n }\n return applyClass('$appHost', actionOrTarget as any, optionsOrPropertyKey as ClassQueryOptions);\n}\nexport function clsLight(selector: string, action?: ClassAction, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsLight(selector: string, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsLight(selector: string, actionOrOptions?: ClassAction | Omit<ClassQueryOptions, 'root'>, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator {\n const action = (typeof actionOrOptions === 'string' ? actionOrOptions : undefined) as ClassAction | undefined;\n const opts = (typeof actionOrOptions === 'object' ? actionOrOptions : options) as Omit<ClassQueryOptions, 'root'> | undefined;\n return applyClass(selector, action, {...opts ?? {}, root: 'light'});\n}\nexport function clsShadow(selector: string, action?: ClassAction, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsShadow(selector: string, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsShadow(selector: string, actionOrOptions?: ClassAction | Omit<ClassQueryOptions, 'root'>, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator {\n const action = (typeof actionOrOptions === 'string' ? actionOrOptions : undefined) as ClassAction | undefined;\n const opts = (typeof actionOrOptions === 'object' ? actionOrOptions : options) as Omit<ClassQueryOptions, 'root'> | undefined;\n return applyClass(selector, action, {...opts ?? {}, root: 'shadow'});\n}\nexport function clsAll(selector: string, action?: ClassAction, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsAll(selector: string, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsAll(selector: string, actionOrOptions?: ClassAction | Omit<ClassQueryOptions, 'root'>, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator {\n const action = (typeof actionOrOptions === 'string' ? actionOrOptions : undefined) as ClassAction | undefined;\n const opts = (typeof actionOrOptions === 'object' ? actionOrOptions : options) as Omit<ClassQueryOptions, 'root'> | undefined;\n return applyClass(selector, action, {...opts ?? {}, root: 'all'});\n}\n\nexport const findAllClassMetadata = (target: any): Map<string | symbol, ClassApplyMetadata> => {\n const result = new Map<string | symbol, ClassApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ClassApplyMetadata>>(CLASS_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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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions, SwcFnSelector, SwcSelector, HelperHostSet } from '../types';\n\nexport const CLASS_METADATA_KEY = Symbol.for('simple-web-component:class');\n\nexport type ClassAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';\n\n/**\n * Resolve selector to string or elements\n * Handles function-based selectors and returns elements if applicable\n */\nconst resolveSelector = (selector: ClassSelector, inst: any, win: Window): string | HTMLElement[] => {\n if (typeof selector === 'function') {\n const hostSet = SwcUtils.getHelperAndHostSet(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 if (result instanceof win.Node) {\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: ClassSelector, 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(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\n// \uACF5\uD1B5 \uC635\uC158 \u2014 root \uC5C6\uC74C\nexport interface ClassBaseOptions {\n filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;\n valueKey?: symbol | string;\n}\n\n// \uBB38\uC790\uC5F4 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uD5C8\uC6A9 (classMapOrOptions \uD310\uBCC4\uC744 \uC704\uD574 root \uD544\uC694)\nexport type ClassQueryOptions = ClassBaseOptions & SwcQueryOptions;\n// \uD568\uC218 \uC140\uB809\uD130 \uC804\uC6A9 \u2014 root \uAE08\uC9C0. \uB2E8, classMapOrOptions\uC758 options \uC790\uB9AC\uC5D0 \uC62C \uC218 \uC5C6\uC74C(root\uAC00 \uC5C6\uC5B4 classMap\uACFC \uD310\uBCC4 \uBD88\uAC00)\nexport type ClassNonQueryOptions = ClassBaseOptions;\nexport type ClassApplyOptions = ClassQueryOptions;\n\nexport type ClassFnSelector = SwcFnSelector;\nexport type ClassSelector = SwcSelector;\nexport type ClassMapType = { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean };\n\n// \uC140\uB809\uD130 \uC885\uB958\uC5D0 \uB530\uB77C \uC635\uC158 \uD0C0\uC785 \uBD84\uAE30\nexport type ClassOptionsOf<S extends ClassSelector> = S extends string ? ClassQueryOptions : ClassNonQueryOptions;\n\nexport interface ClassApplyMetadata {\n propertyKey: string | symbol;\n selector: ClassSelector;\n action: ClassAction;\n options: ClassApplyOptions;\n}\n\nfunction createClassDecorator(action: ClassAction) {\n return (selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(CLASS_METADATA_KEY, constructor) as Map<string | symbol, ClassApplyMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ClassApplyMetadata>();\n ReflectUtils.defineMetadata(CLASS_METADATA_KEY, metaList, constructor);\n }\n\n let classMap: any = undefined;\n let finalOptions = options;\n\n if (typeof classMapOrOptions === 'string' || (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && !('root' in classMapOrOptions))) {\n classMap = classMapOrOptions;\n } else if (typeof classMapOrOptions === 'object' && classMapOrOptions !== null && 'root' in classMapOrOptions) {\n finalOptions = classMapOrOptions as ClassApplyOptions;\n }\n\n metaList.set(propertyKey, { propertyKey, selector, action, options: finalOptions });\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 CLASS_METADATA_KEY.\n */\n const extractValue = (v: any) => {\n const keyToUse = finalOptions.valueKey ?? CLASS_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(host), $this: this };\n const r = finalOptions.root || 'auto';\n const targetEls = getTargetElements(selector, this, win, r);\n\n targetEls.forEach(targetEl => {\n if (finalOptions.filter && !finalOptions.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') {\n let classes = '';\n if (classMap && typeof classMap === 'string') {\n classes = resolvedRes ? classMap : '';\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n classes = Object.entries(resolvedRes as any)\n .filter(([_, force]) => typeof force === 'function' ? force(targetEl, hostSet) : !!force)\n .map(([cls]) => cls)\n .join(' ');\n } else {\n classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).join(' ') : String(resolvedRes);\n }\n targetEl.className = classes;\n } else if (action === 'update' || action === 'toggle') {\n if (classMap && typeof classMap === 'string') {\n targetEl.classList.toggle(classMap, !!resolvedRes);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const isActive = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n targetEl.classList.toggle(cls, isActive);\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'update') targetEl.classList.add(...classes);\n else classes.forEach(c => targetEl.classList.toggle(c));\n }\n } else if (action === 'add' || action === 'remove') {\n if (classMap && typeof classMap === 'string' && !!resolvedRes) {\n if (action === 'add') targetEl.classList.add(classMap);\n else targetEl.classList.remove(classMap);\n } else if (typeof resolvedRes === 'object' && resolvedRes !== null && !Array.isArray(resolvedRes)) {\n Object.entries(resolvedRes as any).forEach(([cls, force]) => {\n const shouldExecute = typeof force === 'function' ? force(targetEl, hostSet) : !!force;\n if (shouldExecute) {\n if (action === 'add') targetEl.classList.add(cls);\n else targetEl.classList.remove(cls);\n }\n });\n } else {\n const classes = Array.isArray(resolvedRes) ? (resolvedRes as any[]).map(String) : [String(resolvedRes)];\n if (action === 'add') targetEl.classList.add(...classes);\n else targetEl.classList.remove(...classes);\n }\n }\n });\n }\n return resolvedValue;\n };\n\n // \uD074\uB798\uC2A4 \uC774\uB984\uC744 \uC120\uC5B8\uC5D0 \uC801\uC740 add/remove/toggle \uC740 \uC774\uB984\uC5D0 \uC774\uBBF8 \uC758\uB3C4\uAC00 \uC788\uB2E4 \u2014 \uBC18\uD658\uAC12\uACFC \uC0C1\uAD00\uC5C6\uC774 \uC2E4\uD589.\n // valueKey \uB97C \uC92C\uC744 \uB54C\uB9CC \uADF8 \uD0A4 \uAC12\uC744 \uBCF8\uB2E4: add/remove \uB294 truthy \uC77C \uB54C\uB9CC, toggle \uC740 true/false \uB85C \uCF1C\uACE0 \uB054.\n // toggle \uC740 valueKey \uC5C6\uC774 \uBC18\uD658\uAC12\uC774 \uC5C6\uC73C\uBA74 \uADF8\uB0E5 \uD1A0\uAE00, true/false \uB97C \uBC18\uD658\uD558\uBA74 \uADF8\uB300\uB85C \uCF1C\uACE0 \uB048\uB2E4.\n const fixedName = typeof classMap === 'string' && (action === 'add' || action === 'remove' || action === 'toggle') ? classMap : undefined;\n const applyFixed = (raw: any) => {\n const vk = finalOptions.valueKey;\n const v = vk !== undefined ? (raw && typeof raw === 'object' ? raw[vk] : undefined) : action === 'toggle' ? raw : true;\n if (vk !== undefined && (action === 'toggle' ? v === undefined : !v)) return;\n const win = (this as any).ownerDocument?.defaultView || window;\n const hostSet = { ...SwcUtils.getHelperAndHostSet(this as unknown as HTMLElement), $this: this };\n getTargetElements(selector, this, win, finalOptions.root || 'auto').forEach(el => {\n if (finalOptions.filter && !finalOptions.filter(el, v, { currentThis: this, helper: hostSet })) return;\n if (action === 'add') el.classList.add(fixedName!);\n else if (action === 'remove') el.classList.remove(fixedName!);\n else if (v === undefined) el.classList.toggle(fixedName!);\n else el.classList.toggle(fixedName!, !!v);\n });\n };\n const run = (raw: any) => (fixedName ? applyFixed(raw) : handleResult(extractValue(raw)));\n\n if (res instanceof Promise) {\n // \uC790\uAE30 \uBAAB(valueKey)\uB9CC \uC801\uC6A9\uD558\uACE0 \uC6D0\uB798 \uBC18\uD658\uAC12\uC740 \uADF8\uB300\uB85C \uC704\uB85C \uB118\uAE34\uB2E4 \u2014 \uC704\uC5D0 \uC313\uC778 \uB2E4\uB978 \uC544\uC6C3\uD48B\uB3C4 \uC790\uAE30 \uD0A4\uB97C \uCC3E\uAC8C\n return res.then((v: any) => { run(v); return v; });\n } else {\n run(res);\n return res;\n }\n };\n return descriptor;\n };\n };\n}\n\nexport function applyClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function applyClass(selector: string, action?: ClassAction, options?: ClassQueryOptions): MethodDecorator;\nexport function applyClass(selector: ClassFnSelector, action?: ClassAction, options?: ClassNonQueryOptions): MethodDecorator;\nexport function applyClass(selectorOrTarget?: any, actionOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @applyClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof actionOrPropertyKey === 'string' || typeof actionOrPropertyKey === 'symbol')) {\n return createClassDecorator('update')('$this', {})(selectorOrTarget as Object, actionOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n const action = (typeof actionOrPropertyKey === 'string' ? actionOrPropertyKey : 'update') as ClassAction;\n const options = (typeof actionOrPropertyKey === 'object' ? actionOrPropertyKey : optionsOrDescriptor) as ClassApplyOptions | undefined;\n return createClassDecorator(action)(selectorOrTarget, options);\n }\n // Without selector (defaults to $this)\n const action = (typeof selectorOrTarget === 'string' ? selectorOrTarget : 'update') as ClassAction;\n const options = (typeof selectorOrTarget === 'object' ? selectorOrTarget : actionOrPropertyKey) as ClassApplyOptions | undefined;\n return createClassDecorator(action)('$this', options);\n}\n\nexport function setClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function setClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function setClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function setClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @setClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('set')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('set')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('set')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function updateClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function updateClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function updateClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function updateClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @updateClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('update')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('update')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('update')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function addClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function addClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function addClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function addClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @addClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('add')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('add')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('add')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function removeClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function removeClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function removeClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function removeClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @removeClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('remove')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('remove')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('remove')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\nexport function toggleClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function toggleClass(selector: string, classMapOrOptions?: string | ClassMapType | ClassQueryOptions, options?: ClassQueryOptions): MethodDecorator;\nexport function toggleClass(selector: ClassFnSelector, classMap: string | ClassMapType): MethodDecorator;\nexport function toggleClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {\n // Bare decorator: @toggleClass\n if (optionsOrDescriptor !== undefined && typeof selectorOrTarget !== 'string' && typeof selectorOrTarget !== 'function' && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {\n return createClassDecorator('toggle')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);\n }\n // With selector\n if (typeof selectorOrTarget === 'string' || typeof selectorOrTarget === 'function') {\n return createClassDecorator('toggle')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);\n }\n // Without selector (defaults to $this)\n return createClassDecorator('toggle')('$this', selectorOrTarget as ClassApplyOptions);\n}\n\n// \u2500\u2500\u2500 Aliases \u2500\u2500\u2500\n// class\uB294 \uC608\uC57D\uC5B4\uB77C cls \uC0AC\uC6A9\nexport const cls = applyClass;\n\n// \u2500\u2500\u2500 \uD3B8\uC758 \uD5EC\uD37C (selector/root \uC0DD\uB7B5) \u2500\u2500\u2500\n\nexport function clsAppHost(action: ClassAction, options?: ClassQueryOptions): MethodDecorator;\nexport function clsAppHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;\nexport function clsAppHost(actionOrTarget?: ClassAction | Object, optionsOrPropertyKey?: ClassQueryOptions | string | symbol, descriptor?: PropertyDescriptor): any {\n if ((typeof optionsOrPropertyKey === 'string' || typeof optionsOrPropertyKey === 'symbol') && descriptor !== undefined) {\n return (applyClass('$appHost', undefined as any, {}) as any)(actionOrTarget, optionsOrPropertyKey, descriptor);\n }\n return applyClass('$appHost', actionOrTarget as any, optionsOrPropertyKey as ClassQueryOptions);\n}\nexport function clsLight(selector: string, action?: ClassAction, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsLight(selector: string, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsLight(selector: string, actionOrOptions?: ClassAction | Omit<ClassQueryOptions, 'root'>, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator {\n const action = (typeof actionOrOptions === 'string' ? actionOrOptions : undefined) as ClassAction | undefined;\n const opts = (typeof actionOrOptions === 'object' ? actionOrOptions : options) as Omit<ClassQueryOptions, 'root'> | undefined;\n return applyClass(selector, action, {...opts ?? {}, root: 'light'});\n}\nexport function clsShadow(selector: string, action?: ClassAction, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsShadow(selector: string, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsShadow(selector: string, actionOrOptions?: ClassAction | Omit<ClassQueryOptions, 'root'>, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator {\n const action = (typeof actionOrOptions === 'string' ? actionOrOptions : undefined) as ClassAction | undefined;\n const opts = (typeof actionOrOptions === 'object' ? actionOrOptions : options) as Omit<ClassQueryOptions, 'root'> | undefined;\n return applyClass(selector, action, {...opts ?? {}, root: 'shadow'});\n}\nexport function clsAll(selector: string, action?: ClassAction, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsAll(selector: string, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator;\nexport function clsAll(selector: string, actionOrOptions?: ClassAction | Omit<ClassQueryOptions, 'root'>, options?: Omit<ClassQueryOptions, 'root'>): MethodDecorator {\n const action = (typeof actionOrOptions === 'string' ? actionOrOptions : undefined) as ClassAction | undefined;\n const opts = (typeof actionOrOptions === 'object' ? actionOrOptions : options) as Omit<ClassQueryOptions, 'root'> | undefined;\n return applyClass(selector, action, {...opts ?? {}, root: 'all'});\n}\n\nexport const findAllClassMetadata = (target: any): Map<string | symbol, ClassApplyMetadata> => {\n const result = new Map<string | symbol, ClassApplyMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ClassApplyMetadata>>(CLASS_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
6
  "names": ["cls", "action", "options"]
7
7
  }
@@ -182,9 +182,16 @@ function applyNode(selectorOrOptions, maybeOptions) {
182
182
  }
183
183
  return v;
184
184
  };
185
+ const decide = (raw) => {
186
+ if (options.position === "remove" || options.position === "clearChildren") {
187
+ if (options.valueKey === void 0) return true;
188
+ return raw && typeof raw === "object" ? raw[options.valueKey] : void 0;
189
+ }
190
+ return extractValue(raw);
191
+ };
185
192
  const runApply = (target, val) => {
186
193
  const pos = options.position || "beforeEnd";
187
- if (pos === "remove" && !val) return;
194
+ if ((pos === "remove" || pos === "clearChildren") && !val) return;
188
195
  const processedVal = val;
189
196
  if (!options.filter || options.filter(target, processedVal, { currentThis: this, helper: hostSet })) {
190
197
  applyToDom(this, target, processedVal, pos, currentWin);
@@ -197,13 +204,13 @@ function applyNode(selectorOrOptions, maybeOptions) {
197
204
  }
198
205
  if (res instanceof Promise) {
199
206
  return res.then((finalRes) => {
200
- const extracted = extractValue(finalRes);
207
+ const extracted = decide(finalRes);
201
208
  fallbackNodes.forEach((it) => it.remove());
202
209
  if (extracted !== void 0 && targetEl) runApply(targetEl, extracted);
203
210
  return finalRes;
204
211
  });
205
212
  } else {
206
- const extracted = extractValue(res);
213
+ const extracted = decide(res);
207
214
  if (extracted !== void 0 && targetEl) runApply(targetEl, extracted);
208
215
  return res;
209
216
  }