@twobirds/microcomponents 0.0.37 → 0.0.41

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 (55) hide show
  1. package/assets/my-tag.css +10 -2
  2. package/assets/test.html +21 -12
  3. package/dist/MC.d.ts +1 -1
  4. package/dist/MC.d.ts.map +1 -1
  5. package/dist/MC.min.js +49 -28
  6. package/dist/MC.ts +69 -32
  7. package/dist/elements.min.js +1 -1
  8. package/dist/microcomponents.min.js +1 -1
  9. package/dist/observables.d.ts.map +1 -1
  10. package/dist/observables.min.js +1 -1
  11. package/dist/observables.ts +21 -14
  12. package/dist/test.ts +25 -17
  13. package/package.json +1 -1
  14. package/public/MC.js +49 -28
  15. package/public/MC.js.map +1 -1
  16. package/public/MC.min.js +49 -28
  17. package/public/assets/search.js +1 -1
  18. package/public/classes/MC.DC.html +13 -13
  19. package/public/classes/MC.MC.html +14 -12
  20. package/public/classes/MC.McBase.html +4 -4
  21. package/public/classes/MC.McEvent.html +13 -13
  22. package/public/elements.min.js +1 -1
  23. package/public/functions/MC.addListener.html +1 -1
  24. package/public/functions/MC.removeListener.html +1 -1
  25. package/public/functions/elements.defineCE.html +1 -1
  26. package/public/functions/elements.getCE.html +1 -1
  27. package/public/functions/formValues.formValues.html +1 -1
  28. package/public/functions/observables.observe.html +1 -1
  29. package/public/functions/selectors._d.html +1 -1
  30. package/public/functions/selectors._t.html +1 -1
  31. package/public/interfaces/MC.HTMLMcElement.html +2 -2
  32. package/public/interfaces/selectors.DSelector.html +55 -55
  33. package/public/interfaces/selectors.TSelector.html +37 -37
  34. package/public/microcomponents.min.js +1 -1
  35. package/public/modules/MC.html +1 -1
  36. package/public/modules/elements.html +1 -1
  37. package/public/modules/formValues.html +1 -1
  38. package/public/modules/observables.html +1 -1
  39. package/public/modules/selectors.html +1 -1
  40. package/public/my-tag.css +10 -2
  41. package/public/observables.js +20 -9
  42. package/public/observables.js.map +1 -1
  43. package/public/observables.min.js +1 -1
  44. package/public/src/MC.ts +69 -32
  45. package/public/src/observables.ts +21 -14
  46. package/public/src/test.ts +25 -17
  47. package/public/test.html +21 -12
  48. package/public/test.js +18 -25
  49. package/public/test.js.map +1 -1
  50. package/public/types/observables.Observable.html +5 -5
  51. package/public/types/selectors.selection.html +1 -1
  52. package/public/types/selectors.singleSelector.html +1 -1
  53. package/src/MC.ts +69 -32
  54. package/src/observables.ts +21 -14
  55. package/src/test.ts +25 -17
