{"version":3,"sources":["jsdelivr-header.js","/npm/react-file-drop@3.1.6/FileDrop.js"],"names":[],"mappings":"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","file":"/npm/react-file-drop@3.1.6/FileDrop.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/react-file-drop@3.1.6/FileDrop.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar prop_types_1 = __importDefault(require(\"prop-types\"));\nvar react_1 = __importDefault(require(\"react\"));\nvar FileDrop = /** @class */ (function (_super) {\n    __extends(FileDrop, _super);\n    function FileDrop(props) {\n        var _this = _super.call(this, props) || this;\n        _this.resetDragging = function () {\n            _this.frameDragCounter = 0;\n            _this.setState({ draggingOverFrame: false, draggingOverTarget: false });\n        };\n        _this.handleWindowDragOverOrDrop = function (event) {\n            // This prevents the browser from trying to load whatever file the user dropped on the window\n            event.preventDefault();\n        };\n        _this.handleFrameDrag = function (event) {\n            // Only allow dragging of files\n            if (!FileDrop.eventHasFiles(event))\n                return;\n            // We are listening for events on the 'frame', so every time the user drags over any element in the frame's tree,\n            // the event bubbles up to the frame. By keeping count of how many \"dragenters\" we get, we can tell if they are still\n            // \"draggingOverFrame\" (b/c you get one \"dragenter\" initially, and one \"dragenter\"/one \"dragleave\" for every bubble)\n            // This is far better than a \"dragover\" handler, which would be calling `setState` continuously.\n            _this.frameDragCounter += event.type === 'dragenter' ? 1 : -1;\n            if (_this.frameDragCounter === 1) {\n                _this.setState({ draggingOverFrame: true });\n                if (_this.props.onFrameDragEnter)\n                    _this.props.onFrameDragEnter(event);\n                return;\n            }\n            if (_this.frameDragCounter === 0) {\n                _this.setState({ draggingOverFrame: false });\n                if (_this.props.onFrameDragLeave)\n                    _this.props.onFrameDragLeave(event);\n                return;\n            }\n        };\n        _this.handleFrameDrop = function (event) {\n            if (!_this.state.draggingOverTarget) {\n                _this.resetDragging();\n                if (_this.props.onFrameDrop)\n                    _this.props.onFrameDrop(event);\n            }\n        };\n        _this.handleDragOver = function (event) {\n            if (FileDrop.eventHasFiles(event)) {\n                _this.setState({ draggingOverTarget: true });\n                if (!FileDrop.isIE() && _this.props.dropEffect)\n                    event.dataTransfer.dropEffect = _this.props.dropEffect;\n                if (_this.props.onDragOver)\n                    _this.props.onDragOver(event);\n            }\n        };\n        _this.handleDragLeave = function (event) {\n            _this.setState({ draggingOverTarget: false });\n            if (_this.props.onDragLeave)\n                _this.props.onDragLeave(event);\n        };\n        _this.handleDrop = function (event) {\n            if (_this.props.onDrop && FileDrop.eventHasFiles(event)) {\n                var files = event.dataTransfer ? event.dataTransfer.files : null;\n                _this.props.onDrop(files, event);\n            }\n            _this.resetDragging();\n        };\n        _this.handleTargetClick = function (event) {\n            if (_this.props.onTargetClick) {\n                _this.props.onTargetClick(event);\n            }\n            _this.resetDragging();\n        };\n        _this.stopFrameListeners = function (frame) {\n            if (frame) {\n                frame.removeEventListener('dragenter', _this.handleFrameDrag);\n                frame.removeEventListener('dragleave', _this.handleFrameDrag);\n                frame.removeEventListener('drop', _this.handleFrameDrop);\n            }\n        };\n        _this.startFrameListeners = function (frame) {\n            if (frame) {\n                frame.addEventListener('dragenter', _this.handleFrameDrag);\n                frame.addEventListener('dragleave', _this.handleFrameDrag);\n                frame.addEventListener('drop', _this.handleFrameDrop);\n            }\n        };\n        _this.frameDragCounter = 0;\n        _this.state = { draggingOverFrame: false, draggingOverTarget: false };\n        return _this;\n    }\n    FileDrop.prototype.componentDidMount = function () {\n        this.startFrameListeners(this.props.frame);\n        this.resetDragging();\n        window.addEventListener('dragover', this.handleWindowDragOverOrDrop);\n        window.addEventListener('drop', this.handleWindowDragOverOrDrop);\n    };\n    FileDrop.prototype.componentDidUpdate = function (prevProps) {\n        if (prevProps.frame !== this.props.frame) {\n            this.resetDragging();\n            this.stopFrameListeners(prevProps.frame);\n            this.startFrameListeners(this.props.frame);\n        }\n    };\n    FileDrop.prototype.componentWillUnmount = function () {\n        this.stopFrameListeners(this.props.frame);\n        window.removeEventListener('dragover', this.handleWindowDragOverOrDrop);\n        window.removeEventListener('drop', this.handleWindowDragOverOrDrop);\n    };\n    FileDrop.prototype.render = function () {\n        var _a = this.props, children = _a.children, className = _a.className, targetClassName = _a.targetClassName, draggingOverFrameClassName = _a.draggingOverFrameClassName, draggingOverTargetClassName = _a.draggingOverTargetClassName;\n        var _b = this.state, draggingOverTarget = _b.draggingOverTarget, draggingOverFrame = _b.draggingOverFrame;\n        var fileDropTargetClassName = targetClassName;\n        if (draggingOverFrame)\n            fileDropTargetClassName += \" \" + draggingOverFrameClassName;\n        if (draggingOverTarget)\n            fileDropTargetClassName += \" \" + draggingOverTargetClassName;\n        return (react_1.default.createElement(\"div\", { className: className, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop },\n            react_1.default.createElement(\"div\", { className: fileDropTargetClassName, onClick: this.handleTargetClick }, children)));\n    };\n    FileDrop.isIE = function () {\n        return typeof window !== 'undefined' &&\n            (window.navigator.userAgent.indexOf('MSIE') !== -1 ||\n                window.navigator.appVersion.indexOf('Trident/') > 0);\n    };\n    FileDrop.eventHasFiles = function (event) {\n        // In most browsers this is an array, but in IE11 it's an Object :(\n        var hasFiles = false;\n        if (event.dataTransfer) {\n            var types = event.dataTransfer.types;\n            for (var keyOrIndex in types) {\n                if (types[keyOrIndex] === 'Files') {\n                    hasFiles = true;\n                    break;\n                }\n            }\n        }\n        return hasFiles;\n    };\n    FileDrop.propTypes = {\n        className: prop_types_1.default.string,\n        targetClassName: prop_types_1.default.string,\n        draggingOverFrameClassName: prop_types_1.default.string,\n        draggingOverTargetClassName: prop_types_1.default.string,\n        onDragOver: prop_types_1.default.func,\n        onDragLeave: prop_types_1.default.func,\n        onDrop: prop_types_1.default.func,\n        onTargetClick: prop_types_1.default.func,\n        dropEffect: prop_types_1.default.oneOf(['copy', 'move', 'link', 'none']),\n        frame: function (props, propName, componentName) {\n            var prop = props[propName];\n            if (prop == null) {\n                return new Error('Warning: Required prop `' + propName + '` was not specified in `' + componentName + '`');\n            }\n            if (prop !== document && !(prop instanceof HTMLElement)) {\n                return new Error('Warning: Prop `' + propName + '` must be one of the following: document, HTMLElement!');\n            }\n        },\n        onFrameDragEnter: prop_types_1.default.func,\n        onFrameDragLeave: prop_types_1.default.func,\n        onFrameDrop: prop_types_1.default.func,\n    };\n    FileDrop.defaultProps = {\n        dropEffect: 'copy',\n        frame: typeof window === 'undefined' ? undefined : window.document,\n        className: 'file-drop',\n        targetClassName: 'file-drop-target',\n        draggingOverFrameClassName: 'file-drop-dragging-over-frame',\n        draggingOverTargetClassName: 'file-drop-dragging-over-target',\n    };\n    return FileDrop;\n}(react_1.default.PureComponent));\nexports.FileDrop = FileDrop;\n"]}