@dooboostore/simple-web-component 1.0.21 → 1.0.22

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 (151) hide show
  1. package/README.md +771 -95
  2. package/dist/cjs/decorators/addEventListener.js +4 -0
  3. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  4. package/dist/cjs/decorators/{appendChild.js → applyNode.js} +25 -17
  5. package/dist/cjs/decorators/applyNode.js.map +7 -0
  6. package/dist/cjs/decorators/attribute.js +31 -10
  7. package/dist/cjs/decorators/attribute.js.map +3 -3
  8. package/dist/cjs/decorators/{changedAttribute.js → changedAttributeHost.js} +6 -6
  9. package/dist/cjs/decorators/changedAttributeHost.js.map +7 -0
  10. package/dist/cjs/decorators/classList.js +11 -1
  11. package/dist/cjs/decorators/classList.js.map +2 -2
  12. package/dist/cjs/decorators/elementDefine.js +106 -55
  13. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  14. package/dist/cjs/decorators/emitCustomEvent.js +4 -3
  15. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  16. package/dist/cjs/decorators/index.js +2 -3
  17. package/dist/cjs/decorators/index.js.map +2 -2
  18. package/dist/cjs/decorators/lifecycles.js +4 -0
  19. package/dist/cjs/decorators/lifecycles.js.map +2 -2
  20. package/dist/cjs/decorators/query.js +5 -1
  21. package/dist/cjs/decorators/query.js.map +2 -2
  22. package/dist/cjs/decorators/queryAll.js +5 -1
  23. package/dist/cjs/decorators/queryAll.js.map +2 -2
  24. package/dist/cjs/decorators/setAttribute.js +5 -1
  25. package/dist/cjs/decorators/setAttribute.js.map +2 -2
  26. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  27. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  28. package/dist/cjs/elements/SwcAsync.js +2 -2
  29. package/dist/cjs/elements/SwcAsync.js.map +2 -2
  30. package/dist/cjs/elements/SwcChoose.js +2 -2
  31. package/dist/cjs/elements/SwcChoose.js.map +2 -2
  32. package/dist/cjs/elements/SwcIf.js +2 -2
  33. package/dist/cjs/elements/SwcIf.js.map +2 -2
  34. package/dist/cjs/elements/SwcLoop.js +2 -2
  35. package/dist/cjs/elements/SwcLoop.js.map +2 -2
  36. package/dist/cjs/elements/register.js +6 -5
  37. package/dist/cjs/elements/register.js.map +2 -2
  38. package/dist/cjs/index.js +6 -18
  39. package/dist/cjs/index.js.map +2 -2
  40. package/dist/cjs/types.js.map +2 -2
  41. package/dist/esm/decorators/addEventListener.js +4 -0
  42. package/dist/esm/decorators/addEventListener.js.map +2 -2
  43. package/dist/esm/decorators/{appendChild.js → applyNode.js} +22 -14
  44. package/dist/esm/decorators/applyNode.js.map +7 -0
  45. package/dist/esm/decorators/attribute.js +31 -10
  46. package/dist/esm/decorators/attribute.js.map +3 -3
  47. package/dist/esm/decorators/{changedAttribute.js → changedAttributeHost.js} +3 -3
  48. package/dist/esm/decorators/changedAttributeHost.js.map +7 -0
  49. package/dist/esm/decorators/classList.js +11 -1
  50. package/dist/esm/decorators/classList.js.map +2 -2
  51. package/dist/esm/decorators/elementDefine.js +106 -55
  52. package/dist/esm/decorators/elementDefine.js.map +2 -2
  53. package/dist/esm/decorators/emitCustomEvent.js +4 -3
  54. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  55. package/dist/esm/decorators/index.js +2 -3
  56. package/dist/esm/decorators/index.js.map +2 -2
  57. package/dist/esm/decorators/lifecycles.js +4 -0
  58. package/dist/esm/decorators/lifecycles.js.map +2 -2
  59. package/dist/esm/decorators/query.js +5 -1
  60. package/dist/esm/decorators/query.js.map +2 -2
  61. package/dist/esm/decorators/queryAll.js +5 -1
  62. package/dist/esm/decorators/queryAll.js.map +2 -2
  63. package/dist/esm/decorators/setAttribute.js +5 -1
  64. package/dist/esm/decorators/setAttribute.js.map +2 -2
  65. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  66. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  67. package/dist/esm/elements/SwcAsync.js +2 -2
  68. package/dist/esm/elements/SwcAsync.js.map +2 -2
  69. package/dist/esm/elements/SwcChoose.js +2 -2
  70. package/dist/esm/elements/SwcChoose.js.map +2 -2
  71. package/dist/esm/elements/SwcIf.js +2 -2
  72. package/dist/esm/elements/SwcIf.js.map +2 -2
  73. package/dist/esm/elements/SwcLoop.js +2 -2
  74. package/dist/esm/elements/SwcLoop.js.map +2 -2
  75. package/dist/esm/elements/register.js +6 -5
  76. package/dist/esm/elements/register.js.map +2 -2
  77. package/dist/esm/index.js +6 -18
  78. package/dist/esm/index.js.map +2 -2
  79. package/dist/esm/types.js.map +2 -2
  80. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +195 -139
  81. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  82. package/dist/types/decorators/addEventListener.d.ts +6 -0
  83. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  84. package/dist/types/decorators/applyNode.d.ts +38 -0
  85. package/dist/types/decorators/applyNode.d.ts.map +1 -0
  86. package/dist/types/decorators/attribute.d.ts +6 -0
  87. package/dist/types/decorators/attribute.d.ts.map +1 -1
  88. package/dist/types/decorators/{changedAttribute.d.ts → changedAttributeHost.d.ts} +6 -2
  89. package/dist/types/decorators/changedAttributeHost.d.ts.map +1 -0
  90. package/dist/types/decorators/classList.d.ts +25 -0
  91. package/dist/types/decorators/classList.d.ts.map +1 -1
  92. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  93. package/dist/types/decorators/emitCustomEvent.d.ts +14 -2
  94. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  95. package/dist/types/decorators/index.d.ts +2 -3
  96. package/dist/types/decorators/index.d.ts.map +1 -1
  97. package/dist/types/decorators/lifecycles.d.ts +2 -0
  98. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  99. package/dist/types/decorators/query.d.ts +6 -0
  100. package/dist/types/decorators/query.d.ts.map +1 -1
  101. package/dist/types/decorators/queryAll.d.ts +6 -0
  102. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  103. package/dist/types/decorators/setAttribute.d.ts +5 -0
  104. package/dist/types/decorators/setAttribute.d.ts.map +1 -1
  105. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  106. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  107. package/dist/types/elements/register.d.ts +1 -1
  108. package/dist/types/elements/register.d.ts.map +1 -1
  109. package/dist/types/index.d.ts +3 -15
  110. package/dist/types/index.d.ts.map +1 -1
  111. package/dist/types/types.d.ts +2 -1
  112. package/dist/types/types.d.ts.map +1 -1
  113. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +195 -139
  114. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  115. package/package.json +3 -3
  116. package/src/decorators/addEventListener.ts +9 -0
  117. package/src/decorators/applyNode.ts +127 -0
  118. package/src/decorators/attribute.ts +46 -12
  119. package/src/decorators/{changedAttribute.ts → changedAttributeHost.ts} +5 -1
  120. package/src/decorators/classList.ts +32 -0
  121. package/src/decorators/elementDefine.ts +130 -62
  122. package/src/decorators/emitCustomEvent.ts +13 -5
  123. package/src/decorators/index.ts +2 -3
  124. package/src/decorators/lifecycles.ts +3 -1
  125. package/src/decorators/query.ts +9 -0
  126. package/src/decorators/queryAll.ts +9 -0
  127. package/src/decorators/setAttribute.ts +8 -0
  128. package/src/elements/SwcAppEngine.ts +1 -0
  129. package/src/elements/SwcAppMixin.ts +2 -1
  130. package/src/elements/SwcAsync.ts +2 -2
  131. package/src/elements/SwcChoose.ts +2 -2
  132. package/src/elements/SwcIf.ts +2 -2
  133. package/src/elements/SwcLoop.ts +2 -2
  134. package/src/elements/register.ts +7 -5
  135. package/src/index.ts +8 -17
  136. package/src/types.ts +2 -1
  137. package/dist/cjs/decorators/appendChild.js.map +0 -7
  138. package/dist/cjs/decorators/changedAttribute.js.map +0 -7
  139. package/dist/cjs/decorators/replaceChildren.js +0 -79
  140. package/dist/cjs/decorators/replaceChildren.js.map +0 -7
  141. package/dist/esm/decorators/appendChild.js.map +0 -7
  142. package/dist/esm/decorators/changedAttribute.js.map +0 -7
  143. package/dist/esm/decorators/replaceChildren.js +0 -60
  144. package/dist/esm/decorators/replaceChildren.js.map +0 -7
  145. package/dist/types/decorators/appendChild.d.ts +0 -17
  146. package/dist/types/decorators/appendChild.d.ts.map +0 -1
  147. package/dist/types/decorators/changedAttribute.d.ts.map +0 -1
  148. package/dist/types/decorators/replaceChildren.d.ts +0 -9
  149. package/dist/types/decorators/replaceChildren.d.ts.map +0 -1
  150. package/src/decorators/appendChild.ts +0 -86
  151. package/src/decorators/replaceChildren.ts +0 -64
