@twobirds/microcomponents 0.0.82 → 0.0.84

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 (268) hide show
  1. package/assets/documentation/MC.md +0 -1
  2. package/assets/test/test.html +1 -1
  3. package/dist/MC.d.ts +11 -10
  4. package/dist/MC.d.ts.map +1 -1
  5. package/dist/MC.js +137 -200
  6. package/dist/MC.min.js +157 -296
  7. package/dist/MC.ts +202 -337
  8. package/dist/elements.d.ts +1 -1
  9. package/dist/elements.d.ts.map +1 -1
  10. package/dist/elements.js +26 -6
  11. package/dist/elements.min.js +1 -1
  12. package/dist/elements.ts +50 -7
  13. package/dist/formValues.js +2 -2
  14. package/dist/formValues.min.js +1 -1
  15. package/dist/formValues.ts +3 -3
  16. package/dist/microcomponents.d.ts +0 -1
  17. package/dist/microcomponents.d.ts.map +1 -1
  18. package/dist/microcomponents.js +0 -1
  19. package/dist/microcomponents.min.js +1 -1
  20. package/dist/microcomponents.ts +1 -1
  21. package/dist/observables.d.ts.map +1 -1
  22. package/dist/observables.js +52 -57
  23. package/dist/observables.min.js +1 -1
  24. package/dist/observables.ts +68 -73
  25. package/package.json +6 -5
  26. package/public/MC.d.ts +11 -10
  27. package/public/MC.d.ts.map +1 -1
  28. package/public/MC.js +137 -200
  29. package/public/MC.js.map +1 -1
  30. package/public/MC.min.js +157 -296
  31. package/public/MC.ts +202 -337
  32. package/public/documentation/MC.md +0 -1
  33. package/public/elements.d.ts +1 -1
  34. package/public/elements.d.ts.map +1 -1
  35. package/public/elements.js +26 -6
  36. package/public/elements.js.map +1 -1
  37. package/public/elements.min.js +1 -1
  38. package/public/elements.ts +50 -7
  39. package/public/formValues.js +2 -2
  40. package/public/formValues.js.map +1 -1
  41. package/public/formValues.min.js +1 -1
  42. package/public/formValues.ts +3 -3
  43. package/public/microcomponents.d.ts +0 -1
  44. package/public/microcomponents.d.ts.map +1 -1
  45. package/public/microcomponents.js +0 -1
  46. package/public/microcomponents.js.map +1 -1
  47. package/public/microcomponents.min.js +1 -1
  48. package/public/microcomponents.ts +1 -1
  49. package/public/observables.d.ts.map +1 -1
  50. package/public/observables.js +52 -57
  51. package/public/observables.js.map +1 -1
  52. package/public/observables.min.js +1 -1
  53. package/public/observables.ts +68 -73
  54. package/public/{test/selectors.ts → selectors._ts} +2 -367
  55. package/public/src/MC.d.ts +37 -0
  56. package/public/src/MC.d.ts.map +1 -0
  57. package/public/src/MC.js +316 -0
  58. package/public/src/MC.js.map +1 -0
  59. package/public/src/MC.ts +202 -337
  60. package/public/src/elements.d.ts +5 -0
  61. package/public/src/elements.d.ts.map +1 -0
  62. package/public/src/elements.js +68 -0
  63. package/public/src/elements.js.map +1 -0
  64. package/public/src/elements.ts +50 -7
  65. package/public/src/formValues.d.ts +3 -0
  66. package/public/src/formValues.d.ts.map +1 -0
  67. package/public/src/formValues.js +162 -0
  68. package/public/src/formValues.js.map +1 -0
  69. package/public/src/formValues.ts +3 -3
  70. package/public/src/helpers.d.ts +14 -0
  71. package/public/src/helpers.d.ts.map +1 -0
  72. package/public/src/helpers.js +113 -0
  73. package/public/src/microcomponents.d.ts +6 -0
  74. package/public/src/microcomponents.d.ts.map +1 -0
  75. package/public/src/microcomponents.js +7 -0
  76. package/public/src/microcomponents.js.map +1 -0
  77. package/public/src/microcomponents.ts +1 -1
  78. package/public/src/observables.d.ts +11 -0
  79. package/public/src/observables.d.ts.map +1 -0
  80. package/public/src/observables.js +244 -0
  81. package/public/src/observables.js.map +1 -0
  82. package/public/src/observables.ts +68 -73
  83. package/public/{selectors.ts → src/selectors._ts} +2 -367
  84. package/public/src/test/grandparent.css +11 -0
  85. package/public/src/test/test/child.d.ts +2 -0
  86. package/public/src/test/test/child.d.ts.map +1 -0
  87. package/public/src/test/test/child.js +15 -0
  88. package/public/src/test/test/child.js.map +1 -0
  89. package/public/src/test/test/child.ts +21 -0
  90. package/public/src/test/test/grandchild.d.ts +2 -0
  91. package/public/src/test/test/grandchild.d.ts.map +1 -0
  92. package/public/src/test/test/grandchild.js +15 -0
  93. package/public/src/test/test/grandchild.js.map +1 -0
  94. package/public/src/test/test/grandchild.ts +21 -0
  95. package/public/src/test/test/grandparent.d.ts +2 -0
  96. package/public/src/test/test/grandparent.d.ts.map +1 -0
  97. package/public/src/test/test/grandparent.js +1 -0
  98. package/public/src/test/test/grandparent.js.map +1 -0
  99. package/public/src/test/test/grandparent.ts +29 -0
  100. package/public/src/test/test/greatgrandchild.d.ts +2 -0
  101. package/public/src/test/test/greatgrandchild.d.ts.map +1 -0
  102. package/public/src/test/test/greatgrandchild.js +29 -0
  103. package/public/src/test/test/greatgrandchild.js.map +1 -0
  104. package/public/src/test/test/greatgrandchild.ts +42 -0
  105. package/public/src/test/test/parent.d.ts +2 -0
  106. package/public/src/test/test/parent.d.ts.map +1 -0
  107. package/public/src/test/test/parent.js +15 -0
  108. package/public/src/test/test/parent.js.map +1 -0
  109. package/public/src/test/test/parent.ts +21 -0
  110. package/public/src/test/test/testform.d.ts +2 -0
  111. package/public/src/test/test/testform.d.ts.map +1 -0
  112. package/public/src/test/test/testform.js +1 -0
  113. package/public/src/test/test/testform.js.map +1 -0
  114. package/public/src/test/test/testform.ts +153 -0
  115. package/public/src/test/test/testfunction.d.ts +3 -0
  116. package/public/src/test/test/testfunction.d.ts.map +1 -0
  117. package/public/src/test/test/testfunction.js +7 -0
  118. package/public/src/test/test/testfunction.js.map +1 -0
  119. package/public/src/test/test/testfunction.ts +12 -0
  120. package/public/src/test/test/testmc.d.ts +3 -0
  121. package/public/src/test/test/testmc.d.ts.map +1 -0
  122. package/public/src/test/test/testmc.js +10 -0
  123. package/public/src/test/test/testmc.js.map +1 -0
  124. package/public/src/test/test/testmc.ts +16 -0
  125. package/public/src/test/test/testsimpleclass.d.ts +3 -0
  126. package/public/src/test/test/testsimpleclass.d.ts.map +1 -0
  127. package/public/src/test/test/testsimpleclass.js +9 -0
  128. package/public/src/test/test/testsimpleclass.js.map +1 -0
  129. package/public/src/test/test/testsimpleclass.ts +15 -0
  130. package/public/src/test/test.d.ts +2 -0
  131. package/public/src/test/test.d.ts.map +1 -0
  132. package/public/src/test/test.js +80 -0
  133. package/public/src/test/test.js.map +1 -0
  134. package/public/src/test/test.ts +188 -0
  135. package/public/src/test/testform.css +47 -0
  136. package/public/src/test/testform.html +56 -0
  137. package/public/src/test/testform.json +27 -0
  138. package/public/test/MC.d.ts +11 -10
  139. package/public/test/MC.d.ts.map +1 -1
  140. package/public/test/MC.js +137 -200
  141. package/public/test/MC.min.js +377 -0
  142. package/public/test/MC.ts +202 -337
  143. package/public/test/elements.d.ts +1 -1
  144. package/public/test/elements.d.ts.map +1 -1
  145. package/public/test/elements.js +26 -6
  146. package/public/test/elements.min.js +1 -0
  147. package/public/test/elements.ts +50 -7
  148. package/public/test/formValues.js +2 -2
  149. package/public/test/formValues.min.js +1 -0
  150. package/public/test/formValues.ts +3 -3
  151. package/public/test/grandparent.css +1 -3
  152. package/public/test/microcomponents.d.ts +0 -1
  153. package/public/test/microcomponents.d.ts.map +1 -1
  154. package/public/test/microcomponents.js +0 -1
  155. package/public/test/microcomponents.min.js +1 -1
  156. package/public/test/microcomponents.ts +1 -1
  157. package/public/test/observables.d.ts.map +1 -1
  158. package/public/test/observables.js +52 -57
  159. package/public/test/observables.min.js +1 -0
  160. package/public/test/observables.ts +68 -73
  161. package/public/test/test/child.ts +21 -0
  162. package/public/test/test/grandchild.ts +21 -0
  163. package/public/test/test/grandparent.d.ts.map +1 -1
  164. package/public/test/test/grandparent.js +1 -1
  165. package/public/test/test/grandparent.js.map +1 -1
  166. package/public/test/test/grandparent.ts +29 -0
  167. package/public/test/test/greatgrandchild.ts +42 -0
  168. package/public/test/test/parent.ts +21 -0
  169. package/public/test/test/testform.js +1 -1
  170. package/public/test/test/testform.js.map +1 -1
  171. package/public/test/test/testform.ts +153 -0
  172. package/public/test/test/testfunction.d.ts +3 -0
  173. package/public/test/test/testfunction.d.ts.map +1 -0
  174. package/public/test/test/testfunction.js +7 -0
  175. package/public/test/test/testfunction.js.map +1 -0
  176. package/public/test/test/testfunction.ts +12 -0
  177. package/public/test/test/testmc.d.ts +2 -5
  178. package/public/test/test/testmc.d.ts.map +1 -1
  179. package/public/test/test/testmc.js +4 -4
  180. package/public/test/test/testmc.js.map +1 -1
  181. package/public/test/test/testmc.ts +16 -0
  182. package/public/test/test/testsimpleclass.d.ts +3 -0
  183. package/public/test/test/testsimpleclass.d.ts.map +1 -0
  184. package/public/test/test/testsimpleclass.js +9 -0
  185. package/public/test/test/testsimpleclass.js.map +1 -0
  186. package/public/test/test/testsimpleclass.ts +15 -0
  187. package/public/test/test.html +1 -1
  188. package/public/test/test.js +5 -6
  189. package/public/test/test.js.map +1 -1
  190. package/public/test/test.ts +188 -0
  191. package/public/test/testform.css +47 -0
  192. package/public/test/testform.html +56 -0
  193. package/public/test/testform.json +3 -3
  194. package/public/typedoc/assets/navigation.js +1 -1
  195. package/public/typedoc/assets/search.js +1 -1
  196. package/public/typedoc/classes/MC.DC.html +6 -4
  197. package/public/typedoc/classes/MC.MC.html +3 -4
  198. package/public/typedoc/classes/MC.McBase.html +2 -2
  199. package/public/typedoc/functions/MC.autoload.html +1 -1
  200. package/public/typedoc/functions/MC.off.html +1 -0
  201. package/public/typedoc/functions/MC.on.html +1 -0
  202. package/public/typedoc/functions/MC.one.html +1 -0
  203. package/public/typedoc/functions/elements.defineCE.html +1 -1
  204. package/public/typedoc/functions/elements.getCE.html +1 -1
  205. package/public/typedoc/functions/formValues.formValues.html +1 -1
  206. package/public/typedoc/functions/observables.observe.html +1 -1
  207. package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
  208. package/public/typedoc/modules/MC.html +7 -6
  209. package/public/typedoc/modules/elements.html +1 -1
  210. package/public/typedoc/modules/formValues.html +1 -1
  211. package/public/typedoc/modules/observables.html +1 -1
  212. package/public/typedoc/types/observables.Observable.html +1 -1
  213. package/src/MC.ts +202 -337
  214. package/src/elements.ts +50 -7
  215. package/src/formValues.ts +3 -3
  216. package/src/microcomponents.ts +1 -1
  217. package/src/observables.ts +68 -73
  218. package/{dist/selectors.ts → src/selectors._ts} +2 -367
  219. package/src/test/test/grandparent.ts +12 -4
  220. package/src/test/test/testform.ts +13 -11
  221. package/src/test/test/testfunction.ts +12 -0
  222. package/src/test/test/testmc.ts +13 -9
  223. package/src/test/test/testsimpleclass.ts +15 -0
  224. package/src/test/test.ts +8 -20
  225. package/tasks.md +36 -0
  226. package/tsconfig.json +2 -2
  227. package/typedoc.json +1 -1
  228. package/webpack.config.js +2 -2
  229. package/dist/McEvent.d.ts +0 -15
  230. package/dist/McEvent.d.ts.map +0 -1
  231. package/dist/McEvent.js +0 -71
  232. package/dist/selectors.d.ts +0 -108
  233. package/dist/selectors.d.ts.map +0 -1
  234. package/dist/selectors.js +0 -971
  235. package/dist/selectors.min.js +0 -1
  236. package/public/McEvent.d.ts +0 -15
  237. package/public/McEvent.d.ts.map +0 -1
  238. package/public/McEvent.js +0 -71
  239. package/public/McEvent.js.map +0 -1
  240. package/public/selectors.d.ts +0 -108
  241. package/public/selectors.d.ts.map +0 -1
  242. package/public/selectors.js +0 -971
  243. package/public/selectors.js.map +0 -1
  244. package/public/selectors.min.js +0 -1
  245. package/public/src/selectors.ts +0 -1634
  246. package/public/test/MC.js.map +0 -1
  247. package/public/test/McEvent.d.ts +0 -15
  248. package/public/test/McEvent.d.ts.map +0 -1
  249. package/public/test/McEvent.js +0 -71
  250. package/public/test/McEvent.js.map +0 -1
  251. package/public/test/McEvent.ts +0 -96
  252. package/public/test/elements.js.map +0 -1
  253. package/public/test/formValues.js.map +0 -1
  254. package/public/test/microcomponents.js.map +0 -1
  255. package/public/test/observables.js.map +0 -1
  256. package/public/test/selectors.d.ts +0 -108
  257. package/public/test/selectors.d.ts.map +0 -1
  258. package/public/test/selectors.js +0 -971
  259. package/public/test/selectors.js.map +0 -1
  260. package/public/typedoc/classes/MC.McEvent.html +0 -9
  261. package/public/typedoc/functions/MC.addListener.html +0 -1
  262. package/public/typedoc/functions/MC.removeListener.html +0 -1
  263. package/src/McEvent.ts +0 -96
  264. package/src/selectors.ts +0 -1634
  265. /package/{dist/McEvent.ts → public/McEvent._ts} +0 -0
  266. /package/public/{McEvent.ts → src/McEvent._ts} +0 -0
  267. /package/public/{test → src}/helpers.js.map +0 -0
  268. /package/{public/src/McEvent.ts → src/McEvent._ts} +0 -0
