editor_advanced_link-8.x-1.8/js/build/editorAdvancedLink.js
js/build/editorAdvancedLink.js
!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.editorAdvancedLink=t())}(self,()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/typing.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/typing.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,i),n.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:()=>c});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/typing.js");const o={linkTitle:{label:Drupal.t("Title"),viewAttribute:"title",group:"advanced"},linkAriaLabel:{label:Drupal.t("ARIA label"),viewAttribute:"aria-label",group:"advanced"},linkClass:{label:Drupal.t("CSS classes"),viewAttribute:"class",group:"advanced"},linkId:{label:Drupal.t("ID"),viewAttribute:"id",group:"advanced"},linkRel:{label:Drupal.t("Link relationship"),viewAttribute:"rel",group:"advanced"}},n={advanced:{label:Drupal.t("Advanced")}};class s extends e.Plugin{static get pluginName(){return"EditorAdvancedLinkEditing"}init(){const e=this.editor.config.get("editorAdvancedLink");if(!e.options)return void(this.enabledModelNames=[]);const t=Object.values(e.options);this.enabledModelNames=Object.keys(o).filter(e=>t.includes(o[e].viewAttribute)),this.enabledModelNames.forEach(e=>{this._allowAndConvertExtraAttribute(e,o[e].viewAttribute),this._registerUnlinkCommand(e),this._refreshExtraAttributeValue(e)}),this._registerLinkCommand(Object.keys(o))}_allowAndConvertExtraAttribute(e,t){const{editor:i}=this;i.model.schema.extend("$text",{allowAttributes:e}),i.conversion.for("downcast").attributeToElement({model:e,view:(e,{writer:i})=>{if(!e)return;const r=i.createAttributeElement("a",{[t]:e},{priority:5});return i.setCustomProperty("link",!0,r),r}});let r={name:"a",attributes:{[t]:!0}};"class"===t&&(r={name:"a",classes:!0}),i.conversion.for("upcast").elementToAttribute({view:r,model:{key:e,value:e=>e.getAttribute(t)}})}_registerLinkCommand(e){const{editor:i}=this,r=i.commands.get("link");let o=!1;r.on("execute",(e,r)=>{if(o)return void(o=!1);e.stop(),o=!0;let n=[];r&&r[1]&&!r[1].advanced_attributes?(this.enabledModelNames.forEach(t=>{n[t]=e.source[t]}),r[1].advanced_attributes=n):n=r[1].advanced_attributes,r[1].advanced_attributes=n;const s=this.editor.model,l=s.document.selection,a=r[r.length-1]||r[1].advanced_attributes.displayedText;s.change(o=>{const d=(e,t)=>{this.enabledModelNames.forEach(i=>{if(n[i]?o.setAttribute(i,n[i],e):o.removeAttribute(i,e),t){o.setSelection(e.end);const{plugins:t}=this.editor;t.has("TwoStepCaretMovement")?t.get("TwoStepCaretMovement")._handleForwardMovement():o.removeSelectionAttribute(i)}})};if(i.execute("link",...r),l.isCollapsed){const i=r[0]||e.source.value;let n=((e,i,r)=>{const o=i.getFirstPosition();return(0,t.findAttributeRange)(o,"linkHref",r,e)})(s,l,i);if(!n)return;n=((e,t)=>{const i=(e=>{let t="";for(const i of e.getItems()){if(!i.is("$text")&&!i.is("$textProxy"))return;t+=i.data}return t})(e);if(!i||"object"==typeof t)return e;let n=t||i||r[0];return o.createRange(e.start,e.start.getShiftedBy(n.length))})(n,a),d(n,!0)}else if(this.enabledModelNames.length>0){const e=s.schema.getValidRanges(l.getRanges(),this.enabledModelNames[0]);for(const t of e)d(t)}})},{priority:"high"})}_registerUnlinkCommand(e){const{editor:i}=this,r=i.commands.get("unlink"),{model:o}=this.editor,{selection:n}=o.document;r.on("execute",i=>{o.change(()=>{o.change(i=>{let r;r=n.isCollapsed?[(0,t.findAttributeRange)(n.getFirstPosition(),e,n.getAttribute(e),o)]:o.schema.getValidRanges(n.getRanges(),e),r.forEach(t=>{i.removeAttribute(e,t)})})})},{priority:"highest"})}_refreshExtraAttributeValue(e){const{editor:t}=this,i=t.commands.get("link"),{model:r}=this.editor,{selection:o}=r.document;i.set(e,null),r.document.on("change",(t,r)=>{i[e]=o.getAttribute(e)})}}var l=i("ckeditor5/src/ui.js");class a extends e.Plugin{init(){const e=this.editor,t=e.plugins.get("ContextualBalloon"),i=e.plugins.get("LinkUI");this.listenTo(t,"change:visibleView",(e,r,o)=>{o===i.formView&&(this.stopListening(t,"change:visibleView"),this.linkFormView=i.formView,this._registerComponents())})}_registerComponents(){const e=this.editor,t=e.plugins.get("LinkUI").formView,i=e.commands.get("link"),{enabledModelNames:r}=e.plugins.get("EditorAdvancedLinkEditing");let s=2,l=0;r.forEach((e,r)=>{if(void 0===t[e]){const r=o[e];let a=t[r.group],d=a??t;if(r.group&&!a){const e=n[r.group];a=this._createGroup(r.group,e.label),t.children.add(a,s),s++,t._focusables.add(a),t.focusTracker.add(a.element),t[r.group]=a,d=a}const c=this._createTextField(r.label);d.children.add(this._createFormRow(c),d===t?s:d.children.length),d===t&&s++,t._focusables.add(c),t.focusTracker.add(c.element),t[e]=c,l++,t[e].fieldView.bind("value").to(i,e),t[e].fieldView.value=i[e]||""}}),l>0&&this._handleExtraFormFieldSubmit(r)}_createTextField(e){const{editor:t}=this,{locale:i}=t,r=(i.t,new l.LabeledFieldView(i,l.createLabeledInputText));return r.label=e,r.class="ck-labeled-field-view_full-width",r}_createFormRow(e){const{editor:t}=this,{locale:i}=t;return new l.FormRowView(i,{children:[e],class:["ck-form__row_large-bottom-padding"]})}_createGroup(e,t){const{editor:i}=this,{locale:r}=i,o=new l.CollapsibleView(r);return o.label=t,o.set("isCollapsed",!0),o}_handleExtraFormFieldSubmit(e){const{editor:t}=this,i=t.plugins.get("LinkUI").formView,r=t.commands.get("link");this.listenTo(i,"submit",()=>{if(i.isValid()){const t=this._getSubmittedValues(i,e);r.once("execute",(e,r)=>{let o="";void 0!==i.displayedTextInputView&&(o=i.displayedTextInputView.fieldView.element.value),r[1].advanced_attributes=t,r[1].advanced_attributes.displayedText=o},{priority:"highest"})}},{priority:"high"})}_getSubmittedValues(e,t){return t.reduce((t,i)=>{e[i].fieldView.value,e[i].fieldView.element.value;return t[i]=e[i].fieldView.element.value,t},{})}}class d extends e.Plugin{static get requires(){return[s,a]}static get pluginName(){return"EditorAdvancedLink"}}const c={EditorAdvancedLink:d}})(),r=r.default})());