86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * TinyMCE version 6.8.4 (2024-06-19)
 | |
|  */
 | |
| 
 | |
| (function () {
 | |
|     'use strict';
 | |
| 
 | |
|     var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 | |
| 
 | |
|     const setContent = (editor, html) => {
 | |
|       editor.focus();
 | |
|       editor.undoManager.transact(() => {
 | |
|         editor.setContent(html);
 | |
|       });
 | |
|       editor.selection.setCursorLocation();
 | |
|       editor.nodeChanged();
 | |
|     };
 | |
|     const getContent = editor => {
 | |
|       return editor.getContent({ source_view: true });
 | |
|     };
 | |
| 
 | |
|     const open = editor => {
 | |
|       const editorContent = getContent(editor);
 | |
|       editor.windowManager.open({
 | |
|         title: 'Source Code',
 | |
|         size: 'large',
 | |
|         body: {
 | |
|           type: 'panel',
 | |
|           items: [{
 | |
|               type: 'textarea',
 | |
|               name: 'code'
 | |
|             }]
 | |
|         },
 | |
|         buttons: [
 | |
|           {
 | |
|             type: 'cancel',
 | |
|             name: 'cancel',
 | |
|             text: 'Cancel'
 | |
|           },
 | |
|           {
 | |
|             type: 'submit',
 | |
|             name: 'save',
 | |
|             text: 'Save',
 | |
|             primary: true
 | |
|           }
 | |
|         ],
 | |
|         initialData: { code: editorContent },
 | |
|         onSubmit: api => {
 | |
|           setContent(editor, api.getData().code);
 | |
|           api.close();
 | |
|         }
 | |
|       });
 | |
|     };
 | |
| 
 | |
|     const register$1 = editor => {
 | |
|       editor.addCommand('mceCodeEditor', () => {
 | |
|         open(editor);
 | |
|       });
 | |
|     };
 | |
| 
 | |
|     const register = editor => {
 | |
|       const onAction = () => editor.execCommand('mceCodeEditor');
 | |
|       editor.ui.registry.addButton('code', {
 | |
|         icon: 'sourcecode',
 | |
|         tooltip: 'Source code',
 | |
|         onAction
 | |
|       });
 | |
|       editor.ui.registry.addMenuItem('code', {
 | |
|         icon: 'sourcecode',
 | |
|         text: 'Source code',
 | |
|         onAction
 | |
|       });
 | |
|     };
 | |
| 
 | |
|     var Plugin = () => {
 | |
|       global.add('code', editor => {
 | |
|         register$1(editor);
 | |
|         register(editor);
 | |
|         return {};
 | |
|       });
 | |
|     };
 | |
| 
 | |
|     Plugin();
 | |
| 
 | |
| })();
 |