diff --git a/core/.eslintignore b/core/.eslintignore index 8e49f48d1c..44777b9fe3 100644 --- a/core/.eslintignore +++ b/core/.eslintignore @@ -15,4 +15,5 @@ modules/system/tests/themes/test_theme_libraries_empty/test_theme_libraries_empt tests/Drupal/Tests/Core/Asset/library_test_files/empty.libraries.yml tests/Drupal/Tests/Core/Asset/library_test_files/invalid_file.libraries.yml -!modules/ckeditor5/js/drupal/**/*.js +# TODO: get rid of this! +modules/ckeditor5/js/ckeditor5.admin.es6.js diff --git a/core/modules/ckeditor5/js/build/alignment.js b/core/assets/vendor/ckeditor5/build/alignment.js similarity index 100% rename from core/modules/ckeditor5/js/build/alignment.js rename to core/assets/vendor/ckeditor5/build/alignment.js diff --git a/core/modules/ckeditor5/js/build/basic-styles.js b/core/assets/vendor/ckeditor5/build/basic-styles.js similarity index 100% rename from core/modules/ckeditor5/js/build/basic-styles.js rename to core/assets/vendor/ckeditor5/build/basic-styles.js diff --git a/core/modules/ckeditor5/js/build/block-quote.js b/core/assets/vendor/ckeditor5/build/block-quote.js similarity index 100% rename from core/modules/ckeditor5/js/build/block-quote.js rename to core/assets/vendor/ckeditor5/build/block-quote.js diff --git a/core/modules/ckeditor5/js/build/ckeditor5-dll.js b/core/assets/vendor/ckeditor5/build/ckeditor5-dll.js similarity index 100% rename from core/modules/ckeditor5/js/build/ckeditor5-dll.js rename to core/assets/vendor/ckeditor5/build/ckeditor5-dll.js diff --git a/core/assets/vendor/ckeditor5/build/drupal/drupalEmphasis.js b/core/assets/vendor/ckeditor5/build/drupal/drupalEmphasis.js new file mode 100644 index 0000000000..0ee238a1f6 --- /dev/null +++ b/core/assets/vendor/ckeditor5/build/drupal/drupalEmphasis.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalEmphasis=t())}(self,(function(){return(()=>{var e={"ckeditor5/src/core.js":(e,t,r)=>{e.exports=r("dll-reference CKEditor5.dll")("./src/core.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,r),s.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};return(()=>{"use strict";r.d(o,{default:()=>n});var e=r("ckeditor5/src/core.js");class t extends e.Plugin{static get pluginName(){return"DrupalEmphasisEditing"}init(){this.editor.conversion.for("downcast").attributeToElement({model:"italic",view:"em",converterPriority:"high"})}}const i=t;class s extends e.Plugin{static get requires(){return[i]}static get pluginName(){return"DrupalEmphasis"}}const n={DrupalEmphasis:s}})(),o=o.default})()})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/build/drupal/drupalImage.js b/core/assets/vendor/ckeditor5/build/drupal/drupalImage.js new file mode 100644 index 0000000000..cebf40652f --- /dev/null +++ b/core/assets/vendor/ckeditor5/build/drupal/drupalImage.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor5=e():(t.CKEditor5=t.CKEditor5||{},t.CKEditor5.drupalImage=e())}(self,(function(){return(()=>{var t={"ckeditor5/src/core.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/upload.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/upload.js")},"ckeditor5/src/utils.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(r){var n=e[r];if(void 0!==n)return n.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,i),a.exports}i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r={};return(()=>{"use strict";i.d(r,{default:()=>p});var t=i("ckeditor5/src/core.js");function e(t){return t.createEmptyElement("img")}class n extends t.Plugin{static get pluginName(){return"DrupalImageEditing"}init(){const t=this.editor,i=t.conversion,{schema:r}=t.model;r.isRegistered("imageInline")&&r.extend("imageInline",{allowAttributes:["dataEntityUuid","dataEntityType","width","height"]}),r.isRegistered("imageBlock")&&r.extend("imageBlock",{allowAttributes:["dataEntityUuid","dataEntityType","width","height"]}),i.for("upcast").add(function(t){function e(e,i,r){const{viewItem:n}=i,{writer:a,consumable:o,safeInsert:s,updateConversionResult:l,schema:u}=r,d=[];let c;if(o.test(n,{name:!0,attributes:"src"})){if(c=u.checkChild(i.modelCursor,"imageInline")?a.createElement("imageInline",{src:n.getAttribute("src")}):a.createElement("imageBlock",{src:n.getAttribute("src")}),t.plugins.has("ImageStyleEditing")&&o.test(n,{name:!0,attributes:"data-align"})){const t={left:"alignBlockLeft",center:"alignCenter",right:"alignBlockRight"},e={left:"alignLeft",right:"alignRight"},i=n.getAttribute("data-align"),r=c.is("element","imageBlock")?t[i]:e[i];a.setAttribute("imageStyle",r,c),d.push("data-align")}if(c.is("element","imageBlock")&&o.test(n,{name:!0,attributes:"data-caption"})){const t=a.createElement("caption");a.insertText(n.getAttribute("data-caption"),t),a.append(t,c),d.push("data-caption")}o.test(n,{name:!0,attributes:"data-entity-uuid"})&&(a.setAttribute("dataEntityUuid",n.getAttribute("data-entity-uuid"),c),d.push("data-entity-uuid")),o.test(n,{name:!0,attributes:"data-entity-type"})&&(a.setAttribute("dataEntityType",n.getAttribute("data-entity-type"),c),d.push("data-entity-type")),s(c,i.modelCursor)&&(o.consume(n,{name:!0,attributes:d}),l(c,i))}}return t=>{t.on("element:img",e,{priority:"high"})}}(t)).attributeToAttribute({view:{name:"img",key:"width"},model:{key:"width",value:t=>`${t.getAttribute("width")}px`}}).attributeToAttribute({view:{name:"img",key:"height"},model:{key:"height",value:t=>`${t.getAttribute("height")}px`}}),i.for("downcast").add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-entity-uuid",e.attributeNewValue,s||o)}return e=>{e.on("attribute:dataEntityUuid",t)}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-entity-type",e.attributeNewValue,s||o)}return e=>{e.on("attribute:dataEntityType",t)}}()),i.for("dataDowncast").add((e=>{e.on("insert:caption",((e,i,r)=>{if(!r.consumable.consume(i.item,"insert"))return;let n="";if(Array.from(t.model.createRangeIn(i.item)).forEach((({item:t})=>{r.consumable.consume(t,"insert")&&t.is("$textProxy")&&(n+=t.data)})),n){const t=r.mapper.toViewElement(i.item.parent);r.writer.setAttribute("data-caption",n,t)}}),{priority:"high"})})).add((t=>{t.on("insert:$text",((t,e)=>{const{parent:i}=e.item;i.is("element","caption")&&i.parent.is("element","imageBlock")&&t.stop()}),{priority:"highest"})})).elementToElement({model:"imageBlock",view:(t,{writer:i})=>e(i),converterPriority:"high"}).elementToElement({model:"imageInline",view:(t,{writer:i})=>e(i),converterPriority:"high"}).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i,o={alignLeft:"left",alignRight:"right",alignCenter:"center",alignBlockRight:"right",alignBlockLeft:"left"};if(!o[e.attributeNewValue]||!n.consume(r,t.name))return;const s=i.mapper.toViewElement(r),l=Array.from(s.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-align",o[e.attributeNewValue],l||s)}return e=>{e.on("attribute:imageStyle",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("width",e.attributeNewValue.replace("px",""),s||o)}return e=>{e.on("attribute:width:imageInline",t,{priority:"high"}),e.on("attribute:width:imageBlock",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("height",e.attributeNewValue.replace("px",""),s||o)}return e=>{e.on("attribute:height:imageInline",t,{priority:"high"}),e.on("attribute:height:imageBlock",t,{priority:"high"})}}())}}class a extends t.Plugin{static get requires(){return[n]}static get pluginName(){return"DrupalImage"}}const o=a;class s extends t.Plugin{init(){const{editor:t}=this;t.plugins.get("ImageUploadEditing").on("uploadComplete",((e,{data:i,imageElement:r})=>{t.model.change((t=>{t.setAttribute("dataEntityUuid",i.dataEntityUuid,r),t.setAttribute("dataEntityType",i.dataEntityType,r)}))}))}static get pluginName(){return"DrupalImageUploadEditing"}}var l=i("ckeditor5/src/upload.js"),u=i("ckeditor5/src/utils.js");class d{constructor(t,e){this.loader=t,this.options=e}upload(){return this.loader.file.then((t=>new Promise(((e,i)=>{this._initRequest(),this._initListeners(e,i,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){this.xhr=new XMLHttpRequest,this.xhr.open("POST",this.options.uploadUrl,!0),this.xhr.responseType="json"}_initListeners(t,e,i){const r=this.xhr,n=this.loader,a=`Couldn't upload file: ${i.name}.`;r.addEventListener("error",(()=>e(a))),r.addEventListener("abort",(()=>e())),r.addEventListener("load",(()=>{const i=r.response;if(!i||i.error)return e(i&&i.error&&i.error.message?i.error.message:a);t({urls:{default:i.url},dataEntityUuid:i.uuid?i.uuid:"",dataEntityType:i.entity_type?i.entity_type:""})})),r.upload&&r.upload.addEventListener("progress",(t=>{t.lengthComputable&&(n.uploadTotal=t.total,n.uploaded=t.loaded)}))}_sendRequest(t){const e=this.options.headers||{},i=this.options.withCredentials||!1;Object.keys(e).forEach((t=>{this.xhr.setRequestHeader(t,e[t])})),this.xhr.withCredentials=i;const r=new FormData;r.append("upload",t),this.xhr.send(r)}}class c extends t.Plugin{static get requires(){return[l.FileRepository]}static get pluginName(){return"DrupalFileRepository"}init(){const t=this.editor.config.get("drupalImageUpload");t&&(t.uploadUrl?this.editor.plugins.get(l.FileRepository).createUploadAdapter=e=>new d(e,t):(0,u.logWarning)("simple-upload-adapter-missing-uploadurl"))}}class m extends t.Plugin{static get requires(){return[c,s]}static get pluginName(){return"DrupalImageUpload"}}const p={DrupalImage:o,DrupalImageUpload:m}})(),r=r.default})()})); \ No newline at end of file diff --git a/core/assets/vendor/ckeditor5/build/drupal/drupalMedia.js b/core/assets/vendor/ckeditor5/build/drupal/drupalMedia.js new file mode 100644 index 0000000000..b96a914478 --- /dev/null +++ b/core/assets/vendor/ckeditor5/build/drupal/drupalMedia.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(self,(function(){return(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(r){var s=t[r];if(void 0!==s)return s.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,i),o.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r={};return(()=>{"use strict";i.d(r,{default:()=>_});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");class s extends e.Command{execute(e){this.editor.model.change((t=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(t,e))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const o=e=>{const t=e.getAttributes();let i="{"data-caption"!==e[0]&&(i+=` ${e[0]}="${e[1]}"`)})),i+=">",i};class a extends e.Plugin{static get requires(){return[t.Widget]}init(){this.attrs=["alt","data-align","data-caption","data-entity-type","data-entity-uuid","data-view-mode"];const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewURL=t,this.themeError=i||`\n

${this.editor.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}

