UNPKG

@ckeditor/ckeditor5-import-word

Version:

Import from Word feature for CKEditor 5.

23 lines 9.67 kB
/* * Copyright (c) 2003-2026, 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{Command as _0x2dcd46,Plugin as _0x5757e1}from'@ckeditor/ckeditor5-core';import{IconImportWord as _0x303fd6}from'@ckeditor/ckeditor5-icons';import{FileDialogButtonView as _0x49c662,MenuBarMenuListItemFileDialogButtonView as _0x7f42ae,Notification as _0x364b38,SpinnerView as _0xef1c2a}from'@ckeditor/ckeditor5-ui';import{ClipboardPipeline as _0x236c18}from'@ckeditor/ckeditor5-clipboard';import{CloudServices as _0x498fca}from'@ckeditor/ckeditor5-cloud-services';import{ModelRange as _0x4310d4}from'@ckeditor/ckeditor5-engine';import{first as _0x2eafcf,logError as _0x13c89f,logWarning as _0xe95f28,uid as _0x980661}from'@ckeditor/ckeditor5-utils';function f(_0x32ab87,_0x3d910e){const t=_0x32ab87['t'];switch(_0x3d910e){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 _0x3d910e;}}var g=class extends _0x5757e1{static get['pluginName'](){return'ImportWordUI';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}['init'](){const _0x2cc7d0=this['editor'];_0x2cc7d0['ui']['componentFactory']['add']('importWord',()=>{const _0x377457=this['_createButton'](_0x49c662),_0x75fe90=_0x2cc7d0['commands']['get']('importWord');return _0x377457['bind']('isOn')['to'](_0x75fe90,'isBusy'),_0x377457['tooltip']=!0x0,_0x377457;}),_0x2cc7d0['ui']['componentFactory']['add']('menuBar:importWord',()=>this['_createButton'](_0x7f42ae));}['_createButton'](_0x2ef12b){const _0x211598=this['editor'],_0x4bce3f=_0x211598['commands']['get']('importWord'),_0x50dd4d=new _0x2ef12b(_0x211598['locale']),_0x503031=new _0xef1c2a();return _0x50dd4d['set']({'acceptedType':'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.wordprocessingml.template'}),_0x50dd4d['set']({'icon':_0x303fd6}),_0x50dd4d['bind']('isEnabled')['to'](_0x4bce3f),_0x50dd4d['bind']('label')['to'](_0x4bce3f,'isBusy',_0x2261dc=>f(_0x211598['locale'],_0x2261dc?'Importing\x20Word\x20document':'Import\x20from\x20Word')),_0x503031['bind']('isVisible')['to'](_0x4bce3f,'isBusy'),_0x50dd4d['iconView']['bind']('isVisible')['to'](_0x4bce3f,'isBusy',_0x520a3d=>!_0x520a3d),_0x50dd4d['children']['add'](_0x503031),_0x50dd4d['on']('done',(_0x207278,_0x556946)=>{_0x211598['execute']('importWord',_0x556946[0x0],{}),_0x211598['editing']['view']['focus']();}),_0x50dd4d;}},W=class extends _0x2dcd46{['_importMarker'];['_undoStepBatch'];['_abortController'];constructor(_0x22d0b4){super(_0x22d0b4),this['set']('isBusy',!0x1),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['on']('dataInsert',(_0x4fd405,_0x270208)=>{const _0x22efc0=new DataTransfer();_0x22efc0['setData']('text/html',_0x270208['html']);const _0x55e2a5=this['_importMarker']['getRange']();this['editor']['model']['enqueueChange'](this['_undoStepBatch'],_0x339ed1=>{this['_importMarker']['stopListening'](),_0x339ed1['setSelection'](_0x55e2a5),_0x22d0b4['editing']['view']['document']['fire']('clipboardInput',{'dataTransfer':_0x22efc0,'content':_0x22efc0['getData']('text/html')});});},{'priority':'low'});}['refresh'](){this['isEnabled']=this['_checkEnabled']();}['execute'](_0x4624c8,_0x334a4e={}){if(this['isBusy'])return Promise['resolve']();const _0x5eb830=this['editor']['config']['get']('importWord');if(this['editor']['plugins']['has']('MergeFields')){const {prefix:_0x5332a7,suffix:_0x267876}=this['editor']['config']['get']('mergeFields');_0x334a4e['merge_fields']={'prefix':_0x5332a7,'suffix':_0x267876};}const _0x5f2492={'url':_0x5eb830['converterUrl'],'file':_0x4624c8,'serviceConfig':{..._0x334a4e,'formatting':_0x5eb830['formatting'],'timezone':new Intl['DateTimeFormat']()['resolvedOptions']()['timeZone']}};return this['_prepareForImport'](),this['_sendImportRequest'](_0x5f2492)['then'](this['_handleImportResponse']['bind'](this))['catch'](this['_handleImportFailure']['bind'](this))['finally'](this['_cleanUpAfterImport']['bind'](this));}['_checkEnabled'](){if(this['isBusy'])return!0x1;const _0x47239e=this['editor']['model'],_0x57d330=_0x47239e['schema'],_0x427e5a=_0x47239e['document']['selection'],_0x2bd356=_0x2eafcf(_0x427e5a['getSelectedBlocks']());return!!_0x2bd356&&_0x57d330['checkChild'](_0x2bd356['parent'],'paragraph');}['_prepareForImport'](){const _0x6a12d5=this['editor'],_0x5818ad=_0x6a12d5['model'],_0x234922=_0x5818ad['document']['selection'];this['_abortController']=new AbortController(),this['_undoStepBatch']=_0x6a12d5['model']['createBatch']({'isUndoable':!0x0}),_0x5818ad['enqueueChange'](this['_undoStepBatch'],_0x2b72ab=>{_0x234922['isCollapsed']||_0x5818ad['deleteContent'](_0x234922,{'leaveUnmerged':!0x0});const _0x1999ef=_0x234922['getFirstPosition'](),_0x56c191=_0x2eafcf(_0x234922['getSelectedBlocks']());let _0xd7fe48;_0xd7fe48=_0x56c191['is']('element','paragraph')&&_0x56c191['isEmpty']?_0x1999ef:_0x1999ef['isAtStart']?_0x5818ad['createPositionBefore'](_0x56c191):_0x1999ef['isAtEnd']?_0x5818ad['createPositionAfter'](_0x56c191):_0x2b72ab['split'](_0x1999ef)['position'],this['_importMarker']=_0x2b72ab['addMarker']('importWord:'+_0x980661(),{'usingOperation':!0x1,'affectsData':!0x1,'range':new _0x4310d4(_0xd7fe48)}),this['_importMarker']['on']('change:range',()=>{'$graveyard'===this['_importMarker']['getRange']()['root']['rootName']&&this['_abortController']['abort']();});}),this['isBusy']=!0x0,this['refresh']();}['_cleanUpAfterImport'](){const _0x2b5fdc=this['editor']['model'];_0x2b5fdc['markers']['has'](this['_importMarker'])&&_0x2b5fdc['enqueueChange'](this['_undoStepBatch'],_0x4a545f=>{_0x4a545f['removeMarker'](this['_importMarker']);}),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['isBusy']=!0x1,this['refresh']();}async['_sendImportRequest']({url:_0x5e0873,file:_0x4eaa6d,serviceConfig:_0x5926aa}){const _0xe4320=await this['editor']['plugins']['get']('ImportWordEditing')['getToken'](),_0x55aa8f=new FormData();_0x55aa8f['set']('config',JSON['stringify'](_0x5926aa)),_0x55aa8f['set']('file',_0x4eaa6d);const _0x587779={'method':'POST','headers':{},'body':_0x55aa8f,'signal':this['_abortController']['signal']};return _0xe4320&&(_0x587779['headers']['Authorization']=_0xe4320['value']),fetch(_0x5e0873,_0x587779);}['_handleImportResponse'](_0x3c62f0){return _0x3c62f0['ok']?_0x3c62f0['json']()['then'](_0x58cecc=>{this['editor']['model']['markers']['has'](this['_importMarker'])&&'$graveyard'!==this['_importMarker']['getRange']()['root']['rootName']&&this['fire']('dataInsert',{..._0x58cecc,'undoStepBatch':this['_undoStepBatch']});}):Promise['reject']();}['_handleImportFailure'](){if(this['_abortController']['signal']['aborted'])return void _0xe95f28('import-word-plugin-import-cancelled');const _0x1ecfc3=this['editor'],_0x3c47f0=f(_0x1ecfc3['locale'],'An\x20error\x20occurred\x20while\x20importing\x20the\x20Word\x20file.');_0x1ecfc3['plugins']['get']('Notification')['showWarning'](_0x3c47f0),_0x13c89f('import-word-plugin-conversion-failed');}},k=class extends _0x5757e1{['_token'];static get['pluginName'](){return'ImportWordEditing';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[_0x364b38,_0x236c18,_0x498fca];}['init'](){const _0x35f71b=this['editor'],_0x41a233=_0x35f71b['plugins']['get'](_0x498fca);_0x35f71b['config']['define']('importWord',{'converterUrl':'https://docx-converter.cke-cs.com/v2/convert/docx-html','tokenUrl':(_0x35f71b['config']['get']('cloudServices')||{})['tokenUrl'],'formatting':{'resets':'none','defaults':'none','styles':'inline'}}),_0x35f71b['commands']['add']('importWord',new W(_0x35f71b));const {tokenUrl:_0x3963d6}=_0x35f71b['config']['get']('importWord');if(_0x3963d6){const {tokenUrl:_0x469281}=_0x35f71b['config']['get']('cloudServices')||{};this['_token']=_0x3963d6===_0x469281?Promise['resolve'](_0x41a233['token']):_0x41a233['registerTokenUrl'](_0x3963d6);}else this['_token']=Promise['resolve'](null);}['getToken'](){return this['_token'];}},I=class extends _0x5757e1{static get['pluginName'](){return'ImportWord';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[k,g];}};export{I as ImportWord,W as ImportWordCommand,k as ImportWordEditing,g as ImportWordUI};