@ckeditor/ckeditor5-import-word
Version:
Import from Word feature for CKEditor 5.
23 lines • 9.62 kB
JavaScript
/*
* Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
*
*
*
*
* +---------------------------------------------------------------------------------+
* | |
* | Hello stranger! |
* | |
* | |
* | What you're currently looking at is the source code of a legally protected, |
* | proprietary software. Any attempts to deobfuscate / disassemble this code |
* | are forbidden and will result in legal consequences. |
* | |
* | |
* +---------------------------------------------------------------------------------+
*
*
*
*
*/
import{Plugin as _0x598129,Command as _0x4f06d5}from'@ckeditor/ckeditor5-core/dist/index.js';import{IconImportWord as _0x44d63c}from'@ckeditor/ckeditor5-icons/dist/index.js';import{FileDialogButtonView as _0x586a5e,MenuBarMenuListItemFileDialogButtonView as _0x3d729c,SpinnerView as _0x35e785,Notification as _0x7532c5}from'@ckeditor/ckeditor5-ui/dist/index.js';import{ClipboardPipeline as _0x22ffdd}from'@ckeditor/ckeditor5-clipboard/dist/index.js';import{ModelRange as _0x345178}from'@ckeditor/ckeditor5-engine/dist/index.js';import{first as _0x35d7bc,uid as _0x23dca0,logWarning as _0x3077b4,logError as _0x21cb0f}from'@ckeditor/ckeditor5-utils/dist/index.js';function c(_0x5f4cac,_0x2ec6da){const t=_0x5f4cac['t'];switch(_0x2ec6da){case'Import\x20from\x20Word':return t('Import\x20from\x20Word');case'An\x20error\x20occurred\x20while\x20importing\x20the\x20Word\x20file.':return t('An\x20error\x20occurred\x20while\x20importing\x20the\x20Word\x20file.');case'Importing\x20Word\x20document':return t('Importing\x20Word\x20document');default:return _0x2ec6da;}}class i extends _0x598129{static get['pluginName'](){return'ImportWordUI';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}['init'](){const _0x391294=this['editor'];_0x391294['ui']['componentFactory']['add']('importWord',()=>{const _0x543563=this['_createButton'](_0x586a5e),_0x2592ea=_0x391294['commands']['get']('importWord');return _0x543563['bind']('isOn')['to'](_0x2592ea,'isBusy'),_0x543563['tooltip']=!0x0,_0x543563;}),_0x391294['ui']['componentFactory']['add']('menuBar:importWord',()=>this['_createButton'](_0x3d729c));}['_createButton'](_0x30cd13){const _0xeee5c5=this['editor'],_0x2ca1f9=_0xeee5c5['commands']['get']('importWord'),_0x5ce556=new _0x30cd13(_0xeee5c5['locale']),_0x363e5a=new _0x35e785();return _0x5ce556['set']({'acceptedType':'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.wordprocessingml.template'}),_0x5ce556['set']({'icon':_0x44d63c}),_0x5ce556['bind']('isEnabled')['to'](_0x2ca1f9),_0x5ce556['bind']('label')['to'](_0x2ca1f9,'isBusy',_0x37cc79=>c(_0xeee5c5['locale'],_0x37cc79?'Importing\x20Word\x20document':'Import\x20from\x20Word')),_0x363e5a['bind']('isVisible')['to'](_0x2ca1f9,'isBusy'),_0x5ce556['iconView']['bind']('isVisible')['to'](_0x2ca1f9,'isBusy',_0x241169=>!_0x241169),_0x5ce556['children']['add'](_0x363e5a),_0x5ce556['on']('done',(_0x5c9284,_0x551ccb)=>{_0xeee5c5['execute']('importWord',_0x551ccb[0x0],{}),_0xeee5c5['editing']['view']['focus']();}),_0x5ce556;}}class u extends _0x4f06d5{['_importMarker'];['_undoStepBatch'];['_abortController'];constructor(_0x5d839d){super(_0x5d839d),this['set']('isBusy',!0x1),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['on']('dataInsert',(_0x41975c,_0x1fce24)=>{const _0x360a84=new DataTransfer();_0x360a84['setData']('text/html',_0x1fce24['html']);const _0x2f0f86=this['_importMarker']['getRange']();this['editor']['model']['enqueueChange'](this['_undoStepBatch'],_0x5820b9=>{this['_importMarker']['stopListening'](),_0x5820b9['setSelection'](_0x2f0f86),_0x5d839d['editing']['view']['document']['fire']('clipboardInput',{'dataTransfer':_0x360a84});});},{'priority':'low'});}['refresh'](){this['isEnabled']=this['_checkEnabled']();}['execute'](_0x5d0ad3,_0x2b3123={}){if(this['isBusy'])return Promise['resolve']();const _0x2f4d01=this['editor']['config']['get']('importWord');if(this['editor']['plugins']['has']('MergeFields')){const {prefix:_0x12849b,suffix:_0x3ae25a}=this['editor']['config']['get']('mergeFields');_0x2b3123['merge_fields']={'prefix':_0x12849b,'suffix':_0x3ae25a};}const _0x6bb1bf={'url':_0x2f4d01['converterUrl'],'file':_0x5d0ad3,'serviceConfig':{..._0x2b3123,'formatting':_0x2f4d01['formatting'],'timezone':new Intl['DateTimeFormat']()['resolvedOptions']()['timeZone']}};return this['_prepareForImport'](),this['_sendImportRequest'](_0x6bb1bf)['then'](this['_handleImportResponse']['bind'](this))['catch'](this['_handleImportFailure']['bind'](this))['finally'](this['_cleanUpAfterImport']['bind'](this));}['_checkEnabled'](){if(this['isBusy'])return!0x1;const _0x4b2ea3=this['editor']['model'],_0x3b9b20=_0x4b2ea3['schema'],_0x4e713e=_0x4b2ea3['document']['selection'],_0x203ac2=_0x35d7bc(_0x4e713e['getSelectedBlocks']());return!!_0x203ac2&&_0x3b9b20['checkChild'](_0x203ac2['parent'],'paragraph');}['_prepareForImport'](){const _0x42c08a=this['editor'],_0x383ab6=_0x42c08a['model'],_0x3e1e5b=_0x383ab6['document']['selection'];this['_abortController']=new AbortController(),this['_undoStepBatch']=_0x42c08a['model']['createBatch']({'isUndoable':!0x0}),_0x383ab6['enqueueChange'](this['_undoStepBatch'],_0x55956c=>{_0x3e1e5b['isCollapsed']||_0x383ab6['deleteContent'](_0x3e1e5b,{'leaveUnmerged':!0x0});const _0x8639a6=_0x3e1e5b['getFirstPosition'](),_0x3c1362=_0x35d7bc(_0x3e1e5b['getSelectedBlocks']());let _0x1a6097;_0x1a6097=_0x3c1362['is']('element','paragraph')&&_0x3c1362['isEmpty']?_0x8639a6:_0x8639a6['isAtStart']?_0x383ab6['createPositionBefore'](_0x3c1362):_0x8639a6['isAtEnd']?_0x383ab6['createPositionAfter'](_0x3c1362):_0x55956c['split'](_0x8639a6)['position'],this['_importMarker']=_0x55956c['addMarker']('importWord:'+_0x23dca0(),{'usingOperation':!0x1,'affectsData':!0x1,'range':new _0x345178(_0x1a6097)}),this['_importMarker']['on']('change:range',()=>{'$graveyard'===this['_importMarker']['getRange']()['root']['rootName']&&this['_abortController']['abort']();});}),this['isBusy']=!0x0,this['refresh']();}['_cleanUpAfterImport'](){const _0x266515=this['editor']['model'];_0x266515['markers']['has'](this['_importMarker'])&&_0x266515['enqueueChange'](this['_undoStepBatch'],_0x36740c=>{_0x36740c['removeMarker'](this['_importMarker']);}),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['isBusy']=!0x1,this['refresh']();}['_sendImportRequest']({url:_0x463ffb,file:_0x2d8eb,serviceConfig:_0x277489}){const _0xd6c782=this['editor']['plugins']['get']('ImportWordEditing')['getToken'](),_0xcd3cce=new FormData();_0xcd3cce['set']('config',JSON['stringify'](_0x277489)),_0xcd3cce['set']('file',_0x2d8eb);const _0x24a59c={'method':'POST','headers':{},'body':_0xcd3cce,'signal':this['_abortController']['signal']};return _0xd6c782&&(_0x24a59c['headers']['Authorization']=_0xd6c782['value']),fetch(_0x463ffb,_0x24a59c);}['_handleImportResponse'](_0x1a4f62){return _0x1a4f62['ok']?_0x1a4f62['json']()['then'](_0x3404de=>{if(!this['editor']['model']['markers']['has'](this['_importMarker']))return;'$graveyard'!==this['_importMarker']['getRange']()['root']['rootName']&&this['fire']('dataInsert',_0x3404de);}):Promise['reject']();}['_handleImportFailure'](){if(this['_abortController']['signal']['aborted'])return void _0x3077b4('import-word-plugin-import-cancelled');const _0x1acb78=this['editor'],_0x585dbf=c(_0x1acb78['locale'],'An\x20error\x20occurred\x20while\x20importing\x20the\x20Word\x20file.');_0x1acb78['plugins']['get']('Notification')['showWarning'](_0x585dbf),_0x21cb0f('import-word-plugin-conversion-failed');}}class e extends _0x598129{['_token'];static get['pluginName'](){return'ImportWordEditing';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[_0x7532c5,_0x22ffdd,'CloudServices'];}constructor(_0x2c528b){super(_0x2c528b),this['_token']=null;}async['init'](){const _0x21b16a=this['editor'];_0x21b16a['config']['define']('importWord',{'converterUrl':'https://docx-converter.cke-cs.com/v2/convert/docx-html','tokenUrl':(_0x21b16a['config']['get']('cloudServices')||{})['tokenUrl'],'formatting':{'resets':'none','defaults':'none','styles':'inline'}}),_0x21b16a['commands']['add']('importWord',new u(_0x21b16a));const {tokenUrl:_0x464a8e}=_0x21b16a['config']['get']('importWord');if(_0x464a8e){const {tokenUrl:_0x217b1a}=_0x21b16a['config']['get']('cloudServices')||{};this['_token']=_0x464a8e===_0x217b1a?_0x21b16a['plugins']['get']('CloudServices')['token']:await _0x21b16a['plugins']['get']('CloudServices')['registerTokenUrl'](_0x464a8e);}}['getToken'](){return this['_token'];}}class x extends _0x598129{static get['pluginName'](){return'ImportWord';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[e,i];}}export{x as ImportWord,u as ImportWordCommand,e as ImportWordEditing,i as ImportWordUI};