Commit 4879b8c8 authored by Christopher C. Wells's avatar Christopher C. Wells
Browse files

Issue #3243437 by wells: Implement configuration option handling (for currently supported options)

parent 0929786b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -19,6 +19,11 @@ codemirror:
    /libraries/codemirror/mode/javascript/javascript.js: {}
    /libraries/codemirror/mode/css/css.js: {}
    /libraries/codemirror/mode/htmlmixed/htmlmixed.js: {}
    /libraries/codemirror/addon/edit/closebrackets.js: {}
    /libraries/codemirror/addon/edit/closetag.js: {}
    /libraries/codemirror/addon/edit/matchbrackets.js: {}
    /libraries/codemirror/addon/edit/matchtags.js: {}
    /libraries/codemirror/addon/fold/xml-fold.js: {}
  css:
    component:
      /libraries/codemirror/lib/codemirror.css: {}
+21 −18
Original line number Diff line number Diff line
@@ -21,27 +21,30 @@ ckeditor5.plugin.ckeditor_codemirror_source_editing:
        matchBrackets:
          type: boolean
          label: 'Highlight matching brackets.'
        matchTags:
          type: boolean
          label: 'Highlight matching tags.'
        autoCloseTags:
          type: boolean
          label: 'Close tags automatically.'
        autoCloseBrackets:
          type: boolean
          label: 'Close brackets automatically.'
        enableSearchTools:
          type: boolean
          label: 'Enable search tools.'
        enableCodeFolding:
          type: boolean
          label: 'Enable code folding.'
        enableCodeFormatting:
          type: boolean
          label: 'Enable code formatting.'
        autoFormatOnStart:
          type: boolean
          label: 'Format code on start.'
        autoFormatOnModeChange:
          type: boolean
          label: 'Format code each time source is opened.'
        autoFormatOnUncomment:
          type: boolean
          label: 'Format code when a line is uncommented.'
