@dooboostore/simple-web-component 1.0.24 → 1.0.25

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 (130) hide show
  1. package/README.md +64 -3406
  2. package/dist/cjs/decorators/addEventListener.js +1 -1
  3. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  4. package/dist/cjs/decorators/applyAttribute.js +148 -0
  5. package/dist/cjs/decorators/applyAttribute.js.map +7 -0
  6. package/dist/cjs/decorators/applyClass.js +164 -0
  7. package/dist/cjs/decorators/applyClass.js.map +7 -0
  8. package/dist/cjs/decorators/applyNode.js +87 -194
  9. package/dist/cjs/decorators/applyNode.js.map +2 -2
  10. package/dist/cjs/decorators/{style.js → applyStyle.js} +50 -60
  11. package/dist/cjs/decorators/applyStyle.js.map +7 -0
  12. package/dist/cjs/decorators/attribute.js +10 -16
  13. package/dist/cjs/decorators/attribute.js.map +2 -2
  14. package/dist/cjs/decorators/changedAttributeHost.js +1 -1
  15. package/dist/cjs/decorators/changedAttributeHost.js.map +2 -2
  16. package/dist/cjs/decorators/elementDefine.js +14 -23
  17. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  18. package/dist/cjs/decorators/emitCustomEvent.js +5 -2
  19. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  20. package/dist/cjs/decorators/index.js +3 -3
  21. package/dist/cjs/decorators/index.js.map +2 -2
  22. package/dist/cjs/decorators/lifecycles.js +9 -9
  23. package/dist/cjs/decorators/lifecycles.js.map +2 -2
  24. package/dist/cjs/decorators/query.js +1 -1
  25. package/dist/cjs/decorators/query.js.map +2 -2
  26. package/dist/cjs/decorators/queryAll.js +1 -1
  27. package/dist/cjs/decorators/queryAll.js.map +2 -2
  28. package/dist/cjs/elements/SwcAppEngine.js +19 -4
  29. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  30. package/dist/cjs/elements/SwcAppMixin.js +2 -0
  31. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  32. package/dist/cjs/utils/Utils.js +1 -1
  33. package/dist/cjs/utils/Utils.js.map +2 -2
  34. package/dist/esm/decorators/addEventListener.js +1 -1
  35. package/dist/esm/decorators/addEventListener.js.map +2 -2
  36. package/dist/esm/decorators/applyAttribute.js +129 -0
  37. package/dist/esm/decorators/applyAttribute.js.map +7 -0
  38. package/dist/esm/decorators/applyClass.js +145 -0
  39. package/dist/esm/decorators/applyClass.js.map +7 -0
  40. package/dist/esm/decorators/applyNode.js +87 -194
  41. package/dist/esm/decorators/applyNode.js.map +2 -2
  42. package/dist/esm/decorators/{style.js → applyStyle.js} +47 -57
  43. package/dist/esm/decorators/applyStyle.js.map +7 -0
  44. package/dist/esm/decorators/attribute.js +10 -16
  45. package/dist/esm/decorators/attribute.js.map +2 -2
  46. package/dist/esm/decorators/changedAttributeHost.js +1 -1
  47. package/dist/esm/decorators/changedAttributeHost.js.map +2 -2
  48. package/dist/esm/decorators/elementDefine.js +14 -23
  49. package/dist/esm/decorators/elementDefine.js.map +2 -2
  50. package/dist/esm/decorators/emitCustomEvent.js +5 -2
  51. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  52. package/dist/esm/decorators/index.js +3 -3
  53. package/dist/esm/decorators/index.js.map +1 -1
  54. package/dist/esm/decorators/lifecycles.js +9 -9
  55. package/dist/esm/decorators/lifecycles.js.map +2 -2
  56. package/dist/esm/decorators/query.js +1 -1
  57. package/dist/esm/decorators/query.js.map +2 -2
  58. package/dist/esm/decorators/queryAll.js +1 -1
  59. package/dist/esm/decorators/queryAll.js.map +2 -2
  60. package/dist/esm/elements/SwcAppEngine.js +19 -4
  61. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  62. package/dist/esm/elements/SwcAppMixin.js +2 -0
  63. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  64. package/dist/esm/utils/Utils.js +1 -1
  65. package/dist/esm/utils/Utils.js.map +2 -2
  66. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +2884 -586
  67. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  68. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  69. package/dist/types/decorators/applyAttribute.d.ts +22 -0
  70. package/dist/types/decorators/applyAttribute.d.ts.map +1 -0
  71. package/dist/types/decorators/applyClass.d.ts +65 -0
  72. package/dist/types/decorators/applyClass.d.ts.map +1 -0
  73. package/dist/types/decorators/applyNode.d.ts +15 -123
  74. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  75. package/dist/types/decorators/applyStyle.d.ts +21 -0
  76. package/dist/types/decorators/applyStyle.d.ts.map +1 -0
  77. package/dist/types/decorators/attribute.d.ts +10 -19
  78. package/dist/types/decorators/attribute.d.ts.map +1 -1
  79. package/dist/types/decorators/changedAttributeHost.d.ts.map +1 -1
  80. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  81. package/dist/types/decorators/emitCustomEvent.d.ts +1 -1
  82. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  83. package/dist/types/decorators/index.d.ts +3 -3
  84. package/dist/types/decorators/index.d.ts.map +1 -1
  85. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  86. package/dist/types/decorators/query.d.ts.map +1 -1
  87. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  88. package/dist/types/elements/SwcAppEngine.d.ts +7 -0
  89. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  90. package/dist/types/elements/SwcAppMixin.d.ts +1 -1
  91. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  92. package/dist/types/utils/Utils.d.ts.map +1 -1
  93. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +2884 -586
  94. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  95. package/package.json +3 -3
  96. package/src/decorators/addEventListener.ts +1 -1
  97. package/src/decorators/applyAttribute.ts +147 -0
  98. package/src/decorators/applyClass.ts +158 -0
  99. package/src/decorators/applyNode.ts +112 -330
  100. package/src/decorators/applyStyle.ts +128 -0
  101. package/src/decorators/attribute.ts +21 -55
  102. package/src/decorators/changedAttributeHost.ts +1 -1
  103. package/src/decorators/elementDefine.ts +18 -39
  104. package/src/decorators/emitCustomEvent.ts +6 -3
  105. package/src/decorators/index.ts +3 -3
  106. package/src/decorators/lifecycles.ts +9 -11
  107. package/src/decorators/query.ts +1 -1
  108. package/src/decorators/queryAll.ts +1 -1
  109. package/src/elements/SwcAppEngine.ts +32 -4
  110. package/src/elements/SwcAppMixin.ts +2 -0
  111. package/src/utils/Utils.ts +2 -1
  112. package/dist/cjs/decorators/classList.js +0 -177
  113. package/dist/cjs/decorators/classList.js.map +0 -7
  114. package/dist/cjs/decorators/setAttribute.js +0 -111
  115. package/dist/cjs/decorators/setAttribute.js.map +0 -7
  116. package/dist/cjs/decorators/style.js.map +0 -7
  117. package/dist/esm/decorators/classList.js +0 -158
  118. package/dist/esm/decorators/classList.js.map +0 -7
  119. package/dist/esm/decorators/setAttribute.js +0 -92
  120. package/dist/esm/decorators/setAttribute.js.map +0 -7
  121. package/dist/esm/decorators/style.js.map +0 -7
  122. package/dist/types/decorators/classList.d.ts +0 -71
  123. package/dist/types/decorators/classList.d.ts.map +0 -1
  124. package/dist/types/decorators/setAttribute.d.ts +0 -23
  125. package/dist/types/decorators/setAttribute.d.ts.map +0 -1
  126. package/dist/types/decorators/style.d.ts +0 -58
  127. package/dist/types/decorators/style.d.ts.map +0 -1
  128. package/src/decorators/classList.ts +0 -234
  129. package/src/decorators/setAttribute.ts +0 -114
  130. package/src/decorators/style.ts +0 -185
