0.0.3 • Published 6 months ago

nadal-ckeditor5-upload-video v0.0.3

Weekly downloads
-
License
SEE LICENSE IN LI...
Repository
github
Last release
6 months ago

CKEditor 5 editor generated with the online builder

export default class UploadAdapter {
    constructor(loader, type) {
        this.loader = loader
        this.type = type
    }

    upload() {
        return this.loader.file.then(
            (file) =>
                new Promise((resolve, reject) => {
                    this.initRequest(file, resolve, reject)
                }),
        )
    }

    async initRequest(file, resolve, reject) {
        try {
            resolve({
                default: '/main_loopping/1_Trusted_ingredients_unprecedented_results.mp4',
            })
        } catch (e) {
            alert('이미지 전송 중 오류가 발생했습니다.')
            reject()
        }
    }
}
/**
 * @license Copyright (c) 2014-2023, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';

import { Alignment } from '@ckeditor/ckeditor5-alignment';
import { Autoformat } from '@ckeditor/ckeditor5-autoformat';
import { Bold, Italic } from '@ckeditor/ckeditor5-basic-styles';
import { BlockQuote } from '@ckeditor/ckeditor5-block-quote';
import { CloudServices } from '@ckeditor/ckeditor5-cloud-services';
import { Essentials } from '@ckeditor/ckeditor5-essentials';
import { FontFamily } from '@ckeditor/ckeditor5-font';
import { Heading } from '@ckeditor/ckeditor5-heading';
import {
	Image,
	ImageCaption,
	ImageStyle,
	ImageToolbar,
	ImageUpload,
	PictureEditing
} from '@ckeditor/ckeditor5-image';
import { Indent } from '@ckeditor/ckeditor5-indent';
import { Link } from '@ckeditor/ckeditor5-link';
import { List } from '@ckeditor/ckeditor5-list';
import { Paragraph } from '@ckeditor/ckeditor5-paragraph';
import { PasteFromOffice } from '@ckeditor/ckeditor5-paste-from-office';
import { Table, TableToolbar } from '@ckeditor/ckeditor5-table';
import { TextTransformation } from '@ckeditor/ckeditor5-typing';
import MediaEmbed from './plugins/video-upload';
import UploadAdapter from './adapter';

// You can read more about extending the build with additional plugins in the "Installing plugins" guide.
// See https://ckeditor.com/docs/ckeditor5/latest/installation/plugins/installing-plugins.html for details.

class Editor extends ClassicEditor {
	public static override builtinPlugins = [
		Alignment,
		Autoformat,
		BlockQuote,
		Bold,
		CloudServices,
		Essentials,
		FontFamily,
		Heading,
		Image,
		ImageCaption,
		ImageStyle,
		ImageToolbar,
		ImageUpload,
		Indent,
		Italic,
		Link,
		List,
		Paragraph,
		PasteFromOffice,
		PictureEditing,
		Table,
		TableToolbar,
		TextTransformation,
		MediaEmbed

	];

	public static override defaultConfig = {
		toolbar: {
			items: [
				'heading',
				'|',
				'bold',
				'italic',
				'link',
				'bulletedList',
				'numberedList',
				'|',
				'outdent',
				'indent',
				'|',
				'imageUpload',
				'blockQuote',
				'insertTable',
				'undo',
				'redo',
				'fontFamily',
				'alignment',
				'mediaEmbed',
			]
		},
		language: 'en',
		image: {
			toolbar: [
				'imageTextAlternative',
				'toggleImageCaption',
				'imageStyle:inline',
				'imageStyle:block',
				'imageStyle:side'
			]
		},
		table: {
			contentToolbar: [
				'tableColumn',
				'tableRow',
				'mergeTableCells'
			]
		},
		mediaEmbed: {
			extraProviders: [
				{
					name: 'zdy',
					url: [
						/(.*?)/,
					],
					html: (match: any) => {
						const src = match.input;
						return (
							'<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;pointer-events: auto;">' +
							'<video controls style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" src="' + src + '">' +
							'</video>' +
							'</div>'
						);
					}
				},
			]
		},
		extraPlugins: [MyCustomUploadAdapterPlugin],
	};


}

function MyCustomUploadAdapterPlugin(editor: any) {
	const myeditor = editor
	// eslint-disable-next-line no-underscore-dangle
	myeditor.plugins.get('FileRepository').createUploadAdapter = (loader: any) => {
		return new UploadAdapter(loader, ((myeditor.config as any)._config.type))
	}
}

export default Editor;