primo commit
This commit is contained in:
		
							
								
								
									
										117
									
								
								media/vendor/tinymce/plugins/pagebreak/plugin.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								media/vendor/tinymce/plugins/pagebreak/plugin.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,117 @@ | ||||
| /** | ||||
|  * TinyMCE version 6.8.4 (2024-06-19) | ||||
|  */ | ||||
|  | ||||
| (function () { | ||||
|     'use strict'; | ||||
|  | ||||
|     var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); | ||||
|  | ||||
|     var global = tinymce.util.Tools.resolve('tinymce.Env'); | ||||
|  | ||||
|     const option = name => editor => editor.options.get(name); | ||||
|     const register$2 = editor => { | ||||
|       const registerOption = editor.options.register; | ||||
|       registerOption('pagebreak_separator', { | ||||
|         processor: 'string', | ||||
|         default: '<!-- pagebreak -->' | ||||
|       }); | ||||
|       registerOption('pagebreak_split_block', { | ||||
|         processor: 'boolean', | ||||
|         default: false | ||||
|       }); | ||||
|     }; | ||||
|     const getSeparatorHtml = option('pagebreak_separator'); | ||||
|     const shouldSplitBlock = option('pagebreak_split_block'); | ||||
|  | ||||
|     const pageBreakClass = 'mce-pagebreak'; | ||||
|     const getPlaceholderHtml = shouldSplitBlock => { | ||||
|       const html = `<img src="${ global.transparentSrc }" class="${ pageBreakClass }" data-mce-resize="false" data-mce-placeholder />`; | ||||
|       return shouldSplitBlock ? `<p>${ html }</p>` : html; | ||||
|     }; | ||||
|     const setup$1 = editor => { | ||||
|       const separatorHtml = getSeparatorHtml(editor); | ||||
|       const shouldSplitBlock$1 = () => shouldSplitBlock(editor); | ||||
|       const pageBreakSeparatorRegExp = new RegExp(separatorHtml.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, a => { | ||||
|         return '\\' + a; | ||||
|       }), 'gi'); | ||||
|       editor.on('BeforeSetContent', e => { | ||||
|         e.content = e.content.replace(pageBreakSeparatorRegExp, getPlaceholderHtml(shouldSplitBlock$1())); | ||||
|       }); | ||||
|       editor.on('PreInit', () => { | ||||
|         editor.serializer.addNodeFilter('img', nodes => { | ||||
|           let i = nodes.length, node, className; | ||||
|           while (i--) { | ||||
|             node = nodes[i]; | ||||
|             className = node.attr('class'); | ||||
|             if (className && className.indexOf(pageBreakClass) !== -1) { | ||||
|               const parentNode = node.parent; | ||||
|               if (parentNode && editor.schema.getBlockElements()[parentNode.name] && shouldSplitBlock$1()) { | ||||
|                 parentNode.type = 3; | ||||
|                 parentNode.value = separatorHtml; | ||||
|                 parentNode.raw = true; | ||||
|                 node.remove(); | ||||
|                 continue; | ||||
|               } | ||||
|               node.type = 3; | ||||
|               node.value = separatorHtml; | ||||
|               node.raw = true; | ||||
|             } | ||||
|           } | ||||
|         }); | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     const register$1 = editor => { | ||||
|       editor.addCommand('mcePageBreak', () => { | ||||
|         editor.insertContent(getPlaceholderHtml(shouldSplitBlock(editor))); | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     const setup = editor => { | ||||
|       editor.on('ResolveName', e => { | ||||
|         if (e.target.nodeName === 'IMG' && editor.dom.hasClass(e.target, pageBreakClass)) { | ||||
|           e.name = 'pagebreak'; | ||||
|         } | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     const onSetupEditable = editor => api => { | ||||
|       const nodeChanged = () => { | ||||
|         api.setEnabled(editor.selection.isEditable()); | ||||
|       }; | ||||
|       editor.on('NodeChange', nodeChanged); | ||||
|       nodeChanged(); | ||||
|       return () => { | ||||
|         editor.off('NodeChange', nodeChanged); | ||||
|       }; | ||||
|     }; | ||||
|     const register = editor => { | ||||
|       const onAction = () => editor.execCommand('mcePageBreak'); | ||||
|       editor.ui.registry.addButton('pagebreak', { | ||||
|         icon: 'page-break', | ||||
|         tooltip: 'Page break', | ||||
|         onAction, | ||||
|         onSetup: onSetupEditable(editor) | ||||
|       }); | ||||
|       editor.ui.registry.addMenuItem('pagebreak', { | ||||
|         text: 'Page break', | ||||
|         icon: 'page-break', | ||||
|         onAction, | ||||
|         onSetup: onSetupEditable(editor) | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     var Plugin = () => { | ||||
|       global$1.add('pagebreak', editor => { | ||||
|         register$2(editor); | ||||
|         register$1(editor); | ||||
|         register(editor); | ||||
|         setup$1(editor); | ||||
|         setup(editor); | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     Plugin(); | ||||
|  | ||||
| })(); | ||||
		Reference in New Issue
	
	Block a user