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 _0xf085d8,Plugin as _0x5a18f0}from'@ckeditor/ckeditor5-core';import{IconImportWord as _0x3e41cb}from'@ckeditor/ckeditor5-icons';import{FileDialogButtonView as _0x3f3dd9,MenuBarMenuListItemFileDialogButtonView as _0x208a85,Notification as _0xc2bb99,SpinnerView as _0x81ad8}from'@ckeditor/ckeditor5-ui';import{ClipboardPipeline as _0x1a4ce8}from'@ckeditor/ckeditor5-clipboard';import{CloudServices as _0x2ecfc7}from'@ckeditor/ckeditor5-cloud-services';import{ModelRange as _0x44be11}from'@ckeditor/ckeditor5-engine';import{first as _0x2a57b6,logError as _0x2c180c,logWarning as _0x1f6fb7,uid as _0x13f8e3}from'@ckeditor/ckeditor5-utils';function f(_0x37afcc,_0x506994){const t=_0x37afcc['t'];switch(_0x506994){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 _0x506994;}}var g=class extends _0x5a18f0{static get['pluginName'](){return'ImportWordUI';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}['init'](){const _0x12abde=this['editor'];_0x12abde['ui']['componentFactory']['add']('importWord',()=>{const _0x3d02ec=this['_createButton'](_0x3f3dd9),_0x239e05=_0x12abde['commands']['get']('importWord');return _0x3d02ec['bind']('isOn')['to'](_0x239e05,'isBusy'),_0x3d02ec['tooltip']=!0x0,_0x3d02ec;}),_0x12abde['ui']['componentFactory']['add']('menuBar:importWord',()=>this['_createButton'](_0x208a85));}['_createButton'](_0x45f594){const _0x3020a8=this['editor'],_0xb5d7be=_0x3020a8['commands']['get']('importWord'),_0x20ba2d=new _0x45f594(_0x3020a8['locale']),_0x2a191d=new _0x81ad8();return _0x20ba2d['set']({'acceptedType':'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.wordprocessingml.template'}),_0x20ba2d['set']({'icon':_0x3e41cb}),_0x20ba2d['bind']('isEnabled')['to'](_0xb5d7be),_0x20ba2d['bind']('label')['to'](_0xb5d7be,'isBusy',_0x3ba10f=>f(_0x3020a8['locale'],_0x3ba10f?'Importing\x20Word\x20document':'Import\x20from\x20Word')),_0x2a191d['bind']('isVisible')['to'](_0xb5d7be,'isBusy'),_0x20ba2d['iconView']['bind']('isVisible')['to'](_0xb5d7be,'isBusy',_0x4c6a1b=>!_0x4c6a1b),_0x20ba2d['children']['add'](_0x2a191d),_0x20ba2d['on']('done',(_0x4c1b4d,_0x28afc4)=>{_0x3020a8['execute']('importWord',_0x28afc4[0x0],{}),_0x3020a8['editing']['view']['focus']();}),_0x20ba2d;}},W=class extends _0xf085d8{['_importMarker'];['_undoStepBatch'];['_abortController'];constructor(_0x13eb37){super(_0x13eb37),this['set']('isBusy',!0x1),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['on']('dataInsert',(_0x2de8d4,_0x3482fa)=>{const _0x204b7f=new DataTransfer();_0x204b7f['setData']('text/html',_0x3482fa['html']);const _0x25b3bc=this['_importMarker']['getRange']();this['editor']['model']['enqueueChange'](this['_undoStepBatch'],_0x68f547=>{this['_importMarker']['stopListening'](),_0x68f547['setSelection'](_0x25b3bc),_0x13eb37['editing']['view']['document']['fire']('clipboardInput',{'dataTransfer':_0x204b7f,'content':_0x204b7f['getData']('text/html')});});},{'priority':'low'});}['refresh'](){this['isEnabled']=this['_checkEnabled']();}['execute'](_0x30e259,_0x2b8cca={}){if(this['isBusy'])return Promise['resolve']();const _0x8020fb=this['editor']['config']['get']('importWord');if(this['editor']['plugins']['has']('MergeFields')){const {prefix:_0x623145,suffix:_0x4ee7f6}=this['editor']['config']['get']('mergeFields');_0x2b8cca['merge_fields']={'prefix':_0x623145,'suffix':_0x4ee7f6};}const _0x28e86f={'url':_0x8020fb['converterUrl'],'file':_0x30e259,'serviceConfig':{..._0x2b8cca,'formatting':_0x8020fb['formatting'],'timezone':new Intl['DateTimeFormat']()['resolvedOptions']()['timeZone']}};return this['_prepareForImport'](),this['_sendImportRequest'](_0x28e86f)['then'](this['_handleImportResponse']['bind'](this))['catch'](this['_handleImportFailure']['bind'](this))['finally'](this['_cleanUpAfterImport']['bind'](this));}['_checkEnabled'](){if(this['isBusy'])return!0x1;const _0xc8f968=this['editor']['model'],_0x43acb2=_0xc8f968['schema'],_0x48beca=_0xc8f968['document']['selection'],_0xa0fa31=_0x2a57b6(_0x48beca['getSelectedBlocks']());return!!_0xa0fa31&&_0x43acb2['checkChild'](_0xa0fa31['parent'],'paragraph');}['_prepareForImport'](){const _0x1643b7=this['editor'],_0x38d13c=_0x1643b7['model'],_0x3d0290=_0x38d13c['document']['selection'];this['_abortController']=new AbortController(),this['_undoStepBatch']=_0x1643b7['model']['createBatch']({'isUndoable':!0x0}),_0x38d13c['enqueueChange'](this['_undoStepBatch'],_0x50f0e8=>{_0x3d0290['isCollapsed']||_0x38d13c['deleteContent'](_0x3d0290,{'leaveUnmerged':!0x0});const _0xba9628=_0x3d0290['getFirstPosition'](),_0x6ffe93=_0x2a57b6(_0x3d0290['getSelectedBlocks']());let _0x3c3616;_0x3c3616=_0x6ffe93['is']('element','paragraph')&&_0x6ffe93['isEmpty']?_0xba9628:_0xba9628['isAtStart']?_0x38d13c['createPositionBefore'](_0x6ffe93):_0xba9628['isAtEnd']?_0x38d13c['createPositionAfter'](_0x6ffe93):_0x50f0e8['split'](_0xba9628)['position'],this['_importMarker']=_0x50f0e8['addMarker']('importWord:'+_0x13f8e3(),{'usingOperation':!0x1,'affectsData':!0x1,'range':new _0x44be11(_0x3c3616)}),this['_importMarker']['on']('change:range',()=>{'$graveyard'===this['_importMarker']['getRange']()['root']['rootName']&&this['_abortController']['abort']();});}),this['isBusy']=!0x0,this['refresh']();}['_cleanUpAfterImport'](){const _0xe76e17=this['editor']['model'];_0xe76e17['markers']['has'](this['_importMarker'])&&_0xe76e17['enqueueChange'](this['_undoStepBatch'],_0x5201ad=>{_0x5201ad['removeMarker'](this['_importMarker']);}),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['isBusy']=!0x1,this['refresh']();}async['_sendImportRequest']({url:_0x5f11fe,file:_0x1b4350,serviceConfig:_0x1c8281}){const _0x265af0=await this['editor']['plugins']['get']('ImportWordEditing')['getToken'](),_0x3c09aa=new FormData();_0x3c09aa['set']('config',JSON['stringify'](_0x1c8281)),_0x3c09aa['set']('file',_0x1b4350);const _0x31080e={'method':'POST','headers':{},'body':_0x3c09aa,'signal':this['_abortController']['signal']};return _0x265af0&&(_0x31080e['headers']['Authorization']=_0x265af0['value']),fetch(_0x5f11fe,_0x31080e);}['_handleImportResponse'](_0x106d2b){return _0x106d2b['ok']?_0x106d2b['json']()['then'](_0x552ee2=>{this['editor']['model']['markers']['has'](this['_importMarker'])&&'$graveyard'!==this['_importMarker']['getRange']()['root']['rootName']&&this['fire']('dataInsert',{..._0x552ee2,'undoStepBatch':this['_undoStepBatch']});}):Promise['reject']();}['_handleImportFailure'](){if(this['_abortController']['signal']['aborted'])return void _0x1f6fb7('import-word-plugin-import-cancelled');const _0x2ced80=this['editor'],_0x4a2ecd=f(_0x2ced80['locale'],'An\x20error\x20occurred\x20while\x20importing\x20the\x20Word\x20file.');_0x2ced80['plugins']['get']('Notification')['showWarning'](_0x4a2ecd),_0x2c180c('import-word-plugin-conversion-failed');}},k=class extends _0x5a18f0{['_token'];static get['pluginName'](){return'ImportWordEditing';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[_0xc2bb99,_0x1a4ce8,_0x2ecfc7];}['init'](){const _0x4d8cba=this['editor'],_0x1fa9e4=_0x4d8cba['plugins']['get'](_0x2ecfc7);_0x4d8cba['config']['define']('importWord',{'converterUrl':'https://docx-converter.cke-cs.com/v2/convert/docx-html','tokenUrl':(_0x4d8cba['config']['get']('cloudServices')||{})['tokenUrl'],'formatting':{'resets':'none','defaults':'none','styles':'inline'}}),_0x4d8cba['commands']['add']('importWord',new W(_0x4d8cba));const {tokenUrl:_0x258dcb}=_0x4d8cba['config']['get']('importWord');if(_0x258dcb){const {tokenUrl:_0x2a654f}=_0x4d8cba['config']['get']('cloudServices')||{};this['_token']=_0x258dcb===_0x2a654f?Promise['resolve'](_0x1fa9e4['token']):_0x1fa9e4['registerTokenUrl'](_0x258dcb);}else this['_token']=Promise['resolve'](null);}['getToken'](){return this['_token'];}},I=class extends _0x5a18f0{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};