@twobirds/microcomponents 0.0.34 → 0.0.39

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 (120) hide show
  1. package/README.md +40 -27
  2. package/assets/documentation/{MicroComponents.md → MC.md} +17 -17
  3. package/assets/documentation/comparision.md +0 -0
  4. package/assets/documentation/elements.md +276 -0
  5. package/assets/documentation/magic.md +10 -68
  6. package/assets/my-tag.css +6 -2
  7. package/dist/MC.d.ts +3 -4
  8. package/dist/MC.d.ts.map +1 -1
  9. package/dist/MC.min.js +89 -66
  10. package/dist/MC.ts +213 -178
  11. package/dist/autoloader.ts +1 -1
  12. package/dist/{customElements.d.ts → elements.d.ts} +1 -1
  13. package/dist/elements.d.ts.map +1 -0
  14. package/dist/elements.min.js +1 -0
  15. package/dist/{customElements.ts → elements.ts} +23 -14
  16. package/dist/helpers.d.ts +6 -4
  17. package/dist/helpers.d.ts.map +1 -1
  18. package/dist/helpers.ts +95 -128
  19. package/dist/microcomponents.d.ts +3 -3
  20. package/dist/microcomponents.d.ts.map +1 -1
  21. package/dist/microcomponents.min.js +1 -1
  22. package/dist/microcomponents.ts +3 -3
  23. package/dist/{customObservables.d.ts → observables.d.ts} +3 -3
  24. package/dist/observables.d.ts.map +1 -0
  25. package/dist/observables.min.js +1 -0
  26. package/dist/observables.ts +353 -0
  27. package/dist/{customSelectors.d.ts → selectors.d.ts} +1 -1
  28. package/dist/selectors.d.ts.map +1 -0
  29. package/dist/selectors.min.js +1 -0
  30. package/dist/test.ts +135 -156
  31. package/klemmstein.png +0 -0
  32. package/package.json +52 -52
  33. package/public/MC.js +90 -67
  34. package/public/MC.js.map +1 -1
  35. package/public/MC.min.js +89 -66
  36. package/public/assets/search.js +1 -1
  37. package/public/autoloader.js +1 -1
  38. package/public/autoloader.js.map +1 -1
  39. package/public/classes/{DC.html → MC.DC.html} +60 -59
  40. package/public/classes/{MC.html → MC.MC.html} +41 -35
  41. package/public/classes/{McBase.html → MC.McBase.html} +28 -20
  42. package/public/classes/{McEvent.html → MC.McEvent.html} +48 -42
  43. package/public/documentation/{MicroComponents.md → MC.md} +17 -17
  44. package/public/documentation/comparision.md +0 -0
  45. package/public/documentation/elements.md +276 -0
  46. package/public/documentation/magic.md +10 -68
  47. package/public/{customElements.js → elements.js} +9 -10
  48. package/public/elements.js.map +1 -0
  49. package/public/elements.min.js +1 -0
  50. package/public/functions/{addListener.html → MC.addListener.html} +18 -12
  51. package/public/functions/{removeListener.html → MC.removeListener.html} +18 -12
  52. package/public/functions/elements.defineCE.html +78 -0
  53. package/public/functions/elements.getCE.html +63 -0
  54. package/public/functions/formValues.formValues.html +68 -0
  55. package/public/functions/observables.observe.html +65 -0
  56. package/public/functions/selectors._d.html +69 -0
  57. package/public/functions/selectors._t.html +69 -0
  58. package/public/helpers.js +66 -89
  59. package/public/helpers.js.map +1 -1
  60. package/public/index.html +48 -33
  61. package/public/interfaces/{HTMLMcElement.html → MC.HTMLMcElement.html} +601 -595
  62. package/public/interfaces/selectors.DSelector.html +1013 -0
  63. package/public/interfaces/selectors.TSelector.html +712 -0
  64. package/public/microcomponents.js +3 -3
  65. package/public/microcomponents.js.map +1 -1
  66. package/public/microcomponents.min.js +1 -1
  67. package/public/modules/MC.html +78 -0
  68. package/public/modules/elements.html +62 -0
  69. package/public/modules/formValues.html +60 -0
  70. package/public/modules/observables.html +65 -0
  71. package/public/modules/selectors.html +76 -0
  72. package/public/modules.html +11 -23
  73. package/public/my-tag.css +6 -2
  74. package/public/observables.js +259 -0
  75. package/public/observables.js.map +1 -0
  76. package/public/observables.min.js +1 -0
  77. package/public/{customSelectors.js → selectors.js} +1 -1
  78. package/public/selectors.js.map +1 -0
  79. package/public/selectors.min.js +1 -0
  80. package/public/src/MC.ts +413 -0
  81. package/public/src/McEvent.ts +96 -0
  82. package/public/src/autoloader.ts +98 -0
  83. package/{src/customElements.ts → public/src/elements.ts} +23 -14
  84. package/public/src/formValues.ts +275 -0
  85. package/public/src/helpers.ts +140 -0
  86. package/public/src/microcomponents.ts +8 -0
  87. package/public/src/observables.ts +353 -0
  88. package/public/src/test.ts +190 -0
  89. package/public/test.js +93 -118
  90. package/public/test.js.map +1 -1
  91. package/public/types/observables.Observable.html +91 -0
  92. package/public/types/selectors.selection.html +58 -0
  93. package/public/types/selectors.singleSelector.html +58 -0
  94. package/src/MC.ts +213 -178
  95. package/src/autoloader.ts +1 -1
  96. package/src/elements.ts +76 -0
  97. package/src/helpers.ts +95 -128
  98. package/src/microcomponents.ts +3 -3
  99. package/src/observables.ts +353 -0
  100. package/src/selectors.ts +1634 -0
  101. package/src/test.ts +135 -156
  102. package/typedoc.json +1 -1
  103. package/webpack.config.js +9 -9
  104. package/dist/customElements.d.ts.map +0 -1
  105. package/dist/customElements.min.js +0 -1
  106. package/dist/customObservables.d.ts.map +0 -1
  107. package/dist/customObservables.min.js +0 -1
  108. package/dist/customObservables.ts +0 -348
  109. package/dist/customSelectors.d.ts.map +0 -1
  110. package/dist/customSelectors.min.js +0 -1
  111. package/public/customElements.js.map +0 -1
  112. package/public/customElements.min.js +0 -1
  113. package/public/customObservables.js +0 -256
  114. package/public/customObservables.js.map +0 -1
  115. package/public/customObservables.min.js +0 -1
  116. package/public/customSelectors.js.map +0 -1
  117. package/public/customSelectors.min.js +0 -1
  118. package/src/customObservables.ts +0 -348
  119. /package/dist/{customSelectors.ts → selectors.ts} +0 -0
  120. /package/{src/customSelectors.ts → public/src/selectors.ts} +0 -0
