{"version":3,"sources":["jsdelivr-header.js","/npm/flatfile-csv-importer@0.2.13/node_modules/tslib/tslib.es6.js","/npm/flatfile-csv-importer@0.2.13/node_modules/promise-polyfill/dist/polyfill.js","/npm/flatfile-csv-importer@0.2.13/node_modules/eventemitter3/index.js","/npm/flatfile-csv-importer@0.2.13/node_modules/when-dom-ready/src/index.js","/npm/flatfile-csv-importer@0.2.13/node_modules/insert-css/index.js","/npm/flatfile-csv-importer@0.2.13/node_modules/element-class/index.js","/npm/flatfile-csv-importer@0.2.13/node_modules/penpal/lib/index.js","/npm/flatfile-csv-importer@0.2.13/src/stats.ts","/npm/flatfile-csv-importer@0.2.13/src/user.ts","/npm/flatfile-csv-importer@0.2.13/src/upload-file.ts","/npm/flatfile-csv-importer@0.2.13/src/streamed-results.ts","/npm/flatfile-csv-importer@0.2.13/src/results.ts","/npm/flatfile-csv-importer@0.2.13/src/index.ts"],"names":[],"mappings":"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","file":"/npm/flatfile-csv-importer@0.2.13/build/browser/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/flatfile-csv-importer@0.2.13/build/browser/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n    if (m) return m.call(o);\r\n    return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n  return function() {\n    fn.apply(thisArg, arguments);\n  };\n}\n\nfunction Promise(fn) {\n  if (!(this instanceof Promise))\n    throw new TypeError('Promises must be constructed via new');\n  if (typeof fn !== 'function') throw new TypeError('not a function');\n  this._state = 0;\n  this._handled = false;\n  this._value = undefined;\n  this._deferreds = [];\n\n  doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n  while (self._state === 3) {\n    self = self._value;\n  }\n  if (self._state === 0) {\n    self._deferreds.push(deferred);\n    return;\n  }\n  self._handled = true;\n  Promise._immediateFn(function() {\n    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n      return;\n    }\n    var ret;\n    try {\n      ret = cb(self._value);\n    } catch (e) {\n      reject(deferred.promise, e);\n      return;\n    }\n    resolve(deferred.promise, ret);\n  });\n}\n\nfunction resolve(self, newValue) {\n  try {\n    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n    if (newValue === self)\n      throw new TypeError('A promise cannot be resolved with itself.');\n    if (\n      newValue &&\n      (typeof newValue === 'object' || typeof newValue === 'function')\n    ) {\n      var then = newValue.then;\n      if (newValue instanceof Promise) {\n        self._state = 3;\n        self._value = newValue;\n        finale(self);\n        return;\n      } else if (typeof then === 'function') {\n        doResolve(bind(then, newValue), self);\n        return;\n      }\n    }\n    self._state = 1;\n    self._value = newValue;\n    finale(self);\n  } catch (e) {\n    reject(self, e);\n  }\n}\n\nfunction reject(self, newValue) {\n  self._state = 2;\n  self._value = newValue;\n  finale(self);\n}\n\nfunction finale(self) {\n  if (self._state === 2 && self._deferreds.length === 0) {\n    Promise._immediateFn(function() {\n      if (!self._handled) {\n        Promise._unhandledRejectionFn(self._value);\n      }\n    });\n  }\n\n  for (var i = 0, len = self._deferreds.length; i < len; i++) {\n    handle(self, self._deferreds[i]);\n  }\n  self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n  var done = false;\n  try {\n    fn(\n      function(value) {\n        if (done) return;\n        done = true;\n        resolve(self, value);\n      },\n      function(reason) {\n        if (done) return;\n        done = true;\n        reject(self, reason);\n      }\n    );\n  } catch (ex) {\n    if (done) return;\n    done = true;\n    reject(self, ex);\n  }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n  return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n  var prom = new this.constructor(noop);\n\n  handle(this, new Handler(onFulfilled, onRejected, prom));\n  return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n  var constructor = this.constructor;\n  return this.then(\n    function(value) {\n      return constructor.resolve(callback()).then(function() {\n        return value;\n      });\n    },\n    function(reason) {\n      return constructor.resolve(callback()).then(function() {\n        return constructor.reject(reason);\n      });\n    }\n  );\n};\n\nPromise.all = function(arr) {\n  return new Promise(function(resolve, reject) {\n    if (!arr || typeof arr.length === 'undefined')\n      throw new TypeError('Promise.all accepts an array');\n    var args = Array.prototype.slice.call(arr);\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n\n    function res(i, val) {\n      try {\n        if (val && (typeof val === 'object' || typeof val === 'function')) {\n          var then = val.then;\n          if (typeof then === 'function') {\n            then.call(\n              val,\n              function(val) {\n                res(i, val);\n              },\n              reject\n            );\n            return;\n          }\n        }\n        args[i] = val;\n        if (--remaining === 0) {\n          resolve(args);\n        }\n      } catch (ex) {\n        reject(ex);\n      }\n    }\n\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nPromise.resolve = function(value) {\n  if (value && typeof value === 'object' && value.constructor === Promise) {\n    return value;\n  }\n\n  return new Promise(function(resolve) {\n    resolve(value);\n  });\n};\n\nPromise.reject = function(value) {\n  return new Promise(function(resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function(values) {\n  return new Promise(function(resolve, reject) {\n    for (var i = 0, len = values.length; i < len; i++) {\n      values[i].then(resolve, reject);\n    }\n  });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n  (typeof setImmediate === 'function' &&\n    function(fn) {\n      setImmediate(fn);\n    }) ||\n  function(fn) {\n    setTimeoutFunc(fn, 0);\n  };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n  if (typeof console !== 'undefined' && console) {\n    console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n  }\n};\n\nvar globalNS = (function() {\n  // the only reliable means to get the global object is\n  // `Function('return this')()`\n  // However, this causes CSP violations in Chrome apps.\n  if (typeof self !== 'undefined') {\n    return self;\n  }\n  if (typeof window !== 'undefined') {\n    return window;\n  }\n  if (typeof global !== 'undefined') {\n    return global;\n  }\n  throw new Error('unable to locate global object');\n})();\n\nif (!globalNS.Promise) {\n  globalNS.Promise = Promise;\n}\n\n})));\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","/* eslint no-void: \"off\" */\n\n// Loaded ready states\nconst loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nconst whenDomReady = (cb, doc) => new Promise(resolve => {\n\t// Allow doc to be passed in as the lone first param\n\tif (cb && typeof cb !== 'function') {\n\t\tdoc = cb;\n\t\tcb = null;\n\t}\n\n\t// Use global document if we don't have one\n\tdoc = doc || window.document;\n\n\t// Handle DOM load\n\tconst done = () => resolve(void (cb && setTimeout(cb)));\n\n\t// Resolve now if DOM has already loaded\n\t// Otherwise wait for DOMContentLoaded\n\tif (loadedStates.includes(doc.readyState)) {\n\t\tdone();\n\t} else {\n\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t}\n});\n\n// Promise chain helper\nwhenDomReady.resume = doc => val => whenDomReady(doc).then(() => val);\n\nexport default whenDomReady;\n","var containers = []; // will store container HTMLElement references\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction insertCss(css, options) {\n    options = options || {};\n\n    if (css === undefined) {\n        throw new Error(usage);\n    }\n\n    var position = options.prepend === true ? 'prepend' : 'append';\n    var container = options.container !== undefined ? options.container : document.querySelector('head');\n    var containerId = containers.indexOf(container);\n\n    // first time we see this container, create the necessary entries\n    if (containerId === -1) {\n        containerId = containers.push(container) - 1;\n        styleElements[containerId] = {};\n    }\n\n    // try to get the correponding container + position styleElement, create it otherwise\n    var styleElement;\n\n    if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n        styleElement = styleElements[containerId][position];\n    } else {\n        styleElement = styleElements[containerId][position] = createStyleElement();\n\n        if (position === 'prepend') {\n            container.insertBefore(styleElement, container.childNodes[0]);\n        } else {\n            container.appendChild(styleElement);\n        }\n    }\n\n    // strip potential UTF-8 BOM if css was read from a file\n    if (css.charCodeAt(0) === 0xFEFF) { css = css.substr(1, css.length); }\n\n    // actually add the stylesheet\n    if (styleElement.styleSheet) {\n        styleElement.styleSheet.cssText += css\n    } else {\n        styleElement.textContent += css;\n    }\n\n    return styleElement;\n};\n\nfunction createStyleElement() {\n    var styleElement = document.createElement('style');\n    styleElement.setAttribute('type', 'text/css');\n    return styleElement;\n}\n\nmodule.exports = insertCss;\nmodule.exports.insertCss = insertCss;\n","module.exports = function(opts) {\n  return new ElementClass(opts)\n}\n\nfunction indexOf(arr, prop) {\n  if (arr.indexOf) return arr.indexOf(prop)\n  for (var i = 0, len = arr.length; i < len; i++)\n    if (arr[i] === prop) return i\n  return -1\n}\n\nfunction ElementClass(opts) {\n  if (!(this instanceof ElementClass)) return new ElementClass(opts)\n  var self = this\n  if (!opts) opts = {}\n\n  // similar doing instanceof HTMLElement but works in IE8\n  if (opts.nodeType) opts = {el: opts}\n\n  this.opts = opts\n  this.el = opts.el || document.body\n  if (typeof this.el !== 'object') this.el = document.querySelector(this.el)\n}\n\nElementClass.prototype.add = function(className) {\n  var el = this.el\n  if (!el) return\n  if (el.className === \"\") return el.className = className\n  var classes = el.className.split(' ')\n  if (indexOf(classes, className) > -1) return classes\n  classes.push(className)\n  el.className = classes.join(' ')\n  return classes\n}\n\nElementClass.prototype.remove = function(className) {\n  var el = this.el\n  if (!el) return\n  if (el.className === \"\") return\n  var classes = el.className.split(' ')\n  var idx = indexOf(classes, className)\n  if (idx > -1) classes.splice(idx, 1)\n  el.className = classes.join(' ')\n  return classes\n}\n\nElementClass.prototype.has = function(className) {\n  var el = this.el\n  if (!el) return\n  var classes = el.className.split(' ')\n  return indexOf(classes, className) > -1\n}\n\nElementClass.prototype.toggle = function(className) {\n  var el = this.el\n  if (!el) return\n  if (this.has(className)) this.remove(className)\n  else this.add(className)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.ERR_IFRAME_ALREADY_ATTACHED_TO_DOM = exports.ERR_NOT_IN_IFRAME = exports.ERR_CONNECTION_TIMEOUT = exports.ERR_CONNECTION_DESTROYED = void 0;\nvar HANDSHAKE = 'handshake';\nvar HANDSHAKE_REPLY = 'handshake-reply';\nvar CALL = 'call';\nvar REPLY = 'reply';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\nvar MESSAGE = 'message';\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar ERR_CONNECTION_DESTROYED = 'ConnectionDestroyed';\nexports.ERR_CONNECTION_DESTROYED = ERR_CONNECTION_DESTROYED;\nvar ERR_CONNECTION_TIMEOUT = 'ConnectionTimeout';\nexports.ERR_CONNECTION_TIMEOUT = ERR_CONNECTION_TIMEOUT;\nvar ERR_NOT_IN_IFRAME = 'NotInIframe';\nexports.ERR_NOT_IN_IFRAME = ERR_NOT_IN_IFRAME;\nvar ERR_IFRAME_ALREADY_ATTACHED_TO_DOM = 'IframeAlreadyAttachedToDom';\nexports.ERR_IFRAME_ALREADY_ATTACHED_TO_DOM = ERR_IFRAME_ALREADY_ATTACHED_TO_DOM;\nvar CHECK_IFRAME_IN_DOC_INTERVAL = 60000;\nvar DEFAULT_PORTS = {\n  'http:': '80',\n  'https:': '443'\n};\nvar URL_REGEX = /^(https?:|file:)?\\/\\/([^/:]+)?(:(\\d+))?/;\nvar Penpal = {\n  ERR_CONNECTION_DESTROYED: ERR_CONNECTION_DESTROYED,\n  ERR_CONNECTION_TIMEOUT: ERR_CONNECTION_TIMEOUT,\n  ERR_NOT_IN_IFRAME: ERR_NOT_IN_IFRAME,\n  ERR_IFRAME_ALREADY_ATTACHED_TO_DOM: ERR_IFRAME_ALREADY_ATTACHED_TO_DOM,\n\n  /**\n   * Promise implementation.\n   * @type {Constructor}\n   */\n  Promise: function () {\n    try {\n      return window ? window.Promise : null;\n    } catch (e) {\n      return null;\n    }\n  }(),\n\n  /**\n   * Whether debug messages should be logged.\n   * @type {boolean}\n   */\n  debug: false\n};\n/**\n * @return {number} A unique ID (not universally unique)\n */\n\nvar generateId = function () {\n  var id = 0;\n  return function () {\n    return ++id;\n  };\n}();\n/**\n * Logs a message.\n * @param {...*} args One or more items to log\n */\n\n\nvar log = function log() {\n  if (Penpal.debug) {\n    var _console;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    (_console = console).log.apply(_console, ['[Penpal]'].concat(args)); // eslint-disable-line no-console\n\n  }\n};\n/**\n * Converts a URL into an origin.\n * @param {string} url\n * @return {string} The URL's origin\n */\n\n\nvar getOriginFromUrl = function getOriginFromUrl(url) {\n  var location = document.location;\n  var regexResult = URL_REGEX.exec(url);\n  var protocol;\n  var hostname;\n  var port;\n\n  if (regexResult) {\n    // It's an absolute URL. Use the parsed info.\n    // regexResult[1] will be undefined if the URL starts with //\n    protocol = regexResult[1] ? regexResult[1] : location.protocol;\n    hostname = regexResult[2];\n    port = regexResult[4];\n  } else {\n    // It's a relative path. Use the current location's info.\n    protocol = location.protocol;\n    hostname = location.hostname;\n    port = location.port;\n  } // If the protocol is file, the origin is \"null\"\n  // The origin of a document with file protocol is an opaque origin\n  // and its serialization \"null\" [1]\n  // [1] https://html.spec.whatwg.org/multipage/origin.html#origin\n\n\n  if (protocol === \"file:\") {\n    return \"null\";\n  } // If the port is the default for the protocol, we don't want to add it to the origin string\n  // or it won't match the message's event.origin.\n\n\n  var portSuffix = port && port !== DEFAULT_PORTS[protocol] ? \":\".concat(port) : '';\n  return \"\".concat(protocol, \"//\").concat(hostname).concat(portSuffix);\n};\n/**\n * A simplified promise class only used internally for when destroy() is called. This is\n * used to destroy connections synchronously while promises typically resolve asynchronously.\n *\n * @param {Function} executor\n * @returns {Object}\n * @constructor\n */\n\n\nvar DestructionPromise = function DestructionPromise(executor) {\n  var handlers = [];\n  executor(function () {\n    handlers.forEach(function (handler) {\n      handler();\n    });\n  });\n  return {\n    then: function then(handler) {\n      handlers.push(handler);\n    }\n  };\n};\n/**\n * Converts an error object into a plain object.\n * @param {Error} Error object.\n * @returns {Object}\n */\n\n\nvar serializeError = function serializeError(_ref) {\n  var name = _ref.name,\n      message = _ref.message,\n      stack = _ref.stack;\n  return {\n    name: name,\n    message: message,\n    stack: stack\n  };\n};\n/**\n * Converts a plain object into an error object.\n * @param {Object} Object with error properties.\n * @returns {Error}\n */\n\n\nvar deserializeError = function deserializeError(obj) {\n  var deserializedError = new Error();\n  Object.keys(obj).forEach(function (key) {\n    return deserializedError[key] = obj[key];\n  });\n  return deserializedError;\n};\n/**\n * Augments an object with methods that match those defined by the remote. When these methods are\n * called, a \"call\" message will be sent to the remote, the remote's corresponding method will be\n * executed, and the method's return value will be returned via a message.\n * @param {Object} callSender Sender object that should be augmented with methods.\n * @param {Object} info Information about the local and remote windows.\n * @param {Array} methodNames Names of methods available to be called on the remote.\n * @param {Promise} destructionPromise A promise resolved when destroy() is called on the penpal\n * connection.\n * @returns {Object} The call sender object with methods that may be called.\n */\n\n\nvar connectCallSender = function connectCallSender(callSender, info, methodNames, destroy, destructionPromise) {\n  var localName = info.localName,\n      local = info.local,\n      remote = info.remote,\n      remoteOrigin = info.remoteOrigin;\n  var destroyed = false;\n  log(\"\".concat(localName, \": Connecting call sender\"));\n\n  var createMethodProxy = function createMethodProxy(methodName) {\n    return function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      log(\"\".concat(localName, \": Sending \").concat(methodName, \"() call\")); // This handles the case where the iframe has been removed from the DOM\n      // (and therefore its window closed), the consumer has not yet\n      // called destroy(), and the user calls a method exposed by\n      // the remote. We detect the iframe has been removed and force\n      // a destroy() immediately so that the consumer sees the error saying\n      // the connection has been destroyed.\n\n      if (remote.closed) {\n        destroy();\n      }\n\n      if (destroyed) {\n        var error = new Error(\"Unable to send \".concat(methodName, \"() call due \") + \"to destroyed connection\");\n        error.code = ERR_CONNECTION_DESTROYED;\n        throw error;\n      }\n\n      return new Penpal.Promise(function (resolve, reject) {\n        var id = generateId();\n\n        var handleMessageEvent = function handleMessageEvent(event) {\n          if (event.source === remote && event.origin === remoteOrigin && event.data.penpal === REPLY && event.data.id === id) {\n            log(\"\".concat(localName, \": Received \").concat(methodName, \"() reply\"));\n            local.removeEventListener(MESSAGE, handleMessageEvent);\n            var returnValue = event.data.returnValue;\n\n            if (event.data.returnValueIsError) {\n              returnValue = deserializeError(returnValue);\n            }\n\n            (event.data.resolution === FULFILLED ? resolve : reject)(returnValue);\n          }\n        };\n\n        local.addEventListener(MESSAGE, handleMessageEvent);\n        remote.postMessage({\n          penpal: CALL,\n          id: id,\n          methodName: methodName,\n          args: args\n        }, remoteOrigin);\n      });\n    };\n  };\n\n  destructionPromise.then(function () {\n    destroyed = true;\n  });\n  methodNames.reduce(function (api, methodName) {\n    api[methodName] = createMethodProxy(methodName);\n    return api;\n  }, callSender);\n};\n/**\n * Listens for \"call\" messages coming from the remote, executes the corresponding method, and\n * responds with the return value.\n * @param {Object} info Information about the local and remote windows.\n * @param {Object} methods The keys are the names of the methods that can be called by the remote\n * while the values are the method functions.\n * @param {Promise} destructionPromise A promise resolved when destroy() is called on the penpal\n * connection.\n * @returns {Function} A function that may be called to disconnect the receiver.\n */\n\n\nvar connectCallReceiver = function connectCallReceiver(info, methods, destructionPromise) {\n  var localName = info.localName,\n      local = info.local,\n      remote = info.remote,\n      remoteOrigin = info.remoteOrigin;\n  var destroyed = false;\n  log(\"\".concat(localName, \": Connecting call receiver\"));\n\n  var handleMessageEvent = function handleMessageEvent(event) {\n    if (event.source === remote && event.origin === remoteOrigin && event.data.penpal === CALL) {\n      var _event$data = event.data,\n          methodName = _event$data.methodName,\n          args = _event$data.args,\n          id = _event$data.id;\n      log(\"\".concat(localName, \": Received \").concat(methodName, \"() call\"));\n\n      if (methodName in methods) {\n        var createPromiseHandler = function createPromiseHandler(resolution) {\n          return function (returnValue) {\n            log(\"\".concat(localName, \": Sending \").concat(methodName, \"() reply\"));\n\n            if (destroyed) {\n              // It's possible to throw an error here, but it would need to be thrown asynchronously\n              // and would only be catchable using window.onerror. This is because the consumer\n              // is merely returning a value from their method and not calling any function\n              // that they could wrap in a try-catch. Even if the consumer were to catch the error,\n              // the value of doing so is questionable. Instead, we'll just log a message.\n              log(\"\".concat(localName, \": Unable to send \").concat(methodName, \"() reply due to destroyed connection\"));\n              return;\n            }\n\n            var message = {\n              penpal: REPLY,\n              id: id,\n              resolution: resolution,\n              returnValue: returnValue\n            };\n\n            if (resolution === REJECTED && returnValue instanceof Error) {\n              message.returnValue = serializeError(returnValue);\n              message.returnValueIsError = true;\n            }\n\n            try {\n              remote.postMessage(message, remoteOrigin);\n            } catch (err) {\n              // If a consumer attempts to send an object that's not cloneable (e.g., window),\n              // we want to ensure the receiver's promise gets rejected.\n              if (err.name === DATA_CLONE_ERROR) {\n                remote.postMessage({\n                  penpal: REPLY,\n                  id: id,\n                  resolution: REJECTED,\n                  returnValue: serializeError(err),\n                  returnValueIsError: true\n                }, remoteOrigin);\n              }\n\n              throw err;\n            }\n          };\n        };\n\n        new Penpal.Promise(function (resolve) {\n          return resolve(methods[methodName].apply(methods, args));\n        }).then(createPromiseHandler(FULFILLED), createPromiseHandler(REJECTED));\n      }\n    }\n  };\n\n  local.addEventListener(MESSAGE, handleMessageEvent);\n  destructionPromise.then(function () {\n    destroyed = true;\n    local.removeEventListener(MESSAGE, handleMessageEvent);\n  });\n};\n/**\n * @typedef {Object} Child\n * @property {Promise} promise A promise which will be resolved once a connection has\n * been established.\n * @property {HTMLIframeElement} iframe The created iframe element.\n * @property {Function} destroy A method that, when called, will remove the iframe element from\n * the DOM and clean up event listeners.\n */\n\n/**\n * Creates an iframe, loads a webpage into the URL, and attempts to establish communication with\n * the iframe.\n * @param {Object} options\n * @param {string} options.url The URL of the webpage that should be loaded into the created iframe.\n * @param {HTMLElement} [options.appendTo] The container to which the iframe should be appended.\n * @param {Object} [options.methods={}] Methods that may be called by the iframe.\n * @param {Number} [options.timeout] The amount of time, in milliseconds, Penpal should wait\n * for the child to respond before rejecting the connection promise.\n * @return {Child}\n */\n\n\nPenpal.connectToChild = function (_ref2) {\n  var url = _ref2.url,\n      appendTo = _ref2.appendTo,\n      iframe = _ref2.iframe,\n      _ref2$methods = _ref2.methods,\n      methods = _ref2$methods === void 0 ? {} : _ref2$methods,\n      timeout = _ref2.timeout;\n\n  if (iframe && iframe.parentNode) {\n    var error = new Error('connectToChild() must not be called with an iframe already attached to DOM');\n    error.code = ERR_IFRAME_ALREADY_ATTACHED_TO_DOM;\n    throw error;\n  }\n\n  var destroy;\n  var connectionDestructionPromise = new DestructionPromise(function (resolveConnectionDestructionPromise) {\n    destroy = resolveConnectionDestructionPromise;\n  });\n  var parent = window;\n  iframe = iframe || document.createElement('iframe');\n  iframe.src = url;\n  var childOrigin = getOriginFromUrl(url);\n  var promise = new Penpal.Promise(function (resolveConnectionPromise, reject) {\n    var connectionTimeoutId;\n\n    if (timeout !== undefined) {\n      connectionTimeoutId = setTimeout(function () {\n        var error = new Error(\"Connection to child timed out after \".concat(timeout, \"ms\"));\n        error.code = ERR_CONNECTION_TIMEOUT;\n        reject(error);\n        destroy();\n      }, timeout);\n    } // We resolve the promise with the call sender. If the child reconnects (for example, after\n    // refreshing or navigating to another page that uses Penpal, we'll update the call sender\n    // with methods that match the latest provided by the child.\n\n\n    var callSender = {};\n    var receiverMethodNames;\n    var destroyCallReceiver;\n\n    var handleMessage = function handleMessage(event) {\n      var child = iframe.contentWindow;\n\n      if (event.source === child && event.origin === childOrigin && event.data.penpal === HANDSHAKE) {\n        log('Parent: Received handshake, sending reply'); // If event.origin is \"null\", the remote protocol is file:\n        // and we must post messages with \"*\" as targetOrigin [1]\n        // [1] https://developer.mozilla.org/fr/docs/Web/API/Window/postMessage#Utiliser_window.postMessage_dans_les_extensions\n\n        var remoteOrigin = event.origin === \"null\" ? \"*\" : event.origin;\n        event.source.postMessage({\n          penpal: HANDSHAKE_REPLY,\n          methodNames: Object.keys(methods)\n        }, remoteOrigin);\n        var info = {\n          localName: 'Parent',\n          local: parent,\n          remote: child,\n          remoteOrigin: remoteOrigin\n        }; // If the child reconnected, we need to destroy the previous call receiver before setting\n        // up a new one.\n\n        if (destroyCallReceiver) {\n          destroyCallReceiver();\n        } // When this promise is resolved, it will destroy the call receiver (stop listening to\n        // method calls from the child) and delete its methods off the call sender.\n\n\n        var callReceiverDestructionPromise = new DestructionPromise(function (resolveCallReceiverDestructionPromise) {\n          connectionDestructionPromise.then(resolveCallReceiverDestructionPromise);\n          destroyCallReceiver = resolveCallReceiverDestructionPromise;\n        });\n        connectCallReceiver(info, methods, callReceiverDestructionPromise); // If the child reconnected, we need to remove the methods from the previous call receiver\n        // off the sender.\n\n        if (receiverMethodNames) {\n          receiverMethodNames.forEach(function (receiverMethodName) {\n            delete callSender[receiverMethodName];\n          });\n        }\n\n        receiverMethodNames = event.data.methodNames;\n        connectCallSender(callSender, info, receiverMethodNames, destroy, connectionDestructionPromise);\n        clearTimeout(connectionTimeoutId);\n        resolveConnectionPromise(callSender);\n      }\n    };\n\n    parent.addEventListener(MESSAGE, handleMessage);\n    log('Parent: Loading iframe');\n    (appendTo || document.body).appendChild(iframe); // This is to prevent memory leaks when the iframe is removed\n    // from the document and the consumer hasn't called destroy().\n    // Without this, event listeners attached to the window would\n    // stick around and since the event handlers have a reference\n    // to the iframe in their closures, the iframe would stick around\n    // too.\n\n    var checkIframeInDocIntervalId = setInterval(function () {\n      if (!document.contains(iframe)) {\n        clearInterval(checkIframeInDocIntervalId);\n        destroy();\n      }\n    }, CHECK_IFRAME_IN_DOC_INTERVAL);\n    connectionDestructionPromise.then(function () {\n      if (iframe.parentNode) {\n        iframe.parentNode.removeChild(iframe);\n      }\n\n      parent.removeEventListener(MESSAGE, handleMessage);\n      clearInterval(checkIframeInDocIntervalId);\n      var error = new Error('Connection destroyed');\n      error.code = ERR_CONNECTION_DESTROYED;\n      reject(error);\n    });\n  });\n  return {\n    promise: promise,\n    iframe: iframe,\n    destroy: destroy\n  };\n};\n/**\n * @typedef {Object} Parent\n * @property {Promise} promise A promise which will be resolved once a connection has\n * been established.\n */\n\n/**\n * Attempts to establish communication with the parent window.\n * @param {Object} options\n * @param {string} [options.parentOrigin=*] Valid parent origin used to restrict communication.\n * @param {Object} [options.methods={}] Methods that may be called by the parent window.\n * @param {Number} [options.timeout] The amount of time, in milliseconds, Penpal should wait\n * for the parent to respond before rejecting the connection promise.\n * @return {Parent}\n */\n\n\nPenpal.connectToParent = function () {\n  var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref3$parentOrigin = _ref3.parentOrigin,\n      parentOrigin = _ref3$parentOrigin === void 0 ? '*' : _ref3$parentOrigin,\n      _ref3$methods = _ref3.methods,\n      methods = _ref3$methods === void 0 ? {} : _ref3$methods,\n      timeout = _ref3.timeout;\n\n  if (window === window.top) {\n    var error = new Error('connectToParent() must be called within an iframe');\n    error.code = ERR_NOT_IN_IFRAME;\n    throw error;\n  }\n\n  var destroy;\n  var connectionDestructionPromise = new DestructionPromise(function (resolveConnectionDestructionPromise) {\n    destroy = resolveConnectionDestructionPromise;\n  });\n  var child = window;\n  var parent = child.parent;\n  var promise = new Penpal.Promise(function (resolveConnectionPromise, reject) {\n    var connectionTimeoutId;\n\n    if (timeout !== undefined) {\n      connectionTimeoutId = setTimeout(function () {\n        var error = new Error(\"Connection to parent timed out after \".concat(timeout, \"ms\"));\n        error.code = ERR_CONNECTION_TIMEOUT;\n        reject(error);\n        destroy();\n      }, timeout);\n    }\n\n    var handleMessageEvent = function handleMessageEvent(event) {\n      if ((parentOrigin === '*' || parentOrigin === event.origin) && event.source === parent && event.data.penpal === HANDSHAKE_REPLY) {\n        log('Child: Received handshake reply');\n        child.removeEventListener(MESSAGE, handleMessageEvent);\n        var info = {\n          localName: 'Child',\n          local: child,\n          remote: parent,\n          remoteOrigin: event.origin\n        };\n        var callSender = {};\n        connectCallReceiver(info, methods, connectionDestructionPromise);\n        connectCallSender(callSender, info, event.data.methodNames, destroy, connectionDestructionPromise);\n        clearTimeout(connectionTimeoutId);\n        resolveConnectionPromise(callSender);\n      }\n    };\n\n    child.addEventListener(MESSAGE, handleMessageEvent);\n    connectionDestructionPromise.then(function () {\n      child.removeEventListener(MESSAGE, handleMessageEvent);\n      var error = new Error('Connection destroyed');\n      error.code = ERR_CONNECTION_DESTROYED;\n      reject(error);\n    });\n    log('Child: Sending handshake');\n    parent.postMessage({\n      penpal: HANDSHAKE,\n      methodNames: Object.keys(methods)\n    }, parentOrigin);\n  });\n  return {\n    promise: promise,\n    destroy: destroy\n  };\n};\n\nvar _default = Penpal;\nexports.default = _default;","import Meta from './obj.meta'\n\nexport default class Stats {\n  private $meta: Meta\n\n  constructor (meta: Meta) {\n    this.$meta = meta\n  }\n\n  /**\n   * The number of rows in the parsed data\n   */\n  get originalRows (): number {\n    return this.$meta.count_rows\n  }\n\n  /**\n   * The number of rows that were submitted\n   */\n  get acceptedRows (): number | null {\n    return this.$meta.count_rows_accepted || null\n  }\n\n  /**\n   * The number of columns in the parsed data\n   */\n  get originalColumns (): number | null {\n    return this.$meta.count_columns || null\n  }\n\n  /**\n   * The number of columns submitted\n   */\n  get matchedColumns (): number | null {\n    return this.$meta.count_columns_matched || null\n  }\n}\n","import EndUserObject from './obj.end-user'\n\nexport default class EndUser {\n  private $user: EndUserObject\n\n  constructor (meta: EndUserObject) {\n    this.$user = meta\n  }\n\n  /**\n   * The UUID referencing the user's record stored in Flatfile\n   */\n  get id (): string {\n    return this.$user.id\n  }\n\n  /**\n   * Your internal ID reference for this user (required)\n   */\n  get userId (): string {\n    return this.$user.userId\n  }\n\n  /**\n   * The user's full name if you provided it\n   */\n  get name (): string | undefined {\n    return this.$user.name\n  }\n\n  /**\n   * The user's email if you provided it\n   */\n  get email (): string | undefined {\n    return this.$user.name\n  }\n\n  /**\n   * The company name the user is currently operating under\n   */\n  get companyName (): string | undefined {\n    return this.$user.companyName\n  }\n\n  /**\n   * The company name the user is currently operating under\n   */\n  get companyId (): string | undefined {\n    return this.$user.companyId\n  }\n}\n","import FileObject from './obj.file'\n\nexport default class UploadFile {\n  private $file: FileObject\n\n  constructor (file: FileObject) {\n    this.$file = file\n  }\n\n  /**\n   * A unique UUID referencing this file in the Flatfile system\n   */\n  get id () {\n    return this.$file.id\n  }\n\n  /**\n   * The original filename on the user's system\n   */\n  get filename () {\n    return this.$file.filename\n  }\n\n  /**\n   * The size of the file in bytes\n   */\n  get filesize () {\n    return this.$file.filesize\n  }\n\n  /**\n   * The type of file\n   */\n  get filetype () {\n    return this.$file.filetype\n  }\n\n  /**\n   * A securely signed url giving you temporary access to download the file\n   */\n  get url () {\n    return this.$file.url\n  }\n}\n","import { StreamedMeta } from './obj.meta'\nimport RecordObject from './obj.record'\n\nexport default class StreamedResults {\n  /**\n   * Helpful meta information\n   */\n  private $meta: Pick<StreamedMeta, 'hasMore' | 'inChunks' | 'count_rows_accepted' | 'pointer'>\n\n  /**\n   * Raw data output from the importer\n   */\n  private $data: Array<RecordObject>\n\n  constructor (data: Array<RecordObject>, meta: StreamedMeta) {\n    this.$meta = meta\n    this.$data = data\n  }\n\n  /**\n   * The raw output from the importer including all deleted rows\n   * and sequence info\n   */\n  get rawOutput (): Array<RecordObject> {\n    return this.$data\n  }\n\n  /**\n   * An array of valid data, key-mapped to the configuration provided\n   * (alias of validData)\n   */\n  get data (): Array<any> {\n    return this.validData\n  }\n\n  /**\n   * An array of valid data, key-mapped to the configuration provided\n   */\n  get validData (): Array<any> {\n    return this.$data.filter(v => v.valid)\n      .filter(v => !v.deleted)\n      .map(v => v.data)\n  }\n\n  /**\n   * Rows of data the user excluded from the final results,\n   * key-mapped to the configuration provided\n   */\n  get deletedData (): Array<any> {\n    return this.$data.filter(v => v.deleted)\n      .map(v => v.data)\n  }\n\n  /**\n   * All data from the original file upload including deleted rows,\n   * key-mapped to the configuration provided\n   */\n  get allData (): Array<any> {\n    return this.$data.map(v => v.data)\n  }\n\n  /**\n   * The number of remaining chunks in the stream\n   */\n  get remainingChunks (): number {\n    return Math.ceil((this.totalChunks - this.currentChunk) / this.$meta.inChunks)\n  }\n\n  /**\n   * The total number of chunks that will have to be received before data processing is completed\n   */\n  get totalChunks (): number {\n    return Math.ceil(this.$meta.count_rows_accepted / this.$meta.inChunks)\n  }\n\n  /**\n   * The size of chunks as configured when requesting data.\n   */\n  get chunkSize (): number {\n    return this.$meta.inChunks\n  }\n\n  /**\n   * The current chunk by index\n   */\n  get currentChunk (): number {\n    return (this.$meta.pointer + this.chunkSize) / this.chunkSize\n  }\n\n  /**\n   * The current chunk by index\n   */\n  get hasMore (): boolean {\n    return this.$meta.hasMore\n  }\n}\n","import Importer from './index'\nimport Stats from './stats'\nimport Meta from './obj.meta'\nimport RecordObject from './obj.record'\nimport User from './user'\nimport UploadFile from './upload-file'\nimport StreamedResults from './streamed-results'\n\nexport default class FlatfileResults {\n  /**\n   * Information about the import\n   */\n  private $meta: Meta\n\n  /**\n   * Raw data output from the importer\n   */\n  private $data: Array<RecordObject>\n\n  /**\n   * Instance of importer used to manage this file\n   */\n  private $importer: Importer\n\n  constructor (data: Array<RecordObject>, meta: Meta, importer: Importer) {\n    this.$meta = meta\n    this.$data = data\n    this.$importer = importer\n  }\n\n  /**\n   * The raw output from the importer including all deleted rows\n   * and sequence info\n   */\n  get rawOutput (): Array<RecordObject> {\n    return this.blobOnly(this.$data, 'rawOutput')\n  }\n\n  /**\n   * An array of valid data, key-mapped to the configuration provided\n   * (alias of validData)\n   */\n  get data (): Array<any> {\n    return this.blobOnly(this.validData, 'data')\n  }\n\n  /**\n   * An array of valid data, key-mapped to the configuration provided\n   */\n  get validData (): Array<any> {\n    const res = this.$data.filter(v => v.valid)\n                          .filter(v => !v.deleted)\n                          .map(v => v.data)\n    return this.blobOnly(res, 'validData')\n  }\n\n  /**\n   * Rows of data the user excluded from the final results,\n   * key-mapped to the configuration provided\n   */\n  get deletedData (): Array<any> {\n    const res = this.$data.filter(v => v.deleted)\n                          .map(v => v.data)\n    return this.blobOnly(res, 'deletedData')\n  }\n\n  /**\n   * All data from the original file upload including deleted rows,\n   * key-mapped to the configuration provided\n   */\n  get allData (): Array<any> {\n    return this.blobOnly(this.$data.map(v => v.data), 'allData')\n  }\n\n  /**\n   * The uuid of the batch assigned by Flatfile (use this in internal\n   * references for support purposes)\n   */\n  get batchId (): string {\n    return this.$meta.batchID\n  }\n\n  /**\n   * Stats and counts about this file upload\n   */\n  get stats (): Stats {\n    return new Stats(this.$meta)\n  }\n\n  /**\n   * The customer provided in setCustomer\n   */\n  get customer (): User | null {\n    if (this.$meta.endUser) {\n      return new User(this.$meta.endUser)\n    }\n    return null\n  }\n\n  /**\n   * A File object of the originally uploaded file stored as an AWS url\n   */\n  get originalFile (): UploadFile | null {\n    if (this.$meta.originalFile) {\n      return new UploadFile(this.$meta.originalFile)\n    }\n    return null\n  }\n\n  /**\n   * Same as originalFile unless it was uploaded in xls format, in which case this is the converted csv file stored as an AWS url\n   */\n  get csvFile (): UploadFile | null {\n    if (this.$meta.originalFile) {\n      if (this.$meta.originalFile.filetype === 'csv') {\n        return new UploadFile(this.$meta.originalFile)\n      } else {\n        if (this.$meta.csvFile) {\n          return new UploadFile(this.$meta.csvFile)\n        }\n      }\n    }\n    return null\n  }\n\n  /**\n   * The filename of the originally uploaded file\n   */\n  get fileName (): string | null {\n    return this.$meta.filename || null\n  }\n\n  /**\n   * If the final upload is managed by a private endpoint or not\n   */\n  get managed (): boolean {\n    return this.$meta.managed || false\n  }\n\n  /**\n   * If the data was entered manually instead of via file upload or not\n   */\n  get manual (): boolean {\n    return this.$meta.manual\n  }\n\n  /**\n   * The parsed and bootstrapped config object used by this importer instance\n   */\n  get config (): object {\n    return this.$meta.config\n  }\n\n  /**\n   * The configuration used by the csv parser PapaParse: https://www.papaparse.com/docs#config\n   */\n  get parsingConfig (): object {\n    return this.$meta.parsing_config\n  }\n\n  /**\n   * The invalid rows that were skipped on submission\n   */\n  get skippedRows (): number | null {\n    return this.$meta.skipped_rows || null\n  }\n\n  /**\n   * The headers before they were matched as given in the original file\n   */\n  get headersRaw (): Array<object> | null {\n    return this.$meta.headers_raw || null\n  }\n\n  /**\n   * The headers after they are matched\n   */\n  get headersMatched (): Array<object> | null {\n    return this.$meta.headers_matched || null\n  }\n\n  /**\n   * Get the next chunk of records\n   */\n  nextChunk (): Promise<null | StreamedResults> {\n    return new Promise((resolve, reject) => {\n      if (!this.$meta.inChunks) {\n        return reject(`\"nextChunk()\" is only accessible when using \"inChunks\". Please see docs for \"requestDataFromUser\".`)\n      }\n      this.$importer.$ready.then((child) => {\n        console.log('child.nextChunk()')\n        child.nextChunk().then((data) => {\n          console.log('nextChunk()', data)\n          resolve(data.results.length ? new StreamedResults(data.results, data.meta) : null)\n        }, (err) => {\n          console.log('nextChunk(err)', err)\n        })\n      })\n    })\n  }\n\n  /**\n   * An array of any columns that were created during import\n   */\n  get customColumns (): Array<object> {\n    return this.$meta.custom_columns\n  }\n\n  /**\n   * The reason for the failure if there was a failure\n   */\n  get failureReason (): string | null {\n    return this.$meta.failure_reason || null\n  }\n\n  /**\n   * The time that the data was submitted\n   */\n  get submittedAt (): string | null {\n    return this.$meta.submitted_at || null\n  }\n\n  /**\n   * The time that the import failed if it failed\n   */\n  get failedAt (): string | null {\n    return this.$meta.failed_at || null\n  }\n\n  /**\n   * The time the data began the import, whether via file upload or manual data entry\n   */\n  get createdAt (): string {\n    return this.$meta.created_at\n  }\n\n  private blobOnly <T> (v: T, method, alt = 'nextChunk()'): T {\n    if (this.$meta.inChunks) {\n      throw new Error(`\"${method}\" is not accessible when using \"inChunks\". Please see docs for \"${alt}\" instead.`)\n    }\n    return v\n  }\n}\n","import 'promise-polyfill/dist/polyfill'\n\nimport { EventEmitter } from 'eventemitter3'\nimport whenDomReady from 'when-dom-ready'\nimport insertCss from 'insert-css'\nimport elementClass from 'element-class'\nimport Penpal from 'penpal'\nimport FlatfileResults from './results'\nimport Meta from './obj.meta'\nimport RecordObject from './obj.record'\nimport CustomerObject from './obj.customer'\nimport LoadOptionsObject from './obj.load-options'\nimport IValidationResponse, { IDataHookRecord, IDataHookResponse } from './obj.validation-response'\n\nexport default class FlatfileImporter extends EventEmitter {\n\n  public static Promise = Promise\n  private static MOUNT_URL: string = 'https://kiosk-lite.flatfile.io/?key=:key'\n\n  /**\n   * Promise that resolves when the handshake is completed between Flatfile.io and the adapter\n   */\n  public $ready: Promise<any>\n\n  private apiKey: string\n  private options: object\n  private customer?: CustomerObject\n  private uuid: string\n\n  // @ts-ignore\n  private handshake: Penpal.IChildConnectionObject\n\n  private $resolver: (data: any) => any\n  private $rejecter: (err: any) => any\n  private $validatorCallback?: (row: { [key: string]: string | number }) => Array<IValidationResponse> | Promise<Array<IValidationResponse>>\n  private $recordHook?: (row: { [key: string]: string | number }, index: number, mode: string) => IDataHookResponse | Promise<IDataHookResponse>\n  private $fieldHooks: Array<{ field: string, cb: FieldHookCallback }> = []\n\n  constructor (apiKey: string, options: object, customer?: CustomerObject) {\n    super()\n    this.apiKey = apiKey\n    this.options = options\n    this.customer = customer\n    this.uuid = this.$generateUuid()\n    this.$ready = new FlatfileImporter.Promise((resolve, reject) => {\n      this.$resolver = resolve\n      this.$rejecter = reject\n    })\n\n    whenDomReady(() => {\n      this.initialize()\n    })\n  }\n\n  /**\n   * This will by default always be `https://www.flatfile.io/importer/:key` unless you are\n   * an enterprise customer that is self-hosting the application. In which case, this\n   * will be the URL of your enterprise installd Flatfile importer index page\n   */\n  public static setMountUrl (url: string): void {\n    this.MOUNT_URL = url\n  }\n\n  /**\n   * This allows you to opt into or out of specific versions of the Flatfile SDK\n   */\n  public static setVersion (version: 1 | 2): void {\n    switch (version) {\n      case 1:\n        this.MOUNT_URL = 'https://kiosk-lite.flatfile.io/?key=:key'\n        break\n      case 2:\n        this.MOUNT_URL = 'https://portal-2.flatfile.io/?key=:key'\n        break\n      default:\n        throw new Error(`${version} is not a valid version`)\n    }\n  }\n\n  /**\n   * Call open() to activate the importer overlay dialog.\n   */\n  open (options = {}): void {\n    options = {\n      ...options,\n      hasRecordHook: !!this.$recordHook,\n      fieldHooks: this.$fieldHooks.map(v => v.field),\n      endUser: this.customer\n    }\n    this.$ready.then((child) => {\n      elementClass(document.body).add('flatfile-active')\n      let el = document.getElementById(`flatfile-${this.uuid}`)\n      if (el) {\n        el.style.display = 'block'\n      }\n      child.open(options)\n    })\n  }\n\n  /**\n   * Use load() when you want a promise returned. This is necessary if you want to use\n   * async/await for an es6 implementation\n   * @deprecated\n   */\n  load (): Promise<Array<Object>> {\n    return new FlatfileImporter.Promise((resolve, reject) => {\n      this.open()\n\n      const cleanup = () => {\n        this.removeListener('close', loadRejectHandler)\n        this.removeListener('complete', loadResolveHandler)\n      }\n\n      function loadResolveHandler (rows: Array<Object>) {\n        resolve(rows)\n        cleanup()\n      }\n\n      function loadRejectHandler (err) {\n        reject(err)\n        cleanup()\n      }\n\n      this.on('close', loadRejectHandler)\n      this.on('complete', loadResolveHandler)\n    })\n  }\n\n  /**\n   * Use requestDataFromUser() when you want a promise returned. This is necessary if you want to use\n   * async/await for an es6 implementation\n   */\n  requestDataFromUser (options: LoadOptionsObject = {}): Promise<FlatfileResults> {\n    this.open({...options, inChunks: options.inChunks || null, expectsExpandedResults: true})\n    return this.responsePromise()\n  }\n\n  /**\n   * This will display a progress indicator inside the importer if you anticipate that handling\n   * the output of the importer may take some time.\n   */\n  displayLoader (msg?: string): void {\n    this.$ready.then((child) => {\n      child.displayLoader(msg)\n    })\n  }\n\n  /**\n   * This will display a dialog inside of the importer with an error icon and the message you\n   * pass. The user will be able to acknowledge the error and be returned to the import data\n   * spreadsheet to ideally fix any issues or attempt submitting again.\n   * @deprecated\n   */\n  displayError (msg: string): void {\n    this.$ready.then((child) => {\n      child.displayError(msg)\n    })\n  }\n\n  /**\n   * This will display a dialog inside of the importer with an error icon and the message you\n   * pass. The user will be able to acknowledge the error and be returned to the import data\n   * spreadsheet to ideally fix any issues or attempt submitting again.\n   */\n  requestCorrectionsFromUser (msg): Promise<FlatfileResults> {\n    this.$ready.then((child) => {\n      child.displayError(msg)\n    })\n    return this.responsePromise()\n  }\n\n  /**\n   * This will display a dialog inside of the importer with a success icon and the message you\n   * pass.\n   */\n  displaySuccess (msg: string): void {\n    this.$ready.then((child) => {\n      child.displaySuccess(msg)\n    })\n  }\n\n  /**\n   * This will fetch the data from the importer\n   */\n  getMeta (): object {\n    return new Promise((resolve, reject) => {\n      this.$ready.then((child) => {\n        child.getMeta()\n          .then(resolve)\n          .catch(reject)\n      }).catch(reject)\n    })\n  }\n\n  /**\n   * Set the customer information for this import\n   */\n  setCustomer (customer: CustomerObject): void {\n    this.customer = customer\n  }\n\n  /**\n   * Set the customer information for this import\n   */\n  registerValidatorCallback (callback: FlatfileImporter['$validatorCallback']): void {\n    this.$validatorCallback = callback\n    this.$ready.then((child) => {\n      child.parentHasValidator()\n    })\n  }\n\n  /**\n   * Set the customer information for this import\n   */\n  registerRecordHook (callback: FlatfileImporter['$recordHook']): void {\n    this.$recordHook = callback\n  }\n\n  /**\n   * Set the customer information for this import\n   */\n  registerFieldHook (field: string, cb: FieldHookCallback): void {\n    this.$fieldHooks.push({field, cb})\n  }\n\n  /**\n   * Call close() from the parent window in order to hide the importer. You can do this after\n   * handling the import callback so your users don't have to click the confirmation button\n   */\n  close () {\n    this.$ready.then((child) => {\n      child.close()\n    })\n  }\n\n  private handleClose () {\n    elementClass(document.body).remove('flatfile-active')\n    let el = document.getElementById(`flatfile-${this.uuid}`)\n    if (el) {\n      el.style.display = 'none'\n    }\n  }\n\n  private initialize () {\n    insertCss(`\n      .flatfile-component {\n        position: fixed;\n        top: 0;\n        bottom: 0;\n        right: 0;\n        left: 0;\n        display: none;\n        z-index: 100000;\n      }\n      .flatfile-component iframe {\n        width: 100%;\n        height: 100%;\n        position: absolute;\n        border-width: 0;\n      }\n      body.flatfile-active {\n        overflow: hidden;\n        overscroll-behavior-x: none;\n      }\n    `)\n\n    document.body.insertAdjacentHTML('beforeend', `<div id=\"flatfile-${this.uuid}\" class=\"flatfile-component\"></div>`)\n    this.handshake = Penpal.connectToChild({\n      appendTo: document.getElementById(`flatfile-${this.uuid}`) || undefined,\n      url: FlatfileImporter.MOUNT_URL.replace(':key', this.apiKey),\n      methods: {\n        results: (data) => {\n          this.emit('results', data.results, data.meta)\n        },\n        complete: (data) => {\n          this.emit('complete', data.rows, data.meta)\n        },\n        close: () => {\n          this.emit('close')\n          this.handleClose()\n        },\n        validatorCallback: (row) => {\n          return this.$validatorCallback ? this.$validatorCallback(row) : undefined\n        },\n        dataHookCallback: (row, index, mode) => {\n          return this.$recordHook ? this.$recordHook(row, index, mode) : undefined\n        },\n        fieldHookCallback: (values, meta) => {\n          const fieldHook = this.$fieldHooks.find(v => v.field === meta.field)\n          if (!fieldHook) {\n            return undefined\n          }\n          return fieldHook.cb(values, meta)\n        },\n        ready: () => {\n          this.handshake.promise.then((child) => {\n            this.$resolver(child)\n            if (this.customer) {\n              child.setUser(this.customer)\n            }\n          }).catch((err) => {\n            console.error(err)\n          })\n          return this.options\n        }\n      }\n    })\n\n    this.handshake.promise.catch((err) => {\n      this.$rejecter(err)\n    })\n  }\n\n  private $generateUuid (): string {\n    return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)\n  }\n\n  private responsePromise (): Promise<FlatfileResults> {\n    return new Promise((resolve, reject) => {\n      const loadResolveHandler = async (rows: Array<RecordObject>, meta: object) => {\n        const results = new FlatfileResults(rows, meta as Meta, this)\n        resolve(results)\n        cleanup()\n      }\n\n      function loadRejectHandler (err) {\n        reject(err)\n        cleanup()\n      }\n\n      const self = this\n\n      function cleanup () {\n        self.removeListener('close', loadRejectHandler)\n        self.removeListener('results', loadResolveHandler)\n      }\n\n      this.on('close', loadRejectHandler)\n      this.on('results', loadResolveHandler)\n    })\n  }\n}\n\nexport type Scalar = string | number | boolean | null | undefined\n\nexport type FieldHookCallback = (values: [Scalar, number][], meta: any) => [IDataHookRecord, number][] | Promise<[IDataHookRecord, number][]>\n"]}