@dooboostore/simple-web-component 1.0.22 → 1.0.23

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 (71) hide show
  1. package/README.md +361 -19
  2. package/dist/cjs/decorators/applyNode.js +98 -24
  3. package/dist/cjs/decorators/applyNode.js.map +2 -2
  4. package/dist/cjs/decorators/attribute.js +0 -1
  5. package/dist/cjs/decorators/attribute.js.map +2 -2
  6. package/dist/cjs/decorators/classList.js +39 -19
  7. package/dist/cjs/decorators/classList.js.map +2 -2
  8. package/dist/cjs/decorators/elementDefine.js +1 -2
  9. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  10. package/dist/cjs/decorators/index.js +0 -1
  11. package/dist/cjs/decorators/index.js.map +2 -2
  12. package/dist/cjs/decorators/lifecycles.js +25 -0
  13. package/dist/cjs/decorators/lifecycles.js.map +2 -2
  14. package/dist/cjs/decorators/query.js.map +2 -2
  15. package/dist/cjs/decorators/style.js +39 -13
  16. package/dist/cjs/decorators/style.js.map +2 -2
  17. package/dist/cjs/utils/TemplateUtils.js +6 -0
  18. package/dist/cjs/utils/TemplateUtils.js.map +2 -2
  19. package/dist/esm/decorators/applyNode.js +98 -24
  20. package/dist/esm/decorators/applyNode.js.map +2 -2
  21. package/dist/esm/decorators/attribute.js +0 -1
  22. package/dist/esm/decorators/attribute.js.map +2 -2
  23. package/dist/esm/decorators/classList.js +39 -19
  24. package/dist/esm/decorators/classList.js.map +2 -2
  25. package/dist/esm/decorators/elementDefine.js +1 -2
  26. package/dist/esm/decorators/elementDefine.js.map +2 -2
  27. package/dist/esm/decorators/index.js +0 -1
  28. package/dist/esm/decorators/index.js.map +2 -2
  29. package/dist/esm/decorators/lifecycles.js +25 -0
  30. package/dist/esm/decorators/lifecycles.js.map +2 -2
  31. package/dist/esm/decorators/query.js.map +2 -2
  32. package/dist/esm/decorators/style.js +39 -13
  33. package/dist/esm/decorators/style.js.map +2 -2
  34. package/dist/esm/utils/TemplateUtils.js +6 -0
  35. package/dist/esm/utils/TemplateUtils.js.map +2 -2
  36. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +204 -81
  37. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +3 -3
  38. package/dist/types/decorators/applyNode.d.ts +84 -1
  39. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  40. package/dist/types/decorators/classList.d.ts +12 -10
  41. package/dist/types/decorators/classList.d.ts.map +1 -1
  42. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  43. package/dist/types/decorators/index.d.ts +0 -1
  44. package/dist/types/decorators/index.d.ts.map +1 -1
  45. package/dist/types/decorators/lifecycles.d.ts +14 -0
  46. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  47. package/dist/types/decorators/query.d.ts +0 -3
  48. package/dist/types/decorators/query.d.ts.map +1 -1
  49. package/dist/types/decorators/style.d.ts +28 -3
  50. package/dist/types/decorators/style.d.ts.map +1 -1
  51. package/dist/types/utils/TemplateUtils.d.ts +5 -0
  52. package/dist/types/utils/TemplateUtils.d.ts.map +1 -1
  53. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +204 -81
  54. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +3 -3
  55. package/package.json +3 -3
  56. package/src/decorators/applyNode.ts +199 -36
  57. package/src/decorators/attribute.ts +1 -1
  58. package/src/decorators/classList.ts +45 -22
  59. package/src/decorators/elementDefine.ts +1 -2
  60. package/src/decorators/index.ts +0 -1
  61. package/src/decorators/lifecycles.ts +40 -0
  62. package/src/decorators/query.ts +0 -2
  63. package/src/decorators/style.ts +64 -13
  64. package/src/utils/TemplateUtils.ts +9 -0
  65. package/dist/cjs/decorators/onConnectedInnerHtml.js +0 -48
  66. package/dist/cjs/decorators/onConnectedInnerHtml.js.map +0 -7
  67. package/dist/esm/decorators/onConnectedInnerHtml.js +0 -29
  68. package/dist/esm/decorators/onConnectedInnerHtml.js.map +0 -7
  69. package/dist/types/decorators/onConnectedInnerHtml.d.ts +0 -15
  70. package/dist/types/decorators/onConnectedInnerHtml.d.ts.map +0 -1
  71. package/src/decorators/onConnectedInnerHtml.ts +0 -42