@@ -18,44 +18,54 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
18
18
  var applyNode_exports = {};
19
19
  __export(applyNode_exports, {
20
20
  APPLY_NODE_METADATA_KEY: () => APPLY_NODE_METADATA_KEY,
21
- applyAfterBeginNode: () => applyAfterBeginNode,
22
- applyAfterBeginNodeHost: () => applyAfterBeginNodeHost,
23
- applyAfterEndNode: () => applyAfterEndNode,
24
- applyAfterEndNodeHost: () => applyAfterEndNodeHost,
25
- applyBeforeBeginNode: () => applyBeforeBeginNode,
26
- applyBeforeBeginNodeHost: () => applyBeforeBeginNodeHost,
27
- applyBeforeEndNode: () => applyBeforeEndNode,
28
- applyBeforeEndNodeHost: () => applyBeforeEndNodeHost,
29
21
  applyInnerHtmlNode: () => applyInnerHtmlNode,
30
22
  applyInnerHtmlNodeHost: () => applyInnerHtmlNodeHost,
31
- applyInnerTextNode: () => applyInnerTextNode,
32
- applyInnerTextNodeHost: () => applyInnerTextNodeHost,
33
23
  applyNode: () => applyNode,
34
24
  applyNodeHost: () => applyNodeHost,
35
- applyRemoveNode: () => applyRemoveNode,
36
- applyRemoveNodeHost: () => applyRemoveNodeHost,
37
25
  applyReplaceChildrenNode: () => applyReplaceChildrenNode,
38
26
  applyReplaceChildrenNodeHost: () => applyReplaceChildrenNodeHost,
39
- applyReplaceNode: () => applyReplaceNode,
40
- applyReplaceNodeHost: () => applyReplaceNodeHost,
41
27
  findAllApplyNodeMetadata: () => findAllApplyNodeMetadata
42
28
  });
43
29
  module.exports = __toCommonJS(applyNode_exports);
44
30
  var import_core = require("@dooboostore/core");
45
31
  var import_elementDefine = require("./elementDefine");
46
32
  var import_Utils = require("../utils/Utils");
47
- const APPLY_NODE_METADATA_KEY = Symbol("simple-web-component:apply-node");
33
+ const APPLY_NODE_METADATA_KEY = Symbol.for("simple-web-component:apply-node");
48
34
  const normalizeNodes = (res, doc) => {
49
35
  const items = Array.isArray(res) ? res : [res];
50
36
  return items.map((it) => {
51
- if (it instanceof Node)
52
- return it;
37
+ if (it instanceof Node) return it;
53
38
  return doc.createTextNode(it !== void 0 && it !== null ? String(it) : "");
54
39
  });
55
40
  };
