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

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