@dooboostore/simple-web-component 1.0.23 → 1.0.24

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 (78) hide show
  1. package/README.md +238 -44
  2. package/dist/cjs/decorators/applyNode.js +129 -34
  3. package/dist/cjs/decorators/applyNode.js.map +2 -2
  4. package/dist/cjs/decorators/attribute.js +21 -2
  5. package/dist/cjs/decorators/attribute.js.map +2 -2
  6. package/dist/cjs/decorators/changedAttributeHost.js.map +2 -2
  7. package/dist/cjs/decorators/classList.js +60 -17
  8. package/dist/cjs/decorators/classList.js.map +2 -2
  9. package/dist/cjs/decorators/query.js +77 -2
  10. package/dist/cjs/decorators/query.js.map +2 -2
  11. package/dist/cjs/decorators/queryAll.js +77 -2
  12. package/dist/cjs/decorators/queryAll.js.map +2 -2
  13. package/dist/cjs/decorators/setAttribute.js +4 -4
  14. package/dist/cjs/decorators/setAttribute.js.map +2 -2
  15. package/dist/cjs/decorators/style.js +46 -15
  16. package/dist/cjs/decorators/style.js.map +2 -2
  17. package/dist/cjs/index.js +4 -4
  18. package/dist/cjs/index.js.map +2 -2
  19. package/dist/cjs/utils/Utils.js +140 -1
  20. package/dist/cjs/utils/Utils.js.map +2 -2
  21. package/dist/esm/decorators/applyNode.js +129 -34
  22. package/dist/esm/decorators/applyNode.js.map +2 -2
  23. package/dist/esm/decorators/attribute.js +21 -2
  24. package/dist/esm/decorators/attribute.js.map +2 -2
  25. package/dist/esm/decorators/changedAttributeHost.js.map +2 -2
  26. package/dist/esm/decorators/classList.js +60 -17
  27. package/dist/esm/decorators/classList.js.map +2 -2
  28. package/dist/esm/decorators/query.js +77 -2
  29. package/dist/esm/decorators/query.js.map +2 -2
  30. package/dist/esm/decorators/queryAll.js +77 -2
  31. package/dist/esm/decorators/queryAll.js.map +2 -2
  32. package/dist/esm/decorators/setAttribute.js +4 -4
  33. package/dist/esm/decorators/setAttribute.js.map +2 -2
  34. package/dist/esm/decorators/style.js +46 -15
  35. package/dist/esm/decorators/style.js.map +2 -2
  36. package/dist/esm/index.js +4 -4
  37. package/dist/esm/index.js.map +2 -2
  38. package/dist/esm/utils/Utils.js +140 -1
  39. package/dist/esm/utils/Utils.js.map +2 -2
  40. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +542 -155
  41. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  42. package/dist/types/decorators/applyNode.d.ts +49 -27
  43. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  44. package/dist/types/decorators/attribute.d.ts +11 -4
  45. package/dist/types/decorators/attribute.d.ts.map +1 -1
  46. package/dist/types/decorators/classList.d.ts +15 -5
  47. package/dist/types/decorators/classList.d.ts.map +1 -1
  48. package/dist/types/decorators/query.d.ts +68 -4
  49. package/dist/types/decorators/query.d.ts.map +1 -1
  50. package/dist/types/decorators/queryAll.d.ts +70 -1
  51. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  52. package/dist/types/decorators/setAttribute.d.ts.map +1 -1
  53. package/dist/types/decorators/style.d.ts +17 -8
  54. package/dist/types/decorators/style.d.ts.map +1 -1
  55. package/dist/types/index.d.ts +1 -2
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/utils/Utils.d.ts +49 -0
  58. package/dist/types/utils/Utils.d.ts.map +1 -1
  59. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +542 -155
  60. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  61. package/package.json +3 -3
  62. package/src/decorators/applyNode.ts +179 -60
  63. package/src/decorators/attribute.ts +43 -10
  64. package/src/decorators/changedAttributeHost.ts +1 -1
  65. package/src/decorators/classList.ts +79 -17
  66. package/src/decorators/query.ts +147 -5
  67. package/src/decorators/queryAll.ts +148 -2
  68. package/src/decorators/setAttribute.ts +6 -5
  69. package/src/decorators/style.ts +67 -22
  70. package/src/index.ts +6 -6
  71. package/src/utils/Utils.ts +144 -0
  72. package/dist/cjs/utils/TemplateUtils.js +0 -109
  73. package/dist/cjs/utils/TemplateUtils.js.map +0 -7
  74. package/dist/esm/utils/TemplateUtils.js +0 -90
  75. package/dist/esm/utils/TemplateUtils.js.map +0 -7
  76. package/dist/types/utils/TemplateUtils.d.ts +0 -59
  77. package/dist/types/utils/TemplateUtils.d.ts.map +0 -1
  78. package/src/utils/TemplateUtils.ts +0 -92