#        enableSearchTools:
#          type: boolean
#          label: 'Enable search tools.'
#        enableCodeFolding:
#          type: boolean
#          label: 'Enable code folding.'
#        enableCodeFormatting:
#          type: boolean
#          label: 'Enable code formatting.'
#        autoFormatOnStart:
#          type: boolean
#          label: 'Format code on start.'
#        autoFormatOnModeChange:
#          type: boolean
#          label: 'Format code each time source is opened.'
#        autoFormatOnUncomment:
#          type: boolean
#          label: 'Format code when a line is uncommented.'
+1 −1
Original line number Diff line number Diff line
(()=>{var e={624:(e,r,t)=>{"use strict";t.d(r,{Z:()=>i});var n=t(645),o=t.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-source-editing-area .cm-s-default{border:1px solid var(--ck-color-base-border);border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0;font-size:var(--ck-font-size-normal);line-height:var(--ck-line-height-base);padding:var(--ck-spacing-large)}.ck-source-editing-area .CodeMirror-focused{border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck-source-editing-area:after{content:"";display:none}',""]);const i=o},645:e=>{"use strict";e.exports=function(e){var r=[];return r.toString=function(){return this.map((function(r){var t=e(r);return r[2]?"@media ".concat(r[2]," {").concat(t,"}"):t})).join("")},r.i=function(e,t,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var c=0;c<e.length;c++){var s=[].concat(e[c]);n&&o[s[0]]||(t&&(s[2]?s[2]="".concat(t," and ").concat(s[2]):s[2]=t),r.push(s))}},r}},379:(e,r,t)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},i=function(){var e={};return function(r){if(void 0===e[r]){var t=document.querySelector(r);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}e[r]=t}return e[r]}}(),a=[];function c(e){for(var r=-1,t=0;t<a.length;t++)if(a[t].identifier===e){r=t;break}return r}function s(e,r){for(var t={},n=[],o=0;o<e.length;o++){var i=e[o],s=r.base?i[0]+r.base:i[0],d=t[s]||0,u="".concat(s," ").concat(d);t[s]=d+1;var l=c(u),f={css:i[1],media:i[2],sourceMap:i[3]};-1!==l?(a[l].references++,a[l].updater(f)):a.push({identifier:u,updater:h(f,r),references:1}),n.push(u)}return n}function d(e){var r=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=t.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){r.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(r);else{var a=i(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(r)}return r}var u,l=(u=[],function(e,r){return u[e]=r,u.filter(Boolean).join("\n")});function f(e,r,t,n){var o=t?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=l(r,o);else{var i=document.createTextNode(o),a=e.childNodes;a[r]&&e.removeChild(a[r]),a.length?e.insertBefore(i,a[r]):e.appendChild(i)}}function p(e,r,t){var n=t.css,o=t.media,i=t.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var g=null,v=0;function h(e,r){var t,n,o;if(r.singleton){var i=v++;t=g||(g=d(r)),n=f.bind(null,t,i,!1),o=f.bind(null,t,i,!0)}else t=d(r),n=p.bind(null,t,r),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)};return n(e),function(r){if(r){if(r.css===e.css&&r.media===e.media&&r.sourceMap===e.sourceMap)return;n(e=r)}else o()}}e.exports=function(e,r){(r=r||{}).singleton||"boolean"==typeof r.singleton||(r.singleton=o());var t=s(e=e||[],r);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<t.length;n++){var o=c(t[n]);a[o].references--}for(var i=s(e,r),d=0;d<t.length;d++){var u=c(t[d]);0===a[u].references&&(a[u].updater(),a.splice(u,1))}t=i}}}},704:(e,r,t)=>{e.exports=t(79)("./src/core.js")},209:(e,r,t)=>{e.exports=t(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={id:n,exports:{}};return e[n](i,i.exports,t),i.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.nc=void 0;var n={};(()=>{"use strict";t.r(n),t.d(n,{SourceEditingCodeMirror:()=>s});var e=t(704),r=t(209),o=t(379),i=t.n(o),a=t(624),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i()(a.Z,c);a.Z.locals;class s extends e.Plugin{static get requires(){return["SourceEditing"]}static get pluginName(){return"SourceEditingCodeMirror"}init(){this._cmEditors=[]}afterInit(){if(!r.global.window.CodeMirror)return void r.global.window.console.error("The CodeMirror 5 library must be provided.");const e=this.editor;this.listenTo(e.plugins.get("SourceEditing"),"change:isSourceEditingMode",(t,n,o)=>{o?function(e){const t=e.plugins.get("SourceEditing"),n=e.plugins.get("SourceEditingCodeMirror");for(const[,e]of t._replacedRoots){const t=e.childNodes[0],o=r.global.window.CodeMirror.fromTextArea(t,{mode:"htmlmixed"});o.on("change",()=>{t.value=o.getValue(),t.dispatchEvent(new r.global.window.Event("input"))}),n._cmEditors.push(o)}}(e):function(e){const r=e.plugins.get("SourceEditingCodeMirror");for(const e of r._cmEditors)e.toTextArea();r._cmEditors=[]}(e)})}}})(),(window.CKEditor5=window.CKEditor5||{}).sourceEditingCodemirror=n})();
 No newline at end of file
(()=>{var e={624:(e,r,t)=>{"use strict";t.d(r,{Z:()=>i});var n=t(645),o=t.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-source-editing-area .cm-s-default{border:1px solid var(--ck-color-base-border);border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0;font-size:var(--ck-font-size-normal);line-height:var(--ck-line-height-base)}.ck-source-editing-area .CodeMirror-focused{border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck-source-editing-area:after{content:"";display:none}',""]);const i=o},645:e=>{"use strict";e.exports=function(e){var r=[];return r.toString=function(){return this.map((function(r){var t=e(r);return r[2]?"@media ".concat(r[2]," {").concat(t,"}"):t})).join("")},r.i=function(e,t,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var s=0;s<e.length;s++){var c=[].concat(e[s]);n&&o[c[0]]||(t&&(c[2]?c[2]="".concat(t," and ").concat(c[2]):c[2]=t),r.push(c))}},r}},379:(e,r,t)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},i=function(){var e={};return function(r){if(void 0===e[r]){var t=document.querySelector(r);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}e[r]=t}return e[r]}}(),a=[];function s(e){for(var r=-1,t=0;t<a.length;t++)if(a[t].identifier===e){r=t;break}return r}function c(e,r){for(var t={},n=[],o=0;o<e.length;o++){var i=e[o],c=r.base?i[0]+r.base:i[0],d=t[c]||0,u="".concat(c," ").concat(d);t[c]=d+1;var l=s(u),f={css:i[1],media:i[2],sourceMap:i[3]};-1!==l?(a[l].references++,a[l].updater(f)):a.push({identifier:u,updater:h(f,r),references:1}),n.push(u)}return n}function d(e){var r=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=t.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){r.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(r);else{var a=i(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(r)}return r}var u,l=(u=[],function(e,r){return u[e]=r,u.filter(Boolean).join("\n")});function f(e,r,t,n){var o=t?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=l(r,o);else{var i=document.createTextNode(o),a=e.childNodes;a[r]&&e.removeChild(a[r]),a.length?e.insertBefore(i,a[r]):e.appendChild(i)}}function p(e,r,t){var n=t.css,o=t.media,i=t.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var g=null,v=0;function h(e,r){var t,n,o;if(r.singleton){var i=v++;t=g||(g=d(r)),n=f.bind(null,t,i,!1),o=f.bind(null,t,i,!0)}else t=d(r),n=p.bind(null,t,r),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)};return n(e),function(r){if(r){if(r.css===e.css&&r.media===e.media&&r.sourceMap===e.sourceMap)return;n(e=r)}else o()}}e.exports=function(e,r){(r=r||{}).singleton||"boolean"==typeof r.singleton||(r.singleton=o());var t=c(e=e||[],r);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<t.length;n++){var o=s(t[n]);a[o].references--}for(var i=c(e,r),d=0;d<t.length;d++){var u=s(t[d]);0===a[u].references&&(a[u].updater(),a.splice(u,1))}t=i}}}},704:(e,r,t)=>{e.exports=t(79)("./src/core.js")},209:(e,r,t)=>{e.exports=t(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={id:n,exports:{}};return e[n](i,i.exports,t),i.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.nc=void 0;var n={};(()=>{"use strict";t.r(n),t.d(n,{SourceEditingCodeMirror:()=>c});var e=t(704),r=t(209),o=t(379),i=t.n(o),a=t(624),s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i()(a.Z,s);a.Z.locals;class c extends e.Plugin{static get requires(){return["SourceEditing"]}static get pluginName(){return"SourceEditingCodeMirror"}constructor(e){super(e),e.config.define("sourceEditingCodeMirror",{options:r.global.window.CodeMirror.defaults})}init(){this._cmEditors=[]}afterInit(){if(!r.global.window.CodeMirror)return void r.global.window.console.error("The CodeMirror 5 library must be provided.");const e=this.editor;this.listenTo(e.plugins.get("SourceEditing"),"change:isSourceEditingMode",(t,n,o)=>{o?function(e){const t=e.plugins.get("SourceEditing"),n=e.plugins.get("SourceEditingCodeMirror");for(const[,o]of t._replacedRoots){const t=o.childNodes[0],i=r.global.window.CodeMirror.fromTextArea(t,e.config.get("sourceEditingCodeMirror.options"));i.on("change",()=>{t.value=i.getValue(),t.dispatchEvent(new r.global.window.Event("input"))}),n._cmEditors.push(i)}}(e):function(e){const r=e.plugins.get("SourceEditingCodeMirror");for(const e of r._cmEditors)e.toTextArea();r._cmEditors=[]}(e)})}}})(),(window.CKEditor5=window.CKEditor5||{}).sourceEditingCodemirror=n})();
 No newline at end of file
+5 −0
Original line number Diff line number Diff line
@@ -155,6 +155,11 @@ <h3>Reporting issues</h3>
					'tableRow',
					'mergeTableCells'
				]
			},
		  	sourceEditingCodeMirror: {
			  options: {
				lineNumbers: true
			  }
			}
		} )
		.then( editor => {
+11 −3
Original line number Diff line number Diff line
@@ -18,6 +18,16 @@ export default class SourceEditingCodeMirror extends Plugin {
		return 'SourceEditingCodeMirror';
	}

  /**
   * @inheritDoc
   */
  constructor( editor ) {
	super( editor );
	editor.config.define( 'sourceEditingCodeMirror', {
	  options: global.window.CodeMirror.defaults
	} );
  }

	/**
	 * @inheritDoc
	 */
@@ -72,9 +82,7 @@ function enterEditingSourceMode( editor ) {

	for ( const [ , viewWrapper ] of sourceEditing._replacedRoots ) {
		const textarea = viewWrapper.childNodes[ 0 ];
		const cmEditor = global.window.CodeMirror.fromTextArea( textarea, {
			mode: 'htmlmixed'
		} );
		const cmEditor = global.window.CodeMirror.fromTextArea( textarea, editor.config.get('sourceEditingCodeMirror.options') );

		cmEditor.on( 'change', () => {
			textarea.value = cmEditor.getValue();
Loading