\n `,this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertDrupalMedia",new s(this.editor))}async _fetchPreview(e,t){const i=await fetch(`${e}?${new URLSearchParams(t)}`);if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return this.themeError}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,allowAttributes:this.attrs})}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const r=i.createContainerElement("div",{class:"drupal-media"}),s=i.createRawElement("div",{},(t=>{this.previewURL?this._fetchPreview(this.previewURL,{text:o(e),uuid:e.getAttribute("data-entity-uuid")}).then((({label:e,preview:i})=>{t.innerHTML=i,t.setAttribute("aria-label",e)})):(t.innerHTML=this.themeError,t.setAttribute("aria-label","drupal-media"))}));return i.insert(i.createPositionAt(r,0),s),i.setCustomProperty("drupalMedia",!0,r),(0,t.toWidget)(r,i,{label:"media widget"})}}),this.attrs.forEach((t=>{e.attributeToAttribute({model:t,view:t})}))}}var n=i("ckeditor5/src/ui.js");class l extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:r,dialogSettings:s={}}=t;i&&"function"==typeof r&&e.ui.componentFactory.add("drupalMedia",(t=>{const o=e.commands.get("insertDrupalMedia"),a=new n.ButtonView(t);return a.set({label:e.t("Insert Drupal Media"),icon:'\n',tooltip:!0}),a.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(a,"execute",(()=>{r(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),s)})),a}))}}function d(e){return!!e&&e.is("element","drupalMedia")}function c(e){const i=e.getSelectedElement();return i&&function(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}(i)?i:null}class u extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const e=this.editor,{t:i}=e;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:i("Drupal Media toolbar"),items:e.config.get("drupalMedia.toolbar")||[],getRelatedElement:e=>c(e)})}}class h extends e.Command{refresh(){const e=this.editor.model.document.selection.getSelectedElement();this.isEnabled=!1,d(e)&&this._isMediaImage(e).then((e=>{this.isEnabled=e})),d(e)&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor.model,i=t.document.selection.getSelectedElement();t.change((t=>{t.setAttribute("alt",e.newValue,i)}))}async _isMediaImage(e){const t=this.editor.config.get("drupalMedia");if(!t)return null;const{isMediaUrl:i}=t,r=new URLSearchParams({uuid:e.getAttribute("data-entity-uuid")}),s=await fetch(`${i}?${r}`);return s.ok?JSON.parse(await s.text()):null}}class m extends e.Plugin{static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){this.editor.commands.add("mediaImageTextAlternative",new h(this.editor))}}function p(e){const t=e.editing.view,i=n.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var f=i("ckeditor5/src/utils.js");class g extends n.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new f.FocusTracker,this.keystrokes=new f.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new n.ViewCollection,this._focusCycler=new n.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,n.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,n.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,r){const s=new n.ButtonView(this.locale);return s.set({label:e,icon:t,tooltip:!0}),s.extendTemplate({attributes:{class:i}}),r&&s.delegate("execute").to(this,r),s}_createLabeledInputView(){const e=this.locale.t,t=new n.LabeledFieldView(this.locale,n.createLabeledInputText);return t.label=e("Override text alternative"),t}}class w extends e.Plugin{static get requires(){return[n.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("mediaImageTextAlternative",(r=>{const s=t.commands.get("mediaImageTextAlternative"),o=new n.ButtonView(r);return o.set({label:i("Override media image text alternative"),icon:e.icons.lowVision,tooltip:!0}),o.bind("isVisible").to(s,"isEnabled"),this.listenTo(o,"execute",(()=>{this._showForm()})),o}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new g(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{c(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(c(e.editing.view.document.selection)){const i=p(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,n.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:p(e)}),i.fieldView.element.value=t.value||"",i.fieldView.value=i.fieldView.element.value,this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class b extends e.Plugin{static get requires(){return[m,w]}static get pluginName(){return"MediaImageTextAlternative"}}class v extends e.Plugin{static get requires(){return[a,l,u,b]}}const _={DrupalMedia:v,MediaImageTextAlternative:b,MediaImageTextAlternativeEditing:m,MediaImageTextAlternativeUi:w}})(),r=r.default})()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/build/editor-classic.js b/core/assets/vendor/ckeditor5/build/editor-classic.js similarity index 100% rename from core/modules/ckeditor5/js/build/editor-classic.js rename to core/assets/vendor/ckeditor5/build/editor-classic.js diff --git a/core/modules/ckeditor5/js/build/editor-decoupled.js b/core/assets/vendor/ckeditor5/build/editor-decoupled.js similarity index 100% rename from core/modules/ckeditor5/js/build/editor-decoupled.js rename to core/assets/vendor/ckeditor5/build/editor-decoupled.js diff --git a/core/modules/ckeditor5/js/build/essentials.js b/core/assets/vendor/ckeditor5/build/essentials.js similarity index 100% rename from core/modules/ckeditor5/js/build/essentials.js rename to core/assets/vendor/ckeditor5/build/essentials.js diff --git a/core/modules/ckeditor5/js/build/heading.js b/core/assets/vendor/ckeditor5/build/heading.js similarity index 100% rename from core/modules/ckeditor5/js/build/heading.js rename to core/assets/vendor/ckeditor5/build/heading.js diff --git a/core/modules/ckeditor5/js/build/horizontal-line.js b/core/assets/vendor/ckeditor5/build/horizontal-line.js similarity index 100% rename from core/modules/ckeditor5/js/build/horizontal-line.js rename to core/assets/vendor/ckeditor5/build/horizontal-line.js diff --git a/core/modules/ckeditor5/js/build/html-support.js b/core/assets/vendor/ckeditor5/build/html-support.js similarity index 100% rename from core/modules/ckeditor5/js/build/html-support.js rename to core/assets/vendor/ckeditor5/build/html-support.js diff --git a/core/modules/ckeditor5/js/build/image.js b/core/assets/vendor/ckeditor5/build/image.js similarity index 100% rename from core/modules/ckeditor5/js/build/image.js rename to core/assets/vendor/ckeditor5/build/image.js diff --git a/core/modules/ckeditor5/js/build/indent.js b/core/assets/vendor/ckeditor5/build/indent.js similarity index 100% rename from core/modules/ckeditor5/js/build/indent.js rename to core/assets/vendor/ckeditor5/build/indent.js diff --git a/core/modules/ckeditor5/js/build/language.js b/core/assets/vendor/ckeditor5/build/language.js similarity index 100% rename from core/modules/ckeditor5/js/build/language.js rename to core/assets/vendor/ckeditor5/build/language.js diff --git a/core/modules/ckeditor5/js/build/link.js b/core/assets/vendor/ckeditor5/build/link.js similarity index 100% rename from core/modules/ckeditor5/js/build/link.js rename to core/assets/vendor/ckeditor5/build/link.js diff --git a/core/modules/ckeditor5/js/build/list.js b/core/assets/vendor/ckeditor5/build/list.js similarity index 100% rename from core/modules/ckeditor5/js/build/list.js rename to core/assets/vendor/ckeditor5/build/list.js diff --git a/core/modules/ckeditor5/js/build/source-editing.js b/core/assets/vendor/ckeditor5/build/source-editing.js similarity index 100% rename from core/modules/ckeditor5/js/build/source-editing.js rename to core/assets/vendor/ckeditor5/build/source-editing.js diff --git a/core/modules/ckeditor5/js/build/table.js b/core/assets/vendor/ckeditor5/build/table.js similarity index 100% rename from core/modules/ckeditor5/js/build/table.js rename to core/assets/vendor/ckeditor5/build/table.js diff --git a/core/modules/ckeditor5/js/build/translations/af.js b/core/assets/vendor/ckeditor5/build/translations/af.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/af.js rename to core/assets/vendor/ckeditor5/build/translations/af.js diff --git a/core/modules/ckeditor5/js/build/translations/ar.js b/core/assets/vendor/ckeditor5/build/translations/ar.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ar.js rename to core/assets/vendor/ckeditor5/build/translations/ar.js diff --git a/core/modules/ckeditor5/js/build/translations/ast.js b/core/assets/vendor/ckeditor5/build/translations/ast.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ast.js rename to core/assets/vendor/ckeditor5/build/translations/ast.js diff --git a/core/modules/ckeditor5/js/build/translations/az.js b/core/assets/vendor/ckeditor5/build/translations/az.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/az.js rename to core/assets/vendor/ckeditor5/build/translations/az.js diff --git a/core/modules/ckeditor5/js/build/translations/bg.js b/core/assets/vendor/ckeditor5/build/translations/bg.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/bg.js rename to core/assets/vendor/ckeditor5/build/translations/bg.js diff --git a/core/modules/ckeditor5/js/build/translations/ca.js b/core/assets/vendor/ckeditor5/build/translations/ca.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ca.js rename to core/assets/vendor/ckeditor5/build/translations/ca.js diff --git a/core/modules/ckeditor5/js/build/translations/cs.js b/core/assets/vendor/ckeditor5/build/translations/cs.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/cs.js rename to core/assets/vendor/ckeditor5/build/translations/cs.js diff --git a/core/modules/ckeditor5/js/build/translations/da.js b/core/assets/vendor/ckeditor5/build/translations/da.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/da.js rename to core/assets/vendor/ckeditor5/build/translations/da.js diff --git a/core/modules/ckeditor5/js/build/translations/de-ch.js b/core/assets/vendor/ckeditor5/build/translations/de-ch.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/de-ch.js rename to core/assets/vendor/ckeditor5/build/translations/de-ch.js diff --git a/core/modules/ckeditor5/js/build/translations/de.js b/core/assets/vendor/ckeditor5/build/translations/de.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/de.js rename to core/assets/vendor/ckeditor5/build/translations/de.js diff --git a/core/modules/ckeditor5/js/build/translations/el.js b/core/assets/vendor/ckeditor5/build/translations/el.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/el.js rename to core/assets/vendor/ckeditor5/build/translations/el.js diff --git a/core/modules/ckeditor5/js/build/translations/en-au.js b/core/assets/vendor/ckeditor5/build/translations/en-au.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/en-au.js rename to core/assets/vendor/ckeditor5/build/translations/en-au.js diff --git a/core/modules/ckeditor5/js/build/translations/en-gb.js b/core/assets/vendor/ckeditor5/build/translations/en-gb.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/en-gb.js rename to core/assets/vendor/ckeditor5/build/translations/en-gb.js diff --git a/core/modules/ckeditor5/js/build/translations/eo.js b/core/assets/vendor/ckeditor5/build/translations/eo.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/eo.js rename to core/assets/vendor/ckeditor5/build/translations/eo.js diff --git a/core/modules/ckeditor5/js/build/translations/es.js b/core/assets/vendor/ckeditor5/build/translations/es.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/es.js rename to core/assets/vendor/ckeditor5/build/translations/es.js diff --git a/core/modules/ckeditor5/js/build/translations/et.js b/core/assets/vendor/ckeditor5/build/translations/et.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/et.js rename to core/assets/vendor/ckeditor5/build/translations/et.js diff --git a/core/modules/ckeditor5/js/build/translations/eu.js b/core/assets/vendor/ckeditor5/build/translations/eu.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/eu.js rename to core/assets/vendor/ckeditor5/build/translations/eu.js diff --git a/core/modules/ckeditor5/js/build/translations/fa.js b/core/assets/vendor/ckeditor5/build/translations/fa.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/fa.js rename to core/assets/vendor/ckeditor5/build/translations/fa.js diff --git a/core/modules/ckeditor5/js/build/translations/fi.js b/core/assets/vendor/ckeditor5/build/translations/fi.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/fi.js rename to core/assets/vendor/ckeditor5/build/translations/fi.js diff --git a/core/modules/ckeditor5/js/build/translations/fr.js b/core/assets/vendor/ckeditor5/build/translations/fr.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/fr.js rename to core/assets/vendor/ckeditor5/build/translations/fr.js diff --git a/core/modules/ckeditor5/js/build/translations/gl.js b/core/assets/vendor/ckeditor5/build/translations/gl.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/gl.js rename to core/assets/vendor/ckeditor5/build/translations/gl.js diff --git a/core/modules/ckeditor5/js/build/translations/gu.js b/core/assets/vendor/ckeditor5/build/translations/gu.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/gu.js rename to core/assets/vendor/ckeditor5/build/translations/gu.js diff --git a/core/modules/ckeditor5/js/build/translations/he.js b/core/assets/vendor/ckeditor5/build/translations/he.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/he.js rename to core/assets/vendor/ckeditor5/build/translations/he.js diff --git a/core/modules/ckeditor5/js/build/translations/hi.js b/core/assets/vendor/ckeditor5/build/translations/hi.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/hi.js rename to core/assets/vendor/ckeditor5/build/translations/hi.js diff --git a/core/modules/ckeditor5/js/build/translations/hr.js b/core/assets/vendor/ckeditor5/build/translations/hr.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/hr.js rename to core/assets/vendor/ckeditor5/build/translations/hr.js diff --git a/core/modules/ckeditor5/js/build/translations/hu.js b/core/assets/vendor/ckeditor5/build/translations/hu.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/hu.js rename to core/assets/vendor/ckeditor5/build/translations/hu.js diff --git a/core/modules/ckeditor5/js/build/translations/id.js b/core/assets/vendor/ckeditor5/build/translations/id.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/id.js rename to core/assets/vendor/ckeditor5/build/translations/id.js diff --git a/core/modules/ckeditor5/js/build/translations/it.js b/core/assets/vendor/ckeditor5/build/translations/it.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/it.js rename to core/assets/vendor/ckeditor5/build/translations/it.js diff --git a/core/modules/ckeditor5/js/build/translations/ja.js b/core/assets/vendor/ckeditor5/build/translations/ja.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ja.js rename to core/assets/vendor/ckeditor5/build/translations/ja.js diff --git a/core/modules/ckeditor5/js/build/translations/kk.js b/core/assets/vendor/ckeditor5/build/translations/kk.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/kk.js rename to core/assets/vendor/ckeditor5/build/translations/kk.js diff --git a/core/modules/ckeditor5/js/build/translations/km.js b/core/assets/vendor/ckeditor5/build/translations/km.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/km.js rename to core/assets/vendor/ckeditor5/build/translations/km.js diff --git a/core/modules/ckeditor5/js/build/translations/kn.js b/core/assets/vendor/ckeditor5/build/translations/kn.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/kn.js rename to core/assets/vendor/ckeditor5/build/translations/kn.js diff --git a/core/modules/ckeditor5/js/build/translations/ko.js b/core/assets/vendor/ckeditor5/build/translations/ko.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ko.js rename to core/assets/vendor/ckeditor5/build/translations/ko.js diff --git a/core/modules/ckeditor5/js/build/translations/ku.js b/core/assets/vendor/ckeditor5/build/translations/ku.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ku.js rename to core/assets/vendor/ckeditor5/build/translations/ku.js diff --git a/core/modules/ckeditor5/js/build/translations/lt.js b/core/assets/vendor/ckeditor5/build/translations/lt.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/lt.js rename to core/assets/vendor/ckeditor5/build/translations/lt.js diff --git a/core/modules/ckeditor5/js/build/translations/lv.js b/core/assets/vendor/ckeditor5/build/translations/lv.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/lv.js rename to core/assets/vendor/ckeditor5/build/translations/lv.js diff --git a/core/modules/ckeditor5/js/build/translations/nb.js b/core/assets/vendor/ckeditor5/build/translations/nb.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/nb.js rename to core/assets/vendor/ckeditor5/build/translations/nb.js diff --git a/core/modules/ckeditor5/js/build/translations/ne.js b/core/assets/vendor/ckeditor5/build/translations/ne.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ne.js rename to core/assets/vendor/ckeditor5/build/translations/ne.js diff --git a/core/modules/ckeditor5/js/build/translations/nl.js b/core/assets/vendor/ckeditor5/build/translations/nl.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/nl.js rename to core/assets/vendor/ckeditor5/build/translations/nl.js diff --git a/core/modules/ckeditor5/js/build/translations/no.js b/core/assets/vendor/ckeditor5/build/translations/no.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/no.js rename to core/assets/vendor/ckeditor5/build/translations/no.js diff --git a/core/modules/ckeditor5/js/build/translations/oc.js b/core/assets/vendor/ckeditor5/build/translations/oc.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/oc.js rename to core/assets/vendor/ckeditor5/build/translations/oc.js diff --git a/core/modules/ckeditor5/js/build/translations/pl.js b/core/assets/vendor/ckeditor5/build/translations/pl.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/pl.js rename to core/assets/vendor/ckeditor5/build/translations/pl.js diff --git a/core/modules/ckeditor5/js/build/translations/pt-br.js b/core/assets/vendor/ckeditor5/build/translations/pt-br.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/pt-br.js rename to core/assets/vendor/ckeditor5/build/translations/pt-br.js diff --git a/core/modules/ckeditor5/js/build/translations/pt.js b/core/assets/vendor/ckeditor5/build/translations/pt.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/pt.js rename to core/assets/vendor/ckeditor5/build/translations/pt.js diff --git a/core/modules/ckeditor5/js/build/translations/ro.js b/core/assets/vendor/ckeditor5/build/translations/ro.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ro.js rename to core/assets/vendor/ckeditor5/build/translations/ro.js diff --git a/core/modules/ckeditor5/js/build/translations/ru.js b/core/assets/vendor/ckeditor5/build/translations/ru.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ru.js rename to core/assets/vendor/ckeditor5/build/translations/ru.js diff --git a/core/modules/ckeditor5/js/build/translations/si.js b/core/assets/vendor/ckeditor5/build/translations/si.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/si.js rename to core/assets/vendor/ckeditor5/build/translations/si.js diff --git a/core/modules/ckeditor5/js/build/translations/sk.js b/core/assets/vendor/ckeditor5/build/translations/sk.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/sk.js rename to core/assets/vendor/ckeditor5/build/translations/sk.js diff --git a/core/modules/ckeditor5/js/build/translations/sl.js b/core/assets/vendor/ckeditor5/build/translations/sl.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/sl.js rename to core/assets/vendor/ckeditor5/build/translations/sl.js diff --git a/core/modules/ckeditor5/js/build/translations/sq.js b/core/assets/vendor/ckeditor5/build/translations/sq.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/sq.js rename to core/assets/vendor/ckeditor5/build/translations/sq.js diff --git a/core/modules/ckeditor5/js/build/translations/sr-latn.js b/core/assets/vendor/ckeditor5/build/translations/sr-latn.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/sr-latn.js rename to core/assets/vendor/ckeditor5/build/translations/sr-latn.js diff --git a/core/modules/ckeditor5/js/build/translations/sr.js b/core/assets/vendor/ckeditor5/build/translations/sr.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/sr.js rename to core/assets/vendor/ckeditor5/build/translations/sr.js diff --git a/core/modules/ckeditor5/js/build/translations/sv.js b/core/assets/vendor/ckeditor5/build/translations/sv.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/sv.js rename to core/assets/vendor/ckeditor5/build/translations/sv.js diff --git a/core/modules/ckeditor5/js/build/translations/th.js b/core/assets/vendor/ckeditor5/build/translations/th.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/th.js rename to core/assets/vendor/ckeditor5/build/translations/th.js diff --git a/core/modules/ckeditor5/js/build/translations/tk.js b/core/assets/vendor/ckeditor5/build/translations/tk.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/tk.js rename to core/assets/vendor/ckeditor5/build/translations/tk.js diff --git a/core/modules/ckeditor5/js/build/translations/tr.js b/core/assets/vendor/ckeditor5/build/translations/tr.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/tr.js rename to core/assets/vendor/ckeditor5/build/translations/tr.js diff --git a/core/modules/ckeditor5/js/build/translations/tt.js b/core/assets/vendor/ckeditor5/build/translations/tt.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/tt.js rename to core/assets/vendor/ckeditor5/build/translations/tt.js diff --git a/core/modules/ckeditor5/js/build/translations/ug.js b/core/assets/vendor/ckeditor5/build/translations/ug.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/ug.js rename to core/assets/vendor/ckeditor5/build/translations/ug.js diff --git a/core/modules/ckeditor5/js/build/translations/uk.js b/core/assets/vendor/ckeditor5/build/translations/uk.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/uk.js rename to core/assets/vendor/ckeditor5/build/translations/uk.js diff --git a/core/modules/ckeditor5/js/build/translations/vi.js b/core/assets/vendor/ckeditor5/build/translations/vi.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/vi.js rename to core/assets/vendor/ckeditor5/build/translations/vi.js diff --git a/core/modules/ckeditor5/js/build/translations/zh-cn.js b/core/assets/vendor/ckeditor5/build/translations/zh-cn.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/zh-cn.js rename to core/assets/vendor/ckeditor5/build/translations/zh-cn.js diff --git a/core/modules/ckeditor5/js/build/translations/zh.js b/core/assets/vendor/ckeditor5/build/translations/zh.js similarity index 100% rename from core/modules/ckeditor5/js/build/translations/zh.js rename to core/assets/vendor/ckeditor5/build/translations/zh.js diff --git a/core/assets/vendor/ckeditor5/drupal/README.md b/core/assets/vendor/ckeditor5/drupal/README.md new file mode 100644 index 0000000000..2f42f6d7b1 --- /dev/null +++ b/core/assets/vendor/ckeditor5/drupal/README.md @@ -0,0 +1,24 @@ +CKEditor 5 build tools +---------------------- + +This module contains .js files necessary for CKEditor 5. +These files are all contained in js/build. + +The original files are created by downloading the ckeditor5 repo +running `yarn install` and `yarn dll:build`. + +Inside the ckeditor5 repo, the files are in individual package folders, +for example: `packages/ckeditor5-basic-styles/build/basic-styles.js` + + +Drupal specific CKEditor 5 plugins +---------------------------------- + +The `yarn dll:build` command generates a json manifest. +In the ckeditor5 repo it is in `build/ckeditor5-dll.manifest.json` +When building a custom CKEditor 5 plugin, it must reference this file in order +to correctly set any dependency paths. + +This module currently has custom plugins for images and drupal media. +The source js is in `js/drupal/src/drupalImage` or `js/drupal/src/drupalMedia` +The built js loaded by Drupal is in `js/build/drupal` diff --git a/core/modules/ckeditor5/js/drupal/scripts/manifest.js b/core/assets/vendor/ckeditor5/drupal/scripts/manifest.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/scripts/manifest.js rename to core/assets/vendor/ckeditor5/drupal/scripts/manifest.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalEmphasis/src/drupalemphasis.js b/core/assets/vendor/ckeditor5/drupal/src/drupalEmphasis/src/drupalemphasis.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalEmphasis/src/drupalemphasis.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalEmphasis/src/drupalemphasis.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalEmphasis/src/drupalemphasisediting.js b/core/assets/vendor/ckeditor5/drupal/src/drupalEmphasis/src/drupalemphasisediting.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalEmphasis/src/drupalemphasisediting.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalEmphasis/src/drupalemphasisediting.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalEmphasis/src/index.js b/core/assets/vendor/ckeditor5/drupal/src/drupalEmphasis/src/index.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalEmphasis/src/index.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalEmphasis/src/index.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/README.md b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/README.md similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/README.md rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/README.md diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/drupalimage.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/drupalimage.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/drupalimage.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/drupalimage.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/drupalimageediting.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/drupalimageediting.js similarity index 97% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/drupalimageediting.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/drupalimageediting.js index 2f23240f66..287c329c5d 100644 --- a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/drupalimageediting.js +++ b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/drupalimageediting.js @@ -358,17 +358,15 @@ export default class DrupalImageEditing extends Plugin { let captionText = ''; - Array.from(editor.model.createRangeIn(data.item)).forEach( - ({ item }) => { - if (!conversionApi.consumable.consume(item, 'insert')) { - return; - } - - if (item.is('$textProxy')) { - captionText += item.data; - } - }, - ); + Array.from(editor.model.createRangeIn(data.item)).forEach(({ item }) => { + if (!conversionApi.consumable.consume(item, 'insert')) { + return; + } + + if (item.is('$textProxy')) { + captionText += item.data; + } + }); if (captionText) { const imageViewElement = conversionApi.mapper.toViewElement( diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalfilerepository.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalfilerepository.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalfilerepository.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalfilerepository.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalimageupload.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalimageupload.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalimageupload.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalimageupload.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalimageuploadadapter.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalimageuploadadapter.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalimageuploadadapter.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalimageuploadadapter.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalimageuploadediting.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalimageuploadediting.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/imageupload/drupalimageuploadediting.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/imageupload/drupalimageuploadediting.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalImage/src/index.js b/core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/index.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalImage/src/index.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalImage/src/index.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/README.md b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/README.md similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/README.md rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/README.md diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmedia.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmedia.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmedia.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmedia.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediaediting.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediaediting.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediaediting.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediaediting.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediatoolbar.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediatoolbar.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediatoolbar.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediatoolbar.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediaui.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediaui.js similarity index 97% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediaui.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediaui.js index f9cf72d830..75cbbd6f77 100644 --- a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/drupalmediaui.js +++ b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/drupalmediaui.js @@ -1,5 +1,6 @@ import { Plugin } from 'ckeditor5/src/core'; import { ButtonView } from 'ckeditor5/src/ui'; +// cspell:ignore medialibrary import mediaIcon from '../theme/icons/medialibrary.svg'; export default class DrupalMediaUI extends Plugin { diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/index.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/index.js similarity index 91% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/index.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/index.js index c8c3a47458..f52e6bc9ca 100644 --- a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/index.js +++ b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/index.js @@ -1,4 +1,5 @@ import DrupalMedia from './drupalmedia'; +// cspell:ignore mediaimagetextalternative import MediaImageTextAlternative from './mediaimagetextalternative'; import MediaImageTextAlternativeEditing from './mediaimagetextalternative/mediaimagetextalternativeediting'; import MediaImageTextAlternativeUi from './mediaimagetextalternative/mediaimagetextalternativeui'; diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/insertdrupalmedia.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/insertdrupalmedia.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/insertdrupalmedia.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/insertdrupalmedia.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeui.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js similarity index 99% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js index 10ca1a95a7..b4062264f5 100644 --- a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js +++ b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/mediaimagetextalternative/ui/textalternativeformview.js @@ -11,6 +11,8 @@ import { import { FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils'; import { icons } from 'ckeditor5/src/core'; +// cspell:ignore focusables + export default class TextAlternativeFormView extends View { /** * @inheritDoc diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/ui/utils.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/ui/utils.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/ui/utils.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/ui/utils.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/src/utils.js b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/utils.js similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/src/utils.js rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/src/utils.js diff --git a/core/modules/ckeditor5/js/drupal/src/drupalMedia/theme/icons/medialibrary.svg b/core/assets/vendor/ckeditor5/drupal/src/drupalMedia/theme/icons/medialibrary.svg similarity index 100% rename from core/modules/ckeditor5/js/drupal/src/drupalMedia/theme/icons/medialibrary.svg rename to core/assets/vendor/ckeditor5/drupal/src/drupalMedia/theme/icons/medialibrary.svg diff --git a/core/modules/ckeditor5/js/scripts/build.js b/core/assets/vendor/ckeditor5/scripts/build.js similarity index 100% rename from core/modules/ckeditor5/js/scripts/build.js rename to core/assets/vendor/ckeditor5/scripts/build.js diff --git a/core/modules/ckeditor5/js/scripts/utils.js b/core/assets/vendor/ckeditor5/scripts/utils.js similarity index 100% rename from core/modules/ckeditor5/js/scripts/utils.js rename to core/assets/vendor/ckeditor5/scripts/utils.js diff --git a/core/core.libraries.yml b/core/core.libraries.yml index ee69d9c619..e2b2c4d3d5 100644 --- a/core/core.libraries.yml +++ b/core/core.libraries.yml @@ -22,6 +22,174 @@ ckeditor: js: assets/vendor/ckeditor/ckeditor.js: { preprocess: false, minified: true } +ckeditor5: + remote: &ckeditor5Remote https://github.com/ckeditor/ckeditor5 + version: &ckeditor5Version "29.0.0" + license: &ckeditor5License + name: GNU-GPL-2.0-or-later + url: https://github.com/ckeditor/ckeditor5/blob/master/LICENSE.md + gpl-compatible: true + js: + assets/vendor/ckeditor5/build/ckeditor5-dll.js: { preprocess: false, minified: true } + +ckeditor5.editorClassic: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/editor-classic.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.editorDecoupled: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/editor-decoupled.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.internal: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/essentials.js: { preprocess: false, minified: true } + assets/vendor/ckeditor5/build/heading.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.basic: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/basic-styles.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.blockquote: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/block-quote.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.image: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/image.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.link: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/link.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.list: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/list.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.horizontalLine: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/horizontal-line.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.htmlSupport: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/html-support.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.alignment: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/alignment.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.indent: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/indent.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.sourceEditing: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/source-editing.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.table: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + js: + assets/vendor/ckeditor5/build/table.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +ckeditor5.language: + remote: *ckeditor5Remote + version: *ckeditor5Version + license: *ckeditor5License + css: + component: + css/language.css: {} + js: + assets/vendor/ckeditor5/build/language.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + +drupal.ckeditor5.image: + js: + assets/vendor/ckeditor5/build/drupal/drupalImage.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5.image + +drupal.ckeditor5.emphasis: + version: VERSION + js: + assets/vendor/ckeditor5/build/drupal/drupalEmphasis.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5.basic + +drupal.ckeditor5.media: + js: + assets/vendor/ckeditor5/build/drupal/drupalMedia.js: { preprocess: false, minified: true } + dependencies: + - core/ckeditor5 + css.escape: remote: https://github.com/mathiasbynens/CSS.escape version: "1.5.1" diff --git a/core/modules/ckeditor5/ckeditor5.ckeditor5.yml b/core/modules/ckeditor5/ckeditor5.ckeditor5.yml index 2fef53b2d4..c5a8efa1da 100644 --- a/core/modules/ckeditor5/ckeditor5.ckeditor5.yml +++ b/core/modules/ckeditor5/ckeditor5.ckeditor5.yml @@ -7,7 +7,7 @@ ckeditor5_essentials: plugins: [essentials.Essentials] drupal: label: Essentials - library: ckeditor5/ckeditor5.internal + library: core/ckeditor5.internal admin_library: ckeditor5/admin.internal toolbar_items: undo: @@ -23,7 +23,7 @@ ckeditor5_paragraph: plugins: [paragraph.Paragraph] drupal: label: Paragraph - library: ckeditor5/ckeditor5.internal + library: core/ckeditor5.internal admin_library: ckeditor5/admin.internal elements: -

@@ -46,7 +46,7 @@ ckeditor5_heading: - { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' } drupal: label: Headings - library: ckeditor5/ckeditor5.internal + library: core/ckeditor5.internal admin_library: ckeditor5/admin.heading class: Drupal\ckeditor5\Plugin\CKEditor5Plugin\Heading toolbar_items: @@ -76,7 +76,7 @@ ckeditor5_htmlSupport: drupal: label: Arbitrary HTML support elements: false - library: ckeditor5/ckeditor5.htmlSupport + library: core/ckeditor5.htmlSupport # @see \Drupal\ckeditor5\Plugin\CKEditor5PluginManagerInterface::getEnabledDefinitions() conditions: [] @@ -91,7 +91,7 @@ ckeditor5_sourceEditing: # This is the only CKEditor 5 plugin allowed to generate a superset of elements. # @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing::getElementsSubset() elements: ['<*>'] - library: ckeditor5/ckeditor5.sourceEditing + library: core/ckeditor5.sourceEditing admin_library: ckeditor5/admin.sourceEditing toolbar_items: sourceEditing: @@ -102,7 +102,7 @@ ckeditor5_bold: plugins: [basicStyles.Bold] drupal: label: Bold - library: ckeditor5/ckeditor5.basic + library: core/ckeditor5.basic admin_library: ckeditor5/admin.basic toolbar_items: bold: @@ -117,7 +117,7 @@ ckeditor5_emphasis: - drupalEmphasis.DrupalEmphasis drupal: label: Emphasis - library: ckeditor5/drupal.ckeditor5.emphasis + library: core/drupal.ckeditor5.emphasis admin_library: ckeditor5/admin.basic toolbar_items: italic: @@ -130,7 +130,7 @@ ckeditor5_underline: plugins: [basicStyles.Underline] drupal: label: Underline - library: ckeditor5/ckeditor5.basic + library: core/ckeditor5.basic admin_library: ckeditor5/admin.basic toolbar_items: underline: @@ -143,7 +143,7 @@ ckeditor5_code: plugins: [basicStyles.Code] drupal: label: Code - library: ckeditor5/ckeditor5.basic + library: core/ckeditor5.basic admin_library: ckeditor5/admin.basic toolbar_items: code: @@ -156,7 +156,7 @@ ckeditor5_strikethrough: plugins: [basicStyles.Strikethrough] drupal: label: Strikethrough - library: ckeditor5/ckeditor5.basic + library: core/ckeditor5.basic admin_library: ckeditor5/admin.basic toolbar_items: strikethrough: @@ -169,7 +169,7 @@ ckeditor5_subscript: plugins: [basicStyles.Subscript] drupal: label: Subscript - library: ckeditor5/ckeditor5.basic + library: core/ckeditor5.basic admin_library: ckeditor5/admin.basic toolbar_items: subscript: @@ -182,7 +182,7 @@ ckeditor5_superscript: plugins: [basicStyles.Superscript] drupal: label: Superscript - library: ckeditor5/ckeditor5.basic + library: core/ckeditor5.basic admin_library: ckeditor5/admin.basic toolbar_items: superscript: @@ -196,7 +196,7 @@ ckeditor5_blockquote: - blockQuote.BlockQuote drupal: label: Block quote - library: ckeditor5/ckeditor5.blockquote + library: core/ckeditor5.blockquote admin_library: ckeditor5/admin.blockquote toolbar_items: blockQuote: @@ -210,7 +210,7 @@ ckeditor5_link: - link.Link drupal: label: Link - library: ckeditor5/ckeditor5.link + library: core/ckeditor5.link admin_library: ckeditor5/admin.link toolbar_items: link: @@ -223,7 +223,7 @@ ckeditor5_list: plugins: [list.List] drupal: label: List - library: ckeditor5/ckeditor5.list + library: core/ckeditor5.list admin_library: ckeditor5/admin.list toolbar_items: bulletedList: @@ -240,7 +240,7 @@ ckeditor5_horizontalLine: plugins: [horizontalLine.HorizontalLine] drupal: label: Horizontal line - library: ckeditor5/ckeditor5.horizontalLine + library: core/ckeditor5.horizontalLine admin_library: ckeditor5/admin.horizontalLine toolbar_items: horizontalLine: @@ -265,7 +265,7 @@ ckeditor5_alignment: className: text-align-justify drupal: label: Alignment - library: ckeditor5/ckeditor5.alignment + library: core/ckeditor5.alignment admin_library: ckeditor5/admin.alignment toolbar_items: alignment: @@ -291,7 +291,7 @@ ckeditor5_table: contentToolbar: [tableColumn, tableRow, mergeTableCells] drupal: label: Table - library: ckeditor5/ckeditor5.table + library: core/ckeditor5.table admin_library: ckeditor5/admin.table toolbar_items: insertTable: @@ -316,7 +316,7 @@ ckeditor5_image: toolbar: [imageTextAlternative] drupal: label: Image - library: ckeditor5/drupal.ckeditor5.image + library: core/drupal.ckeditor5.image elements: - conditions: @@ -367,7 +367,7 @@ ckeditor5_indent: drupal: label: Indent elements: false - library: ckeditor5/ckeditor5.indent + library: core/ckeditor5.indent admin_library: ckeditor5/admin.indent toolbar_items: indent: diff --git a/core/modules/ckeditor5/ckeditor5.libraries.yml b/core/modules/ckeditor5/ckeditor5.libraries.yml index 8630e825f9..467a7d5435 100644 --- a/core/modules/ckeditor5/ckeditor5.libraries.yml +++ b/core/modules/ckeditor5/ckeditor5.libraries.yml @@ -1,157 +1,11 @@ # cspell:ignore imageupload -ckeditor5: - remote: &ckeditor5Remote https://github.com/ckeditor/ckeditor5 - version: &ckeditor5Version "29.0.0" - license: &ckeditor5License - name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/master/LICENSE.md - gpl-compatible: true - js: - js/build/ckeditor5-dll.js: { preprocess: false, minified: true } - -ckeditor5.editorClassic: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/editor-classic.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.editorDecoupled: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/editor-decoupled.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.internal: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/essentials.js: { preprocess: false, minified: true } - js/build/heading.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.basic: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/basic-styles.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.blockquote: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/block-quote.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.image: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/image.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.link: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/link.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.list: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/list.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.horizontalLine: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/horizontal-line.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.htmlSupport: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/html-support.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.alignment: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/alignment.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.indent: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/indent.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.sourceEditing: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/source-editing.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5 - -ckeditor5.table: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License - js: - js/build/table.js: { preprocess: false, minified: true } - ckeditor5.language: - remote: *ckeditor5Remote - version: *ckeditor5Version - license: *ckeditor5License css: component: css/language.css: {} - js: - js/build/language.js: { preprocess: false, minified: true } dependencies: - - ckeditor5/ckeditor5 - -media_embed_ckeditor5_theme: - js: - js/media_embed_ckeditor5.theme.js: {} - dependencies: - - core/drupal + - core/ckeditor5.language drupal.ckeditor5: js: @@ -163,9 +17,9 @@ drupal.ckeditor5: - core/jquery - core/drupal - core/drupal.debounce - - ckeditor5/ckeditor5.editorClassic - - ckeditor5/ckeditor5.editorDecoupled - - ckeditor5/ckeditor5 + - core/ckeditor5.editorClassic + - core/ckeditor5.editorDecoupled + - core/ckeditor5 - editor/drupal.editor - ckeditor5/drupal.ckeditor5.quickedit-temporary-work-around @@ -175,37 +29,12 @@ drupal.ckeditor5.quickedit-temporary-work-around: theme: css/quickedit-override.css: {} -drupal.ckeditor5.image: - remote: https://github.com/zrpnr/ckeditor5-drupal-image - version: 1.0.0 - license: - name: GNU-GPL-2.0-or-later - url: https://github.com/zrpnr/ckeditor5-drupal-image/blob/main/LICENSE - gpl-compatible: true - js: - js/build/drupal/drupalImage.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5.image - -drupal.ckeditor5.emphasis: - version: VERSION - js: - js/build/drupal/drupalEmphasis.js: { preprocess: false, minified: true } - dependencies: - - ckeditor5/ckeditor5.basic - drupal.ckeditor5.media: - remote: https://github.com/zrpnr/ckeditor5-drupal-media - version: 1.0.0 - license: - name: GNU-GPL-2.0-or-later - url: https://github.com/zrpnr/ckeditor5-drupal-media/blob/main/LICENSE - gpl-compatible: true js: - js/build/drupal/drupalMedia.js: { preprocess: false, minified: true } + js/media_embed_ckeditor5.theme.js: {} dependencies: - - ckeditor5/ckeditor5 - - ckeditor5/media_embed_ckeditor5_theme + - core/drupal + - core/drupal.ckeditor5.media ie11.user.warnings: js: @@ -283,7 +112,7 @@ admin.heading: theme: css/heading.admin.css: { } dependencies: - - ckeditor5/ckeditor5.internal + - core/ckeditor5.internal admin.horizontalLine: css: diff --git a/core/modules/ckeditor5/ckeditor5.module b/core/modules/ckeditor5/ckeditor5.module index 10699e90d2..0ac517bc19 100644 --- a/core/modules/ckeditor5/ckeditor5.module +++ b/core/modules/ckeditor5/ckeditor5.module @@ -321,11 +321,11 @@ function ckeditor5_library_info_alter(&$libraries, $extension) { $libraries['base']['dependencies'][] = 'ckeditor5/ie11.user.warnings'; } - if ($extension === 'ckeditor5') { + if ($extension === 'core') { // Generate libraries for each of the CKEditor 5 translation files so that // the correct translation file can be attached depending on the current // language. - $files = scandir(\Drupal::service('extension.list.module')->getPath('ckeditor5') . '/js/build/translations'); + $files = scandir('core/assets/vendor/ckeditor5/build/translations'); foreach ($files as $file) { if ($file[0] !== '.' && preg_match('/\.js$/', $file)) { $langcode = basename($file, '.js'); @@ -334,7 +334,7 @@ function ckeditor5_library_info_alter(&$libraries, $extension) { 'version' => $libraries['ckeditor5']['version'], 'license' => $libraries['ckeditor5']['license'], 'js' => [ - 'js/build/translations/' . $file => ['preprocess' => FALSE, 'minified' => TRUE], + 'assets/vendor/ckeditor5/build/translations/' . $file => ['preprocess' => FALSE, 'minified' => TRUE], ], ]; } diff --git a/core/modules/ckeditor5/css/alignment.admin.css b/core/modules/ckeditor5/css/alignment.admin.css index 83b50ecc88..2830a9d556 100644 --- a/core/modules/ckeditor5/css/alignment.admin.css +++ b/core/modules/ckeditor5/css/alignment.admin.css @@ -27,19 +27,19 @@ background-position-x: 30px; } .ckeditor5-toolbar-button-alignment::after { - content: ''; - color: #000; + position: relative; + right: -10px; display: inline-block; - border-style: solid; - border-width: 2px 2px 0 0; - height: 7px; width: 7px; + height: 7px; + content: ""; transform: rotate(135deg); - position: relative; + color: #000; + border-width: 2px 2px 0 0; + border-style: solid; background-position-x: -10px; - right: -10px; } [dir="rtl"] .ckeditor5-toolbar-button-alignment::after { - background-position-x: 10px; right: 10px; + background-position-x: 10px; } diff --git a/core/modules/ckeditor5/css/drupalmedia.admin.css b/core/modules/ckeditor5/css/drupalmedia.admin.css index 254747879d..7a381a053d 100644 --- a/core/modules/ckeditor5/css/drupalmedia.admin.css +++ b/core/modules/ckeditor5/css/drupalmedia.admin.css @@ -1,3 +1,4 @@ +/* cspell:ignore medialibrary */ .ckeditor5-toolbar-button-drupalMedia { background-image: url(../icons/medialibrary.svg); } diff --git a/core/modules/ckeditor5/css/filter.admin.css b/core/modules/ckeditor5/css/filter.admin.css index 75f51d0327..dc9c54cbb3 100644 --- a/core/modules/ckeditor5/css/filter.admin.css +++ b/core/modules/ckeditor5/css/filter.admin.css @@ -1,4 +1,4 @@ .ckeditor5-filter-attention { - outline: 1px red dashed; padding: 4px; + outline: 1px red dashed; } diff --git a/core/modules/ckeditor5/css/heading.admin.css b/core/modules/ckeditor5/css/heading.admin.css index a26c1ab780..d16d435a4a 100644 --- a/core/modules/ckeditor5/css/heading.admin.css +++ b/core/modules/ckeditor5/css/heading.admin.css @@ -20,4 +20,4 @@ .ck[class*="ck-heading_heading"] { font-weight: bold; -} \ No newline at end of file +} diff --git a/core/modules/ckeditor5/css/ie-warnings.css b/core/modules/ckeditor5/css/ie-warnings.css index edd27897e9..b330d27f88 100644 --- a/core/modules/ckeditor5/css/ie-warnings.css +++ b/core/modules/ckeditor5/css/ie-warnings.css @@ -1,8 +1,8 @@ .quickedit-field.quickedit-highlighted.ck5-ie11, .quickedit-form.quickedit-highlighted.ck5-ie11, .quickedit-field .quickedit-highlighted.ck5-ie11 { - box-shadow: 0 0 0 1px #ff0000, 0 0 0 2px #ff0000; cursor: default; + box-shadow: 0 0 0 1px #f00, 0 0 0 2px #f00; } .quickedit .icon.ck5-ie11 { diff --git a/core/modules/ckeditor5/css/imageupload.admin.css b/core/modules/ckeditor5/css/imageupload.admin.css index a29b16e5fc..5d4f9549b0 100644 --- a/core/modules/ckeditor5/css/imageupload.admin.css +++ b/core/modules/ckeditor5/css/imageupload.admin.css @@ -1,3 +1,4 @@ +/* cspell:ignore imageupload */ .ckeditor5-toolbar-button-uploadImage { background-image: url(../icons/imageupload.svg); } diff --git a/core/modules/ckeditor5/css/internal.admin.css b/core/modules/ckeditor5/css/internal.admin.css index 09ea17e38b..62a5ac434b 100644 --- a/core/modules/ckeditor5/css/internal.admin.css +++ b/core/modules/ckeditor5/css/internal.admin.css @@ -14,30 +14,30 @@ } .ckeditor5-toolbar-button-heading { - width: 100px; display: flex; - justify-content: space-between; align-items: center; + justify-content: space-between; + width: 100px; color: #000; } .ckeditor5-toolbar-button-heading::before { - content: 'Heading'; margin-left: 10px; + content: "Heading"; font-size: 14px; } [dir="rtl"] .ckeditor5-toolbar-button-heading::before { - margin-left: 0; margin-right: 10px; + margin-left: 0; } .ckeditor5-toolbar-button-heading::after { - content: ''; - margin-right: 10px; display: inline-block; - border-style: solid; - border-width: 2px 2px 0 0; - height: 7px; width: 7px; + height: 7px; + margin-right: 10px; + content: ""; transform: rotate(135deg); + border-width: 2px 2px 0 0; + border-style: solid; } [dir="rtl"] .ckeditor5-toolbar-button-heading::after { margin-right: 0; diff --git a/core/modules/ckeditor5/css/language.admin.css b/core/modules/ckeditor5/css/language.admin.css index a360466144..42ebab47e9 100644 --- a/core/modules/ckeditor5/css/language.admin.css +++ b/core/modules/ckeditor5/css/language.admin.css @@ -1,28 +1,28 @@ .ckeditor5-toolbar-button-textPartLanguage { - width: 110px; display: flex; - justify-content: space-between; align-items: center; + justify-content: space-between; + width: 110px; color: #000; } .ckeditor5-toolbar-button-textPartLanguage::before { - content: 'Language'; margin-left: 10px; + content: "Language"; font-size: 14px; } [dir="rtl"] .ckeditor5-toolbar-button-textPartLanguage::before { - margin-left: 0; margin-right: 10px; + margin-left: 0; } .ckeditor5-toolbar-button-textPartLanguage::after { - content: ''; - margin-right: 10px; display: inline-block; - border-style: solid; - border-width: 2px 2px 0 0; - height: 7px; width: 7px; + height: 7px; + margin-right: 10px; + content: ""; transform: rotate(135deg); + border-width: 2px 2px 0 0; + border-style: solid; } [dir="rtl"] .ckeditor5-toolbar-button-textPartLanguage::after { margin-right: 0; diff --git a/core/modules/ckeditor5/css/language.css b/core/modules/ckeditor5/css/language.css index 3097b6681f..b13e52150e 100644 --- a/core/modules/ckeditor5/css/language.css +++ b/core/modules/ckeditor5/css/language.css @@ -9,10 +9,10 @@ * '(en)'. Since the html element has a 'lang' attribute too we only target * elements within the html scope. */ -.ck-content [lang] { +.ck-content [lang] { outline: 1px dotted gray; } -.ck-content [lang]:after { +.ck-content [lang]:after { content: " ("attr(lang)")"; color: #666; font-size: 10px; diff --git a/core/modules/ckeditor5/css/list.admin.css b/core/modules/ckeditor5/css/list.admin.css index 5b6e316054..7c37fa0cf0 100644 --- a/core/modules/ckeditor5/css/list.admin.css +++ b/core/modules/ckeditor5/css/list.admin.css @@ -1,3 +1,4 @@ +/* cspell:ignore bulletedlist numberedlist */ .ckeditor5-toolbar-button-bulletedList { background-image: url(../icons/bulletedlist.svg); } diff --git a/core/modules/ckeditor5/css/quickedit-override.css b/core/modules/ckeditor5/css/quickedit-override.css index 260ea79898..e64eb0d03c 100644 --- a/core/modules/ckeditor5/css/quickedit-override.css +++ b/core/modules/ckeditor5/css/quickedit-override.css @@ -1,8 +1,8 @@ .quickedit-editable, .quickedit-editing.ck.ck-editor__editable_inline { - margin-bottom: inherit !important; top: inherit !important; left: inherit !important; + margin-bottom: inherit !important; } .quickedit-editing.ck.ck-editor__editable_inline > :first-child { margin-top: inherit; diff --git a/core/modules/ckeditor5/css/toolbar.admin.css b/core/modules/ckeditor5/css/toolbar.admin.css index 3d70a31460..40b04dd951 100644 --- a/core/modules/ckeditor5/css/toolbar.admin.css +++ b/core/modules/ckeditor5/css/toolbar.admin.css @@ -7,15 +7,15 @@ } .ckeditor5-toolbar-tray { - margin: 0 0 0.5em 0; - padding: 0; display: flex; flex-flow: row wrap; align-items: center; + min-height: 40px; + margin: 0 0 0.5em 0; + padding: 0; list-style: none; /* Disallow any user selections in the drag-and-drop toolbar config UI. */ user-select: none; - min-height: 40px; } .ckeditor5-toolbar-active__buttons { @@ -28,16 +28,16 @@ .ckeditor5-toolbar-item, .ckeditor5-toolbar-button { + display: block; min-width: 36px; height: 36px; - border-radius: 2px; - display: block; cursor: move; + border-radius: 2px; } .ckeditor5-toolbar-item { - margin: 5px 8px 5px 0; position: relative; + margin: 5px 8px 5px 0; } .ckeditor5-toolbar-disabled .ckeditor5-toolbar-item { @@ -45,17 +45,17 @@ } .ckeditor5-toolbar-button { + border: none; background-color: #eee; - background-size: 20px; - background-position: center; background-repeat: no-repeat; - border: none; + background-position: center; + background-size: 20px; } .ckeditor5-toolbar-button:focus, .ckeditor5-toolbar-button:hover { - background-color: #e6e6e6; color: #000; + background-color: #e6e6e6; } .ckeditor5-toolbar-button:focus, @@ -64,27 +64,27 @@ text-decoration: none; } .ckeditor5-toolbar-tooltip { - padding: 6px 10px; - display: block; position: absolute; + z-index: 1; left: 50%; + display: block; + padding: 6px 10px; transform: translate(-50%, 2px); - background: #333; + text-transform: capitalize; + color: #fff; border-radius: 3px; + background: #333; font-size: 12px; line-height: 1; - text-transform: capitalize; - color: #fff; - z-index: 1; } .ckeditor5-toolbar-tooltip::before { - content: ''; position: absolute; - width: 0px; - height: 5px; top: -10px; left: 50%; + width: 0; + height: 5px; + content: ""; transform: translateX(-50%); border-right: solid 5px transparent; border-bottom: solid 5px #333; diff --git a/core/modules/ckeditor5/js/build/drupal/drupalEmphasis.js b/core/modules/ckeditor5/js/build/drupal/drupalEmphasis.js deleted file mode 100644 index 7aa31a0b7f..0000000000 --- a/core/modules/ckeditor5/js/build/drupal/drupalEmphasis.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalEmphasis=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,r){e.exports=r("dll-reference CKEditor5.dll")("./src/core.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){"use strict";r.d(o,{default:function(){return s}});var e=r("ckeditor5/src/core.js");class t extends e.Plugin{static get pluginName(){return"DrupalEmphasisEditing"}init(){this.editor.conversion.for("downcast").attributeToElement({model:"italic",view:"em",converterPriority:"high"})}}var i=t;class n extends e.Plugin{static get requires(){return[i]}static get pluginName(){return"DrupalEmphasis"}}var s={DrupalEmphasis:n}}(),o=o.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/build/drupal/drupalImage.js b/core/modules/ckeditor5/js/build/drupal/drupalImage.js deleted file mode 100644 index f8cfd6b902..0000000000 --- a/core/modules/ckeditor5/js/build/drupal/drupalImage.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor5=e():(t.CKEditor5=t.CKEditor5||{},t.CKEditor5.drupalImage=e())}(self,(function(){return function(){var t={"ckeditor5/src/core.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/upload.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/upload.js")},"ckeditor5/src/utils.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":function(t){"use strict";t.exports=CKEditor5.dll}},e={};function i(r){var n=e[r];if(void 0!==n)return n.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,i),a.exports}i.d=function(t,e){for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var r={};return function(){"use strict";i.d(r,{default:function(){return p}});var t=i("ckeditor5/src/core.js");function e(t){return t.createEmptyElement("img")}class n extends t.Plugin{static get pluginName(){return"DrupalImageEditing"}init(){const t=this.editor,i=t.conversion,{schema:r}=t.model;r.isRegistered("imageInline")&&r.extend("imageInline",{allowAttributes:["dataEntityUuid","dataEntityType","width","height"]}),r.isRegistered("imageBlock")&&r.extend("imageBlock",{allowAttributes:["dataEntityUuid","dataEntityType","width","height"]}),i.for("upcast").add(function(t){function e(e,i,r){const{viewItem:n}=i,{writer:a,consumable:o,safeInsert:s,updateConversionResult:u,schema:l}=r,d=[];let c;if(o.test(n,{name:!0,attributes:"src"})){if(c=l.checkChild(i.modelCursor,"imageInline")?a.createElement("imageInline",{src:n.getAttribute("src")}):a.createElement("imageBlock",{src:n.getAttribute("src")}),t.plugins.has("ImageStyleEditing")&&o.test(n,{name:!0,attributes:"data-align"})){const t={left:"alignBlockLeft",center:"alignCenter",right:"alignBlockRight"},e={left:"alignLeft",right:"alignRight"},i=n.getAttribute("data-align"),r=c.is("element","imageBlock")?t[i]:e[i];a.setAttribute("imageStyle",r,c),d.push("data-align")}if(c.is("element","imageBlock")&&o.test(n,{name:!0,attributes:"data-caption"})){const t=a.createElement("caption");a.insertText(n.getAttribute("data-caption"),t),a.append(t,c),d.push("data-caption")}o.test(n,{name:!0,attributes:"data-entity-uuid"})&&(a.setAttribute("dataEntityUuid",n.getAttribute("data-entity-uuid"),c),d.push("data-entity-uuid")),o.test(n,{name:!0,attributes:"data-entity-type"})&&(a.setAttribute("dataEntityType",n.getAttribute("data-entity-type"),c),d.push("data-entity-type")),s(c,i.modelCursor)&&(o.consume(n,{name:!0,attributes:d}),u(c,i))}}return t=>{t.on("element:img",e,{priority:"high"})}}(t)).attributeToAttribute({view:{name:"img",key:"width"},model:{key:"width",value:t=>`${t.getAttribute("width")}px`}}).attributeToAttribute({view:{name:"img",key:"height"},model:{key:"height",value:t=>`${t.getAttribute("height")}px`}}),i.for("downcast").add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-entity-uuid",e.attributeNewValue,s||o)}return e=>{e.on("attribute:dataEntityUuid",t)}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-entity-type",e.attributeNewValue,s||o)}return e=>{e.on("attribute:dataEntityType",t)}}()),i.for("dataDowncast").add((e=>{e.on("insert:caption",((e,i,r)=>{if(!r.consumable.consume(i.item,"insert"))return;let n="";if(Array.from(t.model.createRangeIn(i.item)).forEach((({item:t})=>{r.consumable.consume(t,"insert")&&t.is("$textProxy")&&(n+=t.data)})),n){const t=r.mapper.toViewElement(i.item.parent);r.writer.setAttribute("data-caption",n,t)}}),{priority:"high"})})).add((t=>{t.on("insert:$text",((t,e)=>{const{parent:i}=e.item;i.is("element","caption")&&i.parent.is("element","imageBlock")&&t.stop()}),{priority:"highest"})})).elementToElement({model:"imageBlock",view:(t,{writer:i})=>e(i),converterPriority:"high"}).elementToElement({model:"imageInline",view:(t,{writer:i})=>e(i),converterPriority:"high"}).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i,o={alignLeft:"left",alignRight:"right",alignCenter:"center",alignBlockRight:"right",alignBlockLeft:"left"};if(!o[e.attributeNewValue]||!n.consume(r,t.name))return;const s=i.mapper.toViewElement(r),u=Array.from(s.getChildren()).find((t=>"img"===t.name));a.setAttribute("data-align",o[e.attributeNewValue],u||s)}return e=>{e.on("attribute:imageStyle",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("width",e.attributeNewValue.replace("px",""),s||o)}return e=>{e.on("attribute:width:imageInline",t,{priority:"high"}),e.on("attribute:width:imageBlock",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:n,writer:a}=i;if(!n.consume(r,t.name))return;const o=i.mapper.toViewElement(r),s=Array.from(o.getChildren()).find((t=>"img"===t.name));a.setAttribute("height",e.attributeNewValue.replace("px",""),s||o)}return e=>{e.on("attribute:height:imageInline",t,{priority:"high"}),e.on("attribute:height:imageBlock",t,{priority:"high"})}}())}}class a extends t.Plugin{static get requires(){return[n]}static get pluginName(){return"DrupalImage"}}var o=a;class s extends t.Plugin{init(){const{editor:t}=this;t.plugins.get("ImageUploadEditing").on("uploadComplete",((e,{data:i,imageElement:r})=>{t.model.change((t=>{t.setAttribute("dataEntityUuid",i.dataEntityUuid,r),t.setAttribute("dataEntityType",i.dataEntityType,r)}))}))}static get pluginName(){return"DrupalImageUploadEditing"}}var u=i("ckeditor5/src/upload.js"),l=i("ckeditor5/src/utils.js");class d{constructor(t,e){this.loader=t,this.options=e}upload(){return this.loader.file.then((t=>new Promise(((e,i)=>{this._initRequest(),this._initListeners(e,i,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){this.xhr=new XMLHttpRequest,this.xhr.open("POST",this.options.uploadUrl,!0),this.xhr.responseType="json"}_initListeners(t,e,i){const r=this.xhr,n=this.loader,a=`Couldn't upload file: ${i.name}.`;r.addEventListener("error",(()=>e(a))),r.addEventListener("abort",(()=>e())),r.addEventListener("load",(()=>{const i=r.response;if(!i||i.error)return e(i&&i.error&&i.error.message?i.error.message:a);t({urls:{default:i.url},dataEntityUuid:i.uuid?i.uuid:"",dataEntityType:i.entity_type?i.entity_type:""})})),r.upload&&r.upload.addEventListener("progress",(t=>{t.lengthComputable&&(n.uploadTotal=t.total,n.uploaded=t.loaded)}))}_sendRequest(t){const e=this.options.headers||{},i=this.options.withCredentials||!1;Object.keys(e).forEach((t=>{this.xhr.setRequestHeader(t,e[t])})),this.xhr.withCredentials=i;const r=new FormData;r.append("upload",t),this.xhr.send(r)}}class c extends t.Plugin{static get requires(){return[u.FileRepository]}static get pluginName(){return"DrupalFileRepository"}init(){const t=this.editor.config.get("drupalImageUpload");t&&(t.uploadUrl?this.editor.plugins.get(u.FileRepository).createUploadAdapter=e=>new d(e,t):(0,l.logWarning)("simple-upload-adapter-missing-uploadurl"))}}class m extends t.Plugin{static get requires(){return[c,s]}static get pluginName(){return"DrupalImageUpload"}}var p={DrupalImage:o,DrupalImageUpload:m}}(),r=r.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/js/build/drupal/drupalMedia.js b/core/modules/ckeditor5/js/build/drupal/drupalMedia.js deleted file mode 100644 index 2e548304e0..0000000000 --- a/core/modules/ckeditor5/js/build/drupal/drupalMedia.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function i(r){var s=t[r];if(void 0!==s)return s.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,i),o.exports}i.d=function(e,t){for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var r={};return function(){"use strict";i.d(r,{default:function(){return _}});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");class s extends e.Command{execute(e){this.editor.model.change((t=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(t,e))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const o=e=>{const t=e.getAttributes();let i="{"data-caption"!==e[0]&&(i+=` ${e[0]}="${e[1]}"`)})),i+=">",i};class n extends e.Plugin{static get requires(){return[t.Widget]}init(){this.attrs=["alt","data-align","data-caption","data-entity-type","data-entity-uuid","data-view-mode"];const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewURL=t,this.themeError=i||`\n

