{"version":3,"sources":["jsdelivr-header.js","/npm/@mibndc/sac-upload-widget@2.0.0/upload-widget.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MACI,MAAM,EAAW,SAAS,cAAc,YAClC,EAAS,SAAS,cAAc,UACtC,EAAO,KAAO,kBACd,EAAO,IAAM,gEACb,SAAS,KAAK,YAAY,GAE1B,EAAS,UAAY,syCA6DrB,MAAM,UAAe,YAEjB,WAAA,GACI,QACA,IAAI,EAAa,KAAK,aAAa,CAAC,KAAM,SAC1C,EAAW,YAAY,EAAS,QAAQ,WAAU,IAElD,KAAK,SAAW,EAAW,cAAc,YACzC,KAAK,mBAAqB,EAAW,cAAc,iBACnD,KAAK,oBAAsB,EAAW,cAAc,kBACpD,KAAK,iBAAmB,EAAW,cAAc,eAEjD,CAAC,YAAa,WAAY,YAAa,QAAQ,SAAQ,IACnD,KAAK,SAAS,iBAAiB,GAAW,GAAK,KAAK,gBAAgB,KAAI,EAAM,IAGlF,CAAC,YAAa,YAAY,SAAQ,IAC9B,KAAK,SAAS,iBAAiB,GAAW,GAAK,KAAK,UAAU,KAAI,EAAM,IAG5E,CAAC,YAAa,QAAQ,SAAQ,IAC1B,KAAK,SAAS,iBAAiB,GAAW,GAAK,KAAK,YAAY,KAAI,EAAM,IAG9E,KAAK,iBAAiB,iBAAiB,UAAU,IAAM,KAAK,YAAY,KAAK,iBAAiB,SAE9F,KAAK,SAAS,iBAAiB,QAAQ,GAAK,KAAK,WAAW,KAAI,GAEhE,KAAK,MAAQ,CAAC,CAClB,CAEA,eAAA,CAAgB,GACZ,EAAE,iBACF,EAAE,iBACN,CAEA,SAAA,GACI,KAAK,SAAS,UAAU,IAAI,SAChC,CAEA,WAAA,GACI,KAAK,SAAS,UAAU,OAAO,SACnC,CAEA,qBAAA,GACI,KAAK,oBAAoB,UAAY,iEACzC,CAEA,UAAA,CAAW,GAEP,OADc,KAAK,MAAM,GACZ,IACjB,CAEA,WAAA,CAAY,GACR,MAAM,EAAO,EAAM,GACnB,IAAK,EAAM,OAIX,GAHA,KAAK,oBAAoB,UAAY,GACrC,KAAK,mBAAmB,UAAY,EAAK,KAEvB,aAAd,EAAK,KAEL,YADA,KAAK,wBAIT,MAAM,EAAa,IAAI,WACvB,EAAW,OAAS,IAChB,MAAM,EAAO,EAAE,OAAO,OACtB,IAAI,EACJ,IACI,EAAO,KAAK,WAAW,GACvB,KAAK,MAAM,QAAU,CACzB,CAAE,MAAO,GAEL,MADA,KAAK,wBACC,CACV,CACA,KAAK,MAAM,QAAU,EACrB,KAAK,cAAc,IAAI,MAAM,eAC7B,KAAK,iBAAiB,MAAQ,IAAI,EAEtC,EAAW,WAAW,EAC1B,CAEA,UAAA,CAAW,GACP,MACM,EADK,EAAE,aACI,MACjB,KAAK,YAAY,EACrB,CAEA,0BAAA,CAA2B,GACvB,KAAK,MAAQ,IAAI,KAAK,SAAU,EACpC,CAEA,yBAAA,CAA0B,GAC1B,CAEA,UAAA,GACI,OAAO,KAAK,MAAM,OACtB,EAGJ,eAAe,OAAO,oBAAqB,EAC9C,EAzKD","file":"/npm/@mibndc/sac-upload-widget@2.0.0/upload-widget.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@mibndc/sac-upload-widget@2.0.0/upload-widget.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(() => {\n    const template = document.createElement(\"template\");\n    const script = document.createElement(\"script\");\n    script.type = \"text/javascript\";\n    script.src = \"https://cdn.jsdelivr.net/npm/papaparse@5.3.2/papaparse.min.js\";\n    document.head.appendChild(script);\n\n    template.innerHTML = `\n<style>\n    .dd-zone {\n        width: 100%;\n        height: 100%;\n        box-sizing: border-box;\n        border: 5px dashed lightgray;\n        font-family: Roboto, sans-serif;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n    }\n\n    .dd-zone .dd-zone-inner {\n        text-align: center;\n    }\n\n    .dd-zone .file-input-btn {\n        display: inline-block;\n        background: cornflowerblue;\n        color: white;\n        padding: 10px 15px;\n        margin: 3px 0;\n        cursor: pointer;\n    }\n\n    .dd-zone .file-input-btn:hover {\n        background: dodgerblue;\n    }\n\n    .dd-zone .file-input {\n        display: none;\n    }\n\n    .dd-zone .file-preview {\n        color: gray;\n    }\n    .dd-zone .error-preview {\n        color: red;\n    }\n\n    .dd-zone.active {\n        border-color: cornflowerblue;\n    }\n</style>\n\n<div class=\"dd-zone\">\n    <div class=\"dd-zone-inner\">\n        <div>Drag and drop a file here</div>\n        <div>\n            <label class=\"file-input-btn\">\n                Choose a file\n                <input class=\"file-input\" type=\"file\" accept=\"text/csv\">\n            </label>\n        </div>\n        <div class=\"file-preview\"></div>\n        <div class=\"error-preview\"></div>\n    </div>\n</div>\n`;\n\n    class Upload extends HTMLElement {\n\n        constructor() {\n            super();\n            let shadowRoot = this.attachShadow({mode: \"open\"});\n            shadowRoot.appendChild(template.content.cloneNode(true));\n\n            this.dropArea = shadowRoot.querySelector('.dd-zone');\n            this.filePreviewElement = shadowRoot.querySelector('.file-preview');\n            this.errorPreviewElement = shadowRoot.querySelector('.error-preview');\n            this.fileInputElement = shadowRoot.querySelector('.file-input');\n\n            ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {\n                this.dropArea.addEventListener(eventName, e => this.preventDefaults(e), false);\n            });\n\n            ['dragenter', 'dragover'].forEach(eventName => {\n                this.dropArea.addEventListener(eventName, e => this.highlight(e), false);\n            });\n\n            ['dragleave', 'drop'].forEach(eventName => {\n                this.dropArea.addEventListener(eventName, e => this.unhighlight(e), false);\n            });\n\n            this.fileInputElement.addEventListener('change', () => this.handleFiles(this.fileInputElement.files));\n\n            this.dropArea.addEventListener('drop', e => this.handleDrop(e), false);\n\n            this.props = {};\n        }\n\n        preventDefaults(e) {\n            e.preventDefault();\n            e.stopPropagation();\n        }\n\n        highlight() {\n            this.dropArea.classList.add('active');\n        }\n\n        unhighlight() {\n            this.dropArea.classList.remove('active');\n        }\n\n        showParseErrorMessage() {\n            this.errorPreviewElement.innerHTML = 'The file couldn\\'t be parsed. Please provide a valid *.csv file.';\n        }\n\n        csvToArray(strData) {\n            const parse = Papa.parse(strData);\n            return parse.data;\n        }\n\n        handleFiles(files) {\n            const file = files[0];\n            if (!file) return;\n            this.errorPreviewElement.innerHTML = '';\n            this.filePreviewElement.innerHTML = file.name;\n\n            if (file.type !== 'text/csv') {\n                this.showParseErrorMessage();\n                return;\n            }\n\n            const fileReader = new FileReader();\n            fileReader.onload = e => {\n                const text = e.target.result;\n                let data;\n                try {\n                    data = this.csvToArray(text);\n                    this.props.content = data;\n                } catch (e) {\n                    this.showParseErrorMessage();\n                    throw e;\n                }\n                this.props.content = data;\n                this.dispatchEvent(new Event('fileLoaded'));\n                this.fileInputElement.value = null;\n            }\n            fileReader.readAsText(file);\n        }\n\n        handleDrop(e) {\n            const dt = e.dataTransfer;\n            const files = dt.files;\n            this.handleFiles(files);\n        }\n\n        onCustomWidgetBeforeUpdate(changedProperties) {\n            this.props = {...this.props, ...changedProperties};\n        }\n\n        onCustomWidgetAfterUpdate(changedProperties) {\n        }\n\n        getContent() {\n            return this.props.content;\n        }\n    }\n\n    customElements.define(\"com-mibndc-upload\", Upload);\n})();\n"]}