@twobirds/microcomponents 0.1.1 → 0.1.2

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 (324) hide show
  1. package/dist/MC.min.js +33 -52
  2. package/dist/elements.min.js +1 -1
  3. package/dist/formValues.min.js +1 -1
  4. package/dist/microcomponents.min.js +1 -1
  5. package/dist/observables.min.js +1 -1
  6. package/package.json +11 -2
  7. package/.gitlab-ci.yml +0 -18
  8. package/.vscode/settings.json +0 -3
  9. package/MicroComponents.svg +0 -15
  10. package/assets/documentation/MC.md +0 -547
  11. package/assets/documentation/MicroComponents.svg +0 -15
  12. package/assets/documentation/ajaxian-1.png +0 -0
  13. package/assets/documentation/ajaxian-2.png +0 -0
  14. package/assets/documentation/ajaxian-3.png +0 -0
  15. package/assets/documentation/elements.md +0 -277
  16. package/assets/documentation/formvalues.md +0 -25
  17. package/assets/documentation/functional_requirements.md +0 -8
  18. package/assets/documentation/history.md +0 -436
  19. package/assets/documentation/klemmstein.png +0 -0
  20. package/assets/documentation/magic.md +0 -29
  21. package/assets/documentation/observables.md +0 -187
  22. package/assets/documentation/rnd0023-1.jpg +0 -0
  23. package/assets/documentation/rnd0023-2.jpg +0 -0
  24. package/assets/documentation/rnd0023-3.jpg +0 -0
  25. package/assets/documentation/tB_react.md +0 -207
  26. package/assets/documentation/usage.md +0 -142
  27. package/assets/documentation/why.md +0 -25
  28. package/assets/fiddle/MicroComponents.svg +0 -15
  29. package/assets/fiddle/fiddle.css +0 -0
  30. package/assets/fiddle/fiddle.js +0 -0
  31. package/assets/fiddle/index.html +0 -0
  32. package/assets/test/MicroComponents.svg +0 -15
  33. package/assets/test/grandparent.css +0 -16
  34. package/assets/test/myButton.css +0 -19
  35. package/assets/test/style.css +0 -8
  36. package/assets/test/test.html +0 -29
  37. package/assets/test/testform.json +0 -27
  38. package/public/.nojekyll +0 -1
  39. package/public/MC.d.ts +0 -39
  40. package/public/MC.d.ts.map +0 -1
  41. package/public/MC.js +0 -287
  42. package/public/MC.js.map +0 -1
  43. package/public/MC.min.js +0 -348
  44. package/public/MC.ts +0 -431
  45. package/public/MicroComponents.svg +0 -15
  46. package/public/documentation/MC.md +0 -547
  47. package/public/documentation/MicroComponents.svg +0 -15
  48. package/public/documentation/ajaxian-1.png +0 -0
  49. package/public/documentation/ajaxian-2.png +0 -0
  50. package/public/documentation/ajaxian-3.png +0 -0
  51. package/public/documentation/elements.md +0 -277
  52. package/public/documentation/formvalues.md +0 -25
  53. package/public/documentation/functional_requirements.md +0 -8
  54. package/public/documentation/history.md +0 -436
  55. package/public/documentation/klemmstein.png +0 -0
  56. package/public/documentation/magic.md +0 -29
  57. package/public/documentation/observables.md +0 -187
  58. package/public/documentation/rnd0023-1.jpg +0 -0
  59. package/public/documentation/rnd0023-2.jpg +0 -0
  60. package/public/documentation/rnd0023-3.jpg +0 -0
  61. package/public/documentation/tB_react.md +0 -207
  62. package/public/documentation/usage.md +0 -142
  63. package/public/documentation/why.md +0 -25
  64. package/public/elements.d.ts +0 -5
  65. package/public/elements.d.ts.map +0 -1
  66. package/public/elements.js +0 -68
  67. package/public/elements.js.map +0 -1
  68. package/public/elements.min.js +0 -1
  69. package/public/elements.ts +0 -119
  70. package/public/fiddle/MicroComponents.svg +0 -15
  71. package/public/fiddle/fiddle.css +0 -0
  72. package/public/fiddle/fiddle.js +0 -0
  73. package/public/fiddle/index.html +0 -0
  74. package/public/formValues.d.ts +0 -3
  75. package/public/formValues.d.ts.map +0 -1
  76. package/public/formValues.js +0 -162
  77. package/public/formValues.js.map +0 -1
  78. package/public/formValues.min.js +0 -1
  79. package/public/formValues.ts +0 -225
  80. package/public/helpers.d.ts +0 -14
  81. package/public/helpers.d.ts.map +0 -1
  82. package/public/helpers.js +0 -113
  83. package/public/helpers.js.map +0 -1
  84. package/public/helpers.ts +0 -149
  85. package/public/microcomponents.d.ts +0 -6
  86. package/public/microcomponents.d.ts.map +0 -1
  87. package/public/microcomponents.js +0 -7
  88. package/public/microcomponents.js.map +0 -1
  89. package/public/microcomponents.min.js +0 -1
  90. package/public/microcomponents.ts +0 -8
  91. package/public/observables.d.ts +0 -11
  92. package/public/observables.d.ts.map +0 -1
  93. package/public/observables.js +0 -244
  94. package/public/observables.js.map +0 -1
  95. package/public/observables.min.js +0 -1
  96. package/public/observables.ts +0 -416
  97. package/public/selectors._ts +0 -1269
  98. package/public/src/MC.d.ts +0 -39
  99. package/public/src/MC.d.ts.map +0 -1
  100. package/public/src/MC.js +0 -287
  101. package/public/src/MC.js.map +0 -1
  102. package/public/src/MC.ts +0 -431
  103. package/public/src/elements.d.ts +0 -5
  104. package/public/src/elements.d.ts.map +0 -1
  105. package/public/src/elements.js +0 -68
  106. package/public/src/elements.js.map +0 -1
  107. package/public/src/elements.ts +0 -119
  108. package/public/src/formValues.d.ts +0 -3
  109. package/public/src/formValues.d.ts.map +0 -1
  110. package/public/src/formValues.js +0 -162
  111. package/public/src/formValues.js.map +0 -1
  112. package/public/src/formValues.ts +0 -225
  113. package/public/src/helpers.d.ts +0 -14
  114. package/public/src/helpers.d.ts.map +0 -1
  115. package/public/src/helpers.js +0 -113
  116. package/public/src/helpers.js.map +0 -1
  117. package/public/src/helpers.ts +0 -149
  118. package/public/src/microcomponents.d.ts +0 -6
  119. package/public/src/microcomponents.d.ts.map +0 -1
  120. package/public/src/microcomponents.js +0 -7
  121. package/public/src/microcomponents.js.map +0 -1
  122. package/public/src/microcomponents.ts +0 -8
  123. package/public/src/observables.d.ts +0 -11
  124. package/public/src/observables.d.ts.map +0 -1
  125. package/public/src/observables.js +0 -244
  126. package/public/src/observables.js.map +0 -1
  127. package/public/src/observables.ts +0 -416
  128. package/public/src/selectors._ts +0 -1269
  129. package/public/src/test/grandparent.css +0 -14
  130. package/public/src/test/test/child.d.ts +0 -2
  131. package/public/src/test/test/child.d.ts.map +0 -1
  132. package/public/src/test/test/child.js +0 -26
  133. package/public/src/test/test/child.js.map +0 -1
  134. package/public/src/test/test/child.ts +0 -36
  135. package/public/src/test/test/grandchild.d.ts +0 -2
  136. package/public/src/test/test/grandchild.d.ts.map +0 -1
  137. package/public/src/test/test/grandchild.js +0 -22
  138. package/public/src/test/test/grandchild.js.map +0 -1
  139. package/public/src/test/test/grandchild.ts +0 -31
  140. package/public/src/test/test/grandparent.d.ts +0 -2
  141. package/public/src/test/test/grandparent.d.ts.map +0 -1
  142. package/public/src/test/test/grandparent.js +0 -1
  143. package/public/src/test/test/grandparent.js.map +0 -1
  144. package/public/src/test/test/grandparent.ts +0 -43
  145. package/public/src/test/test/greatgrandchild.d.ts +0 -2
  146. package/public/src/test/test/greatgrandchild.d.ts.map +0 -1
  147. package/public/src/test/test/greatgrandchild.js +0 -36
  148. package/public/src/test/test/greatgrandchild.js.map +0 -1
  149. package/public/src/test/test/greatgrandchild.ts +0 -51
  150. package/public/src/test/test/parent.d.ts +0 -2
  151. package/public/src/test/test/parent.d.ts.map +0 -1
  152. package/public/src/test/test/parent.js +0 -25
  153. package/public/src/test/test/parent.js.map +0 -1
  154. package/public/src/test/test/parent.ts +0 -35
  155. package/public/src/test/test/testform.d.ts +0 -2
  156. package/public/src/test/test/testform.d.ts.map +0 -1
  157. package/public/src/test/test/testform.js +0 -1
  158. package/public/src/test/test/testform.js.map +0 -1
  159. package/public/src/test/test/testform.ts +0 -153
  160. package/public/src/test/test/testfunction.d.ts +0 -3
  161. package/public/src/test/test/testfunction.d.ts.map +0 -1
  162. package/public/src/test/test/testfunction.js +0 -7
  163. package/public/src/test/test/testfunction.js.map +0 -1
  164. package/public/src/test/test/testfunction.ts +0 -12
  165. package/public/src/test/test/testmc.d.ts +0 -3
  166. package/public/src/test/test/testmc.d.ts.map +0 -1
  167. package/public/src/test/test/testmc.js +0 -10
  168. package/public/src/test/test/testmc.js.map +0 -1
  169. package/public/src/test/test/testmc.ts +0 -16
  170. package/public/src/test/test/testsimpleclass.d.ts +0 -3
  171. package/public/src/test/test/testsimpleclass.d.ts.map +0 -1
  172. package/public/src/test/test/testsimpleclass.js +0 -9
  173. package/public/src/test/test/testsimpleclass.js.map +0 -1
  174. package/public/src/test/test/testsimpleclass.ts +0 -15
  175. package/public/src/test/test.d.ts +0 -2
  176. package/public/src/test/test.d.ts.map +0 -1
  177. package/public/src/test/test.js +0 -72
  178. package/public/src/test/test.js.map +0 -1
  179. package/public/src/test/test.ts +0 -176
  180. package/public/src/test/testform.css +0 -47
  181. package/public/src/test/testform.html +0 -56
  182. package/public/src/test/testform.json +0 -27
  183. package/public/test/MC.d.ts +0 -39
  184. package/public/test/MC.d.ts.map +0 -1
  185. package/public/test/MC.js +0 -287
  186. package/public/test/MC.min.js +0 -348
  187. package/public/test/MC.ts +0 -431
  188. package/public/test/MicroComponents.svg +0 -15
  189. package/public/test/elements.d.ts +0 -5
  190. package/public/test/elements.d.ts.map +0 -1
  191. package/public/test/elements.js +0 -68
  192. package/public/test/elements.min.js +0 -1
  193. package/public/test/elements.ts +0 -119
  194. package/public/test/formValues.d.ts +0 -3
  195. package/public/test/formValues.d.ts.map +0 -1
  196. package/public/test/formValues.js +0 -162
  197. package/public/test/formValues.min.js +0 -1
  198. package/public/test/formValues.ts +0 -225
  199. package/public/test/grandparent.css +0 -14
  200. package/public/test/helpers.d.ts +0 -14
  201. package/public/test/helpers.d.ts.map +0 -1
  202. package/public/test/helpers.js +0 -113
  203. package/public/test/helpers.ts +0 -149
  204. package/public/test/microcomponents.d.ts +0 -6
  205. package/public/test/microcomponents.d.ts.map +0 -1
  206. package/public/test/microcomponents.js +0 -7
  207. package/public/test/microcomponents.min.js +0 -1
  208. package/public/test/microcomponents.ts +0 -8
  209. package/public/test/myButton.css +0 -19
  210. package/public/test/observables.d.ts +0 -11
  211. package/public/test/observables.d.ts.map +0 -1
  212. package/public/test/observables.js +0 -244
  213. package/public/test/observables.min.js +0 -1
  214. package/public/test/observables.ts +0 -416
  215. package/public/test/style.css +0 -8
  216. package/public/test/test/child.d.ts +0 -2
  217. package/public/test/test/child.d.ts.map +0 -1
  218. package/public/test/test/child.js +0 -26
  219. package/public/test/test/child.js.map +0 -1
  220. package/public/test/test/child.ts +0 -36
  221. package/public/test/test/grandchild.d.ts +0 -2
  222. package/public/test/test/grandchild.d.ts.map +0 -1
  223. package/public/test/test/grandchild.js +0 -22
  224. package/public/test/test/grandchild.js.map +0 -1
  225. package/public/test/test/grandchild.ts +0 -31
  226. package/public/test/test/grandparent.d.ts +0 -2
  227. package/public/test/test/grandparent.d.ts.map +0 -1
  228. package/public/test/test/grandparent.js +0 -1
  229. package/public/test/test/grandparent.js.map +0 -1
  230. package/public/test/test/grandparent.ts +0 -43
  231. package/public/test/test/greatgrandchild.d.ts +0 -2
  232. package/public/test/test/greatgrandchild.d.ts.map +0 -1
  233. package/public/test/test/greatgrandchild.js +0 -36
  234. package/public/test/test/greatgrandchild.js.map +0 -1
  235. package/public/test/test/greatgrandchild.ts +0 -51
  236. package/public/test/test/parent.d.ts +0 -2
  237. package/public/test/test/parent.d.ts.map +0 -1
  238. package/public/test/test/parent.js +0 -25
  239. package/public/test/test/parent.js.map +0 -1
  240. package/public/test/test/parent.ts +0 -35
  241. package/public/test/test/testform.d.ts +0 -2
  242. package/public/test/test/testform.d.ts.map +0 -1
  243. package/public/test/test/testform.js +0 -1
  244. package/public/test/test/testform.js.map +0 -1
  245. package/public/test/test/testform.ts +0 -153
  246. package/public/test/test/testfunction.d.ts +0 -3
  247. package/public/test/test/testfunction.d.ts.map +0 -1
  248. package/public/test/test/testfunction.js +0 -7
  249. package/public/test/test/testfunction.js.map +0 -1
  250. package/public/test/test/testfunction.ts +0 -12
  251. package/public/test/test/testmc.d.ts +0 -3
  252. package/public/test/test/testmc.d.ts.map +0 -1
  253. package/public/test/test/testmc.js +0 -10
  254. package/public/test/test/testmc.js.map +0 -1
  255. package/public/test/test/testmc.ts +0 -16
  256. package/public/test/test/testsimpleclass.d.ts +0 -3
  257. package/public/test/test/testsimpleclass.d.ts.map +0 -1
  258. package/public/test/test/testsimpleclass.js +0 -9
  259. package/public/test/test/testsimpleclass.js.map +0 -1
  260. package/public/test/test/testsimpleclass.ts +0 -15
  261. package/public/test/test.d.ts +0 -2
  262. package/public/test/test.d.ts.map +0 -1
  263. package/public/test/test.html +0 -29
  264. package/public/test/test.js +0 -72
  265. package/public/test/test.js.map +0 -1
  266. package/public/test/test.ts +0 -176
  267. package/public/test/testform.css +0 -47
  268. package/public/test/testform.html +0 -56
  269. package/public/test/testform.json +0 -27
  270. package/public/typedoc/.nojekyll +0 -1
  271. package/public/typedoc/assets/highlight.css +0 -106
  272. package/public/typedoc/assets/icons.js +0 -18
  273. package/public/typedoc/assets/icons.svg +0 -1
  274. package/public/typedoc/assets/main.js +0 -60
  275. package/public/typedoc/assets/navigation.js +0 -1
  276. package/public/typedoc/assets/search.js +0 -1
  277. package/public/typedoc/assets/style.css +0 -1493
  278. package/public/typedoc/classes/MC.DC.html +0 -13
  279. package/public/typedoc/classes/MC.MC.html +0 -3
  280. package/public/typedoc/classes/MC.McBase.html +0 -3
  281. package/public/typedoc/functions/MC.autoload.html +0 -1
  282. package/public/typedoc/functions/MC.off.html +0 -1
  283. package/public/typedoc/functions/MC.on.html +0 -1
  284. package/public/typedoc/functions/MC.one.html +0 -1
  285. package/public/typedoc/functions/MC.trigger.html +0 -1
  286. package/public/typedoc/functions/elements.defineCE.html +0 -1
  287. package/public/typedoc/functions/elements.getCE.html +0 -1
  288. package/public/typedoc/functions/formValues.formValues.html +0 -1
  289. package/public/typedoc/functions/observables.observe.html +0 -1
  290. package/public/typedoc/hierarchy.html +0 -1
  291. package/public/typedoc/index.html +0 -122
  292. package/public/typedoc/interfaces/MC.HTMLMcElement.html +0 -758
  293. package/public/typedoc/media/MicroComponents.svg +0 -15
  294. package/public/typedoc/modules/MC.html +0 -10
  295. package/public/typedoc/modules/elements.html +0 -3
  296. package/public/typedoc/modules/formValues.html +0 -2
  297. package/public/typedoc/modules/observables.html +0 -3
  298. package/public/typedoc/modules.html +0 -5
  299. package/public/typedoc/types/observables.Observable.html +0 -1
  300. package/src/MC.ts +0 -431
  301. package/src/elements.ts +0 -119
  302. package/src/formValues.ts +0 -225
  303. package/src/helpers.ts +0 -149
  304. package/src/microcomponents.ts +0 -8
  305. package/src/observables.ts +0 -416
  306. package/src/selectors._ts +0 -1269
  307. package/src/test/grandparent.css +0 -14
  308. package/src/test/test/child.ts +0 -36
  309. package/src/test/test/grandchild.ts +0 -31
  310. package/src/test/test/grandparent.ts +0 -43
  311. package/src/test/test/greatgrandchild.ts +0 -51
  312. package/src/test/test/parent.ts +0 -35
  313. package/src/test/test/testform.ts +0 -153
  314. package/src/test/test/testfunction.ts +0 -12
  315. package/src/test/test/testmc.ts +0 -16
  316. package/src/test/test/testsimpleclass.ts +0 -15
  317. package/src/test/test.ts +0 -176
  318. package/src/test/testform.css +0 -47
  319. package/src/test/testform.html +0 -56
  320. package/src/test/testform.json +0 -27
  321. package/tasks.md +0 -36
  322. package/tsconfig.json +0 -107
  323. package/typedoc.json +0 -7
  324. package/webpack.config.js +0 -346