${this.editor.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}

\n `,this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertDrupalMedia",new s(this.editor))}async _fetchPreview(e,t){const i=await fetch(`${e}?${new URLSearchParams(t)}`);if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return this.themeError}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,allowAttributes:this.attrs})}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const r=i.createContainerElement("div",{class:"drupal-media"}),s=i.createRawElement("div",{},(t=>{this.previewURL?this._fetchPreview(this.previewURL,{text:o(e),uuid:e.getAttribute("data-entity-uuid")}).then((({label:e,preview:i})=>{t.innerHTML=i,t.setAttribute("aria-label",e)})):(t.innerHTML=this.themeError,t.setAttribute("aria-label","drupal-media"))}));return i.insert(i.createPositionAt(r,0),s),i.setCustomProperty("drupalMedia",!0,r),(0,t.toWidget)(r,i,{label:"media widget"})}}),this.attrs.forEach((t=>{e.attributeToAttribute({model:t,view:t})}))}}var a=i("ckeditor5/src/ui.js");class l extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:r,dialogSettings:s={}}=t;i&&"function"==typeof r&&e.ui.componentFactory.add("drupalMedia",(t=>{const o=e.commands.get("insertDrupalMedia"),n=new a.ButtonView(t);return n.set({label:e.t("Insert Drupal Media"),icon:'\n',tooltip:!0}),n.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(n,"execute",(()=>{r(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),s)})),n}))}}function d(e){return!!e&&e.is("element","drupalMedia")}function c(e){const i=e.getSelectedElement();return i&&function(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}(i)?i:null}class u extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const e=this.editor,{t:i}=e;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:i("Drupal Media toolbar"),items:e.config.get("drupalMedia.toolbar")||[],getRelatedElement:e=>c(e)})}}class h extends e.Command{refresh(){const e=this.editor.model.document.selection.getSelectedElement();this.isEnabled=!1,d(e)&&this._isMediaImage(e).then((e=>{this.isEnabled=e})),d(e)&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor.model,i=t.document.selection.getSelectedElement();t.change((t=>{t.setAttribute("alt",e.newValue,i)}))}async _isMediaImage(e){const t=this.editor.config.get("drupalMedia");if(!t)return null;const{isMediaUrl:i}=t,r=new URLSearchParams({uuid:e.getAttribute("data-entity-uuid")}),s=await fetch(`${i}?${r}`);return s.ok?JSON.parse(await s.text()):null}}class m extends e.Plugin{static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){this.editor.commands.add("mediaImageTextAlternative",new h(this.editor))}}function f(e){const t=e.editing.view,i=a.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var p=i("ckeditor5/src/utils.js");class g extends a.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new p.FocusTracker,this.keystrokes=new p.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new a.ViewCollection,this._focusCycler=new a.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,a.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,a.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,r){const s=new a.ButtonView(this.locale);return s.set({label:e,icon:t,tooltip:!0}),s.extendTemplate({attributes:{class:i}}),r&&s.delegate("execute").to(this,r),s}_createLabeledInputView(){const e=this.locale.t,t=new a.LabeledFieldView(this.locale,a.createLabeledInputText);return t.label=e("Override text alternative"),t}}class w extends e.Plugin{static get requires(){return[a.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("mediaImageTextAlternative",(r=>{const s=t.commands.get("mediaImageTextAlternative"),o=new a.ButtonView(r);return o.set({label:i("Override media image text alternative"),icon:e.icons.lowVision,tooltip:!0}),o.bind("isVisible").to(s,"isEnabled"),this.listenTo(o,"execute",(()=>{this._showForm()})),o}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new g(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{c(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(c(e.editing.view.document.selection)){const i=f(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,a.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:f(e)}),i.fieldView.element.value=t.value||"",i.fieldView.value=i.fieldView.element.value,this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class b extends e.Plugin{static get requires(){return[m,w]}static get pluginName(){return"MediaImageTextAlternative"}}class v extends e.Plugin{static get requires(){return[n,l,u,b]}}var _={DrupalMedia:v,MediaImageTextAlternative:b,MediaImageTextAlternativeEditing:m,MediaImageTextAlternativeUi:w}}(),r=r.default}()})); \ No newline at end of file diff --git a/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php b/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php index 6bf23dd59a..1c0c38b5a2 100644 --- a/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php +++ b/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php @@ -840,7 +840,7 @@ protected function getLangcodes(): array { if (empty($langcodes)) { $langcodes = []; // Collect languages included with CKEditor 5 based on file listing. - $files = scandir($this->moduleHandler->getModule('ckeditor5')->getPath() . '/js/build/translations'); + $files = scandir('core/assets/vendor/ckeditor5/build/translations'); foreach ($files as $file) { if ($file[0] !== '.' && preg_match('/\.js$/', $file)) { $langcode = basename($file, '.js'); diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml index b69254e079..c0c6118044 100644 --- a/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/ckeditor5_test.libraries.yml @@ -1,3 +1,4 @@ +# cspell:ignore layercake layercake: remote: https://github.com/zrpnr/ckeditor5-drupal-layercake version: 1.0.0 @@ -11,4 +12,4 @@ layercake: theme: css/layout.css: {} dependencies: - - ckeditor5/ckeditor5 + - core/ckeditor5 diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css b/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css index 1fe43e2e70..91a76da70b 100644 --- a/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/css/layout.css @@ -3,9 +3,8 @@ grid-template-columns: 1fr 1fr; } - .simple-box { - padding: .5rem; + padding: 0.5rem; background: #ccc; } diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_test/js/build/layercake.js b/core/modules/ckeditor5/tests/modules/ckeditor5_test/js/build/layercake.js index 3c1a3e76f6..9a48179291 100644 --- a/core/modules/ckeditor5/tests/modules/ckeditor5_test/js/build/layercake.js +++ b/core/modules/ckeditor5/tests/modules/ckeditor5_test/js/build/layercake.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.layerCake=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.layerCake=t())}(window,(function(){return function(e){var t={};function o(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,i){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(i,n,function(t){return e[t]}.bind(null,n));return i},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s="./src/index.js")}({"./src/index.js":function(e,t,o){"use strict";o.r(t);var i=o("ckeditor5/src/core.js"),n=o("ckeditor5/src/widget.js");class l extends i.Command{execute(){const{model:e}=this.editor;e.change(t=>{e.insertContent(function(e){const t=e.createElement("simpleBox"),o=e.createElement("simpleBoxTitle"),i=e.createElement("simpleBoxDescription");return e.append(o,t),e.append(i,t),e.appendElement("paragraph",i),t}(t))})}refresh(){const{model:e}=this.editor,{selection:t}=e.document,o=e.schema.findAllowedParent(t.getFirstPosition(),"simpleBox");this.isEnabled=null!==o}}class s extends i.Plugin{static get requires(){return[n.Widget]}init(){this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertSimpleBox",new l(this.editor))}_defineSchema(){const e=this.editor.model.schema;e.register("simpleBox",{isObject:!0,allowWhere:"$block"}),e.register("simpleBoxTitle",{isLimit:!0,allowIn:"simpleBox",allowContentOf:"$block"}),e.register("simpleBoxDescription",{isLimit:!0,allowIn:"simpleBox",allowContentOf:"$root"}),e.addChildCheck((e,t)=>{if(e.endsWith("simpleBoxDescription")&&"simpleBox"==t.name)return!1})}_defineConverters(){const{conversion:e}=this.editor;e.for("upcast").elementToElement({model:"simpleBox",view:{name:"section",classes:"simple-box"}}),e.for("dataDowncast").elementToElement({model:"simpleBox",view:{name:"section",classes:"simple-box"}}),e.for("editingDowncast").elementToElement({model:"simpleBox",view:(e,{writer:t})=>{const o=t.createContainerElement("section",{class:"simple-box"});return Object(n.toWidget)(o,t,{label:"simple box widget"})}}),e.for("upcast").elementToElement({model:"simpleBoxTitle",view:{name:"h1",classes:"simple-box-title"}}),e.for("dataDowncast").elementToElement({model:"simpleBoxTitle",view:{name:"h1",classes:"simple-box-title"}}),e.for("editingDowncast").elementToElement({model:"simpleBoxTitle",view:(e,{writer:t})=>{const o=t.createEditableElement("h1",{class:"simple-box-title"});return Object(n.toWidgetEditable)(o,t)}}),e.for("upcast").elementToElement({model:"simpleBoxDescription",view:{name:"div",classes:"simple-box-description"}}),e.for("dataDowncast").elementToElement({model:"simpleBoxDescription",view:{name:"div",classes:"simple-box-description"}}),e.for("editingDowncast").elementToElement({model:"simpleBoxDescription",view:(e,{writer:t})=>{const o=t.createEditableElement("div",{class:"simple-box-description"});return Object(n.toWidgetEditable)(o,t)}})}}var r=o("ckeditor5/src/ui.js");class c extends i.Plugin{init(){const e=this.editor;e.ui.componentFactory.add("simpleBox",t=>{const o=e.commands.get("insertSimpleBox"),i=new r.ButtonView(t);return i.set({label:e.t("Simple Box"),withText:!0,tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",()=>e.execute("insertSimpleBox")),i})}}class a extends i.Plugin{static get requires(){return[s,c]}}class d extends i.Command{execute(){const{model:e}=this.editor;e.change(t=>{e.insertContent(function(e){const t=e.createElement("twoCol"),o=e.createElement("col"),i=e.createElement("col");return e.append(o,t),e.append(i,t),e.appendElement("paragraph",o),e.appendElement("paragraph",i),t}(t))})}refresh(){const{model:e}=this.editor,{selection:t}=e.document,o=e.schema.findAllowedParent(t.getFirstPosition(),"twoCol");this.isEnabled=null!==o}}class m extends i.Plugin{static get requires(){return[n.Widget]}init(){this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertTwoCol",new d(this.editor))}_defineSchema(){const e=this.editor.model.schema;e.register("twoCol",{isObject:!0,allowWhere:"$block"}),e.register("col",{isLimit:!0,allowIn:"twoCol",allowContentOf:"$root"})}_defineConverters(){const{conversion:e}=this.editor;e.for("upcast").elementToElement({model:"twoCol",view:{name:"section",classes:"layout--two-col"}}),e.for("dataDowncast").elementToElement({model:"twoCol",view:{name:"section",classes:"layout--two-col"}}),e.for("editingDowncast").elementToElement({model:"twoCol",view:(e,{writer:t})=>{const o=t.createContainerElement("section",{class:"layout--two-col"});return Object(n.toWidget)(o,t,{label:"Two col layut widget"})}}),e.for("upcast").elementToElement({model:"col",view:{name:"div",classes:"layout__col"}}),e.for("dataDowncast").elementToElement({model:"col",view:{name:"div",classes:"layout__col"}}),e.for("editingDowncast").elementToElement({model:"col",view:(e,{writer:t})=>{const o=t.createEditableElement("div",{class:"layout__col"});return Object(n.toWidgetEditable)(o,t)}})}}class u extends i.Plugin{init(){const e=this.editor;e.ui.componentFactory.add("twoCol",t=>{const o=e.commands.get("insertTwoCol"),i=new r.ButtonView(t);return i.set({label:e.t("Two Col"),withText:!0,tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",()=>e.execute("insertTwoCol")),i})}}class p extends i.Plugin{static get requires(){return[m,u]}}t.default={SimpleBox:a,TwoCol:p}},"ckeditor5/src/core.js":function(e,t,o){e.exports=o("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":function(e,t,o){e.exports=o("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/widget.js":function(e,t,o){e.exports=o("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":function(e,t){e.exports=CKEditor5.dll}}).default})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.layerCake=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.layerCake=t())}(window,(function(){return function(e){var t={};function o(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,i){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(i,n,function(t){return e[t]}.bind(null,n));return i},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s="./src/index.js")}({"./src/index.js":function(e,t,o){"use strict";o.r(t);var i=o("ckeditor5/src/core.js"),n=o("ckeditor5/src/widget.js");class l extends i.Command{execute(){const{model:e}=this.editor;e.change(t=>{e.insertContent(function(e){const t=e.createElement("simpleBox"),o=e.createElement("simpleBoxTitle"),i=e.createElement("simpleBoxDescription");return e.append(o,t),e.append(i,t),e.appendElement("paragraph",i),t}(t))})}refresh(){const{model:e}=this.editor,{selection:t}=e.document,o=e.schema.findAllowedParent(t.getFirstPosition(),"simpleBox");this.isEnabled=null!==o}}class s extends i.Plugin{static get requires(){return[n.Widget]}init(){this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertSimpleBox",new l(this.editor))}_defineSchema(){const e=this.editor.model.schema;e.register("simpleBox",{isObject:!0,allowWhere:"$block"}),e.register("simpleBoxTitle",{isLimit:!0,allowIn:"simpleBox",allowContentOf:"$block"}),e.register("simpleBoxDescription",{isLimit:!0,allowIn:"simpleBox",allowContentOf:"$root"}),e.addChildCheck((e,t)=>{if(e.endsWith("simpleBoxDescription")&&"simpleBox"==t.name)return!1})}_defineConverters(){const{conversion:e}=this.editor;e.for("upcast").elementToElement({model:"simpleBox",view:{name:"section",classes:"simple-box"}}),e.for("dataDowncast").elementToElement({model:"simpleBox",view:{name:"section",classes:"simple-box"}}),e.for("editingDowncast").elementToElement({model:"simpleBox",view:(e,{writer:t})=>{const o=t.createContainerElement("section",{class:"simple-box"});return Object(n.toWidget)(o,t,{label:"simple box widget"})}}),e.for("upcast").elementToElement({model:"simpleBoxTitle",view:{name:"h1",classes:"simple-box-title"}}),e.for("dataDowncast").elementToElement({model:"simpleBoxTitle",view:{name:"h1",classes:"simple-box-title"}}),e.for("editingDowncast").elementToElement({model:"simpleBoxTitle",view:(e,{writer:t})=>{const o=t.createEditableElement("h1",{class:"simple-box-title"});return Object(n.toWidgetEditable)(o,t)}}),e.for("upcast").elementToElement({model:"simpleBoxDescription",view:{name:"div",classes:"simple-box-description"}}),e.for("dataDowncast").elementToElement({model:"simpleBoxDescription",view:{name:"div",classes:"simple-box-description"}}),e.for("editingDowncast").elementToElement({model:"simpleBoxDescription",view:(e,{writer:t})=>{const o=t.createEditableElement("div",{class:"simple-box-description"});return Object(n.toWidgetEditable)(o,t)}})}}var r=o("ckeditor5/src/ui.js");class c extends i.Plugin{init(){const e=this.editor;e.ui.componentFactory.add("simpleBox",t=>{const o=e.commands.get("insertSimpleBox"),i=new r.ButtonView(t);return i.set({label:e.t("Simple Box"),withText:!0,tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",()=>e.execute("insertSimpleBox")),i})}}class a extends i.Plugin{static get requires(){return[s,c]}}class d extends i.Command{execute(){const{model:e}=this.editor;e.change(t=>{e.insertContent(function(e){const t=e.createElement("twoCol"),o=e.createElement("col"),i=e.createElement("col");return e.append(o,t),e.append(i,t),e.appendElement("paragraph",o),e.appendElement("paragraph",i),t}(t))})}refresh(){const{model:e}=this.editor,{selection:t}=e.document,o=e.schema.findAllowedParent(t.getFirstPosition(),"twoCol");this.isEnabled=null!==o}}class m extends i.Plugin{static get requires(){return[n.Widget]}init(){this._defineSchema(),this._defineConverters(),this.editor.commands.add("insertTwoCol",new d(this.editor))}_defineSchema(){const e=this.editor.model.schema;e.register("twoCol",{isObject:!0,allowWhere:"$block"}),e.register("col",{isLimit:!0,allowIn:"twoCol",allowContentOf:"$root"})}_defineConverters(){const{conversion:e}=this.editor;e.for("upcast").elementToElement({model:"twoCol",view:{name:"section",classes:"layout--two-col"}}),e.for("dataDowncast").elementToElement({model:"twoCol",view:{name:"section",classes:"layout--two-col"}}),e.for("editingDowncast").elementToElement({model:"twoCol",view:(e,{writer:t})=>{const o=t.createContainerElement("section",{class:"layout--two-col"});return Object(n.toWidget)(o,t,{label:"Two col layout widget"})}}),e.for("upcast").elementToElement({model:"col",view:{name:"div",classes:"layout__col"}}),e.for("dataDowncast").elementToElement({model:"col",view:{name:"div",classes:"layout__col"}}),e.for("editingDowncast").elementToElement({model:"col",view:(e,{writer:t})=>{const o=t.createEditableElement("div",{class:"layout__col"});return Object(n.toWidgetEditable)(o,t)}})}}class u extends i.Plugin{init(){const e=this.editor;e.ui.componentFactory.add("twoCol",t=>{const o=e.commands.get("insertTwoCol"),i=new r.ButtonView(t);return i.set({label:e.t("Two Col"),withText:!0,tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",()=>e.execute("insertTwoCol")),i})}}class p extends i.Plugin{static get requires(){return[m,u]}}t.default={SimpleBox:a,TwoCol:p}},"ckeditor5/src/core.js":function(e,t,o){e.exports=o("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":function(e,t,o){e.exports=o("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/widget.js":function(e,t,o){e.exports=o("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":function(e,t){e.exports=CKEditor5.dll}}).default})); diff --git a/core/package.json b/core/package.json index a084b730aa..51289fb71d 100644 --- a/core/package.json +++ b/core/package.json @@ -31,8 +31,8 @@ "vendor-update": "node ./scripts/js/assets.js", "ckeditor5:drupal:watch": "yarn ckeditor5:drupal:manifest && webpack --mode development --watch", "ckeditor5:drupal:build": "yarn ckeditor5:drupal:manifest && webpack", - "ckeditor5:drupal:manifest": "node modules/ckeditor5/js/drupal/scripts/manifest.js", - "ckeditor5:build": "node modules/ckeditor5/js/scripts/build.js" + "ckeditor5:drupal:manifest": "node assets/vendor/ckeditor5/drupal/scripts/manifest.js", + "ckeditor5:build": "node assets/vendor/ckeditor5/scripts/build.js" }, "devDependencies": { "@babel/core": "^7.0.0", diff --git a/core/scripts/dev/commit-code-check.sh b/core/scripts/dev/commit-code-check.sh index bbeb3eb2d3..eb85521763 100755 --- a/core/scripts/dev/commit-code-check.sh +++ b/core/scripts/dev/commit-code-check.sh @@ -293,7 +293,7 @@ else # If there is no .es6.js file then there should be unless the .js is # not really Drupal's. - if ! [[ "$FILE" =~ ^core/assets/vendor ]] && ! [[ "$FILE" =~ ^core/scripts/js ]] && ! [[ "$FILE" =~ ^core/scripts/css ]] && ! [[ "$FILE" =~ core/postcss.config.js ]] && ! [[ -f "$TOP_LEVEL/$BASENAME.es6.js" ]]; then + if ! [[ "$FILE" =~ ^core/assets/vendor ]] && ! [[ "$FILE" =~ ^core/scripts/js ]] && ! [[ "$FILE" =~ ^core/scripts/css ]] && ! [[ "$FILE" =~ core/postcss.config.js ]] && ! [[ "$FILE" =~ core/webpack.config.js ]] && ! [[ -f "$TOP_LEVEL/$BASENAME.es6.js" ]]; then printf "${red}FAILURE${reset} $FILE does not have a corresponding $BASENAME.es6.js\n" STATUS=1 fi diff --git a/core/webpack.config.js b/core/webpack.config.js index 562b643f66..37d4649bd3 100644 --- a/core/webpack.config.js +++ b/core/webpack.config.js @@ -13,7 +13,7 @@ function getDirectories(srcpath) { module.exports = []; // Loop through every subdirectory in src, which should be a different // plugin, and build them all in ./build. -getDirectories('modules/ckeditor5/js/drupal/src').forEach((dir) => { +getDirectories('assets/vendor/ckeditor5/drupal/src').forEach((dir) => { const bc = { mode: 'production', optimization: { @@ -32,10 +32,10 @@ getDirectories('modules/ckeditor5/js/drupal/src').forEach((dir) => { moduleIds: 'named', }, entry: { - path: path.resolve(__dirname, 'modules/ckeditor5/js/drupal/src', dir, 'src/index.js'), + path: path.resolve(__dirname, 'assets/vendor/ckeditor5/drupal/src', dir, 'src/index.js'), }, output: { - path: path.resolve(__dirname, 'modules/ckeditor5/js/build/drupal'), + path: path.resolve(__dirname, 'assets/vendor/ckeditor5/build/drupal'), filename: `${dir}.js`, library: ['CKEditor5', dir], libraryTarget: 'umd',