@@ -20,27 +20,40 @@ function createClassListDecorator(action) {
20
20
  const r = options.root || "auto";
21
21
  const hostSet = SwcUtils.getHostSet(this);
22
22
  const targetEls = [];
23
- if (selector === ":host" || !selector) {
24
- targetEls.push(this);
25
- } else if (selector === ":parentHost") {
26
- if (hostSet.$parentHost) targetEls.push(hostSet.$parentHost);
27
- } else if (selector === ":appHost") {
28
- if (hostSet.$appHost) targetEls.push(hostSet.$appHost);
29
- } else {
23
+ const applyRoot = (t) => {
24
+ if (!t || !(t instanceof HTMLElement)) return;
25
+ if (r === "auto") {
26
+ targetEls.push(t);
27
+ } else {
28
+ if (r === "light" || r === "all") targetEls.push(t);
29
+ if ((r === "shadow" || r === "all") && t.shadowRoot) {
30
+ }
31
+ }
32
+ };
33
+ if (selector === ":parentHost") applyRoot(hostSet.$parentHost);
34
+ else if (selector === ":appHost") applyRoot(hostSet.$appHost);
35
+ else if (selector === ":firstHost") applyRoot(hostSet.$firstHost);
36
+ else if (selector === ":lastHost") applyRoot(hostSet.$lastHost);
37
+ else if (selector === ":firstAppHost") applyRoot(hostSet.$firstAppHost);
38
+ else if (selector === ":lastAppHost") applyRoot(hostSet.$lastAppHost);
39
+ else if (selector === ":hosts") hostSet.$hosts.forEach(applyRoot);
40
+ else if (selector === ":appHosts") hostSet.$appHosts.forEach(applyRoot);
41
+ else if (selector === ":host" || !selector) applyRoot(this);
42
+ else {
30
43
  if (r === "shadow") {
31
44
  const found = this.shadowRoot?.querySelectorAll(selector);
32
- if (found) targetEls.push(...found);
45
+ if (found) targetEls.push(...Array.from(found));
33
46
  } else if (r === "light") {
34
47
  const found = this.querySelectorAll(selector);
35
- if (found) targetEls.push(...found);
48
+ if (found) targetEls.push(...Array.from(found));
36
49
  } else if (r === "all") {
37
50
  const sFound = this.shadowRoot?.querySelectorAll(selector);
38
51
  const lFound = this.querySelectorAll(selector);
39
- if (sFound) targetEls.push(...sFound);
40
- if (lFound) targetEls.push(...lFound);
52
+ if (sFound) targetEls.push(...Array.from(sFound));
53
+ if (lFound) targetEls.push(...Array.from(lFound));
41
54
  } else {
42
55
  const found = (this.shadowRoot || this).querySelectorAll(selector);
43
- if (found) targetEls.push(...found);
56
+ if (found) targetEls.push(...Array.from(found));
44
57
  }
45
58
  }
46
59
  targetEls.forEach((targetEl) => {
@@ -83,11 +96,41 @@ const updateClassList = (selector, options = {}) => createClassListDecorator("up
83
96
  const addClassList = (selector, options = {}) => createClassListDecorator("add")(selector, options);
84
97
  const removeClassList = (selector, options = {}) => createClassListDecorator("remove")(selector, options);
85
98
  const toggleClassList = (selector, options = {}) => createClassListDecorator("toggle")(selector, options);
86
- const setClassListHost = (options = {}) => createClassListDecorator("set")(":host", options);
87
- const updateClassListHost = (options = {}) => createClassListDecorator("update")(":host", options);
88
- const addClassListHost = (options = {}) => createClassListDecorator("add")(":host", options);
89
- const removeClassListHost = (options = {}) => createClassListDecorator("remove")(":host", options);
90
- const toggleClassListHost = (options = {}) => createClassListDecorator("toggle")(":host", options);
99
+ function setClassListHost(targetOrOptions, propertyKey, descriptor) {
100
+ if (propertyKey !== void 0) {
101
+ const decorator = createClassListDecorator("set")(":host", {});
102
+ return decorator(targetOrOptions, propertyKey, descriptor);
103
+ }
104
+ return createClassListDecorator("set")(":host", targetOrOptions || {});
105
+ }
106
+ function updateClassListHost(targetOrOptions, propertyKey, descriptor) {
107
+ if (propertyKey !== void 0) {
108
+ const decorator = createClassListDecorator("update")(":host", {});
109
+ return decorator(targetOrOptions, propertyKey, descriptor);
110
+ }
111
+ return createClassListDecorator("update")(":host", targetOrOptions || {});
112
+ }
113
+ function addClassListHost(targetOrOptions, propertyKey, descriptor) {
114
+ if (propertyKey !== void 0) {
115
+ const decorator = createClassListDecorator("add")(":host", {});
116
+ return decorator(targetOrOptions, propertyKey, descriptor);
117
+ }
118
+ return createClassListDecorator("add")(":host", targetOrOptions || {});
119
+ }
120
+ function removeClassListHost(targetOrOptions, propertyKey, descriptor) {
121
+ if (propertyKey !== void 0) {
122
+ const decorator = createClassListDecorator("remove")(":host", {});
123
+ return decorator(targetOrOptions, propertyKey, descriptor);
124
+ }
125
+ return createClassListDecorator("remove")(":host", targetOrOptions || {});
126
+ }
127
+ function toggleClassListHost(targetOrOptions, propertyKey, descriptor) {
128
+ if (propertyKey !== void 0) {
129
+ const decorator = createClassListDecorator("toggle")(":host", {});
130
+ return decorator(targetOrOptions, propertyKey, descriptor);
131
+ }
132
+ return createClassListDecorator("toggle")(":host", targetOrOptions || {});
133
+ }
91
134
  const findAllClassListMetadata = (target) => {
92
135
  const result = /* @__PURE__ */ new Map();
93
136
  const maps = ReflectUtils.findAllMetadata(CLASS_LIST_METADATA_KEY, target);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/classList.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions } from '../types';\n\nexport const CLASS_LIST_METADATA_KEY = Symbol('simple-web-component:class-list');\n\nexport type ClassListAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';\n\nexport interface ClassListMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: ClassListAction;\n options: SwcQueryOptions;\n}\n\nfunction createClassListDecorator(action: ClassListAction) {\n return (selector: string, options: SwcQueryOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(CLASS_LIST_METADATA_KEY, constructor) as Map<string | symbol, ClassListMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ClassListMetadata>();\n ReflectUtils.defineMetadata(CLASS_LIST_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, action, options });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await original.apply(this, args);\n if (res !== undefined) {\n const r = options.root || 'auto';\n const hostSet = SwcUtils.getHostSet(this as any);\n const targetEls: HTMLElement[] = [];\n\n if (selector === ':host' || !selector) {\n targetEls.push(this as any);\n } else if (selector === ':parentHost') {\n if (hostSet.$parentHost) targetEls.push(hostSet.$parentHost);\n } else if (selector === ':appHost') {\n if (hostSet.$appHost) targetEls.push(hostSet.$appHost);\n } else {\n if (r === 'shadow') {\n const found = this.shadowRoot?.querySelectorAll(selector);\n if (found) targetEls.push(...found);\n } else if (r === 'light') {\n const found = (this as any).querySelectorAll(selector);\n if (found) targetEls.push(...found);\n } else if (r === 'all') {\n const sFound = this.shadowRoot?.querySelectorAll(selector);\n const lFound = (this as any).querySelectorAll(selector);\n if (sFound) targetEls.push(...sFound);\n if (lFound) targetEls.push(...lFound);\n } else {\n // auto\n const found = (this.shadowRoot || (this as any)).querySelectorAll(selector);\n if (found) targetEls.push(...found);\n }\n }\n\n targetEls.forEach(targetEl => {\n if (action === 'set') {\n let classes = '';\n if (typeof res === 'object' && res !== null && !Array.isArray(res)) {\n classes = Object.entries(res)\n .filter(([_, force]) => !!force)\n .map(([cls]) => cls)\n .join(' ');\n } else {\n classes = Array.isArray(res) ? res.join(' ') : String(res);\n }\n targetEl.className = classes;\n } else if (action === 'update') {\n if (typeof res === 'object' && res !== null && !Array.isArray(res)) {\n Object.entries(res).forEach(([cls, force]) => {\n targetEl.classList.toggle(cls, !!force);\n });\n } else if (res !== undefined && res !== null) {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n targetEl.classList.add(...classes);\n }\n } else if (action === 'add') {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n targetEl.classList.add(...classes);\n } else if (action === 'remove') {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n targetEl.classList.remove(...classes);\n } else if (action === 'toggle') {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n classes.forEach(c => targetEl.classList.toggle(c));\n }\n });\n }\n return res;\n };\n };\n };\n}\n\n/**\n * @setClassList decorator to surgically replace all classes on a target element.\n * Returns: string | string[]\n */\nexport const setClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('set')(selector, options);\n\n/**\n * @updateClassList decorator to surgically update specific classes.\n * Returns: Record<string, boolean> (toggle with force) | string | string[] (add)\n */\nexport const updateClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('update')(selector, options);\n\n/**\n * @addClassList decorator to surgically add classes to a target element.\n * Returns: string | string[]\n */\nexport const addClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('add')(selector, options);\n\n/**\n * @removeClassList decorator to surgically remove classes from a target element.\n * Returns: string | string[]\n */\nexport const removeClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('remove')(selector, options);\n\n/**\n * @toggleClassList decorator to surgically toggle classes on a target element.\n * Returns: string | string[]\n */\nexport const toggleClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('toggle')(selector, options);\n\n// Host-specific versions (for :host selector)\n\n/**\n * @setClassListHost decorator to set classes on :host element.\n * Returns: string | string[]\n */\nexport const setClassListHost = (options: SwcQueryOptions = {}) => createClassListDecorator('set')(':host', options);\n\n/**\n * @updateClassListHost decorator to update specific classes on :host.\n * Returns: Record<string, boolean> (toggle with force) | string | string[] (add)\n */\nexport const updateClassListHost = (options: SwcQueryOptions = {}) => createClassListDecorator('update')(':host', options);\n\n/**\n * @addClassListHost decorator to add classes to :host element.\n * Returns: string | string[]\n */\nexport const addClassListHost = (options: SwcQueryOptions = {}) => createClassListDecorator('add')(':host', options);\n\n/**\n * @removeClassListHost decorator to remove classes from :host element.\n * Returns: string | string[]\n */\nexport const removeClassListHost = (options: SwcQueryOptions = {}) => createClassListDecorator('remove')(':host', options);\n\n/**\n * @toggleClassListHost decorator to toggle classes on :host element.\n * Returns: string | string[]\n */\nexport const toggleClassListHost = (options: SwcQueryOptions = {}) => createClassListDecorator('toggle')(':host', options);\n\nexport const findAllClassListMetadata = (target: any): Map<string | symbol, ClassListMetadata> => {\n const result = new Map<string | symbol, ClassListMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ClassListMetadata>>(CLASS_LIST_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 { SwcQueryOptions } from '../types';\n\nexport const CLASS_LIST_METADATA_KEY = Symbol('simple-web-component:class-list');\n\nexport type ClassListAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';\n\nexport interface ClassListMetadata {\n propertyKey: string | symbol;\n selector: string;\n action: ClassListAction;\n options: SwcQueryOptions;\n}\n\nfunction createClassListDecorator(action: ClassListAction) {\n return (selector: string, options: SwcQueryOptions = {}): MethodDecorator => {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(CLASS_LIST_METADATA_KEY, constructor) as Map<string | symbol, ClassListMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ClassListMetadata>();\n ReflectUtils.defineMetadata(CLASS_LIST_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, action, options });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await original.apply(this, args);\n if (res !== undefined) {\n const r = options.root || 'auto';\n const hostSet = SwcUtils.getHostSet(this as any);\n const targetEls: HTMLElement[] = [];\n\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof HTMLElement)) return;\n if (r === 'auto') {\n // Classes belong to the ELEMENT, not the ShadowRoot.\n targetEls.push(t);\n } else {\n if (r === 'light' || r === 'all') targetEls.push(t);\n if ((r === 'shadow' || r === 'all') && t.shadowRoot) {\n // Technically ShadowRoot doesn't have classList, but user might have specified it.\n // We'll skip adding shadowRoot to targetEls for class operations.\n }\n }\n };\n\n if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(this);\n else {\n if (r === 'shadow') {\n const found = this.shadowRoot?.querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n } else if (r === 'light') {\n const found = (this as any).querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n } else if (r === 'all') {\n const sFound = this.shadowRoot?.querySelectorAll(selector);\n const lFound = (this as any).querySelectorAll(selector);\n if (sFound) targetEls.push(...(Array.from(sFound) as HTMLElement[]));\n if (lFound) targetEls.push(...(Array.from(lFound) as HTMLElement[]));\n } else {\n // auto\n const found = (this.shadowRoot || (this as any)).querySelectorAll(selector);\n if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));\n }\n }\n\n targetEls.forEach(targetEl => {\n if (action === 'set') {\n let classes = '';\n if (typeof res === 'object' && res !== null && !Array.isArray(res)) {\n classes = Object.entries(res)\n .filter(([_, force]) => !!force)\n .map(([cls]) => cls)\n .join(' ');\n } else {\n classes = Array.isArray(res) ? res.join(' ') : String(res);\n }\n targetEl.className = classes;\n } else if (action === 'update') {\n if (typeof res === 'object' && res !== null && !Array.isArray(res)) {\n Object.entries(res).forEach(([cls, force]) => {\n targetEl.classList.toggle(cls, !!force);\n });\n } else if (res !== undefined && res !== null) {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n targetEl.classList.add(...classes);\n }\n } else if (action === 'add') {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n targetEl.classList.add(...classes);\n } else if (action === 'remove') {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n targetEl.classList.remove(...classes);\n } else if (action === 'toggle') {\n const classes = Array.isArray(res) ? res.map(String) : [String(res)];\n classes.forEach(c => targetEl.classList.toggle(c));\n }\n });\n }\n return res;\n };\n };\n };\n}\n\n/**\n * @setClassList decorator to surgically replace all classes on a target element.\n * Returns: string | string[]\n */\nexport const setClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('set')(selector, options);\n\n/**\n * @updateClassList decorator to surgically update specific classes.\n * Returns: Record<string, boolean> (toggle with force) | string | string[] (add)\n */\nexport const updateClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('update')(selector, options);\n\n/**\n * @addClassList decorator to surgically add classes to a target element.\n * Returns: string | string[]\n */\nexport const addClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('add')(selector, options);\n\n/**\n * @removeClassList decorator to surgically remove classes from a target element.\n * Returns: string | string[]\n */\nexport const removeClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('remove')(selector, options);\n\n/**\n * @toggleClassList decorator to surgically toggle classes on a target element.\n * Returns: string | string[]\n */\nexport const toggleClassList = (selector: string, options: SwcQueryOptions = {}) => createClassListDecorator('toggle')(selector, options);\n\n// Host-specific versions (for :host selector)\n\n/**\n * @setClassListHost decorator to set classes on :host element.\n * Returns: string | string[]\n */\nexport function setClassListHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;\nexport function setClassListHost(): MethodDecorator;\nexport function setClassListHost(options: SwcQueryOptions): MethodDecorator;\nexport function setClassListHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = createClassListDecorator('set')(':host', {});\n return decorator(targetOrOptions, propertyKey, descriptor);\n }\n return createClassListDecorator('set')(':host', (targetOrOptions as SwcQueryOptions) || {});\n}\n\n/**\n * @updateClassListHost decorator to update specific classes on :host.\n * Returns: Record<string, boolean> (toggle with force) | string | string[] (add)\n */\nexport function updateClassListHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;\nexport function updateClassListHost(): MethodDecorator;\nexport function updateClassListHost(options: SwcQueryOptions): MethodDecorator;\nexport function updateClassListHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = createClassListDecorator('update')(':host', {});\n return decorator(targetOrOptions, propertyKey, descriptor);\n }\n return createClassListDecorator('update')(':host', (targetOrOptions as SwcQueryOptions) || {});\n}\n\n/**\n * @addClassListHost decorator to add classes to :host element.\n * Returns: string | string[]\n */\nexport function addClassListHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;\nexport function addClassListHost(): MethodDecorator;\nexport function addClassListHost(options: SwcQueryOptions): MethodDecorator;\nexport function addClassListHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = createClassListDecorator('add')(':host', {});\n return decorator(targetOrOptions, propertyKey, descriptor);\n }\n return createClassListDecorator('add')(':host', (targetOrOptions as SwcQueryOptions) || {});\n}\n\n/**\n * @removeClassListHost decorator to remove classes from :host element.\n * Returns: string | string[]\n */\nexport function removeClassListHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;\nexport function removeClassListHost(): MethodDecorator;\nexport function removeClassListHost(options: SwcQueryOptions): MethodDecorator;\nexport function removeClassListHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = createClassListDecorator('remove')(':host', {});\n return decorator(targetOrOptions, propertyKey, descriptor);\n }\n return createClassListDecorator('remove')(':host', (targetOrOptions as SwcQueryOptions) || {});\n}\n\n/**\n * @toggleClassListHost decorator to toggle classes on :host element.\n * Returns: string | string[]\n */\nexport function toggleClassListHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;\nexport function toggleClassListHost(): MethodDecorator;\nexport function toggleClassListHost(options: SwcQueryOptions): MethodDecorator;\nexport function toggleClassListHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = createClassListDecorator('toggle')(':host', {});\n return decorator(targetOrOptions, propertyKey, descriptor);\n }\n return createClassListDecorator('toggle')(':host', (targetOrOptions as SwcQueryOptions) || {});\n}\n\nexport const findAllClassListMetadata = (target: any): Map<string | symbol, ClassListMetadata> => {\n const result = new Map<string | symbol, ClassListMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ClassListMetadata>>(CLASS_LIST_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": []
7
7
  }
@@ -99,12 +99,87 @@ const getQueryMetadata = (target) => {
99
99
  const constructor = target instanceof Function ? target : target.constructor;
100
100
  return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
101
101
  };
102
- function queryHost(options) {
103
- return query(":host", options);
102
+ function queryHost(targetOrOptions, propertyKey) {
103
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
104
+ return query(":host", {})(targetOrOptions, propertyKey);
105
+ }
106
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
107
+ return query(":host", targetOrOptions);
108
+ } else {
109
+ return query(":host", {});
110
+ }
111
+ }
112
+ const host = queryHost;
113
+ function parentHost(targetOrOptions, propertyKey) {
114
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
115
+ return query(":parentHost", {})(targetOrOptions, propertyKey);
116
+ }
117
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
118
+ return query(":parentHost", targetOrOptions);
119
+ } else {
120
+ return query(":parentHost", {});
121
+ }
122
+ }
123
+ function appHost(targetOrOptions, propertyKey) {
124
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
125
+ return query(":appHost", {})(targetOrOptions, propertyKey);
126
+ }
127
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
128
+ return query(":appHost", targetOrOptions);
129
+ } else {
130
+ return query(":appHost", {});
131
+ }
132
+ }
133
+ function firstHost(targetOrOptions, propertyKey) {
134
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
135
+ return query(":firstHost", {})(targetOrOptions, propertyKey);
136
+ }
137
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
138
+ return query(":firstHost", targetOrOptions);
139
+ } else {
140
+ return query(":firstHost", {});
141
+ }
142
+ }
143
+ function lastHost(targetOrOptions, propertyKey) {
144
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
145
+ return query(":lastHost", {})(targetOrOptions, propertyKey);
146
+ }
147
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
148
+ return query(":lastHost", targetOrOptions);
149
+ } else {
150
+ return query(":lastHost", {});
151
+ }
152
+ }
153
+ function firstAppHost(targetOrOptions, propertyKey) {
154
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
155
+ return query(":firstAppHost", {})(targetOrOptions, propertyKey);
156
+ }
157
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
158
+ return query(":firstAppHost", targetOrOptions);
159
+ } else {
160
+ return query(":firstAppHost", {});
161
+ }
162
+ }
163
+ function lastAppHost(targetOrOptions, propertyKey) {
164
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
165
+ return query(":lastAppHost", {})(targetOrOptions, propertyKey);
166
+ }
167
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
168
+ return query(":lastAppHost", targetOrOptions);
169
+ } else {
170
+ return query(":lastAppHost", {});
171
+ }
104
172
  }
