@mjhls/mjh-framework 1.0.1022 → 1.0.1023-blanktagremoval-v1

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 (184) hide show
  1. package/README.md +168 -168
  2. package/dist/cjs/AD300x250.js +1 -1
  3. package/dist/cjs/AD300x250x600.js +1 -1
  4. package/dist/cjs/AD728x90.js +1 -1
  5. package/dist/cjs/ADFloatingFooter.js +1 -1
  6. package/dist/cjs/ADGutter.js +1 -1
  7. package/dist/cjs/{ADInfeed-5dabd71d.js → ADInfeed-89488c41.js} +1 -1
  8. package/dist/cjs/ADSkyscraper.js +1 -1
  9. package/dist/cjs/ADSponsoredResources.js +1 -1
  10. package/dist/cjs/ADWebcast.js +1 -1
  11. package/dist/cjs/ADWelcome.js +1 -1
  12. package/dist/cjs/{ADlgInfeed-1766ce0a.js → ADlgInfeed-9d62050b.js} +1 -1
  13. package/dist/cjs/AdSlot.js +1 -1
  14. package/dist/cjs/AdSlotsProvider.js +1 -1
  15. package/dist/cjs/AlgoliaSearch.js +1 -1
  16. package/dist/cjs/ArticleCarousel.js +1 -1
  17. package/dist/cjs/ArticleProgramLandingPage.js +3 -3
  18. package/dist/cjs/ArticleSeriesLandingPage.js +3 -3
  19. package/dist/cjs/ArticleSeriesListing.js +1 -1
  20. package/dist/cjs/Auth.js +1493 -11
  21. package/dist/cjs/AuthWrapper.js +1484 -294
  22. package/dist/cjs/CEDeckSupabase.js +2 -2
  23. package/dist/cjs/CMEDeck.js +1 -1
  24. package/dist/cjs/Column2.js +4 -2
  25. package/dist/cjs/Column3.js +1 -1
  26. package/dist/cjs/ConferenceArticleCard.js +15 -15
  27. package/dist/cjs/ContentCardPaginated.js +3 -3
  28. package/dist/cjs/DeckContent.js +11 -11
  29. package/dist/cjs/DeckQueue.js +2 -2
  30. package/dist/cjs/DeckQueuePaginated.js +2 -2
  31. package/dist/cjs/EventsDeck.js +18 -18
  32. package/dist/cjs/ExternalResources.js +6 -6
  33. package/dist/cjs/Feature.js +1 -1
  34. package/dist/cjs/GridContent.js +4 -4
  35. package/dist/cjs/GridContentPaginated.js +4 -4
  36. package/dist/cjs/GridHero.js +1 -1
  37. package/dist/cjs/HamMagazine.js +52 -50
  38. package/dist/cjs/HealthCareProfessionalModal.js +1 -1
  39. package/dist/cjs/Hero.js +1 -1
  40. package/dist/cjs/HorizontalArticleListing.js +3 -3
  41. package/dist/cjs/{ImageSlider-fd0cc91c.js → ImageSlider-50807a77.js} +83 -145
  42. package/dist/cjs/IssueLanding.js +34 -34
  43. package/dist/cjs/KMTracker.js +15 -15
  44. package/dist/cjs/LeftNav.js +14 -15
  45. package/dist/cjs/MasterDeck.js +11 -11
  46. package/dist/cjs/MasterDeckPaginated.js +11 -11
  47. package/dist/cjs/{MediaSeriesCard-ae205d40.js → MediaSeriesCard-de7f7fcc.js} +2 -2
  48. package/dist/cjs/MediaSeriesLanding.js +13 -13
  49. package/dist/cjs/MediaSeriesLandingPaginated.js +13 -13
  50. package/dist/cjs/NavDvm.js +30 -28
  51. package/dist/cjs/{NavFooter-257b5318.js → NavFooter-b37e3eed.js} +4 -3
  52. package/dist/cjs/NavMagazine.js +55 -53
  53. package/dist/cjs/NavNative.js +55 -55
  54. package/dist/cjs/OncliveLargeHero.js +1 -1
  55. package/dist/cjs/PartnerDetailListing.js +40 -28
  56. package/dist/cjs/PartnerDetailListingPaginated.js +38 -32
  57. package/dist/cjs/PodcastsLanding.js +6 -6
  58. package/dist/cjs/PubSection.js +4 -4
  59. package/dist/cjs/PublicationLanding.js +26 -26
  60. package/dist/cjs/QueueDeckExpanded.js +4 -4
  61. package/dist/cjs/QueueDeckExpandedPaginated.js +4 -4
  62. package/dist/cjs/RelatedContent.js +28 -28
  63. package/dist/cjs/RelatedTopicsDropdown.js +10 -10
  64. package/dist/cjs/SeriesListingDeck.js +2 -2
  65. package/dist/cjs/{SeriesSlider-0b2a2775.js → SeriesSlider-fc6dd07d.js} +5 -5
  66. package/dist/cjs/SideFooter.js +11 -9
  67. package/dist/cjs/{SocialSearchComponent-6924a853.js → SocialSearchComponent-15e03760.js} +2 -2
  68. package/dist/cjs/TaxonomyCard.js +8 -8
  69. package/dist/cjs/TaxonomyDescription.js +16 -17
  70. package/dist/cjs/TemplateNormal.js +4 -4
  71. package/dist/cjs/ThumbnailCard.js +1 -1
  72. package/dist/cjs/{Tooltip-980a1d1a.js → Tooltip-8011d690.js} +291 -116
  73. package/dist/cjs/Ustream.js +1 -1
  74. package/dist/cjs/VideoProgramLandingPage.js +3 -3
  75. package/dist/cjs/VideoSeriesCard.js +1 -1
  76. package/dist/cjs/VideoSeriesLandingPage.js +3 -3
  77. package/dist/cjs/VideoSeriesListing.js +1 -1
  78. package/dist/cjs/View.js +8 -8
  79. package/dist/cjs/YahooHero.js +1 -1
  80. package/dist/cjs/YoutubeGroup.js +5 -5
  81. package/dist/cjs/defineProperty-19580e93.js +71 -0
  82. package/dist/cjs/{entities-3f9d0f2f.js → entities-df1aed86.js} +4 -0
  83. package/dist/cjs/getRelatedArticle.js +1 -1
  84. package/dist/cjs/getSerializers.js +3 -3
  85. package/dist/cjs/{getTargeting-4439c99d.js → getTargeting-ba942d9a.js} +9 -9
  86. package/dist/cjs/getTargeting.js +1 -1
  87. package/dist/cjs/{index-b78ce702.js → index-3111bc4e.js} +2 -2
  88. package/dist/cjs/{index-bd6c9f56.js → index-3cd60d26.js} +11 -11
  89. package/dist/cjs/{index-8041a4eb.js → index-50be6759.js} +15 -9
  90. package/dist/cjs/{index.esm-91e651b0.js → index.esm-bb54403e.js} +8 -7
  91. package/dist/cjs/index.js +14 -14
  92. package/dist/cjs/{main-47be4f9f.js → main-ae8472f3.js} +4 -9
  93. package/dist/esm/AD300x250.js +1 -1
  94. package/dist/esm/AD300x250x600.js +1 -1
  95. package/dist/esm/AD728x90.js +1 -1
  96. package/dist/esm/ADFloatingFooter.js +1 -1
  97. package/dist/esm/ADGutter.js +1 -1
  98. package/dist/esm/{ADInfeed-cfc4f7b2.js → ADInfeed-fb3b056f.js} +1 -1
  99. package/dist/esm/ADSkyscraper.js +1 -1
  100. package/dist/esm/ADSponsoredResources.js +1 -1
  101. package/dist/esm/ADWebcast.js +1 -1
  102. package/dist/esm/ADWelcome.js +1 -1
  103. package/dist/esm/{ADlgInfeed-74c975b9.js → ADlgInfeed-29f7b84c.js} +1 -1
  104. package/dist/esm/AdSlot.js +1 -1
  105. package/dist/esm/AdSlotsProvider.js +1 -1
  106. package/dist/esm/AlgoliaSearch.js +1 -1
  107. package/dist/esm/ArticleCarousel.js +1 -1
  108. package/dist/esm/ArticleProgramLandingPage.js +3 -3
  109. package/dist/esm/ArticleSeriesLandingPage.js +3 -3
  110. package/dist/esm/ArticleSeriesListing.js +1 -1
  111. package/dist/esm/Auth.js +1493 -10
  112. package/dist/esm/AuthWrapper.js +1478 -288
  113. package/dist/esm/CEDeckSupabase.js +2 -2
  114. package/dist/esm/CMEDeck.js +1 -1
  115. package/dist/esm/Column2.js +4 -2
  116. package/dist/esm/Column3.js +1 -1
  117. package/dist/esm/ConferenceArticleCard.js +15 -15
  118. package/dist/esm/ContentCardPaginated.js +3 -3
  119. package/dist/esm/DeckContent.js +11 -11
  120. package/dist/esm/DeckQueue.js +2 -2
  121. package/dist/esm/DeckQueuePaginated.js +2 -2
  122. package/dist/esm/EventsDeck.js +18 -18
  123. package/dist/esm/ExternalResources.js +6 -6
  124. package/dist/esm/Feature.js +1 -1
  125. package/dist/esm/GridContent.js +4 -4
  126. package/dist/esm/GridContentPaginated.js +4 -4
  127. package/dist/esm/GridHero.js +1 -1
  128. package/dist/esm/HamMagazine.js +52 -50
  129. package/dist/esm/HealthCareProfessionalModal.js +1 -1
  130. package/dist/esm/Hero.js +1 -1
  131. package/dist/esm/HorizontalArticleListing.js +3 -3
  132. package/dist/esm/{ImageSlider-c3a57384.js → ImageSlider-cdb57d30.js} +1 -63
  133. package/dist/esm/IssueLanding.js +34 -34
  134. package/dist/esm/KMTracker.js +15 -15
  135. package/dist/esm/LeftNav.js +14 -15
  136. package/dist/esm/MasterDeck.js +11 -11
  137. package/dist/esm/MasterDeckPaginated.js +11 -11
  138. package/dist/esm/{MediaSeriesCard-957b218d.js → MediaSeriesCard-8ec69f60.js} +2 -2
  139. package/dist/esm/MediaSeriesLanding.js +13 -13
  140. package/dist/esm/MediaSeriesLandingPaginated.js +13 -13
  141. package/dist/esm/NavDvm.js +30 -28
  142. package/dist/esm/{NavFooter-27a16f65.js → NavFooter-37c5eea2.js} +4 -3
  143. package/dist/esm/NavMagazine.js +55 -53
  144. package/dist/esm/NavNative.js +55 -55
  145. package/dist/esm/OncliveLargeHero.js +1 -1
  146. package/dist/esm/PartnerDetailListing.js +40 -28
  147. package/dist/esm/PartnerDetailListingPaginated.js +38 -32
  148. package/dist/esm/PodcastsLanding.js +6 -6
  149. package/dist/esm/PubSection.js +4 -4
  150. package/dist/esm/PublicationLanding.js +26 -26
  151. package/dist/esm/QueueDeckExpanded.js +4 -4
  152. package/dist/esm/QueueDeckExpandedPaginated.js +4 -4
  153. package/dist/esm/RelatedContent.js +28 -28
  154. package/dist/esm/RelatedTopicsDropdown.js +10 -10
  155. package/dist/esm/SeriesListingDeck.js +2 -2
  156. package/dist/esm/{SeriesSlider-3f4d6012.js → SeriesSlider-771918ce.js} +5 -5
  157. package/dist/esm/SideFooter.js +11 -9
  158. package/dist/esm/{SocialSearchComponent-2451acd2.js → SocialSearchComponent-b102181b.js} +2 -2
  159. package/dist/esm/TaxonomyCard.js +8 -8
  160. package/dist/esm/TaxonomyDescription.js +16 -17
  161. package/dist/esm/TemplateNormal.js +4 -4
  162. package/dist/esm/ThumbnailCard.js +1 -1
  163. package/dist/esm/{Tooltip-51957f7c.js → Tooltip-2cdd0895.js} +291 -116
  164. package/dist/esm/Ustream.js +1 -1
  165. package/dist/esm/VideoProgramLandingPage.js +3 -3
  166. package/dist/esm/VideoSeriesCard.js +1 -1
  167. package/dist/esm/VideoSeriesLandingPage.js +3 -3
  168. package/dist/esm/VideoSeriesListing.js +1 -1
  169. package/dist/esm/View.js +8 -8
  170. package/dist/esm/YahooHero.js +1 -1
  171. package/dist/esm/YoutubeGroup.js +5 -5
  172. package/dist/esm/defineProperty-e8022d1e.js +66 -0
  173. package/dist/esm/{entities-932b50cf.js → entities-6d9154b4.js} +4 -0
  174. package/dist/esm/getRelatedArticle.js +1 -1
  175. package/dist/esm/getSerializers.js +3 -3
  176. package/dist/esm/{getTargeting-c6884f34.js → getTargeting-9bd28724.js} +9 -9
  177. package/dist/esm/getTargeting.js +1 -1
  178. package/dist/esm/{index-db3bb315.js → index-0a63f9a3.js} +11 -11
  179. package/dist/esm/{index-67e1773f.js → index-98ca9cec.js} +15 -9
  180. package/dist/esm/{index-f2f5b752.js → index-a71a6cc7.js} +2 -2
  181. package/dist/esm/{index.esm-06bf63a3.js → index.esm-8639823a.js} +8 -7
  182. package/dist/esm/index.js +14 -14
  183. package/dist/esm/{main-f97773b2.js → main-754d4992.js} +4 -9
  184. package/package.json +116 -116
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-8041a4eb.js');
3
+ var index = require('./index-50be6759.js');
4
4
  var React = require('react');