@@ -5756,8 +5756,12 @@ var getAddEventListenerMetadata = (target) => {
5756
5756
  const constructor = target instanceof Function ? target : target.constructor;
5757
5757
  return ReflectUtils.getMetadata(ADD_EVENT_LISTENER_METADATA_KEY, constructor);
5758
5758
  };
5759
+ function addEventListenerHost(type, options) {
5760
+ return addEventListener(":host", type, options);
5761
+ }
5759
5762
 
5760
5763
  // src/decorators/lifecycles.ts
5764
+ var ON_CONSTRUCTOR_METADATA_KEY = Symbol("simple-web-component:on-constructor");
5761
5765
  var ON_BEFORE_CONNECTED_METADATA_KEY = Symbol("simple-web-component:on-before-connected");
5762
5766
  var ON_AFTER_CONNECTED_METADATA_KEY = Symbol("simple-web-component:on-after-connected");
5763
5767
  var ON_BEFORE_DISCONNECTED_METADATA_KEY = Symbol("simple-web-component:on-before-disconnected");
@@ -5777,6 +5781,7 @@ function createLifecycleDecorator(metadataKey) {
5777
5781
  list.push(propertyKey);
5778
5782
  };
5779
5783
  }
5784
+ var onConstructor = createLifecycleDecorator(ON_CONSTRUCTOR_METADATA_KEY);
5780
5785
  var onBeforeConnected = createLifecycleDecorator(ON_BEFORE_CONNECTED_METADATA_KEY);
5781
5786
  var onAfterConnected = createLifecycleDecorator(ON_AFTER_CONNECTED_METADATA_KEY);
5782
5787
  var onConnected = onAfterConnected;
@@ -5857,6 +5862,20 @@ function attribute(selector, options = {}) {
5857
5862
  ReflectUtils.defineMetadata(ATTRIBUTE_METADATA_KEY, metaList, constructor);
5858
5863
  }