package/public/test/MC.js DELETED
@@ -1,287 +0,0 @@
1
- 'use strict';
2
- const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
3
- function isDOM(element) {
4
- return element && element instanceof HTMLElement;
5
- }
6
- function add(target, key, element = {}) {
7
- let node = target;
8
- if (!node._mc) {
9
- node._mc = new DC(target);
10
- }
11
- const _mc = node._mc;
12
- if (key.length && !_mc[key]) {
13
- _mc[key] = element;
14
- if (target instanceof HTMLElement && !target.getAttribute('data-mc')) {
15
- target.setAttribute('data-mc', '');
16
- }
17
- }
18
- return node;
19
- }
20
- function remove(target, key) {
21
- if (!key)
22
- return;
23
- const _mc = target?._mc || {};
24
- if (_mc && _mc[key]) {
25
- delete _mc[key];
26
- }
27
- if (!Object.keys(_mc).length &&
28
- target instanceof HTMLElement &&
29
- target.hasAttribute('data-mc')) {
30
- target.removeAttribute('data-mc');
31
- }
32
- return;
33
- }
34
- function init(element) {
35
- setTimeout(() => {
36
- if (element.constructor === DC)
37
- return;
38
- element.trigger('Init');
39
- }, 0);
40
- }
41
- function getMcEventName(eventName) {
42
- return '_mc' + eventName[0].toUpperCase() + eventName.substring(1);
43
- }
44
- function off(domNode, eventName, handler) {
45
- domNode.removeEventListener(getMcEventName(eventName), handler);
46
- }
47
- function on(domNode, eventName, handler, once = false) {
48
- domNode.addEventListener(getMcEventName(eventName), handler, { capture: false, once });
49
- return handler;
50
- }
51
- function one(domNode, eventName, handler) {
52
- on(domNode, eventName, handler, true);
53
- return handler;
54
- }
55
- class BubbleController {
56
- stopped = false;
57
- constructor() {
58
- }
59
- stop() {
60
- this.stopped = true;
61
- }
62
- }
63
- function trigger(domNode, event, data = {}, bubble = 'l', controller) {
64
- const eventName = /^_mc/.test(event) ? event : getMcEventName(event), bubbleController = !!controller ? controller : new BubbleController(), ev = new CustomEvent(eventName, { detail: { data, control: bubbleController }, bubbles: false });
65
- if (bubbleController.stopped)
66
- return;
67
- domNode.dispatchEvent(ev);
68
- ev.stopImmediatePropagation();
69
- if (bubbleController.stopped)
70
- return;
71
- if (/[ud]/.test(bubble)) {
72
- if (bubble.indexOf('l') === -1) {
73
- bubble += 'l';
74
- }
75
- setTimeout(() => {
76
- if (bubble.indexOf('u') > -1) {
77
- let parentMc = domNode.parentElement?.closest('[data-mc]');
78
- if (!!parentMc) {
79
- parentMc?._mc.trigger(eventName, data, bubble, bubbleController);
80
- }
81
- }
82
- if (bubble.indexOf('d') > -1) {
83
- let childNodes = domNode._mc.children();
84
- if (!!childNodes) {
85
- childNodes.forEach((_mc) => _mc.trigger(eventName, data, bubble));
86
- }
87
- }
88
- }, 0);
89
- }
90
- }
91
- function autoAttachListeners(element) {
92
- if (!isBrowser() || element.constructor === DC)
93
- return;
94
- const target = element.target;
95
- if (target instanceof HTMLElement) {
96
- let that = element;
97
- Object.getOwnPropertyNames(that.constructor.prototype)
98
- .filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
99
- typeof that.constructor.prototype[key] === 'function')
100
- .forEach((key) => {
101
- let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase();
102
- if (('on' + nativeEventName) in target) {
103
- let listener = (ev) => {
104
- that[key](ev);
105
- };
106
- target.addEventListener(nativeEventName, listener);
107
- }
108
- else {
109
- let listener = (ev) => {
110
- that[key](ev);
111
- };
112
- on(target, withoutOnOne, listener, once);
113
- }
114
- });
115
- }
116
- }
117
- function getMcChildNodes(domNode) {
118
- const id = Math.random().toString().replace('.', '');
119
- const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
120
- domNode.setAttribute('temp_id', id);
121
- const mcArray = [...domNode.querySelectorAll(selector)]
122
- .filter((e) => !!e._mc)
123
- .map(e => e._mc);
124
- domNode.removeAttribute('temp_id');
125
- return mcArray.length ? mcArray : null;
126
- }
127
- class McBase {
128
- _target;
129
- constructor(target) {
130
- let element = this;
131
- this._target = new WeakRef(target || {});
132
- init(element);
133
- autoAttachListeners(element);
134
- }
135
- get target() {
136
- return this._target.deref();
137
- }
138
- }
139
- class MC extends McBase {
140
- constructor(target) {
141
- super(target);
142
- }
143
- }
144
- class DC extends McBase {
145
- constructor(target) {
146
- super(target);
147
- }
148
- static add(target, key, element = {}) {
149
- return add(target, key, element);
150
- }
151
- ;
152
- static remove(target, key) {
153
- remove(target, key);
154
- }
155
- off(eventName, handler) {
156
- off(this.target, eventName, handler);
157
- }
158
- on(eventName, handler) {
159
- return on(this.target, eventName, handler);
160
- }
161
- one(eventName, handler) {
162
- return one(this.target, eventName, handler);
163
- }
164
- trigger(eventName, data = {}, bubble = 'l', controller) {
165
- trigger(this.target, eventName, data, bubble, controller);
166
- }
167
- ancestors() {
168
- let currentNode = this?.target, result = [];
169
- if (!isDOM(currentNode))
170
- return [];
171
- while (currentNode = (currentNode.closest('[data-mc]'))) {
172
- if (currentNode?._mc) {
173
- result.push(currentNode?._mc);
174
- }
175
- }
176
- return result.length ? result : null;
177
- }
178
- closest() {
179
- let target = this.target;
180
- if (!isDOM(target))
181
- return null;
182
- return target.closest('[data-mc]')?._mc || null;
183
- }
184
- children() {
185
- let target = this?.target;
186
- if (!isDOM(target))
187
- return null;
188
- return getMcChildNodes(target);
189
- }
190
- descendants() {
191
- const target = this?.target;
192
- if (!isDOM(target))
193
- return [];
194
- const mcArray = [...target.querySelectorAll('[data-mc]')]
195
- .filter((e) => !!e._mc)
196
- .map(e => e._mc);
197
- return mcArray.length ? mcArray : null;
198
- }
199
- }
200
- const loadingDCs = new Set();
201
- function attachDC(element) {
202
- return () => {
203
- const elements = Array
204
- .from(document.querySelectorAll(`[data-mc*="${element}"]`))
205
- .filter(element => element instanceof HTMLElement);
206
- if (elements.length === 0)
207
- return;
208
- const klass = customElements.get(element);
209
- elements.forEach((node) => {
210
- DC.add(node, klass.name, new klass(node));
211
- const new_mc = node
212
- .getAttribute('data-mc')
213
- .split(' ')
214
- .filter((name) => name !== element && name !== '')
215
- .join(' ')
216
- .trim();
217
- node.setAttribute('data-mc', new_mc);
218
- });
219
- };
220
- }
221
- ;
222
- function makeLoadScript(element) {
223
- if (loadingDCs.has(element))
224
- return;
225
- loadingDCs.add(element);
226
- const fileName = './' + element.split('-').join('/') + '.js';
227
- const se = document.createElement('script');
228
- se.setAttribute('src', fileName);
229
- se.setAttribute('blocking', 'render');
230
- se.async = true;
231
- se.setAttribute('type', 'module');
232
- se.setAttribute('data-name', element);
233
- se.setAttribute('loading', '');
234
- const loadedPromise = customElements.whenDefined(element);
235
- loadedPromise.then(attachDC(element));
236
- se.addEventListener('load', (ev) => {
237
- loadingDCs.delete(element);
238
- document.head.querySelector(`script[data-name="${element}"]`)?.remove();
239
- });
240
- se.addEventListener('error', (ev) => {
241
- console.error('could not load DC code from', fileName);
242
- });
243
- document.head.append(se);
244
- }
245
- function loadUndefinedMCs() {
246
- [...document.querySelectorAll(':not(:defined)')]
247
- .filter((element) => !!element
248
- && !customElements.get(element.tagName.toLowerCase())
249
- && !loadingDCs.has(element.tagName.toLowerCase()))
250
- .forEach((el) => {
251
- makeLoadScript(el.tagName.toLowerCase());
252
- });
253
- [...document.querySelectorAll('[data-mc]:not([data-mc=""]')]
254
- .filter((element) => !!element)
255
- .forEach((el) => {
256
- const _mc = el.getAttribute('data-mc')?.split(' ').filter(name => name !== '');
257
- _mc?.forEach(element => {
258
- const isDefined = customElements.get(element);
259
- if (!loadingDCs.has(element) && !isDefined) {
260
- makeLoadScript(element);
261
- }
262
- else if (isDefined) {
263
- attachDC(element)();
264
- }
265
- });
266
- });
267
- }
268
- let autoloadEnabled = false;
269
- let observer = null;
270
- function autoload(enable = true) {
271
- if (!enable) {
272
- observer?.disconnect();
273
- observer = null;
274
- return autoloadEnabled;
275
- }
276
- autoloadEnabled = enable;
277
- observer = new MutationObserver(loadUndefinedMCs);
278
- setTimeout(() => {
279
- observer.observe(document.body, { childList: true, subtree: true });
280
- loadUndefinedMCs();
281
- }, 5);
282
- window.autoload = window.autoload || autoload;
283
- return autoloadEnabled;
284
- }
285
- autoload.state = loadingDCs;
286
- export { McBase, MC, DC, autoload, on, one, off, trigger };
287
- //# sourceMappingURL=MC.js.map
@@ -1,348 +0,0 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if(typeof define === 'function' && define.amd)
5
- define([], factory);
6
- else if(typeof exports === 'object')
7
- exports["MC"] = factory();
8
- else
9
- root["MC"] = factory();
10
- })(this, () => {
11
- return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ // The require scope
14
- /******/ var __webpack_require__ = {};
15
- /******/
16
- /************************************************************************/
17
- /******/ /* webpack/runtime/define property getters */
18
- /******/ (() => {
19
- /******/ // define getter functions for harmony exports
20
- /******/ __webpack_require__.d = (exports, definition) => {
21
- /******/ for(var key in definition) {
22
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
23
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
24
- /******/ }
25
- /******/ }
26
- /******/ };
27
- /******/ })();
28
- /******/
29
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
30
- /******/ (() => {
31
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
32
- /******/ })();
33
- /******/
34
- /******/ /* webpack/runtime/make namespace object */
35
- /******/ (() => {
36
- /******/ // define __esModule on exports
37
- /******/ __webpack_require__.r = (exports) => {
38
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
39
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
40
- /******/ }
41
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
42
- /******/ };
43
- /******/ })();
44
- /******/
45
- /************************************************************************/
46
- var __webpack_exports__ = {};
47
- __webpack_require__.r(__webpack_exports__);
48
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
49
- /* harmony export */ DC: () => (/* binding */ DC),
50
- /* harmony export */ MC: () => (/* binding */ MC),
51
- /* harmony export */ McBase: () => (/* binding */ McBase),
52
- /* harmony export */ autoload: () => (/* binding */ autoload),
53
- /* harmony export */ off: () => (/* binding */ off),
54
- /* harmony export */ on: () => (/* binding */ on),
55
- /* harmony export */ one: () => (/* binding */ one),
56
- /* harmony export */ trigger: () => (/* binding */ trigger)
57
- /* harmony export */ });
58
-
59
- const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
60
- function isDOM(element) {
61
- return element && element instanceof HTMLElement;
62
- }
63
- function add(target, key, element = {}) {
64
- let node = target;
65
- if (!node._mc) {
66
- node._mc = new DC(target);
67
- }
68
- const _mc = node._mc;
69
- if (key.length && !_mc[key]) {
70
- _mc[key] = element;
71
- if (target instanceof HTMLElement && !target.getAttribute('data-mc')) {
72
- target.setAttribute('data-mc', '');
73
- }
74
- }
75
- return node;
76
- }
77
- function remove(target, key) {
78
- if (!key)
79
- return;
80
- const _mc = target?._mc || {};
81
- if (_mc && _mc[key]) {
82
- delete _mc[key];
83
- }
84
- if (!Object.keys(_mc).length &&
85
- target instanceof HTMLElement &&
86
- target.hasAttribute('data-mc')) {
87
- target.removeAttribute('data-mc');
88
- }
89
- return;
90
- }
91
- function init(element) {
92
- setTimeout(() => {
93
- if (element.constructor === DC)
94
- return;
95
- element.trigger('Init');
96
- }, 0);
97
- }
98
- function getMcEventName(eventName) {
99
- return '_mc' + eventName[0].toUpperCase() + eventName.substring(1);
100
- }
101
- function off(domNode, eventName, handler) {
102
- domNode.removeEventListener(getMcEventName(eventName), handler);
103
- }
104
- function on(domNode, eventName, handler, once = false) {
105
- domNode.addEventListener(getMcEventName(eventName), handler, { capture: false, once });
106
- return handler;
107
- }
108
- function one(domNode, eventName, handler) {
109
- on(domNode, eventName, handler, true);
110
- return handler;
111
- }
112
- class BubbleController {
113
- stopped = false;
114
- constructor() {
115
- }
116
- stop() {
117
- this.stopped = true;
118
- }
119
- }
120
- function trigger(domNode, event, data = {}, bubble = 'l', controller) {
121
- const eventName = /^_mc/.test(event) ? event : getMcEventName(event), bubbleController = !!controller ? controller : new BubbleController(), ev = new CustomEvent(eventName, { detail: { data, control: bubbleController }, bubbles: false });
122
- if (bubbleController.stopped)
123
- return;
124
- domNode.dispatchEvent(ev);
125
- ev.stopImmediatePropagation();
126
- if (bubbleController.stopped)
127
- return;
128
- if (/[ud]/.test(bubble)) {
129
- if (bubble.indexOf('l') === -1) {
130
- bubble += 'l';
131
- }
132
- setTimeout(() => {
133
- if (bubble.indexOf('u') > -1) {
134
- let parentMc = domNode.parentElement?.closest('[data-mc]');
135
- if (!!parentMc) {
136
- parentMc?._mc.trigger(eventName, data, bubble, bubbleController);
137
- }
138
- }
139
- if (bubble.indexOf('d') > -1) {
140
- let childNodes = domNode._mc.children();
141
- if (!!childNodes) {
142
- childNodes.forEach((_mc) => _mc.trigger(eventName, data, bubble));
143
- }
144
- }
145
- }, 0);
146
- }
147
- }
148
- function autoAttachListeners(element) {
149
- if (!isBrowser() || element.constructor === DC)
150
- return;
151
- const target = element.target;
152
- if (target instanceof HTMLElement) {
153
- let that = element;
154
- Object.getOwnPropertyNames(that.constructor.prototype)
155
- .filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
156
- typeof that.constructor.prototype[key] === 'function')
157
- .forEach((key) => {
158
- let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase();
159
- if (('on' + nativeEventName) in target) {
160
- let listener = (ev) => {
161
- that[key](ev);
162
- };
163
- target.addEventListener(nativeEventName, listener);
164
- }
165
- else {
166
- let listener = (ev) => {
167
- that[key](ev);
168
- };
169
- on(target, withoutOnOne, listener, once);
170
- }
171
- });
172
- }
173
- }
174
- function getMcChildNodes(domNode) {
175
- const id = Math.random().toString().replace('.', '');
176
- const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
177
- domNode.setAttribute('temp_id', id);
178
- const mcArray = [...domNode.querySelectorAll(selector)]
179
- .filter((e) => !!e._mc)
180
- .map(e => e._mc);
181
- domNode.removeAttribute('temp_id');
182
- return mcArray.length ? mcArray : null;
183
- }
184
- class McBase {
185
- _target;
186
- constructor(target) {
187
- let element = this;
188
- this._target = new WeakRef(target || {});
189
- init(element);
190
- autoAttachListeners(element);
191
- }
192
- get target() {
193
- return this._target.deref();
194
- }
195
- }
196
- class MC extends McBase {
197
- constructor(target) {
198
- super(target);
199
- }
200
- }
201
- class DC extends McBase {
202
- constructor(target) {
203
- super(target);
204
- }
205
- static add(target, key, element = {}) {
206
- return add(target, key, element);
207
- }
208
- ;
209
- static remove(target, key) {
210
- remove(target, key);
211
- }
212
- off(eventName, handler) {
213
- off(this.target, eventName, handler);
214
- }
215
- on(eventName, handler) {
216
- return on(this.target, eventName, handler);
217
- }
218
- one(eventName, handler) {
219
- return one(this.target, eventName, handler);
220
- }
221
- trigger(eventName, data = {}, bubble = 'l', controller) {
222
- trigger(this.target, eventName, data, bubble, controller);
223
- }
224
- ancestors() {
225
- let currentNode = this?.target, result = [];
226
- if (!isDOM(currentNode))
227
- return [];
228
- while (currentNode = (currentNode.closest('[data-mc]'))) {
229
- if (currentNode?._mc) {
230
- result.push(currentNode?._mc);
231
- }
232
- }
233
- return result.length ? result : null;
234
- }
235
- closest() {
236
- let target = this.target;
237
- if (!isDOM(target))
238
- return null;
239
- return target.closest('[data-mc]')?._mc || null;
240
- }
241
- children() {
242
- let target = this?.target;
243
- if (!isDOM(target))
244
- return null;
245
- return getMcChildNodes(target);
246
- }
247
- descendants() {
248
- const target = this?.target;
249
- if (!isDOM(target))
250
- return [];
251
- const mcArray = [...target.querySelectorAll('[data-mc]')]
252
- .filter((e) => !!e._mc)
253
- .map(e => e._mc);
254
- return mcArray.length ? mcArray : null;
255
- }
256
- }
257
- const loadingDCs = new Set();
258
- function attachDC(element) {
259
- return () => {
260
- const elements = Array
261
- .from(document.querySelectorAll(`[data-mc*="${element}"]`))
262
- .filter(element => element instanceof HTMLElement);
263
- if (elements.length === 0)
264
- return;
265
- const klass = customElements.get(element);
266
- elements.forEach((node) => {
267
- DC.add(node, klass.name, new klass(node));
268
- const new_mc = node
269
- .getAttribute('data-mc')
270
- .split(' ')
271
- .filter((name) => name !== element && name !== '')
272
- .join(' ')
273
- .trim();
274
- node.setAttribute('data-mc', new_mc);
275
- });
276
- };
277
- }
278
- ;
279
- function makeLoadScript(element) {
280
- if (loadingDCs.has(element))
281
- return;
282
- loadingDCs.add(element);
283
- const fileName = './' + element.split('-').join('/') + '.js';
284
- const se = document.createElement('script');
285
- se.setAttribute('src', fileName);
286
- se.setAttribute('blocking', 'render');
287
- se.async = true;
288
- se.setAttribute('type', 'module');
289
- se.setAttribute('data-name', element);
290
- se.setAttribute('loading', '');
291
- const loadedPromise = customElements.whenDefined(element);
292
- loadedPromise.then(attachDC(element));
293
- se.addEventListener('load', (ev) => {
294
- loadingDCs.delete(element);
295
- document.head.querySelector(`script[data-name="${element}"]`)?.remove();
296
- });
297
- se.addEventListener('error', (ev) => {
298
- console.error('could not load DC code from', fileName);
299
- });
300
- document.head.append(se);
301
- }
302
- function loadUndefinedMCs() {
303
- [...document.querySelectorAll(':not(:defined)')]
304
- .filter((element) => !!element
305
- && !customElements.get(element.tagName.toLowerCase())
306
- && !loadingDCs.has(element.tagName.toLowerCase()))
307
- .forEach((el) => {
308
- makeLoadScript(el.tagName.toLowerCase());
309
- });
310
- [...document.querySelectorAll('[data-mc]:not([data-mc=""]')]
311
- .filter((element) => !!element)
312
- .forEach((el) => {
313
- const _mc = el.getAttribute('data-mc')?.split(' ').filter(name => name !== '');
314
- _mc?.forEach(element => {
315
- const isDefined = customElements.get(element);
316
- if (!loadingDCs.has(element) && !isDefined) {
317
- makeLoadScript(element);
318
- }
319
- else if (isDefined) {
320
- attachDC(element)();
321
- }
322
- });
323
- });
324
- }
325
- let autoloadEnabled = false;
326
- let observer = null;
327
- function autoload(enable = true) {
328
- if (!enable) {
329
- observer?.disconnect();
330
- observer = null;
331
- return autoloadEnabled;
332
- }
333
- autoloadEnabled = enable;
334
- observer = new MutationObserver(loadUndefinedMCs);
335
- setTimeout(() => {
336
- observer.observe(document.body, { childList: true, subtree: true });
337
- loadUndefinedMCs();
338
- }, 5);
339
- window.autoload = window.autoload || autoload;
340
- return autoloadEnabled;
341
- }
342
- autoload.state = loadingDCs;
343
-
344
-
345
- /******/ return __webpack_exports__;
346
- /******/ })()
347
- ;
348
- });