@@ -18,16 +18,15 @@ function isObservableObject(value: any): boolean {
18
18
  type Callback = (value: any) => void;
19
19
 
20
20
  function getPlaceholders(target: HTMLElement): string[] {
21
- let placeholders: Set<string> = new Set();
21
+ let placeholders: Set<string> = new Set(),
22
+ regEx = /\{[^\{\}]*\}/g;
22
23
 
23
24
  // scan attributes
24
25
  target
25
26
  .getAttributeNames()
26
- .filter((attr) => target.getAttribute(attr)?.match(/\{[^\{\}]*\}/g)) // extract placeholder(s)
27
+ .filter((attr) => target.getAttribute(attr)?.match(regEx)) // extract placeholder(s)
27
28
  .forEach((attr) => {
28
- let phs: Set<string> = new Set(
29
- target.getAttribute(attr)?.match(/\{[^\{\}]*\}/g)
30
- );
29
+ let phs: Set<string> = new Set(target.getAttribute(attr)?.match(regEx));
31
30
  phs.forEach((placeholder) =>
32
31
  placeholders.add(placeholder.replace(/[\{\}]/g, ''))
33
32
  );
@@ -39,12 +38,12 @@ function getPlaceholders(target: HTMLElement): string[] {
39
38
  return (
40
39
  // is text node and has placeholders
41
40
  childNode.nodeType === 3 &&
42
- ((childNode as any).nodeValue || '').match(/\{[^\{\}]*\}/g)
41
+ ((childNode as any).nodeValue || '').match(regEx)
43
42
  );
44
43
  })
45
44
  .forEach((childNode) => {
46
45
  ((childNode as any).nodeValue || '')
47
- .match(/\{[^\{\}]*\}/g)
46
+ .match(regEx)
48
47
  .forEach((placeholder: string) => {
49
48
  placeholders.add(placeholder.replace(/[\{\}]/g, ''));
50
49
  });
@@ -150,7 +149,9 @@ class Placeholders extends DC {
150
149
  function getPlaceholderElements(
151
150
  target: HTMLElement | DocumentFragment | ShadowRoot
152
151
  ): HTMLElement[] {
153
- let elements: Array<HTMLElement | DocumentFragment | ShadowRoot> = [target]
152
+ let elements: Array<HTMLElement> = (
153
+ target instanceof HTMLElement ? [target] : []
154
+ )
154
155
  .concat([...(target.querySelectorAll('*') as unknown as HTMLElement[])])
155
156
  .filter((e) => !!getPlaceholders(e as HTMLElement).length);
156
157
  return elements as HTMLElement[];
@@ -159,9 +160,10 @@ function getPlaceholderElements(
159
160
  function makePlaceHolders(
160
161
  element: HTMLElement | DocumentFragment | ShadowRoot
161
162
  ): void {
162
- getPlaceholderElements(element).forEach((e) =>
163
- DC.add(e, '_placeholders', new Placeholders(e))
164
- );
163
+ getPlaceholderElements(element).forEach((e: HTMLElement) => {
164
+ if ((e as HTMLMcElement)?._mc?._placeholders) return;
165
+ DC.add(e, '_placeholders', new Placeholders(e));
166
+ });
165
167
  }
166
168
 
167
169
  export type Observable = {
@@ -225,14 +227,19 @@ export const observe = (target: LooseObject, propertyName?: string) => {
225
227
 
226
228
  bind(target: HTMLElement | DocumentFragment | ShadowRoot) {
227
229
  const that = this,
228
- iso = isObservableObject(that.valueOf()),
229
- bound = (that.constructor as any).bound;
230
+ iso = isObservableObject(that.valueOf());
230
231
  //console.log('bind', iso, target);
231
232
 
232
233
  if (iso) {
233
234
  makePlaceHolders(target);
234
235
  (this.constructor as any).callbacks.push((data: LooseObject) => {
235
- DC.trigger(target, 'data', flattenObject(data), 'ld');
236
+ // avoid bubbling for speed
237
+ new DC(target as HTMLMcElement)
238
+ .descendants('_placeholders')
239
+ .forEach((e) => {
240
+ if (!e) return;
241
+ e.trigger('data', flattenObject(data));
242
+ });
236
243
  });
237
244
  that.notify();
238
245
  } else {
package/dist/test.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  import {
4
- HTMLMcElement,
5
4
  LooseObject,
6
5
  MC,
7
6
  DC,
@@ -48,13 +47,15 @@ class Translator extends DC {
48
47
  }
49
48
  });
50
49
 
51
- (that.Translation as Observable).bind(target);
50
+ (that.Translation as Observable).bind(translationTargetObject);
52
51
 
53
52
  this.target.setAttribute('language', 'en');
53
+
54
+ (this.Language as Observable).notify();
54
55
  }
55
56
 
56
57
  oneInit() {
57
- (this.Language as Observable).notify(); // trigger translation
58
+ //(this.Language as Observable).notify(); // trigger translation
58
59
  }
59
60
 
60
61
  onAttributeChanged(ev: McEvent) {
@@ -74,7 +75,7 @@ defineCE(
74
75
  // equivalent to custom element registry .define()
75
76
  'my-tag',
76
77
  class MyTag extends DC {
77
- #template: string = '{lang.click} {counter}';
78
+ #template: string = '<button>{lang.click} {counter}</button>';
78
79
 
79
80
  #languages = {
80
81
  en: {
@@ -92,6 +93,9 @@ defineCE(
92
93
 
93
94
  let that = this; // minifier help
94
95
 
96
+ // hide
97
+ target.setAttribute('style', 'display:none');
98
+
95
99
  // render
96
100
  target.innerHTML = this.#template;
97
101
 
@@ -114,6 +118,9 @@ defineCE(
114
118
 
115
119
  // bind Dom to target
116
120
  (that.Dom as Observable).bind(that.target);
121
+
122
+ // show
123
+ setTimeout(() => that.target.removeAttribute('style'), 100);
117
124
  }
118
125
 
119
126
  onAttributeChanged(ev: McEvent) {
@@ -122,7 +129,13 @@ defineCE(
122
129
  }
123
130
 
124
131
  onClick(ev: McEvent) {
125
- this.Dom.counter++;
132
+ const that = this,
133
+ c = this.Dom.counter++;
134
+ (ev.data as PointerEvent).stopPropagation();
135
+ (this.target as HTMLElement).classList.remove('clicked');
136
+ (this.target as HTMLElement).classList.add(
137
+ that.Dom.counter > 9 ? 'overClicked' : 'clicked'
138
+ );
126
139
  }
127
140
  },
128
141
  ['language']
@@ -135,13 +148,11 @@ let MyTag: CustomElementConstructor = getCE('my-tag')!,
135
148
  stress test
136
149
  */
137
150
 
138
- /*
139
151
  let start = new Date().getTime();
140
152
 
141
- // create 1000 elements
142
- for (let x = 0; x < 1000; x++) {
143
- let mt = new MyTag('my-data');
144
- fragment.append(mt);
153
+ // create 100 elements
154
+ for (let x = 0; x < 100; x++) {
155
+ fragment.append(new MyTag());
145
156
  }
146
157
 
147
158
  let end = new Date().getTime();
@@ -149,8 +160,7 @@ let end = new Date().getTime();
149
160
  // and put them into the DOM
150
161
  document.body.appendChild(fragment);
151
162
 
152
- document.querySelectorAll('my-tag').forEach((e) => e.remove());
153
- */
163
+ //document.querySelectorAll('my-tag').forEach((e) => e.remove());
154
164
 
155
165
  /*
156
166
  console test
@@ -159,15 +169,13 @@ console test
159
169
  setTimeout(() => {
160
170
  console.clear();
161
171
 
162
- /*
163
172
  console.log(
164
- '%c \n\nStress Test:\n\n %cInstancing 1000 web components: %c %s ms.',
173
+ '%c \n\nStress Test:\n\n %cInstancing 100 web components: %c %s ms.',
165
174
  'font-weight: bold; color: black;',
166
175
  'font-weight: normal;',
167
176
  'font-weight: bold; color: blue;',
168
- 0
177
+ end - start
169
178
  );
170
- */
171
179
 
172
180
  document.body.appendChild(new MyTag());
173
181
 
@@ -184,4 +192,4 @@ setTimeout(() => {
184
192
 
185
193
  // will trigger the event on all micro components contained in <my-tag>
186
194
  DC.trigger(element, 'doSomething');
187
- }, 20);
195
+ }, 500);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twobirds/microcomponents",
3
- "version": "0.0.37",
3
+ "version": "0.0.41",
4
4
  "description": "Micro Components Organization Class",
5
5
  "main": "./dist/microcomponents.ts",
6
6
  "types": "./dist/microcomponents.d.ts",
package/public/MC.js CHANGED
@@ -101,16 +101,22 @@ function remove(target, key) {
101
101
  return;
102
102
  }
103
103
  // trigger an event
104
- function trigger(target, ev, data = {}) {
104
+ function trigger(target, ev, data = {}, bubble = 'l') {
105
105
  let _mc = target?._mc;
106
106
  if (!_mc)
107
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);
108
111
  [...Object.values(_mc)].forEach((mc) => {
109
112
  //console.log( 'mc [', mc.constructor.name, ']', mc.constructor.prototype?.oneInit );
110
113
  if (mc?.trigger && typeof mc?.trigger === 'function') {
111
- mc?.trigger(ev, data);
114
+ mc?.trigger(event);
112
115
  }
113
116
  });
117
+ if (/[ud]/.test(mcEvent.bubble)) {
118
+ bubbleEvent(target, mcEvent);
119
+ }
114
120
  return;
115
121
  }
116
122
  // run the "init" lifecycle event on the complete _mc structure
@@ -168,6 +174,34 @@ function autoAttachListeners(element) {
168
174
  });
169
175
  }
170
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
+ }
171
205
  class McBase {
172
206
  #target; // avoid circular reference
173
207
  constructor(target, debug = false) {
@@ -186,18 +220,25 @@ class MC extends McBase {
186
220
  super(target);
187
221
  }
188
222
  static trigger = trigger;
189
- trigger(ev, data = {}, bubble) {
223
+ trigger(ev, data = {}, bubble = 'l') {
190
224
  let that = this;
191
225
  //console.log( that, '.trigger(', ev, data, bubble, ')' );
192
- bubble = bubble || 'l';
193
226
  // run all triggers
194
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);
195
233
  [...Object.getOwnPropertyNames(that)].forEach((mc) => {
196
234
  if (that[mc]?.trigger &&
197
235
  typeof that[mc]?.trigger === 'function') {
198
- that[mc]?.trigger(ev, data, bubble);
236
+ that[mc]?.trigger(event);
199
237
  }
200
238
  });
239
+ if (/[ud]/.test(mcEvent.bubble)) {
240
+ bubbleEvent(that.target, mcEvent);
241
+ }
201
242
  return; // must return here!
202
243
  }
203
244
  // only this instance
@@ -221,29 +262,9 @@ class MC extends McBase {
221
262
  if (mcEvent.stopped || mcEvent.bubble === 'l') {
222
263
  return that;
223
264
  }
224
- // at this point, either 'u' or 'd' bubbling should be indicated
225
- // mcEvent bubbling is asynchronous, and the order of target MC execution in case of multiple matches is not guaranteed!
226
- if (isBrowser() &&
227
- /[ud]/.test(mcEvent.bubble) &&
228
- that instanceof MC) {
229
- setTimeout(() => {
230
- // bubbling must include 'l' for local, or else no handlers are executed'
231
- if (mcEvent.bubble.indexOf('l') === -1) {
232
- mcEvent.bubble += 'l';
233
- }
234
- // bubble up towards root
235
- if (mcEvent.bubble.indexOf('u') > -1) {
236
- that.parent().forEach((mc) => {
237
- mc instanceof MC ? mc.trigger(mcEvent) : null;
238
- });
239
- }
240
- // bubble down
241
- if (mcEvent.bubble.indexOf('d') > -1) {
242
- that.children().forEach((mc) => {
243
- mc instanceof MC ? mc.trigger(mcEvent) : null;
244
- });
245
- }
246
- }, 0);
265
+ //console.log('bubble', mcEvent);
266
+ if (/[ud]/.test(mcEvent.bubble)) {
267
+ bubbleEvent(that.target, mcEvent);
247
268
  }
248
269
  }
249
270
  }
package/public/MC.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"MC.js","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,IAAI,SAAS,GAAG,IAAI,QAAQ,CAC3B,qDAAqD,CACrD,CAAC;AAEF,IAAI,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;AAE9C,iCAAiC;AACjC,IAAI,SAAS,EAAE,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;SAChC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,CAAC;AAMD,sDAAsD;AACtD,SAAS,kBAAkB,CAAC,QAAe,EAAE,MAAc;IAC1D,IAAI,QAAQ,GAAU,EAAE,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAI,CAAS,EAAE,GAAG,CAAC;gBAC5B,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBACpB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAE,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,CAAC;qBAAM,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,qDAAqD;AACrD,SAAS,aAAa,CACrB,IAA4B,EAC5B,MAAc,EACd,SAAS,GAAG,IAAI;IAEhB,IAAI,QAAQ,GAAU,EAAE,CAAC;IACzB,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,SAAS;gBAAE,OAAO,QAAQ,CAAC;QAChC,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,KAAK,CAAC,OAA+B;IAC7C,OAAO,OAAO,IAAI,OAAO,YAAY,WAAW,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CACnB,OAAa,EACb,SAAiB,EACjB,OAAkD,EAClD,UAAmB,KAAK,EACxB,OAAgB,KAAK;IAErB,IAAI,OAAO,GAA6C,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,sFAAsF;IACtF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CACtB,OAAa,EACb,SAAiB,EACjB,OAAkD;IAElD,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,4CAA4C;AAC5C,SAAS,GAAG,CAAC,MAAmB,EAAE,GAAW,EAAE,OAAO,GAAG,EAAE;IAC1D,IAAI,IAAI,GAAG,MAAuB,CAAC;IAEnC,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,KAAK,GAAI,EAAU,EAAE,KAAK,CAAC;QAC9B,EAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAK,EAAU,CAAC,MAAM,CAAC,CAAC;QAClC,EAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,gEAAgE;IACtF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAErB,kEAAkE;IAClE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACnB,+BAA+B;QAC/B,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,wCAAwC;AACxC,SAAS,MAAM,CAAC,MAAqB,EAAE,GAAW;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,cAAc;IAEhC,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAE9B,0DAA0D;IAC1D,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,0DAA0D;IAC1D,IACC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;QACxB,MAAM,YAAY,WAAW;QAC7B,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EACzB,CAAC;QACF,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO;AACR,CAAC;AAED,mBAAmB;AACnB,SAAS,OAAO,CAAC,MAAe,EAAE,EAAoB,EAAE,OAAY,EAAE;IACrE,IAAI,GAAG,GAAI,MAAc,EAAE,GAAG,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;QAC3C,qFAAqF;QACrF,IAAK,EAAU,EAAE,OAAO,IAAI,OAAQ,EAAU,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;YACvE,EAAU,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO;AACR,CAAC;AAED,+DAA+D;AAC/D,SAAS,IAAI,CAAC,OAAgB;IAC7B,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE;QAAE,OAAO;IAEvC,UAAU,CAAC,GAAG,EAAE;QACf,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxB;;;;;;;;;;;;cAYG;IACJ,CAAC,EAAE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC5C,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE;QAAE,OAAO;IAEvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QACnC,IAAI,IAAI,GAAgB,OAAO,CAAC;QAChC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;aACpD,MAAM,CACN,CAAC,GAAG,EAAE,EAAE,CACP,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,UAAU,CACtD;aACA,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC1B,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,kDAAkD;YACjG,eAAe,GAAG,YAAY,CAAC,WAAW,EAAE,EAC5C,QAAQ,GAAG,CAAC,EAAiC,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,CAAC;gBACV,4EAA4E;gBAC5E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,GAAG,YAAY,EAAE;oBACnD,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,CAAC,EAAO,EAAE,EAAE;wBAClB,0EAA0E;wBAC1E,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;iBACD,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;gBAClD,sCAAsC;gBACtC,qEAAqE;gBACrE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC,CAAC,CAAC;IACL,CAAC;AACF,CAAC;AAED,MAAM,MAAM;IACX,OAAO,CAAe,CAAC,2BAA2B;IAElD,YAAY,MAA+B,EAAE,QAAiB,KAAK;QAClE,IAAI,IAAI,GAAY,IAAI,EACvB,OAAO,GAAG,IAAe,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;QAEvC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,EAAG,SAAQ,MAAM;IACtB,GAAG,GAA2B,EAAE,CAAC;IAEjC,YAAY,MAAY;QACvB,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAEzB,OAAO,CAAC,EAAoB,EAAE,OAAY,EAAE,EAAE,MAAe;QAC5D,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,0DAA0D;QAC1D,MAAM,GAAG,MAAM,IAAI,GAAG,CAAC;QAEvB,mBAAmB;QACnB,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YACxD,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACpD,IACE,IAAY,CAAC,EAAE,CAAC,EAAE,OAAO;oBAC1B,OAAQ,IAAY,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,UAAU,EAC/C,CAAC;oBACD,IAAY,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,oBAAoB;QAC7B,CAAC;QAED,qBAAqB;QACrB,IAAK,IAAY,YAAY,EAAE,IAAK,IAAY,YAAY,EAAE,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,EAChB,OAAO,GACN,OAAO,EAAE,KAAK,QAAQ;gBACrB,CAAC,CAAE,EAAc;gBACjB,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,EACjC,WAAW,GACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/D,+DAA+D;YAE/D,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACtC,IACC,CAAC,OAAO,CAAC,gBAAgB;oBACzB,OAAQ,IAAY,CAAC,WAAW,CAAC,KAAK,UAAU,EAC/C,CAAC;oBACF,kDAAkD;oBACjD,IAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAK,IAAY,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/C,uBAAuB;wBACvB,OAAQ,IAAY,CAAC,WAAW,CAAC,CAAC,CAAC,+BAA+B;oBACnE,CAAC;gBACF,CAAC;YACF,CAAC;YAED,wDAAwD;YACxD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACb,CAAC;YAED,gEAAgE;YAChE,wHAAwH;YACxH,IACC,SAAS,EAAE;gBACX,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1B,IAAY,YAAY,EAAE,EAC1B,CAAC;gBACF,UAAU,CAAC,GAAG,EAAE;oBACf,yEAAyE;oBACzE,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;wBACxC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;oBACvB,CAAC;oBAED,yBAAyB;oBACzB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBACrC,IAAY,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;4BAC1C,EAAE,YAAY,EAAE,CAAC,CAAC,CAAE,EAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACxD,CAAC,CAAC,CAAC;oBACJ,CAAC;oBAED,cAAc;oBACd,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBACrC,IAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;4BAC5C,EAAE,YAAY,EAAE,CAAC,CAAC,CAAE,EAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACxD,CAAC,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC;QACF,CAAC;IACF,CAAC;;AAGF,MAAM,EAAG,SAAQ,MAAM;IACtB,GAAG,GAA2B,EAAE,CAAC;IAEjC,YAAY,MAAmB,EAAE,QAAiB,KAAK;QACtD,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG,GAAa,GAAG,CAAC;IAC3B,MAAM,CAAC,MAAM,GAAa,MAAM,CAAC;IACjC,MAAM,CAAC,OAAO,GAAa,OAAO,CAAC;IAEnC,OAAO,CAAC,EAAoB,EAAE,OAAY,EAAE,EAAE,MAAe;QAC5D,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE;QACzB,IAAI,MAAM,GAAiB,IAAY,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAE,MAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE;QAC5B,IAAI,MAAM,GAAS,IAAY,EAAE,MAAM,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAE,IAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,QAAQ,CAAC,SAAiB,EAAE;QAC3B,IAAI,MAAM,GAAS,IAAY,EAAE,MAAM,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,sBAAsB,GAAG,EAAE,GAAG,iBAAiB,CAAC;QACjE,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,SAAiB,EAAE;QAC9B,IAAI,MAAM,GAAS,IAAY,EAAE,MAAM,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,kBAAkB,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;;AAGF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"MC.js","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"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"}
package/public/MC.min.js CHANGED
@@ -237,16 +237,22 @@ function remove(target, key) {
237
237
  return;
238
238
  }
239
239
  // trigger an event
240
- function trigger(target, ev, data = {}) {
240
+ function trigger(target, ev, data = {}, bubble = 'l') {
241
241
  let _mc = target?._mc;
242
242
  if (!_mc)
243
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);
244
247
  [...Object.values(_mc)].forEach((mc) => {
245
248
  //console.log( 'mc [', mc.constructor.name, ']', mc.constructor.prototype?.oneInit );
246
249
  if (mc?.trigger && typeof mc?.trigger === 'function') {
247
- mc?.trigger(ev, data);
250
+ mc?.trigger(event);
248
251
  }
249
252
  });
253
+ if (/[ud]/.test(mcEvent.bubble)) {
254
+ bubbleEvent(target, mcEvent);
255
+ }
250
256
  return;
251
257
  }
252
258
  // run the "init" lifecycle event on the complete _mc structure
@@ -304,6 +310,34 @@ function autoAttachListeners(element) {
304
310
  });
305
311
  }
306
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
+ }
307
341
  class McBase {
308
342
  #target; // avoid circular reference
309
343
  constructor(target, debug = false) {
@@ -322,18 +356,25 @@ class MC extends McBase {
322
356
  super(target);
323
357
  }
324
358
  static trigger = trigger;
325
- trigger(ev, data = {}, bubble) {
359
+ trigger(ev, data = {}, bubble = 'l') {
326
360
  let that = this;
327
361
  //console.log( that, '.trigger(', ev, data, bubble, ')' );
328
- bubble = bubble || 'l';
329
362
  // run all triggers
330
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);
331
369
  [...Object.getOwnPropertyNames(that)].forEach((mc) => {
332
370
  if (that[mc]?.trigger &&
333
371
  typeof that[mc]?.trigger === 'function') {
334
- that[mc]?.trigger(ev, data, bubble);
372
+ that[mc]?.trigger(event);
335
373
  }
336
374
  });
375
+ if (/[ud]/.test(mcEvent.bubble)) {
376
+ bubbleEvent(that.target, mcEvent);
377
+ }
337
378
  return; // must return here!
338
379
  }
339
380
  // only this instance
@@ -357,29 +398,9 @@ class MC extends McBase {
357
398
  if (mcEvent.stopped || mcEvent.bubble === 'l') {
358
399
  return that;
359
400
  }
360
- // at this point, either 'u' or 'd' bubbling should be indicated
361
- // mcEvent bubbling is asynchronous, and the order of target MC execution in case of multiple matches is not guaranteed!
362
- if (MC_isBrowser() &&
363
- /[ud]/.test(mcEvent.bubble) &&
364
- that instanceof MC) {
365
- setTimeout(() => {
366
- // bubbling must include 'l' for local, or else no handlers are executed'
367
- if (mcEvent.bubble.indexOf('l') === -1) {
368
- mcEvent.bubble += 'l';
369
- }
370
- // bubble up towards root
371
- if (mcEvent.bubble.indexOf('u') > -1) {
372
- that.parent().forEach((mc) => {
373
- mc instanceof MC ? mc.trigger(mcEvent) : null;
374
- });
375
- }
376
- // bubble down
377
- if (mcEvent.bubble.indexOf('d') > -1) {
378
- that.children().forEach((mc) => {
379
- mc instanceof MC ? mc.trigger(mcEvent) : null;
380
- });
381
- }
382
- }, 0);
401
+ //console.log('bubble', mcEvent);
402
+ if (/[ud]/.test(mcEvent.bubble)) {
403
+ bubbleEvent(that.target, mcEvent);
383
404
  }
384
405
  }
385
406
  }