@schukai/monster 3.54.0 → 3.55.1

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 (124) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/package.json +1 -1
  3. package/source/components/datatable/datasource/rest.mjs +93 -57
  4. package/source/components/datatable/datatable/header.mjs +8 -0
  5. package/source/components/datatable/datatable.mjs +88 -44
  6. package/source/components/datatable/embedded-pagination.mjs +24 -43
  7. package/source/components/datatable/filter/util.mjs +138 -0
  8. package/source/components/datatable/filter.mjs +418 -174
  9. package/source/components/datatable/pagination.mjs +26 -2
  10. package/source/components/datatable/status.mjs +226 -0
  11. package/source/components/datatable/style/datatable.pcss +1 -0
  12. package/source/components/datatable/style/embedded-pagination.pcss +59 -2
  13. package/source/components/datatable/style/filter.pcss +4 -0
  14. package/source/components/datatable/style/pagination.pcss +28 -4
  15. package/source/components/datatable/style/status.pcss +42 -0
  16. package/source/components/datatable/stylesheet/column-bar.mjs +15 -9
  17. package/source/components/datatable/stylesheet/dataset.mjs +14 -8
  18. package/source/components/datatable/stylesheet/datasource.mjs +14 -8
  19. package/source/components/datatable/stylesheet/datatable.mjs +15 -9
  20. package/source/components/datatable/stylesheet/embedded-pagination.mjs +14 -8
  21. package/source/components/datatable/stylesheet/filter-button.mjs +15 -9
  22. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +14 -8
  23. package/source/components/datatable/stylesheet/filter-date-range.mjs +14 -8
  24. package/source/components/datatable/stylesheet/filter-range.mjs +14 -8
  25. package/source/components/datatable/stylesheet/filter.mjs +15 -9
  26. package/source/components/datatable/stylesheet/pagination.mjs +15 -9
  27. package/source/components/datatable/stylesheet/select-filter.mjs +14 -8
  28. package/source/components/datatable/stylesheet/status.mjs +33 -0
  29. package/source/components/form/action-button.mjs +3 -1
  30. package/source/components/form/api-button.mjs +1 -1
  31. package/source/components/form/button-bar.mjs +1 -1
  32. package/source/components/form/button.mjs +1 -1
  33. package/source/components/form/confirm-button.mjs +3 -1
  34. package/source/components/form/context-error.mjs +272 -0
  35. package/source/components/form/context-help.mjs +7 -5
  36. package/source/components/form/form.mjs +4 -2
  37. package/source/components/form/message-state-button.mjs +4 -2
  38. package/source/components/form/popper-button.mjs +9 -4
  39. package/source/components/form/popper.mjs +11 -3
  40. package/source/components/form/reload.mjs +1 -1
  41. package/source/components/form/select.mjs +3 -3
  42. package/source/components/form/shadow-reload.mjs +1 -1
  43. package/source/components/form/state-button.mjs +4 -1
  44. package/source/components/form/style/context-error.pcss +32 -0
  45. package/source/components/form/style/context-help.pcss +22 -5
  46. package/source/components/form/stylesheet/action-button.mjs +14 -8
  47. package/source/components/form/stylesheet/api-button.mjs +14 -8
  48. package/source/components/form/stylesheet/button-bar.mjs +14 -8
  49. package/source/components/form/stylesheet/button.mjs +14 -8
  50. package/source/components/form/stylesheet/confirm-button.mjs +14 -8
  51. package/source/components/form/stylesheet/context-error.mjs +33 -0
  52. package/source/components/form/stylesheet/context-help.mjs +15 -9
  53. package/source/components/form/stylesheet/form.mjs +14 -8
  54. package/source/components/form/stylesheet/message-state-button.mjs +14 -8
  55. package/source/components/form/stylesheet/popper-button.mjs +14 -8
  56. package/source/components/form/stylesheet/popper.mjs +14 -8
  57. package/source/components/form/stylesheet/select.mjs +15 -9
  58. package/source/components/form/stylesheet/state-button.mjs +14 -8
  59. package/source/components/form/stylesheet/tabs.mjs +15 -9
  60. package/source/components/form/stylesheet/tree-select.mjs +14 -8
  61. package/source/components/form/tabs.mjs +53 -7
  62. package/source/components/form/template.mjs +1 -1
  63. package/source/components/form/tree-select.mjs +1 -1
  64. package/source/components/host/collapse.mjs +20 -5
  65. package/source/components/host/config-manager.mjs +41 -2
  66. package/source/components/host/host.mjs +14 -0
  67. package/source/components/host/stylesheet/call-button.mjs +15 -9
  68. package/source/components/host/stylesheet/collapse.mjs +14 -8
  69. package/source/components/host/stylesheet/config-manager.mjs +14 -8
  70. package/source/components/host/stylesheet/details.mjs +14 -8
  71. package/source/components/host/stylesheet/host.mjs +14 -8
  72. package/source/components/host/stylesheet/overlay.mjs +15 -9
  73. package/source/components/host/stylesheet/toggle-button.mjs +15 -9
  74. package/source/components/host/stylesheet/viewer.mjs +14 -8
  75. package/source/components/host/util.mjs +6 -1
  76. package/source/components/notify/stylesheet/message.mjs +15 -9
  77. package/source/components/notify/stylesheet/notify.mjs +14 -8
  78. package/source/components/state/stylesheet/log.mjs +14 -8
  79. package/source/components/state/stylesheet/state.mjs +14 -8
  80. package/source/components/stylesheet/badge.mjs +14 -8
  81. package/source/components/stylesheet/border.mjs +14 -8
  82. package/source/components/stylesheet/button.mjs +14 -8
  83. package/source/components/stylesheet/card.mjs +14 -8
  84. package/source/components/stylesheet/color.mjs +14 -8
  85. package/source/components/stylesheet/common.mjs +14 -8
  86. package/source/components/stylesheet/control.mjs +14 -8
  87. package/source/components/stylesheet/data-grid.mjs +14 -8
  88. package/source/components/stylesheet/display.mjs +14 -8
  89. package/source/components/stylesheet/floating-ui.mjs +14 -8
  90. package/source/components/stylesheet/form.mjs +14 -8
  91. package/source/components/stylesheet/host.mjs +14 -8
  92. package/source/components/stylesheet/icons.mjs +15 -9
  93. package/source/components/stylesheet/link.mjs +14 -8
  94. package/source/components/stylesheet/normalize.mjs +14 -8
  95. package/source/components/stylesheet/popper.mjs +14 -8
  96. package/source/components/stylesheet/property.mjs +14 -8
  97. package/source/components/stylesheet/ripple.mjs +14 -8
  98. package/source/components/stylesheet/skeleton.mjs +14 -8
  99. package/source/components/stylesheet/space.mjs +14 -8
  100. package/source/components/stylesheet/spinner.mjs +14 -8
  101. package/source/components/stylesheet/table.mjs +14 -8
  102. package/source/components/stylesheet/theme.mjs +14 -8
  103. package/source/components/stylesheet/typography.mjs +14 -8
  104. package/source/components/tree-menu/stylesheet/tree-menu.mjs +14 -8
  105. package/source/data/transformer.mjs +38 -43
  106. package/source/dom/attributes.mjs +5 -5
  107. package/source/dom/customelement.mjs +1 -1
  108. package/source/dom/updater.mjs +14 -5
  109. package/source/dom/util.mjs +42 -0
  110. package/source/i18n/providers/embed.mjs +3 -3
  111. package/source/monster.mjs +5 -0
  112. package/source/text/formatter.mjs +2 -2
  113. package/source/types/noderecursiveiterator.mjs +9 -7
  114. package/source/types/observer.mjs +1 -1
  115. package/source/types/version.mjs +1 -1
  116. package/source/util/sleep.mjs +17 -0
  117. package/test/cases/components/form/button.mjs +2 -1
  118. package/test/cases/components/form/select.mjs +1 -1
  119. package/test/cases/components/form/tree-select.mjs +1 -1
  120. package/test/cases/data/transformer.mjs +2 -2
  121. package/test/cases/dom/updater.mjs +67 -46
  122. package/test/cases/monster.mjs +1 -1
  123. package/test/web/test.html +2 -2
  124. package/test/web/tests.js +18 -13