105
173
  export {
106
174
  QUERY_METADATA_KEY,
175
+ appHost,
176
+ firstAppHost,
177
+ firstHost,
107
178
  getQueryMetadata,
179
+ host,
180
+ lastAppHost,
181
+ lastHost,
182
+ parentHost,
108
183
  query,
109
184
  queryHost
110
185
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/query.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_METADATA_KEY = Symbol('simple-web-component:query');\n\nexport function query(target: SpecialSelector): PropertyDecorator;\nexport function query(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @query decorator to inject a single element into a class property.\n */\nexport function query(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n // const propertyType = Reflect.getMetadata(\"design:type\", targetObj, propertyKey);\n // console.log(`Property ${String(propertyKey)} type is:`, propertyType.name);\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof HTMLElement)) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t; // query only returns one, so shadow preferred\n return t;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);\n if (selector === ':appHost') return applyRoot(hostSet.$appHost);\n if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);\n if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);\n if (selector === ':firstAppHost') return applyRoot(hostSet.$firstAppHost);\n if (selector === ':lastAppHost') return applyRoot(hostSet.$lastAppHost);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return win;\n if (selector === ':document') return win.document;\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n if (r === 'light') return this.querySelector(selector);\n if (r === 'all') {\n const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n return shadowMatch || this.querySelector(selector);\n }\n return (this.shadowRoot || this).querySelector(selector);\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n const targets: Element[] = [];\n\n if (r === 'shadow') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n } else if (r === 'light') {\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else if (r === 'all') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else {\n const el = (this.shadowRoot || this).querySelector(selector);\n if (el) targets.push(el);\n }\n\n targets.forEach(t => t.remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};\n\n/**\n * @hostQuery decorator - simplified version of @query for :host selector\n * Usage: @hostQuery()\n * Usage: @hostQuery({ root: 'shadow' })\n */\nexport function queryHost(options?: SwcQueryOptions): PropertyDecorator {\n return query(':host', options);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_METADATA_KEY = Symbol('simple-web-component:query');\n\nexport function query(target: SpecialSelector): PropertyDecorator;\nexport function query(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @query decorator to inject a single element into a class property.\n */\nexport function query(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@query decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n // const propertyType = Reflect.getMetadata(\"design:type\", targetObj, propertyKey);\n // console.log(`Property ${String(propertyKey)} type is:`, propertyType.name);\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t || !(t instanceof HTMLElement)) return t;\n if (r === 'auto') return t.shadowRoot || t;\n if (r === 'shadow') return t.shadowRoot;\n if (r === 'light') return t;\n if (r === 'all') return t.shadowRoot || t; // query only returns one, so shadow preferred\n return t;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);\n if (selector === ':appHost') return applyRoot(hostSet.$appHost);\n if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);\n if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);\n if (selector === ':firstAppHost') return applyRoot(hostSet.$firstAppHost);\n if (selector === ':lastAppHost') return applyRoot(hostSet.$lastAppHost);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return win;\n if (selector === ':document') return win.document;\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n if (r === 'light') return this.querySelector(selector);\n if (r === 'all') {\n const shadowMatch = this.shadowRoot ? this.shadowRoot.querySelector(selector) : null;\n return shadowMatch || this.querySelector(selector);\n }\n return (this.shadowRoot || this).querySelector(selector);\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n const targets: Element[] = [];\n\n if (r === 'shadow') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n } else if (r === 'light') {\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else if (r === 'all') {\n if (this.shadowRoot?.querySelector(selector)) targets.push(this.shadowRoot.querySelector(selector)!);\n if (this.querySelector(selector)) targets.push(this.querySelector(selector)!);\n } else {\n const el = (this.shadowRoot || this).querySelector(selector);\n if (el) targets.push(el);\n }\n\n targets.forEach(t => t.remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryMetadata = (target: any): QueryMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);\n};\n\n/**\n * @queryHost decorator - simplified version of @query for :host selector\n * Usage: @queryHost testzzs: HTMLElement | undefined;\n * Usage: @queryHost() testzzs: HTMLElement | undefined;\n * Usage: @queryHost({ root: 'shadow' }) testzzs: HTMLElement | undefined;\n */\nexport function queryHost(target: Object, propertyKey: string | symbol): void;\nexport function queryHost(): PropertyDecorator;\nexport function queryHost(options: SwcQueryOptions): PropertyDecorator;\nexport function queryHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n // Direct decorator usage: @queryHost (no parentheses)\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':host', {})(targetOrOptions, propertyKey);\n }\n\n // @queryHost() or @queryHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':host', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':host', {});\n }\n}\n\n/**\n * @host - Alias for @queryHost decorator\n * Usage: @host element: HTMLElement | undefined;\n * Usage: @host() element: HTMLElement | undefined;\n * Usage: @host({ root: 'shadow' }) element: HTMLElement | undefined;\n */\nexport const host = queryHost;\n\n/**\n * @parentHost - Query :parentHost (Direct parent SWC component)\n * Usage: @parentHost parent: HTMLElement | undefined;\n * Usage: @parentHost() parent: HTMLElement | undefined;\n * Usage: @parentHost({ root: 'shadow' }) parent: HTMLElement | undefined;\n */\nexport function parentHost(target: Object, propertyKey: string | symbol): void;\nexport function parentHost(): PropertyDecorator;\nexport function parentHost(options: SwcQueryOptions): PropertyDecorator;\nexport function parentHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':parentHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':parentHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':parentHost', {});\n }\n}\n\n/**\n * @appHost - Query :appHost (Nearest <swc-app>)\n * Usage: @appHost app: SwcAppInterface | undefined;\n * Usage: @appHost() app: SwcAppInterface | undefined;\n * Usage: @appHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function appHost(target: Object, propertyKey: string | symbol): void;\nexport function appHost(): PropertyDecorator;\nexport function appHost(options: SwcQueryOptions): PropertyDecorator;\nexport function appHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':appHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':appHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':appHost', {});\n }\n}\n\n/**\n * @firstHost - Query :firstHost (First component in hierarchy)\n * Usage: @firstHost first: HTMLElement | undefined;\n * Usage: @firstHost() first: HTMLElement | undefined;\n * Usage: @firstHost({ root: 'shadow' }) first: HTMLElement | undefined;\n */\nexport function firstHost(target: Object, propertyKey: string | symbol): void;\nexport function firstHost(): PropertyDecorator;\nexport function firstHost(options: SwcQueryOptions): PropertyDecorator;\nexport function firstHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':firstHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':firstHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':firstHost', {});\n }\n}\n\n/**\n * @lastHost - Query :lastHost (Last component in hierarchy)\n * Usage: @lastHost last: HTMLElement | undefined;\n * Usage: @lastHost() last: HTMLElement | undefined;\n * Usage: @lastHost({ root: 'shadow' }) last: HTMLElement | undefined;\n */\nexport function lastHost(target: Object, propertyKey: string | symbol): void;\nexport function lastHost(): PropertyDecorator;\nexport function lastHost(options: SwcQueryOptions): PropertyDecorator;\nexport function lastHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':lastHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':lastHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':lastHost', {});\n }\n}\n\n/**\n * @firstAppHost - Query :firstAppHost (First <swc-app> in hierarchy)\n * Usage: @firstAppHost app: SwcAppInterface | undefined;\n * Usage: @firstAppHost() app: SwcAppInterface | undefined;\n * Usage: @firstAppHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function firstAppHost(target: Object, propertyKey: string | symbol): void;\nexport function firstAppHost(): PropertyDecorator;\nexport function firstAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function firstAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':firstAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':firstAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':firstAppHost', {});\n }\n}\n\n/**\n * @lastAppHost - Query :lastAppHost (Last <swc-app> in hierarchy)\n * Usage: @lastAppHost app: SwcAppInterface | undefined;\n * Usage: @lastAppHost() app: SwcAppInterface | undefined;\n * Usage: @lastAppHost({ root: 'shadow' }) app: SwcAppInterface | undefined;\n */\nexport function lastAppHost(target: Object, propertyKey: string | symbol): void;\nexport function lastAppHost(): PropertyDecorator;\nexport function lastAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function lastAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return query(':lastAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return query(':lastAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return query(':lastAppHost', {});\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB,kBAAkB;AAC7C,SAAS,gBAAgB;AASlB,MAAM,qBAAqB,OAAO,4BAA4B;AAO/D,SAAU,MAAM,kBAA0B,UAAe,CAAA,GAAE;AAC/D,SAAO,CAAC,WAAmB,aAA8B,eAA4B;AACnF,QAAI,eAAe,QAAW;AAC5B,YAAM,IAAI,MAAM,wDAAwD,OAAO,WAAW,CAAC,GAAG;IAChG;AAEA,UAAM,cAAc,UAAU;AAC9B,QAAI,UAAU,aAAa,YAA6B,oBAAoB,WAAW;AACvF,QAAI,CAAC,SAAS;AACZ,gBAAU,CAAA;AACV,mBAAa,eAAe,oBAAoB,SAAS,WAAW;IACtE;AACA,YAAQ,KAAK,EAAE,aAAa,UAAU,kBAAkB,QAAO,CAAE;AAIjE,WAAO,eAAe,WAAW,aAAa;MAC5C,MAAG;AACD,mBAAW,IAAI;AACf,cAAM,WAAW;AAEjB,cAAM,IAAI,QAAQ,QAAQ;AAC1B,cAAM,YAAY,CAAC,MAAU;AAC3B,cAAI,CAAC,KAAK,EAAE,aAAa;AAAc,mBAAO;AAC9C,cAAI,MAAM;AAAQ,mBAAO,EAAE,cAAc;AACzC,cAAI,MAAM;AAAU,mBAAO,EAAE;AAC7B,cAAI,MAAM;AAAS,mBAAO;AAC1B,cAAI,MAAM;AAAO,mBAAO,EAAE,cAAc;AACxC,iBAAO;QACT;AAGA,cAAM,UAAU,SAAS,WAAW,IAAI;AACxC,YAAI,aAAa;AAAe,iBAAO,UAAU,QAAQ,WAAW;AACpE,YAAI,aAAa;AAAY,iBAAO,UAAU,QAAQ,QAAQ;AAC9D,YAAI,aAAa;AAAc,iBAAO,UAAU,QAAQ,UAAU;AAClE,YAAI,aAAa;AAAa,iBAAO,UAAU,QAAQ,SAAS;AAChE,YAAI,aAAa;AAAiB,iBAAO,UAAU,QAAQ,aAAa;AACxE,YAAI,aAAa;AAAgB,iBAAO,UAAU,QAAQ,YAAY;AAGtE,cAAM,SAAS,iBAAiB,IAAI;AACpC,cAAM,MAAM,QAAQ,UAAU;AAC9B,YAAI,aAAa;AAAW,iBAAO;AACnC,YAAI,aAAa;AAAa,iBAAO,IAAI;AACzC,YAAI,aAAa;AAAS,iBAAO,UAAU,IAAI;AAG/C,YAAI,MAAM;AAAU,iBAAO,KAAK,aAAa,KAAK,WAAW,cAAc,QAAQ,IAAI;AACvF,YAAI,MAAM;AAAS,iBAAO,KAAK,cAAc,QAAQ;AACrD,YAAI,MAAM,OAAO;AACf,gBAAM,cAAc,KAAK,aAAa,KAAK,WAAW,cAAc,QAAQ,IAAI;AAChF,iBAAO,eAAe,KAAK,cAAc,QAAQ;QACnD;AACA,gBAAQ,KAAK,cAAc,MAAM,cAAc,QAAQ;MACzD;MACA,IAAuB,IAAO;AAC5B,mBAAW,IAAI;AACf,YAAI,OAAO,QAAQ,OAAO,QAAW;AACnC,gBAAM,WAAW;AACjB,cAAI,SAAS,WAAW,GAAG,KAAK,aAAa;AAAS;AAEtD,gBAAM,IAAI,QAAQ,QAAQ;AAC1B,gBAAM,UAAqB,CAAA;AAE3B,cAAI,MAAM,UAAU;AAClB,gBAAI,KAAK,YAAY,cAAc,QAAQ;AAAG,sBAAQ,KAAK,KAAK,WAAW,cAAc,QAAQ,CAAE;UACrG,WAAW,MAAM,SAAS;AACxB,gBAAI,KAAK,cAAc,QAAQ;AAAG,sBAAQ,KAAK,KAAK,cAAc,QAAQ,CAAE;UAC9E,WAAW,MAAM,OAAO;AACtB,gBAAI,KAAK,YAAY,cAAc,QAAQ;AAAG,sBAAQ,KAAK,KAAK,WAAW,cAAc,QAAQ,CAAE;AACnG,gBAAI,KAAK,cAAc,QAAQ;AAAG,sBAAQ,KAAK,KAAK,cAAc,QAAQ,CAAE;UAC9E,OAAO;AACL,kBAAM,MAAM,KAAK,cAAc,MAAM,cAAc,QAAQ;AAC3D,gBAAI;AAAI,sBAAQ,KAAK,EAAE;UACzB;AAEA,kBAAQ,QAAQ,OAAK,EAAE,OAAM,CAAE;QACjC;MACF;MACA,YAAY;MACZ,cAAc;KACf;EACH;AACF;AAEO,MAAM,mBAAmB,CAAC,WAA4C;AAC3E,QAAM,cAAc,kBAAkB,WAAW,SAAS,OAAO;AACjE,SAAO,aAAa,YAAY,oBAAoB,WAAW;AACjE;AAWM,SAAU,UAAU,iBAAuB,aAA6B;AAE5E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,SAAS,CAAA,CAAE,EAAE,iBAAiB,WAAW;EACxD;AAGA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,SAAS,eAAkC;EAC1D,OAAO;AACL,WAAO,MAAM,SAAS,CAAA,CAAE;EAC1B;AACF;AAQO,MAAM,OAAO;AAWd,SAAU,WAAW,iBAAuB,aAA6B;AAC7E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,eAAe,CAAA,CAAE,EAAE,iBAAiB,WAAW;EAC9D;AACA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,eAAe,eAAkC;EAChE,OAAO;AACL,WAAO,MAAM,eAAe,CAAA,CAAE;EAChC;AACF;AAWM,SAAU,QAAQ,iBAAuB,aAA6B;AAC1E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,YAAY,CAAA,CAAE,EAAE,iBAAiB,WAAW;EAC3D;AACA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,YAAY,eAAkC;EAC7D,OAAO;AACL,WAAO,MAAM,YAAY,CAAA,CAAE;EAC7B;AACF;AAWM,SAAU,UAAU,iBAAuB,aAA6B;AAC5E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,cAAc,CAAA,CAAE,EAAE,iBAAiB,WAAW;EAC7D;AACA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,cAAc,eAAkC;EAC/D,OAAO;AACL,WAAO,MAAM,cAAc,CAAA,CAAE;EAC/B;AACF;AAWM,SAAU,SAAS,iBAAuB,aAA6B;AAC3E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,aAAa,CAAA,CAAE,EAAE,iBAAiB,WAAW;EAC5D;AACA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,aAAa,eAAkC;EAC9D,OAAO;AACL,WAAO,MAAM,aAAa,CAAA,CAAE;EAC9B;AACF;AAWM,SAAU,aAAa,iBAAuB,aAA6B;AAC/E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,iBAAiB,CAAA,CAAE,EAAE,iBAAiB,WAAW;EAChE;AACA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,iBAAiB,eAAkC;EAClE,OAAO;AACL,WAAO,MAAM,iBAAiB,CAAA,CAAE;EAClC;AACF;AAWM,SAAU,YAAY,iBAAuB,aAA6B;AAC9E,MAAI,gBAAgB,WAAc,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,WAAW;AACrG,WAAO,MAAM,gBAAgB,CAAA,CAAE,EAAE,iBAAiB,WAAW;EAC/D;AACA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,WAAO,MAAM,gBAAgB,eAAkC;EACjE,OAAO;AACL,WAAO,MAAM,gBAAgB,CAAA,CAAE;EACjC;AACF;",
6
6
  "names": []
7
7
  }
@@ -96,11 +96,86 @@ const getQueryAllMetadata = (target) => {
96
96
  const constructor = target instanceof Function ? target : target.constructor;
97
97
  return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);
98
98
  };
99
- function queryAllHost(options) {
100
- return queryAll(":host", options);
99
+ function queryAllHost(targetOrOptions, propertyKey) {
100
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
101
+ return queryAll(":host", {})(targetOrOptions, propertyKey);
102
+ }
103
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
104
+ return queryAll(":host", targetOrOptions);
105
+ } else {
106
+ return queryAll(":host", {});
107
+ }
108
+ }
109
+ const allHost = queryAllHost;
110
+ function allParentHost(targetOrOptions, propertyKey) {
111
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
112
+ return queryAll(":parentHost", {})(targetOrOptions, propertyKey);
113
+ }
114
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
115
+ return queryAll(":parentHost", targetOrOptions);
116
+ } else {
117
+ return queryAll(":parentHost", {});
118
+ }
119
+ }
120
+ function allAppHost(targetOrOptions, propertyKey) {
121
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
122
+ return queryAll(":appHost", {})(targetOrOptions, propertyKey);
123
+ }
124
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
125
+ return queryAll(":appHost", targetOrOptions);
126
+ } else {
127
+ return queryAll(":appHost", {});
128
+ }
129
+ }
130
+ function allFirstHost(targetOrOptions, propertyKey) {
131
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
132
+ return queryAll(":firstHost", {})(targetOrOptions, propertyKey);
133
+ }
134
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
135
+ return queryAll(":firstHost", targetOrOptions);
136
+ } else {
137
+ return queryAll(":firstHost", {});
138
+ }
139
+ }
140
+ function allLastHost(targetOrOptions, propertyKey) {
141
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
142
+ return queryAll(":lastHost", {})(targetOrOptions, propertyKey);
143
+ }
144
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
145
+ return queryAll(":lastHost", targetOrOptions);
146
+ } else {
147
+ return queryAll(":lastHost", {});
148
+ }
149
+ }
150
+ function allFirstAppHost(targetOrOptions, propertyKey) {
151
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
152
+ return queryAll(":firstAppHost", {})(targetOrOptions, propertyKey);
153
+ }
154
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
155
+ return queryAll(":firstAppHost", targetOrOptions);
156
+ } else {
157
+ return queryAll(":firstAppHost", {});
158
+ }
159
+ }
160
+ function allLastAppHost(targetOrOptions, propertyKey) {
161
+ if (propertyKey !== void 0 && (typeof propertyKey === "string" || typeof propertyKey === "symbol")) {
162
+ return queryAll(":lastAppHost", {})(targetOrOptions, propertyKey);
163
+ }
164
+ if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
165
+ return queryAll(":lastAppHost", targetOrOptions);
166
+ } else {
167
+ return queryAll(":lastAppHost", {});
168
+ }
101
169
  }
