-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdroppable.umd.js.map
1 lines (1 loc) · 13 KB
/
droppable.umd.js.map
1
{"version":3,"file":"droppable.umd.js","sources":["../src/droppable.ts"],"sourcesContent":["// Import here Polyfills if needed. Recommended core-js (npm i -D core-js)\n// import \"core-js/fn/array.find\"\n// ...}\n\n/**\n * @author Joel Hernandez <[email protected]>\n */\n\nexport default class Droppable {\n private static ENTER_KEY_CODE = 13;\n\n private dragOverClass: string;\n\n private appendStatusClasses: boolean;\n private isClickable: boolean;\n\n private element: HTMLElement;\n\n private elementEventsRemover: Function;\n\n private virtualInputElement: HTMLInputElement;\n private virtualInputElementEventsRemover: Function;\n\n private elementKeyDownEventRemover: Function;\n\n private latestDroppedFiles: File[];\n\n private onFilesDroppedEventListeners: FilesWereDroppedEventListener[] = [];\n\n constructor(config: DroppableSettings) {\n config = config || {};\n\n if (!config.element) {\n throw new Error('config.element: HTMLElement is required');\n }\n\n // This must be called before calling setAcceptsMultipleFiles\n this.virtualInputElement = Droppable.makeVirtualInputElement();\n\n const isClickable = typeof config.isClickable === 'boolean' ? config.isClickable : true;\n const acceptsMultipleFiles = typeof config.acceptsMultipleFiles === 'boolean' ? config.acceptsMultipleFiles : true;\n const appendStatusClasses = typeof config.appendStatusClasses === 'boolean' ? config.appendStatusClasses : true;\n\n this.dragOverClass = typeof config.dragOverClass === 'string' ? config.dragOverClass : 'dragover';\n\n this.setIsClickable(isClickable);\n this.setAcceptsMultipleFiles(acceptsMultipleFiles);\n this.setAppendStatusClasses(appendStatusClasses);\n\n this.element = config.element;\n this.elementEventsRemover = this.registerElementEvents();\n Droppable.addAccessibilityAttributesToDroppableElement(this.element);\n\n this.virtualInputElementEventsRemover = this.registerVirtualInputElementEvents();\n }\n\n private static makeVirtualInputElement() {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.style.display = 'none';\n return input;\n }\n\n private static addAccessibilityAttributesToDroppableElement(element: any) {\n element.tabIndex = 0;\n element.role = 'button';\n }\n\n private static removeAccessibilityAttributesToDroppableElement(element: any) {\n delete element.role;\n element.removeAttribute('tabIndex');\n }\n\n onFilesDropped(listener: FilesWereDroppedEventListener): EventRemover {\n this.onFilesDroppedEventListeners.push(listener);\n return () => {\n const listenerIndex = this.onFilesDroppedEventListeners.indexOf(listener);\n this.onFilesDroppedEventListeners.splice(listenerIndex, 1);\n };\n }\n\n destroy() {\n this.elementEventsRemover();\n this.virtualInputElementEventsRemover();\n this.onFilesDroppedEventListeners = [];\n Droppable.removeAccessibilityAttributesToDroppableElement(this.element);\n }\n\n getLatestDroppedFiles(): File[] {\n if (this.latestDroppedFiles) {\n return this.latestDroppedFiles;\n }\n return [];\n }\n\n promptForFiles(): void {\n this.virtualInputElement.click();\n }\n\n setIsClickable(clickable: boolean) {\n this.isClickable = clickable;\n }\n\n setAcceptsMultipleFiles(acceptsMultipleFiles: boolean) {\n this.virtualInputElement.setAttribute('multiple', acceptsMultipleFiles.toString());\n }\n\n setAppendStatusClasses(appendStatusClasses: boolean) {\n this.appendStatusClasses = appendStatusClasses;\n }\n\n private registerElementEvents(): Function {\n const eventNameToEventListenerDictionary = this.getElementEventsDictionary();\n return this.registerElementEventsWithDictionary(this.element, eventNameToEventListenerDictionary);\n }\n\n private registerVirtualInputElementEvents(): Function {\n const eventNameToEventListenerDictionary = this.getVirtualInputElementEventsDictionary();\n return this.registerElementEventsWithDictionary(this.virtualInputElement, eventNameToEventListenerDictionary);\n }\n\n private getVirtualInputElementEventsDictionary() {\n return {\n change: this.onVirtualInputElementChange\n };\n }\n\n private getElementEventsDictionary() {\n return {\n dragover: this.onElementDragOver,\n dragleave: this.onElementDragLeave,\n drop: this.onElementDrop,\n click: this.onElementClick,\n focus: this.onElementFocus,\n focusout: this.onElementFocusOut\n };\n }\n\n private onElementDragOver(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n\n if (this.appendStatusClasses) {\n this.element.classList.add(this.dragOverClass);\n }\n }\n\n private onElementDragLeave(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n this.element.classList.remove(this.dragOverClass);\n }\n\n private onElementDrop(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n this.element.classList.remove(this.dragOverClass);\n this.onDroppableElementChange(e);\n }\n\n private onElementClick() {\n if (this.isClickable) this.promptForFiles();\n }\n\n private onElementKeyDown(e: { [key: string]: any }) {\n if (e['keyCode'] === Droppable.ENTER_KEY_CODE) {\n this.promptForFiles();\n this.element.blur();\n }\n }\n\n private onElementFocus() {\n this.elementKeyDownEventRemover = this.registerElementEventsWithDictionary(this.element, {\n keydown: this.onElementKeyDown\n });\n }\n\n private onElementFocusOut() {\n if (this.elementKeyDownEventRemover) this.elementKeyDownEventRemover();\n }\n\n private onVirtualInputElementChange(e: Event) {\n this.onDroppableElementChange(e);\n this.virtualInputElement.value = '';\n }\n\n private onDroppableElementChange(event: { [key: string]: any }) {\n let files;\n if (event['dataTransfer']) {\n files = event['dataTransfer'].files;\n } else if (event['target']) {\n files = event['target'].files;\n } else {\n throw Error('Fired event contains no files');\n }\n\n // Files is FileList, we convert to array\n const filesArray: File[] = Array.from(files);\n this.setLatestDrop(filesArray);\n }\n\n private setLatestDrop(files: Array<File>) {\n this.latestDroppedFiles = files;\n this.emitFilesWereDropped(files);\n }\n\n private emitFilesWereDropped(files: Array<File>) {\n this.onFilesDroppedEventListeners.forEach(listener => {\n listener(files);\n });\n }\n\n private registerElementEventsWithDictionary(element: HTMLElement, eventNameToEventListenerDictionary: { [key: string]: EventListener }): Function {\n const eventRemovers: Array<Function> = [];\n Object.keys(eventNameToEventListenerDictionary).forEach(eventName => {\n const eventListener = eventNameToEventListenerDictionary[eventName];\n const boundEventListener = eventListener.bind(this);\n element.addEventListener(eventName, boundEventListener);\n eventRemovers.push(() => element.removeEventListener(eventName, boundEventListener));\n });\n\n return () => eventRemovers.forEach(eventRemover => eventRemover());\n }\n}\n\nexport interface DroppableSettings {\n element: HTMLElement;\n dragOverClass?: string;\n appendStatusClasses?: boolean;\n acceptsMultipleFiles?: boolean;\n isClickable?: boolean;\n}\n\nexport type EventRemover = () => void;\n\nexport type FilesWereDroppedEventListener = (files: File[]) => any;\n"],"names":[],"mappings":"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"}