41
+ const applyToDom = (targetEl, res, pos, doc) => {
42
+ if (!targetEl) return;
43
+ if (pos === "innerHtml") {
44
+ targetEl.innerHTML = res !== void 0 && res !== null ? String(res) : "";
45
+ return;
46
+ }
47
+ if (pos === "innerText") {
48
+ if (targetEl.innerText !== void 0) {
49
+ targetEl.innerText = res !== void 0 && res !== null ? String(res) : "";
50
+ }
51
+ return;
52
+ }
53
+ const isShadowRoot = targetEl instanceof ShadowRoot;
54
+ const nodes = normalizeNodes(res, doc);
55
+ if (pos === "replace") {
56
+ if (!isShadowRoot) targetEl.replaceWith(...nodes);
57
+ } else if (pos === "replaceChildren") {
58
+ targetEl.replaceChildren(...nodes);
59
+ } else {
60
+ if (pos === "beforeEnd") targetEl.append(...nodes);
61
+ else if (pos === "afterBegin") targetEl.prepend(...nodes);
62
+ else if (pos === "beforeBegin" && !isShadowRoot) targetEl.before(...nodes);
63
+ else if (pos === "afterEnd" && !isShadowRoot) targetEl.after(...nodes);
64
+ }
65
+ };
56
66
  function applyNode(selector, options = { position: "beforeEnd" }) {
57
- return (target, propertyKey, descriptor) => {
58
- const constructor = target.constructor;
67
+ return (targetObj, propertyKey, descriptor) => {
68
+ const constructor = targetObj.constructor;
59
69
  let metaList = import_core.ReflectUtils.getOwnMetadata(APPLY_NODE_METADATA_KEY, constructor);
60
70
  if (!metaList) {
61
71
  metaList = /* @__PURE__ */ new Map();
@@ -63,94 +73,58 @@ function applyNode(selector, options = { position: "beforeEnd" }) {
63
73
  }
64
74
  metaList.set(propertyKey, { propertyKey, selector, options });
65
75
  const original = descriptor.value;
66
- descriptor.value = async function(...args) {
76
+ descriptor.value = function(...args) {
67
77
  (0, import_elementDefine.ensureInit)(this);
68
- const res = await original.apply(this, args);
69
- if (res !== void 0) {
70
- const conf = (0, import_elementDefine.getElementConfig)(this);
71
- const currentWin = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
72
- const currentDoc = currentWin.document;
73
- const pos = options.position || "beforeEnd";
78
+ const conf = (0, import_elementDefine.getElementConfig)(this);
79
+ const currentWin = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
80
+ const currentDoc = currentWin.document;
81
+ const hostSet = import_Utils.SwcUtils.getHelperAndHostSet(currentWin, this);
82
+ const getTarget = () => {
74
83
  const r = options.root || "auto";
75
84
  const applyRoot = (t) => {
76
- if (!t || !(t instanceof HTMLElement))
77
- return t;
78
- if (r === "auto")
79
- return t.shadowRoot || t;
80
- if (r === "shadow")
81
- return t.shadowRoot;
82
- if (r === "light")
83
- return t;
84
- if (r === "all")
85
- return t.shadowRoot || t;
85
+ if (!t) return t;
86
+ if (r === "auto") return t.shadowRoot || t;
87
+ if (r === "shadow") return t.shadowRoot;
88
+ if (r === "light") return t;
89
+ if (r === "all") return t.shadowRoot || t;
86
90
  return t;
87
91
  };
88
- const hostSet = import_Utils.SwcUtils.getHostSet(this);
89
- if (pos === "remove") {
90
- if (res) {
91
- if (selector === ":host" || !selector) {
92
- if (r === "shadow" && this.shadowRoot) {
93
- this.shadowRoot.replaceChildren();
94
- } else {
95
- this.remove();
96
- }
97
- } else {
98
- const targetRoot = applyRoot(this);
99
- if (targetRoot) {
100
- const targets = targetRoot.querySelectorAll(selector);
101
- targets.forEach((el) => el.remove());
102
- }
103
- }
104
- }
105
- } else {
106
- let targetEl = null;
107
- if (selector === ":host") {
108
- targetEl = applyRoot(this);
109
- } else if (selector === ":parentHost") {
110
- targetEl = applyRoot(hostSet.$parentHost);
111
- } else if (selector === ":appHost") {
112
- targetEl = applyRoot(hostSet.$appHost);
113
- } else if (selector === ":firstHost") {
114
- targetEl = applyRoot(hostSet.$firstHost);
115
- } else if (selector === ":lastHost") {
116
- targetEl = applyRoot(hostSet.$lastHost);
117
- } else if (selector === ":firstAppHost") {
118
- targetEl = applyRoot(hostSet.$firstHost);
119
- } else if (selector === ":lastAppHost") {
120
- targetEl = applyRoot(hostSet.$lastAppHost);
121
- } else {
122
- const targetRoot = applyRoot(this);
123
- targetEl = targetRoot ? targetRoot.querySelector(selector) : null;
124
- }
125
- if (targetEl) {
126
- const isShadowRoot = targetEl instanceof ShadowRoot;
127
- const nodes = normalizeNodes(res, currentDoc);
128
- if (pos === "replace") {
129
- if (!isShadowRoot) {
130
- targetEl.replaceWith(...nodes);
131
- }
132
- } else if (pos === "replaceChildren") {
133
- targetEl.replaceChildren(...nodes);
134
- } else if (pos === "innerHtml") {
135
- targetEl.innerHTML = res !== void 0 && res !== null ? String(res) : "";
136
- } else if (pos === "innerText") {
137
- if (targetEl.innerText !== void 0) {
138
- targetEl.innerText = res !== void 0 && res !== null ? String(res) : "";
139
- }
140
- } else {
141
- if (pos === "beforeEnd")
142
- targetEl.append(...nodes);
143
- else if (pos === "afterBegin")
144
- targetEl.prepend(...nodes);
145
- else if (pos === "beforeBegin" && !isShadowRoot)
146
- targetEl.before(...nodes);
147
- else if (pos === "afterEnd" && !isShadowRoot)
148
- targetEl.after(...nodes);
149
- }
150
- }
92
+ if (selector === ":host") return applyRoot(this);
93
+ if (selector === ":parentHost") return applyRoot(hostSet.$parentHost);
94
+ if (selector === ":appHost") return applyRoot(hostSet.$appHost);
95
+ if (selector === ":firstHost") return applyRoot(hostSet.$firstHost);
96
+ if (selector === ":lastHost") return applyRoot(hostSet.$lastHost);
97
+ const targetRoot = applyRoot(this);
98
+ return targetRoot ? targetRoot.querySelector(selector) : null;
99
+ };
100
+ const targetEl = getTarget();
101
+ const res = original.apply(this, args);
102
+ const runApply = (target, val) => {
103
+ const pos = options.position || "beforeEnd";
104
+ const defaultFilter = (t, v) => {
105
+ if (v instanceof Node) return !t.contains(v);
106
+ if (pos === "innerHtml" && typeof v === "string") return t.innerHTML !== v;
107
+ if (pos === "replaceChildren" && v instanceof Node) return !t.contains(v);
108
+ return true;
109
+ };
110
+ const activeFilter = options.filter || defaultFilter;
111
+ if (activeFilter(target, val, hostSet)) {
112
+ applyToDom(target, val, pos, currentDoc);
151
113
  }
114
+ };
115
+ if (res instanceof Promise) {
116
+ if (targetEl && options.loading) {
117
+ const loadingRes = options.loading.call(this, hostSet);
118
+ applyToDom(targetEl, loadingRes, options.position || "beforeEnd", currentDoc);
119
+ }
120
+ return res.then((finalRes) => {
121
+ if (finalRes !== void 0 && targetEl) runApply(targetEl, finalRes);
122
+ return finalRes;
123
+ });
124
+ } else {
125
+ if (res !== void 0 && targetEl) runApply(targetEl, res);
126
+ return res;
152
127
  }
153
- return res;
154
128
  };
155
129
  };
156
130
  }
@@ -165,105 +139,24 @@ const findAllApplyNodeMetadata = (target) => {
165
139
  return result;
166
140
  };
167
141
  function applyNodeHost(targetOrOptions, propertyKey, descriptor) {
168
- console.log("vvvvv");
169
- if (propertyKey !== void 0 && typeof propertyKey === "string" || typeof propertyKey === "symbol") {
170
- return applyNode(":host", { position: "beforeEnd" })(targetOrOptions, propertyKey, descriptor);
171
- }
172
- if (typeof targetOrOptions === "object" && targetOrOptions !== null) {
173
- const options = targetOrOptions;
174
- return applyNode(":host", { ...options, position: options.position || "beforeEnd" });
175
- } else {
176
- return applyNode(":host", { position: "beforeEnd" });
177
- }
178
- }
179
- function applyBeforeBeginNode(selector, options) {
180
- return applyNode(selector, { ...options, position: "beforeBegin" });
142
+ if (propertyKey !== void 0) return applyNode(":host", { position: "beforeEnd" })(targetOrOptions, propertyKey, descriptor);
143
+ const opt = targetOrOptions || {};
144
+ return applyNode(":host", { position: "beforeEnd", ...opt });
181
145
  }
182
- function applyAfterBeginNode(selector, options) {
183
- return applyNode(selector, { ...options, position: "afterBegin" });
146
+ function applyReplaceChildrenNodeHost(targetOrOptions, propertyKey, descriptor) {
147
+ if (propertyKey !== void 0) return applyNode(":host", { position: "replaceChildren" })(targetOrOptions, propertyKey, descriptor);
148
+ const opt = targetOrOptions || {};
149
+ return applyNode(":host", { position: "replaceChildren", ...opt });
184
150
  }
185
- function applyBeforeEndNode(selector, options) {
186
- return applyNode(selector, { ...options, position: "beforeEnd" });
151
+ function applyInnerHtmlNodeHost(targetOrOptions, propertyKey, descriptor) {
152
+ if (propertyKey !== void 0) return applyNode(":host", { position: "innerHtml" })(targetOrOptions, propertyKey, descriptor);
153
+ const opt = targetOrOptions || {};
154
+ return applyNode(":host", { position: "innerHtml", ...opt });
187
155
  }
188
- function applyAfterEndNode(selector, options) {
189
- return applyNode(selector, { ...options, position: "afterEnd" });
190
- }
191
- function applyReplaceNode(selector, options) {
192
- return applyNode(selector, { ...options, position: "replace" });
193
- }
194
- function applyReplaceChildrenNode(selector, options) {
156
+ function applyReplaceChildrenNode(selector, options = {}) {
195
157
  return applyNode(selector, { ...options, position: "replaceChildren" });
196
158
  }
197
- function applyInnerHtmlNode(selector, options) {
159
+ function applyInnerHtmlNode(selector, options = {}) {
198
160
  return applyNode(selector, { ...options, position: "innerHtml" });
199
161
  }
200
- function applyInnerTextNode(selector, options) {
201
- return applyNode(selector, { ...options, position: "innerText" });
202
- }
203
- function applyRemoveNode(selector, options) {
204
- return applyNode(selector, { ...options, position: "remove" });
205
- }
206
- function applyBeforeBeginNodeHost(targetOrOptions, propertyKey, descriptor) {
207
- if (propertyKey !== void 0) {
208
- const decorator = applyNode(":host", { position: "beforeBegin" });
209
- return decorator(targetOrOptions, propertyKey, descriptor);
210
- }
211
- return applyNode(":host", { ...targetOrOptions || {}, position: "beforeBegin" });
212
- }
213
- function applyAfterBeginNodeHost(optionsOrTarget, propertyKey, descriptor) {
214
- if (propertyKey !== void 0) {
215
- const decorator = applyNode(":host", { position: "afterBegin" });
216
- return decorator(optionsOrTarget, propertyKey, descriptor);
217
- }
218
- return applyNode(":host", { ...optionsOrTarget || {}, position: "afterBegin" });
219
- }
220
- function applyBeforeEndNodeHost(optionsOrTarget, propertyKey, descriptor) {
221
- if (propertyKey !== void 0) {
222
- const decorator = applyNode(":host", { position: "beforeEnd" });
223
- return decorator(optionsOrTarget, propertyKey, descriptor);
224
- }
225
- return applyNode(":host", { ...optionsOrTarget || {}, position: "beforeEnd" });
226
- }
227
- function applyAfterEndNodeHost(optionsOrTarget, propertyKey, descriptor) {
228
- if (propertyKey !== void 0) {
229
- const decorator = applyNode(":host", { position: "afterEnd" });
230
- return decorator(optionsOrTarget, propertyKey, descriptor);
231
- }
232
- return applyNode(":host", { ...optionsOrTarget || {}, position: "afterEnd" });
233
- }
234
- function applyReplaceNodeHost(optionsOrTarget, propertyKey, descriptor) {
235
- if (propertyKey !== void 0) {
236
- const decorator = applyNode(":host", { position: "replace" });
237
- return decorator(optionsOrTarget, propertyKey, descriptor);
238
- }
239
- return applyNode(":host", { ...optionsOrTarget || {}, position: "replace" });
240
- }
241
- function applyReplaceChildrenNodeHost(optionsOrTarget, propertyKey, descriptor) {
242
- if (propertyKey !== void 0) {
243
- const decorator = applyNode(":host", { position: "replaceChildren" });
244
- return decorator(optionsOrTarget, propertyKey, descriptor);
245
- }
246
- return applyNode(":host", { ...optionsOrTarget || {}, position: "replaceChildren" });
247
- }
248
- function applyInnerHtmlNodeHost(optionsOrTarget, propertyKey, descriptor) {
249
- if (propertyKey !== void 0) {
250
- const decorator = applyNode(":host", { position: "innerHtml" });
251
- return decorator(optionsOrTarget, propertyKey, descriptor);
252
- }
253
- return applyNode(":host", { ...optionsOrTarget || {}, position: "innerHtml" });
254
- }
255
- function applyInnerTextNodeHost(optionsOrTarget, propertyKey, descriptor) {
256
- if (propertyKey !== void 0) {
257
- const decorator = applyNode(":host", { position: "innerText" });
258
- return decorator(optionsOrTarget, propertyKey, descriptor);
259
- }
260
- return applyNode(":host", { ...optionsOrTarget || {}, position: "innerText" });
261
- }
262
- function applyRemoveNodeHost(optionsOrTarget, propertyKey, descriptor) {
263
- if (propertyKey !== void 0) {
264
- const decorator = applyNode(":host", { position: "remove" });
265
- return decorator(optionsOrTarget, propertyKey, descriptor);
266
- }
267
- return applyNode(":host", { ...optionsOrTarget || {}, position: "remove" });
268
- }
269
162
  //# sourceMappingURL=applyNode.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/decorators/applyNode.ts"],
4
- "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { SwcRootType } from '../types';\nimport {SwcUtils} from \"../utils/Utils\";\n\nexport type ApplyNodePosition = 'beforeBegin' | 'afterBegin' | 'beforeEnd' | 'afterEnd' | 'replace' | 'replaceChildren' | 'innerHtml' | 'innerText' | 'remove';\n\nexport interface ApplyNodeOptions {\n position?: ApplyNodePosition;\n root?: SwcRootType;\n}\n\nexport interface ApplyNodeMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: ApplyNodeOptions;\n}\n\nexport const APPLY_NODE_METADATA_KEY = Symbol('simple-web-component:apply-node');\n\nconst normalizeNodes = (res: any, doc: Document): Node[] => {\n const items = Array.isArray(res) ? res : [res];\n return items.map(it => {\n if (it instanceof Node) return it;\n return doc.createTextNode(it !== undefined && it !== null ? String(it) : '');\n });\n};\n\n/**\n * @applyNode decorator to surgically add/replace nodes to a target element.\n * \n * Usage examples:\n * @applyNode('#list') addItem() { return '<li>New Item</li>'; } // append at end\n * @applyNode('#header', { position: 'afterBegin' }) prependItem() { return '<h1>Title</h1>'; } // prepend at start\n * @applyNode('#item', { position: 'replace' }) replaceItem() { return '<div>Replaced</div>'; } // replace element\n * @applyNode('#list', { position: 'replaceChildren' }) updateList() { return [item1, item2]; } // replace all children\n * @applyNode('#notification', { position: 'remove' }) dismissNotification() { return shouldDismiss; } // remove if truthy\n * @applyNode('.items', { position: 'remove', root: 'shadow' }) clearItems() { return true; } // remove shadow DOM elements\n * \n * Positions:\n * - 'beforeEnd' (default): Append at end of target\n * - 'afterBegin': Prepend at start of target\n * - 'beforeBegin': Insert before target\n * - 'afterEnd': Insert after target\n * - 'replace': Replace the entire target element\n * - 'replaceChildren': Replace all children of target element\n * - 'innerHtml': Set target's innerHTML\n * - 'innerText': Set target's innerText\n * - 'remove': Remove target element if returned value is truthy\n * \n * Root Options:\n * - 'auto' (default): Search shadow DOM first, then light DOM\n * - 'shadow': Search only in shadow DOM\n * - 'light': Search only in light DOM\n * - 'all': Use both (shadow preferred for query, both for remove)\n */\nexport function applyNode(selector: string, options: ApplyNodeOptions = { position: 'beforeEnd' }): MethodDecorator {\n return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = target.constructor;\n let metaList = ReflectUtils.getOwnMetadata(APPLY_NODE_METADATA_KEY, constructor) as Map<string | symbol, ApplyNodeMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ApplyNodeMetadata>();\n ReflectUtils.defineMetadata(APPLY_NODE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, 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 conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n const currentDoc = currentWin.document;\n\n const pos = options.position || 'beforeEnd';\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 const hostSet = SwcUtils.getHostSet(this);\n // const getTargetRoot = () => {\n // if (r === 'shadow') return this.shadowRoot;\n // if (r === 'light') return this as any;\n // if (r === 'all') return this.shadowRoot || (this as any);\n // return this.shadowRoot || (this as any); // auto\n // };\n\n if (pos === 'remove') {\n // Remove element(s) if returned value is truthy\n if (res) {\n if (selector === ':host' || !selector) {\n if (r === 'shadow' && this.shadowRoot) {\n // Remove all children from shadow DOM\n this.shadowRoot.replaceChildren();\n } else {\n // Remove the component itself\n (this as any).remove();\n }\n } else {\n const targetRoot = applyRoot(this);\n if (targetRoot) {\n const targets = targetRoot.querySelectorAll(selector);\n targets.forEach((el: Element) => el.remove());\n }\n }\n }\n } else {\n let targetEl: any = null;\n\n if (selector === ':host') {\n targetEl = applyRoot(this)\n } else if (selector === ':parentHost') {\n targetEl = applyRoot(hostSet.$parentHost)\n } else if (selector === ':appHost') {\n targetEl = applyRoot(hostSet.$appHost)\n } else if (selector === ':firstHost') {\n targetEl = applyRoot(hostSet.$firstHost)\n } else if (selector === ':lastHost') {\n targetEl = applyRoot(hostSet.$lastHost)\n } else if (selector === ':firstAppHost') {\n targetEl = applyRoot(hostSet.$firstHost)\n } else if (selector === ':lastAppHost') {\n targetEl = applyRoot(hostSet.$lastAppHost);\n } else {\n const targetRoot = applyRoot(this);\n targetEl = targetRoot ? targetRoot.querySelector(selector) : null;\n }\n\n if (targetEl) {\n const isShadowRoot = targetEl instanceof ShadowRoot;\n const nodes = normalizeNodes(res, currentDoc);\n\n if (pos === 'replace') {\n // ShadowRoot doesn't support replaceWith\n if (!isShadowRoot) {\n targetEl.replaceWith(...nodes);\n }\n } else if (pos === 'replaceChildren') {\n // Replace all children of target element\n targetEl.replaceChildren(...nodes);\n } else if (pos === 'innerHtml') {\n // Set innerHTML\n targetEl.innerHTML = res !== undefined && res !== null ? String(res) : '';\n } else if (pos === 'innerText') {\n // Set innerText\n if (targetEl.innerText !== undefined) {\n targetEl.innerText = res !== undefined && res !== null ? String(res) : '';\n }\n } else {\n /*\n <!-- beforebegin -->\n <p>\n <!-- afterbegin -->\n foo\n <!-- beforeend -->\n </p>\n <!-- afterend -->\n */\n if (pos === 'beforeEnd') targetEl.append(...nodes);\n else if (pos === 'afterBegin') targetEl.prepend(...nodes);\n else if (pos === 'beforeBegin' && !isShadowRoot) targetEl.before(...nodes);\n else if (pos === 'afterEnd' && !isShadowRoot) targetEl.after(...nodes);\n }\n }\n }\n }\n return res;\n };\n };\n}\n\nexport const findAllApplyNodeMetadata = (target: any): Map<string | symbol, ApplyNodeMetadata> => {\n const result = new Map<string | symbol, ApplyNodeMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ApplyNodeMetadata>>(APPLY_NODE_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 * @applyNodeHost decorator - simplified version of @applyNode for :host selector\n * Usage: @applyNodeHost addItem() { return '<li>New Item</li>'; }\n * Usage: @applyNodeHost() addItem() { return '<li>New Item</li>'; }\n * Usage: @applyNodeHost({ position: 'afterBegin' }) prependItem() { return '<h1>Title</h1>'; }\n */\nexport function applyNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyNodeHost(): MethodDecorator;\nexport function applyNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n // Direct decorator usage: @applyNodeHost (no parentheses)\n console.log('vvvvv')\n if (propertyKey !== undefined && typeof propertyKey === 'string' || typeof propertyKey === 'symbol') {\n return applyNode(':host', { position: 'beforeEnd' })(targetOrOptions, propertyKey, descriptor);\n }\n\n // @applyNodeHost() or @applyNodeHost(options)\n if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {\n const options = targetOrOptions as ApplyNodeOptions;\n return applyNode(':host', { ...options, position: options.position || 'beforeEnd' });\n } else {\n // @applyNodeHost() - use default position\n return applyNode(':host', { position: 'beforeEnd' });\n }\n}\n\n// Convenience decorators for specific positions\n\n/**\n * @applyBeforeBeginNode - Insert before target element\n */\nexport function applyBeforeBeginNode(selector: string): MethodDecorator;\nexport function applyBeforeBeginNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyBeforeBeginNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'beforeBegin' });\n}\n\n/**\n * @applyAfterBeginNode - Prepend to target element\n */\nexport function applyAfterBeginNode(selector: string): MethodDecorator;\nexport function applyAfterBeginNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyAfterBeginNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'afterBegin' });\n}\n\n/**\n * @applyBeforeEndNode - Append to target element (default)\n */\nexport function applyBeforeEndNode(selector: string): MethodDecorator;\nexport function applyBeforeEndNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyBeforeEndNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'beforeEnd' });\n}\n\n/**\n * @applyAfterEndNode - Insert after target element\n */\nexport function applyAfterEndNode(selector: string): MethodDecorator;\nexport function applyAfterEndNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyAfterEndNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'afterEnd' });\n}\n\n/**\n * @applyReplaceNode - Replace entire target element\n */\nexport function applyReplaceNode(selector: string): MethodDecorator;\nexport function applyReplaceNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'replace' });\n}\n\n/**\n * @applyReplaceChildrenNode - Replace all children of target element\n */\nexport function applyReplaceChildrenNode(selector: string): MethodDecorator;\nexport function applyReplaceChildrenNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceChildrenNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'replaceChildren' });\n}\n\n/**\n * @applyInnerHtmlNode - Set target's innerHTML\n */\nexport function applyInnerHtmlNode(selector: string): MethodDecorator;\nexport function applyInnerHtmlNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerHtmlNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'innerHtml' });\n}\n\n/**\n * @applyInnerTextNode - Set target's innerText\n */\nexport function applyInnerTextNode(selector: string): MethodDecorator;\nexport function applyInnerTextNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerTextNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'innerText' });\n}\n\n/**\n * @applyRemoveNode - Remove target element if truthy\n */\nexport function applyRemoveNode(selector: string): MethodDecorator;\nexport function applyRemoveNode(selector: string, options: ApplyNodeOptions): MethodDecorator;\nexport function applyRemoveNode(selector: string, options?: ApplyNodeOptions): any {\n return applyNode(selector, { ...options, position: 'remove' });\n}\n\n// Host versions\n\n/**\n * @applyBeforeBeginNodeHost - Insert before :host\n */\nexport function applyBeforeBeginNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;\nexport function applyBeforeBeginNodeHost(): MethodDecorator;\nexport function applyBeforeBeginNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyBeforeBeginNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'beforeBegin' });\n return decorator(targetOrOptions, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(targetOrOptions as ApplyNodeOptions || {}), position: 'beforeBegin' });\n}\n\n/**\n * @applyAfterBeginNodeHost - Prepend to :host\n */export function applyAfterBeginNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyAfterBeginNodeHost(): MethodDecorator;\nexport function applyAfterBeginNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyAfterBeginNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'afterBegin' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'afterBegin' });\n}\n\n/**\n * @applyBeforeEndNodeHost - Append to :host\n */export function applyBeforeEndNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyBeforeEndNodeHost(): MethodDecorator;\nexport function applyBeforeEndNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyBeforeEndNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'beforeEnd' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'beforeEnd' });\n}\n\n/**\n * @applyAfterEndNodeHost - Insert after :host\n */export function applyAfterEndNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyAfterEndNodeHost(): MethodDecorator;\nexport function applyAfterEndNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyAfterEndNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'afterEnd' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'afterEnd' });\n}\n\n/**\n * @applyReplaceNodeHost - Replace :host\n */export function applyReplaceNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyReplaceNodeHost(): MethodDecorator;\nexport function applyReplaceNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'replace' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'replace' });\n}\n\n/**\n * @applyReplaceChildrenNodeHost - Replace children of :host\n */export function applyReplaceChildrenNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyReplaceChildrenNodeHost(): MethodDecorator;\nexport function applyReplaceChildrenNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceChildrenNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'replaceChildren' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'replaceChildren' });\n}\n\n/**\n * @applyInnerHtmlNodeHost - Set :host innerHTML\n */export function applyInnerHtmlNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyInnerHtmlNodeHost(): MethodDecorator;\nexport function applyInnerHtmlNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerHtmlNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'innerHtml' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'innerHtml' });\n}\n\n/**\n * @applyInnerTextNodeHost - Set :host innerText\n */export function applyInnerTextNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyInnerTextNodeHost(): MethodDecorator;\nexport function applyInnerTextNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerTextNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'innerText' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'innerText' });\n}\n\n/**\n * @applyRemoveNodeHost - Remove :host if truthy\n */export function applyRemoveNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): any;export function applyRemoveNodeHost(): MethodDecorator;\nexport function applyRemoveNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyRemoveNodeHost(optionsOrTarget?: ApplyNodeOptions | any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) {\n const decorator = applyNode(':host', { position: 'remove' });\n return decorator(optionsOrTarget, propertyKey, descriptor);\n }\n return applyNode(':host', { ...(optionsOrTarget as ApplyNodeOptions || {}), position: 'remove' });\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA6B;AAC7B,2BAA6C;AAE7C,mBAAuB;AAehB,MAAM,0BAA0B,OAAO,iCAAiC;AAE/E,MAAM,iBAAiB,CAAC,KAAU,QAAyB;AACzD,QAAM,QAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAC7C,SAAO,MAAM,IAAI,QAAK;AACpB,QAAI,cAAc;AAAM,aAAO;AAC/B,WAAO,IAAI,eAAe,OAAO,UAAa,OAAO,OAAO,OAAO,EAAE,IAAI,EAAE;EAC7E,CAAC;AACH;AA8BM,SAAU,UAAU,UAAkB,UAA4B,EAAE,UAAU,YAAW,GAAE;AAC/F,SAAO,CAAC,QAAgB,aAA8B,eAAkC;AACtF,UAAM,cAAc,OAAO;AAC3B,QAAI,WAAW,yBAAa,eAAe,yBAAyB,WAAW;AAC/E,QAAI,CAAC,UAAU;AACb,iBAAW,oBAAI,IAAG;AAClB,+BAAa,eAAe,yBAAyB,UAAU,WAAW;IAC5E;AACA,aAAS,IAAI,aAAa,EAAE,aAAa,UAAU,QAAO,CAAE;AAE5D,UAAM,WAAW,WAAW;AAC5B,eAAW,QAAQ,kBAAmB,MAAW;AAC/C,2CAAW,IAAI;AACf,YAAM,MAAM,MAAM,SAAS,MAAM,MAAM,IAAI;AAC3C,UAAI,QAAQ,QAAW;AACrB,cAAM,WAAO,uCAAiB,IAAI;AAClC,cAAM,aAAc,KAAa,iBAAiB,IAAI,MAAO,OAAO,WAAW,cAAc,SAAS;AACtG,cAAM,aAAa,WAAW;AAE9B,cAAM,MAAM,QAAQ,YAAY;AAChC,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;AAEA,cAAM,UAAU,sBAAS,WAAW,IAAI;AAQxC,YAAI,QAAQ,UAAU;AAEpB,cAAI,KAAK;AACP,gBAAI,aAAa,WAAW,CAAC,UAAU;AACrC,kBAAI,MAAM,YAAY,KAAK,YAAY;AAErC,qBAAK,WAAW,gBAAe;cACjC,OAAO;AAEJ,qBAAa,OAAM;cACtB;YACF,OAAO;AACL,oBAAM,aAAa,UAAU,IAAI;AACjC,kBAAI,YAAY;AACd,sBAAM,UAAU,WAAW,iBAAiB,QAAQ;AACpD,wBAAQ,QAAQ,CAAC,OAAgB,GAAG,OAAM,CAAE;cAC9C;YACF;UACF;QACF,OAAO;AACL,cAAI,WAAgB;AAEpB,cAAI,aAAa,SAAS;AACxB,uBAAY,UAAU,IAAI;UAC5B,WAAW,aAAa,eAAe;AACrC,uBAAY,UAAU,QAAQ,WAAW;UAC3C,WAAW,aAAa,YAAY;AAClC,uBAAY,UAAU,QAAQ,QAAQ;UACxC,WAAW,aAAa,cAAc;AACpC,uBAAY,UAAU,QAAQ,UAAU;UAC1C,WAAW,aAAa,aAAa;AACnC,uBAAY,UAAU,QAAQ,SAAS;UACzC,WAAW,aAAa,iBAAiB;AACvC,uBAAY,UAAU,QAAQ,UAAU;UAC1C,WAAW,aAAa,gBAAgB;AACtC,uBAAY,UAAU,QAAQ,YAAY;UAC5C,OAAO;AACL,kBAAM,aAAa,UAAU,IAAI;AACjC,uBAAW,aAAa,WAAW,cAAc,QAAQ,IAAI;UAC/D;AAEA,cAAI,UAAU;AACZ,kBAAM,eAAe,oBAAoB;AACzC,kBAAM,QAAQ,eAAe,KAAK,UAAU;AAE5C,gBAAI,QAAQ,WAAW;AAErB,kBAAI,CAAC,cAAc;AACjB,yBAAS,YAAY,GAAG,KAAK;cAC/B;YACF,WAAW,QAAQ,mBAAmB;AAEpC,uBAAS,gBAAgB,GAAG,KAAK;YACnC,WAAW,QAAQ,aAAa;AAE9B,uBAAS,YAAY,QAAQ,UAAa,QAAQ,OAAO,OAAO,GAAG,IAAI;YACzE,WAAW,QAAQ,aAAa;AAE9B,kBAAI,SAAS,cAAc,QAAW;AACpC,yBAAS,YAAY,QAAQ,UAAa,QAAQ,OAAO,OAAO,GAAG,IAAI;cACzE;YACF,OAAO;AAUL,kBAAI,QAAQ;AAAa,yBAAS,OAAO,GAAG,KAAK;uBACxC,QAAQ;AAAc,yBAAS,QAAQ,GAAG,KAAK;uBAC/C,QAAQ,iBAAiB,CAAC;AAAc,yBAAS,OAAO,GAAG,KAAK;uBAChE,QAAQ,cAAc,CAAC;AAAc,yBAAS,MAAM,GAAG,KAAK;YACvE;UACF;QACF;MACF;AACA,aAAO;IACT;EACF;AACF;AAEO,MAAM,2BAA2B,CAAC,WAAwD;AAC/F,QAAM,SAAS,oBAAI,IAAG;AACtB,QAAM,OAAO,yBAAa,gBAAyD,yBAAyB,MAAM;AAClH,OAAK,QAAQ,SAAM;AACjB,QAAI,eAAe,KAAK;AACtB,UAAI,QAAQ,CAAC,GAAG,MAAM,OAAO,IAAI,GAAG,CAAC,CAAC;IACxC;EACF,CAAC;AACD,SAAO;AACT;AAWM,SAAU,cAAc,iBAAuB,aAA+B,YAA+B;AAEjH,UAAQ,IAAI,OAAO;AACnB,MAAI,gBAAgB,UAAa,OAAO,gBAAgB,YAAY,OAAO,gBAAgB,UAAU;AACnG,WAAO,UAAU,SAAS,EAAE,UAAU,YAAW,CAAE,EAAE,iBAAiB,aAAa,UAAU;EAC/F;AAGA,MAAI,OAAO,oBAAoB,YAAY,oBAAoB,MAAM;AACnE,UAAM,UAAU;AAChB,WAAO,UAAU,SAAS,EAAE,GAAG,SAAS,UAAU,QAAQ,YAAY,YAAW,CAAE;EACrF,OAAO;AAEL,WAAO,UAAU,SAAS,EAAE,UAAU,YAAW,CAAE;EACrD;AACF;AASM,SAAU,qBAAqB,UAAkB,SAA0B;AAC/E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,cAAa,CAAE;AACpE;AAOM,SAAU,oBAAoB,UAAkB,SAA0B;AAC9E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,aAAY,CAAE;AACnE;AAOM,SAAU,mBAAmB,UAAkB,SAA0B;AAC7E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,YAAW,CAAE;AAClE;AAOM,SAAU,kBAAkB,UAAkB,SAA0B;AAC5E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,WAAU,CAAE;AACjE;AAOM,SAAU,iBAAiB,UAAkB,SAA0B;AAC3E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,UAAS,CAAE;AAChE;AAOM,SAAU,yBAAyB,UAAkB,SAA0B;AACnF,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,kBAAiB,CAAE;AACxE;AAOM,SAAU,mBAAmB,UAAkB,SAA0B;AAC7E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,YAAW,CAAE;AAClE;AAOM,SAAU,mBAAmB,UAAkB,SAA0B;AAC7E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,YAAW,CAAE;AAClE;AAOM,SAAU,gBAAgB,UAAkB,SAA0B;AAC1E,SAAO,UAAU,UAAU,EAAE,GAAG,SAAS,UAAU,SAAQ,CAAE;AAC/D;AAUM,SAAU,yBAAyB,iBAAuB,aAA+B,YAA+B;AAC5H,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,cAAa,CAAE;AAChE,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,cAAa,CAAE;AACvG;AAMM,SAAU,wBAAwB,iBAA0C,aAA+B,YAA+B;AAC9I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,aAAY,CAAE;AAC/D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,aAAY,CAAE;AACtG;AAMM,SAAU,uBAAuB,iBAA0C,aAA+B,YAA+B;AAC7I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,YAAW,CAAE;AAC9D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,YAAW,CAAE;AACrG;AAMM,SAAU,sBAAsB,iBAA0C,aAA+B,YAA+B;AAC5I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,WAAU,CAAE;AAC7D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,WAAU,CAAE;AACpG;AAMM,SAAU,qBAAqB,iBAA0C,aAA+B,YAA+B;AAC3I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,UAAS,CAAE;AAC5D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,UAAS,CAAE;AACnG;AAMM,SAAU,6BAA6B,iBAA0C,aAA+B,YAA+B;AACnJ,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,kBAAiB,CAAE;AACpE,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,kBAAiB,CAAE;AAC3G;AAMM,SAAU,uBAAuB,iBAA0C,aAA+B,YAA+B;AAC7I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,YAAW,CAAE;AAC9D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,YAAW,CAAE;AACrG;AAMM,SAAU,uBAAuB,iBAA0C,aAA+B,YAA+B;AAC7I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,YAAW,CAAE;AAC9D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,YAAW,CAAE;AACrG;AAMM,SAAU,oBAAoB,iBAA0C,aAA+B,YAA+B;AAC1I,MAAI,gBAAgB,QAAW;AAC7B,UAAM,YAAY,UAAU,SAAS,EAAE,UAAU,SAAQ,CAAE;AAC3D,WAAO,UAAU,iBAAiB,aAAa,UAAU;EAC3D;AACA,SAAO,UAAU,SAAS,EAAE,GAAI,mBAAuC,CAAA,GAAK,UAAU,SAAQ,CAAE;AAClG;",
4
+ "sourcesContent": ["import { ReflectUtils } from '@dooboostore/core';\nimport { ensureInit, getElementConfig } from './elementDefine';\nimport { HelperHostSet, SwcRootType } from '../types';\nimport { SwcUtils } from \"../utils/Utils\";\n\nexport type ApplyNodePosition = 'beforeBegin' | 'afterBegin' | 'beforeEnd' | 'afterEnd' | 'replace' | 'replaceChildren' | 'innerHtml' | 'innerText' | 'remove';\n\nexport interface ApplyNodeOptions {\n position?: ApplyNodePosition;\n root?: SwcRootType;\n /**\n * Filter function to determine whether to perform DOM operation.\n * If it returns false, the operation is skipped.\n */\n filter?: (target: HTMLElement | ShadowRoot, newValue: any, helper: HelperHostSet) => boolean;\n /**\n * Optional loading content to display while an async method is executing.\n */\n loading?: (helper: HelperHostSet) => any;\n}\n\nexport interface ApplyNodeMetadata {\n propertyKey: string | symbol;\n selector: string;\n options: ApplyNodeOptions;\n}\n\nexport const APPLY_NODE_METADATA_KEY = Symbol.for('simple-web-component:apply-node');\n\nconst normalizeNodes = (res: any, doc: Document): Node[] => {\n const items = Array.isArray(res) ? res : [res];\n return items.map(it => {\n if (it instanceof Node) return it;\n return doc.createTextNode(it !== undefined && it !== null ? String(it) : '');\n });\n};\n\nconst applyToDom = (targetEl: any, res: any, pos: ApplyNodePosition, doc: Document) => {\n if (!targetEl) return;\n \n if (pos === 'innerHtml') {\n targetEl.innerHTML = res !== undefined && res !== null ? String(res) : '';\n return;\n }\n \n if (pos === 'innerText') {\n if (targetEl.innerText !== undefined) {\n targetEl.innerText = res !== undefined && res !== null ? String(res) : '';\n }\n return;\n }\n\n const isShadowRoot = targetEl instanceof ShadowRoot;\n const nodes = normalizeNodes(res, doc);\n if (pos === 'replace') {\n if (!isShadowRoot) targetEl.replaceWith(...nodes);\n } else if (pos === 'replaceChildren') {\n targetEl.replaceChildren(...nodes);\n } else {\n if (pos === 'beforeEnd') targetEl.append(...nodes);\n else if (pos === 'afterBegin') targetEl.prepend(...nodes);\n else if (pos === 'beforeBegin' && !isShadowRoot) targetEl.before(...nodes);\n else if (pos === 'afterEnd' && !isShadowRoot) targetEl.after(...nodes);\n }\n};\n\n/**\n * @applyNode decorator to surgically add/replace nodes to a target element.\n */\nexport function applyNode(selector: string, options: ApplyNodeOptions = { position: 'beforeEnd' }): MethodDecorator {\n return (targetObj: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const constructor = targetObj.constructor;\n let metaList = ReflectUtils.getOwnMetadata(APPLY_NODE_METADATA_KEY, constructor) as Map<string | symbol, ApplyNodeMetadata>;\n if (!metaList) {\n metaList = new Map<string | symbol, ApplyNodeMetadata>();\n ReflectUtils.defineMetadata(APPLY_NODE_METADATA_KEY, metaList, constructor);\n }\n metaList.set(propertyKey, { propertyKey, selector, options });\n\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n ensureInit(this);\n \n const conf = getElementConfig(this);\n const currentWin = (this as any)._resolveWindow?.(conf) || ((typeof window !== 'undefined' ? window : undefined) as Window);\n const currentDoc = currentWin.document;\n const hostSet = SwcUtils.getHelperAndHostSet(currentWin, this);\n \n const getTarget = () => {\n const r = options.root || 'auto';\n const applyRoot = (t: any) => {\n if (!t) 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;\n return t;\n };\n\n if (selector === ':host') return applyRoot(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 \n const targetRoot = applyRoot(this);\n return targetRoot ? targetRoot.querySelector(selector) : null;\n };\n\n const targetEl = getTarget();\n const res = original.apply(this, args);\n\n const runApply = (target: any, val: any) => {\n const pos = options.position || 'beforeEnd';\n \n // Intelligent Default Filter\n const defaultFilter = (t: any, v: any) => {\n if (v instanceof Node) return !t.contains(v);\n if (pos === 'innerHtml' && typeof v === 'string') return t.innerHTML !== v;\n if (pos === 'replaceChildren' && v instanceof Node) return !t.contains(v);\n return true;\n };\n \n const activeFilter = options.filter || defaultFilter;\n \n if (activeFilter(target, val, hostSet)) {\n applyToDom(target, val, pos, currentDoc);\n }\n };\n\n if (res instanceof Promise) {\n // \uBE44\uB3D9\uAE30\uC77C \uB54C\uB9CC \uB85C\uB529 \uD45C\uC2DC\n if (targetEl && options.loading) {\n const loadingRes = options.loading.call(this, hostSet);\n applyToDom(targetEl, loadingRes, options.position || 'beforeEnd', currentDoc);\n }\n\n return res.then(finalRes => {\n if (finalRes !== undefined && targetEl) runApply(targetEl, finalRes);\n return finalRes;\n });\n } else {\n if (res !== undefined && targetEl) runApply(targetEl, res);\n return res;\n }\n };\n };\n}\n\nexport const findAllApplyNodeMetadata = (target: any): Map<string | symbol, ApplyNodeMetadata> => {\n const result = new Map<string | symbol, ApplyNodeMetadata>();\n const maps = ReflectUtils.findAllMetadata<Map<string | symbol, ApplyNodeMetadata>>(APPLY_NODE_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\nexport function applyNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'beforeEnd' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'beforeEnd', ...opt });\n}\n\nexport function applyReplaceChildrenNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyReplaceChildrenNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyReplaceChildrenNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'replaceChildren' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'replaceChildren', ...opt });\n}\n\nexport function applyInnerHtmlNodeHost(options: ApplyNodeOptions): MethodDecorator;\nexport function applyInnerHtmlNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;\nexport function applyInnerHtmlNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {\n if (propertyKey !== undefined) return applyNode(':host', { position: 'innerHtml' })(targetOrOptions, propertyKey, descriptor);\n const opt = targetOrOptions || {};\n return applyNode(':host', { position: 'innerHtml', ...opt });\n}\n\nexport function applyReplaceChildrenNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {\n return applyNode(selector, { ...options, position: 'replaceChildren' });\n}\n\nexport function applyInnerHtmlNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {\n return applyNode(selector, { ...options, position: 'innerHtml' });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -15,9 +15,11 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var style_exports = {};
19
- __export(style_exports, {
18
+ var applyStyle_exports = {};
19
+ __export(applyStyle_exports, {
20
20
  STYLE_METADATA_KEY: () => STYLE_METADATA_KEY,
21
+ applyStyle: () => applyStyle,
22
+ applyStyleHost: () => applyStyleHost,
21
23
  findAllStyleMetadata: () => findAllStyleMetadata,
22
24
  removeStyle: () => removeStyle,
23
25
  removeStyleHost: () => removeStyleHost,
@@ -26,11 +28,11 @@ __export(style_exports, {
26
28
  updateStyle: () => updateStyle,
27
29
  updateStyleHost: () => updateStyleHost
28
30
  });
29
- module.exports = __toCommonJS(style_exports);
31
+ module.exports = __toCommonJS(applyStyle_exports);
30
32
  var import_core = require("@dooboostore/core");
31
33
  var import_elementDefine = require("./elementDefine");
32
34
  var import_Utils = require("../utils/Utils");
33
- const STYLE_METADATA_KEY = Symbol("simple-web-component:style");
35
+ const STYLE_METADATA_KEY = Symbol.for("simple-web-component:style");
34
36
  function createStyleDecorator(action) {
35
37
  return (selector, options = {}) => {
36
38
  return (target, propertyKey, descriptor) => {
@@ -46,18 +48,14 @@ function createStyleDecorator(action) {
46
48
  (0, import_elementDefine.ensureInit)(this);
47
49
  const res = await original.apply(this, args);
48
50
  if (res !== void 0) {
51
+ const win = this.ownerDocument?.defaultView || window;
52
+ const host = this;
53
+ const hostSet = { ...import_Utils.SwcUtils.getHelperAndHostSet(win, host), $this: this };
49
54
  const r = options.root || "auto";
50
- const hostSet = import_Utils.SwcUtils.getHostSet(this);
51
55
  const targetEls = [];
52
56
  const applyRoot = (t) => {
53
- if (!t || !(t instanceof HTMLElement)) return;
54
- if (r === "auto") {
55
- targetEls.push(t);
56
- } else {
57
- if (r === "light" || r === "all") targetEls.push(t);
58
- if ((r === "shadow" || r === "all") && t.shadowRoot) {
59
- }
60
- }
57
+ if (!t || !(t instanceof win.HTMLElement)) return;
58
+ targetEls.push(t);
61
59
  };
62
60
  if (selector === ":parentHost") applyRoot(hostSet.$parentHost);
63
61
  else if (selector === ":appHost") applyRoot(hostSet.$appHost);
@@ -67,71 +65,63 @@ function createStyleDecorator(action) {
67
65
  else if (selector === ":lastAppHost") applyRoot(hostSet.$lastAppHost);
68
66
  else if (selector === ":hosts") hostSet.$hosts.forEach(applyRoot);
69
67
  else if (selector === ":appHosts") hostSet.$appHosts.forEach(applyRoot);
70
- else if (selector === ":host" || !selector) applyRoot(this);
68
+ else if (selector === ":host" || !selector) applyRoot(host);
71
69
  else {
72
- if (r === "shadow") {
73
- const found = this.shadowRoot?.querySelectorAll(selector);
74
- if (found) targetEls.push(...Array.from(found));
75
- } else if (r === "light") {
76
- const found = this.querySelectorAll(selector);
77
- if (found) targetEls.push(...Array.from(found));
78
- } else if (r === "all") {
79
- const sFound = this.shadowRoot?.querySelectorAll(selector);
80
- const lFound = this.querySelectorAll(selector);
81
- if (sFound) targetEls.push(...Array.from(sFound));
82
- if (lFound) targetEls.push(...Array.from(lFound));
83
- } else {
84
- const found = (this.shadowRoot || this).querySelectorAll(selector);
70
+ const targetRoot = r === "auto" ? host.shadowRoot || host : r === "shadow" ? host.shadowRoot : host;
71
+ if (targetRoot) {
72
+ const found = targetRoot.querySelectorAll(selector);
85
73
  if (found) targetEls.push(...Array.from(found));
86
74
  }
87
75
  }
88
76
  targetEls.forEach((targetEl) => {
89
- if (action === "set") {
90
- targetEl.style.cssText = "";
91
- if (typeof res === "object" && res !== null) {
92
- Object.assign(targetEl.style, res);
93
- } else if (typeof res === "string") {
94
- targetEl.style.cssText = res;
95
- }
96
- } else if (action === "update") {
97
- if (typeof res === "object" && res !== null) {
98
- Object.assign(targetEl.style, res);
77
+ const resolvedRes = typeof res === "function" ? res(targetEl, hostSet) : res;
78
+ if (action === "set" || action === "update") {
79
+ if (action === "set") targetEl.style.cssText = "";
80
+ if (typeof resolvedRes === "object" && resolvedRes !== null && !Array.isArray(resolvedRes)) {
81
+ Object.entries(resolvedRes).forEach(([prop, val]) => {
82
+ const finalVal = typeof val === "function" ? val(targetEl, hostSet) : val;
83
+ if (finalVal === null || finalVal === void 0) {
84
+ targetEl.style.removeProperty(prop);
85
+ } else {
86
+ targetEl.style[prop] = String(finalVal);
87
+ }
88
+ });
89
+ } else if (typeof resolvedRes === "string") {
90
+ targetEl.style.cssText = resolvedRes;
99
91
  }
100
92
  } else if (action === "remove") {
101
- const props = Array.isArray(res) ? res : [res];
102
- props.forEach((p) => targetEl.style.removeProperty(String(p)));
93
+ if (typeof resolvedRes === "object" && resolvedRes !== null && !Array.isArray(resolvedRes)) {
94
+ Object.entries(resolvedRes).forEach(([prop, val]) => {
95
+ const shouldRemove = typeof val === "function" ? val(targetEl, hostSet) : !!val;
96
+ if (shouldRemove) {
97
+ targetEl.style.removeProperty(prop);
98
+ }
99
+ });
100
+ } else {
101
+ const props = Array.isArray(resolvedRes) ? resolvedRes : [resolvedRes];
102
+ props.forEach((p) => targetEl.style.removeProperty(String(p)));
103
+ }
103
104
  }
104
105
  });
105
106
  }
106
107
  return res;
107
108
  };
109
+ return descriptor;
108
110
  };
109
111
  };
110
112
  }
111
- const setStyle = (selector, options = {}) => createStyleDecorator("set")(selector, options);
112
- function setStyleHost(targetOrOptions, propertyKey, descriptor) {
113
- if (propertyKey !== void 0) {
114
- const decorator = createStyleDecorator("set")(":host", {});
115
- return decorator(targetOrOptions, propertyKey, descriptor);
116
- }
117
- return createStyleDecorator("set")(":host", targetOrOptions || {});
113
+ function applyStyle(selector, action = "update", options = {}) {
114
+ return createStyleDecorator(action)(selector, options);
118
115
  }
116
+ const setStyle = (selector, options = {}) => createStyleDecorator("set")(selector, options);
119
117
  const updateStyle = (selector, options = {}) => createStyleDecorator("update")(selector, options);
120
- function updateStyleHost(targetOrOptions, propertyKey, descriptor) {
121
- if (propertyKey !== void 0) {
122
- const decorator = createStyleDecorator("update")(":host", {});
123
- return decorator(targetOrOptions, propertyKey, descriptor);
124
- }
125
- return createStyleDecorator("update")(":host", targetOrOptions || {});
126
- }
127
118
  const removeStyle = (selector, options = {}) => createStyleDecorator("remove")(selector, options);
128
- function removeStyleHost(targetOrOptions, propertyKey, descriptor) {
129
- if (propertyKey !== void 0) {
130
- const decorator = createStyleDecorator("remove")(":host", {});
131
- return decorator(targetOrOptions, propertyKey, descriptor);
132
- }
133
- return createStyleDecorator("remove")(":host", targetOrOptions || {});
119
+ function applyStyleHost(action = "update", options = {}) {
120
+ return createStyleDecorator(action)(":host", options);
134
121
  }
122
+ const setStyleHost = (options = {}) => createStyleDecorator("set")(":host", options);
123
+ const updateStyleHost = (options = {}) => createStyleDecorator("update")(":host", options);
124
+ const removeStyleHost = (options = {}) => createStyleDecorator("remove")(":host", options);
135
125
  const findAllStyleMetadata = (target) => {
136
126
  const result = /* @__PURE__ */ new Map();
137
127
  const maps = import_core.ReflectUtils.findAllMetadata(STYLE_METADATA_KEY, target);
@@ -142,4 +132,4 @@ const findAllStyleMetadata = (target) => {
142
132
  });
143
133
  return result;
144
134
  };
145
- //# sourceMappingURL=style.js.map
135
+ //# sourceMappingURL=applyStyle.js.map