@@ -1150,11 +1150,30 @@ var dooboostoreSimpleWebComponent = (() => {
1150
1150
  addClassListHost: () => addClassListHost,
1151
1151
  addEventListener: () => addEventListener,
1152
1152
  addEventListenerHost: () => addEventListenerHost,
1153
+ applyAfterBeginNode: () => applyAfterBeginNode,
1154
+ applyAfterBeginNodeHost: () => applyAfterBeginNodeHost,
1155
+ applyAfterEndNode: () => applyAfterEndNode,
1156
+ applyAfterEndNodeHost: () => applyAfterEndNodeHost,
1157
+ applyBeforeBeginNode: () => applyBeforeBeginNode,
1158
+ applyBeforeBeginNodeHost: () => applyBeforeBeginNodeHost,
1159
+ applyBeforeEndNode: () => applyBeforeEndNode,
1160
+ applyBeforeEndNodeHost: () => applyBeforeEndNodeHost,
1161
+ applyInnerHtmlNode: () => applyInnerHtmlNode,
1162
+ applyInnerHtmlNodeHost: () => applyInnerHtmlNodeHost,
1163
+ applyInnerTextNode: () => applyInnerTextNode,
1164
+ applyInnerTextNodeHost: () => applyInnerTextNodeHost,
1153
1165
  applyNode: () => applyNode,
1154
1166
  applyNodeHost: () => applyNodeHost,
1167
+ applyRemoveNode: () => applyRemoveNode,
1168
+ applyRemoveNodeHost: () => applyRemoveNodeHost,
1169
+ applyReplaceChildrenNode: () => applyReplaceChildrenNode,
1170
+ applyReplaceChildrenNodeHost: () => applyReplaceChildrenNodeHost,
1171
+ applyReplaceNode: () => applyReplaceNode,
1172
+ applyReplaceNodeHost: () => applyReplaceNodeHost,
1155
1173
  attribute: () => attribute,
1156
1174
  attributeHost: () => attributeHost,
1157
1175
  changedAttributeHost: () => changedAttributeHost,
1176
+ commentNode: () => commentNode,
1158
1177
  createElement: () => createElement,
1159
1178
  elementDefine: () => elementDefine,
1160
1179
  emitCustomEvent: () => emitCustomEvent,
@@ -1211,18 +1230,21 @@ var dooboostoreSimpleWebComponent = (() => {
1211
1230
  removeClassList: () => removeClassList,
1212
1231
  removeClassListHost: () => removeClassListHost,
1213
1232
  removeStyle: () => removeStyle,
1233
+ removeStyleHost: () => removeStyleHost,
1214
1234
  resolveTargetEls: () => resolveTargetEls,
1215
1235
  setAttribute: () => setAttribute,
1216
1236
  setAttributeHost: () => setAttributeHost,
1217
1237
  setClassList: () => setClassList,
1218
1238
  setClassListHost: () => setClassListHost,
1219
1239
  setStyle: () => setStyle,
1240
+ setStyleHost: () => setStyleHost,
1220
1241
  textNode: () => textNode,
1221
1242
  toggleClassList: () => toggleClassList,
1222
1243
  toggleClassListHost: () => toggleClassListHost,
1223
1244
  updateClassList: () => updateClassList,
1224
1245
  updateClassListHost: () => updateClassListHost,
1225
- updateStyle: () => updateStyle
1246
+ updateStyle: () => updateStyle,
1247
+ updateStyleHost: () => updateStyleHost
1226
1248
  });
1227
1249
  var import_reflect_metadata2 = __toESM(require_Reflect(), 1);
1228
1250
 
@@ -5829,30 +5851,6 @@ var dooboostoreSimpleWebComponent = (() => {
5829
5851
  })(Path = Expression2.Path || (Expression2.Path = {}));
5830
5852
  })(Expression || (Expression = {}));