5
5
  var PropTypes = require('prop-types');
6
6
  var ReactDOM = require('react-dom');
@@ -178,15 +178,33 @@ var AccordionToggle = React__default["default"].forwardRef(function (_ref, ref)
178
178
  }, props), children);
179
179
  });
180
180
 
181
+ /**
182
+ * Returns the owner document of a given element.
183
+ *
184
+ * @param node the element
185
+ */
181
186
  function ownerDocument$1(node) {
182
187
  return node && node.ownerDocument || document;
183
188
  }
184
189
 
190
+ /**
191
+ * Returns the owner window of a given element.
192
+ *
193
+ * @param node the element
194
+ */
195
+
185
196
  function ownerWindow(node) {
186
197
  var doc = ownerDocument$1(node);
187
198
  return doc && doc.defaultView || window;
188
199
  }
189
200
 
201
+ /**
202
+ * Returns one or all computed style properties of an element.
203
+ *
204
+ * @param node the element
205
+ * @param psuedoElement the style property
206
+ */
207
+
190
208
  function getComputedStyle$2(node, psuedoElement) {
191
209
  return ownerWindow(node).getComputedStyle(node, psuedoElement);
192
210
  }
@@ -267,6 +285,11 @@ try {
267
285
 
268
286
  /**
269
287
  * An `addEventListener` ponyfill, supports the `once` option
288
+ *
289
+ * @param node the element
290
+ * @param eventName the event name
291
+ * @param handle the handler
292
+ * @param options event options
270
293
  */
271
294
  function addEventListener(node, eventName, handler, options) {
272
295
  if (options && typeof options !== 'boolean' && !onceSupported) {
@@ -289,6 +312,14 @@ function addEventListener(node, eventName, handler, options) {
289
312
  node.addEventListener(eventName, handler, options);
290
313
  }
291
314
 
315
+ /**
316
+ * A `removeEventListener` ponyfill
317
+ *
318
+ * @param node the element
319
+ * @param eventName the event name
320
+ * @param handle the handler
321
+ * @param options event options
322
+ */
292
323
  function removeEventListener(node, eventName, handler, options) {
293
324
  var capture = options && typeof options !== 'boolean' ? options.capture : options;
294
325
  node.removeEventListener(eventName, handler, capture);
@@ -305,18 +336,36 @@ function listen(node, eventName, handler, options) {
305
336
  };
306
337
  }
307
338
 
339
+ /**
340
+ * Triggers an event on a given element.
341
+ *
342
+ * @param node the element
343
+ * @param eventName the event name to trigger
344
+ * @param bubbles whether the event should bubble up
345
+ * @param cancelable whether the event should be cancelable
346
+ */
347
+ function triggerEvent(node, eventName, bubbles, cancelable) {
348
+ if (bubbles === void 0) {
349
+ bubbles = false;
350
+ }
351
+
352
+ if (cancelable === void 0) {
353
+ cancelable = true;
354
+ }
355
+
356
+ if (node) {
357
+ var event = document.createEvent('HTMLEvents');
358
+ event.initEvent(eventName, bubbles, cancelable);
359
+ node.dispatchEvent(event);
360
+ }
361
+ }
362
+
308
363
  function parseDuration(node) {
309
364
  var str = style(node, 'transitionDuration') || '';
310
365
  var mult = str.indexOf('ms') === -1 ? 1000 : 1;
311
366
  return parseFloat(str) * mult;
312
367
  }
313
368
 
314
- function triggerTransitionEnd(element) {
315
- var evt = document.createEvent('HTMLEvents');
316
- evt.initEvent('transitionend', true, true);
317
- element.dispatchEvent(evt);
318
- }
319
-
320
369
  function emulateTransitionEnd(element, duration, padding) {
321
370
  if (padding === void 0) {
322
371
  padding = 5;
@@ -324,7 +373,7 @@ function emulateTransitionEnd(element, duration, padding) {
324
373
 
325
374
  var called = false;
326
375
  var handle = setTimeout(function () {
327
- if (!called) triggerTransitionEnd(element);
376
+ if (!called) triggerEvent(element, 'transitionend', true);
328
377
  }, duration + padding);
329
378
  var remove = listen(element, 'transitionend', function () {
330
379
  called = true;
@@ -782,7 +831,10 @@ Transition.propTypes = process.env.NODE_ENV !== "production" ? {
782
831
  * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).
783
832
  */
784
833
  nodeRef: PropTypes__default["default"].shape({
785
- current: typeof Element === 'undefined' ? PropTypes__default["default"].any : PropTypes__default["default"].instanceOf(Element)
834
+ current: typeof Element === 'undefined' ? PropTypes__default["default"].any : function (propValue, key, componentName, location, propFullName, secret) {
835
+ var value = propValue[key];
836
+ return PropTypes__default["default"].instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);
837
+ }
786
838
  }),
787
839
 
788
840
  /**
@@ -2414,6 +2466,13 @@ function (_ref, ref) {
2414
2466
  Col.displayName = 'Col';
2415
2467
 
2416
2468
  var matchesImpl;
2469
+ /**
2470
+ * Checks if a given element matches a selector.
2471
+ *
2472
+ * @param node the element
2473
+ * @param selector the selector
2474
+ */
2475
+
2417
2476
  function matches(node, selector) {
2418
2477
  if (!matchesImpl) {
2419
2478
  var body = document.body;
@@ -2428,6 +2487,13 @@ function matches(node, selector) {
2428
2487
  }
2429
2488
 
2430
2489
  var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);
2490
+ /**
2491
+ * Runs `querySelectorAll` on a given element.
2492
+ *
2493
+ * @param element the element
2494
+ * @param selector the selector
2495
+ */
2496
+
2431
2497
  function qsa(element, selector) {
2432
2498
  return toArray(element.querySelectorAll(selector));
2433
2499
  }
@@ -2561,45 +2627,6 @@ function getBasePlacement(placement) {
2561
2627
  return placement.split('-')[0];
2562
2628
  }
2563
2629
 
2564
- function getBoundingClientRect(element) {
2565
- var rect = element.getBoundingClientRect();
2566
- return {
2567
- width: rect.width,
2568
- height: rect.height,
2569
- top: rect.top,
2570
- right: rect.right,
2571
- bottom: rect.bottom,
2572
- left: rect.left,
2573
- x: rect.left,
2574
- y: rect.top
2575
- };
2576
- }
2577
-
2578
- // means it doesn't take into account transforms.
2579
-
2580
- function getLayoutRect(element) {
2581
- var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
2582
- // Fixes https://github.com/popperjs/popper-core/issues/1223
2583
-
2584
- var width = element.offsetWidth;
2585
- var height = element.offsetHeight;
2586
-
2587
- if (Math.abs(clientRect.width - width) <= 1) {
2588
- width = clientRect.width;
2589
- }
2590
-
2591
- if (Math.abs(clientRect.height - height) <= 1) {
2592
- height = clientRect.height;
2593
- }
2594
-
2595
- return {
2596
- x: element.offsetLeft,
2597
- y: element.offsetTop,
2598
- width: width,
2599
- height: height
2600
- };
2601
- }
2602
-
2603
2630
  function getWindow(node) {
2604
2631
  if (node == null) {
2605
2632
  return window;
@@ -2633,6 +2660,70 @@ function isShadowRoot(node) {
2633
2660
  return node instanceof OwnElement || node instanceof ShadowRoot;
2634
2661
  }
2635
2662
 
2663
+ var max = Math.max;
2664
+ var min = Math.min;
2665
+ var round = Math.round;
2666
+
2667
+ function getBoundingClientRect(element, includeScale) {
2668
+ if (includeScale === void 0) {
2669
+ includeScale = false;
2670
+ }
2671
+
2672
+ var rect = element.getBoundingClientRect();
2673
+ var scaleX = 1;
2674
+ var scaleY = 1;
2675
+
2676
+ if (isHTMLElement(element) && includeScale) {
2677
+ var offsetHeight = element.offsetHeight;
2678
+ var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale
2679
+ // Fallback to 1 in case both values are `0`
2680
+
2681
+ if (offsetWidth > 0) {
2682
+ scaleX = round(rect.width) / offsetWidth || 1;
2683
+ }
2684
+
2685
+ if (offsetHeight > 0) {
2686
+ scaleY = round(rect.height) / offsetHeight || 1;
2687
+ }
2688
+ }
2689
+
2690
+ return {
2691
+ width: rect.width / scaleX,
2692
+ height: rect.height / scaleY,
2693
+ top: rect.top / scaleY,
2694
+ right: rect.right / scaleX,
2695
+ bottom: rect.bottom / scaleY,
2696
+ left: rect.left / scaleX,
2697
+ x: rect.left / scaleX,
2698
+ y: rect.top / scaleY
2699
+ };
2700
+ }
2701
+
2702
+ // means it doesn't take into account transforms.
2703
+
2704
+ function getLayoutRect(element) {
2705
+ var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
2706
+ // Fixes https://github.com/popperjs/popper-core/issues/1223
2707
+
2708
+ var width = element.offsetWidth;
2709
+ var height = element.offsetHeight;
2710
+
2711
+ if (Math.abs(clientRect.width - width) <= 1) {
2712
+ width = clientRect.width;
2713
+ }
2714
+
2715
+ if (Math.abs(clientRect.height - height) <= 1) {
2716
+ height = clientRect.height;
2717
+ }
2718
+
2719
+ return {
2720
+ x: element.offsetLeft,
2721
+ y: element.offsetTop,
2722
+ width: width,
2723
+ height: height
2724
+ };
2725
+ }
2726
+
2636
2727
  function contains$1(parent, child) {
2637
2728
  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
2638
2729
 
@@ -2753,13 +2844,13 @@ function getMainAxisFromPlacement(placement) {
2753
2844
  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
2754
2845
  }
2755
2846
 
2756
- var max = Math.max;
2757
- var min = Math.min;
2758
- var round = Math.round;
2759
-
2760
2847
  function within(min$1, value, max$1) {
2761
2848
  return max(min$1, min(value, max$1));
2762
2849
  }
2850
+ function withinMaxClamp(min, value, max) {
2851
+ var v = within(min, value, max);
2852
+ return v > max ? max : v;
2853
+ }
2763
2854
 
2764
2855
  function getFreshSideObject() {
2765
2856
  return {
@@ -2872,6 +2963,10 @@ var arrow$1 = {
2872
2963
  requiresIfExists: ['preventOverflow']
2873
2964
  };
2874
2965
 
2966
+ function getVariation(placement) {
2967
+ return placement.split('-')[1];
2968
+ }
2969
+
2875
2970
  var unsetSides = {
2876
2971
  top: 'auto',
2877
2972
  right: 'auto',
@@ -2887,8 +2982,8 @@ function roundOffsetsByDPR(_ref) {
2887
2982
  var win = window;
2888
2983
  var dpr = win.devicePixelRatio || 1;
2889
2984
  return {
2890
- x: round(round(x * dpr) / dpr) || 0,
2891
- y: round(round(y * dpr) / dpr) || 0
2985
+ x: round(x * dpr) / dpr || 0,
2986
+ y: round(y * dpr) / dpr || 0
2892
2987
  };
2893
2988
  }
2894
2989
 
@@ -2898,18 +2993,28 @@ function mapToStyles(_ref2) {
2898
2993
  var popper = _ref2.popper,
2899
2994
  popperRect = _ref2.popperRect,
2900
2995
  placement = _ref2.placement,
2996
+ variation = _ref2.variation,
2901
2997
  offsets = _ref2.offsets,
2902
2998
  position = _ref2.position,
2903
2999
  gpuAcceleration = _ref2.gpuAcceleration,
2904
3000
  adaptive = _ref2.adaptive,
2905
- roundOffsets = _ref2.roundOffsets;
2906
-
2907
- var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,
2908
- _ref3$x = _ref3.x,
2909
- x = _ref3$x === void 0 ? 0 : _ref3$x,
2910
- _ref3$y = _ref3.y,
2911
- y = _ref3$y === void 0 ? 0 : _ref3$y;
3001
+ roundOffsets = _ref2.roundOffsets,
3002
+ isFixed = _ref2.isFixed;
3003
+ var _offsets$x = offsets.x,
3004
+ x = _offsets$x === void 0 ? 0 : _offsets$x,
3005
+ _offsets$y = offsets.y,
3006
+ y = _offsets$y === void 0 ? 0 : _offsets$y;
3007
+
3008
+ var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
3009
+ x: x,
3010
+ y: y
3011
+ }) : {
3012
+ x: x,
3013
+ y: y
3014
+ };
2912
3015
 
3016
+ x = _ref3.x;
3017
+ y = _ref3.y;
2913
3018
  var hasX = offsets.hasOwnProperty('x');
2914
3019
  var hasY = offsets.hasOwnProperty('y');
2915
3020
  var sideX = left;
@@ -2924,7 +3029,7 @@ function mapToStyles(_ref2) {
2924
3029
  if (offsetParent === getWindow(popper)) {
2925
3030
  offsetParent = getDocumentElement(popper);
2926
3031
 
2927
- if (getComputedStyle$1(offsetParent).position !== 'static') {
3032
+ if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {
2928
3033
  heightProp = 'scrollHeight';
2929
3034
  widthProp = 'scrollWidth';
2930
3035
  }
@@ -2933,17 +3038,19 @@ function mapToStyles(_ref2) {
2933
3038
 
2934
3039
  offsetParent = offsetParent;
2935
3040
 
2936
- if (placement === top) {
2937
- sideY = bottom; // $FlowFixMe[prop-missing]
2938
-
2939
- y -= offsetParent[heightProp] - popperRect.height;
3041
+ if (placement === top || (placement === left || placement === right) && variation === end) {
3042
+ sideY = bottom;
3043
+ var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
3044
+ offsetParent[heightProp];
3045
+ y -= offsetY - popperRect.height;
2940
3046
  y *= gpuAcceleration ? 1 : -1;
2941
3047
  }
2942
3048
 
2943
- if (placement === left) {
2944
- sideX = right; // $FlowFixMe[prop-missing]
2945
-
2946
- x -= offsetParent[widthProp] - popperRect.width;
3049
+ if (placement === left || (placement === top || placement === bottom) && variation === end) {
3050
+ sideX = right;
3051
+ var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
3052
+ offsetParent[widthProp];
3053
+ x -= offsetX - popperRect.width;
2947
3054
  x *= gpuAcceleration ? 1 : -1;
2948
3055
  }
2949
3056
  }
@@ -2952,18 +3059,29 @@ function mapToStyles(_ref2) {
2952
3059
  position: position
2953
3060
  }, adaptive && unsetSides);
2954
3061
 
3062
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
3063
+ x: x,
3064
+ y: y
3065
+ }) : {
3066
+ x: x,
3067
+ y: y
3068
+ };
3069
+
3070
+ x = _ref4.x;
3071
+ y = _ref4.y;
3072
+
2955
3073
  if (gpuAcceleration) {
2956
3074
  var _Object$assign;
2957
3075
 
2958
- return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
3076
+ return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
2959
3077
  }
2960
3078
 
2961
3079
  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
2962
3080
  }
2963
3081
 
2964
- function computeStyles(_ref4) {
2965
- var state = _ref4.state,
2966
- options = _ref4.options;
3082
+ function computeStyles(_ref5) {
3083
+ var state = _ref5.state,
3084
+ options = _ref5.options;
2967
3085
  var _options$gpuAccelerat = options.gpuAcceleration,
2968
3086
  gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
2969
3087
  _options$adaptive = options.adaptive,
@@ -2983,9 +3101,11 @@ function computeStyles(_ref4) {
2983
3101
 
2984
3102
  var commonStyles = {
2985
3103
  placement: getBasePlacement(state.placement),
3104
+ variation: getVariation(state.placement),
2986
3105
  popper: state.elements.popper,
2987
3106
  popperRect: state.rects.popper,
2988
- gpuAcceleration: gpuAcceleration
3107
+ gpuAcceleration: gpuAcceleration,
3108
+ isFixed: state.options.strategy === 'fixed'
2989
3109
  };
2990
3110
 
2991
3111
  if (state.modifiersData.popperOffsets != null) {
@@ -3243,7 +3363,7 @@ function getInnerBoundingClientRect(element) {
3243
3363
  }
3244
3364
 
3245
3365
  function getClientRectFromMixedType(element, clippingParent) {
3246
- return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
3366
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
3247
3367
  } // A "clipping parent" is an overflowable container with the characteristic of
3248
3368
  // clipping (or hiding) overflowing elements with a position different from
3249
3369
  // `initial`
@@ -3285,10 +3405,6 @@ function getClippingRect(element, boundary, rootBoundary) {
3285
3405
  return clippingRect;
3286
3406
  }
3287
3407
 
3288
- function getVariation(placement) {
3289
- return placement.split('-')[1];
3290
- }
3291
-
3292
3408
  function computeOffsets(_ref) {
3293
3409
  var reference = _ref.reference,
3294
3410
  element = _ref.element,
@@ -3374,11 +3490,10 @@ function detectOverflow(state, options) {
3374
3490
  padding = _options$padding === void 0 ? 0 : _options$padding;
3375
3491
  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
3376
3492
  var altContext = elementContext === popper ? reference : popper;
3377
- var referenceElement = state.elements.reference;
3378
3493
  var popperRect = state.rects.popper;
3379
3494
  var element = state.elements[altBoundary ? altContext : elementContext];
3380
3495
  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
3381
- var referenceClientRect = getBoundingClientRect(referenceElement);
3496
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
3382
3497
  var popperOffsets = computeOffsets({
3383
3498
  reference: referenceClientRect,
3384
3499
  element: popperRect,
@@ -3765,6 +3880,14 @@ function preventOverflow(_ref) {
3765
3880
  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
3766
3881
  placement: state.placement
3767
3882
  })) : tetherOffset;
3883
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
3884
+ mainAxis: tetherOffsetValue,
3885
+ altAxis: tetherOffsetValue
3886
+ } : Object.assign({
3887
+ mainAxis: 0,
3888
+ altAxis: 0
3889
+ }, tetherOffsetValue);
3890
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
3768
3891
  var data = {
3769
3892
  x: 0,
3770
3893
  y: 0
@@ -3774,13 +3897,15 @@ function preventOverflow(_ref) {
3774
3897
  return;
3775
3898
  }
3776
3899
 
3777
- if (checkMainAxis || checkAltAxis) {
3900
+ if (checkMainAxis) {
3901
+ var _offsetModifierState$;
3902
+
3778
3903
  var mainSide = mainAxis === 'y' ? top : left;
3779
3904
  var altSide = mainAxis === 'y' ? bottom : right;
3780
3905
  var len = mainAxis === 'y' ? 'height' : 'width';
3781
3906
  var offset = popperOffsets[mainAxis];
3782
- var min$1 = popperOffsets[mainAxis] + overflow[mainSide];
3783
- var max$1 = popperOffsets[mainAxis] - overflow[altSide];
3907
+ var min$1 = offset + overflow[mainSide];
3908
+ var max$1 = offset - overflow[altSide];
3784
3909
  var additive = tether ? -popperRect[len] / 2 : 0;
3785
3910
  var minLen = variation === start ? referenceRect[len] : popperRect[len];
3786
3911
  var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
@@ -3800,36 +3925,45 @@ function preventOverflow(_ref) {
3800
3925
  // width or height)
3801
3926
 
3802
3927
  var arrowLen = within(0, referenceRect[len], arrowRect[len]);
3803
- var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;
3804
- var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;
3928
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
3929
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
3805
3930
  var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
3806
3931
  var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
3807
- var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;
3808
- var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;
3809
- var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;
3932
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
3933
+ var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
3934
+ var tetherMax = offset + maxOffset - offsetModifierValue;
3935
+ var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
3936
+ popperOffsets[mainAxis] = preventedOffset;
3937
+ data[mainAxis] = preventedOffset - offset;
3938
+ }
3810
3939
 
3811
- if (checkMainAxis) {
3812
- var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
3813
- popperOffsets[mainAxis] = preventedOffset;
3814
- data[mainAxis] = preventedOffset - offset;
3815
- }
3940
+ if (checkAltAxis) {
3941
+ var _offsetModifierState$2;
3816
3942
 
3817
- if (checkAltAxis) {
3818
- var _mainSide = mainAxis === 'x' ? top : left;
3943
+ var _mainSide = mainAxis === 'x' ? top : left;
3819
3944
 
3820
- var _altSide = mainAxis === 'x' ? bottom : right;
3945
+ var _altSide = mainAxis === 'x' ? bottom : right;
3821
3946
 
3822
- var _offset = popperOffsets[altAxis];
3947
+ var _offset = popperOffsets[altAxis];
3823
3948
 
3824
- var _min = _offset + overflow[_mainSide];
3949
+ var _len = altAxis === 'y' ? 'height' : 'width';
3825
3950
 
3826
- var _max = _offset - overflow[_altSide];
3951
+ var _min = _offset + overflow[_mainSide];
3827
3952
 
3828
- var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max);
3953
+ var _max = _offset - overflow[_altSide];
3829
3954
 
3830
- popperOffsets[altAxis] = _preventedOffset;
3831
- data[altAxis] = _preventedOffset - _offset;
3832
- }
3955
+ var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
3956
+
3957
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
3958
+
3959
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
3960
+
3961
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
3962
+
3963
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
3964
+
3965
+ popperOffsets[altAxis] = _preventedOffset;
3966
+ data[altAxis] = _preventedOffset - _offset;
3833
3967
  }
3834
3968
 
3835
3969
  state.modifiersData[name] = data;
@@ -3859,16 +3993,24 @@ function getNodeScroll(node) {
3859
3993
  }
3860
3994
  }
3861
3995
 
3996
+ function isElementScaled(element) {
3997
+ var rect = element.getBoundingClientRect();
3998
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
3999
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
4000
+ return scaleX !== 1 || scaleY !== 1;
4001
+ } // Returns the composite rect of an element relative to its offsetParent.
3862
4002
  // Composite means it takes into account transforms as well as layout.
3863
4003
 
4004
+
3864
4005
  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
3865
4006
  if (isFixed === void 0) {
3866
4007
  isFixed = false;
3867
4008
  }
3868
4009
 
3869
- var documentElement = getDocumentElement(offsetParent);
3870
- var rect = getBoundingClientRect(elementOrVirtualElement);
3871
4010
  var isOffsetParentAnElement = isHTMLElement(offsetParent);
4011
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
4012
+ var documentElement = getDocumentElement(offsetParent);
4013
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
3872
4014
  var scroll = {
3873
4015
  scrollLeft: 0,
3874
4016
  scrollTop: 0
@@ -3885,7 +4027,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
3885
4027
  }
3886
4028
 
3887
4029
  if (isHTMLElement(offsetParent)) {
3888
- offsets = getBoundingClientRect(offsetParent);
4030
+ offsets = getBoundingClientRect(offsetParent, true);
3889
4031
  offsets.x += offsetParent.clientLeft;
3890
4032
  offsets.y += offsetParent.clientTop;
3891
4033
  } else if (documentElement) {
@@ -3975,7 +4117,10 @@ var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" mo
3975
4117
  var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];
3976
4118
  function validateModifiers(modifiers) {
3977
4119
  modifiers.forEach(function (modifier) {
3978
- Object.keys(modifier).forEach(function (key) {
4120
+ [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`
4121
+ .filter(function (value, index, self) {
4122
+ return self.indexOf(value) === index;
4123
+ }).forEach(function (key) {
3979
4124
  switch (key) {
3980
4125
  case 'name':
3981
4126
  if (typeof modifier.name !== 'string') {
@@ -3989,6 +4134,8 @@ function validateModifiers(modifiers) {
3989
4134
  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\""));
3990
4135
  }
3991
4136
 
4137
+ break;
4138
+
3992
4139
  case 'phase':
3993
4140
  if (modifierPhases.indexOf(modifier.phase) < 0) {
3994
4141
  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\""));
@@ -4004,14 +4151,14 @@ function validateModifiers(modifiers) {
4004
4151
  break;
4005
4152
 
4006
4153
  case 'effect':
4007
- if (typeof modifier.effect !== 'function') {
4154
+ if (modifier.effect != null && typeof modifier.effect !== 'function') {
4008
4155
  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\""));
4009
4156
  }
4010
4157
 
4011
4158
  break;
4012
4159
 
4013
4160
  case 'requires':
4014
- if (!Array.isArray(modifier.requires)) {
4161
+ if (modifier.requires != null && !Array.isArray(modifier.requires)) {
4015
4162
  console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\""));
4016
4163
  }
4017
4164
 
@@ -4121,7 +4268,8 @@ function popperGenerator(generatorOptions) {
4121
4268
  var isDestroyed = false;
4122
4269
  var instance = {
4123
4270
  state: state,
4124
- setOptions: function setOptions(options) {
4271
+ setOptions: function setOptions(setOptionsAction) {
4272
+ var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
4125
4273
  cleanupModifierEffects();
4126
4274
  state.options = Object.assign({}, defaultOptions, state.options, options);
4127
4275
  state.scrollParents = {
@@ -4493,9 +4641,16 @@ function usePopper(referenceElement, popperElement, _temp) {
4493
4641
  }
4494
4642
 
4495
4643
  /* eslint-disable no-bitwise, no-cond-assign */
4496
- // HTML DOM and SVG DOM may have different support levels,
4497
- // so we need to check on context instead of a document root element.
4644
+
4645
+ /**
4646
+ * Checks if an element contains another given element.
4647
+ *
4648
+ * @param context the context element
4649
+ * @param node the element to check
4650
+ */
4498
4651
  function contains(context, node) {
4652
+ // HTML DOM and SVG DOM may have different support levels,
4653
+ // so we need to check on context instead of a document root element.
4499
4654
  if (context.contains) return context.contains(node);
4500
4655
  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);
4501
4656
  }
@@ -5312,6 +5467,12 @@ function useWrappedRefWithWarning(ref, componentName) {
5312
5467
  return useMergedRefs(warningRef, ref);
5313
5468
  }
5314
5469
 
5470
+ /**
5471
+ * Checks if a given element has a CSS class.
5472
+ *
5473
+ * @param element the element
5474
+ * @param className the CSS class name
5475
+ */
5315
5476
  function hasClass(element, className) {
5316
5477
  if (element.classList) return !!className && element.classList.contains(className);
5317
5478
  return (" " + (element.className.baseVal || element.className) + " ").indexOf(" " + className + " ") !== -1;
@@ -6751,9 +6912,9 @@ function scrollbarSize(recalc) {
6751
6912
  }
6752
6913
 
6753
6914
  /**
6754
- * Return the actively focused element safely.
6915
+ * Returns the actively focused element safely.
6755
6916
  *
6756
- * @param doc the document to checl
6917
+ * @param doc the document to check
6757
6918
  */
6758
6919
 
6759
6920
  function activeElement(doc) {
@@ -6775,6 +6936,13 @@ function activeElement(doc) {
6775
6936
  }
6776
6937
  }
6777
6938
 
6939
+ /**
6940
+ * Adds a CSS class to a given element.
6941
+ *
6942
+ * @param element the element
6943
+ * @param className the CSS class name
6944
+ */
6945
+
6778
6946
  function addClass(element, className) {
6779
6947
  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + " " + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + " " + className);
6780
6948
  }
@@ -6782,6 +6950,13 @@ function addClass(element, className) {
6782
6950
  function replaceClassName(origClass, classToRemove) {
6783
6951
  return origClass.replace(new RegExp("(^|\\s)" + classToRemove + "(?:\\s|$)", 'g'), '$1').replace(/\s+/g, ' ').replace(/^\s*|\s*$/g, '');
6784
6952
  }
6953
+ /**
6954
+ * Removes a CSS class from a given element.
6955
+ *
6956
+ * @param element the element
6957
+ * @param className the CSS class name
6958
+ */
6959
+
6785
6960
 
6786
6961
  function removeClass(element, className) {
6787
6962
  if (element.classList) {