@@ -177,15 +177,19 @@ describe('DOM', function () {
177
177
  }
178
178
  );
179
179
 
180
+ let promise = u.run();
180
181
 
181
- u.run().then(() => {
182
- done(new Error("should never called!"));
183
- }).catch((e) => {
184
- expect(e).is.instanceOf(Error);
185
- expect(e + "").to.be.equal('Error: the value is not iterable');
186
- done();
187
- })
188
-
182
+ setTimeout(() => {
183
+ promise.then(() => {
184
+ setTimeout(() => {
185
+ done(new Error("should never called!"));
186
+ }, 100);
187
+ }).catch((e) => {
188
+ expect(e).is.instanceOf(Error);
189
+ expect(e + "").to.be.equal('Error: the value is not iterable');
190
+ done();
191
+ })
192
+ }, 100);
189
193
 
190
194
  });
191
195
 
@@ -232,13 +236,15 @@ describe('DOM', function () {
232
236
  );
233
237
 
234
238
  d.run().then(() => {
239
+ setTimeout(() => {
240
+ expect(typeof d).is.equal('object');
241
+ for (let i = 0; i < 6; i++) {
242
+ expect(element).contain.html('<li data-monster-replace="path:a.b.' + i + ' | tojson" data-monster-insert-reference="current-' + i + '">{"i":"' + i + '"}</li>');
243
+ }
235
244
 
236
- expect(typeof d).is.equal('object');
237
- for (let i = 0; i < 6; i++) {
238
- expect(element).contain.html('<li data-monster-replace="path:a.b.' + i + ' | tojson" data-monster-insert-reference="current-' + i + '">{"i":"' + i + '"}</li>');
239
- }
245
+ done();
246
+ }, 100);
240
247
 
241
- done();
242
248
  }).catch(
243
249
  e => {
244
250
  done(new Error(e))
@@ -490,6 +496,7 @@ describe('DOM', function () {
490
496
  it('should add lower hello and HELLOyes!', function (done) {
491
497
  let element = document.getElementById('test1')
492
498
 
499
+
493
500
  let d = new Updater(
494
501
  element,
495
502
  {
@@ -497,24 +504,28 @@ describe('DOM', function () {
497
504
  }
498
505
  );
499
506
 
507
+
500
508
  d.setCallback('myformatter', function (a) {
501
509
  return a + 'yes!'
502
510
  })
503
511
 
504
- setTimeout(() => {
505
- d.run().then(() => {
506
512
 
513
+ d.run().then(() => {
514
+ setTimeout(() => {
507
515
  expect(typeof d).is.equal('object');
508
516
  expect(element).contain.html('<div data-monster-replace="path:text | tolower">hallo</div>');
509
517
  expect(element).contain.html('<div data-monster-replace="path:text | call:myformatter">HALLOyes!</div>');
510
518
  expect(element).contain.html('<div data-monster-replace="static:hello\\ ">hello </div>');
511
519
 
512
520
  return done();
513
- }).catch(
514
- e => {
515
- done(new Error(e))
516
- })
517
- }, 100)
521
+
522
+ }, 100);
523
+
524
+ }).catch(
525
+ e => {
526
+ done(new Error(e))
527
+ })
528
+
518
529
 
519
530
  });
520
531
  });
@@ -546,13 +557,16 @@ describe('DOM', function () {
546
557
 
547
558
 
548
559
  d.run().then(() => {
560
+ setTimeout(() => {
561
+ expect(typeof d).is.equal('object');
562
+ expect(element).contain.html('<div data-monster-insert="myid path:a.b">');
563
+ expect(element).contain.html('<p data-monster-insert="myinnerid path:a.b" data-monster-insert-reference="myid-0">');
564
+ expect(element).contain.html('<span data-monster-replace="path:a.b.0 | tojson" data-monster-insert-reference="myinnerid-0">{"i":"0"}</span>');
565
+
566
+ done();
549
567
 
550
- expect(typeof d).is.equal('object');
551
- expect(element).contain.html('<div data-monster-insert="myid path:a.b">');
552
- expect(element).contain.html('<p data-monster-insert="myinnerid path:a.b" data-monster-insert-reference="myid-0">');
553
- expect(element).contain.html('<span data-monster-replace="path:a.b.0 | tojson" data-monster-insert-reference="myinnerid-0">{"i":"0"}</span>');
568
+ }, 100);
554
569
 
555
- done();
556
570
  }).catch(
557
571
  e => {
558
572
  done(new Error(e))
@@ -608,27 +622,30 @@ describe('DOM', function () {
608
622
 
609
623
  d.run().then(() => {
610
624
 
625
+ setTimeout(() => {
626
+ expect(element).contain.html('<div data-monster-attributes="class path:a.b" class="div-class">');
627
+ expect(element).contain.html('<input data-monster-attributes="value path:a.c" id="input1" value="hello">');
628
+ expect(element).contain.html('<textarea name="textarea" id="textarea" data-monster-attributes="value path:a.textarea" value="test">');
629
+ expect(element).contain.html('<input data-monster-attributes="checked path:a.radio" type="radio" name="radio" value="r1" id="radio" checked="true">');
611
630
 
612
- expect(element).contain.html('<div data-monster-attributes="class path:a.b" class="div-class">');
613
- expect(element).contain.html('<input data-monster-attributes="value path:a.c" id="input1" value="hello">');
614
- expect(element).contain.html('<textarea name="textarea" id="textarea" data-monster-attributes="value path:a.textarea" value="test">');
615
- expect(element).contain.html('<input data-monster-attributes="checked path:a.radio" type="radio" name="radio" value="r1" id="radio" checked="true">');
631
+ expect(text.value, 'text control').to.be.equal(d.getSubject()['a']['c']);
632
+ expect(radio.checked, 'radio control').to.be.equal(true);
633
+ expect(textarea.value, 'textarea control').to.be.equal(d.getSubject()['a']['textarea']);
634
+ expect(select.selectedIndex, 'select control').to.be.equal(1); // [0=>other-value, 1=>value2]
616
635
 
617
- expect(text.value, 'text control').to.be.equal(d.getSubject()['a']['c']);
618
- expect(radio.checked, 'radio control').to.be.equal(true);
619
- expect(textarea.value, 'textarea control').to.be.equal(d.getSubject()['a']['textarea']);
620
- expect(select.selectedIndex, 'select control').to.be.equal(1); // [0=>other-value, 1=>value2]
636
+ let multiselectSelectedOptions = [];
637
+ for (const [index, obj] of Object.entries(multiselect.selectedOptions)) {
638
+ multiselectSelectedOptions.push(obj.value);
639
+ }
621
640
 
622
- let multiselectSelectedOptions = [];
623
- for (const [index, obj] of Object.entries(multiselect.selectedOptions)) {
624
- multiselectSelectedOptions.push(obj.value);
625
- }
626
641
 
642
+ expect(JSON.stringify(multiselectSelectedOptions), 'multiselect control').to.be.equal(JSON.stringify(d.getSubject()['a']['multiselect']));
643
+ expect(checkbox.checked, 'checkbox control').to.be.true;
644
+
645
+ done();
627
646
 
628
- expect(JSON.stringify(multiselectSelectedOptions), 'multiselect control').to.be.equal(JSON.stringify(d.getSubject()['a']['multiselect']));
629
- expect(checkbox.checked, 'checkbox control').to.be.true;
647
+ }, 100);
630
648
 
631
- done();
632
649
  }).catch(
633
650
  e => {
634
651
  done(new Error(e))
@@ -726,14 +743,18 @@ describe('DOM', function () {
726
743
  );
727
744
  setTimeout(() => {
728
745
  d.run().then(() => {
729
- try {
730
- expect(containerElement).contain.html('<div>yeah! <b>Test</b>!</div>');
731
- } catch (e) {
732
- return done(e);
733
- }
746
+
747
+ setTimeout(() => {
748
+
749
+ try {
750
+ expect(containerElement).contain.html('<div>yeah! <b>Test</b>!</div>');
751
+ } catch (e) {
752
+ return done(e);
753
+ }
734
754
 
735
755
 
736
- done()
756
+ done()
757
+ }, 100)
737
758
  })
738
759
  }, 100)
739
760
 
@@ -7,7 +7,7 @@ describe('Monster', function () {
7
7
  let monsterVersion
8
8
 
9
9
  /** don´t touch, replaced by make with package.json version */
10
- monsterVersion = new Version("3.54.0")
10
+ monsterVersion = new Version("3.55.1")
11
11
 
12
12
  let m = getMonsterVersion();
13
13
 
@@ -15,8 +15,8 @@
15
15
  </head>
16
16
  <body>
17
17
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
18
- <h1 style='margin-bottom: 0.1em;'>Monster 4.0.0</h1>
19
- <div id="lastupdate" style='font-size:0.7em'>last update Fr 3. Nov 18:43:13 CET 2023</div>
18
+ <h1 style='margin-bottom: 0.1em;'>Monster 3.54.0</h1>
19
+ <div id="lastupdate" style='font-size:0.7em'>last update Mi 29. Nov 15:34:53 CET 2023</div>
20
20
  </div>
21
21
  <div id="mocha-errors"
22
22
  style="color: red;font-weight: bold;display: flex;align-items: center;justify-content: center;flex-direction: column;margin:20px;"></div>
package/test/web/tests.js CHANGED
@@ -4,6 +4,7 @@ try {
4
4
  try {
5
5
  try {
6
6
  try {
7
+ try {
7
8
  (() => {
8
9
  var __create = Object.create;
9
10
  var __defProp = Object.defineProperty;
@@ -10418,7 +10419,7 @@ try {
10418
10419
  * @since 2.1.0
10419
10420
  */
10420
10421
  static get [instanceSymbol]() {
10421
- return Symbol.for("@schukai/component-form/reload");
10422
+ return Symbol.for("@schukai/monster/components/form/reload");
10422
10423
  }
10423
10424
  /**
10424
10425
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -21606,7 +21607,7 @@ ${key.data.toString("base64")}
21606
21607
  * @since 2.1.0
21607
21608
  */
21608
21609
  static get [instanceSymbol]() {
21609
- return Symbol.for("@schukai/component-form/tabs");
21610
+ return Symbol.for("@schukai/monster/components/form/tabs");
21610
21611
  }
21611
21612
  /**
21612
21613
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -22162,7 +22163,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
22162
22163
  * @since 2.1.0
22163
22164
  */
22164
22165
  static get [instanceSymbol]() {
22165
- return Symbol.for("@schukai/component-form/button@@instance");
22166
+ return Symbol.for("@schukai/monster/components/form/button@@instance");
22166
22167
  }
22167
22168
  /**
22168
22169
  *
@@ -22449,7 +22450,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
22449
22450
  * @since 2.1.0
22450
22451
  */
22451
22452
  static get [instanceSymbol]() {
22452
- return Symbol.for("@schukai/component-form/state-button@@instance");
22453
+ return Symbol.for("@schukai/monster/components/form/state-button@@instance");
22453
22454
  }
22454
22455
  /**
22455
22456
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -25508,7 +25509,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
25508
25509
  * @since 2.1.0
25509
25510
  */
25510
25511
  static get [instanceSymbol]() {
25511
- return Symbol.for("@schukai/component-form/select@@instance");
25512
+ return Symbol.for("@schukai/monster/components/form/select@@instance");
25512
25513
  }
25513
25514
  /**
25514
25515
  * The current selection of the Select
@@ -26122,7 +26123,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
26122
26123
  * @returns {symbol}
26123
26124
  */
26124
26125
  static get [instanceSymbol]() {
26125
- return Symbol.for("@schukai/component-form/popper@@instance");
26126
+ return Symbol.for("@schukai/monster/components/form/popper@@instance");
26126
26127
  }
26127
26128
  /**
26128
26129
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -26373,7 +26374,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
26373
26374
  * @since 2.1.0
26374
26375
  */
26375
26376
  static get [instanceSymbol]() {
26376
- return Symbol.for("@schukai/component-form/popper-button@@instance");
26377
+ return Symbol.for("@schukai/monster/components/form/popper-button@@instance");
26377
26378
  }
26378
26379
  /**
26379
26380
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -26663,7 +26664,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
26663
26664
  * @since 2.1.0
26664
26665
  */
26665
26666
  static get [instanceSymbol]() {
26666
- return Symbol.for("@schukai/component-form/message-state-button@@instance");
26667
+ return Symbol.for("@schukai/monster/components/form/message-state-button@@instance");
26667
26668
  }
26668
26669
  /**
26669
26670
  *
@@ -26994,7 +26995,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
26994
26995
  * @since 2.1.0
26995
26996
  */
26996
26997
  static get [instanceSymbol]() {
26997
- return Symbol.for("@schukai/component-form/confirm-button@@instance");
26998
+ return Symbol.for("@schukai/monster/components/form/confirm-button@@instance");
26998
26999
  }
26999
27000
  /**
27000
27001
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -28552,7 +28553,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
28552
28553
  init_customelement();
28553
28554
  init_form();
28554
28555
  ATTRIBUTE_FORM_DATASOURCE_ACTION = `${ATTRIBUTE_PREFIX}datasource-action`;
28555
- formDataSymbol = Symbol.for("@schukai/component-form/form@@formdata");
28556
+ formDataSymbol = Symbol.for("@schukai/monster/components/form/form@@formdata");
28556
28557
  formDataUpdaterSymbol = Symbol.for(
28557
28558
  "@schukai/component-form/form@@formdata-updater-link"
28558
28559
  );
@@ -28578,7 +28579,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
28578
28579
  * @since 2.1.0
28579
28580
  */
28580
28581
  static get [instanceSymbol]() {
28581
- return Symbol.for("@schukai/component-form/form");
28582
+ return Symbol.for("@schukai/monster/components/form/form");
28582
28583
  }
28583
28584
  /**
28584
28585
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -29388,7 +29389,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
29388
29389
  * @since 2.1.0
29389
29390
  */
29390
29391
  static get [instanceSymbol]() {
29391
- return Symbol.for("@schukai/component-form/tree-select@@instance");
29392
+ return Symbol.for("@schukai/monster/components/form/tree-select@@instance");
29392
29393
  }
29393
29394
  /**
29394
29395
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -29614,7 +29615,7 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
29614
29615
  * @since 2.1.0
29615
29616
  */
29616
29617
  static get [instanceSymbol]() {
29617
- return Symbol.for("@schukai/component-form/template");
29618
+ return Symbol.for("@schukai/monster/components/form/template");
29618
29619
  }
29619
29620
  /**
29620
29621
  * To set the options via the html tag the attribute `data-monster-options` must be used.
@@ -48098,3 +48099,7 @@ document.getElementById('mocha-stats').style.backgroundColor = 'red';
48098
48099
  document.getElementById('mocha-errors').insertAdjacentHTML('afterbegin', e );
48099
48100
  document.getElementById('mocha-stats').style.backgroundColor = 'red';
48100
48101
  }
48102
+ } catch (e) {
48103
+ document.getElementById('mocha-errors').insertAdjacentHTML('afterbegin', e );
48104
+ document.getElementById('mocha-stats').style.backgroundColor = 'red';
48105
+ }