@twobirds/microcomponents 0.0.82 → 0.0.83
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.
- package/assets/documentation/MC.md +0 -1
- package/dist/MC.d.ts +3 -3
- package/dist/MC.d.ts.map +1 -1
- package/dist/MC.js +43 -74
- package/dist/MC.min.js +43 -74
- package/dist/MC.ts +67 -143
- package/dist/elements.d.ts +1 -1
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +16 -2
- package/dist/elements.min.js +1 -1
- package/dist/elements.ts +33 -3
- package/dist/formValues.min.js +1 -1
- package/dist/microcomponents.min.js +1 -1
- package/dist/observables.d.ts.map +1 -1
- package/dist/observables.js +40 -47
- package/dist/observables.min.js +1 -1
- package/dist/observables.ts +54 -59
- package/dist/selectors.d.ts +2 -4
- package/dist/selectors.d.ts.map +1 -1
- package/dist/selectors.js +2 -214
- package/dist/selectors.min.js +1 -1
- package/dist/selectors.ts +2 -367
- package/package.json +6 -5
- package/public/MC.d.ts +3 -3
- package/public/MC.d.ts.map +1 -1
- package/public/MC.js +43 -74
- package/public/MC.js.map +1 -1
- package/public/MC.min.js +43 -74
- package/public/MC.ts +67 -143
- package/public/documentation/MC.md +0 -1
- package/public/elements.d.ts +1 -1
- package/public/elements.d.ts.map +1 -1
- package/public/elements.js +16 -2
- package/public/elements.js.map +1 -1
- package/public/elements.min.js +1 -1
- package/public/elements.ts +33 -3
- package/public/formValues.min.js +1 -1
- package/public/microcomponents.min.js +1 -1
- package/public/observables.d.ts.map +1 -1
- package/public/observables.js +40 -47
- package/public/observables.js.map +1 -1
- package/public/observables.min.js +1 -1
- package/public/observables.ts +54 -59
- package/public/selectors.d.ts +2 -4
- package/public/selectors.d.ts.map +1 -1
- package/public/selectors.js +2 -214
- package/public/selectors.js.map +1 -1
- package/public/selectors.min.js +1 -1
- package/public/selectors.ts +2 -367
- package/public/src/MC.d.ts +36 -0
- package/public/src/MC.d.ts.map +1 -0
- package/public/src/MC.js +348 -0
- package/public/src/MC.js.map +1 -0
- package/public/src/MC.ts +67 -143
- package/public/src/McEvent.d.ts +15 -0
- package/public/src/McEvent.d.ts.map +1 -0
- package/public/src/McEvent.js +71 -0
- package/public/src/elements.d.ts +5 -0
- package/public/src/elements.d.ts.map +1 -0
- package/public/src/elements.js +62 -0
- package/public/src/elements.js.map +1 -0
- package/public/src/elements.ts +33 -3
- package/public/src/formValues.d.ts +3 -0
- package/public/src/formValues.d.ts.map +1 -0
- package/public/src/formValues.js +162 -0
- package/public/src/helpers.d.ts +14 -0
- package/public/src/helpers.d.ts.map +1 -0
- package/public/src/helpers.js +113 -0
- package/public/src/microcomponents.d.ts +7 -0
- package/public/src/microcomponents.d.ts.map +1 -0
- package/public/src/microcomponents.js +8 -0
- package/public/src/observables.d.ts +11 -0
- package/public/src/observables.d.ts.map +1 -0
- package/public/src/observables.js +242 -0
- package/public/src/observables.js.map +1 -0
- package/public/src/observables.ts +54 -59
- package/public/src/selectors.d.ts +106 -0
- package/public/src/selectors.d.ts.map +1 -0
- package/public/src/selectors.js +759 -0
- package/public/src/selectors.js.map +1 -0
- package/public/src/selectors.ts +2 -367
- package/public/src/test/grandparent.css +11 -0
- package/public/src/test/test/child.d.ts +2 -0
- package/public/src/test/test/child.d.ts.map +1 -0
- package/public/src/test/test/child.js +15 -0
- package/public/src/test/test/child.js.map +1 -0
- package/public/src/test/test/child.ts +21 -0
- package/public/src/test/test/grandchild.d.ts +2 -0
- package/public/src/test/test/grandchild.d.ts.map +1 -0
- package/public/src/test/test/grandchild.js +15 -0
- package/public/src/test/test/grandchild.js.map +1 -0
- package/public/src/test/test/grandchild.ts +21 -0
- package/public/src/test/test/grandparent.d.ts +2 -0
- package/public/src/test/test/grandparent.d.ts.map +1 -0
- package/public/src/test/test/grandparent.js +1 -0
- package/public/src/test/test/grandparent.js.map +1 -0
- package/public/src/test/test/grandparent.ts +21 -0
- package/public/src/test/test/greatgrandchild.d.ts +2 -0
- package/public/src/test/test/greatgrandchild.d.ts.map +1 -0
- package/public/src/test/test/greatgrandchild.js +29 -0
- package/public/src/test/test/greatgrandchild.js.map +1 -0
- package/public/src/test/test/greatgrandchild.ts +42 -0
- package/public/src/test/test/parent.d.ts +2 -0
- package/public/src/test/test/parent.d.ts.map +1 -0
- package/public/src/test/test/parent.js +15 -0
- package/public/src/test/test/parent.js.map +1 -0
- package/public/src/test/test/parent.ts +21 -0
- package/public/src/test/test/testform.d.ts +2 -0
- package/public/src/test/test/testform.d.ts.map +1 -0
- package/public/src/test/test/testform.js +1 -0
- package/public/src/test/test/testform.js.map +1 -0
- package/public/src/test/test/testform.ts +155 -0
- package/public/src/test/test/testfunction.d.ts +3 -0
- package/public/src/test/test/testfunction.d.ts.map +1 -0
- package/public/src/test/test/testfunction.js +7 -0
- package/public/src/test/test/testfunction.js.map +1 -0
- package/public/src/test/test/testfunction.ts +12 -0
- package/public/src/test/test/testmc.d.ts +3 -0
- package/public/src/test/test/testmc.d.ts.map +1 -0
- package/public/src/test/test/testmc.js +10 -0
- package/public/src/test/test/testmc.js.map +1 -0
- package/public/src/test/test/testmc.ts +16 -0
- package/public/src/test/test/testsimpleclass.d.ts +3 -0
- package/public/src/test/test/testsimpleclass.d.ts.map +1 -0
- package/public/src/test/test/testsimpleclass.js +9 -0
- package/public/src/test/test/testsimpleclass.js.map +1 -0
- package/public/src/test/test/testsimpleclass.ts +15 -0
- package/public/src/test/test.d.ts +2 -0
- package/public/src/test/test.d.ts.map +1 -0
- package/public/src/test/test.js +79 -0
- package/public/src/test/test.js.map +1 -0
- package/public/src/test/test.ts +188 -0
- package/public/src/test/testform.css +47 -0
- package/public/src/test/testform.html +56 -0
- package/public/src/test/testform.json +27 -0
- package/public/test/MC.d.ts +3 -3
- package/public/test/MC.d.ts.map +1 -1
- package/public/test/MC.js +43 -74
- package/public/test/MC.min.js +485 -0
- package/public/test/MC.ts +67 -143
- package/public/test/elements.d.ts +1 -1
- package/public/test/elements.d.ts.map +1 -1
- package/public/test/elements.js +16 -2
- package/public/test/elements.min.js +1 -0
- package/public/test/elements.ts +33 -3
- package/public/test/formValues.min.js +1 -0
- package/public/test/grandparent.css +1 -3
- package/public/test/microcomponents.min.js +1 -1
- package/public/test/observables.d.ts.map +1 -1
- package/public/test/observables.js +40 -47
- package/public/test/observables.min.js +1 -0
- package/public/test/observables.ts +54 -59
- package/public/test/selectors.d.ts +2 -4
- package/public/test/selectors.d.ts.map +1 -1
- package/public/test/selectors.js +2 -214
- package/public/test/selectors.min.js +1 -0
- package/public/test/selectors.ts +2 -367
- package/public/test/test/child.ts +21 -0
- package/public/test/test/grandchild.ts +21 -0
- package/public/test/test/grandparent.js +1 -1
- package/public/test/test/grandparent.ts +21 -0
- package/public/test/test/greatgrandchild.ts +42 -0
- package/public/test/test/parent.ts +21 -0
- package/public/test/test/testform.js +1 -1
- package/public/test/test/testform.js.map +1 -1
- package/public/test/test/testform.ts +155 -0
- package/public/test/test/testfunction.d.ts +3 -0
- package/public/test/test/testfunction.d.ts.map +1 -0
- package/public/test/test/testfunction.js +7 -0
- package/public/test/test/testfunction.js.map +1 -0
- package/public/test/test/testfunction.ts +12 -0
- package/public/test/test/testmc.d.ts +2 -5
- package/public/test/test/testmc.d.ts.map +1 -1
- package/public/test/test/testmc.js +4 -4
- package/public/test/test/testmc.js.map +1 -1
- package/public/test/test/testmc.ts +16 -0
- package/public/test/test/testsimpleclass.d.ts +3 -0
- package/public/test/test/testsimpleclass.d.ts.map +1 -0
- package/public/test/test/testsimpleclass.js +9 -0
- package/public/test/test/testsimpleclass.js.map +1 -0
- package/public/test/test/testsimpleclass.ts +15 -0
- package/public/test/test.js +0 -2
- package/public/test/test.js.map +1 -1
- package/public/test/test.ts +188 -0
- package/public/test/testform.css +47 -0
- package/public/test/testform.html +56 -0
- package/public/test/testform.json +3 -3
- package/public/typedoc/assets/navigation.js +1 -1
- package/public/typedoc/assets/search.js +1 -1
- package/public/typedoc/classes/MC.DC.html +5 -5
- package/public/typedoc/classes/MC.MC.html +5 -5
- package/public/typedoc/classes/MC.McBase.html +4 -3
- package/public/typedoc/classes/MC.McEvent.html +2 -2
- package/public/typedoc/functions/MC.addListener.html +1 -1
- package/public/typedoc/functions/MC.autoload.html +1 -1
- package/public/typedoc/functions/MC.removeListener.html +1 -1
- package/public/typedoc/functions/elements.defineCE.html +1 -1
- package/public/typedoc/functions/elements.getCE.html +1 -1
- package/public/typedoc/functions/formValues.formValues.html +1 -1
- package/public/typedoc/functions/observables.observe.html +1 -1
- package/public/typedoc/functions/selectors._d.html +1 -0
- package/public/typedoc/functions/selectors._t.html +1 -0
- package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
- package/public/typedoc/interfaces/selectors.DSelector.html +48 -0
- package/public/typedoc/interfaces/selectors.TSelector.html +34 -0
- package/public/typedoc/modules/MC.html +1 -1
- package/public/typedoc/modules/elements.html +1 -1
- package/public/typedoc/modules/formValues.html +1 -1
- package/public/typedoc/modules/observables.html +1 -1
- package/public/typedoc/modules/selectors.html +7 -0
- package/public/typedoc/modules.html +1 -0
- package/public/typedoc/types/observables.Observable.html +1 -1
- package/public/typedoc/types/selectors.selection.html +1 -0
- package/public/typedoc/types/selectors.singleSelector.html +1 -0
- package/src/MC.ts +67 -143
- package/src/elements.ts +33 -3
- package/src/observables.ts +54 -59
- package/src/selectors.ts +2 -367
- package/src/test/test/testform.ts +7 -3
- package/src/test/test/testfunction.ts +12 -0
- package/src/test/test/testmc.ts +13 -9
- package/src/test/test/testsimpleclass.ts +15 -0
- package/src/test/test.ts +0 -12
- package/tasks.md +36 -0
- package/typedoc.json +1 -1
- package/public/test/MC.js.map +0 -1
- package/public/test/elements.js.map +0 -1
- package/public/test/observables.js.map +0 -1
- package/public/test/selectors.js.map +0 -1
- /package/public/{test → src}/McEvent.js.map +0 -0
- /package/public/{test → src}/formValues.js.map +0 -0
- /package/public/{test → src}/helpers.js.map +0 -0
- /package/public/{test → src}/microcomponents.js.map +0 -0
|
@@ -0,0 +1,485 @@
|
|
|
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
|
+
// ESM COMPAT FLAG
|
|
48
|
+
__webpack_require__.r(__webpack_exports__);
|
|
49
|
+
|
|
50
|
+
// EXPORTS
|
|
51
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
52
|
+
DC: () => (/* binding */ DC),
|
|
53
|
+
MC: () => (/* binding */ MC),
|
|
54
|
+
McBase: () => (/* binding */ McBase),
|
|
55
|
+
McEvent: () => (/* reexport */ McEvent),
|
|
56
|
+
addListener: () => (/* binding */ addListener),
|
|
57
|
+
autoload: () => (/* binding */ autoload),
|
|
58
|
+
removeListener: () => (/* binding */ removeListener)
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
;// ./build/McEvent.js
|
|
62
|
+
|
|
63
|
+
var isBrowser = new Function("try {return this===window;}catch(e){ return false;}");
|
|
64
|
+
let nativeEventNames = new Set();
|
|
65
|
+
if (isBrowser()) {
|
|
66
|
+
Object.keys(HTMLElement.prototype).filter(key => /^on/.test(key)).forEach(eventName => nativeEventNames.add(eventName));
|
|
67
|
+
}
|
|
68
|
+
function isDOM(element) {
|
|
69
|
+
return element && element instanceof HTMLElement;
|
|
70
|
+
}
|
|
71
|
+
class McEvent {
|
|
72
|
+
#type;
|
|
73
|
+
#stopped = false;
|
|
74
|
+
#immediateStopped = false;
|
|
75
|
+
constructor(type, data = {}, bubble = 'l') {
|
|
76
|
+
this.#type = type;
|
|
77
|
+
this.data = data;
|
|
78
|
+
this.bubble = bubble;
|
|
79
|
+
}
|
|
80
|
+
get type() {
|
|
81
|
+
return this.#type;
|
|
82
|
+
}
|
|
83
|
+
get stopped() {
|
|
84
|
+
return this.#stopped;
|
|
85
|
+
}
|
|
86
|
+
get immediateStopped() {
|
|
87
|
+
return this.#immediateStopped;
|
|
88
|
+
}
|
|
89
|
+
stopPropagation() {
|
|
90
|
+
this.#stopped = true;
|
|
91
|
+
}
|
|
92
|
+
stopImmediatePropagation() {
|
|
93
|
+
this.stopPropagation();
|
|
94
|
+
this.#immediateStopped = true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function getMicroComponents(elements, search) {
|
|
98
|
+
let mcValues = [];
|
|
99
|
+
elements.forEach(e => {
|
|
100
|
+
if (e) {
|
|
101
|
+
if (e instanceof HTMLElement) {
|
|
102
|
+
const _mc = e?._mc;
|
|
103
|
+
if (!search && _mc) {
|
|
104
|
+
mcValues = mcValues.concat(Object.values(e._mc));
|
|
105
|
+
}
|
|
106
|
+
else if (search && _mc && _mc[search]) {
|
|
107
|
+
mcValues.push(_mc[search]);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return mcValues;
|
|
113
|
+
}
|
|
114
|
+
function traverseNodes(node, search, firstonly = true) {
|
|
115
|
+
let mcValues = [];
|
|
116
|
+
while (node) {
|
|
117
|
+
if (node._mc) {
|
|
118
|
+
if (!search) {
|
|
119
|
+
mcValues = mcValues.concat(Object.values(node._mc));
|
|
120
|
+
}
|
|
121
|
+
else if (search && node._mc[search]) {
|
|
122
|
+
mcValues.push(node._mc[search]);
|
|
123
|
+
}
|
|
124
|
+
if (firstonly)
|
|
125
|
+
return mcValues;
|
|
126
|
+
}
|
|
127
|
+
node = node.parentNode;
|
|
128
|
+
}
|
|
129
|
+
return mcValues;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
;// ./build/MC.js
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
var MC_isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
|
|
137
|
+
let MC_nativeEventNames = new Set();
|
|
138
|
+
if (MC_isBrowser()) {
|
|
139
|
+
Object.keys(HTMLElement.prototype)
|
|
140
|
+
.filter((key) => /^on/.test(key))
|
|
141
|
+
.forEach((eventName) => MC_nativeEventNames.add(eventName));
|
|
142
|
+
}
|
|
143
|
+
function MC_getMicroComponents(elements, search) {
|
|
144
|
+
let mcValues = [];
|
|
145
|
+
elements.forEach((e) => {
|
|
146
|
+
if (e) {
|
|
147
|
+
if (e instanceof HTMLElement) {
|
|
148
|
+
const _mc = e?._mc;
|
|
149
|
+
if (!search && _mc) {
|
|
150
|
+
mcValues = mcValues.concat(Object.values(e._mc));
|
|
151
|
+
}
|
|
152
|
+
else if (search && _mc && _mc[search]) {
|
|
153
|
+
mcValues.push(_mc[search]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
return mcValues;
|
|
159
|
+
}
|
|
160
|
+
function MC_traverseNodes(node, search, firstonly = true) {
|
|
161
|
+
let mcValues = [];
|
|
162
|
+
while (node) {
|
|
163
|
+
if (node._mc) {
|
|
164
|
+
if (!search) {
|
|
165
|
+
mcValues = mcValues.concat(Object.values(node._mc));
|
|
166
|
+
}
|
|
167
|
+
else if (search && node._mc[search]) {
|
|
168
|
+
mcValues.push(node._mc[search]);
|
|
169
|
+
}
|
|
170
|
+
if (firstonly)
|
|
171
|
+
return mcValues;
|
|
172
|
+
}
|
|
173
|
+
node = node.parentNode;
|
|
174
|
+
}
|
|
175
|
+
return mcValues;
|
|
176
|
+
}
|
|
177
|
+
function MC_isDOM(element) {
|
|
178
|
+
return element && element instanceof HTMLElement;
|
|
179
|
+
}
|
|
180
|
+
function addListener(domNode, eventName, handler, capture = false, once = false) {
|
|
181
|
+
let options = { once: false };
|
|
182
|
+
if (capture) {
|
|
183
|
+
options.capture = capture;
|
|
184
|
+
}
|
|
185
|
+
if (once) {
|
|
186
|
+
options.once = once;
|
|
187
|
+
}
|
|
188
|
+
domNode.addEventListener(eventName, handler, options);
|
|
189
|
+
}
|
|
190
|
+
function removeListener(domNode, eventName, handler) {
|
|
191
|
+
domNode.removeEventListener(eventName, handler);
|
|
192
|
+
}
|
|
193
|
+
function add(target, key, element = {}) {
|
|
194
|
+
let node = target;
|
|
195
|
+
if (!node._mc) {
|
|
196
|
+
let debug = DC?.debug;
|
|
197
|
+
DC.debug = false;
|
|
198
|
+
node._mc = new DC(target);
|
|
199
|
+
DC.debug = debug;
|
|
200
|
+
delete node._mc._mc;
|
|
201
|
+
}
|
|
202
|
+
const _mc = node._mc;
|
|
203
|
+
if (key.length && !_mc[key]) {
|
|
204
|
+
_mc[key] = element;
|
|
205
|
+
if (target instanceof HTMLElement && !target.getAttribute('_mc')) {
|
|
206
|
+
target.setAttribute('_mc', '');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return element;
|
|
210
|
+
}
|
|
211
|
+
function remove(target, key) {
|
|
212
|
+
if (!key)
|
|
213
|
+
return;
|
|
214
|
+
const _mc = target?._mc || {};
|
|
215
|
+
if (_mc && _mc[key]) {
|
|
216
|
+
delete _mc[key];
|
|
217
|
+
}
|
|
218
|
+
if (!Object.keys(_mc).length &&
|
|
219
|
+
target instanceof HTMLElement &&
|
|
220
|
+
target.hasAttribute('_mc')) {
|
|
221
|
+
target.removeAttribute('_mc');
|
|
222
|
+
}
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
function trigger(target, ev, data = {}, bubble = 'l') {
|
|
226
|
+
let _mc = target?._mc;
|
|
227
|
+
if (!_mc)
|
|
228
|
+
return;
|
|
229
|
+
let event = ev instanceof McEvent
|
|
230
|
+
? new McEvent(ev.type, ev.data, 'l')
|
|
231
|
+
: new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble);
|
|
232
|
+
[...Object.values(_mc)].forEach((mc) => {
|
|
233
|
+
if (mc?.trigger && typeof mc?.trigger === 'function') {
|
|
234
|
+
mc?.trigger(event);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
if (/[ud]/.test(mcEvent.bubble)) {
|
|
238
|
+
bubbleEvent(target, mcEvent);
|
|
239
|
+
}
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
function init(element) {
|
|
243
|
+
if (element.constructor === DC)
|
|
244
|
+
return;
|
|
245
|
+
setTimeout(() => {
|
|
246
|
+
element.trigger('Init');
|
|
247
|
+
}, 0);
|
|
248
|
+
}
|
|
249
|
+
function autoAttachListeners(element) {
|
|
250
|
+
if (!MC_isBrowser() || element.constructor === DC)
|
|
251
|
+
return;
|
|
252
|
+
const target = element.target;
|
|
253
|
+
if (target instanceof HTMLElement) {
|
|
254
|
+
let that = element;
|
|
255
|
+
Object.getOwnPropertyNames(that.constructor.prototype)
|
|
256
|
+
.filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
|
|
257
|
+
typeof that.constructor.prototype[key] === 'function')
|
|
258
|
+
.forEach((key) => {
|
|
259
|
+
let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => {
|
|
260
|
+
that.trigger(withoutOnOne, ev);
|
|
261
|
+
};
|
|
262
|
+
if (once) {
|
|
263
|
+
Object.defineProperty(element, 'on' + withoutOnOne, {
|
|
264
|
+
configurable: true,
|
|
265
|
+
enumerable: false,
|
|
266
|
+
writable: true,
|
|
267
|
+
value: (ev) => {
|
|
268
|
+
that.constructor.prototype[key].bind(that)(ev);
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
if (MC_nativeEventNames.has('on' + nativeEventName)) {
|
|
273
|
+
addListener(target, nativeEventName, listener, false, once);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function bubbleEvent(target, ev) {
|
|
279
|
+
if (/[ud]/.test(ev.bubble)) {
|
|
280
|
+
setTimeout(() => {
|
|
281
|
+
if (ev.bubble.indexOf('l') === -1) {
|
|
282
|
+
ev.bubble += 'l';
|
|
283
|
+
}
|
|
284
|
+
if (ev.bubble.indexOf('u') > -1) {
|
|
285
|
+
let parent = MC_traverseNodes(target, '', true)?.[0].target;
|
|
286
|
+
if (parent)
|
|
287
|
+
DC.trigger(parent, ev);
|
|
288
|
+
}
|
|
289
|
+
if (ev.bubble.indexOf('d') > -1) {
|
|
290
|
+
let targets = new Set(target._mc
|
|
291
|
+
.children()
|
|
292
|
+
.map((c) => c?.target));
|
|
293
|
+
targets.forEach((target) => {
|
|
294
|
+
if (target)
|
|
295
|
+
DC.trigger(target, ev);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
}, 0);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
class McBase {
|
|
302
|
+
_target;
|
|
303
|
+
__mc = {};
|
|
304
|
+
constructor(target, debug = false) {
|
|
305
|
+
let that = this, element = that;
|
|
306
|
+
this._target = new WeakRef(target || {});
|
|
307
|
+
init(element);
|
|
308
|
+
autoAttachListeners(element);
|
|
309
|
+
}
|
|
310
|
+
get target() {
|
|
311
|
+
return this._target.deref();
|
|
312
|
+
}
|
|
313
|
+
get _mc() {
|
|
314
|
+
return this.__mc;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
class MC extends McBase {
|
|
318
|
+
constructor(target) {
|
|
319
|
+
super(target);
|
|
320
|
+
}
|
|
321
|
+
static trigger = trigger;
|
|
322
|
+
trigger(ev, data = {}, bubble = 'l') {
|
|
323
|
+
let that = this;
|
|
324
|
+
if (that.constructor === MC || that.constructor === DC) {
|
|
325
|
+
let event = ev instanceof McEvent
|
|
326
|
+
? new McEvent(ev.type, ev.data, 'l')
|
|
327
|
+
: new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string'
|
|
328
|
+
? ev
|
|
329
|
+
: new McEvent(ev, data, bubble);
|
|
330
|
+
[...Object.getOwnPropertyNames(that)].forEach((mc) => {
|
|
331
|
+
if (that[mc]?.trigger &&
|
|
332
|
+
typeof that[mc]?.trigger === 'function') {
|
|
333
|
+
that[mc]?.trigger(event);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
if (/[ud]/.test(mcEvent.bubble)) {
|
|
337
|
+
bubbleEvent(that.target, mcEvent);
|
|
338
|
+
}
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
if (that instanceof MC || that instanceof DC) {
|
|
342
|
+
const that = this, mcEvent = typeof ev !== 'string'
|
|
343
|
+
? ev
|
|
344
|
+
: new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
|
|
345
|
+
if (mcEvent.bubble.indexOf('l') > -1) {
|
|
346
|
+
if (!mcEvent.immediateStopped &&
|
|
347
|
+
typeof that[handlerName] === 'function') {
|
|
348
|
+
that[handlerName](mcEvent);
|
|
349
|
+
if (that.hasOwnProperty(handlerName)) {
|
|
350
|
+
delete that[handlerName];
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (mcEvent.stopped || mcEvent.bubble === 'l') {
|
|
355
|
+
return that;
|
|
356
|
+
}
|
|
357
|
+
if (/[ud]/.test(mcEvent.bubble)) {
|
|
358
|
+
bubbleEvent(that.target, mcEvent);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
class DC extends McBase {
|
|
364
|
+
constructor(target, debug = false) {
|
|
365
|
+
super(target);
|
|
366
|
+
}
|
|
367
|
+
static add = add;
|
|
368
|
+
static remove = remove;
|
|
369
|
+
static trigger = trigger;
|
|
370
|
+
trigger(ev, data = {}, bubble) {
|
|
371
|
+
MC.prototype.trigger.call(this, ev, data, bubble);
|
|
372
|
+
}
|
|
373
|
+
parent(search = '') {
|
|
374
|
+
let target = this.target;
|
|
375
|
+
if (!MC_isDOM(target))
|
|
376
|
+
return [];
|
|
377
|
+
return MC_traverseNodes(target.parentNode, search, true);
|
|
378
|
+
}
|
|
379
|
+
ancestors(search = '') {
|
|
380
|
+
let target = this?.target;
|
|
381
|
+
if (!MC_isDOM(target))
|
|
382
|
+
return [];
|
|
383
|
+
return MC_traverseNodes(this.target.parentNode, search, false);
|
|
384
|
+
}
|
|
385
|
+
children(search = '') {
|
|
386
|
+
let target = this?.target;
|
|
387
|
+
if (!MC_isDOM(target))
|
|
388
|
+
return [];
|
|
389
|
+
const id = Math.random().toString().replace('.', '');
|
|
390
|
+
const selector = '[_mc]:not([temp_id="' + id + '"] [_mc] [_mc])';
|
|
391
|
+
target.setAttribute('temp_id', id);
|
|
392
|
+
const myDomElements = target.querySelectorAll(selector);
|
|
393
|
+
const mcValues = MC_getMicroComponents([...myDomElements], search);
|
|
394
|
+
target.removeAttribute('temp_id');
|
|
395
|
+
return mcValues;
|
|
396
|
+
}
|
|
397
|
+
descendants(search = '') {
|
|
398
|
+
let target = this?.target;
|
|
399
|
+
if (!MC_isDOM(target))
|
|
400
|
+
return [];
|
|
401
|
+
const myDomElements = target.querySelectorAll('*[_mc]');
|
|
402
|
+
return MC_getMicroComponents([...myDomElements], search);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
const loadingMCs = new Set();
|
|
406
|
+
function makeLoadScript(element) {
|
|
407
|
+
if (loadingMCs.has(element))
|
|
408
|
+
return;
|
|
409
|
+
loadingMCs.add(element);
|
|
410
|
+
const fileName = './' + element.split('-').join('/') + '.js';
|
|
411
|
+
const se = document.createElement('script');
|
|
412
|
+
se.setAttribute('src', fileName);
|
|
413
|
+
se.setAttribute('blocking', 'render');
|
|
414
|
+
se.async = true;
|
|
415
|
+
se.setAttribute('type', 'module');
|
|
416
|
+
se.setAttribute('data-name', element);
|
|
417
|
+
se.setAttribute('loading', '');
|
|
418
|
+
const loadedPromise = customElements.whenDefined(element);
|
|
419
|
+
loadedPromise.then(() => {
|
|
420
|
+
const elements = Array
|
|
421
|
+
.from(document.querySelectorAll(`[_mc*="${element}"]`))
|
|
422
|
+
.filter(element => element instanceof HTMLElement);
|
|
423
|
+
if (elements.length === 0)
|
|
424
|
+
return;
|
|
425
|
+
const klass = customElements.get(element);
|
|
426
|
+
elements.forEach((node) => {
|
|
427
|
+
DC.add(node, klass.name, new klass(node));
|
|
428
|
+
const new_mc = node
|
|
429
|
+
.getAttribute('_mc')
|
|
430
|
+
.split(' ')
|
|
431
|
+
.filter((name) => name !== element && name !== '')
|
|
432
|
+
.join(' ');
|
|
433
|
+
node.setAttribute('_mc', new_mc);
|
|
434
|
+
});
|
|
435
|
+
document.head.querySelector('script[data-name="${elementName}]"')?.remove();
|
|
436
|
+
});
|
|
437
|
+
addListener(se, 'load', (ev) => {
|
|
438
|
+
loadingMCs.delete(element);
|
|
439
|
+
});
|
|
440
|
+
addListener(se, 'error', (ev) => {
|
|
441
|
+
console.error('could not load MC code from', fileName);
|
|
442
|
+
});
|
|
443
|
+
document.head.append(se);
|
|
444
|
+
}
|
|
445
|
+
function loadUndefinedMCs() {
|
|
446
|
+
[...document.querySelectorAll(':not(:defined)')]
|
|
447
|
+
.filter((element) => !!element
|
|
448
|
+
&& !customElements.get(element.tagName.toLowerCase())
|
|
449
|
+
&& !loadingMCs.has(element.tagName.toLowerCase()))
|
|
450
|
+
.forEach((el) => {
|
|
451
|
+
makeLoadScript(el.tagName.toLowerCase());
|
|
452
|
+
});
|
|
453
|
+
[...document.querySelectorAll('[_mc]:not([_mc=""]')]
|
|
454
|
+
.filter((element) => !!element)
|
|
455
|
+
.forEach((el) => {
|
|
456
|
+
const _mc = el.getAttribute('_mc')?.split(' ').filter(name => name !== '');
|
|
457
|
+
_mc?.forEach(dc => {
|
|
458
|
+
makeLoadScript(dc);
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
let autoloadEnabled = false;
|
|
463
|
+
let observer = null;
|
|
464
|
+
function autoload(enable = true) {
|
|
465
|
+
if (!enable) {
|
|
466
|
+
observer?.disconnect();
|
|
467
|
+
observer = null;
|
|
468
|
+
return autoloadEnabled;
|
|
469
|
+
}
|
|
470
|
+
autoloadEnabled = enable;
|
|
471
|
+
observer = new MutationObserver(loadUndefinedMCs);
|
|
472
|
+
setTimeout(() => {
|
|
473
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
474
|
+
loadUndefinedMCs();
|
|
475
|
+
}, 5);
|
|
476
|
+
window.autoload = window.autoload || autoload;
|
|
477
|
+
return autoloadEnabled;
|
|
478
|
+
}
|
|
479
|
+
autoload.state = { loadingMCs };
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
/******/ return __webpack_exports__;
|
|
483
|
+
/******/ })()
|
|
484
|
+
;
|
|
485
|
+
});
|