@@ -480,7 +480,6 @@ import { DC, LooseObject } from '../microcomponents.js';
480
480
  export default class myMC extends DC {
481
481
  constructor(target: HTMLElement) {
482
482
  super(target);
483
- delete this._mc; // not needed
484
483
  }
485
484
 
486
485
  oneInit() {
@@ -24,6 +24,6 @@
24
24
  <body>
25
25
  <h3>Open debugger (F12), check console...</h3>
26
26
  <test-grandparent></test-grandparent>
27
- <test-testform _mc="test-testmc"></test-testform>
27
+ <test-testform data-mc="test-testmc"></test-testform>
28
28
  </body>
29
29
  </html>
package/dist/MC.d.ts CHANGED
@@ -1,36 +1,37 @@
1
1
  import { LooseObject } from './helpers.js';
2
- import { McEvent } from './McEvent.js';
3
2
  export interface HTMLMcElement extends HTMLElement {
4
3
  _mc: LooseObject;
5
4
  }
6
- declare function addListener(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject | null, capture?: boolean, once?: boolean): void;
7
- declare function removeListener(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject | null): void;
8
- declare function trigger(target: HTMLElement, ev: McEvent | string, data?: any, bubble?: string): void;
5
+ declare function off(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject): void;
6
+ declare function on(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject, once?: boolean): void;
7
+ declare function one(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject): void;
8
+ declare function trigger(domNode: HTMLElement, event: CustomEvent | string, data?: any, bubble?: string): void;
9
9
  declare class McBase {
10
- #private;
10
+ private _target;
11
11
  constructor(target?: {
12
12
  [key: string]: any;
13
13
  }, debug?: boolean);
14
14
  get target(): any;
15
15
  }
16
16
  declare class MC extends McBase {
17
- _mc?: LooseObject;
18
17
  constructor(target?: any);
19
18
  static trigger: typeof trigger;
20
- trigger(ev: McEvent | string, data?: any, bubble?: string): this | undefined;
19
+ trigger(ev: string, data?: any, bubble?: string): void;
21
20
  }
22
21
  declare class DC extends McBase {
23
- _mc?: LooseObject;
24
22
  constructor(target: HTMLElement, debug?: boolean);
25
23
  static add: Function;
26
24
  static remove: Function;
27
25
  static trigger: Function;
28
- trigger(ev: McEvent | string, data?: any, bubble?: string): void;
26
+ off(eventName: string, handler: EventListenerOrEventListenerObject): void;
27
+ on(eventName: string, handler: EventListenerOrEventListenerObject): void;
28
+ one(eventName: string, handler: EventListenerOrEventListenerObject): void;
29
+ trigger(ev: CustomEvent | string, data?: any, bubble?: string): void;
29
30
  parent(search?: string): any[];
30
31
  ancestors(search?: string): any[];
31
32
  children(search?: string): any[];
32
33
  descendants(search?: string): any[];
33
34
  }
34
35
  declare function autoload(enable?: boolean): boolean;
35
- export { addListener, removeListener, McBase, MC, DC, McEvent, autoload };
36
+ export { McBase, MC, DC, autoload, on, one, off, trigger };
36
37
  //# sourceMappingURL=MC.d.ts.map
package/dist/MC.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"MC.d.ts","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAevC,MAAM,WAAW,aAAc,SAAQ,WAAW;IACjD,GAAG,EAAE,WAAW,CAAC;CACjB;AA8CD,iBAAS,WAAW,CACnB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,GAAG,IAAI,EAClD,OAAO,GAAE,OAAe,EACxB,IAAI,GAAE,OAAe,QAarB;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,GAAG,IAAI,QAGlD;AAmDD,iBAAS,OAAO,CACf,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,IAAI,GAAE,GAAQ,EACd,MAAM,GAAE,MAAY,QAwBpB;AAiGD,cAAM,MAAM;;gBAGC,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,KAAK,GAAE,OAAe;IAWnE,IAAI,MAAM,IAAI,GAAG,CAEhB;CACD;AAED,cAAM,EAAG,SAAQ,MAAM;IACtB,GAAG,CAAC,EAAE,WAAW,CAAM;gBAEX,MAAM,CAAC,EAAE,GAAG;IAIxB,MAAM,CAAC,OAAO,iBAAW;IAEzB,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,GAAE,GAAQ,EAAE,MAAM,GAAE,MAAY;CAmElE;AAED,cAAM,EAAG,SAAQ,MAAM;IACtB,GAAG,CAAC,EAAE,WAAW,CAAM;gBAEX,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,OAAe;IAIvD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAO;IAC3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAU;IACjC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAW;IAEnC,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,GAAE,GAAQ,EAAE,MAAM,CAAC,EAAE,MAAM;IAI7D,MAAM,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAMlC,SAAS,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAMrC,QAAQ,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAYpC,WAAW,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;CAMvC;AA6KD,iBAAS,QAAQ,CAAC,MAAM,GAAE,OAAc,GAAG,OAAO,CAmBjD;AAID,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"MC.d.ts","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiB3C,MAAM,WAAW,aAAc,SAAQ,WAAW;IACjD,GAAG,EAAE,WAAW,CAAC;CACjB;AA2HD,iBAAS,GAAG,CAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,QAE1F;AAED,iBAAS,EAAE,CAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,EAAE,IAAI,GAAE,OAAe,QAEhH;AAED,iBAAS,GAAG,CAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,QAE1F;AAGD,iBAAS,OAAO,CACf,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,WAAW,GAAG,MAAM,EAC3B,IAAI,GAAE,GAAQ,EACd,MAAM,GAAE,MAAY,QAepB;AA4ED,cAAM,MAAM;IACX,OAAO,CAAC,OAAO,CAAe;gBAElB,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,KAAK,GAAE,OAAe;IAUnE,IAAI,MAAM,IAAI,GAAG,CAEhB;CAED;AAED,cAAM,EAAG,SAAQ,MAAM;gBACV,MAAM,CAAC,EAAE,GAAG;IAIxB,MAAM,CAAC,OAAO,iBAAW;IAEzB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,GAAQ,EAAE,MAAM,GAAE,MAAY;CAGxD;AAED,cAAM,EAAG,SAAQ,MAAM;gBACV,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,OAAe;IAIvD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAO;IAC3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAU;IACjC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAW;IAEnC,GAAG,CAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC;IAInE,EAAE,CAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC;IAIlE,GAAG,CAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC;IAInE,OAAO,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,GAAE,GAAQ,EAAE,MAAM,GAAE,MAAY;IAOtE,MAAM,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAMlC,SAAS,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAMrC,QAAQ,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAQpC,WAAW,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;CAMvC;AA+GD,iBAAS,QAAQ,CAAC,MAAM,GAAE,OAAc,GAAG,OAAO,CAmBjD;AAID,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"}
package/dist/MC.js CHANGED
@@ -1,11 +1,13 @@
1
1
  'use strict';
2
- import { McEvent } from './McEvent.js';
3
2
  var isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
4
- let nativeEventNames = new Set();
5
- if (isBrowser()) {
6
- Object.keys(HTMLElement.prototype)
7
- .filter((key) => /^on/.test(key))
8
- .forEach((eventName) => nativeEventNames.add(eventName));
3
+ function getNativeEventNames(domNode) {
4
+ let nativeEventNames = [];
5
+ if (isBrowser()) {
6
+ Object.keys(HTMLElement.prototype)
7
+ .filter((key) => /^on/.test(key))
8
+ .forEach((eventName) => nativeEventNames.push(eventName));
9
+ }
10
+ return nativeEventNames;
9
11
  }
10
12
  function getMicroComponents(elements, search) {
11
13
  let mcValues = [];
@@ -44,19 +46,6 @@ function traverseNodes(node, search, firstonly = true) {
44
46
  function isDOM(element) {
45
47
  return element && element instanceof HTMLElement;
46
48
  }
47
- function addListener(domNode, eventName, handler, capture = false, once = false) {
48
- let options = { once: false };
49
- if (capture) {
50
- options.capture = capture;
51
- }
52
- if (once) {
53
- options.once = once;
54
- }
55
- domNode.addEventListener(eventName, handler, options);
56
- }
57
- function removeListener(domNode, eventName, handler) {
58
- domNode.removeEventListener(eventName, handler);
59
- }
60
49
  function add(target, key, element = {}) {
61
50
  let node = target;
62
51
  if (!node._mc) {
@@ -69,8 +58,8 @@ function add(target, key, element = {}) {
69
58
  const _mc = node._mc;
70
59
  if (key.length && !_mc[key]) {
71
60
  _mc[key] = element;
72
- if (target instanceof HTMLElement && !target.getAttribute('_mc')) {
73
- target.setAttribute('_mc', '');
61
+ if (target instanceof HTMLElement && !target.getAttribute('data-mc')) {
62
+ target.setAttribute('data-mc', '');
74
63
  }
75
64
  }
76
65
  return element;
@@ -84,25 +73,8 @@ function remove(target, key) {
84
73
  }
85
74
  if (!Object.keys(_mc).length &&
86
75
  target instanceof HTMLElement &&
87
- target.hasAttribute('_mc')) {
88
- target.removeAttribute('_mc');
89
- }
90
- return;
91
- }
92
- function trigger(target, ev, data = {}, bubble = 'l') {
93
- let _mc = target?._mc;
94
- if (!_mc)
95
- return;
96
- let event = ev instanceof McEvent
97
- ? new McEvent(ev.type, ev.data, 'l')
98
- : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble);
99
- [...Object.values(_mc)].forEach((mc) => {
100
- if (mc?.trigger && typeof mc?.trigger === 'function') {
101
- mc?.trigger(event);
102
- }
103
- });
104
- if (/[ud]/.test(mcEvent.bubble)) {
105
- bubbleEvent(target, mcEvent);
76
+ target.hasAttribute('data-mc')) {
77
+ target.removeAttribute('data-mc');
106
78
  }
107
79
  return;
108
80
  }
@@ -113,6 +85,48 @@ function init(element) {
113
85
  element.trigger('Init');
114
86
  }, 0);
115
87
  }
88
+ function getMcEventName(eventName) {
89
+ return '_mc' + eventName[0].toUpperCase() + eventName.substring(1);
90
+ }
91
+ function off(domNode, eventName, handler) {
92
+ domNode.removeEventListener(getMcEventName(eventName), handler);
93
+ }
94
+ function on(domNode, eventName, handler, once = false) {
95
+ domNode.addEventListener(getMcEventName(eventName), handler, { capture: false, once });
96
+ }
97
+ function one(domNode, eventName, handler) {
98
+ on(domNode, eventName, handler, true);
99
+ }
100
+ function trigger(domNode, event, data = {}, bubble = 'l') {
101
+ const ev = typeof event === 'string'
102
+ ? new CustomEvent(getMcEventName(event), { detail: { data, bubble } })
103
+ : event;
104
+ if (bubble.length && bubble.indexOf('l') > -1) {
105
+ domNode.dispatchEvent(ev);
106
+ }
107
+ if (/[u|d]/.test(bubble)) {
108
+ bubbleEvent(domNode, ev);
109
+ }
110
+ }
111
+ function bubbleEvent(domNode, ev) {
112
+ setTimeout(() => {
113
+ if (ev.detail.bubble.indexOf('l') === -1) {
114
+ ev.detail.bubble += 'l';
115
+ }
116
+ if (ev.detail.bubble.indexOf('u') > -1) {
117
+ domNode.closest('[data-mc]')?.dispatchEvent(ev);
118
+ }
119
+ if (ev.detail.bubble.indexOf('d') > -1) {
120
+ let targets = new Set(domNode._mc
121
+ .children()
122
+ .map((c) => c?.target));
123
+ targets.forEach((target) => {
124
+ if (target)
125
+ DC.trigger(target, ev);
126
+ });
127
+ }
128
+ }, 0);
129
+ }
116
130
  function autoAttachListeners(element) {
117
131
  if (!isBrowser() || element.constructor === DC)
118
132
  return;
@@ -123,117 +137,66 @@ function autoAttachListeners(element) {
123
137
  .filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
124
138
  typeof that.constructor.prototype[key] === 'function')
125
139
  .forEach((key) => {
126
- let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => {
127
- that.trigger(withoutOnOne, ev);
140
+ let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase();
141
+ let listener = (ev) => {
142
+ that[key](ev);
128
143
  };
129
- if (once) {
130
- Object.defineProperty(element, 'on' + withoutOnOne, {
131
- configurable: true,
132
- enumerable: false,
133
- writable: true,
134
- value: (ev) => {
135
- that.constructor.prototype[key].bind(that)(ev);
136
- },
137
- });
144
+ if (!!target['on' + nativeEventName]) {
145
+ target.addEventListener(nativeEventName, listener);
138
146
  }
139
- if (nativeEventNames.has('on' + nativeEventName)) {
140
- addListener(target, nativeEventName, listener, false, once);
147
+ else {
148
+ on(target, withoutOnOne, listener, once);
141
149
  }
142
150
  });
143
151
  }
144
152
  }
145
- function bubbleEvent(target, ev) {
146
- if (/[ud]/.test(ev.bubble)) {
147
- setTimeout(() => {
148
- if (ev.bubble.indexOf('l') === -1) {
149
- ev.bubble += 'l';
150
- }
151
- if (ev.bubble.indexOf('u') > -1) {
152
- let parent = traverseNodes(target, '', true)?.[0].target;
153
- if (parent)
154
- DC.trigger(parent, ev);
155
- }
156
- if (ev.bubble.indexOf('d') > -1) {
157
- let targets = new Set(target._mc
158
- .children()
159
- .map((c) => c?.target));
160
- targets.forEach((target) => {
161
- if (target)
162
- DC.trigger(target, ev);
163
- });
164
- }
165
- }, 0);
166
- }
153
+ function getMcChildNodes(domNode) {
154
+ const id = Math.random().toString().replace('.', '');
155
+ const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
156
+ domNode.setAttribute('temp_id', id);
157
+ const myDomElements = domNode.querySelectorAll(selector);
158
+ domNode.removeAttribute('temp_id');
159
+ return myDomElements;
167
160
  }
168
161
  class McBase {
169
- #target;
162
+ _target;
170
163
  constructor(target, debug = false) {
171
- let that = this, element = that;
172
- this.#target = new WeakRef(target || {});
164
+ let element = this;
165
+ this._target = new WeakRef(target || {});
173
166
  init(element);
174
167
  autoAttachListeners(element);
175
168
  }
176
169
  get target() {
177
- return this.#target.deref();
170
+ return this._target.deref();
178
171
  }
179
172
  }
180
173
  class MC extends McBase {
181
- _mc = {};
182
174
  constructor(target) {
183
175
  super(target);
184
176
  }
185
177
  static trigger = trigger;
186
178
  trigger(ev, data = {}, bubble = 'l') {
187
- let that = this;
188
- if (that.constructor === MC || that.constructor === DC) {
189
- let event = ev instanceof McEvent
190
- ? new McEvent(ev.type, ev.data, 'l')
191
- : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string'
192
- ? ev
193
- : new McEvent(ev, data, bubble);
194
- [...Object.getOwnPropertyNames(that)].forEach((mc) => {
195
- if (that[mc]?.trigger &&
196
- typeof that[mc]?.trigger === 'function') {
197
- that[mc]?.trigger(event);
198
- }
199
- });
200
- if (/[ud]/.test(mcEvent.bubble)) {
201
- bubbleEvent(that.target, mcEvent);
202
- }
203
- return;
204
- }
205
- if (that instanceof MC || that instanceof DC) {
206
- const that = this, mcEvent = typeof ev !== 'string'
207
- ? ev
208
- : new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
209
- if (mcEvent.bubble.indexOf('l') > -1) {
210
- if (!mcEvent.immediateStopped &&
211
- typeof that[handlerName] === 'function') {
212
- that[handlerName](mcEvent);
213
- if (that.hasOwnProperty(handlerName)) {
214
- delete that[handlerName];
215
- }
216
- }
217
- }
218
- if (mcEvent.stopped || mcEvent.bubble === 'l') {
219
- return that;
220
- }
221
- if (/[ud]/.test(mcEvent.bubble)) {
222
- bubbleEvent(that.target, mcEvent);
223
- }
224
- }
225
179
  }
226
180
  }
227
181
  class DC extends McBase {
228
- _mc = {};
229
182
  constructor(target, debug = false) {
230
183
  super(target);
231
184
  }
232
185
  static add = add;
233
186
  static remove = remove;
234
187
  static trigger = trigger;
235
- trigger(ev, data = {}, bubble) {
236
- MC.prototype.trigger.call(this, ev, data, bubble);
188
+ off(eventName, handler) {
189
+ off(this.target, eventName, handler);
190
+ }
191
+ on(eventName, handler) {
192
+ on(this.target, eventName, handler);
193
+ }
194
+ one(eventName, handler) {
195
+ one(this.target, eventName, handler);
196
+ }
197
+ trigger(ev, data = {}, bubble = 'l') {
198
+ if (typeof ev === 'string') {
199
+ }
237
200
  }
238
201
  parent(search = '') {
239
202
  let target = this.target;
@@ -251,109 +214,83 @@ class DC extends McBase {
251
214
  let target = this?.target;
252
215
  if (!isDOM(target))
253
216
  return [];
254
- const id = Math.random().toString().replace('.', '');
255
- const selector = '[_mc]:not([temp_id="' + id + '"] [_mc] [_mc])';
256
- target.setAttribute('temp_id', id);
257
- const myDomElements = target.querySelectorAll(selector);
217
+ const myDomElements = getMcChildNodes(target);
258
218
  const mcValues = getMicroComponents([...myDomElements], search);
259
- target.removeAttribute('temp_id');
260
219
  return mcValues;
261
220
  }
262
221
  descendants(search = '') {
263
222
  let target = this?.target;
264
223
  if (!isDOM(target))
265
224
  return [];
266
- const myDomElements = target.querySelectorAll('*[_mc]');
225
+ const myDomElements = target.querySelectorAll('*[data-mc]');
267
226
  return getMicroComponents([...myDomElements], search);
268
227
  }
269
228
  }
270
- const CEs = new Map();
271
- const MCs = new Map();
229
+ const loadingDCs = new Set();
230
+ function attachDC(element) {
231
+ return () => {
232
+ const elements = Array
233
+ .from(document.querySelectorAll(`[data-mc*="${element}"]`))
234
+ .filter(element => element instanceof HTMLElement);
235
+ if (elements.length === 0)
236
+ return;
237
+ const klass = customElements.get(element);
238
+ elements.forEach((node) => {
239
+ DC.add(node, klass.name, new klass(node));
240
+ const new_mc = node
241
+ .getAttribute('data-mc')
242
+ .split(' ')
243
+ .filter((name) => name !== element && name !== '')
244
+ .join(' ')
245
+ .trim();
246
+ node.setAttribute('data-mc', new_mc);
247
+ });
248
+ };
249
+ }
250
+ ;
272
251
  function makeLoadScript(element) {
252
+ if (loadingDCs.has(element))
253
+ return;
254
+ loadingDCs.add(element);
273
255
  const fileName = './' + element.split('-').join('/') + '.js';
274
256
  const se = document.createElement('script');
275
257
  se.setAttribute('src', fileName);
276
258
  se.setAttribute('blocking', 'render');
277
259
  se.async = true;
278
260
  se.setAttribute('type', 'module');
279
- se.setAttribute('name', element);
261
+ se.setAttribute('data-name', element);
280
262
  se.setAttribute('loading', '');
281
- addListener(se, 'load', (ev) => {
282
- se.removeAttribute('loading');
283
- se.setAttribute('loaded', '');
263
+ const loadedPromise = customElements.whenDefined(element);
264
+ loadedPromise.then(attachDC(element));
265
+ se.addEventListener('load', (ev) => {
266
+ loadingDCs.delete(element);
267
+ document.head.querySelector(`script[data-name="${element}"]`)?.remove();
284
268
  });
285
- addListener(se, 'error', (ev) => {
286
- console.error('could not load Custom Element code from', fileName);
269
+ se.addEventListener('error', (ev) => {
270
+ console.error('could not load DC code from', fileName);
287
271
  });
288
- return se;
272
+ document.head.append(se);
289
273
  }
290
- function onLoadCallback(script) {
291
- setTimeout(function () {
292
- const importFileName = script.getAttribute('src');
293
- const elementName = script.getAttribute('name');
294
- const se = document.createElement('script');
295
- se.async = true;
296
- se.setAttribute('type', 'module');
297
- const code = `
298
-
299
- import _ from "${importFileName}";
300
- import { DC } from "./microcomponents.js";
301
-
302
- const elements = Array.from(document.querySelectorAll('[_mc*="${elementName}"]')).filter( element => element instanceof HTMLElement );
303
-
304
- elements.forEach((element) => {
305
- // add class to MCs repository
306
- autoload.state.MCs.set( '${elementName}', _ );
307
- // add instance to HTMLElement
308
- DC.add(element, _.name, new _(element));
309
- // remove instance name from elements "_mc" attribute
310
- element.setAttribute('_mc', element.getAttribute('_mc').replace('${elementName}', '').replace( /\w\w/g, ' ').trim());
311
- });
312
-
313
- setTimeout( () => {
314
- document.body.querySelector('script[name="${elementName}]"')?.remove();
315
- },0);
316
-
317
- `;
318
- se.innerHTML = code;
319
- document.body.append(se);
320
- }, 0);
321
- }
322
- function loadUndefinedMicroComponents() {
274
+ function loadUndefinedMCs() {
323
275
  [...document.querySelectorAll(':not(:defined)')]
324
276
  .filter((element) => !!element
325
277
  && !customElements.get(element.tagName.toLowerCase())
326
- && !CEs.has(element.tagName.toLowerCase()))
278
+ && !loadingDCs.has(element.tagName.toLowerCase()))
327
279
  .forEach((el) => {
328
- const elementName = el.tagName.toLowerCase(), fileName = './' + elementName.split('-').join('/') + '.js';
329
- const se = makeLoadScript(elementName);
330
- addListener(se, 'load', () => {
331
- CEs.set(elementName, customElements.get(el.tagName.toLowerCase()));
332
- });
333
- CEs.set(elementName, 'loading');
334
- document.head.append(se);
280
+ makeLoadScript(el.tagName.toLowerCase());
335
281
  });
336
- [...document.querySelectorAll('[_mc]:not([_mc=""]')]
282
+ [...document.querySelectorAll('[data-mc]:not([data-mc=""]')]
337
283
  .filter((element) => !!element)
338
284
  .forEach((el) => {
339
- const elements = el.getAttribute('_mc')?.split(' ').filter(m => !!m) || [];
340
- const elementsToBeLoaded = elements.filter(m => !MCs.has(m));
341
- elementsToBeLoaded?.forEach(elementName => {
342
- const se = makeLoadScript(elementName);
343
- addListener(se, 'load', () => onLoadCallback(document.head.querySelector(`script[name="${elementName}"]`)));
344
- MCs.set(elementName, 'loading');
345
- document.head.append(se);
346
- });
347
- const elementsAlreadyLoaded = elements.filter(m => MCs.has(m) && !MCs.get(m).length);
348
- elementsAlreadyLoaded?.forEach(elementName => {
349
- setTimeout(() => {
350
- DC.add(el, elementName, new (autoload.state.MCs.get(elementName))(el));
351
- const newAttribute = el.getAttribute('_mc')
352
- .replace('${elementName}', '')
353
- .replace(/\w\w/g, ' ')
354
- .trim() || '_mc';
355
- el.setAttribute('_mc');
356
- }, 5);
285
+ const _mc = el.getAttribute('data-mc')?.split(' ').filter(name => name !== '');
286
+ _mc?.forEach(element => {
287
+ const isDefined = customElements.get(element);
288
+ if (!loadingDCs.has(element) && !isDefined) {
289
+ makeLoadScript(element);
290
+ }
291
+ else if (isDefined) {
292
+ attachDC(element)();
293
+ }
357
294
  });
358
295
  });
359
296
  }
@@ -366,14 +303,14 @@ function autoload(enable = true) {
366
303
  return autoloadEnabled;
367
304
  }
368
305
  autoloadEnabled = enable;
369
- observer = new MutationObserver(loadUndefinedMicroComponents);
306
+ observer = new MutationObserver(loadUndefinedMCs);
370
307
  setTimeout(() => {
371
308
  observer.observe(document.body, { childList: true, subtree: true });
372
- loadUndefinedMicroComponents();
309
+ loadUndefinedMCs();
373
310
  }, 5);
374
311
  window.autoload = window.autoload || autoload;
375
312
  return autoloadEnabled;
376
313
  }
377
- autoload.state = { CEs, MCs };
378
- export { addListener, removeListener, McBase, MC, DC, McEvent, autoload };
314
+ autoload.state = loadingDCs;
315
+ export { McBase, MC, DC, autoload, on, one, off, trigger };
379
316
  //# sourceMappingURL=MC.js.map