package/public/MC.js CHANGED
@@ -1,15 +1,17 @@
1
- "use strict";
1
+ 'use strict';
2
2
  import { McEvent } from './McEvent.js';
3
- var isBrowser = new Function("try {return this===window;}catch(e){ return false;}");
3
+ var isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
4
4
  let nativeEventNames = new Set();
5
5
  // HTMLElement native event names
6
6
  if (isBrowser()) {
7
- Object.keys(HTMLElement.prototype).filter(key => /^on/.test(key)).forEach(eventName => nativeEventNames.add(eventName));
7
+ Object.keys(HTMLElement.prototype)
8
+ .filter((key) => /^on/.test(key))
9
+ .forEach((eventName) => nativeEventNames.add(eventName));
8
10
  }
9
11
  // get all microcomponents from a list of HTMLElements
10
12
  function getMicroComponents(elements, search) {
11
13
  let mcValues = [];
12
- elements.forEach(e => {
14
+ elements.forEach((e) => {
13
15
  if (e) {
14
16
  if (e instanceof HTMLElement) {
15
17
  const _mc = e?._mc;
@@ -91,44 +93,51 @@ function remove(target, key) {
91
93
  delete _mc[key];
92
94
  }
93
95
  // remove the _mc attribute if the DOM collection is empty
94
- if (!Object.keys(_mc).length && target instanceof HTMLElement && target.hasAttribute('_mc')) {
96
+ if (!Object.keys(_mc).length &&
97
+ target instanceof HTMLElement &&
98
+ target.hasAttribute('_mc')) {
95
99
  target.removeAttribute('_mc');
96
100
  }
97
101
  return;
98
102
  }
99
103
  // trigger an event
100
- function trigger(target, ev, data = {}) {
104
+ function trigger(target, ev, data = {}, bubble = 'l') {
101
105
  let _mc = target?._mc;
102
106
  if (!_mc)
103
107
  return;
108
+ let event = ev instanceof McEvent
109
+ ? new McEvent(ev.type, ev.data, 'l')
110
+ : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble);
104
111
  [...Object.values(_mc)].forEach((mc) => {
105
112
  //console.log( 'mc [', mc.constructor.name, ']', mc.constructor.prototype?.oneInit );
106
113
  if (mc?.trigger && typeof mc?.trigger === 'function') {
107
- mc?.trigger(ev, data);
114
+ mc?.trigger(event);
108
115
  }
109
116
  });
117
+ if (/[ud]/.test(mcEvent.bubble)) {
118
+ bubbleEvent(target, mcEvent);
119
+ }
110
120
  return;
111
121
  }
112
- // run the "init" lifecycle event on the completemcr structure
122
+ // run the "init" lifecycle event on the complete _mc structure
113
123
  function init(element) {
114
124
  if (element.constructor === DC)
115
125
  return;
116
126
  setTimeout(() => {
117
127
  element.trigger('Init');
118
- setTimeout(() => {
119
- let keys = Object.keys(element?._mc);
120
- if (keys.length) {
128
+ /*
129
+ let keys = Object.keys( ( element as any)?._mc );
130
+ if ( keys.length ){
121
131
  //console.log( 'inner Inits on [', mc.constructor.name, ']', keys );
122
- keys?.forEach((key) => {
123
- let mc = element?._mc?.[key];
132
+ keys?.forEach( (key: string) => {
133
+ let mc = ( element as any)?._mc?.[key];
124
134
  //console.log( key, typeof mc?.oneInit, mc );
125
- if (mc['oneInit'] && typeof mc.oneInit == 'function') {
126
- mc.oneInit(new McEvent('Init'));
135
+ if ( ( mc as any )['oneInit'] && typeof ( mc as any ).oneInit == 'function' ){
136
+ ( mc as any ).oneInit( new McEvent('Init') );
127
137
  }
128
138
  });
129
- }
130
- ;
131
- }, 0);
139
+ };
140
+ */
132
141
  }, 0);
133
142
  }
134
143
  function autoAttachListeners(element) {
@@ -137,13 +146,14 @@ function autoAttachListeners(element) {
137
146
  const target = element.target;
138
147
  if (target instanceof HTMLElement) {
139
148
  let that = element;
140
- Object
141
- .getOwnPropertyNames(that.constructor.prototype)
142
- .filter(key => /^on[A-Z]|one[A-Z]/.test(key) && typeof that.constructor.prototype[key] === 'function')
143
- .forEach(key => {
149
+ Object.getOwnPropertyNames(that.constructor.prototype)
150
+ .filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
151
+ typeof that.constructor.prototype[key] === 'function')
152
+ .forEach((key) => {
144
153
  let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), // preserves upper/lowercase for non-native events
145
- nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => { that.trigger(withoutOnOne, ev); };
146
- ;
154
+ nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => {
155
+ that.trigger(withoutOnOne, ev);
156
+ };
147
157
  if (once) {
148
158
  // console.log( '...is only called once', that.constructor.prototype[key] );
149
159
  Object.defineProperty(element, 'on' + withoutOnOne, {
@@ -152,20 +162,49 @@ function autoAttachListeners(element) {
152
162
  writable: true,
153
163
  value: (ev) => {
154
164
  // console.log( 'onceHandler execute:', that.constructor.prototype[key] );
155
- (that.constructor.prototype[key]).bind(that)(ev);
156
- }
165
+ that.constructor.prototype[key].bind(that)(ev);
166
+ },
157
167
  });
158
168
  }
159
- if (nativeEventNames.has('on' + nativeEventName)) { // native event defined in HTMLElement
169
+ if (nativeEventNames.has('on' + nativeEventName)) {
170
+ // native event defined in HTMLElement
160
171
  // console.log('added as native listener', target, nativeEventName );
161
172
  addListener(target, nativeEventName, listener, false, once);
162
173
  }
163
174
  });
164
175
  }
165
176
  }
177
+ function bubbleEvent(target, ev) {
178
+ // at this point, either 'u' or 'd' bubbling should be indicated
179
+ // mcEvent bubbling is asynchronous, and the order of target MC execution in case of multiple matches is not guaranteed!
180
+ if (/[ud]/.test(ev.bubble)) {
181
+ setTimeout(() => {
182
+ // bubbling must include 'l' for local, or else no handlers are executed'
183
+ if (ev.bubble.indexOf('l') === -1) {
184
+ ev.bubble += 'l';
185
+ }
186
+ // bubble up towards root
187
+ if (ev.bubble.indexOf('u') > -1) {
188
+ let parent = traverseNodes(target, '', true)?.[0].target;
189
+ if (parent)
190
+ DC.trigger(parent, ev);
191
+ }
192
+ // bubble down
193
+ if (ev.bubble.indexOf('d') > -1) {
194
+ let targets = new Set(target._mc
195
+ .children()
196
+ .map((c) => c?.target));
197
+ targets.forEach((target) => {
198
+ if (target)
199
+ DC.trigger(target, ev);
200
+ });
201
+ }
202
+ }, 0);
203
+ }
204
+ }
166
205
  class McBase {
167
206
  #target; // avoid circular reference
168
- constructor(target) {
207
+ constructor(target, debug = false) {
169
208
  let that = this, element = that;
170
209
  this.#target = new WeakRef(target || {});
171
210
  init(element); // async lifecycle event
@@ -181,30 +220,40 @@ class MC extends McBase {
181
220
  super(target);
182
221
  }
183
222
  static trigger = trigger;
184
- trigger(ev, data = {}, bubble) {
223
+ trigger(ev, data = {}, bubble = 'l') {
185
224
  let that = this;
186
225
  //console.log( that, '.trigger(', ev, data, bubble, ')' );
187
- bubble = bubble || 'l';
188
226
  // run all triggers
189
227
  if (that.constructor === MC || that.constructor === DC) {
228
+ let event = ev instanceof McEvent
229
+ ? new McEvent(ev.type, ev.data, 'l')
230
+ : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string'
231
+ ? ev
232
+ : new McEvent(ev, data, bubble);
190
233
  [...Object.getOwnPropertyNames(that)].forEach((mc) => {
191
- if (that[mc]?.trigger && typeof that[mc]?.trigger === 'function') {
192
- that[mc]?.trigger(ev, data, bubble);
234
+ if (that[mc]?.trigger &&
235
+ typeof that[mc]?.trigger === 'function') {
236
+ that[mc]?.trigger(event);
193
237
  }
194
238
  });
239
+ if (/[ud]/.test(mcEvent.bubble)) {
240
+ bubbleEvent(that.target, mcEvent);
241
+ }
195
242
  return; // must return here!
196
243
  }
197
244
  // only this instance
198
245
  if (that instanceof MC || that instanceof DC) {
199
- const that = this, mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
200
- ;
246
+ const that = this, mcEvent = typeof ev !== 'string'
247
+ ? ev
248
+ : new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
201
249
  // console.log('trigger', handlerName, mcEvent, data, bubble );
202
250
  if (mcEvent.bubble.indexOf('l') > -1) {
203
- if (!mcEvent.immediateStopped
204
- && typeof that[handlerName] === 'function') {
251
+ if (!mcEvent.immediateStopped &&
252
+ typeof that[handlerName] === 'function') {
205
253
  // console.log( 'execute handler:', handlerName );
206
254
  that[handlerName](mcEvent);
207
- if (that.hasOwnProperty(handlerName)) { // it is a once handler
255
+ if (that.hasOwnProperty(handlerName)) {
256
+ // it is a once handler
208
257
  delete that[handlerName]; // remove after first execution
209
258
  }
210
259
  }
@@ -213,49 +262,24 @@ class MC extends McBase {
213
262
  if (mcEvent.stopped || mcEvent.bubble === 'l') {
214
263
  return that;
215
264
  }
216
- // at this point, either 'u' or 'd' bubbling should be indicated
217
- // mcEvent bubbling is asynchronous, and the order of target MC execution in case of multiple matches is not guaranteed!
218
- if (isBrowser() && /[ud]/.test(mcEvent.bubble) && that instanceof MC) {
219
- setTimeout(() => {
220
- // bubbling must include 'l' for local, or else no handlers are executed'
221
- if (mcEvent.bubble.indexOf('l') === -1) {
222
- mcEvent.bubble += 'l';
223
- }
224
- // bubble up towards root
225
- if (mcEvent.bubble.indexOf('u') > -1) {
226
- that
227
- .parent()
228
- .forEach((mc) => {
229
- mc instanceof MC ? mc.trigger(mcEvent) : null;
230
- });
231
- }
232
- // bubble down
233
- if (mcEvent.bubble.indexOf('d') > -1) {
234
- that
235
- .children()
236
- .forEach((mc) => {
237
- mc instanceof MC ? mc.trigger(mcEvent) : null;
238
- });
239
- }
240
- }, 0);
265
+ //console.log('bubble', mcEvent);
266
+ if (/[ud]/.test(mcEvent.bubble)) {
267
+ bubbleEvent(that.target, mcEvent);
241
268
  }
242
269
  }
243
270
  }
244
271
  }
245
- ;
246
272
  class DC extends McBase {
247
273
  _mc = {};
248
- constructor(target) {
274
+ constructor(target, debug = false) {
249
275
  super(target);
250
276
  }
251
- static debug = false;
252
277
  static add = add;
253
278
  static remove = remove;
254
279
  static trigger = trigger;
255
280
  trigger(ev, data = {}, bubble) {
256
281
  MC.prototype.trigger.call(this, ev, data, bubble);
257
282
  }
258
- ;
259
283
  parent(search = '') {
260
284
  let target = this.target;
261
285
  if (!isDOM(target))
@@ -288,6 +312,5 @@ class DC extends McBase {
288
312
  return getMicroComponents([...myDomElements], search);
289
313
  }
290
314
  }
291
- ;
292
315
  export { addListener, removeListener, McBase, MC, DC, McEvent };
293
316
  //# sourceMappingURL=MC.js.map
package/public/MC.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"MC.js","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MC.js","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"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"}
package/public/MC.min.js CHANGED
@@ -136,16 +136,18 @@ function traverseNodes(node, search, firstonly = true) {
136
136
  ;// ./build/MC.js
137
137
 
138
138
 
139
- var MC_isBrowser = new Function("try {return this===window;}catch(e){ return false;}");
139
+ var MC_isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
140
140
  let MC_nativeEventNames = new Set();
141
141
  // HTMLElement native event names
142
142
  if (MC_isBrowser()) {
143
- Object.keys(HTMLElement.prototype).filter(key => /^on/.test(key)).forEach(eventName => MC_nativeEventNames.add(eventName));
143
+ Object.keys(HTMLElement.prototype)
144
+ .filter((key) => /^on/.test(key))
145
+ .forEach((eventName) => MC_nativeEventNames.add(eventName));
144
146
  }
145
147
  // get all microcomponents from a list of HTMLElements
146
148
  function MC_getMicroComponents(elements, search) {
147
149
  let mcValues = [];
148
- elements.forEach(e => {
150
+ elements.forEach((e) => {
149
151
  if (e) {
150
152
  if (e instanceof HTMLElement) {
151
153
  const _mc = e?._mc;
@@ -227,44 +229,51 @@ function remove(target, key) {
227
229
  delete _mc[key];
228
230
  }
229
231
  // remove the _mc attribute if the DOM collection is empty
230
- if (!Object.keys(_mc).length && target instanceof HTMLElement && target.hasAttribute('_mc')) {
232
+ if (!Object.keys(_mc).length &&
233
+ target instanceof HTMLElement &&
234
+ target.hasAttribute('_mc')) {
231
235
  target.removeAttribute('_mc');
232
236
  }
233
237
  return;
234
238
  }
235
239
  // trigger an event
236
- function trigger(target, ev, data = {}) {
240
+ function trigger(target, ev, data = {}, bubble = 'l') {
237
241
  let _mc = target?._mc;
238
242
  if (!_mc)
239
243
  return;
244
+ let event = ev instanceof McEvent
245
+ ? new McEvent(ev.type, ev.data, 'l')
246
+ : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble);
240
247
  [...Object.values(_mc)].forEach((mc) => {
241
248
  //console.log( 'mc [', mc.constructor.name, ']', mc.constructor.prototype?.oneInit );
242
249
  if (mc?.trigger && typeof mc?.trigger === 'function') {
243
- mc?.trigger(ev, data);
250
+ mc?.trigger(event);
244
251
  }
245
252
  });
253
+ if (/[ud]/.test(mcEvent.bubble)) {
254
+ bubbleEvent(target, mcEvent);
255
+ }
246
256
  return;
247
257
  }
248
- // run the "init" lifecycle event on the completemcr structure
258
+ // run the "init" lifecycle event on the complete _mc structure
249
259
  function init(element) {
250
260
  if (element.constructor === DC)
251
261
  return;
252
262
  setTimeout(() => {
253
263
  element.trigger('Init');
254
- setTimeout(() => {
255
- let keys = Object.keys(element?._mc);
256
- if (keys.length) {
264
+ /*
265
+ let keys = Object.keys( ( element as any)?._mc );
266
+ if ( keys.length ){
257
267
  //console.log( 'inner Inits on [', mc.constructor.name, ']', keys );
258
- keys?.forEach((key) => {
259
- let mc = element?._mc?.[key];
268
+ keys?.forEach( (key: string) => {
269
+ let mc = ( element as any)?._mc?.[key];
260
270
  //console.log( key, typeof mc?.oneInit, mc );
261
- if (mc['oneInit'] && typeof mc.oneInit == 'function') {
262
- mc.oneInit(new McEvent('Init'));
271
+ if ( ( mc as any )['oneInit'] && typeof ( mc as any ).oneInit == 'function' ){
272
+ ( mc as any ).oneInit( new McEvent('Init') );
263
273
  }
264
274
  });
265
- }
266
- ;
267
- }, 0);
275
+ };
276
+ */
268
277
  }, 0);
269
278
  }
270
279
  function autoAttachListeners(element) {
@@ -273,13 +282,14 @@ function autoAttachListeners(element) {
273
282
  const target = element.target;
274
283
  if (target instanceof HTMLElement) {
275
284
  let that = element;
276
- Object
277
- .getOwnPropertyNames(that.constructor.prototype)
278
- .filter(key => /^on[A-Z]|one[A-Z]/.test(key) && typeof that.constructor.prototype[key] === 'function')
279
- .forEach(key => {
285
+ Object.getOwnPropertyNames(that.constructor.prototype)
286
+ .filter((key) => /^on[A-Z]|one[A-Z]/.test(key) &&
287
+ typeof that.constructor.prototype[key] === 'function')
288
+ .forEach((key) => {
280
289
  let once = /^one/.test(key), withoutOnOne = key.replace(/^on[e]{0,1}/, ''), // preserves upper/lowercase for non-native events
281
- nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => { that.trigger(withoutOnOne, ev); };
282
- ;
290
+ nativeEventName = withoutOnOne.toLowerCase(), listener = (ev) => {
291
+ that.trigger(withoutOnOne, ev);
292
+ };
283
293
  if (once) {
284
294
  // console.log( '...is only called once', that.constructor.prototype[key] );
285
295
  Object.defineProperty(element, 'on' + withoutOnOne, {
@@ -288,20 +298,49 @@ function autoAttachListeners(element) {
288
298
  writable: true,
289
299
  value: (ev) => {
290
300
  // console.log( 'onceHandler execute:', that.constructor.prototype[key] );
291
- (that.constructor.prototype[key]).bind(that)(ev);
292
- }
301
+ that.constructor.prototype[key].bind(that)(ev);
302
+ },
293
303
  });
294
304
  }
295
- if (MC_nativeEventNames.has('on' + nativeEventName)) { // native event defined in HTMLElement
305
+ if (MC_nativeEventNames.has('on' + nativeEventName)) {
306
+ // native event defined in HTMLElement
296
307
  // console.log('added as native listener', target, nativeEventName );
297
308
  addListener(target, nativeEventName, listener, false, once);
298
309
  }
299
310
  });
300
311
  }
301
312
  }
313
+ function bubbleEvent(target, ev) {
314
+ // at this point, either 'u' or 'd' bubbling should be indicated
315
+ // mcEvent bubbling is asynchronous, and the order of target MC execution in case of multiple matches is not guaranteed!
316
+ if (/[ud]/.test(ev.bubble)) {
317
+ setTimeout(() => {
318
+ // bubbling must include 'l' for local, or else no handlers are executed'
319
+ if (ev.bubble.indexOf('l') === -1) {
320
+ ev.bubble += 'l';
321
+ }
322
+ // bubble up towards root
323
+ if (ev.bubble.indexOf('u') > -1) {
324
+ let parent = MC_traverseNodes(target, '', true)?.[0].target;
325
+ if (parent)
326
+ DC.trigger(parent, ev);
327
+ }
328
+ // bubble down
329
+ if (ev.bubble.indexOf('d') > -1) {
330
+ let targets = new Set(target._mc
331
+ .children()
332
+ .map((c) => c?.target));
333
+ targets.forEach((target) => {
334
+ if (target)
335
+ DC.trigger(target, ev);
336
+ });
337
+ }
338
+ }, 0);
339
+ }
340
+ }
302
341
  class McBase {
303
342
  #target; // avoid circular reference
304
- constructor(target) {
343
+ constructor(target, debug = false) {
305
344
  let that = this, element = that;
306
345
  this.#target = new WeakRef(target || {});
307
346
  init(element); // async lifecycle event
@@ -317,30 +356,40 @@ class MC extends McBase {
317
356
  super(target);
318
357
  }
319
358
  static trigger = trigger;
320
- trigger(ev, data = {}, bubble) {
359
+ trigger(ev, data = {}, bubble = 'l') {
321
360
  let that = this;
322
361
  //console.log( that, '.trigger(', ev, data, bubble, ')' );
323
- bubble = bubble || 'l';
324
362
  // run all triggers
325
363
  if (that.constructor === MC || that.constructor === DC) {
364
+ let event = ev instanceof McEvent
365
+ ? new McEvent(ev.type, ev.data, 'l')
366
+ : new McEvent(ev, data, 'l'), mcEvent = typeof ev !== 'string'
367
+ ? ev
368
+ : new McEvent(ev, data, bubble);
326
369
  [...Object.getOwnPropertyNames(that)].forEach((mc) => {
327
- if (that[mc]?.trigger && typeof that[mc]?.trigger === 'function') {
328
- that[mc]?.trigger(ev, data, bubble);
370
+ if (that[mc]?.trigger &&
371
+ typeof that[mc]?.trigger === 'function') {
372
+ that[mc]?.trigger(event);
329
373
  }
330
374
  });
375
+ if (/[ud]/.test(mcEvent.bubble)) {
376
+ bubbleEvent(that.target, mcEvent);
377
+ }
331
378
  return; // must return here!
332
379
  }
333
380
  // only this instance
334
381
  if (that instanceof MC || that instanceof DC) {
335
- const that = this, mcEvent = typeof ev !== 'string' ? ev : new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
336
- ;
382
+ const that = this, mcEvent = typeof ev !== 'string'
383
+ ? ev
384
+ : new McEvent(ev, data, bubble), handlerName = 'on' + mcEvent.type[0].toUpperCase() + mcEvent.type.slice(1);
337
385
  // console.log('trigger', handlerName, mcEvent, data, bubble );
338
386
  if (mcEvent.bubble.indexOf('l') > -1) {
339
- if (!mcEvent.immediateStopped
340
- && typeof that[handlerName] === 'function') {
387
+ if (!mcEvent.immediateStopped &&
388
+ typeof that[handlerName] === 'function') {
341
389
  // console.log( 'execute handler:', handlerName );
342
390
  that[handlerName](mcEvent);
343
- if (that.hasOwnProperty(handlerName)) { // it is a once handler
391
+ if (that.hasOwnProperty(handlerName)) {
392
+ // it is a once handler
344
393
  delete that[handlerName]; // remove after first execution
345
394
  }
346
395
  }
@@ -349,49 +398,24 @@ class MC extends McBase {
349
398
  if (mcEvent.stopped || mcEvent.bubble === 'l') {
350
399
  return that;
351
400
  }
352
- // at this point, either 'u' or 'd' bubbling should be indicated
353
- // mcEvent bubbling is asynchronous, and the order of target MC execution in case of multiple matches is not guaranteed!
354
- if (MC_isBrowser() && /[ud]/.test(mcEvent.bubble) && that instanceof MC) {
355
- setTimeout(() => {
356
- // bubbling must include 'l' for local, or else no handlers are executed'
357
- if (mcEvent.bubble.indexOf('l') === -1) {
358
- mcEvent.bubble += 'l';
359
- }
360
- // bubble up towards root
361
- if (mcEvent.bubble.indexOf('u') > -1) {
362
- that
363
- .parent()
364
- .forEach((mc) => {
365
- mc instanceof MC ? mc.trigger(mcEvent) : null;
366
- });
367
- }
368
- // bubble down
369
- if (mcEvent.bubble.indexOf('d') > -1) {
370
- that
371
- .children()
372
- .forEach((mc) => {
373
- mc instanceof MC ? mc.trigger(mcEvent) : null;
374
- });
375
- }
376
- }, 0);
401
+ //console.log('bubble', mcEvent);
402
+ if (/[ud]/.test(mcEvent.bubble)) {
403
+ bubbleEvent(that.target, mcEvent);
377
404
  }
378
405
  }
379
406
  }
380
407
  }
381
- ;
382
408
  class DC extends McBase {
383
409
  _mc = {};
384
- constructor(target) {
410
+ constructor(target, debug = false) {
385
411
  super(target);
386
412
  }
387
- static debug = false;
388
413
  static add = add;
389
414
  static remove = remove;
390
415
  static trigger = trigger;
391
416
  trigger(ev, data = {}, bubble) {
392
417
  MC.prototype.trigger.call(this, ev, data, bubble);
393
418
  }
394
- ;
395
419
  parent(search = '') {
396
420
  let target = this.target;
397
421
  if (!MC_isDOM(target))
@@ -424,7 +448,6 @@ class DC extends McBase {
424
448
  return MC_getMicroComponents([...myDomElements], search);
425
449
  }
426
450
  }
427
- ;
428
451
 
429
452
 
430
453
  /******/ return __webpack_exports__;