text: "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.default = void 0;
  
  var _symbols = require("./symbols.js");
  
  /* eslint-disable no-redeclare */
  // $FlowFixMe[name-already-bound]
  var arrayFrom = Array.from || function (obj, mapFn, thisArg) {
    if (obj == null) {
      throw new TypeError('Array.from requires an array-like object - not null or undefined');
    } // Is Iterable?
  
  
    var iteratorMethod = obj[_symbols.SYMBOL_ITERATOR];
  
    if (typeof iteratorMethod === 'function') {
      var iterator = iteratorMethod.call(obj);
      var result = [];
      var step;
  
      for (var i = 0; !(step = iterator.next()).done; ++i) {
        result.push(mapFn.call(thisArg, step.value, i)); // Infinite Iterators could cause forEach to run forever.
        // After a very large number of iterations, produce an error.
        // istanbul ignore if (Too big to actually test)
  
        if (i > 9999999) {
          throw new TypeError('Near-infinite iteration.');
        }
      }
  
      return result;
    } // Is Array like?
  
  
    var length = obj.length;
  
    if (typeof length === 'number' && length >= 0 && length % 1 === 0) {
      var _result = [];
  
      for (var _i = 0; _i < length; ++_i) {
        if (Object.prototype.hasOwnProperty.call(obj, _i)) {
          _result.push(mapFn.call(thisArg, obj[_i], _i));
        }
      }
  
      return _result;
    }
  
    return [];
  };
  
  var _default = arrayFrom;
  exports.default = _default;
  