102
170
  export {
103
171
  QUERY_ALL_METADATA_KEY,
172
+ allAppHost,
173
+ allFirstAppHost,
174
+ allFirstHost,
175
+ allHost,
176
+ allLastAppHost,
177
+ allLastHost,
178
+ allParentHost,
104
179
  getQueryAllMetadata,
105
180
  queryAll,
106
181
  queryAllHost
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/queryAll.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryAllMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol('simple-web-component:query-all');\n\nexport function queryAll(target: SpecialSelector): PropertyDecorator;\nexport function queryAll(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @queryAll decorator to inject a list of elements into a class property.\n */\nexport function queryAll(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any): any[] => {\n if (!t) return [];\n const items = Array.isArray(t) ? t : [t];\n const results: any[] = [];\n items.forEach(it => {\n if (!(it instanceof HTMLElement)) {\n results.push(it);\n return;\n }\n if (r === 'auto') results.push(it.shadowRoot || it);\n else {\n if (r === 'light' || r === 'all') results.push(it);\n if ((r === 'shadow' || r === 'all') && it.shadowRoot) results.push(it.shadowRoot);\n }\n });\n return results;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':hosts') return applyRoot(hostSet.$hosts);\n if (selector === ':appHosts') return applyRoot(hostSet.$appHosts);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return [win];\n if (selector === ':document') return [win.document];\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n if (r === 'light') return Array.from(this.querySelectorAll(selector));\n if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n return [...sNodes, ...lNodes];\n }\n const root = this.shadowRoot || this;\n return Array.from(root.querySelectorAll(selector));\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n let targets: (Element | Node)[] = [];\n if (r === 'shadow') targets = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n else if (r === 'light') targets = Array.from(this.querySelectorAll(selector));\n else if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n targets = [...sNodes, ...lNodes];\n } else {\n targets = Array.from((this.shadowRoot || this).querySelectorAll(selector));\n }\n targets.forEach(t => (t as Element).remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n\n/**\n * @hostQueryAll decorator - simplified version of @queryAll for :host selector\n * Usage: @hostQueryAll()\n * Usage: @hostQueryAll({ root: 'shadow' })\n */\nexport function queryAllHost(options?: SwcQueryOptions): PropertyDecorator {\n return queryAll(':host', options);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { getElementConfig, ensureInit } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SpecialSelector, SwcQueryOptions } from '../types';\n\nexport interface QueryAllMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: SwcQueryOptions;\n}\n\nexport const QUERY_ALL_METADATA_KEY = Symbol('simple-web-component:query-all');\n\nexport function queryAll(target: SpecialSelector): PropertyDecorator;\nexport function queryAll(selector: string, options?: SwcQueryOptions): PropertyDecorator;\n/**\n * @queryAll decorator to inject a list of elements into a class property.\n */\nexport function queryAll(selectorOrTarget: string, options: any = {}): PropertyDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor?: never): void => {\n if (descriptor !== undefined) {\n throw new Error(`@queryAll decorator cannot be used on methods. (Method: ${String(propertyKey)})`);\n }\n\n const constructor = targetObj.constructor;\n let queries = ReflectUtils.getMetadata<QueryAllMetadata[]>(QUERY_ALL_METADATA_KEY, constructor);\n if (!queries) {\n queries = [];\n ReflectUtils.defineMetadata(QUERY_ALL_METADATA_KEY, queries, constructor);\n }\n queries.push({ propertyKey, selector: selectorOrTarget, options });\n\n Object.defineProperty(targetObj, propertyKey, {\n get(this: HTMLElement) {\n ensureInit(this);\n const selector = selectorOrTarget;\n\n const r = options.root || 'auto';\n const applyRoot = (t: any): any[] => {\n if (!t) return [];\n const items = Array.isArray(t) ? t : [t];\n const results: any[] = [];\n items.forEach(it => {\n if (!(it instanceof HTMLElement)) {\n results.push(it);\n return;\n }\n if (r === 'auto') results.push(it.shadowRoot || it);\n else {\n if (r === 'light' || r === 'all') results.push(it);\n if ((r === 'shadow' || r === 'all') && it.shadowRoot) results.push(it.shadowRoot);\n }\n });\n return results;\n };\n\n // --- Special Selectors: HostSet ---\n const hostSet = SwcUtils.getHostSet(this);\n if (selector === ':hosts') return applyRoot(hostSet.$hosts);\n if (selector === ':appHosts') return applyRoot(hostSet.$appHosts);\n\n // --- Special Selectors: Env ---\n const config = getElementConfig(this);\n const win = config?.window || window;\n if (selector === ':window') return [win];\n if (selector === ':document') return [win.document];\n if (selector === ':host') return applyRoot(this);\n\n // --- Standard Selectors ---\n if (r === 'shadow') return this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n if (r === 'light') return Array.from(this.querySelectorAll(selector));\n if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n return [...sNodes, ...lNodes];\n }\n const root = this.shadowRoot || this;\n return Array.from(root.querySelectorAll(selector));\n },\n set(this: HTMLElement, nv: any) {\n ensureInit(this);\n if (nv === null || nv === undefined || (Array.isArray(nv) && nv.length === 0)) {\n const selector = selectorOrTarget;\n if (selector.startsWith(':') && selector !== ':host') return;\n\n const r = options.root || 'auto';\n let targets: (Element | Node)[] = [];\n if (r === 'shadow') targets = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n else if (r === 'light') targets = Array.from(this.querySelectorAll(selector));\n else if (r === 'all') {\n const sNodes = this.shadowRoot ? Array.from(this.shadowRoot.querySelectorAll(selector)) : [];\n const lNodes = Array.from(this.querySelectorAll(selector));\n targets = [...sNodes, ...lNodes];\n } else {\n targets = Array.from((this.shadowRoot || this).querySelectorAll(selector));\n }\n targets.forEach(t => (t as Element).remove());\n }\n },\n enumerable: true,\n configurable: true\n });\n };\n}\n\nexport const getQueryAllMetadata = (target: any): QueryAllMetadata[] | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);\n};\n\n/**\n * @hostQueryAll decorator - simplified version of @queryAll for :host selector\n * Usage: @hostQueryAll()\n * Usage: @hostQueryAll({ root: 'shadow' })\n */\n/**\n * @queryAllHost decorator - simplified version of @queryAll for :host selector\n * Usage: @queryAllHost items: HTMLElement[];\n * Usage: @queryAllHost() items: HTMLElement[];\n * Usage: @queryAllHost({ root: 'shadow' }) items: HTMLElement[];\n */\nexport function queryAllHost(target: Object, propertyKey: string | symbol): void;\nexport function queryAllHost(): PropertyDecorator;\nexport function queryAllHost(options: SwcQueryOptions): PropertyDecorator;\nexport function queryAllHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n // Direct decorator usage: @queryAllHost (no parentheses)\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':host', {})(targetOrOptions, propertyKey);\n }\n\n // @queryAllHost() or @queryAllHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':host', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':host', {});\n }\n}\n\n/**\n * @allHost - Alias for @queryAllHost decorator\n * Usage: @allHost items: HTMLElement[];\n * Usage: @allHost() items: HTMLElement[];\n * Usage: @allHost({ root: 'shadow' }) items: HTMLElement[];\n */\nexport const allHost = queryAllHost;\n/**\n * @allParentHost - Query all :parentHost (All parent SWC components)\n * Usage: @allParentHost parents: HTMLElement[];\n * Usage: @allParentHost() parents: HTMLElement[];\n * Usage: @allParentHost({ root: 'shadow' }) parents: HTMLElement[];\n */\nexport function allParentHost(target: Object, propertyKey: string | symbol): void;\nexport function allParentHost(): PropertyDecorator;\nexport function allParentHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allParentHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':parentHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':parentHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':parentHost', {});\n }\n}\n\n/**\n * @allAppHost - Query all :appHost (All <swc-app> instances)\n * Usage: @allAppHost apps: SwcAppInterface[];\n * Usage: @allAppHost() apps: SwcAppInterface[];\n * Usage: @allAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allAppHost(): PropertyDecorator;\nexport function allAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':appHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':appHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':appHost', {});\n }\n}\n\n/**\n * @allFirstHost - Query all :firstHost (All first components in hierarchy)\n * Usage: @allFirstHost firsts: HTMLElement[];\n * Usage: @allFirstHost() firsts: HTMLElement[];\n * Usage: @allFirstHost({ root: 'shadow' }) firsts: HTMLElement[];\n */\nexport function allFirstHost(target: Object, propertyKey: string | symbol): void;\nexport function allFirstHost(): PropertyDecorator;\nexport function allFirstHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allFirstHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':firstHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':firstHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':firstHost', {});\n }\n}\n\n/**\n * @allLastHost - Query all :lastHost (All last components in hierarchy)\n * Usage: @allLastHost lasts: HTMLElement[];\n * Usage: @allLastHost() lasts: HTMLElement[];\n * Usage: @allLastHost({ root: 'shadow' }) lasts: HTMLElement[];\n */\nexport function allLastHost(target: Object, propertyKey: string | symbol): void;\nexport function allLastHost(): PropertyDecorator;\nexport function allLastHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allLastHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':lastHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':lastHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':lastHost', {});\n }\n}\n\n/**\n * @allFirstAppHost - Query all :firstAppHost (All first <swc-app> in hierarchy)\n * Usage: @allFirstAppHost apps: SwcAppInterface[];\n * Usage: @allFirstAppHost() apps: SwcAppInterface[];\n * Usage: @allFirstAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allFirstAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allFirstAppHost(): PropertyDecorator;\nexport function allFirstAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allFirstAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':firstAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':firstAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':firstAppHost', {});\n }\n}\n\n/**\n * @allLastAppHost - Query all :lastAppHost (All last <swc-app> in hierarchy)\n * Usage: @allLastAppHost apps: SwcAppInterface[];\n * Usage: @allLastAppHost() apps: SwcAppInterface[];\n * Usage: @allLastAppHost({ root: 'shadow' }) apps: SwcAppInterface[];\n */\nexport function allLastAppHost(target: Object, propertyKey: string | symbol): void;\nexport function allLastAppHost(): PropertyDecorator;\nexport function allLastAppHost(options: SwcQueryOptions): PropertyDecorator;\nexport function allLastAppHost(targetOrOptions?: any, propertyKey?: string | symbol): any {\n if (propertyKey !== undefined && (typeof propertyKey === 'string' || typeof propertyKey === 'symbol')) {\n return queryAll(':lastAppHost', {})(targetOrOptions, propertyKey);\n }\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n return queryAll(':lastAppHost', targetOrOptions as SwcQueryOptions);\n } else {\n return queryAll(':lastAppHost', {});\n }\n}"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -24,11 +24,11 @@ function setAttribute(selector, name, options = {}) {
24
24
  const applyRoot = (t) => {
25
25
  if (!t) return;
26
26
  if (r === "auto") {
27
- targetEls.push(t.shadowRoot || t);
28
- return;
27
+ targetEls.push(t);
28
+ } else {
29
+ if (r === "light" || r === "all") targetEls.push(t);
30
+ if ((r === "shadow" || r === "all") && t.shadowRoot) targetEls.push(t.shadowRoot);
29
31
  }
30
- if (r === "light" || r === "all") targetEls.push(t);
31
- if ((r === "shadow" || r === "all") && t.shadowRoot) targetEls.push(t.shadowRoot);
32
32
  };
33
33
  if (selector === ":window") targetEls.push(currentWin);
34
34
  else if (selector === ":document") targetEls.push(currentWin.document);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/setAttribute.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions } from '../types';\n\nexport interface SetAttributeMetadata {\n propertyKey: string | symbol;\n selector: string;\n name: string;\n options: SwcQueryOptions;\n}\n\nexport const SET_ATTRIBUTE_METADATA_KEY = Symbol('simple-web-component:set-attribute');\n\n/**\n * @setAttribute decorator to surgically update an attribute of a target element.\n * Usage: @setAttribute(':host', 'count')\n * Usage: @setAttribute('#child', 'disabled')\n */\nexport function setAttribute(selector: string, name: string): MethodDecorator;\nexport function setAttribute(selector: string, name: string, options?: SwcQueryOptions): MethodDecorator;\nexport function setAttribute(selector: string, name: string, options: SwcQueryOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor) as Map<string | symbol, SetAttributeMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, SetAttributeMetadata>();\n ReflectUtils.defineMetadata(SET_ATTRIBUTE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, name, options });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await original.apply(this, args);\n if (res !== undefined) {\n const hostSet = SwcUtils.getHostSet(this as any);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n\n const targetEls: any[] = [];\n const r = options.root || 'auto';\n\n const applyRoot = (t: any) => {\n if (!t) return;\n if (r === 'auto') {\n targetEls.push((t as any).shadowRoot || t);\n return;\n }\n if (r === 'light' || r === 'all') targetEls.push(t);\n if ((r === 'shadow' || r === 'all') && (t as any).shadowRoot) targetEls.push((t as any).shadowRoot);\n };\n\n if (selector === ':window') targetEls.push(currentWin);\n else if (selector === ':document') targetEls.push(currentWin.document as any);\n else if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(this);\n else {\n const roots: any[] = [];\n if (r === 'shadow') {\n if ((this as any).shadowRoot) roots.push((this as any).shadowRoot);\n } else if (r === 'light') {\n roots.push(this as any);\n } else if (r === 'all') {\n roots.push(this as any);\n if ((this as any).shadowRoot) roots.push((this as any).shadowRoot);\n } else {\n roots.push((this as any).shadowRoot || (this as any));\n }\n roots.forEach(root => targetEls.push(...root.querySelectorAll(selector)));\n }\n\n targetEls.forEach(targetEl => {\n if (!targetEl || typeof (targetEl as any).setAttribute !== 'function') return;\n if (res === null) (targetEl as any).removeAttribute(name);\n else (targetEl as any).setAttribute(name, String(res));\n })\n }\n return res;\n };\n };\n}\n\nexport const getSetAttributeMetadata = (target: any): Map<string | symbol, SetAttributeMetadata> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor);\n};\n\nexport const findAllSetAttributeMetadata = (target: any): Map<string | symbol, SetAttributeMetadata> => {\n const result = new Map<string | symbol, SetAttributeMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, SetAttributeMetadata>>(SET_ATTRIBUTE_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\n/**\n * @setAttributeHost decorator - simplified version of @setAttribute for :host selector\n * Usage: @setAttributeHost('aria-disabled')\n */\nexport function setAttributeHost(name: string, options?: SwcQueryOptions): MethodDecorator {\n return setAttribute(':host', name, options);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcUtils } from '../utils/Utils';\nimport { SwcQueryOptions } from '../types';\n\nexport interface SetAttributeMetadata {\n propertyKey: string | symbol;\n selector: string;\n name: string;\n options: SwcQueryOptions;\n}\n\nexport const SET_ATTRIBUTE_METADATA_KEY = Symbol('simple-web-component:set-attribute');\n\n/**\n * @setAttribute decorator to surgically update an attribute of a target element.\n * Usage: @setAttribute(':host', 'count')\n * Usage: @setAttribute('#child', 'disabled')\n */\nexport function setAttribute(selector: string, name: string): MethodDecorator;\nexport function setAttribute(selector: string, name: string, options?: SwcQueryOptions): MethodDecorator;\nexport function setAttribute(selector: string, name: string, options: SwcQueryOptions = {}): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor) as Map<string | symbol, SetAttributeMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, SetAttributeMetadata>();\n ReflectUtils.defineMetadata(SET_ATTRIBUTE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, name, options });\n\n const original = descriptor.value;\n descriptor.value = async function (...args: any[]) {\n ensureInit(this);\n const res = await original.apply(this, args);\n if (res !== undefined) {\n const hostSet = SwcUtils.getHostSet(this as any);\n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n\n const targetEls: any[] = [];\n const r = options.root || 'auto';\n\n const applyRoot = (t: any) => {\n if (!t) return;\n if (r === 'auto') {\n // Attributes belong to the ELEMENT, not the ShadowRoot.\n targetEls.push(t);\n } else {\n if (r === 'light' || r === 'all') targetEls.push(t);\n if ((r === 'shadow' || r === 'all') && (t as any).shadowRoot) targetEls.push((t as any).shadowRoot);\n }\n };\n\n if (selector === ':window') targetEls.push(currentWin);\n else if (selector === ':document') targetEls.push(currentWin.document as any);\n else if (selector === ':parentHost') applyRoot(hostSet.$parentHost);\n else if (selector === ':appHost') applyRoot(hostSet.$appHost);\n else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);\n else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);\n else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);\n else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);\n else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);\n else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);\n else if (selector === ':host' || !selector) applyRoot(this);\n else {\n const roots: any[] = [];\n if (r === 'shadow') {\n if ((this as any).shadowRoot) roots.push((this as any).shadowRoot);\n } else if (r === 'light') {\n roots.push(this as any);\n } else if (r === 'all') {\n roots.push(this as any);\n if ((this as any).shadowRoot) roots.push((this as any).shadowRoot);\n } else {\n roots.push((this as any).shadowRoot || (this as any));\n }\n roots.forEach(root => targetEls.push(...root.querySelectorAll(selector)));\n }\n\n targetEls.forEach(targetEl => {\n if (!targetEl || typeof (targetEl as any).setAttribute !== 'function') return;\n if (res === null) (targetEl as any).removeAttribute(name);\n else (targetEl as any).setAttribute(name, String(res));\n });\n }\n return res;\n };\n };\n}\n\nexport const getSetAttributeMetadata = (target: any): Map<string | symbol, SetAttributeMetadata> | undefined => {\n const constructor = target instanceof Function ? target : target.constructor;\n return ReflectUtils.getMetadata(SET_ATTRIBUTE_METADATA_KEY, constructor);\n};\n\nexport const findAllSetAttributeMetadata = (target: any): Map<string | symbol, SetAttributeMetadata> => {\n const result = new Map<string | symbol, SetAttributeMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, SetAttributeMetadata>>(SET_ATTRIBUTE_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\n/**\n * @setAttributeHost decorator - simplified version of @setAttribute for :host selector\n * Usage: @setAttributeHost('aria-disabled')\n */\nexport function setAttributeHost(name: string, options?: SwcQueryOptions): MethodDecorator {\n return setAttribute(':host', name, options);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }