{"version":3,"file":"index.mjs","sources":["../node_modules/insert-css/index.js","../node_modules/penpal/lib/enums.js","../node_modules/penpal/lib/createDestructor.js","../node_modules/penpal/lib/createLogger.js","../node_modules/penpal/lib/parent/getOriginFromSrc.js","../node_modules/penpal/lib/errorSerialization.js","../node_modules/penpal/lib/connectCallReceiver.js","../node_modules/penpal/lib/generateId.js","../node_modules/penpal/lib/methodSerialization.js","../node_modules/penpal/lib/connectCallSender.js","../node_modules/penpal/lib/parent/handleAckMessageFactory.js","../node_modules/penpal/lib/parent/handleSynMessageFactory.js","../node_modules/penpal/lib/parent/monitorIframeRemoval.js","../node_modules/penpal/lib/startConnectionTimeout.js","../node_modules/penpal/lib/parent/validateIframeHasSrcOrSrcDoc.js","../node_modules/penpal/lib/parent/connectToChild.js","../node_modules/when-dom-ready/dist/index.es2015.js","../src/lib/useCsvPlugin.ts"],"sourcesContent":["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","export var MessageType;\n(function (MessageType) {\n    MessageType[\"Call\"] = \"call\";\n    MessageType[\"Reply\"] = \"reply\";\n    MessageType[\"Syn\"] = \"syn\";\n    MessageType[\"SynAck\"] = \"synAck\";\n    MessageType[\"Ack\"] = \"ack\";\n})(MessageType || (MessageType = {}));\nexport var Resolution;\n(function (Resolution) {\n    Resolution[\"Fulfilled\"] = \"fulfilled\";\n    Resolution[\"Rejected\"] = \"rejected\";\n})(Resolution || (Resolution = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"ConnectionDestroyed\"] = \"ConnectionDestroyed\";\n    ErrorCode[\"ConnectionTimeout\"] = \"ConnectionTimeout\";\n    ErrorCode[\"NoIframeSrc\"] = \"NoIframeSrc\";\n})(ErrorCode || (ErrorCode = {}));\nexport var NativeErrorName;\n(function (NativeErrorName) {\n    NativeErrorName[\"DataCloneError\"] = \"DataCloneError\";\n})(NativeErrorName || (NativeErrorName = {}));\nexport var NativeEventType;\n(function (NativeEventType) {\n    NativeEventType[\"Message\"] = \"message\";\n})(NativeEventType || (NativeEventType = {}));\n","export default (localName, log) => {\n    const callbacks = [];\n    let destroyed = false;\n    return {\n        destroy(error) {\n            if (!destroyed) {\n                destroyed = true;\n                log(`${localName}: Destroying connection`);\n                callbacks.forEach((callback) => {\n                    callback(error);\n                });\n            }\n        },\n        onDestroy(callback) {\n            destroyed ? callback() : callbacks.push(callback);\n        },\n    };\n};\n","export default (debug) => {\n    /**\n     * Logs a message if debug is enabled.\n     */\n    return (...args) => {\n        if (debug) {\n            console.log('[Penpal]', ...args); // eslint-disable-line no-console\n        }\n    };\n};\n","const DEFAULT_PORT_BY_PROTOCOL = {\n    'http:': '80',\n    'https:': '443',\n};\nconst URL_REGEX = /^(https?:)?\\/\\/([^/:]+)?(:(\\d+))?/;\nconst opaqueOriginSchemes = ['file:', 'data:'];\n/**\n * Converts a src value into an origin.\n */\nexport default (src) => {\n    if (src && opaqueOriginSchemes.find((scheme) => src.startsWith(scheme))) {\n        // The origin of the child document is an opaque origin and its\n        // serialization is \"null\"\n        // https://html.spec.whatwg.org/multipage/origin.html#origin\n        return 'null';\n    }\n    // Note that if src is undefined, then srcdoc is being used instead of src\n    // and we can follow this same logic below to get the origin of the parent,\n    // which is the origin that we will need to use.\n    const location = document.location;\n    const regexResult = URL_REGEX.exec(src);\n    let protocol;\n    let hostname;\n    let port;\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    }\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    }\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    const portSuffix = port && port !== DEFAULT_PORT_BY_PROTOCOL[protocol] ? `:${port}` : '';\n    return `${protocol}//${hostname}${portSuffix}`;\n};\n","/**\n * Converts an error object into a plain object.\n */\nexport const serializeError = ({ name, message, stack, }) => ({\n    name,\n    message,\n    stack,\n});\n/**\n * Converts a plain object into an error object.\n */\nexport const deserializeError = (obj) => {\n    const deserializedError = new Error();\n    // @ts-ignore\n    Object.keys(obj).forEach((key) => (deserializedError[key] = obj[key]));\n    return deserializedError;\n};\n","import { serializeError } from './errorSerialization';\nimport { MessageType, NativeEventType, NativeErrorName, Resolution, } from './enums';\n/**\n * Listens for \"call\" messages coming from the remote, executes the corresponding method, and\n * responds with the return value.\n */\nexport default (info, serializedMethods, log) => {\n    const { localName, local, remote, originForSending, originForReceiving, } = info;\n    let destroyed = false;\n    const handleMessageEvent = (event) => {\n        if (event.source !== remote || event.data.penpal !== MessageType.Call) {\n            return;\n        }\n        if (originForReceiving !== '*' && event.origin !== originForReceiving) {\n            log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);\n            return;\n        }\n        const callMessage = event.data;\n        const { methodName, args, id } = callMessage;\n        log(`${localName}: Received ${methodName}() call`);\n        const createPromiseHandler = (resolution) => {\n            return (returnValue) => {\n                log(`${localName}: Sending ${methodName}() reply`);\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(`${localName}: Unable to send ${methodName}() reply due to destroyed connection`);\n                    return;\n                }\n                const message = {\n                    penpal: MessageType.Reply,\n                    id,\n                    resolution,\n                    returnValue,\n                };\n                if (resolution === Resolution.Rejected &&\n                    returnValue instanceof Error) {\n                    message.returnValue = serializeError(returnValue);\n                    message.returnValueIsError = true;\n                }\n                try {\n                    remote.postMessage(message, originForSending);\n                }\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 === NativeErrorName.DataCloneError) {\n                        const errorReplyMessage = {\n                            penpal: MessageType.Reply,\n                            id,\n                            resolution: Resolution.Rejected,\n                            returnValue: serializeError(err),\n                            returnValueIsError: true,\n                        };\n                        remote.postMessage(errorReplyMessage, originForSending);\n                    }\n                    throw err;\n                }\n            };\n        };\n        new Promise((resolve) => resolve(serializedMethods[methodName].apply(serializedMethods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));\n    };\n    local.addEventListener(NativeEventType.Message, handleMessageEvent);\n    return () => {\n        destroyed = true;\n        local.removeEventListener(NativeEventType.Message, handleMessageEvent);\n    };\n};\n","let id = 0;\n/**\n * @return {number} A unique ID (not universally unique)\n */\nexport default () => ++id;\n","const KEY_PATH_DELIMITER = '.';\nconst keyPathToSegments = (keyPath) => keyPath ? keyPath.split(KEY_PATH_DELIMITER) : [];\nconst segmentsToKeyPath = (segments) => segments.join(KEY_PATH_DELIMITER);\nconst createKeyPath = (key, prefix) => {\n    const segments = keyPathToSegments(prefix || '');\n    segments.push(key);\n    return segmentsToKeyPath(segments);\n};\n/**\n * Given a `keyPath`, set it to be `value` on `subject`, creating any intermediate\n * objects along the way.\n *\n * @param {Object} subject The object on which to set value.\n * @param {string} keyPath The key path at which to set value.\n * @param {Object} value The value to store at the given key path.\n * @returns {Object} Updated subject.\n */\nexport const setAtKeyPath = (subject, keyPath, value) => {\n    const segments = keyPathToSegments(keyPath);\n    segments.reduce((prevSubject, key, idx) => {\n        if (typeof prevSubject[key] === 'undefined') {\n            prevSubject[key] = {};\n        }\n        if (idx === segments.length - 1) {\n            prevSubject[key] = value;\n        }\n        return prevSubject[key];\n    }, subject);\n    return subject;\n};\n/**\n * Given a dictionary of (nested) keys to function, flatten them to a map\n * from key path to function.\n *\n * @param {Object} methods The (potentially nested) object to serialize.\n * @param {string} prefix A string with which to prefix entries. Typically not intended to be used by consumers.\n * @returns {Object} An map from key path in `methods` to functions.\n */\nexport const serializeMethods = (methods, prefix) => {\n    const flattenedMethods = {};\n    Object.keys(methods).forEach((key) => {\n        const value = methods[key];\n        const keyPath = createKeyPath(key, prefix);\n        if (typeof value === 'object') {\n            // Recurse into any nested children.\n            Object.assign(flattenedMethods, serializeMethods(value, keyPath));\n        }\n        if (typeof value === 'function') {\n            // If we've found a method, expose it.\n            flattenedMethods[keyPath] = value;\n        }\n    });\n    return flattenedMethods;\n};\n/**\n * Given a map of key paths to functions, unpack the key paths to an object.\n *\n * @param {Object} flattenedMethods A map of key paths to functions to unpack.\n * @returns {Object} A (potentially nested) map of functions.\n */\nexport const deserializeMethods = (flattenedMethods) => {\n    const methods = {};\n    for (const keyPath in flattenedMethods) {\n        setAtKeyPath(methods, keyPath, flattenedMethods[keyPath]);\n    }\n    return methods;\n};\n","import generateId from './generateId';\nimport { deserializeError } from './errorSerialization';\nimport { deserializeMethods } from './methodSerialization';\nimport { ErrorCode, MessageType, NativeEventType, Resolution } from './enums';\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} methodKeyPaths Key paths 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 */\nexport default (callSender, info, methodKeyPaths, destroyConnection, log) => {\n    const { localName, local, remote, originForSending, originForReceiving, } = info;\n    let destroyed = false;\n    log(`${localName}: Connecting call sender`);\n    const createMethodProxy = (methodName) => {\n        return (...args) => {\n            log(`${localName}: Sending ${methodName}() call`);\n            // 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. We wrap this check in a try catch\n            // because Edge throws an \"Object expected\" error when accessing\n            // contentWindow.closed on a contentWindow from an iframe that's been\n            // removed from the DOM.\n            let iframeRemoved;\n            try {\n                if (remote.closed) {\n                    iframeRemoved = true;\n                }\n            }\n            catch (e) {\n                iframeRemoved = true;\n            }\n            if (iframeRemoved) {\n                destroyConnection();\n            }\n            if (destroyed) {\n                const error = new Error(`Unable to send ${methodName}() call due ` + `to destroyed connection`);\n                error.code = ErrorCode.ConnectionDestroyed;\n                throw error;\n            }\n            return new Promise((resolve, reject) => {\n                const id = generateId();\n                const handleMessageEvent = (event) => {\n                    if (event.source !== remote ||\n                        event.data.penpal !== MessageType.Reply ||\n                        event.data.id !== id) {\n                        return;\n                    }\n                    if (originForReceiving !== '*' &&\n                        event.origin !== originForReceiving) {\n                        log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);\n                        return;\n                    }\n                    const replyMessage = event.data;\n                    log(`${localName}: Received ${methodName}() reply`);\n                    local.removeEventListener(NativeEventType.Message, handleMessageEvent);\n                    let returnValue = replyMessage.returnValue;\n                    if (replyMessage.returnValueIsError) {\n                        returnValue = deserializeError(returnValue);\n                    }\n                    (replyMessage.resolution === Resolution.Fulfilled ? resolve : reject)(returnValue);\n                };\n                local.addEventListener(NativeEventType.Message, handleMessageEvent);\n                const callMessage = {\n                    penpal: MessageType.Call,\n                    id,\n                    methodName,\n                    args,\n                };\n                remote.postMessage(callMessage, originForSending);\n            });\n        };\n    };\n    // Wrap each method in a proxy which sends it to the corresponding receiver.\n    const flattenedMethods = methodKeyPaths.reduce((api, name) => {\n        api[name] = createMethodProxy(name);\n        return api;\n    }, {});\n    // Unpack the structure of the provided methods object onto the CallSender, exposing\n    // the methods in the same shape they were provided.\n    Object.assign(callSender, deserializeMethods(flattenedMethods));\n    return () => {\n        destroyed = true;\n    };\n};\n","import connectCallReceiver from '../connectCallReceiver';\nimport connectCallSender from '../connectCallSender';\n/**\n * Handles an ACK handshake message.\n */\nexport default (serializedMethods, childOrigin, originForSending, destructor, log) => {\n    const { destroy, onDestroy } = destructor;\n    let destroyCallReceiver;\n    let receiverMethodNames;\n    // We resolve the promise with the call sender. If the child reconnects\n    // (for example, after refreshing or navigating to another page that\n    // uses Penpal, we'll update the call sender with methods that match the\n    // latest provided by the child.\n    const callSender = {};\n    return (event) => {\n        if (childOrigin !== '*' && event.origin !== childOrigin) {\n            log(`Parent: Handshake - Received ACK message from origin ${event.origin} which did not match expected origin ${childOrigin}`);\n            return;\n        }\n        log('Parent: Handshake - Received ACK');\n        const info = {\n            localName: 'Parent',\n            local: window,\n            remote: event.source,\n            originForSending: originForSending,\n            originForReceiving: childOrigin,\n        };\n        // If the child reconnected, we need to destroy the prior call receiver\n        // before setting up a new one.\n        if (destroyCallReceiver) {\n            destroyCallReceiver();\n        }\n        destroyCallReceiver = connectCallReceiver(info, serializedMethods, log);\n        onDestroy(destroyCallReceiver);\n        // If the child reconnected, we need to remove the methods from the\n        // previous call receiver off the sender.\n        if (receiverMethodNames) {\n            receiverMethodNames.forEach((receiverMethodName) => {\n                delete callSender[receiverMethodName];\n            });\n        }\n        receiverMethodNames = event.data.methodNames;\n        const destroyCallSender = connectCallSender(callSender, info, receiverMethodNames, destroy, log);\n        onDestroy(destroyCallSender);\n        return callSender;\n    };\n};\n","import { MessageType } from '../enums';\n/**\n * Handles a SYN handshake message.\n */\nexport default (log, serializedMethods, childOrigin, originForSending) => {\n    return (event) => {\n        // Under specific timing circumstances, we can receive an event\n        // whose source is null. This seems to happen when the child iframe is\n        // removed from the DOM about the same time it has sent the SYN event.\n        // https://github.com/Aaronius/penpal/issues/85\n        if (!event.source) {\n            return;\n        }\n        if (childOrigin !== '*' && event.origin !== childOrigin) {\n            log(`Parent: Handshake - Received SYN message from origin ${event.origin} which did not match expected origin ${childOrigin}`);\n            return;\n        }\n        log('Parent: Handshake - Received SYN, responding with SYN-ACK');\n        const synAckMessage = {\n            penpal: MessageType.SynAck,\n            methodNames: Object.keys(serializedMethods),\n        };\n        event.source.postMessage(synAckMessage, originForSending);\n    };\n};\n","const CHECK_IFRAME_IN_DOC_INTERVAL = 60000;\n/**\n * Monitors for iframe removal and destroys connection if iframe\n * is found to have been removed from DOM. This is to prevent memory\n * leaks when the iframe is removed from the document and the consumer\n * hasn't called destroy(). Without this, event listeners attached to\n * the window would stick around and since the event handlers have a\n * reference to the iframe in their closures, the iframe would stick\n * around too.\n */\nexport default (iframe, destructor) => {\n    const { destroy, onDestroy } = destructor;\n    const checkIframeInDocIntervalId = setInterval(() => {\n        if (!iframe.isConnected) {\n            clearInterval(checkIframeInDocIntervalId);\n            destroy();\n        }\n    }, CHECK_IFRAME_IN_DOC_INTERVAL);\n    onDestroy(() => {\n        clearInterval(checkIframeInDocIntervalId);\n    });\n};\n","import { ErrorCode } from './enums';\n/**\n * Starts a timeout and calls the callback with an error\n * if the timeout completes before the stop function is called.\n */\nexport default (timeout, callback) => {\n    let timeoutId;\n    if (timeout !== undefined) {\n        timeoutId = window.setTimeout(() => {\n            const error = new Error(`Connection timed out after ${timeout}ms`);\n            error.code = ErrorCode.ConnectionTimeout;\n            callback(error);\n        }, timeout);\n    }\n    return () => {\n        clearTimeout(timeoutId);\n    };\n};\n","import { ErrorCode } from '../enums';\nexport default (iframe) => {\n    if (!iframe.src && !iframe.srcdoc) {\n        const error = new Error('Iframe must have src or srcdoc property defined.');\n        error.code = ErrorCode.NoIframeSrc;\n        throw error;\n    }\n};\n","import { MessageType, NativeEventType } from '../enums';\nimport createDestructor from '../createDestructor';\nimport createLogger from '../createLogger';\nimport getOriginFromSrc from './getOriginFromSrc';\nimport handleAckMessageFactory from './handleAckMessageFactory';\nimport handleSynMessageFactory from './handleSynMessageFactory';\nimport { serializeMethods } from '../methodSerialization';\nimport monitorIframeRemoval from './monitorIframeRemoval';\nimport startConnectionTimeout from '../startConnectionTimeout';\nimport validateIframeHasSrcOrSrcDoc from './validateIframeHasSrcOrSrcDoc';\n/**\n * Attempts to establish communication with an iframe.\n */\nexport default (options) => {\n    let { iframe, methods = {}, childOrigin, timeout, debug = false } = options;\n    const log = createLogger(debug);\n    const destructor = createDestructor('Parent', log);\n    const { onDestroy, destroy } = destructor;\n    if (!childOrigin) {\n        validateIframeHasSrcOrSrcDoc(iframe);\n        childOrigin = getOriginFromSrc(iframe.src);\n    }\n    // If event.origin is \"null\", the remote protocol is file: or data: and we\n    // must post messages with \"*\" as targetOrigin when sending messages.\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Using_window.postMessage_in_extensions\n    const originForSending = childOrigin === 'null' ? '*' : childOrigin;\n    const serializedMethods = serializeMethods(methods);\n    const handleSynMessage = handleSynMessageFactory(log, serializedMethods, childOrigin, originForSending);\n    const handleAckMessage = handleAckMessageFactory(serializedMethods, childOrigin, originForSending, destructor, log);\n    const promise = new Promise((resolve, reject) => {\n        const stopConnectionTimeout = startConnectionTimeout(timeout, destroy);\n        const handleMessage = (event) => {\n            if (event.source !== iframe.contentWindow || !event.data) {\n                return;\n            }\n            if (event.data.penpal === MessageType.Syn) {\n                handleSynMessage(event);\n                return;\n            }\n            if (event.data.penpal === MessageType.Ack) {\n                const callSender = handleAckMessage(event);\n                if (callSender) {\n                    stopConnectionTimeout();\n                    resolve(callSender);\n                }\n                return;\n            }\n        };\n        window.addEventListener(NativeEventType.Message, handleMessage);\n        log('Parent: Awaiting handshake');\n        monitorIframeRemoval(iframe, destructor);\n        onDestroy((error) => {\n            window.removeEventListener(NativeEventType.Message, handleMessage);\n            if (error) {\n                reject(error);\n            }\n        });\n    });\n    return {\n        promise,\n        destroy() {\n            // Don't allow consumer to pass an error into destroy.\n            destroy();\n        },\n    };\n};\n","/* eslint no-void: \"off\" */\n\n// Loaded ready states\nvar loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nvar whenDomReady = function whenDomReady(cb, doc) {\n\treturn new Promise(function (resolve) {\n\t\t// Allow doc to be passed in as the lone first param\n\t\tif (cb && typeof cb !== 'function') {\n\t\t\tdoc = cb;\n\t\t\tcb = null;\n\t\t}\n\n\t\t// Use global document if we don't have one\n\t\tdoc = doc || window.document;\n\n\t\t// Handle DOM load\n\t\tvar done = function done() {\n\t\t\treturn resolve(void (cb && setTimeout(cb)));\n\t\t};\n\n\t\t// Resolve now if DOM has already loaded\n\t\t// Otherwise wait for DOMContentLoaded\n\t\tif (loadedStates.indexOf(doc.readyState) !== -1) {\n\t\t\tdone();\n\t\t} else {\n\t\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t\t}\n\t});\n};\n\n// Promise chain helper\nwhenDomReady.resume = function (doc) {\n\treturn function (val) {\n\t\treturn whenDomReady(doc).then(function () {\n\t\t\treturn val;\n\t\t});\n\t};\n};\n\nexport default whenDomReady;\n//# sourceMappingURL=index.es2015.js.map\n","import { insertCss } from \"insert-css\";\nimport { connectToChild } from \"penpal\";\nimport whenDomReady from \"when-dom-ready\";\n\nimport type {\n  columnWidthType,\n  CsvData,\n  customTextType,\n  DynamicColumnsType,\n  fileFormats,\n  Language,\n  onDataResponseWithBatching,\n  onDataResponseWithoutBatching,\n  onErrorType,\n  onFileUploadType,\n  onMatchColumnsType,\n  onRecordEditType,\n  onRecordsInitialType,\n  ThemeType,\n} from \"./types\";\n\n// eslint-disable-next-line dot-notation\nconst MOUNT_URL = process.env[\"MOUNT_URL\"] || \"http://localhost:3000/importer\";\n\nconst insertIframe = (id: string, importerDisplay: \"inline\" | \"modal\", iframeId?: string) => {\n  const usecsvInlineWrapper = document.getElementById(\"usecsv-importer-inline-wrapper\");\n\n  const usecsvContainerStyles =\n    importerDisplay === \"modal\" || !usecsvInlineWrapper\n      ? `.usecsv_container { position: fixed; top: 0px; bottom: 0; right: 0; left: 0; z-index: 100000; }`\n      : ``;\n\n  insertCss(`\n  ${usecsvContainerStyles}\n  .usecsv_container iframe {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    border-width: 0;\n    top: 0;\n    left: 0; \n  }\n  .usecsv_container {\n    overflow: hidden;\n    overscroll-behavior-x: none;\n  }\n`);\n\n  document.body.insertAdjacentHTML(\"beforeend\", `<div id=${id} class=\"usecsv_container loading\"></div>`);\n  const iframe = document.createElement(\"iframe\");\n  iframe.setAttribute(\"src\", MOUNT_URL);\n  if (iframeId) {\n    iframe.setAttribute(\"id\", iframeId);\n  }\n  const usecsvContainer = document.getElementById(id);\n  usecsvContainer?.appendChild(iframe);\n  if (importerDisplay === \"inline\" && usecsvInlineWrapper) {\n    // usecsvInlineWrapper > usecsvContainer > iframe\n    usecsvInlineWrapper?.appendChild(usecsvContainer as HTMLElement);\n  }\n\n  return iframe;\n};\n\nconst useCsvPlugin = ({\n  importerKey,\n  user,\n  metadata,\n  onData,\n  onRecordsInitial,\n  onRecordEdit,\n  importerDisplay = \"modal\",\n  onClose,\n  theme,\n  batchSize,\n  sampleFileURL,\n  downloadExampleButton,\n  dynamicColumns,\n  defaultLanguage,\n  onError,\n  customText,\n  acceptedFileFormats,\n  onFileUpload,\n  columnWidth,\n  onMatchColumns,\n  iframeId,\n}: {\n  importerKey: string;\n  user?: Record<string, string | number>;\n  metadata?: Record<string, string | number>;\n  onData?: (data: CsvData, close: () => void) => void | onDataResponseWithoutBatching | onDataResponseWithBatching;\n  onRecordsInitial?: onRecordsInitialType;\n  onRecordEdit?: onRecordEditType;\n  importerDisplay?: \"modal\" | \"inline\";\n  onClose?: () => void;\n  theme?: ThemeType;\n  batchSize?: number;\n  sampleFileURL?: string;\n  downloadExampleButton?: boolean;\n  dynamicColumns?: DynamicColumnsType;\n  defaultLanguage?: Language;\n  onError?: onErrorType;\n  customText?: customTextType;\n  acceptedFileFormats?: Array<fileFormats>;\n  onFileUpload?: onFileUploadType;\n  columnWidth?: columnWidthType;\n  onMatchColumns?: onMatchColumnsType;\n  iframeId?: string;\n}) => {\n  const id = `usecsv-${Math.round(Math.random() * 100000000)}`;\n  return whenDomReady().then(() => {\n    const iframe = insertIframe(id, importerDisplay, iframeId);\n    const closeIframe = () => {\n      document.getElementById(id)?.remove();\n    };\n    const closeImporter = () => {\n      if (onClose) onClose();\n      return closeIframe();\n    };\n    const iframeConnection = connectToChild({\n      iframe,\n      methods: {\n        closeIframe,\n        ...(onData ? { onData: (data: CsvData) => onData(data, closeImporter) } : {}),\n        ...(onRecordsInitial ? { onRecordsInitial } : {}),\n        ...(onRecordEdit ? { onRecordEdit } : {}),\n        ...(onClose ? { onClose } : {}),\n        ...(onError ? { onError } : {}),\n        ...(onFileUpload ? { onFileUpload } : {}),\n        ...(onMatchColumns ? { onMatchColumns } : {}),\n      },\n    });\n    iframeConnection.promise.then((child: any) => {\n      document.getElementById(id)?.classList.remove(\"loading\");\n      // eslint-disable-next-line dot-notation\n      child[\"setParams\"] &&\n        // eslint-disable-next-line dot-notation\n        child[\"setParams\"]({\n          importerKey,\n          user,\n          metadata,\n          importerDisplay,\n          theme,\n          batchSize,\n          sampleFileURL,\n          downloadExampleButton,\n          dynamicColumns,\n          defaultLanguage,\n          customText,\n          acceptedFileFormats,\n          columnWidth,\n        });\n    });\n    return iframeConnection;\n  });\n};\n\nexport default useCsvPlugin;\n"],"names":["insertCss"],"mappings":"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"}