5859
5864
  metaList.push({ propertyKey, selector, options, privateKey });
5865
+ const applySetAttribute = (inst, targets, attrName, nv) => {
5866
+ targets.forEach((it) => {
5867
+ console.log("----->", it);
5868
+ if (it && typeof it.setAttribute === "function") {
5869
+ if (nv === null) {
5870
+ it.removeAttribute(attrName);
5871
+ } else {
5872
+ it.setAttribute(attrName, String(nv));
5873
+ }
5874
+ } else {
5875
+ inst[privateKey] = nv;
5876
+ }
5877
+ });
5878
+ };
5860
5879
  Object.defineProperty(target, propertyKey, {
5861
5880
  get() {
5862
5881
  const attrName = options.name || String(propertyKey);
@@ -5880,22 +5899,25 @@ function attribute(selector, options = {}) {
5880
5899
  },
5881
5900
  set(nv) {
5882
5901
  const targetType = options.type || designType;
5902
+ console.log("---set", propertyKey, targetType, nv, this, this.__swc_syncing_init);
5883
5903
  const attrName = options.name || String(propertyKey);
5884
5904
  const conf = getElementConfig(this);
5885
5905
  const currentWin = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
5886
- const targets = resolveTargetEls(this, selector, options, currentWin);
5887
- targets.forEach((it) => {
5888
- console.log("----->", it);
5889
- if (it && typeof it.setAttribute === "function") {
5890
- if (nv === null) {
5891
- it.removeAttribute(attrName);
5892
- } else {
5893
- it.setAttribute(attrName, String(nv));
5894
- }
5906
+ if (this.__swc_syncing_init) {
5907
+ if (options.connectedInitialize === true) {
5908
+ const targets2 = resolveTargetEls(this, selector, options, currentWin);
5909
+ applySetAttribute(this, targets2, attrName, nv);
5895
5910
  } else {
5896
5911
  this[privateKey] = nv;
5897
5912
  }
5898
- });
5913
+ return;
5914
+ }
5915
+ if (!this.__swc_connected) {
5916
+ this[privateKey] = nv;
5917
+ return;
5918
+ }
5919
+ const targets = resolveTargetEls(this, selector, options, currentWin);
5920
+ applySetAttribute(this, targets, attrName, nv);
5899
5921
  },
5900
5922
  enumerable: true,
5901
5923
  configurable: true
@@ -5905,10 +5927,13 @@ function attribute(selector, options = {}) {
5905
5927
  var findAllAttributeMetadata = (target) => {
5906
5928
  return ReflectUtils.findAllMetadata(ATTRIBUTE_METADATA_KEY, target).flat();
5907
5929
  };
5930
+ function attributeHost(attrName, options = {}) {
5931
+ return attribute(":host", { ...options, name: attrName });
5932
+ }
5908
5933
 
5909
- // src/decorators/changedAttribute.ts
5934
+ // src/decorators/changedAttributeHost.ts
5910
5935
  var ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol("simple-web-component:on-attribute-changed");
5911
- function changedAttribute(attributeName) {
5936
+ function changedAttributeHost(attributeName) {
5912
5937
  return (target, propertyKey) => {
5913
5938
  const constructor = target.constructor;
5914
5939
  let meta = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
@@ -6012,62 +6037,12 @@ var findAllSetAttributeMetadata = (target) => {
6012
6037
  });
6013
6038
  return result;
6014
6039
  };
6015
-
6016
- // src/decorators/replaceChildren.ts
6017
- var REPLACE_CHILDREN_METADATA_KEY = Symbol("simple-web-component:replace-children");
6018
- function replaceChildren(selector) {
6019
- return (target, propertyKey, descriptor) => {
6020
- const constructor = target.constructor;
6021
- let meta = ReflectUtils.getOwnMetadata(REPLACE_CHILDREN_METADATA_KEY, constructor);
6022
- if (!meta) {
6023
- meta = /* @__PURE__ */ new Map();
6024
- ReflectUtils.defineMetadata(REPLACE_CHILDREN_METADATA_KEY, meta, constructor);
6025
- }
6026
- meta.set(propertyKey, selector);
6027
- const original = descriptor.value;
6028
- descriptor.value = async function(...args) {
6029
- ensureInit2(this);
6030
- const res = await original.apply(this, args);
6031
- if (res !== void 0) {
6032
- const conf = getElementConfig(this);
6033
- const currentWin = this._resolveWindow?.(conf) || (typeof window !== "undefined" ? window : void 0);
6034
- const currentDoc = currentWin.document;
6035
- let targetEl = null;
6036
- if (selector === ":host" || !selector) {
6037
- targetEl = this;
6038
- } else {
6039
- targetEl = (this.shadowRoot || this).querySelector(selector);
6040
- }
6041
- if (targetEl) {
6042
- if (typeof res === "string") {
6043
- targetEl.textContent = res;
6044
- } else {
6045
- const nodes = Array.isArray(res) ? res.map((n) => typeof n === "string" ? currentDoc.createTextNode(n) : n) : [res];
6046
- targetEl.replaceChildren(...nodes);
6047
- }
6048
- }
6049
- }
6050
- return res;
6051
- };
6052
- };
6040
+ function setAttributeHost(name, options) {
6041
+ return setAttribute(":host", name, options);
6053
6042
  }
6054
- var getReplaceChildrenMetadata = (target) => {
6055
- const constructor = target instanceof Function ? target : target.constructor;
6056
- return ReflectUtils.getMetadata(REPLACE_CHILDREN_METADATA_KEY, constructor);
6057
- };
6058
- var findAllReplaceChildrenMetadata = (target) => {
6059
- const result = /* @__PURE__ */ new Map();
6060
- const maps = ReflectUtils.findAllMetadata(REPLACE_CHILDREN_METADATA_KEY, target);
6061
- maps.forEach((map) => {
6062
- if (map instanceof Map) {
6063
- map.forEach((v, k) => result.set(k, v));
6064
- }
6065
- });
6066
- return result;
6067
- };
6068
6043
 
6069
- // src/decorators/appendChild.ts
6070
- var APPEND_CHILD_METADATA_KEY = Symbol("simple-web-component:append-child");
6044
+ // src/decorators/applyNode.ts
6045
+ var APPLY_NODE_METADATA_KEY = Symbol("simple-web-component:apply-node");
6071
6046
  var normalizeNodes = (res, doc) => {
6072
6047
  const items = Array.isArray(res) ? res : [res];
6073
6048
  return items.map((it) => {
@@ -6076,13 +6051,13 @@ var normalizeNodes = (res, doc) => {
6076
6051
  return doc.createTextNode(it !== void 0 && it !== null ? String(it) : "");
6077
6052
  });
6078
6053
  };
6079
- function appendChild(selector, options = { position: "beforeEnd" }) {
6054
+ function applyNode(selector, options = { position: "beforeEnd" }) {
6080
6055
  return (target, propertyKey, descriptor) => {
6081
6056
  const constructor = target.constructor;
6082
- let metaList = ReflectUtils.getOwnMetadata(APPEND_CHILD_METADATA_KEY, constructor);
6057
+ let metaList = ReflectUtils.getOwnMetadata(APPLY_NODE_METADATA_KEY, constructor);
6083
6058
  if (!metaList) {
6084
6059
  metaList = /* @__PURE__ */ new Map();
6085
- ReflectUtils.defineMetadata(APPEND_CHILD_METADATA_KEY, metaList, constructor);
6060
+ ReflectUtils.defineMetadata(APPLY_NODE_METADATA_KEY, metaList, constructor);
6086
6061
  }
6087
6062
  metaList.set(propertyKey, { propertyKey, selector, options });
6088
6063
  const original = descriptor.value;
@@ -6102,10 +6077,14 @@ function appendChild(selector, options = { position: "beforeEnd" }) {
6102
6077
  if (targetEl) {
6103
6078
  const nodes = normalizeNodes(res, currentDoc);
6104
6079
  const pos = options.position || "beforeEnd";
6105
- if (typeof res === "string") {
6106
- targetEl.insertAdjacentText(pos, res);
6107
- } else if (Array.isArray(res) && res.every((n) => typeof n === "string")) {
6108
- targetEl.insertAdjacentText(pos, res.join(""));
6080
+ if (pos === "replace") {
6081
+ targetEl.replaceWith(...nodes);
6082
+ } else if (pos === "replaceChildren") {
6083
+ targetEl.replaceChildren(...nodes);
6084
+ } else if (pos === "innerHtml") {
6085
+ targetEl.innerHTML = res !== void 0 && res !== null ? String(res) : "";
6086
+ } else if (pos === "innerText") {
6087
+ targetEl.innerText = res !== void 0 && res !== null ? String(res) : "";
6109
6088
  } else {
6110
6089
  if (pos === "beforeEnd")
6111
6090
  targetEl.append(...nodes);
@@ -6122,9 +6101,9 @@ function appendChild(selector, options = { position: "beforeEnd" }) {
6122
6101
  };
6123
6102
  };
6124
6103
  }
6125
- var findAllAppendChildMetadata = (target) => {
6104
+ var findAllApplyNodeMetadata = (target) => {
6126
6105
  const result = /* @__PURE__ */ new Map();
6127
- const maps = ReflectUtils.findAllMetadata(APPEND_CHILD_METADATA_KEY, target);
6106
+ const maps = ReflectUtils.findAllMetadata(APPLY_NODE_METADATA_KEY, target);
6128
6107
  maps.forEach((map) => {
6129
6108
  if (map instanceof Map) {
6130
6109
  map.forEach((v, k) => result.set(k, v));
@@ -6132,6 +6111,9 @@ var findAllAppendChildMetadata = (target) => {
6132
6111
  });
6133
6112
  return result;
6134
6113
  };
6114
+ function applyNodeHost(options = { position: "beforeEnd" }) {
6115
+ return applyNode(":host", options);
6116
+ }
6135
6117
 
6136
6118
  // src/decorators/query.ts
6137
6119
  var QUERY_METADATA_KEY = Symbol("simple-web-component:query");
@@ -6232,6 +6214,9 @@ var getQueryMetadata = (target) => {
6232
6214
  const constructor = target instanceof Function ? target : target.constructor;
6233
6215
  return ReflectUtils.getMetadata(QUERY_METADATA_KEY, constructor);
6234
6216
  };
6217
+ function queryHost(options) {
6218
+ return query(":host", options);
6219
+ }
6235
6220
 
6236
6221
  // src/decorators/queryAll.ts
6237
6222
  var QUERY_ALL_METADATA_KEY = Symbol("simple-web-component:query-all");
@@ -6329,6 +6314,9 @@ var getQueryAllMetadata = (target) => {
6329
6314
  const constructor = target instanceof Function ? target : target.constructor;
6330
6315
  return ReflectUtils.getMetadata(QUERY_ALL_METADATA_KEY, constructor);
6331
6316
  };
6317
+ function queryAllHost(options) {
6318
+ return queryAll(":host", options);
6319
+ }
6332
6320
 
6333
6321
  // src/decorators/classList.ts
6334
6322
  var CLASS_LIST_METADATA_KEY = Symbol("simple-web-component:class-list");
@@ -6393,6 +6381,11 @@ var updateClassList = createClassListDecorator("update");
6393
6381
  var addClassList = createClassListDecorator("add");
6394
6382
  var removeClassList = createClassListDecorator("remove");
6395
6383
  var toggleClassList = createClassListDecorator("toggle");
6384
+ var setClassListHost = createClassListDecorator("set").bind(null, ":host");
6385
+ var updateClassListHost = createClassListDecorator("update").bind(null, ":host");
6386
+ var addClassListHost = createClassListDecorator("add").bind(null, ":host");
6387
+ var removeClassListHost = createClassListDecorator("remove").bind(null, ":host");
6388
+ var toggleClassListHost = createClassListDecorator("toggle").bind(null, ":host");
6396
6389
  var findAllClassListMetadata = (target) => {
6397
6390
  const result = /* @__PURE__ */ new Map();
6398
6391
  const maps = ReflectUtils.findAllMetadata(CLASS_LIST_METADATA_KEY, target);
@@ -6582,9 +6575,6 @@ function emitCustomEvent(selectorOrTarget, type, options = {}) {
6582
6575
  return (targetObj, propertyKey, descriptor) => {
6583
6576
  const constructor = targetObj.constructor;
6584
6577
  const fullOptions = { ...options, type };
6585
- if (!fullOptions.attributeName) {
6586
- fullOptions.attributeName = `swc-on-${type}`;
6587
- }
6588
6578
  if (fullOptions.bubbles === void 0) fullOptions.bubbles = true;
6589
6579
  if (fullOptions.composed === void 0) fullOptions.composed = true;
6590
6580
  let list = ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);
@@ -6649,6 +6639,9 @@ var getEmitCustomEventMetadataList = (target) => {
6649
6639
  const constructor = target instanceof Function ? target : target.constructor;
6650
6640
  return ReflectUtils.getMetadata(EMIT_CUSTOM_EVENT_METADATA_KEY, constructor);
6651
6641
  };
6642
+ function emitCustomEventHost(type, options) {
6643
+ return emitCustomEvent(":host", type, options);
6644
+ }
6652
6645
 
6653
6646
  // src/config/config.ts
6654
6647
  var HTML_TAG_ENTRIES = [
@@ -6769,6 +6762,10 @@ var ensureInit2 = (inst) => {
6769
6762
  inst.__swc_initialized = true;
6770
6763
  const hostSet = SwcUtils.getHostSet(inst);
6771
6764
  inst._executeSwcScript?.("swc-on-constructor", hostSet);
6765
+ const cMethods = findAllLifecycleMetadata(inst, ON_CONSTRUCTOR_METADATA_KEY);
6766
+ if (cMethods) {
6767
+ for (const m of cMethods) inst._invokeLifecycleMethod(m, hostSet);
6768
+ }
6772
6769
  }
6773
6770
  };
6774
6771
  var globalDelegatedRoots = /* @__PURE__ */ new WeakSet();
@@ -6867,7 +6864,9 @@ var setupPrototype = (proto) => {
6867
6864
  const oldHandler = handlers.get(attrName);
6868
6865
  if (oldHandler) el.removeEventListener(eventName, oldHandler);
6869
6866
  const handler = async (event) => {
6870
- const hostSet = SwcUtils.getHostSet(el);
6867
+ console.log("execute handler", event);
6868
+ const parent = SwcUtils.findNearestSwcHost(el);
6869
+ const hostSet = SwcUtils.getHostSet(parent || el);
6871
6870
  const conf = getElementConfig(this);
6872
6871
  const currentWin = this._resolveWindow(conf);
6873
6872
  const helpers = SwcUtils.getHelperSet(currentWin);
@@ -6886,13 +6885,18 @@ var setupPrototype = (proto) => {
6886
6885
  };
6887
6886
  proto.__swc_executeAttributeEvent = async function(el, attrName, script, event) {
6888
6887
  ensureInit2(this);
6889
- const hostSet = SwcUtils.getHostSet(el);
6888
+ console.log("execute handler2", event);
6889
+ const parent = SwcUtils.findNearestSwcHost(el);
6890
+ const hostSet = SwcUtils.getHostSet(parent || el);
6890
6891
  const conf = getElementConfig(this);
6891
6892
  const currentWin = this._resolveWindow(conf);
6892
6893
  const currentHelpers = SwcUtils.getHelperSet(currentWin);
6894
+ const detail = event.detail;
6893
6895
  const args = {
6894
6896
  event,
6895
- $data: event.detail,
6897
+ $event: event,
6898
+ $data: detail,
6899
+ $detail: detail,
6896
6900
  ...hostSet,
6897
6901
  ...currentHelpers,
6898
6902
  $el: el,
@@ -6919,12 +6923,14 @@ var elementDefine = (name, config = {}) => (constructor) => {
6919
6923
  metadata.extends = extendsTagName;
6920
6924
  }
6921
6925
  const emitCustomEventList = getEmitCustomEventMetadataList(constructor) || [];
6926
+ const emitHostCustomEventList = emitCustomEventList.filter((meta) => meta.selector === ":host" || meta.selector === "");
6922
6927
  const addEventListenerList = getAddEventListenerMetadata(constructor) || [];
6928
+ const addHostEventListenerList = addEventListenerList.filter((meta) => meta.selector === ":host" || meta.selector === "");
6923
6929
  const attrChangeMap = findAllAttributeChangedMetadata(constructor);
6924
6930
  const attributeList = findAllAttributeMetadata(constructor);
6925
6931
  const swcLifecycleAttributes = ["swc-on-constructor", "swc-on-connected", "swc-on-disconnected", "swc-on-before-connected", "swc-on-after-connected", "swc-on-before-disconnected", "swc-on-after-disconnected", "swc-on-before-adopted", "swc-on-after-adopted", "swc-on-attribute-changed"];
6926
6932
  const swcOnEvents = DOM_EVENT_NAMES.map((e) => `swc-on-${e}`);
6927
- const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...metadata.observedAttributes ?? [], ...attrChangeMap.keys(), ...Array.from(findAllSetAttributeMetadata(constructor).values()).map((it) => it.name), ...attributeList.map((it) => it.options.name || String(it.propertyKey)), ...emitCustomEventList.map((it) => it.options.attributeName), ...swcLifecycleAttributes, ...swcOnEvents])];
6933
+ const mergedObservedAttributes = [.../* @__PURE__ */ new Set([...metadata.observedAttributes ?? [], ...attrChangeMap.keys(), ...Array.from(findAllSetAttributeMetadata(constructor).values()).map((it) => it.name), ...attributeList.map((it) => it.options.name || String(it.propertyKey)), ...emitHostCustomEventList.map((it) => it.options.attributeName).filter(Boolean), ...swcLifecycleAttributes, ...swcOnEvents])];
6928
6934
  const connectedInnerHtmlList = getOnConnectedInnerHtmlMetadata(constructor) || [];
6929
6935
  const proto = constructor.prototype;
6930
6936
  setupPrototype(proto);
@@ -6944,25 +6950,15 @@ var elementDefine = (name, config = {}) => (constructor) => {
6944
6950
  }
6945
6951
  attributeList.forEach((meta) => {
6946
6952
  const attrName = meta.options.name || String(meta.propertyKey);
6947
- if (meta.options.connectedInitialize) {
6948
- const memoryVal = this[meta.privateKey];
6949
- if (memoryVal !== void 0) {
6950
- this.__swc_syncing_init = true;
6951
- try {
6953
+ if (meta.options.connectedInitialize === true) {
6954
+ this.__swc_syncing_init = true;
6955
+ try {
6956
+ const memoryVal = this[meta.privateKey];
6957
+ if (memoryVal !== void 0) {
6952
6958
  this[meta.propertyKey] = memoryVal;
6953
- } finally {
6954
- this.__swc_syncing_init = false;
6955
- }
6956
- }
6957
- } else if (meta.selector === ":host" || !meta.selector) {
6958
- const domVal = this.getAttribute(attrName);
6959
- if (domVal !== null) {
6960
- this.__swc_syncing_init = true;
6961
- try {
6962
- this[meta.propertyKey] = domVal;
6963
- } finally {
6964
- this.__swc_syncing_init = false;
6965
6959
  }
6960
+ } finally {
6961
+ this.__swc_syncing_init = false;
6966
6962
  }
6967
6963
  }
6968
6964
  });
@@ -6985,7 +6981,62 @@ var elementDefine = (name, config = {}) => (constructor) => {
6985
6981
  });
6986
6982
  globalDelegatedRoots.add(root);
6987
6983
  }
6984
+ const delegateListeners = [];
6985
+ const nonDelegateListeners = [];
6988
6986
  addEventListenerList.forEach((meta) => {
6987
+ if (meta.options.delegate && meta.selector !== ":window" && meta.selector !== ":document" && meta.selector !== ":parentHost" && meta.selector !== ":appHost" && meta.selector !== ":firstHost" && meta.selector !== ":lastHost" && meta.selector !== ":firstAppHost" && meta.selector !== ":lastAppHost" && meta.selector !== ":hosts" && meta.selector !== ":appHosts" && meta.selector !== ":host" && meta.selector !== "") {
6988
+ delegateListeners.push(meta);
6989
+ } else {
6990
+ nonDelegateListeners.push(meta);
6991
+ }
6992
+ });
6993
+ const delegatesByTypeAndRoot = /* @__PURE__ */ new Map();
6994
+ delegateListeners.forEach((meta) => {
6995
+ const r = meta.options.root || "auto";
6996
+ const rootKey = `${meta.type}:${r}`;
6997
+ if (!delegatesByTypeAndRoot.has(rootKey)) {
6998
+ delegatesByTypeAndRoot.set(rootKey, []);
6999
+ }
7000
+ delegatesByTypeAndRoot.get(rootKey).push(meta);
7001
+ });
7002
+ delegatesByTypeAndRoot.forEach((metaList, typeRootKey) => {
7003
+ const [type, rStr] = typeRootKey.split(":");
7004
+ const r = rStr === "auto" ? "auto" : rStr;
7005
+ const opts = { capture: metaList[0].options.capture, once: metaList[0].options.once, passive: metaList[0].options.passive };
7006
+ const bindRoots = [];
7007
+ if (r === "auto") bindRoots.push(this.shadowRoot || this);
7008
+ else if (r === "light") bindRoots.push(this);
7009
+ else if (r === "shadow" && this.shadowRoot) bindRoots.push(this.shadowRoot);
7010
+ else if (r === "all") {
7011
+ bindRoots.push(this);
7012
+ if (this.shadowRoot) bindRoots.push(this.shadowRoot);
7013
+ }
7014
+ bindRoots.forEach((br) => {
7015
+ const sortedMetaList = [...metaList].sort((a, b) => {
7016
+ const aStop = a.options.stopPropagation ? 1 : 0;
7017
+ const bStop = b.options.stopPropagation ? 1 : 0;
7018
+ return bStop - aStop;
7019
+ });
7020
+ const unifiedHandler = async (event) => {
7021
+ for (const meta of sortedMetaList) {
7022
+ const { selector, options } = meta;
7023
+ const matchedEl = event.target.closest(selector);
7024
+ if (matchedEl && br.contains(matchedEl)) {
7025
+ if (options.stopPropagation) event.stopPropagation();
7026
+ if (options.stopImmediatePropagation) event.stopImmediatePropagation();
7027
+ if (options.preventDefault) event.preventDefault();
7028
+ const currentHostSet = SwcUtils.getHostSet(this);
7029
+ const args = { event, ...currentHostSet, $el: matchedEl, $root: br };
7030
+ await this[meta.propertyKey](event, currentHostSet, matchedEl, args);
7031
+ if (event.cancelBubble) break;
7032
+ }
7033
+ }
7034
+ };
7035
+ br.addEventListener(type, unifiedHandler, opts);
7036
+ this._boundListeners.push({ target: br, type, handler: unifiedHandler, options: opts });
7037
+ });
7038
+ });
7039
+ nonDelegateListeners.forEach((meta) => {
6989
7040
  const { selector, type, options } = meta;
6990
7041
  const opts = { capture: options.capture, once: options.once, passive: options.passive };
6991
7042
  const bindTargets = [];
@@ -7010,33 +7061,7 @@ var elementDefine = (name, config = {}) => (constructor) => {
7010
7061
  else if (selector === ":hosts") hostSet.$hosts.forEach(applyRootOption);
7011
7062
  else if (selector === ":appHosts") hostSet.$appHosts.forEach(applyRootOption);
7012
7063
  else if (selector === ":host" || !selector) applyRootOption(this);
7013
- else if (options.delegate) {
7014
- const bindRoots = [];
7015
- if (r === "auto") bindRoots.push(this.shadowRoot || this);
7016
- else if (r === "light") bindRoots.push(this);
7017
- else if (r === "shadow" && this.shadowRoot) bindRoots.push(this.shadowRoot);
7018
- else if (r === "all") {
7019
- bindRoots.push(this);
7020
- if (this.shadowRoot) bindRoots.push(this.shadowRoot);
7021
- }
7022
- bindRoots.forEach((br) => {
7023
- const handler = async (event) => {
7024
- const matchedEl = event.target.closest(selector);
7025
- if (matchedEl && br.contains(matchedEl)) {
7026
- if (options.stopPropagation) event.stopPropagation();
7027
- if (options.stopImmediatePropagation) event.stopImmediatePropagation();
7028
- if (options.preventDefault) event.preventDefault();
7029
- const currentHostSet = SwcUtils.getHostSet(this);
7030
- const args = { event, ...currentHostSet, $el: matchedEl, $root: br };
7031
- await this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, matchedEl, args]);
7032
- }
7033
- };
7034
- br.addEventListener(type, handler, opts);
7035
- if (options.removeOnDisconnected === true || br !== this && br !== this.shadowRoot) {
7036
- this._boundListeners.push({ target: br, type, handler, options: opts });
7037
- }
7038
- });
7039
- } else {
7064
+ else {
7040
7065
  const searchRoots = [];
7041
7066
  if (r === "auto") searchRoots.push(this.shadowRoot || this);
7042
7067
  else if (r === "light") searchRoots.push(this);
@@ -7056,7 +7081,7 @@ var elementDefine = (name, config = {}) => (constructor) => {
7056
7081
  if (options.preventDefault) event.preventDefault();
7057
7082
  const currentHostSet = SwcUtils.getHostSet(this);
7058
7083
  const args = { event, ...currentHostSet, $el: t, $root: t };
7059
- await this._invokeLifecycleMethod(meta.propertyKey, currentHostSet, [event, currentHostSet, args]);
7084
+ await this[meta.propertyKey](event, currentHostSet, args);
7060
7085
  };
7061
7086
  t.addEventListener(type, handler, opts);
7062
7087
  if (options.removeOnDisconnected === true || t === currentWin || t === currentWin.document) {
@@ -7064,6 +7089,22 @@ var elementDefine = (name, config = {}) => (constructor) => {
7064
7089
  }
7065
7090
  });
7066
7091
  });
7092
+ addHostEventListenerList.forEach((meta) => {
7093
+ const { type, options } = meta;
7094
+ const opts = { capture: options.capture, once: options.once, passive: options.passive };
7095
+ const handler = async (event) => {
7096
+ if (options.stopPropagation) event.stopPropagation();
7097
+ if (options.stopImmediatePropagation) event.stopImmediatePropagation();
7098
+ if (options.preventDefault) event.preventDefault();
7099
+ const currentHostSet = SwcUtils.getHostSet(this);
7100
+ const args = { event, ...currentHostSet, $el: this, $root: this.getRootNode() };
7101
+ await this[meta.propertyKey](event, currentHostSet, args);
7102
+ };
7103
+ this.addEventListener(type, handler, opts);
7104
+ if (options.removeOnDisconnected === true) {
7105
+ this._boundListeners.push({ target: this, type, handler, options: opts });
7106
+ }
7107
+ });
7067
7108
  if (originalConnected) originalConnected.apply(this);
7068
7109
  const aMethods = findAllLifecycleMetadata(this, ON_AFTER_CONNECTED_METADATA_KEY);
7069
7110
  if (aMethods) {
@@ -7113,17 +7154,20 @@ var elementDefine = (name, config = {}) => (constructor) => {
7113
7154
  const originalAttributeChanged = proto.attributeChangedCallback;
7114
7155
  proto.attributeChangedCallback = function(name2, old, newVal) {
7115
7156
  if (originalAttributeChanged) originalAttributeChanged.apply(this, [name2, old, newVal]);
7157
+ const hSet = SwcUtils.getHostSet(this);
7116
7158
  if (name2.startsWith("swc-on-") && !swcLifecycleAttributes.includes(name2)) {
7117
7159
  if (newVal !== null) {
7118
- const customEventMeta = emitCustomEventList.find((it) => it.options.attributeName === name2);
7119
- const eventName = customEventMeta ? customEventMeta.type : name2.substring(7);
7160
+ const eventName = name2.substring(7);
7120
7161
  this._bindAttributeEvent(this, name2, newVal, eventName);
7121
7162
  }
7122
7163
  }
7164
+ const hostCustomEventMeta = emitHostCustomEventList.find((it) => it.options.attributeName === name2);
7165
+ if (hostCustomEventMeta && newVal !== null) {
7166
+ this._bindAttributeEvent(this, name2, newVal, hostCustomEventMeta.type);
7167
+ }
7123
7168
  const mKeys = attrChangeMap.get(name2);
7124
7169
  if (mKeys && Array.isArray(mKeys)) {
7125
- const hSet = SwcUtils.getHostSet(this);
7126
- for (const key of mKeys) this._invokeLifecycleMethod(key, hSet, [newVal, old, name2]);
7170
+ for (const key of mKeys) this[key](newVal, old, name2, hSet);
7127
7171
  }
7128
7172
  };
7129
7173
  Object.defineProperty(constructor, "observedAttributes", {
@@ -7999,7 +8043,7 @@ var htmlSectionElement = TemplateUtils.htmlSectionElement;
7999
8043
  var htmlArticleElement = TemplateUtils.htmlArticleElement;
8000
8044
  export {
8001
8045
  ADD_EVENT_LISTENER_METADATA_KEY,
8002
- APPEND_CHILD_METADATA_KEY,
8046
+ APPLY_NODE_METADATA_KEY,
8003
8047
  ATTRIBUTE_CHANGED_WILDCARD,
8004
8048
  ATTRIBUTE_METADATA_KEY,
8005
8049
  BROWSER_GLOBALS,
@@ -8008,6 +8052,7 @@ export {
8008
8052
  ELEMENT_CONFIG_KEY,
8009
8053
  EMIT_CUSTOM_EVENT_METADATA_KEY,
8010
8054
  HTML_TAG_ENTRIES,
8055
+ INNER_HTML_METADATA_KEY,
8011
8056
  InjectSituationType,
8012
8057
  ON_ADD_EVENT_LISTENER_METADATA_KEY,
8013
8058
  ON_AFTER_ADOPTED_METADATA_KEY,
@@ -8017,38 +8062,42 @@ export {
8017
8062
  ON_BEFORE_ADOPTED_METADATA_KEY,
8018
8063
  ON_BEFORE_CONNECTED_METADATA_KEY,
8019
8064
  ON_BEFORE_DISCONNECTED_METADATA_KEY,
8065
+ ON_CONSTRUCTOR_METADATA_KEY,
8020
8066
  QUERY_ALL_METADATA_KEY,
8021
8067
  QUERY_METADATA_KEY,
8022
- REPLACE_CHILDREN_METADATA_KEY,
8023
8068
  SET_ATTRIBUTE_METADATA_KEY,
8024
8069
  STYLE_METADATA_KEY,
8025
8070
  SWC_NOT_FOUND,
8026
8071
  SwcUtils,
8027
8072
  TemplateUtils,
8028
8073
  addClassList,
8074
+ addClassListHost,
8029
8075
  addEventListener,
8030
- appendChild,
8076
+ addEventListenerHost,
8077
+ applyNode,
8078
+ applyNodeHost,
8031
8079
  attribute,
8032
- changedAttribute,
8080
+ attributeHost,
8081
+ changedAttributeHost,
8033
8082
  createElement,
8034
8083
  elementDefine,
8035
8084
  emitCustomEvent,
8085
+ emitCustomEventHost,
8036
8086
  ensureInit2 as ensureInit,
8037
- findAllAppendChildMetadata,
8087
+ findAllApplyNodeMetadata,
8038
8088
  findAllAttributeChangedMetadata,
8039
8089
  findAllAttributeMetadata,
8040
8090
  findAllClassListMetadata,
8041
8091
  findAllLifecycleMetadata,
8042
- findAllReplaceChildrenMetadata,
8043
8092
  findAllSetAttributeMetadata,
8044
8093
  findAllStyleMetadata,
8045
8094
  getAddEventListenerMetadata,
8046
8095
  getChangedAttributeMetadata,
8047
8096
  getElementConfig,
8048
8097
  getEmitCustomEventMetadataList,
8098
+ getOnConnectedInnerHtmlMetadata,
8049
8099
  getQueryAllMetadata,
8050
8100
  getQueryMetadata,
8051
- getReplaceChildrenMetadata,
8052
8101
  getSetAttributeMetadata,
8053
8102
  htmlAElement,
8054
8103
  htmlArticleElement,
@@ -8077,19 +8126,26 @@ export {
8077
8126
  onBeforeDisconnected,
8078
8127
  onConnected,
8079
8128
  onConnectedInnerHtml,
8129
+ onConstructor,
8080
8130
  onDisconnected,
8081
8131
  query,
8082
8132
  queryAll,
8133
+ queryAllHost,
8134
+ queryHost,
8083
8135
  removeClassList,
8136
+ removeClassListHost,
8084
8137
  removeStyle,
8085
- replaceChildren,
8086
8138
  resolveTargetEls,
8087
8139
  setAttribute,
8140
+ setAttributeHost,
8088
8141
  setClassList,
8142
+ setClassListHost,
8089
8143
  setStyle,
8090
8144
  textNode,
8091
8145
  toggleClassList,
8146
+ toggleClassListHost,
8092
8147
  updateClassList,
8148
+ updateClassListHost,
8093
8149
  updateStyle
8094
8150
  };
8095
8151
  /*! Bundled license information: