UNPKG

@ckeditor/ckeditor5-import-word

Version:

Import from Word feature for CKEditor 5.

23 lines • 10.6 kB
/* * 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 _0x452ea9,Command as _0x5ddc95}from'@ckeditor/ckeditor5-core/dist/index.js';import{FileDialogButtonView as _0x1c8c51,MenuBarMenuListItemFileDialogButtonView as _0x3f7610,SpinnerView as _0x5ccb1b,Notification as _0x3b0c35}from'@ckeditor/ckeditor5-ui/dist/index.js';import{ClipboardPipeline as _0x1bb693}from'@ckeditor/ckeditor5-clipboard/dist/index.js';import{Range as _0xe0128d}from'@ckeditor/ckeditor5-engine/dist/index.js';import{first as _0x487d47,uid as _0x2b242f,logWarning as _0x12bdaf,logError as _0x5da790}from'@ckeditor/ckeditor5-utils/dist/index.js';function p(_0x168d6b,_0x28fbe3){const t=_0x168d6b['t'];switch(_0x28fbe3){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 _0x28fbe3;}}class i extends _0x452ea9{static get['pluginName'](){return'ImportWordUI';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}['init'](){const _0xb5ec20=this['editor'];_0xb5ec20['ui']['componentFactory']['add']('importWord',()=>{const _0x165c45=this['_createButton'](_0x1c8c51),_0x47cc60=_0xb5ec20['commands']['get']('importWord');return _0x165c45['bind']('isOn')['to'](_0x47cc60,'isBusy'),_0x165c45['tooltip']=!0x0,_0x165c45;}),_0xb5ec20['ui']['componentFactory']['add']('menuBar:importWord',()=>this['_createButton'](_0x3f7610));}['_createButton'](_0x43c971){const _0x201208=this['editor'],_0x30b55a=_0x201208['commands']['get']('importWord'),_0xd4f5b9=new _0x43c971(_0x201208['locale']),_0x5bcddc=new _0x5ccb1b();return _0xd4f5b9['set']({'acceptedType':'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.wordprocessingml.template'}),_0xd4f5b9['set']({'icon':'<svg\x20viewBox=\x220\x200\x2020\x2020\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22><path\x20d=\x22m14\x200\x205\x204.5v8.892l-1.5-1.8V6.5h-5v-5h-8v3H3V0h11Zm0\x202v3h3.3L14\x202Z\x22/><path\x20d=\x22M10.74\x2018a2.76\x202.76\x200\x200\x201-.469-.5H3V19h9.25v-.374A2.737\x202.737\x200\x200\x201\x2010.74\x2018Z\x22/><path\x20d=\x22M8.5\x206a1.5\x201.5\x200\x200\x201\x201.493\x201.356L10\x207.5v7a1.5\x201.5\x200\x200\x201-1.356\x201.493L8.5\x2016h-7a1.5\x201.5\x200\x200\x201-1.493-1.356L0\x2014.5v-7a1.5\x201.5\x200\x200\x201\x201.356-1.493L1.5\x206h7ZM7.483\x208.795l-.042.088-.986\x202.534-.947-2.528-.043-.092a.601.601\x200\x200\x200-1.042.008l-.042.093-.883\x202.465-.937-2.475-.042-.089a.6.6\x200\x200\x200-1.107.42l.027.093\x201.514\x204\x20.044.092a.6.6\x200\x200\x200\x201.041-.01l.041-.092.88-2.458.925\x202.467.046.096a.602.602\x200\x200\x200\x201.032\x200l.043-.09\x201.554-4\x20.028-.093a.6.6\x200\x200\x200-1.104-.43v.001ZM11.674\x2015.407a.75.75\x200\x201\x200\x201.152.96L14\x2014.96V20h1.5v-5.04l1.174\x201.408a.75.75\x200\x201\x200\x201.152-.96l-2.346-2.816a.95.95\x200\x200\x200-1.46\x200l-2.346\x202.815Z\x22/></svg>\x0a'}),_0xd4f5b9['bind']('isEnabled')['to'](_0x30b55a),_0xd4f5b9['bind']('label')['to'](_0x30b55a,'isBusy',_0x2bc29e=>p(_0x201208['locale'],_0x2bc29e?'Importing\x20Word\x20document':'Import\x20from\x20Word')),_0x5bcddc['bind']('isVisible')['to'](_0x30b55a,'isBusy'),_0xd4f5b9['iconView']['bind']('isVisible')['to'](_0x30b55a,'isBusy',_0x1fc5fa=>!_0x1fc5fa),_0xd4f5b9['children']['add'](_0x5bcddc),_0xd4f5b9['on']('done',(_0x563247,_0x4582f3)=>{_0x201208['execute']('importWord',_0x4582f3[0x0],{}),_0x201208['editing']['view']['focus']();}),_0xd4f5b9;}}class d extends _0x5ddc95{['_importMarker'];['_undoStepBatch'];['_abortController'];constructor(_0x173824){super(_0x173824),this['set']('isBusy',!0x1),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['on']('dataInsert',(_0x1c519c,_0x68b323)=>{const _0x1e3217=new DataTransfer();_0x1e3217['setData']('text/html',_0x68b323['html']);const _0x2ce90a=this['_importMarker']['getRange']();this['editor']['model']['enqueueChange'](this['_undoStepBatch'],_0x1b7ca7=>{this['_importMarker']['stopListening'](),_0x1b7ca7['setSelection'](_0x2ce90a),_0x173824['editing']['view']['document']['fire']('clipboardInput',{'dataTransfer':_0x1e3217});});},{'priority':'low'});}['refresh'](){this['isEnabled']=this['_checkEnabled']();}['execute'](_0xb17901,_0x4e8a1={}){if(this['isBusy'])return Promise['resolve']();const _0x580ab7=this['editor']['config']['get']('importWord');if(this['editor']['plugins']['has']('MergeFields')){const {prefix:_0x550834,suffix:_0x4ec729}=this['editor']['config']['get']('mergeFields');_0x4e8a1['merge_fields']={'prefix':_0x550834,'suffix':_0x4ec729};}const _0x4f005d={'url':_0x580ab7['converterUrl'],'file':_0xb17901,'serviceConfig':{..._0x4e8a1,'formatting':_0x580ab7['formatting'],'timezone':new Intl['DateTimeFormat']()['resolvedOptions']()['timeZone']}};return this['_prepareForImport'](),this['_sendImportRequest'](_0x4f005d)['then'](this['_handleImportResponse']['bind'](this))['catch'](this['_handleImportFailure']['bind'](this))['finally'](this['_cleanUpAfterImport']['bind'](this));}['_checkEnabled'](){if(this['isBusy'])return!0x1;const _0x533cad=this['editor']['model'],_0xd7429b=_0x533cad['schema'],_0x1a62bc=_0x533cad['document']['selection'],_0x2cf6c9=_0x487d47(_0x1a62bc['getSelectedBlocks']());return!!_0x2cf6c9&&_0xd7429b['checkChild'](_0x2cf6c9['parent'],'paragraph');}['_prepareForImport'](){const _0x30d767=this['editor'],_0x42fb55=_0x30d767['model'],_0x5b6977=_0x42fb55['document']['selection'];this['_abortController']=new AbortController(),this['_undoStepBatch']=_0x30d767['model']['createBatch']({'isUndoable':!0x0}),_0x42fb55['enqueueChange'](this['_undoStepBatch'],_0x2dc8fe=>{_0x5b6977['isCollapsed']||_0x42fb55['deleteContent'](_0x5b6977,{'leaveUnmerged':!0x0});const _0x535f70=_0x5b6977['getFirstPosition'](),_0x1918fb=_0x487d47(_0x5b6977['getSelectedBlocks']());let _0x21504b;_0x21504b=_0x1918fb['is']('element','paragraph')&&_0x1918fb['isEmpty']?_0x535f70:_0x535f70['isAtStart']?_0x42fb55['createPositionBefore'](_0x1918fb):_0x535f70['isAtEnd']?_0x42fb55['createPositionAfter'](_0x1918fb):_0x2dc8fe['split'](_0x535f70)['position'],this['_importMarker']=_0x2dc8fe['addMarker']('importWord:'+_0x2b242f(),{'usingOperation':!0x1,'affectsData':!0x1,'range':new _0xe0128d(_0x21504b)}),this['_importMarker']['on']('change:range',()=>{'$graveyard'===this['_importMarker']['getRange']()['root']['rootName']&&this['_abortController']['abort']();});}),this['isBusy']=!0x0,this['refresh']();}['_cleanUpAfterImport'](){const _0x2e85be=this['editor']['model'];_0x2e85be['markers']['has'](this['_importMarker'])&&_0x2e85be['enqueueChange'](this['_undoStepBatch'],_0x1b867c=>{_0x1b867c['removeMarker'](this['_importMarker']);}),this['_importMarker']=null,this['_undoStepBatch']=null,this['_abortController']=null,this['isBusy']=!0x1,this['refresh']();}['_sendImportRequest']({url:_0x474a12,file:_0x2303fa,serviceConfig:_0x2f1547}){const _0x1ea0ad=this['editor']['plugins']['get']('ImportWordEditing')['getToken'](),_0xdc08d0=new FormData();_0xdc08d0['set']('config',JSON['stringify'](_0x2f1547)),_0xdc08d0['set']('file',_0x2303fa);const _0x59e8b7={'method':'POST','headers':{},'body':_0xdc08d0,'signal':this['_abortController']['signal']};return _0x1ea0ad&&(_0x59e8b7['headers']['Authorization']=_0x1ea0ad['value']),fetch(_0x474a12,_0x59e8b7);}['_handleImportResponse'](_0x2e5ec6){return _0x2e5ec6['ok']?_0x2e5ec6['json']()['then'](_0xc0c1ef=>{if(!this['editor']['model']['markers']['has'](this['_importMarker']))return;'$graveyard'!==this['_importMarker']['getRange']()['root']['rootName']&&this['fire']('dataInsert',_0xc0c1ef);}):Promise['reject']();}['_handleImportFailure'](){if(this['_abortController']['signal']['aborted'])return void _0x12bdaf('import-word-plugin-import-cancelled');const _0x1babd4=this['editor'],_0x17112b=p(_0x1babd4['locale'],'An\x20error\x20occurred\x20while\x20importing\x20the\x20Word\x20file.');_0x1babd4['plugins']['get']('Notification')['showWarning'](_0x17112b),_0x5da790('import-word-plugin-conversion-failed');}}class e extends _0x452ea9{['_token'];static get['pluginName'](){return'ImportWordEditing';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[_0x3b0c35,_0x1bb693,'CloudServices'];}constructor(_0x2bae47){super(_0x2bae47),this['_token']=null;}async['init'](){const _0x2f0847=this['editor'];_0x2f0847['config']['define']('importWord',{'converterUrl':'https://docx-converter.cke-cs.com/v2/convert/docx-html','tokenUrl':(_0x2f0847['config']['get']('cloudServices')||{})['tokenUrl'],'formatting':{'resets':'none','defaults':'none','styles':'inline'}}),_0x2f0847['commands']['add']('importWord',new d(_0x2f0847));const {tokenUrl:_0x1b4d7a}=_0x2f0847['config']['get']('importWord');if(_0x1b4d7a){const {tokenUrl:_0x335f87}=_0x2f0847['config']['get']('cloudServices')||{};this['_token']=_0x1b4d7a===_0x335f87?_0x2f0847['plugins']['get']('CloudServices')['token']:await _0x2f0847['plugins']['get']('CloudServices')['registerTokenUrl'](_0x1b4d7a);}}['getToken'](){return this['_token'];}}class o extends _0x452ea9{static get['pluginName'](){return'ImportWord';}static get['isOfficialPlugin'](){return!0x0;}static get['isPremiumPlugin'](){return!0x0;}static get['requires'](){return[e,i];}}export{o as ImportWord,e as ImportWordEditing,i as ImportWordUI};