diff --git a/ckeditor5_highlight.module b/ckeditor5_highlight.module index 506f8e5..965991c 100644 --- a/ckeditor5_highlight.module +++ b/ckeditor5_highlight.module @@ -1,5 +1,10 @@ <?php +/** + * @file + * Module file. + */ + use Drupal\Core\Field\FieldItemListInterface; use Drupal\editor\EditorInterface; use Drupal\text\Plugin\Field\FieldType\TextItemBase; diff --git a/css/highlight.css b/css/highlight.css index a760b92..961337c 100644 --- a/css/highlight.css +++ b/css/highlight.css @@ -30,14 +30,12 @@ .pen-red { color: var(--ck-highlight-pen-red); - /* Override default yellow background of `<mark>` from user agent stylesheet */ background-color: transparent; } .pen-green { color: var(--ck-highlight-pen-green); - /* Override default yellow background of `<mark>` from user agent stylesheet */ background-color: transparent; } diff --git a/js/build/highlight.js b/js/build/highlight.js index 40d0470..f80cf97 100644 --- a/js/build/highlight.js +++ b/js/build/highlight.js @@ -1 +1,434 @@ -!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.highlight=t())}(self,(()=>(()=>{var e={"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/@ckeditor/ckeditor5-highlight/theme/highlight.css":(e,t,r)=>{"use strict";r.d(t,{Z:()=>l});var o=r("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),i=r.n(o),n=r("./node_modules/css-loader/dist/runtime/api.js"),s=r.n(n)()(i());s.push([e.id,":root{--ck-highlight-marker-yellow:#fdfd77;--ck-highlight-marker-green:#62f962;--ck-highlight-marker-pink:#fc7899;--ck-highlight-marker-blue:#72ccfd;--ck-highlight-pen-red:#e71313;--ck-highlight-pen-green:#128a00}.ck-content .marker-yellow{background-color:var(--ck-highlight-marker-yellow)}.ck-content .marker-green{background-color:var(--ck-highlight-marker-green)}.ck-content .marker-pink{background-color:var(--ck-highlight-marker-pink)}.ck-content .marker-blue{background-color:var(--ck-highlight-marker-blue)}.ck-content .pen-red{background-color:transparent;color:var(--ck-highlight-pen-red)}.ck-content .pen-green{background-color:transparent;color:var(--ck-highlight-pen-green)}",""]);const l=s},"./node_modules/css-loader/dist/runtime/api.js":e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r="",o=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),o&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),o&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,o,i,n){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(o)for(var l=0;l<this.length;l++){var a=this[l][0];null!=a&&(s[a]=!0)}for(var c=0;c<e.length;c++){var d=[].concat(e[c]);o&&s[d[0]]||(void 0!==n&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=n),r&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=r):d[2]=r),i&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=i):d[4]="".concat(i)),t.push(d))}},t}},"./node_modules/css-loader/dist/runtime/noSourceMaps.js":e=>{"use strict";e.exports=function(e){return e[1]}},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":e=>{"use strict";var t=[];function r(e){for(var r=-1,o=0;o<t.length;o++)if(t[o].identifier===e){r=o;break}return r}function o(e,o){for(var n={},s=[],l=0;l<e.length;l++){var a=e[l],c=o.base?a[0]+o.base:a[0],d=n[c]||0,u="".concat(c," ").concat(d);n[c]=d+1;var h=r(u),g={css:a[1],media:a[2],sourceMap:a[3],supports:a[4],layer:a[5]};if(-1!==h)t[h].references++,t[h].updater(g);else{var m=i(g,o);o.byIndex=l,t.splice(l,0,{identifier:u,updater:m,references:1})}s.push(u)}return s}function i(e,t){var r=t.domAPI(t);r.update(e);return function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;r.update(e=t)}else r.remove()}}e.exports=function(e,i){var n=o(e=e||[],i=i||{});return function(e){e=e||[];for(var s=0;s<n.length;s++){var l=r(n[s]);t[l].references--}for(var a=o(e,i),c=0;c<n.length;c++){var d=r(n[c]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}n=a}}},"./node_modules/style-loader/dist/runtime/insertBySelector.js":e=>{"use strict";var t={};e.exports=function(e,r){var o=function(e){if(void 0===t[e]){var r=document.querySelector(e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}t[e]=r}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(r)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(e,t,r)=>{"use strict";e.exports=function(e){var t=r.nc;t&&e.setAttribute("nonce",t)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":e=>{"use strict";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(r){!function(e,t,r){var o="";r.supports&&(o+="@supports (".concat(r.supports,") {")),r.media&&(o+="@media ".concat(r.media," {"));var i=void 0!==r.layer;i&&(o+="@layer".concat(r.layer.length>0?" ".concat(r.layer):""," {")),o+=r.css,i&&(o+="}"),r.media&&(o+="}"),r.supports&&(o+="}");var n=r.sourceMap;n&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,r)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},"ckeditor5/src/core.js":(e,t,r)=>{e.exports=r("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":(e,t,r)=>{e.exports=r("dll-reference CKEditor5.dll")("./src/ui.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 n=t[o]={id:o,exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},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),r.nc=void 0;var o={};return(()=>{"use strict";r.d(o,{default:()=>E});var e=r("ckeditor5/src/core.js");class t extends e.Command{refresh(){const e=this.editor.model,t=e.document;this.value=t.selection.getAttribute("highlight"),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"highlight")}execute(e={}){const t=this.editor.model,r=t.document.selection,o=e.value;t.change((e=>{if(r.isCollapsed){const t=r.getFirstPosition();if(r.hasAttribute("highlight")){const r=e=>e.item.hasAttribute("highlight")&&e.item.getAttribute("highlight")===this.value,i=t.getLastMatchingPosition(r,{direction:"backward"}),n=t.getLastMatchingPosition(r),s=e.createRange(i,n);o&&this.value!==o?(t.isEqual(n)||e.setAttribute("highlight",o,s),e.setSelectionAttribute("highlight",o)):(t.isEqual(n)||e.removeAttribute("highlight",s),e.removeSelectionAttribute("highlight"))}else o&&e.setSelectionAttribute("highlight",o)}else{const i=t.schema.getValidRanges(r.getRanges(),"highlight");for(const t of i)o?e.setAttribute("highlight",o,t):e.removeAttribute("highlight",t)}}))}}class i extends e.Plugin{static get pluginName(){return"HighlightEditing"}constructor(e){super(e),e.config.define("highlight",{options:[{model:"yellowMarker",class:"marker-yellow",title:"Yellow marker",color:"var(--ck-highlight-marker-yellow)",type:"marker"},{model:"greenMarker",class:"marker-green",title:"Green marker",color:"var(--ck-highlight-marker-green)",type:"marker"},{model:"pinkMarker",class:"marker-pink",title:"Pink marker",color:"var(--ck-highlight-marker-pink)",type:"marker"},{model:"blueMarker",class:"marker-blue",title:"Blue marker",color:"var(--ck-highlight-marker-blue)",type:"marker"},{model:"redPen",class:"pen-red",title:"Red pen",color:"var(--ck-highlight-pen-red)",type:"pen"},{model:"greenPen",class:"pen-green",title:"Green pen",color:"var(--ck-highlight-pen-green)",type:"pen"}]})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"highlight"});const r=e.config.get("highlight.options");e.conversion.attributeToElement(function(e){const t={model:{key:"highlight",values:[]},view:{}};for(const r of e)t.model.values.push(r.model),t.view[r.model]={name:"mark",classes:r.class};return t}(r)),e.commands.add("highlight",new t(e))}}var n=r("ckeditor5/src/ui.js");const s='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M10.798 1.59 3.002 12.875l1.895 1.852 2.521 1.402 6.997-12.194z"/><path d="m2.556 16.727.234-.348c-.297-.151-.462-.293-.498-.426-.036-.137.002-.416.115-.837.094-.25.15-.449.169-.595a4.495 4.495 0 0 0 0-.725c-.209-.621-.303-1.041-.284-1.26.02-.218.178-.506.475-.862l6.77-9.414c.539-.91 1.605-.85 3.199.18 1.594 1.032 2.188 1.928 1.784 2.686l-5.877 10.36c-.158.412-.333.673-.526.782-.193.108-.604.179-1.232.21-.362.131-.608.237-.738.318-.13.081-.305.238-.526.47-.293.265-.504.397-.632.397-.096 0-.27-.075-.524-.226l-.31.41-1.6-1.12zm-.279.415 1.575 1.103-.392.515H1.19l1.087-1.618zm8.1-13.656-4.953 6.9L8.75 12.57l4.247-7.574c.175-.25-.188-.647-1.092-1.192-.903-.546-1.412-.652-1.528-.32zM8.244 18.5 9.59 17h9.406v1.5H8.245z"/></svg>',l='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M10.126 2.268 2.002 13.874l1.895 1.852 2.521 1.402L14.47 5.481l-1.543-2.568-2.801-.645z"/><path d="m4.5 18.088-2.645-1.852-.04-2.95-.006-.005.006-.008v-.025l.011.008L8.73 2.97c.165-.233.356-.417.567-.557l-1.212.308L4.604 7.9l-.83-.558 3.694-5.495 2.708-.69 1.65 1.145.046.018.85-1.216 2.16 1.512-.856 1.222c.828.967 1.144 2.141.432 3.158L7.55 17.286l.006.005-3.055.797H4.5zm-.634.166-1.976.516-.026-1.918 2.002 1.402zM9.968 3.817l-.006-.004-6.123 9.184 3.277 2.294 6.108-9.162.005.003c.317-.452-.16-1.332-1.064-1.966-.891-.624-1.865-.776-2.197-.349zM8.245 18.5 9.59 17h9.406v1.5H8.245z"/></svg>';var a=r("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=r.n(a),d=r("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),u=r.n(d),h=r("./node_modules/style-loader/dist/runtime/insertBySelector.js"),g=r.n(h),m=r("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),p=r.n(m),f=r("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),v=r.n(f),k=r("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),b=r.n(k),y=r("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/@ckeditor/ckeditor5-highlight/theme/highlight.css"),w={};w.styleTagTransform=b(),w.setAttributes=p(),w.insert=g().bind(null,"head"),w.domAPI=u(),w.insertStyleElement=v();c()(y.Z,w);y.Z&&y.Z.locals&&y.Z.locals;class x extends e.Plugin{get localizedOptionTitles(){const e=this.editor.t;return{"Yellow marker":e("Yellow marker"),"Green marker":e("Green marker"),"Pink marker":e("Pink marker"),"Blue marker":e("Blue marker"),"Red pen":e("Red pen"),"Green pen":e("Green pen")}}static get pluginName(){return"HighlightUI"}init(){const e=this.editor.config.get("highlight.options");for(const t of e)this._addHighlighterButton(t);this._addRemoveHighlightButton(),this._addDropdown(e)}_addRemoveHighlightButton(){const t=this.editor.t,r=this.editor.commands.get("highlight");this._addButton("removeHighlight",t("Remove highlight"),e.icons.eraser,null,(e=>{e.bind("isEnabled").to(r,"isEnabled")}))}_addHighlighterButton(e){const t=this.editor.commands.get("highlight");this._addButton("highlight:"+e.model,e.title,j(e.type),e.model,(function(r){r.bind("isEnabled").to(t,"isEnabled"),r.bind("isOn").to(t,"value",(t=>t===e.model)),r.iconView.fillColor=e.color,r.isToggleable=!0}))}_addButton(e,t,r,o,i){const s=this.editor;s.ui.componentFactory.add(e,(e=>{const l=new n.ButtonView(e),a=this.localizedOptionTitles[t]?this.localizedOptionTitles[t]:t;return l.set({label:a,icon:r,tooltip:!0}),l.on("execute",(()=>{s.execute("highlight",{value:o}),s.editing.view.focus()})),i(l),l}))}_addDropdown(e){const t=this.editor,r=t.t,o=t.ui.componentFactory,i=e[0],s=e.reduce(((e,t)=>(e[t.model]=t,e)),{});o.add("highlight",(l=>{const a=t.commands.get("highlight"),c=(0,n.createDropdown)(l,n.SplitButtonView),d=c.buttonView;d.set({label:r("Highlight"),tooltip:!0,lastExecuted:i.model,commandValue:i.model,isToggleable:!0}),d.bind("icon").to(a,"value",(e=>j(h(e,"type")))),d.bind("color").to(a,"value",(e=>h(e,"color"))),d.bind("commandValue").to(a,"value",(e=>h(e,"model"))),d.bind("isOn").to(a,"value",(e=>!!e)),d.delegate("execute").to(c);const u=e.map((e=>{const t=o.create("highlight:"+e.model);return this.listenTo(t,"execute",(()=>{c.buttonView.set({lastExecuted:e.model})})),t}));function h(e,t){const r=e&&e!==d.lastExecuted?e:d.lastExecuted;return s[r][t]}return c.bind("isEnabled").toMany(u,"isEnabled",((...e)=>e.some((e=>e)))),u.push(new n.ToolbarSeparatorView),u.push(o.create("removeHighlight")),(0,n.addToolbarToDropdown)(c,u,{enableActiveItemFocusOnDropdownOpen:!0}),function(e){const t=e.buttonView.actionView;t.iconView.bind("fillColor").to(e.buttonView,"color")}(c),c.toolbarView.ariaLabel=r("Text highlight toolbar"),d.on("execute",(()=>{t.execute("highlight",{value:d.commandValue})})),this.listenTo(c,"execute",(()=>{t.editing.view.focus()})),c}))}}function j(e){return"marker"===e?s:l}class _ extends e.Plugin{static get requires(){return[i,x]}static get pluginName(){return"Highlight"}}const E={Highlight:_}})(),o=o.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.CKEditor5 = t()) + : ((e.CKEditor5 = e.CKEditor5 || {}), (e.CKEditor5.highlight = t())); +})(self, () => + (() => { + var e = { + "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/@ckeditor/ckeditor5-highlight/theme/highlight.css": (e, t, r) => { + "use strict"; + r.d(t, { Z: () => l }); + var o = r("./node_modules/css-loader/dist/runtime/noSourceMaps.js"), + i = r.n(o), + n = r("./node_modules/css-loader/dist/runtime/api.js"), + s = r.n(n)()(i()); + s.push([ + e.id, + ":root{--ck-highlight-marker-yellow:#fdfd77;--ck-highlight-marker-green:#62f962;--ck-highlight-marker-pink:#fc7899;--ck-highlight-marker-blue:#72ccfd;--ck-highlight-pen-red:#e71313;--ck-highlight-pen-green:#128a00}.ck-content .marker-yellow{background-color:var(--ck-highlight-marker-yellow)}.ck-content .marker-green{background-color:var(--ck-highlight-marker-green)}.ck-content .marker-pink{background-color:var(--ck-highlight-marker-pink)}.ck-content .marker-blue{background-color:var(--ck-highlight-marker-blue)}.ck-content .pen-red{background-color:transparent;color:var(--ck-highlight-pen-red)}.ck-content .pen-green{background-color:transparent;color:var(--ck-highlight-pen-green)}", + "", + ]); + const l = s; + }, + "./node_modules/css-loader/dist/runtime/api.js": (e) => { + "use strict"; + e.exports = function (e) { + var t = []; + return ( + (t.toString = function () { + return this.map(function (t) { + var r = "", + o = void 0 !== t[5]; + return ( + t[4] && (r += "@supports (".concat(t[4], ") {")), + t[2] && (r += "@media ".concat(t[2], " {")), + o && (r += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), + (r += e(t)), + o && (r += "}"), + t[2] && (r += "}"), + t[4] && (r += "}"), + r + ); + }).join(""); + }), + (t.i = function (e, r, o, i, n) { + "string" == typeof e && (e = [[NULL, e, void 0]]); + var s = {}; + if (o) { + for (var l = 0; l < this.length; l++) { + var a = this[l][0]; + NULL != a && (s[a] = !0); + } + } + for (var c = 0; c < e.length; c++) { + var d = [].concat(e[c]); + (o && s[d[0]]) || + (void 0 !== n && (void 0 === d[5] || (d[1] = "@layer".concat(d[5].length > 0 ? " ".concat(d[5]) : "", " {").concat(d[1], "}")), (d[5] = n)), + r && (d[2] ? ((d[1] = "@media ".concat(d[2], " {").concat(d[1], "}")), (d[2] = r)) : (d[2] = r)), + i && (d[4] ? ((d[1] = "@supports (".concat(d[4], ") {").concat(d[1], "}")), (d[4] = i)) : (d[4] = "".concat(i))), + t.push(d)); + } + }), + t + ); + }; + }, + "./node_modules/css-loader/dist/runtime/noSourceMaps.js": (e) => { + "use strict"; + e.exports = function (e) { + return e[1]; + }; + }, + "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": (e) => { + "use strict"; + var t = []; + function r(e) { + for (var r = -1, o = 0; o < t.length; o++) { + if (t[o].identifier === e) { + r = o; + break; + } + } + return r; + } + function o(e, o) { + for (var n = {}, s = [], l = 0; l < e.length; l++) { + var a = e[l], + c = o.base ? a[0] + o.base : a[0], + d = n[c] || 0, + u = "".concat(c, " ").concat(d); + n[c] = d + 1; + var h = r(u), + g = { css: a[1], media: a[2], sourceMap: a[3], supports: a[4], layer: a[5] }; + if (-1 !== h) { t[h].references++, t[h].updater(g); + } else { + var m = i(g, o); + (o.byIndex = l), t.splice(l, 0, { identifier: u, updater: m, references: 1 }); + } + s.push(u); + } + return s; + } + function i(e, t) { + var r = t.domAPI(t); + r.update(e); + return function (t) { + if (t) { + if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) { return; + } + r.update((e = t)); + } else { r.remove(); + } + }; + } + e.exports = function (e, i) { + var n = o((e = e || []), (i = i || {})); + return function (e) { + e = e || []; + for (var s = 0; s < n.length; s++) { + var l = r(n[s]); + t[l].references--; + } + for (var a = o(e, i), c = 0; c < n.length; c++) { + var d = r(n[c]); + 0 === t[d].references && (t[d].updater(), t.splice(d, 1)); + } + n = a; + }; + }; + }, + "./node_modules/style-loader/dist/runtime/insertBySelector.js": (e) => { + "use strict"; + var t = {}; + e.exports = function (e, r) { + var o = (function (e) { + if (void 0 === t[e]) { + var r = document.querySelector(e); + if (window.HTMLIFrameElement && r instanceof window.HTMLIFrameElement) { + try { + r = r.contentDocument.head; + } catch (e) { + r = NULL; + } + } + t[e] = r; + } + return t[e]; + })(e); + if (!o) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + } + o.appendChild(r); + }; + }, + "./node_modules/style-loader/dist/runtime/insertStyleElement.js": (e) => { + "use strict"; + e.exports = function (e) { + var t = document.createElement("style"); + return e.setAttributes(t, e.attributes), e.insert(t, e.options), t; + }; + }, + "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": (e, t, r) => { + "use strict"; + e.exports = function (e) { + var t = r.nc; + t && e.setAttribute("nonce", t); + }; + }, + "./node_modules/style-loader/dist/runtime/styleDomAPI.js": (e) => { + "use strict"; + e.exports = function (e) { + var t = e.insertStyleElement(e); + return { + update: function (r) { + !(function (e, t, r) { + var o = ""; + r.supports && (o += "@supports (".concat(r.supports, ") {")), r.media && (o += "@media ".concat(r.media, " {")); + var i = void 0 !== r.layer; + i && (o += "@layer".concat(r.layer.length > 0 ? " ".concat(r.layer) : "", " {")), (o += r.css), i && (o += "}"), r.media && (o += "}"), r.supports && (o += "}"); + var n = r.sourceMap; + n && "undefined" != typeof btoa && (o += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n)))), " */")), t.styleTagTransform(o, e, t.options); + })(t, e, r); + }, + remove: function () { + !(function (e) { + if (NULL === e.parentNode) { return !1; + } + e.parentNode.removeChild(e); + })(t); + }, + }; + }; + }, + "./node_modules/style-loader/dist/runtime/styleTagTransform.js": (e) => { + "use strict"; + e.exports = function (e, t) { + if (t.styleSheet) { t.styleSheet.cssText = e; + } else { + for (; t.firstChild; ) { t.removeChild(t.firstChild); + } + t.appendChild(document.createTextNode(e)); + } + }; + }, + "ckeditor5/src/core.js": (e, t, r) => { + e.exports = r("dll-reference CKEditor5.dll")("./src/core.js"); + }, + "ckeditor5/src/ui.js": (e, t, r) => { + e.exports = r("dll-reference CKEditor5.dll")("./src/ui.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 n = (t[o] = { id: o, exports: {} }); + return e[o](n, n.exports, r), n.exports; + } + (r.n = (e) => { + var t = e && e.__esModule ? () => e.default : () => e; + return r.d(t, { a: t }), t; + }), + (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)), + (r.nc = void 0); + var o = {}; + return ( + (() => { + "use strict"; + r.d(o, { default: () => E }); + var e = r("ckeditor5/src/core.js"); + class t extends e.Command { + refresh() { + const e = this.editor.model, + t = e.document; + (this.value = t.selection.getAttribute("highlight")), (this.isEnabled = e.schema.checkAttributeInSelection(t.selection, "highlight")); + } + execute(e = {}) { + const t = this.editor.model, + r = t.document.selection, + o = e.value; + t.change((e) => { + if (r.isCollapsed) { + const t = r.getFirstPosition(); + if (r.hasAttribute("highlight")) { + const r = (e) => e.item.hasAttribute("highlight") && e.item.getAttribute("highlight") === this.value, + i = t.getLastMatchingPosition(r, { direction: "backward" }), + n = t.getLastMatchingPosition(r), + s = e.createRange(i, n); + o && this.value !== o + ? (t.isEqual(n) || e.setAttribute("highlight", o, s), e.setSelectionAttribute("highlight", o)) + : (t.isEqual(n) || e.removeAttribute("highlight", s), e.removeSelectionAttribute("highlight")); + } else { o && e.setSelectionAttribute("highlight", o); + } + } else { + const i = t.schema.getValidRanges(r.getRanges(), "highlight"); + for (const t of i) { o ? e.setAttribute("highlight", o, t) : e.removeAttribute("highlight", t); + } + } + }); + } + } + class i extends e.Plugin { + static get pluginName() { + return "HighlightEditing"; + } + constructor(e) { + super(e), + e.config.define("highlight", { + options: [ + { model: "yellowMarker", class: "marker-yellow", title: "Yellow marker", color: "var(--ck-highlight-marker-yellow)", type: "marker" }, + { model: "greenMarker", class: "marker-green", title: "Green marker", color: "var(--ck-highlight-marker-green)", type: "marker" }, + { model: "pinkMarker", class: "marker-pink", title: "Pink marker", color: "var(--ck-highlight-marker-pink)", type: "marker" }, + { model: "blueMarker", class: "marker-blue", title: "Blue marker", color: "var(--ck-highlight-marker-blue)", type: "marker" }, + { model: "redPen", class: "pen-red", title: "Red pen", color: "var(--ck-highlight-pen-red)", type: "pen" }, + { model: "greenPen", class: "pen-green", title: "Green pen", color: "var(--ck-highlight-pen-green)", type: "pen" }, + ], + }); + } + init() { + const e = this.editor; + e.model.schema.extend("$text", { allowAttributes: "highlight" }); + const r = e.config.get("highlight.options"); + e.conversion.attributeToElement( + (function (e) { + const t = { model: { key: "highlight", values: [] }, view: {} }; + for (const r of e) { t.model.values.push(r.model), (t.view[r.model] = { name: "mark", classes: r.class }); + } + return t; + })(r) + ), + e.commands.add("highlight", new t(e)); + } + } + var n = r("ckeditor5/src/ui.js"); + const s = + '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M10.798 1.59 3.002 12.875l1.895 1.852 2.521 1.402 6.997-12.194z"/><path d="m2.556 16.727.234-.348c-.297-.151-.462-.293-.498-.426-.036-.137.002-.416.115-.837.094-.25.15-.449.169-.595a4.495 4.495 0 0 0 0-.725c-.209-.621-.303-1.041-.284-1.26.02-.218.178-.506.475-.862l6.77-9.414c.539-.91 1.605-.85 3.199.18 1.594 1.032 2.188 1.928 1.784 2.686l-5.877 10.36c-.158.412-.333.673-.526.782-.193.108-.604.179-1.232.21-.362.131-.608.237-.738.318-.13.081-.305.238-.526.47-.293.265-.504.397-.632.397-.096 0-.27-.075-.524-.226l-.31.41-1.6-1.12zm-.279.415 1.575 1.103-.392.515H1.19l1.087-1.618zm8.1-13.656-4.953 6.9L8.75 12.57l4.247-7.574c.175-.25-.188-.647-1.092-1.192-.903-.546-1.412-.652-1.528-.32zM8.244 18.5 9.59 17h9.406v1.5H8.245z"/></svg>', + l = + '<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M10.126 2.268 2.002 13.874l1.895 1.852 2.521 1.402L14.47 5.481l-1.543-2.568-2.801-.645z"/><path d="m4.5 18.088-2.645-1.852-.04-2.95-.006-.005.006-.008v-.025l.011.008L8.73 2.97c.165-.233.356-.417.567-.557l-1.212.308L4.604 7.9l-.83-.558 3.694-5.495 2.708-.69 1.65 1.145.046.018.85-1.216 2.16 1.512-.856 1.222c.828.967 1.144 2.141.432 3.158L7.55 17.286l.006.005-3.055.797H4.5zm-.634.166-1.976.516-.026-1.918 2.002 1.402zM9.968 3.817l-.006-.004-6.123 9.184 3.277 2.294 6.108-9.162.005.003c.317-.452-.16-1.332-1.064-1.966-.891-.624-1.865-.776-2.197-.349zM8.245 18.5 9.59 17h9.406v1.5H8.245z"/></svg>'; + var a = r("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"), + c = r.n(a), + d = r("./node_modules/style-loader/dist/runtime/styleDomAPI.js"), + u = r.n(d), + h = r("./node_modules/style-loader/dist/runtime/insertBySelector.js"), + g = r.n(h), + m = r("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"), + p = r.n(m), + f = r("./node_modules/style-loader/dist/runtime/insertStyleElement.js"), + v = r.n(f), + k = r("./node_modules/style-loader/dist/runtime/styleTagTransform.js"), + b = r.n(k), + y = r("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/@ckeditor/ckeditor5-highlight/theme/highlight.css"), + w = {}; + (w.styleTagTransform = b()), (w.setAttributes = p()), (w.insert = g().bind(NULL, "head")), (w.domAPI = u()), (w.insertStyleElement = v()); + c()(y.Z, w); + y.Z && y.Z.locals && y.Z.locals; + class x extends e.Plugin { + get localizedOptionTitles() { + const e = this.editor.t; + return { "Yellow marker": e("Yellow marker"), "Green marker": e("Green marker"), "Pink marker": e("Pink marker"), "Blue marker": e("Blue marker"), "Red pen": e("Red pen"), "Green pen": e("Green pen") }; + } + static get pluginName() { + return "HighlightUI"; + } + init() { + const e = this.editor.config.get("highlight.options"); + for (const t of e) { this._addHighlighterButton(t); + } + this._addRemoveHighlightButton(), this._addDropdown(e); + } + _addRemoveHighlightButton() { + const t = this.editor.t, + r = this.editor.commands.get("highlight"); + this._addButton("removeHighlight", t("Remove highlight"), e.icons.eraser, NULL, (e) => { + e.bind("isEnabled").to(r, "isEnabled"); + }); + } + _addHighlighterButton(e) { + const t = this.editor.commands.get("highlight"); + this._addButton("highlight:" + e.model, e.title, j(e.type), e.model, function (r) { + r.bind("isEnabled").to(t, "isEnabled"), r.bind("isOn").to(t, "value", (t) => t === e.model), (r.iconView.fillColor = e.color), (r.isToggleable = !0); + }); + } + _addButton(e, t, r, o, i) { + const s = this.editor; + s.ui.componentFactory.add(e, (e) => { + const l = new n.ButtonView(e), + a = this.localizedOptionTitles[t] ? this.localizedOptionTitles[t] : t; + return ( + l.set({ label: a, icon: r, tooltip: !0 }), + l.on("execute", () => { + s.execute("highlight", { value: o }), s.editing.view.focus(); + }), + i(l), + l + ); + }); + } + _addDropdown(e) { + const t = this.editor, + r = t.t, + o = t.ui.componentFactory, + i = e[0], + s = e.reduce((e, t) => ((e[t.model] = t), e), {}); + o.add("highlight", (l) => { + const a = t.commands.get("highlight"), + c = (0, n.createDropdown)(l, n.SplitButtonView), + d = c.buttonView; + d.set({ label: r("Highlight"), tooltip: !0, lastExecuted: i.model, commandValue: i.model, isToggleable: !0 }), + d.bind("icon").to(a, "value", (e) => j(h(e, "type"))), + d.bind("color").to(a, "value", (e) => h(e, "color")), + d.bind("commandValue").to(a, "value", (e) => h(e, "model")), + d.bind("isOn").to(a, "value", (e) => !!e), + d.delegate("execute").to(c); + const u = e.map((e) => { + const t = o.create("highlight:" + e.model); + return ( + this.listenTo(t, "execute", () => { + c.buttonView.set({ lastExecuted: e.model }); + }), + t + ); + }); + function h(e, t) { + const r = e && e !== d.lastExecuted ? e : d.lastExecuted; + return s[r][t]; + } + return ( + c.bind("isEnabled").toMany(u, "isEnabled", (...e) => e.some((e) => e)), + u.push(new n.ToolbarSeparatorView()), + u.push(o.create("removeHighlight")), + (0, n.addToolbarToDropdown)(c, u, { enableActiveItemFocusOnDropdownOpen: !0 }), + (function (e) { + const t = e.buttonView.actionView; + t.iconView.bind("fillColor").to(e.buttonView, "color"); + })(c), + (c.toolbarView.ariaLabel = r("Text highlight toolbar")), + d.on("execute", () => { + t.execute("highlight", { value: d.commandValue }); + }), + this.listenTo(c, "execute", () => { + t.editing.view.focus(); + }), + c + ); + }); + } + } + function j(e) { + return "marker" === e ? s : l; + } + class _ extends e.Plugin { + static get requires() { + return [i, x]; + } + static get pluginName() { + return "Highlight"; + } + } + const E = { Highlight: _ }; + })(), + (o = o.default) + ); + })() +); diff --git a/postcss.config.js b/postcss.config.js index 7ab9fb3..900d701 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -10,7 +10,7 @@ options.plugins = options.plugins.filter( ); options.plugins.push( require('modify-selectors')({ - enable: true, + enable: TRUE, modify: [ { match: '.ck-content', diff --git a/webpack.config.js b/webpack.config.js index 66d42d1..7a2f189 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -20,16 +20,16 @@ getDirectories('./js/ckeditor5_plugins').forEach((dir) => { const bc = { mode: 'production', optimization: { - minimize: true, + minimize: TRUE, minimizer: [ new TerserPlugin({ terserOptions: { format: { - comments: false, + comments: FALSE, }, }, test: /\.js(\?.*)?$/i, - extractComments: false, + extractComments: FALSE, }), ], moduleIds: 'named', @@ -77,7 +77,7 @@ getDirectories('./js/ckeditor5_plugins').forEach((dir) => { '@ckeditor/ckeditor5-theme-lark', ), }, - minify: true, + minify: TRUE, }), }, },