DOMElementProvider.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* *
  2. *
  3. * (c) 2009-2021 Øystein Moseng
  4. *
  5. * Class that can keep track of elements added to DOM and clean them up on
  6. * destroy.
  7. *
  8. * License: www.highcharts.com/license
  9. *
  10. * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
  11. *
  12. * */
  13. 'use strict';
  14. import H from '../../Core/Globals.js';
  15. var doc = H.doc;
  16. import HTMLUtilities from './HTMLUtilities.js';
  17. var removeElement = HTMLUtilities.removeElement;
  18. import U from '../../Core/Utilities.js';
  19. var extend = U.extend;
  20. /* eslint-disable no-invalid-this, valid-jsdoc */
  21. /**
  22. * @private
  23. * @class
  24. */
  25. var DOMElementProvider = function () {
  26. this.elements = [];
  27. };
  28. extend(DOMElementProvider.prototype, {
  29. /**
  30. * Create an element and keep track of it for later removal.
  31. * Same args as document.createElement
  32. * @private
  33. */
  34. createElement: function () {
  35. var el = doc.createElement.apply(doc, arguments);
  36. this.elements.push(el);
  37. return el;
  38. },
  39. /**
  40. * Destroy all created elements, removing them from the DOM.
  41. * @private
  42. */
  43. destroyCreatedElements: function () {
  44. this.elements.forEach(function (element) {
  45. removeElement(element);
  46. });
  47. this.elements = [];
  48. }
  49. });
  50. export default DOMElementProvider;