5831
5853
 
5832
- // src/decorators/onConnectedInnerHtml.ts
5833
- var INNER_HTML_METADATA_KEY = Symbol("simple-web-component:inner-html");
5834
- function onConnectedInnerHtml(arg1, arg2, arg3) {
5835
- const decorator = (options, target, propertyKey) => {
5836
- const constructor = target.constructor;
5837
- let list = ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);
5838
- if (!list) {
5839
- list = [];
5840
- ReflectUtils.defineMetadata(INNER_HTML_METADATA_KEY, list, constructor);
5841
- }
5842
- list.push({ propertyKey, options });
5843
- };
5844
- if (arg2) {
5845
- return decorator({}, arg1, arg2);
5846
- }
5847
- return (target, propertyKey) => {
5848
- decorator(arg1 || {}, target, propertyKey);
5849
- };
5850
- }
5851
- var getOnConnectedInnerHtmlMetadata = (target) => {
5852
- const constructor = target instanceof Function ? target : target.constructor;
5853
- return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);
5854
- };
5855
-
5856
5854
  // src/decorators/addEventListener.ts
5857
5855
  var ADD_EVENT_LISTENER_METADATA_KEY = Symbol("simple-web-component:add-event-listener");
5858
5856
  function addEventListener(selectorOrTarget, type, options = {}) {
@@ -5883,6 +5881,7 @@ var dooboostoreSimpleWebComponent = (() => {
5883
5881
  var ON_BEFORE_ADOPTED_METADATA_KEY = Symbol("simple-web-component:on-before-adopted");
5884
5882
  var ON_AFTER_ADOPTED_METADATA_KEY = Symbol("simple-web-component:on-after-adopted");
5885
5883
  var ON_ADD_EVENT_LISTENER_METADATA_KEY = Symbol("simple-web-component:on-add-event-listener");
5884
+ var INNER_HTML_METADATA_KEY = Symbol("simple-web-component:inner-html");
5886
5885
  var ATTRIBUTE_CHANGED_WILDCARD = "*";
5887
5886
  function createLifecycleDecorator(metadataKey) {
5888
5887
  return (target, propertyKey) => {
@@ -5906,10 +5905,31 @@ var dooboostoreSimpleWebComponent = (() => {
5906
5905
  var onAfterAdopted = createLifecycleDecorator(ON_AFTER_ADOPTED_METADATA_KEY);
5907
5906
  var onAdopted = onAfterAdopted;
5908
5907
  var onAddEventListener = createLifecycleDecorator(ON_ADD_EVENT_LISTENER_METADATA_KEY);
5908
+ function onConnectedInnerHtml(arg1, arg2, arg3) {
5909
+ const decorator = (options, target, propertyKey) => {
5910
+ const constructor = target.constructor;
5911
+ let list = ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);
5912
+ if (!list) {
5913
+ list = [];
5914
+ ReflectUtils.defineMetadata(INNER_HTML_METADATA_KEY, list, constructor);
5915
+ }
5916
+ list.push({ propertyKey, options });
5917
+ };
5918
+ if (arg2) {
5919
+ return decorator({}, arg1, arg2);
5920
+ }
5921
+ return (target, propertyKey) => {
5922
+ decorator(arg1 || {}, target, propertyKey);
5923
+ };
5924
+ }
5909
5925
  var findAllLifecycleMetadata = (target, metadataKey) => {
5910
5926
  const results = ReflectUtils.findAllMetadataFlatten(metadataKey, target);
5911
5927
  return results.length > 0 ? results : void 0;
5912
5928
  };
5929
+ var getOnConnectedInnerHtmlMetadata = (target) => {
5930
+ const constructor = target instanceof Function ? target : target.constructor;
5931
+ return ReflectUtils.getMetadata(INNER_HTML_METADATA_KEY, constructor);
5932
+ };
5913
5933
 
5914
5934
  // src/decorators/attribute.ts
5915
5935
  var ATTRIBUTE_METADATA_KEY = Symbol("simple-web-component:attribute");
@@ -6013,7 +6033,6 @@ var dooboostoreSimpleWebComponent = (() => {
6013
6033
  },
6014
6034
  set(nv) {
6015
6035
  const targetType = options.type || designType;
6016
- console.log("---set", propertyKey, targetType, nv, this, this.__swc_syncing_init);
6017
6036
  const attrName = options.name || String(propertyKey);
6018
6037
  const conf = getElementConfig(this);
6019
6038
  const currentWin = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
@@ -6182,32 +6201,70 @@ var dooboostoreSimpleWebComponent = (() => {
6182
6201
  const conf = getElementConfig(this);
6183
6202
  const currentWin = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
6184
6203
  const currentDoc = currentWin.document;
6185
- let targetEl = null;
6186
- if (selector === ":host" || !selector) {
6187
- targetEl = this;
6204
+ const pos = options.position || "beforeEnd";
6205
+ const r = options.root || "auto";
6206
+ const getTargetRoot = () => {
6207
+ if (r === "shadow")
6208
+ return this.shadowRoot;
6209
+ if (r === "light")
6210
+ return this;
6211
+ if (r === "all")
6212
+ return this.shadowRoot || this;
6213
+ return this.shadowRoot || this;
6214
+ };
6215
+ if (pos === "remove") {
6216
+ if (res) {
6217
+ if (selector === ":host" || !selector) {
6218
+ if (r === "shadow" && this.shadowRoot) {
6219
+ this.shadowRoot.replaceChildren();
6220
+ } else {
6221
+ this.remove();
6222
+ }
6223
+ } else {
6224
+ const targetRoot = getTargetRoot();
6225
+ if (targetRoot) {
6226
+ const targets = targetRoot.querySelectorAll(selector);
6227
+ targets.forEach((el) => el.remove());
6228
+ }
6229
+ }
6230
+ }
6188
6231
  } else {
6189
- targetEl = (this.shadowRoot || this).querySelector(selector);
6190
- }
6191
- if (targetEl) {
6192
- const nodes = normalizeNodes(res, currentDoc);
6193
- const pos = options.position || "beforeEnd";
6194
- if (pos === "replace") {
6195
- targetEl.replaceWith(...nodes);
6196
- } else if (pos === "replaceChildren") {
6197
- targetEl.replaceChildren(...nodes);
6198
- } else if (pos === "innerHtml") {
6199
- targetEl.innerHTML = res !== void 0 && res !== null ? String(res) : "";
6200
- } else if (pos === "innerText") {
6201
- targetEl.innerText = res !== void 0 && res !== null ? String(res) : "";
6232
+ let targetEl = null;
6233
+ if (selector === ":host" || !selector) {
6234
+ if (r === "shadow") {
6235
+ targetEl = this.shadowRoot;
6236
+ } else {
6237
+ targetEl = this;
6238
+ }
6202
6239
  } else {
6203
- if (pos === "beforeEnd")
6204
- targetEl.append(...nodes);
6205
- else if (pos === "afterBegin")
6206
- targetEl.prepend(...nodes);
6207
- else if (pos === "beforeBegin")
6208
- targetEl.before(...nodes);
6209
- else if (pos === "afterEnd")
6210
- targetEl.after(...nodes);
6240
+ const targetRoot = getTargetRoot();
6241
+ targetEl = targetRoot ? targetRoot.querySelector(selector) : null;
6242
+ }
6243
+ if (targetEl) {
6244
+ const isShadowRoot = targetEl instanceof ShadowRoot;
6245
+ const nodes = normalizeNodes(res, currentDoc);
6246
+ if (pos === "replace") {
6247
+ if (!isShadowRoot) {
6248
+ targetEl.replaceWith(...nodes);
6249
+ }
6250
+ } else if (pos === "replaceChildren") {
6251
+ targetEl.replaceChildren(...nodes);
6252
+ } else if (pos === "innerHtml") {
6253
+ targetEl.innerHTML = res !== void 0 && res !== null ? String(res) : "";
6254
+ } else if (pos === "innerText") {
6255
+ if (targetEl.innerText !== void 0) {
6256
+ targetEl.innerText = res !== void 0 && res !== null ? String(res) : "";
6257
+ }
6258
+ } else {
6259
+ if (pos === "beforeEnd")
6260
+ targetEl.append(...nodes);
6261
+ else if (pos === "afterBegin")
6262
+ targetEl.prepend(...nodes);
6263
+ else if (pos === "beforeBegin" && !isShadowRoot)
6264
+ targetEl.before(...nodes);
6265
+ else if (pos === "afterEnd" && !isShadowRoot)
6266
+ targetEl.after(...nodes);
6267
+ }
6211
6268
  }
6212
6269
  }
6213
6270
  }
@@ -6228,6 +6285,24 @@ var dooboostoreSimpleWebComponent = (() => {
6228
6285
  function applyNodeHost(options = { position: "beforeEnd" }) {
6229
6286
  return applyNode(":host", options);
6230
6287
  }
6288
+ var applyBeforeBeginNode = (selector, options = {}) => applyNode(selector, { ...options, position: "beforeBegin" });
6289
+ var applyAfterBeginNode = (selector, options = {}) => applyNode(selector, { ...options, position: "afterBegin" });
6290
+ var applyBeforeEndNode = (selector, options = {}) => applyNode(selector, { ...options, position: "beforeEnd" });
6291
+ var applyAfterEndNode = (selector, options = {}) => applyNode(selector, { ...options, position: "afterEnd" });
6292
+ var applyReplaceNode = (selector, options = {}) => applyNode(selector, { ...options, position: "replace" });
6293
+ var applyReplaceChildrenNode = (selector, options = {}) => applyNode(selector, { ...options, position: "replaceChildren" });
6294
+ var applyInnerHtmlNode = (selector, options = {}) => applyNode(selector, { ...options, position: "innerHtml" });
6295
+ var applyInnerTextNode = (selector, options = {}) => applyNode(selector, { ...options, position: "innerText" });
6296
+ var applyRemoveNode = (selector, options = {}) => applyNode(selector, { ...options, position: "remove" });
6297
+ var applyBeforeBeginNodeHost = (options = {}) => applyNode(":host", { ...options, position: "beforeBegin" });
6298
+ var applyAfterBeginNodeHost = (options = {}) => applyNode(":host", { ...options, position: "afterBegin" });
6299
+ var applyBeforeEndNodeHost = (options = {}) => applyNode(":host", { ...options, position: "beforeEnd" });
6300
+ var applyAfterEndNodeHost = (options = {}) => applyNode(":host", { ...options, position: "afterEnd" });
6301
+ var applyReplaceNodeHost = (options = {}) => applyNode(":host", { ...options, position: "replace" });
6302
+ var applyReplaceChildrenNodeHost = (options = {}) => applyNode(":host", { ...options, position: "replaceChildren" });
6303
+ var applyInnerHtmlNodeHost = (options = {}) => applyNode(":host", { ...options, position: "innerHtml" });
6304
+ var applyInnerTextNodeHost = (options = {}) => applyNode(":host", { ...options, position: "innerText" });
6305
+ var applyRemoveNodeHost = (options = {}) => applyNode(":host", { ...options, position: "remove" });
6231
6306
 
6232
6307
  // src/decorators/query.ts
6233
6308
  var QUERY_METADATA_KEY = Symbol("simple-web-component:query");
@@ -6435,7 +6510,7 @@ var dooboostoreSimpleWebComponent = (() => {
6435
6510
  // src/decorators/classList.ts
6436
6511
  var CLASS_LIST_METADATA_KEY = Symbol("simple-web-component:class-list");
6437
6512
  function createClassListDecorator(action) {
6438
- return (selector) => {
6513
+ return (selector, options = {}) => {
6439
6514
  return (target, propertyKey, descriptor) => {
6440
6515
  const constructor = target.constructor;
6441
6516
  let metaList = ReflectUtils.getOwnMetadata(CLASS_LIST_METADATA_KEY, constructor);
@@ -6443,19 +6518,39 @@ var dooboostoreSimpleWebComponent = (() => {
6443
6518
  metaList = /* @__PURE__ */ new Map();
6444
6519
  ReflectUtils.defineMetadata(CLASS_LIST_METADATA_KEY, metaList, constructor);
6445
6520
  }
6446
- metaList.set(propertyKey, { propertyKey, selector, action });
6521
+ metaList.set(propertyKey, { propertyKey, selector, action, options });
6447
6522
  const original = descriptor.value;
6448
6523
  descriptor.value = async function(...args) {
6449
6524
  ensureInit2(this);
6450
6525
  const res = await original.apply(this, args);
6451
6526
  if (res !== void 0) {
6527
+ const r = options.root || "auto";
6452
6528
  const hostSet = SwcUtils.getHostSet(this);
6453
- let targetEl = null;
6454
- if (selector === ":host" || !selector) targetEl = this;
6455
- else if (selector === ":parentHost") targetEl = hostSet.$parentHost;
6456
- else if (selector === ":appHost") targetEl = hostSet.$appHost;
6457
- else targetEl = (this.shadowRoot || this).querySelector(selector);
6458
- if (targetEl) {
6529
+ const targetEls = [];
6530
+ if (selector === ":host" || !selector) {
6531
+ targetEls.push(this);
6532
+ } else if (selector === ":parentHost") {
6533
+ if (hostSet.$parentHost) targetEls.push(hostSet.$parentHost);
6534
+ } else if (selector === ":appHost") {
6535
+ if (hostSet.$appHost) targetEls.push(hostSet.$appHost);
6536
+ } else {
6537
+ if (r === "shadow") {
6538
+ const found = this.shadowRoot?.querySelectorAll(selector);
6539
+ if (found) targetEls.push(...found);
6540
+ } else if (r === "light") {
6541
+ const found = this.querySelectorAll(selector);
6542
+ if (found) targetEls.push(...found);
6543
+ } else if (r === "all") {
6544
+ const sFound = this.shadowRoot?.querySelectorAll(selector);
6545
+ const lFound = this.querySelectorAll(selector);
6546
+ if (sFound) targetEls.push(...sFound);
6547
+ if (lFound) targetEls.push(...lFound);
6548
+ } else {
6549
+ const found = (this.shadowRoot || this).querySelectorAll(selector);
6550
+ if (found) targetEls.push(...found);
6551
+ }
6552
+ }
6553
+ targetEls.forEach((targetEl) => {
6459
6554
  if (action === "set") {
6460
6555
  let classes = "";
6461
6556
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
@@ -6483,23 +6578,23 @@ var dooboostoreSimpleWebComponent = (() => {
6483
6578
  const classes = Array.isArray(res) ? res.map(String) : [String(res)];
6484
6579
  classes.forEach((c) => targetEl.classList.toggle(c));
6485
6580
  }
6486
- }
6581
+ });
6487
6582
  }
6488
6583
  return res;
6489
6584
  };
6490
6585
  };
6491
6586
  };
6492
6587
  }
6493
- var setClassList = createClassListDecorator("set");
6494
- var updateClassList = createClassListDecorator("update");
6495
- var addClassList = createClassListDecorator("add");
6496
- var removeClassList = createClassListDecorator("remove");
6497
- var toggleClassList = createClassListDecorator("toggle");
6498
- var setClassListHost = createClassListDecorator("set").bind(null, ":host");
6499
- var updateClassListHost = createClassListDecorator("update").bind(null, ":host");
6500
- var addClassListHost = createClassListDecorator("add").bind(null, ":host");
6501
- var removeClassListHost = createClassListDecorator("remove").bind(null, ":host");
6502
- var toggleClassListHost = createClassListDecorator("toggle").bind(null, ":host");
6588
+ var setClassList = (selector, options = {}) => createClassListDecorator("set")(selector, options);
6589
+ var updateClassList = (selector, options = {}) => createClassListDecorator("update")(selector, options);
6590
+ var addClassList = (selector, options = {}) => createClassListDecorator("add")(selector, options);
6591
+ var removeClassList = (selector, options = {}) => createClassListDecorator("remove")(selector, options);
6592
+ var toggleClassList = (selector, options = {}) => createClassListDecorator("toggle")(selector, options);
6593
+ var setClassListHost = (options = {}) => createClassListDecorator("set")(":host", options);
6594
+ var updateClassListHost = (options = {}) => createClassListDecorator("update")(":host", options);
6595
+ var addClassListHost = (options = {}) => createClassListDecorator("add")(":host", options);
6596
+ var removeClassListHost = (options = {}) => createClassListDecorator("remove")(":host", options);
6597
+ var toggleClassListHost = (options = {}) => createClassListDecorator("toggle")(":host", options);
6503
6598
  var findAllClassListMetadata = (target) => {
6504
6599
  const result = /* @__PURE__ */ new Map();
6505
6600
  const maps = ReflectUtils.findAllMetadata(CLASS_LIST_METADATA_KEY, target);
@@ -6514,7 +6609,7 @@ var dooboostoreSimpleWebComponent = (() => {
6514
6609
  // src/decorators/style.ts
6515
6610
  var STYLE_METADATA_KEY = Symbol("simple-web-component:style");
6516
6611
  function createStyleDecorator(action) {
6517
- return (selector) => {
6612
+ return (selector, options = {}) => {
6518
6613
  return (target, propertyKey, descriptor) => {
6519
6614
  const constructor = target.constructor;
6520
6615
  let metaList = ReflectUtils.getOwnMetadata(STYLE_METADATA_KEY, constructor);
@@ -6522,19 +6617,39 @@ var dooboostoreSimpleWebComponent = (() => {
6522
6617
  metaList = /* @__PURE__ */ new Map();
6523
6618
  ReflectUtils.defineMetadata(STYLE_METADATA_KEY, metaList, constructor);
6524
6619
  }
6525
- metaList.set(propertyKey, { propertyKey, selector, action });
6620
+ metaList.set(propertyKey, { propertyKey, selector, action, options });
6526
6621
  const original = descriptor.value;
6527
6622
  descriptor.value = async function(...args) {
6528
6623
  ensureInit2(this);
6529
6624
  const res = await original.apply(this, args);
6530
6625
  if (res !== void 0) {
6626
+ const r = options.root || "auto";
6531
6627
  const hostSet = SwcUtils.getHostSet(this);
6532
- let targetEl = null;
6533
- if (selector === ":host" || !selector) targetEl = this;
6534
- else if (selector === ":parentHost") targetEl = hostSet.$parentHost;
6535
- else if (selector === ":appHost") targetEl = hostSet.$appHost;
6536
- else targetEl = (this.shadowRoot || this).querySelector(selector);
6537
- if (targetEl) {
6628
+ const targetEls = [];
6629
+ if (selector === ":host" || !selector) {
6630
+ targetEls.push(this);
6631
+ } else if (selector === ":parentHost") {
6632
+ if (hostSet.$parentHost) targetEls.push(hostSet.$parentHost);
6633
+ } else if (selector === ":appHost") {
6634
+ if (hostSet.$appHost) targetEls.push(hostSet.$appHost);
6635
+ } else {
6636
+ if (r === "shadow") {
6637
+ const found = this.shadowRoot?.querySelectorAll(selector);
6638
+ if (found) targetEls.push(...found);
6639
+ } else if (r === "light") {
6640
+ const found = this.querySelectorAll(selector);
6641
+ if (found) targetEls.push(...found);
6642
+ } else if (r === "all") {
6643
+ const sFound = this.shadowRoot?.querySelectorAll(selector);
6644
+ const lFound = this.querySelectorAll(selector);
6645
+ if (sFound) targetEls.push(...sFound);
6646
+ if (lFound) targetEls.push(...lFound);
6647
+ } else {
6648
+ const found = (this.shadowRoot || this).querySelectorAll(selector);
6649
+ if (found) targetEls.push(...found);
6650
+ }
6651
+ }
6652
+ targetEls.forEach((targetEl) => {
6538
6653
  if (action === "set") {
6539
6654
  targetEl.style.cssText = "";
6540
6655
  if (typeof res === "object" && res !== null) {
@@ -6550,16 +6665,19 @@ var dooboostoreSimpleWebComponent = (() => {
6550
6665
  const props = Array.isArray(res) ? res : [res];
6551
6666
  props.forEach((p) => targetEl.style.removeProperty(String(p)));
6552
6667
  }
6553
- }
6668
+ });
6554
6669
  }
6555
6670
  return res;
6556
6671
  };
6557
6672
  };
6558
6673
  };
6559
6674
  }
6560
- var setStyle = createStyleDecorator("set");
6561
- var updateStyle = createStyleDecorator("update");
6562
- var removeStyle = createStyleDecorator("remove");
6675
+ var setStyle = (selector, options = {}) => createStyleDecorator("set")(selector, options);
6676
+ var setStyleHost = (options = {}) => createStyleDecorator("set")(":host", options);
6677
+ var updateStyle = (selector, options = {}) => createStyleDecorator("update")(selector, options);
6678
+ var updateStyleHost = (options = {}) => createStyleDecorator("update")(":host", options);
6679
+ var removeStyle = (selector, options = {}) => createStyleDecorator("remove")(selector, options);
6680
+ var removeStyleHost = (options = {}) => createStyleDecorator("remove")(":host", options);
6563
6681
  var findAllStyleMetadata = (target) => {
6564
6682
  const result = /* @__PURE__ */ new Map();
6565
6683
  const maps = ReflectUtils.findAllMetadata(STYLE_METADATA_KEY, target);
@@ -8106,6 +8224,10 @@ var dooboostoreSimpleWebComponent = (() => {
8106
8224
  const raw = strings.reduce((acc, str, i) => acc + str + (values[i] !== void 0 ? values[i] : ""), "");
8107
8225
  return document.createTextNode(raw);
8108
8226
  };
8227
+ TemplateUtils2.commentNode = (strings, ...values) => {
8228
+ const raw = strings.reduce((acc, str, i) => acc + str + (values[i] !== void 0 ? values[i] : ""), "");
8229
+ return document.createComment(raw);
8230
+ };
8109
8231
  TemplateUtils2.createElement = (info, attrs = {}) => {
8110
8232
  const el = document.createElement(info.tagName);
8111
8233
  if (info.innerHtml !== void 0) el.innerHTML = info.innerHtml;
@@ -8138,6 +8260,7 @@ var dooboostoreSimpleWebComponent = (() => {
8138
8260
  })(TemplateUtils || (TemplateUtils = {}));
8139
8261
  var htmlFragment = TemplateUtils.htmlFragment;
8140
8262
  var textNode = TemplateUtils.textNode;
8263
+ var commentNode = TemplateUtils.commentNode;
8141
8264
  var createElement = TemplateUtils.createElement;
8142
8265
  var htmlDivElement = TemplateUtils.htmlDivElement;
8143
8266
  var htmlSpanElement = TemplateUtils.htmlSpanElement;