zone-patch-resize-observer.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /**
  2. * @license
  3. * Copyright Google Inc. All Rights Reserved.
  4. *
  5. * Use of this source code is governed by an MIT-style license that can be
  6. * found in the LICENSE file at https://angular.io/license
  7. */
  8. (function (global, factory) {
  9. typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
  10. typeof define === 'function' && define.amd ? define(factory) :
  11. (factory());
  12. }(this, (function () { 'use strict';
  13. var __values = (undefined && undefined.__values) || function (o) {
  14. var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
  15. if (m) return m.call(o);
  16. return {
  17. next: function () {
  18. if (o && i >= o.length) o = void 0;
  19. return { value: o && o[i++], done: !o };
  20. }
  21. };
  22. };
  23. /**
  24. * @license
  25. * Copyright Google Inc. All Rights Reserved.
  26. *
  27. * Use of this source code is governed by an MIT-style license that can be
  28. * found in the LICENSE file at https://angular.io/license
  29. */
  30. Zone.__load_patch('ResizeObserver', function (global, Zone, api) {
  31. var ResizeObserver = global['ResizeObserver'];
  32. if (!ResizeObserver) {
  33. return;
  34. }
  35. var resizeObserverSymbol = api.symbol('ResizeObserver');
  36. api.patchMethod(global, 'ResizeObserver', function (delegate) { return function (self, args) {
  37. var callback = args.length > 0 ? args[0] : null;
  38. if (callback) {
  39. args[0] = function (entries, observer) {
  40. var _this = this;
  41. var e_1, _a;
  42. var zones = {};
  43. var currZone = Zone.current;
  44. try {
  45. for (var entries_1 = __values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {
  46. var entry = entries_1_1.value;
  47. var zone = entry.target[resizeObserverSymbol];
  48. if (!zone) {
  49. zone = currZone;
  50. }
  51. var zoneEntriesInfo = zones[zone.name];
  52. if (!zoneEntriesInfo) {
  53. zones[zone.name] = zoneEntriesInfo = { entries: [], zone: zone };
  54. }
  55. zoneEntriesInfo.entries.push(entry);
  56. }
  57. }
  58. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  59. finally {
  60. try {
  61. if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);
  62. }
  63. finally { if (e_1) throw e_1.error; }
  64. }
  65. Object.keys(zones).forEach(function (zoneName) {
  66. var zoneEntriesInfo = zones[zoneName];
  67. if (zoneEntriesInfo.zone !== Zone.current) {
  68. zoneEntriesInfo.zone.run(callback, _this, [zoneEntriesInfo.entries, observer], 'ResizeObserver');
  69. }
  70. else {
  71. callback.call(_this, zoneEntriesInfo.entries, observer);
  72. }
  73. });
  74. };
  75. }
  76. return args.length > 0 ? new ResizeObserver(args[0]) : new ResizeObserver();
  77. }; });
  78. api.patchMethod(ResizeObserver.prototype, 'observe', function (delegate) { return function (self, args) {
  79. var target = args.length > 0 ? args[0] : null;
  80. if (!target) {
  81. return delegate.apply(self, args);
  82. }
  83. var targets = self[resizeObserverSymbol];
  84. if (!targets) {
  85. targets = self[resizeObserverSymbol] = [];
  86. }
  87. targets.push(target);
  88. target[resizeObserverSymbol] = Zone.current;
  89. return delegate.apply(self, args);
  90. }; });
  91. api.patchMethod(ResizeObserver.prototype, 'unobserve', function (delegate) { return function (self, args) {
  92. var target = args.length > 0 ? args[0] : null;
  93. if (!target) {
  94. return delegate.apply(self, args);
  95. }
  96. var targets = self[resizeObserverSymbol];
  97. if (targets) {
  98. for (var i = 0; i < targets.length; i++) {
  99. if (targets[i] === target) {
  100. targets.splice(i, 1);
  101. break;
  102. }
  103. }
  104. }
  105. target[resizeObserverSymbol] = undefined;
  106. return delegate.apply(self, args);
  107. }; });
  108. api.patchMethod(ResizeObserver.prototype, 'disconnect', function (delegate) { return function (self, args) {
  109. var targets = self[resizeObserverSymbol];
  110. if (targets) {
  111. targets.forEach(function (target) {
  112. target[resizeObserverSymbol] = undefined;
  113. });
  114. self[resizeObserverSymbol] = undefined;
  115. }
  116. return delegate.apply(self, args);
  117. }; });
  118. });
  119. })));