@twobirds/microcomponents 0.0.83 → 0.0.85
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/README.md +22 -6
- package/assets/documentation/MC.md +60 -81
- package/assets/documentation/elements.md +6 -9
- package/assets/documentation/observables.md +97 -11
- package/assets/test/test.html +1 -1
- package/dist/MC.d.ts +14 -16
- package/dist/MC.d.ts.map +1 -1
- package/dist/MC.js +150 -218
- package/dist/MC.min.js +164 -308
- package/dist/MC.ts +213 -319
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +10 -4
- package/dist/elements.min.js +1 -1
- package/dist/elements.ts +17 -4
- package/dist/formValues.js +2 -2
- package/dist/formValues.min.js +1 -1
- package/dist/formValues.ts +3 -3
- package/dist/microcomponents.d.ts +0 -1
- package/dist/microcomponents.d.ts.map +1 -1
- package/dist/microcomponents.js +0 -1
- package/dist/microcomponents.min.js +1 -1
- package/dist/microcomponents.ts +1 -1
- package/dist/observables.d.ts.map +1 -1
- package/dist/observables.js +14 -12
- package/dist/observables.min.js +1 -1
- package/dist/observables.ts +32 -32
- package/package.json +1 -1
- package/public/MC.d.ts +14 -16
- package/public/MC.d.ts.map +1 -1
- package/public/MC.js +150 -218
- package/public/MC.js.map +1 -1
- package/public/MC.min.js +164 -308
- package/public/MC.ts +213 -319
- package/public/documentation/MC.md +60 -81
- package/public/documentation/elements.md +6 -9
- package/public/documentation/observables.md +97 -11
- package/public/elements.d.ts.map +1 -1
- package/public/elements.js +10 -4
- package/public/elements.js.map +1 -1
- package/public/elements.min.js +1 -1
- package/public/elements.ts +17 -4
- package/public/formValues.js +2 -2
- package/public/formValues.js.map +1 -1
- package/public/formValues.min.js +1 -1
- package/public/formValues.ts +3 -3
- package/public/microcomponents.d.ts +0 -1
- package/public/microcomponents.d.ts.map +1 -1
- package/public/microcomponents.js +0 -1
- package/public/microcomponents.js.map +1 -1
- package/public/microcomponents.min.js +1 -1
- package/public/microcomponents.ts +1 -1
- package/public/observables.d.ts.map +1 -1
- package/public/observables.js +14 -12
- package/public/observables.js.map +1 -1
- package/public/observables.min.js +1 -1
- package/public/observables.ts +32 -32
- package/public/src/MC.d.ts +14 -16
- package/public/src/MC.d.ts.map +1 -1
- package/public/src/MC.js +150 -218
- package/public/src/MC.js.map +1 -1
- package/public/src/MC.ts +213 -319
- package/public/src/elements.d.ts.map +1 -1
- package/public/src/elements.js +10 -4
- package/public/src/elements.js.map +1 -1
- package/public/src/elements.ts +17 -4
- package/public/src/formValues.js +2 -2
- package/public/src/formValues.js.map +1 -1
- package/public/src/formValues.ts +3 -3
- package/public/src/microcomponents.d.ts +0 -1
- package/public/src/microcomponents.d.ts.map +1 -1
- package/public/src/microcomponents.js +0 -1
- package/public/src/microcomponents.js.map +1 -1
- package/public/src/microcomponents.ts +1 -1
- package/public/src/observables.d.ts.map +1 -1
- package/public/src/observables.js +14 -12
- package/public/src/observables.js.map +1 -1
- package/public/src/observables.ts +32 -32
- package/public/src/test/test/grandparent.d.ts.map +1 -1
- package/public/src/test/test/grandparent.js +1 -1
- package/public/src/test/test/grandparent.js.map +1 -1
- package/public/src/test/test/grandparent.ts +12 -4
- package/public/src/test/test/testform.js +1 -1
- package/public/src/test/test/testform.js.map +1 -1
- package/public/src/test/test/testform.ts +6 -8
- package/public/src/test/test.js +6 -5
- package/public/src/test/test.js.map +1 -1
- package/public/src/test/test.ts +10 -9
- package/public/test/MC.d.ts +14 -16
- package/public/test/MC.d.ts.map +1 -1
- package/public/test/MC.js +150 -218
- package/public/test/MC.min.js +164 -308
- package/public/test/MC.ts +213 -319
- package/public/test/elements.d.ts.map +1 -1
- package/public/test/elements.js +10 -4
- package/public/test/elements.min.js +1 -1
- package/public/test/elements.ts +17 -4
- package/public/test/formValues.js +2 -2
- package/public/test/formValues.min.js +1 -1
- package/public/test/formValues.ts +3 -3
- package/public/test/microcomponents.d.ts +0 -1
- package/public/test/microcomponents.d.ts.map +1 -1
- package/public/test/microcomponents.js +0 -1
- package/public/test/microcomponents.min.js +1 -1
- package/public/test/microcomponents.ts +1 -1
- package/public/test/observables.d.ts.map +1 -1
- package/public/test/observables.js +14 -12
- package/public/test/observables.min.js +1 -1
- package/public/test/observables.ts +32 -32
- package/public/test/test/grandparent.d.ts.map +1 -1
- package/public/test/test/grandparent.js +1 -1
- package/public/test/test/grandparent.js.map +1 -1
- package/public/test/test/grandparent.ts +12 -4
- package/public/test/test/testform.js +1 -1
- package/public/test/test/testform.js.map +1 -1
- package/public/test/test/testform.ts +6 -8
- package/public/test/test.html +1 -1
- package/public/test/test.js +6 -5
- package/public/test/test.js.map +1 -1
- package/public/test/test.ts +10 -9
- package/public/typedoc/assets/navigation.js +1 -1
- package/public/typedoc/assets/search.js +1 -1
- package/public/typedoc/classes/MC.DC.html +7 -6
- package/public/typedoc/classes/MC.MC.html +3 -6
- package/public/typedoc/classes/MC.McBase.html +3 -4
- package/public/typedoc/functions/MC.autoload.html +1 -1
- package/public/typedoc/functions/MC.off.html +1 -0
- package/public/typedoc/functions/{selectors._d.html → MC.on.html} +1 -1
- package/public/typedoc/functions/MC.one.html +1 -0
- package/public/typedoc/functions/MC.trigger.html +1 -0
- 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/index.html +21 -10
- package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
- package/public/typedoc/modules/MC.html +6 -5
- 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.html +0 -1
- package/public/typedoc/types/observables.Observable.html +1 -1
- package/src/MC.ts +213 -319
- package/src/elements.ts +17 -4
- package/src/formValues.ts +3 -3
- package/src/microcomponents.ts +1 -1
- package/src/observables.ts +32 -32
- package/src/test/test/grandparent.ts +12 -4
- package/src/test/test/testform.ts +6 -8
- package/src/test/test.ts +10 -9
- package/tsconfig.json +2 -2
- package/typedoc.json +1 -1
- package/webpack.config.js +2 -2
- package/dist/McEvent.d.ts +0 -15
- package/dist/McEvent.d.ts.map +0 -1
- package/dist/McEvent.js +0 -71
- package/dist/selectors.d.ts +0 -106
- package/dist/selectors.d.ts.map +0 -1
- package/dist/selectors.js +0 -759
- package/dist/selectors.min.js +0 -1
- package/public/McEvent.d.ts +0 -15
- package/public/McEvent.d.ts.map +0 -1
- package/public/McEvent.js +0 -71
- package/public/McEvent.js.map +0 -1
- package/public/selectors.d.ts +0 -106
- package/public/selectors.d.ts.map +0 -1
- package/public/selectors.js +0 -759
- package/public/selectors.js.map +0 -1
- package/public/selectors.min.js +0 -1
- package/public/src/McEvent.d.ts +0 -15
- package/public/src/McEvent.d.ts.map +0 -1
- package/public/src/McEvent.js +0 -71
- package/public/src/McEvent.js.map +0 -1
- package/public/src/selectors.d.ts +0 -106
- package/public/src/selectors.d.ts.map +0 -1
- package/public/src/selectors.js +0 -759
- package/public/src/selectors.js.map +0 -1
- package/public/test/McEvent.d.ts +0 -15
- package/public/test/McEvent.d.ts.map +0 -1
- package/public/test/McEvent.js +0 -71
- package/public/test/McEvent.ts +0 -96
- package/public/test/selectors.d.ts +0 -106
- package/public/test/selectors.d.ts.map +0 -1
- package/public/test/selectors.js +0 -759
- package/public/test/selectors.min.js +0 -1
- package/public/test/selectors.ts +0 -1269
- package/public/typedoc/classes/MC.McEvent.html +0 -9
- package/public/typedoc/functions/MC.addListener.html +0 -1
- package/public/typedoc/functions/MC.removeListener.html +0 -1
- package/public/typedoc/functions/selectors._t.html +0 -1
- package/public/typedoc/interfaces/selectors.DSelector.html +0 -48
- package/public/typedoc/interfaces/selectors.TSelector.html +0 -34
- package/public/typedoc/modules/selectors.html +0 -7
- package/public/typedoc/types/selectors.selection.html +0 -1
- package/public/typedoc/types/selectors.singleSelector.html +0 -1
- package/src/McEvent.ts +0 -96
- package/src/selectors.ts +0 -1269
- /package/{dist/McEvent.ts → public/McEvent._ts} +0 -0
- /package/{dist/selectors.ts → public/selectors._ts} +0 -0
- /package/public/{McEvent.ts → src/McEvent._ts} +0 -0
- /package/public/{selectors.ts → src/selectors._ts} +0 -0
- /package/{public/src/McEvent.ts → src/McEvent._ts} +0 -0
- /package/{public/src/selectors.ts → src/selectors._ts} +0 -0
package/public/test/MC.min.js
CHANGED
|
@@ -44,169 +44,44 @@ return /******/ (() => { // webpackBootstrap
|
|
|
44
44
|
/******/
|
|
45
45
|
/************************************************************************/
|
|
46
46
|
var __webpack_exports__ = {};
|
|
47
|
-
// ESM COMPAT FLAG
|
|
48
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 */ });
|
|
49
58
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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;
|
|
59
|
+
const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
|
|
60
|
+
function getNativeEventNames(domNode) {
|
|
61
|
+
let nativeEventNames = [];
|
|
62
|
+
if (isBrowser()) {
|
|
63
|
+
Object.keys(HTMLElement.prototype)
|
|
64
|
+
.filter((key) => /^on/.test(key))
|
|
65
|
+
.forEach((eventName) => nativeEventNames.push(eventName));
|
|
85
66
|
}
|
|
86
|
-
|
|
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;
|
|
67
|
+
return nativeEventNames;
|
|
159
68
|
}
|
|
160
|
-
function
|
|
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) {
|
|
69
|
+
function isDOM(element) {
|
|
178
70
|
return element && element instanceof HTMLElement;
|
|
179
71
|
}
|
|
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
72
|
function add(target, key, element = {}) {
|
|
194
73
|
let node = target;
|
|
195
74
|
if (!node._mc) {
|
|
196
|
-
let debug = DC?.debug;
|
|
197
|
-
DC.debug = false;
|
|
198
75
|
node._mc = new DC(target);
|
|
199
|
-
DC.debug = debug;
|
|
200
|
-
delete node._mc._mc;
|
|
201
76
|
}
|
|
202
77
|
const _mc = node._mc;
|
|
203
78
|
if (key.length && !_mc[key]) {
|
|
204
79
|
_mc[key] = element;
|
|
205
|
-
if (target instanceof HTMLElement && !target.getAttribute('
|
|
206
|
-
target.setAttribute('
|
|
80
|
+
if (target instanceof HTMLElement && !target.getAttribute('data-mc')) {
|
|
81
|
+
target.setAttribute('data-mc', '');
|
|
207
82
|
}
|
|
208
83
|
}
|
|
209
|
-
return
|
|
84
|
+
return node;
|
|
210
85
|
}
|
|
211
86
|
function remove(target, key) {
|
|
212
87
|
if (!key)
|
|
@@ -217,37 +92,62 @@ function remove(target, key) {
|
|
|
217
92
|
}
|
|
218
93
|
if (!Object.keys(_mc).length &&
|
|
219
94
|
target instanceof HTMLElement &&
|
|
220
|
-
target.hasAttribute('
|
|
221
|
-
target.removeAttribute('
|
|
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);
|
|
95
|
+
target.hasAttribute('data-mc')) {
|
|
96
|
+
target.removeAttribute('data-mc');
|
|
239
97
|
}
|
|
240
98
|
return;
|
|
241
99
|
}
|
|
242
100
|
function init(element) {
|
|
243
|
-
if (element.constructor === DC)
|
|
244
|
-
return;
|
|
245
101
|
setTimeout(() => {
|
|
102
|
+
if (element.constructor === DC)
|
|
103
|
+
return;
|
|
246
104
|
element.trigger('Init');
|
|
247
105
|
}, 0);
|
|
248
106
|
}
|
|
107
|
+
function getMcEventName(eventName) {
|
|
108
|
+
return '_mc' + eventName[0].toUpperCase() + eventName.substring(1);
|
|
109
|
+
}
|
|
110
|
+
function off(domNode, eventName, handler) {
|
|
111
|
+
domNode.removeEventListener(getMcEventName(eventName), handler);
|
|
112
|
+
}
|
|
113
|
+
function on(domNode, eventName, handler, once = false) {
|
|
114
|
+
domNode.addEventListener(getMcEventName(eventName), handler, { capture: false, once });
|
|
115
|
+
}
|
|
116
|
+
function one(domNode, eventName, handler) {
|
|
117
|
+
on(domNode, eventName, handler, true);
|
|
118
|
+
}
|
|
119
|
+
function trigger(domNode, event, data = {}, bubble = 'l') {
|
|
120
|
+
const ev = typeof event === 'string'
|
|
121
|
+
? new CustomEvent(getMcEventName(event), { detail: { data, bubble } })
|
|
122
|
+
: event;
|
|
123
|
+
if (bubble.length && bubble.indexOf('l') > -1) {
|
|
124
|
+
domNode.dispatchEvent(ev);
|
|
125
|
+
}
|
|
126
|
+
if (/[u|d]/.test(bubble)) {
|
|
127
|
+
bubbleEvent(domNode, ev);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function bubbleEvent(domNode, ev) {
|
|
131
|
+
setTimeout(() => {
|
|
132
|
+
if (ev.detail.bubble.indexOf('l') === -1) {
|
|
133
|
+
ev.detail.bubble += 'l';
|
|
134
|
+
}
|
|
135
|
+
if (ev.detail.bubble.indexOf('u') > -1) {
|
|
136
|
+
domNode.closest('[data-mc]')?.dispatchEvent(ev);
|
|
137
|
+
}
|
|
138
|
+
if (ev.detail.bubble.indexOf('d') > -1) {
|
|
139
|
+
let targets = new Set(domNode._mc
|
|
140
|
+
.children()
|
|
141
|
+
.map((c) => c?.target));
|
|
142
|
+
targets.forEach((target) => {
|
|
143
|
+
if (target)
|
|
144
|
+
target._mc.trigger(target, ev);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}, 0);
|
|
148
|
+
}
|
|
249
149
|
function autoAttachListeners(element) {
|
|
250
|
-
if (!
|
|
150
|
+
if (!isBrowser() || element.constructor === DC)
|
|
251
151
|
return;
|
|
252
152
|
const target = element.target;
|
|
253
153
|
if (target instanceof HTMLElement) {
|
|
@@ -256,53 +156,33 @@ function autoAttachListeners(element) {
|
|
|
256
156
|
.filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
|
|
257
157
|
typeof that.constructor.prototype[key] === 'function')
|
|
258
158
|
.forEach((key) => {
|
|
259
|
-
let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase()
|
|
260
|
-
|
|
159
|
+
let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), nativeEventName = withoutOnOne.toLowerCase();
|
|
160
|
+
let listener = (ev) => {
|
|
161
|
+
that[key](ev);
|
|
261
162
|
};
|
|
262
|
-
if (
|
|
263
|
-
|
|
264
|
-
configurable: true,
|
|
265
|
-
enumerable: false,
|
|
266
|
-
writable: true,
|
|
267
|
-
value: (ev) => {
|
|
268
|
-
that.constructor.prototype[key].bind(that)(ev);
|
|
269
|
-
},
|
|
270
|
-
});
|
|
163
|
+
if (!!target['on' + nativeEventName]) {
|
|
164
|
+
target.addEventListener(nativeEventName, listener);
|
|
271
165
|
}
|
|
272
|
-
|
|
273
|
-
|
|
166
|
+
else {
|
|
167
|
+
on(target, withoutOnOne, listener, once);
|
|
274
168
|
}
|
|
275
169
|
});
|
|
276
170
|
}
|
|
277
171
|
}
|
|
278
|
-
function
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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
|
-
}
|
|
172
|
+
function getMcChildNodes(domNode) {
|
|
173
|
+
const id = Math.random().toString().replace('.', '');
|
|
174
|
+
const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
|
|
175
|
+
domNode.setAttribute('temp_id', id);
|
|
176
|
+
const mcArray = [...domNode.querySelectorAll(selector)]
|
|
177
|
+
.filter((e) => !!e._mc)
|
|
178
|
+
.map(e => e._mc);
|
|
179
|
+
domNode.removeAttribute('temp_id');
|
|
180
|
+
return mcArray.length ? mcArray : null;
|
|
300
181
|
}
|
|
301
182
|
class McBase {
|
|
302
183
|
_target;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
let that = this, element = that;
|
|
184
|
+
constructor(target) {
|
|
185
|
+
let element = this;
|
|
306
186
|
this._target = new WeakRef(target || {});
|
|
307
187
|
init(element);
|
|
308
188
|
autoAttachListeners(element);
|
|
@@ -310,55 +190,11 @@ class McBase {
|
|
|
310
190
|
get target() {
|
|
311
191
|
return this._target.deref();
|
|
312
192
|
}
|
|
313
|
-
get _mc() {
|
|
314
|
-
return this.__mc;
|
|
315
|
-
}
|
|
316
193
|
}
|
|
317
194
|
class MC extends McBase {
|
|
318
195
|
constructor(target) {
|
|
319
196
|
super(target);
|
|
320
197
|
}
|
|
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
198
|
}
|
|
363
199
|
class DC extends McBase {
|
|
364
200
|
constructor(target, debug = false) {
|
|
@@ -366,59 +202,56 @@ class DC extends McBase {
|
|
|
366
202
|
}
|
|
367
203
|
static add = add;
|
|
368
204
|
static remove = remove;
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
205
|
+
off(eventName, handler) {
|
|
206
|
+
off(this.target, eventName, handler);
|
|
207
|
+
}
|
|
208
|
+
on(eventName, handler) {
|
|
209
|
+
on(this.target, eventName, handler);
|
|
372
210
|
}
|
|
373
|
-
|
|
211
|
+
one(eventName, handler) {
|
|
212
|
+
one(this.target, eventName, handler);
|
|
213
|
+
}
|
|
214
|
+
trigger(eventName, data = {}, bubble = 'l') {
|
|
215
|
+
trigger(this.target, eventName, data, bubble);
|
|
216
|
+
}
|
|
217
|
+
parent() {
|
|
374
218
|
let target = this.target;
|
|
375
|
-
if (!
|
|
376
|
-
return
|
|
377
|
-
return
|
|
219
|
+
if (!isDOM(target))
|
|
220
|
+
return null;
|
|
221
|
+
return target.closest('[data-mc]')?._mc || null;
|
|
378
222
|
}
|
|
379
|
-
ancestors(
|
|
380
|
-
let
|
|
381
|
-
if (!
|
|
223
|
+
ancestors() {
|
|
224
|
+
let currentNode = this?.target, result = [];
|
|
225
|
+
if (!isDOM(currentNode))
|
|
382
226
|
return [];
|
|
383
|
-
|
|
227
|
+
while (currentNode = (currentNode.closest('[data-mc]'))) {
|
|
228
|
+
if (currentNode?._mc) {
|
|
229
|
+
result.push(currentNode?._mc);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return result.length ? result : null;
|
|
384
233
|
}
|
|
385
|
-
children(
|
|
234
|
+
children() {
|
|
386
235
|
let target = this?.target;
|
|
387
|
-
if (!
|
|
388
|
-
return
|
|
389
|
-
|
|
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;
|
|
236
|
+
if (!isDOM(target))
|
|
237
|
+
return null;
|
|
238
|
+
return getMcChildNodes(target);
|
|
396
239
|
}
|
|
397
|
-
descendants(
|
|
398
|
-
|
|
399
|
-
if (!
|
|
240
|
+
descendants() {
|
|
241
|
+
const target = this?.target;
|
|
242
|
+
if (!isDOM(target))
|
|
400
243
|
return [];
|
|
401
|
-
const
|
|
402
|
-
|
|
244
|
+
const mcArray = [...target.querySelectorAll('[data-mc]')]
|
|
245
|
+
.filter((e) => !!e._mc)
|
|
246
|
+
.map(e => e._mc);
|
|
247
|
+
return mcArray.length ? mcArray : null;
|
|
403
248
|
}
|
|
404
249
|
}
|
|
405
|
-
const
|
|
406
|
-
function
|
|
407
|
-
|
|
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(() => {
|
|
250
|
+
const loadingDCs = new Set();
|
|
251
|
+
function attachDC(element) {
|
|
252
|
+
return () => {
|
|
420
253
|
const elements = Array
|
|
421
|
-
.from(document.querySelectorAll(`[
|
|
254
|
+
.from(document.querySelectorAll(`[data-mc*="${element}"]`))
|
|
422
255
|
.filter(element => element instanceof HTMLElement);
|
|
423
256
|
if (elements.length === 0)
|
|
424
257
|
return;
|
|
@@ -426,19 +259,36 @@ function makeLoadScript(element) {
|
|
|
426
259
|
elements.forEach((node) => {
|
|
427
260
|
DC.add(node, klass.name, new klass(node));
|
|
428
261
|
const new_mc = node
|
|
429
|
-
.getAttribute('
|
|
262
|
+
.getAttribute('data-mc')
|
|
430
263
|
.split(' ')
|
|
431
264
|
.filter((name) => name !== element && name !== '')
|
|
432
|
-
.join(' ')
|
|
433
|
-
|
|
265
|
+
.join(' ')
|
|
266
|
+
.trim();
|
|
267
|
+
node.setAttribute('data-mc', new_mc);
|
|
434
268
|
});
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
;
|
|
272
|
+
function makeLoadScript(element) {
|
|
273
|
+
if (loadingDCs.has(element))
|
|
274
|
+
return;
|
|
275
|
+
loadingDCs.add(element);
|
|
276
|
+
const fileName = './' + element.split('-').join('/') + '.js';
|
|
277
|
+
const se = document.createElement('script');
|
|
278
|
+
se.setAttribute('src', fileName);
|
|
279
|
+
se.setAttribute('blocking', 'render');
|
|
280
|
+
se.async = true;
|
|
281
|
+
se.setAttribute('type', 'module');
|
|
282
|
+
se.setAttribute('data-name', element);
|
|
283
|
+
se.setAttribute('loading', '');
|
|
284
|
+
const loadedPromise = customElements.whenDefined(element);
|
|
285
|
+
loadedPromise.then(attachDC(element));
|
|
286
|
+
se.addEventListener('load', (ev) => {
|
|
287
|
+
loadingDCs.delete(element);
|
|
288
|
+
document.head.querySelector(`script[data-name="${element}"]`)?.remove();
|
|
439
289
|
});
|
|
440
|
-
|
|
441
|
-
console.error('could not load
|
|
290
|
+
se.addEventListener('error', (ev) => {
|
|
291
|
+
console.error('could not load DC code from', fileName);
|
|
442
292
|
});
|
|
443
293
|
document.head.append(se);
|
|
444
294
|
}
|
|
@@ -446,16 +296,22 @@ function loadUndefinedMCs() {
|
|
|
446
296
|
[...document.querySelectorAll(':not(:defined)')]
|
|
447
297
|
.filter((element) => !!element
|
|
448
298
|
&& !customElements.get(element.tagName.toLowerCase())
|
|
449
|
-
&& !
|
|
299
|
+
&& !loadingDCs.has(element.tagName.toLowerCase()))
|
|
450
300
|
.forEach((el) => {
|
|
451
301
|
makeLoadScript(el.tagName.toLowerCase());
|
|
452
302
|
});
|
|
453
|
-
[...document.querySelectorAll('[
|
|
303
|
+
[...document.querySelectorAll('[data-mc]:not([data-mc=""]')]
|
|
454
304
|
.filter((element) => !!element)
|
|
455
305
|
.forEach((el) => {
|
|
456
|
-
const _mc = el.getAttribute('
|
|
457
|
-
_mc?.forEach(
|
|
458
|
-
|
|
306
|
+
const _mc = el.getAttribute('data-mc')?.split(' ').filter(name => name !== '');
|
|
307
|
+
_mc?.forEach(element => {
|
|
308
|
+
const isDefined = customElements.get(element);
|
|
309
|
+
if (!loadingDCs.has(element) && !isDefined) {
|
|
310
|
+
makeLoadScript(element);
|
|
311
|
+
}
|
|
312
|
+
else if (isDefined) {
|
|
313
|
+
attachDC(element)();
|
|
314
|
+
}
|
|
459
315
|
});
|
|
460
316
|
});
|
|
461
317
|
}
|
|
@@ -476,7 +332,7 @@ function autoload(enable = true) {
|
|
|
476
332
|
window.autoload = window.autoload || autoload;
|
|
477
333
|
return autoloadEnabled;
|
|
478
334
|
}
|
|
479
|
-
autoload.state =
|
|
335
|
+
autoload.state = loadingDCs;
|
|
480
336
|
|
|
481
337
|
|
|
482
338
|
/******/ return __webpack_exports__;
|