zone-patch-resize-observer.umd.js 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. 'use strict';
  2. /**
  3. * @license Angular v<unknown>
  4. * (c) 2010-2022 Google LLC. https://angular.io/
  5. * License: MIT
  6. */
  7. (function (factory) {
  8. typeof define === 'function' && define.amd ? define(factory) :
  9. factory();
  10. })((function () {
  11. 'use strict';
  12. Zone.__load_patch('ResizeObserver', function (global, Zone, api) {
  13. var ResizeObserver = global['ResizeObserver'];
  14. if (!ResizeObserver) {
  15. return;
  16. }
  17. var resizeObserverSymbol = api.symbol('ResizeObserver');
  18. api.patchMethod(global, 'ResizeObserver', function (delegate) { return function (self, args) {
  19. var callback = args.length > 0 ? args[0] : null;
  20. if (callback) {
  21. args[0] = function (entries, observer) {
  22. var _this = this;
  23. var zones = {};
  24. var currZone = Zone.current;
  25. for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
  26. var entry = entries_1[_i];
  27. var zone = entry.target[resizeObserverSymbol];
  28. if (!zone) {
  29. zone = currZone;
  30. }
  31. var zoneEntriesInfo = zones[zone.name];
  32. if (!zoneEntriesInfo) {
  33. zones[zone.name] = zoneEntriesInfo = { entries: [], zone: zone };
  34. }
  35. zoneEntriesInfo.entries.push(entry);
  36. }
  37. Object.keys(zones).forEach(function (zoneName) {
  38. var zoneEntriesInfo = zones[zoneName];
  39. if (zoneEntriesInfo.zone !== Zone.current) {
  40. zoneEntriesInfo.zone.run(callback, _this, [zoneEntriesInfo.entries, observer], 'ResizeObserver');
  41. }
  42. else {
  43. callback.call(_this, zoneEntriesInfo.entries, observer);
  44. }
  45. });
  46. };
  47. }
  48. return args.length > 0 ? new ResizeObserver(args[0]) : new ResizeObserver();
  49. }; });
  50. api.patchMethod(ResizeObserver.prototype, 'observe', function (delegate) { return function (self, args) {
  51. var target = args.length > 0 ? args[0] : null;
  52. if (!target) {
  53. return delegate.apply(self, args);
  54. }
  55. var targets = self[resizeObserverSymbol];
  56. if (!targets) {
  57. targets = self[resizeObserverSymbol] = [];
  58. }
  59. targets.push(target);
  60. target[resizeObserverSymbol] = Zone.current;
  61. return delegate.apply(self, args);
  62. }; });
  63. api.patchMethod(ResizeObserver.prototype, 'unobserve', function (delegate) { return function (self, args) {
  64. var target = args.length > 0 ? args[0] : null;
  65. if (!target) {
  66. return delegate.apply(self, args);
  67. }
  68. var targets = self[resizeObserverSymbol];
  69. if (targets) {
  70. for (var i = 0; i < targets.length; i++) {
  71. if (targets[i] === target) {
  72. targets.splice(i, 1);
  73. break;
  74. }
  75. }
  76. }
  77. target[resizeObserverSymbol] = undefined;
  78. return delegate.apply(self, args);
  79. }; });
  80. api.patchMethod(ResizeObserver.prototype, 'disconnect', function (delegate) { return function (self, args) {
  81. var targets = self[resizeObserverSymbol];
  82. if (targets) {
  83. targets.forEach(function (target) {
  84. target[resizeObserverSymbol] = undefined;
  85. });
  86. self[resizeObserverSymbol] = undefined;
  87. }
  88. return delegate.apply(self, args);
  89. }; });
  90. });
  91. }));