/** * [[include:modules/widget/file-selector/README.md]] * @packageDocumentation * @module modules/widget/file-selector */ // Jodit import type { IJodit, MediaUploadType } from 'jodit/types'; import { isFunction } from 'jodit/core/helpers'; import type { ImageSelectorCallbacks } from 'jodit/modules/widget'; // Styles import './drag-and-drop.less'; // Main section export const DragAndDropWidget = ( editor: IJodit, callbacks: ImageSelectorCallbacks, mediaUploadType: MediaUploadType, close: () => void ): HTMLElement => { let inputAccept; // 어떤 팝업?이냐에 따라 처리하는 파일 타입 결정 switch (mediaUploadType) { case 'image': inputAccept = 'image/*'; break; // case 'gif': // inputAccept = 'image/gif'; // break; case 'video': inputAccept = 'video/mp4,video/x-m4v,video/*'; break; case 'file': inputAccept = '*'; break; // case 'audio': // inputAccept = 'audio/*'; // break; default: inputAccept = '*'; } // const placeholder = // editor.i18n('Drop ' + mediaUploadType.toLowerCase()) + // ' ' + // editor.i18n('or click'); // let svgPath = null; // switch (mediaUploadType) { // case 'video': // svgPath = // ''; // break; // case 'file': // svgPath = // ''; // break; // default: // svgPath = // ''; // } const placeholder = editor.i18n('Drag and drop your files here'); const fileSizeLimitGuide = editor.i18n( 'File Size Limit Guide', `${mediaUploadType === 'video' ? '100MB' : '20MB'}` ); const dragAndDropWidget = editor.c.fromHTML( '
' + '
' + '
' + `${placeholder}` + `${fileSizeLimitGuide}` + `` + '
' + '
' ); editor.uploader.bind( dragAndDropWidget, (resp, _, payload) => { // console.log('bind resp: ', resp); const handler = isFunction(callbacks.upload) ? callbacks.upload : editor.o.uploader.defaultHandlerSuccess; // console.log('drag-and-drop.ts resp: ', resp); if (isFunction(handler)) { handler.call(editor, resp, mediaUploadType, payload); } editor.e.fire('closeAllPopups'); }, error => { editor.e.fire('errorMessage', error.message); editor.e.fire('closeAllPopups'); }, mediaUploadType ); return dragAndDropWidget; };