From 789c08700407b6f2d0a731d870eaef7d630a8bdb Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 16:40:02 +0200 Subject: [PATCH 01/14] feat: add base styles for svg icons in moono-lexicon --- skins/moono-lexicon/editor.css | 3 +++ skins/moono-lexicon/icons.css | 4 ++++ skins/moono-lexicon/toolbar.css | 2 ++ 3 files changed, 9 insertions(+) create mode 100644 skins/moono-lexicon/icons.css diff --git a/skins/moono-lexicon/editor.css b/skins/moono-lexicon/editor.css index 12da612149..fe0cb8b2ee 100644 --- a/skins/moono-lexicon/editor.css +++ b/skins/moono-lexicon/editor.css @@ -46,6 +46,9 @@ other files. /* Styles for notifications. */ @import url('notification.css'); +/* Icons */ +@import url('icons.css'); + /* Important! To avoid showing the editor UI while its styles are still not available, the editor creates it with visibility:hidden. Here, we restore the UI visibility. */ diff --git a/skins/moono-lexicon/icons.css b/skins/moono-lexicon/icons.css new file mode 100644 index 0000000000..7d65351b91 --- /dev/null +++ b/skins/moono-lexicon/icons.css @@ -0,0 +1,4 @@ +.cke_hidpi .cke_button_icon { + background-size: 16px !important; + background-position: center !important; +} diff --git a/skins/moono-lexicon/toolbar.css b/skins/moono-lexicon/toolbar.css index 79e1518d34..b8dd81685b 100644 --- a/skins/moono-lexicon/toolbar.css +++ b/skins/moono-lexicon/toolbar.css @@ -270,6 +270,8 @@ a.cke_button_disabled .cke_button_arrow { /* Button inner elements. */ /* The icon which is a visual representation of the button. */ .cke_button_icon { + background-size: 16px !important; + background-position: center !important; cursor: inherit; background-repeat: no-repeat; width: 16px; From 239dea4dd946b2ab88c35bb7f1fc798acf4b53ef Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 16:40:32 +0200 Subject: [PATCH 02/14] feat: add script to generate default css classes for svg icons --- support/iconsClassesGenerator.js | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 support/iconsClassesGenerator.js diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js new file mode 100644 index 0000000000..9c44ebed2f --- /dev/null +++ b/support/iconsClassesGenerator.js @@ -0,0 +1,41 @@ +const fs = require('fs'); +const path = require('path'); +const sharp = require('sharp'); + +const configFilePath = process.argv[2]; +const outputFile = process.argv[3]; + +const rawData = fs.readFileSync(configFilePath); +const iconsConfig = JSON.parse(rawData); + +const sourceIconsPath = path.join( + path.dirname(configFilePath), + '..', + iconsConfig.dir +); + +const symbols = /[\r\n%#()<>?\[\\\]^`{|}]/g; + +let iconsCSSContent = ''; + +for (const [output, source] of Object.entries(iconsConfig.icons)) { + var svgData = fs.readFileSync(`${sourceIconsPath}/${source}.svg`, 'utf8'); + + const defaultSvgData = svgData + .replace(/\s+fill="[^"]+"/, '') + .replace(/\s{1,}<") + .replace(/\s{2,}/g, " ") + .replace(symbols, encodeURIComponent) + .replace(/\s+/g, '%20'); + + const defaultIconCSS = + `.cke_hidpi .cke_button .cke_button__${output}_icon, + .cke_button .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${defaultSvgData}") !important; + }`; + + iconsCSSContent += defaultIconCSS; +} +fs.writeFileSync(outputFile, iconsCSSContent, { flag: 'a'}); \ No newline at end of file From 03f7eca2d9da409bdbe4bda89e746a12eb8c8c6d Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 17:26:49 +0200 Subject: [PATCH 03/14] feat: generate focus, hover, active and disable icon states --- support/iconsClassesGenerator.js | 62 +++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index 9c44ebed2f..647eee1732 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -36,6 +36,66 @@ for (const [output, source] of Object.entries(iconsConfig.icons)) { background: url("data:image/svg+xml;charset=utf8,${defaultSvgData}") !important; }`; - iconsCSSContent += defaultIconCSS; + const hoverSvgData = svgData + .replace(/\s+fill="[^"]+"/, '') + .replace(/\s{1,}<") + .replace(/\s{2,}/g, " ") + .replace(symbols, encodeURIComponent) + .replace(/\s+/g, '%20'); + + const hoverIconCSS = + `.cke_hidpi .cke_button:hover .cke_button__${output}_icon, + .cke_button:hover .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${hoverSvgData}") !important; + }`; + + const activeSvgData = svgData + .replace(/\s+fill="[^"]+"/, '') + .replace(/\s{1,}<") + .replace(/\s{2,}/g, " ") + .replace(symbols, encodeURIComponent) + .replace(/\s+/g, '%20'); + + const activeIconCSS = + `.cke_hidpi .cke_button.cke_button_on .cke_button__${output}_icon, + .cke_button.cke_button_on .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${activeSvgData}") !important; + }`; + + const disableSvgData = svgData + .replace(/\s+fill="[^"]+"/, '') + .replace(/\s{1,}<") + .replace(/\s{2,}/g, " ") + .replace(symbols, encodeURIComponent) + .replace(/\s+/g, '%20'); + + const disableIconCSS = + `.cke_hidpi .cke_button.cke_button_disabled .cke_button__${output}_icon, + .cke_button.cke_button_disabled .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${disableSvgData}") !important; + }`; + + const focusSvgData = svgData + .replace(/\s+fill="[^"]+"/, '') + .replace(/\s{1,}<") + .replace(/\s{2,}/g, " ") + .replace(symbols, encodeURIComponent) + .replace(/\s+/g, '%20'); + + const focusIconCSS = + `.cke_hidpi .cke_button:focus .cke_button__${output}_icon, + .cke_button:focus .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${focusSvgData}") !important; + }`; + + iconsCSSContent += `${defaultIconCSS} ${hoverIconCSS} ${activeIconCSS} ${disableIconCSS} ${focusIconCSS}`; } fs.writeFileSync(outputFile, iconsCSSContent, { flag: 'a'}); \ No newline at end of file From edddb32eea713ee070f3ed379e77345bb35e7f7f Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 17:54:54 +0200 Subject: [PATCH 04/14] chore: refactor --- support/iconsClassesGenerator.js | 85 +++++++++++--------------------- 1 file changed, 29 insertions(+), 56 deletions(-) diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index 647eee1732..004c616b5c 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -14,88 +14,61 @@ const sourceIconsPath = path.join( iconsConfig.dir ); -const symbols = /[\r\n%#()<>?\[\\\]^`{|}]/g; +const activeColor = '#272833'; +const defaultColor = '#6b6c7e'; +const disableColor = '#a7a9bc'; +const focusColor = '#272833'; +const hoverColor = '#272833'; -let iconsCSSContent = ''; - -for (const [output, source] of Object.entries(iconsConfig.icons)) { - var svgData = fs.readFileSync(`${sourceIconsPath}/${source}.svg`, 'utf8'); - - const defaultSvgData = svgData - .replace(/\s+fill="[^"]+"/, '') - .replace(/\s{1,}<") - .replace(/\s{2,}/g, " ") - .replace(symbols, encodeURIComponent) - .replace(/\s+/g, '%20'); - - const defaultIconCSS = - `.cke_hidpi .cke_button .cke_button__${output}_icon, - .cke_button .cke_button__${output}_icon { - background: url("data:image/svg+xml;charset=utf8,${defaultSvgData}") !important; - }`; +const encodeSvgData = (svgData, color) => { + const symbols = /[\r\n%#()<>?\[\\\]^`{|}]/g; - const hoverSvgData = svgData + return svgData .replace(/\s+fill="[^"]+"/, '') - .replace(/\s{1,}<") .replace(/\s{2,}/g, " ") .replace(symbols, encodeURIComponent) .replace(/\s+/g, '%20'); +}; - const hoverIconCSS = - `.cke_hidpi .cke_button:hover .cke_button__${output}_icon, - .cke_button:hover .cke_button__${output}_icon { - background: url("data:image/svg+xml;charset=utf8,${hoverSvgData}") !important; - }`; - - const activeSvgData = svgData - .replace(/\s+fill="[^"]+"/, '') - .replace(/\s{1,}<") - .replace(/\s{2,}/g, " ") - .replace(symbols, encodeURIComponent) - .replace(/\s+/g, '%20'); +let iconsCSSContent = ''; +for (const [output, source] of Object.entries(iconsConfig.icons)) { + var svgData = fs.readFileSync(`${sourceIconsPath}/${source}.svg`, 'utf8'); + const activeIconCSS = `.cke_hidpi .cke_button.cke_button_on .cke_button__${output}_icon, .cke_button.cke_button_on .cke_button__${output}_icon { - background: url("data:image/svg+xml;charset=utf8,${activeSvgData}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, activeColor)}") !important; }`; - const disableSvgData = svgData - .replace(/\s+fill="[^"]+"/, '') - .replace(/\s{1,}<") - .replace(/\s{2,}/g, " ") - .replace(symbols, encodeURIComponent) - .replace(/\s+/g, '%20'); + const defaultIconCSS = + `.cke_hidpi .cke_button .cke_button__${output}_icon, + .cke_button .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, defaultColor)}") !important; + }`; const disableIconCSS = `.cke_hidpi .cke_button.cke_button_disabled .cke_button__${output}_icon, .cke_button.cke_button_disabled .cke_button__${output}_icon { - background: url("data:image/svg+xml;charset=utf8,${disableSvgData}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, disableColor)}") !important; }`; - const focusSvgData = svgData - .replace(/\s+fill="[^"]+"/, '') - .replace(/\s{1,}<") - .replace(/\s{2,}/g, " ") - .replace(symbols, encodeURIComponent) - .replace(/\s+/g, '%20'); + const hoverIconCSS = + `.cke_hidpi .cke_button:hover .cke_button__${output}_icon, + .cke_button:hover .cke_button__${output}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, hoverColor)}") !important; + }`; const focusIconCSS = `.cke_hidpi .cke_button:focus .cke_button__${output}_icon, .cke_button:focus .cke_button__${output}_icon { - background: url("data:image/svg+xml;charset=utf8,${focusSvgData}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, focusColor)}") !important; }`; - iconsCSSContent += `${defaultIconCSS} ${hoverIconCSS} ${activeIconCSS} ${disableIconCSS} ${focusIconCSS}`; + iconsCSSContent += `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; } + fs.writeFileSync(outputFile, iconsCSSContent, { flag: 'a'}); \ No newline at end of file From c7c6a5c00f0237e43edcd6597507e28dcc418857 Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 19:30:04 +0200 Subject: [PATCH 05/14] fix: fix focus state syles --- skins/moono-lexicon/toolbar.css | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/skins/moono-lexicon/toolbar.css b/skins/moono-lexicon/toolbar.css index b8dd81685b..84fb67939f 100644 --- a/skins/moono-lexicon/toolbar.css +++ b/skins/moono-lexicon/toolbar.css @@ -149,11 +149,6 @@ a.cke_button_disabled:hover { cursor: default; } -a.cke_button_disabled:focus { - border: 1px #bcbcbc solid; - padding: 3px 5px; -} - .cke_hc a.cke_button_disabled:hover, .cke_hc a.cke_button_disabled:focus, .cke_hc a.cke_button_disabled:active { @@ -178,9 +173,8 @@ a.cke_button_disabled:focus { /* This class is applied to the button when the feature associated with the button cannot be used (grayed-out), i.e. paste button remains disabled when there is nothing in the clipboard to be pasted. */ -a.cke_button_disabled .cke_button_icon, a.cke_button_disabled .cke_button_arrow { - opacity: 0.3; + border-top: 3px solid #a7a9bc; } .cke_hc a.cke_button_disabled { From c81cb21b0ac0c34e337f8d8659cee3b75028cedc Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 19:30:18 +0200 Subject: [PATCH 06/14] feat: add support for ltr and rtl icons --- skins/moono-lexicon/icons/icons.json | 41 ++++++++++--- support/iconsClassesGenerator.js | 89 ++++++++++++++++++++++++---- 2 files changed, 108 insertions(+), 22 deletions(-) diff --git a/skins/moono-lexicon/icons/icons.json b/skins/moono-lexicon/icons/icons.json index ce29879a28..cdf93d26ce 100644 --- a/skins/moono-lexicon/icons/icons.json +++ b/skins/moono-lexicon/icons/icons.json @@ -4,17 +4,27 @@ "align-image-center": "align-image-center", "align-image-left": "align-image-left", "align-image-right": "align-image-right", - "anchor": "flag-full", + "anchor": { + "ltr": "flag-full" + }, "blockquote": "quote-right", "bold": "bold", - "bulletedlist": "list-ul", + "bulletedlist": { + "ltr": "list-ul" + }, "copy": "paste", "cut": "cut", - "find": "search", + "find": { + "ltr": "search", + "rtl": "search" + }, "hidden": "hidden", "horizontalrule": "separator", "image": "picture", - "indent": "indent-more", + "indent": { + "ltr": "indent-more", + "rtl": "indent-less" + }, "italic": "italic", "justifyblock": "align-justify", "justifycenter": "align-center", @@ -22,18 +32,31 @@ "justifyright": "align-right", "link": "link", "maximize": "full-size", - "numberedlist": "list-ol", - "outdent": "indent-less", - "redo": "redo", + "numberedlist": { + "ltr": "list-ol" + }, + "outdent": { + "ltr": "indent-less", + "rtr": "indent-more" + }, + "redo": { + "ltr": "redo", + "rtl": "undo" + }, "removeformat": "remove-style", "replace": "change-list", - "source": "code", + "source": { + "ltr":"code" + }, "strike": "strikethrough", "subscript": "subscript", "superscript": "superscript", "table": "table2", "underline": "underline", - "undo": "undo", + "undo": { + "ltr": "undo", + "rtl": "redo" + }, "unlink": "chain-broken" } } diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index 004c616b5c..b5da9877ff 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -33,42 +33,105 @@ const encodeSvgData = (svgData, color) => { .replace(/\s+/g, '%20'); }; +const getCSS = (svgData, cKEditorIcon, direction) => { + let directionClass = direction ? `.cke_${direction}` : ''; + + const activeIconCSS = + `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, activeColor)}") !important; + }`; + + const defaultIconCSS = + `${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button .cke_button__${cKEditorIcon}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, defaultColor)}") !important; + }`; + + const disableIconCSS = + `${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, disableColor)}") !important; + }`; + + const hoverIconCSS = + `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, hoverColor)}") !important; + }`; + + const focusIconCSS = + `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon { + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, focusColor)}") !important; + }`; + + return `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; +} + let iconsCSSContent = ''; -for (const [output, source] of Object.entries(iconsConfig.icons)) { - var svgData = fs.readFileSync(`${sourceIconsPath}/${source}.svg`, 'utf8'); +for (const [cKEditorIcon, clayIcon] of Object.entries(iconsConfig.icons)) { + let directionClass = ''; + let svgDataList = []; + + if (typeof clayIcon === 'string') { + const svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon}.svg`, 'utf8'); + + iconsCSSContent += getCSS(svgData, cKEditorIcon); + //svgDataList = [fs.readFileSync(`${sourceIconsPath}/${clayIcon}.svg`, 'utf8')]; + } + else { + if (clayIcon.ltr) { + const svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.ltr}.svg`, 'utf8'); + + iconsCSSContent += getCSS(svgData, cKEditorIcon, 'ltr'); + } + + if (clayIcon.rtl) { + const svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.rtl}.svg`, 'utf8'); + + iconsCSSContent += getCSS(svgData, cKEditorIcon, 'rtl'); + } + + + //directionClass = `.cke_${clayIcon.direction}`; + //svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.icon}.svg`, 'utf8'); + } + /* const activeIconCSS = - `.cke_hidpi .cke_button.cke_button_on .cke_button__${output}_icon, - .cke_button.cke_button_on .cke_button__${output}_icon { + `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, activeColor)}") !important; }`; const defaultIconCSS = - `.cke_hidpi .cke_button .cke_button__${output}_icon, - .cke_button .cke_button__${output}_icon { + `${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, defaultColor)}") !important; }`; const disableIconCSS = - `.cke_hidpi .cke_button.cke_button_disabled .cke_button__${output}_icon, - .cke_button.cke_button_disabled .cke_button__${output}_icon { + `${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, disableColor)}") !important; }`; const hoverIconCSS = - `.cke_hidpi .cke_button:hover .cke_button__${output}_icon, - .cke_button:hover .cke_button__${output}_icon { + `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, hoverColor)}") !important; }`; const focusIconCSS = - `.cke_hidpi .cke_button:focus .cke_button__${output}_icon, - .cke_button:focus .cke_button__${output}_icon { + `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, + ${directionClass} .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, focusColor)}") !important; }`; - iconsCSSContent += `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; + iconsCSSContent += `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; + */ } fs.writeFileSync(outputFile, iconsCSSContent, { flag: 'a'}); \ No newline at end of file From a0886cf391f0dda607631f2ec02a68a46753ea9e Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 19:30:45 +0200 Subject: [PATCH 07/14] feat: remove no longer needed files --- skins/moono-lexicon/dev/icons16.png | Bin 17963 -> 0 bytes skins/moono-lexicon/dev/icons16.svg | 175 --------------------- skins/moono-lexicon/dev/icons32.png | Bin 51976 -> 0 bytes skins/moono-lexicon/dev/icons32.svg | 167 -------------------- skins/moono-lexicon/dev/locations.json | 145 ----------------- skins/moono-lexicon/icons/hidpi/.gitignore | 0 6 files changed, 487 deletions(-) delete mode 100644 skins/moono-lexicon/dev/icons16.png delete mode 100644 skins/moono-lexicon/dev/icons16.svg delete mode 100644 skins/moono-lexicon/dev/icons32.png delete mode 100644 skins/moono-lexicon/dev/icons32.svg delete mode 100644 skins/moono-lexicon/dev/locations.json delete mode 100644 skins/moono-lexicon/icons/hidpi/.gitignore diff --git a/skins/moono-lexicon/dev/icons16.png b/skins/moono-lexicon/dev/icons16.png deleted file mode 100644 index 425edcf2e53e2c4709289c7374de25fbb8c699f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17963 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 V@*3GU;FrKachq!Il{f98|33{Mvts}N diff --git a/skins/moono-lexicon/dev/icons16.svg b/skins/moono-lexicon/dev/icons16.svg deleted file mode 100644 index 1717d61065..0000000000 --- a/skins/moono-lexicon/dev/icons16.svg +++ /dev/null @@ -1,175 +0,0 @@ - - - - mona-lisa-icons16 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/skins/moono-lexicon/dev/icons32.png b/skins/moono-lexicon/dev/icons32.png deleted file mode 100644 index 148456661b97139ddd2bb482955695c72c746a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51976 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

}em(ixB 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 - - - mona-lisa-icons32 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/skins/moono-lexicon/dev/locations.json b/skins/moono-lexicon/dev/locations.json deleted file mode 100644 index 9e0df3945e..0000000000 --- a/skins/moono-lexicon/dev/locations.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "0": [ - [ - "plugins/sourcearea/icons/source.png", - "plugins/sourcedialog/icons/sourcedialog.png" - ], - [ - "plugins/sourcearea/icons/source-rtl.png", - "plugins/sourcedialog/icons/sourcedialog-rtl.png" - ], - "plugins/save/icons/save.png", - "plugins/newpage/icons/newpage.png", - "plugins/newpage/icons/newpage-rtl.png", - "plugins/preview/icons/preview.png", - "plugins/preview/icons/preview-rtl.png", - "plugins/print/icons/print.png", - [ - "plugins/templates/icons/templates.png", - "plugins/templates/icons/templates-rtl.png" - ], - "plugins/docprops/icons/docprops.png", - "plugins/docprops/icons/docprops-rtl.png" - ], - "1": [ - [ - "plugins/clipboard/icons/cut-rtl.png", - "plugins/clipboard/icons/cut.png" - ], - [ - "plugins/clipboard/icons/copy.png", - "plugins/clipboard/icons/copy-rtl.png" - ], - [ - "plugins/clipboard/icons/paste.png", - "plugins/clipboard/icons/paste-rtl.png" - ], - "plugins/pastetext/icons/pastetext.png", - "plugins/pastetext/icons/pastetext-rtl.png", - "plugins/pastefromword/icons/pastefromword.png", - "plugins/pastefromword/icons/pastefromword-rtl.png", - "plugins/undo/icons/undo.png", - "plugins/undo/icons/undo-rtl.png", - "plugins/undo/icons/redo.png", - "plugins/undo/icons/redo-rtl.png" - ], - "2": [ - [ - "plugins/find/icons/find-rtl.png", - "plugins/find/icons/find.png" - ], - "plugins/find/icons/replace.png", - "plugins/selectall/icons/selectall.png", - [ - "plugins/wsc/icons/spellchecker.png", - "plugins/scayt/icons/scayt.png" - ] - ], - "3": [ - "plugins/forms/icons/form.png", - "plugins/forms/icons/checkbox.png", - "plugins/forms/icons/radio.png", - [ - "plugins/forms/icons/textfield-rtl.png", - "plugins/forms/icons/textfield.png" - ], - "plugins/forms/icons/textarea.png", - "plugins/forms/icons/textarea-rtl.png", - "plugins/forms/icons/select.png", - "plugins/forms/icons/select-rtl.png", - "plugins/forms/icons/button.png", - "plugins/forms/icons/imagebutton.png", - "plugins/forms/icons/hiddenfield.png" - ], - "4": [ - "plugins/basicstyles/icons/bold.png", - "plugins/basicstyles/icons/italic.png", - "plugins/basicstyles/icons/underline.png", - "plugins/basicstyles/icons/strike.png", - "plugins/basicstyles/icons/superscript.png", - "plugins/basicstyles/icons/subscript.png", - "plugins/removeformat/icons/removeformat.png" - ], - "5": [ - "plugins/list/icons/numberedlist.png", - "plugins/list/icons/numberedlist-rtl.png", - "plugins/list/icons/bulletedlist.png", - "plugins/list/icons/bulletedlist-rtl.png", - "plugins/indent/icons/outdent.png", - "plugins/indent/icons/indent.png", - "plugins/indent/icons/indent-rtl.png", - "plugins/indent/icons/outdent-rtl.png", - "plugins/blockquote/icons/blockquote.png", - "plugins/div/icons/creatediv.png", - "plugins/justify/icons/justifyleft.png", - "plugins/justify/icons/justifycenter.png", - "plugins/justify/icons/justifyright.png", - "plugins/justify/icons/justifyblock.png", - "plugins/bidi/icons/bidiltr.png", - "plugins/bidi/icons/bidirtl.png" - ], - "6": [ - "plugins/link/icons/link.png", - "plugins/link/icons/unlink.png", - "plugins/link/icons/anchor.png", - "plugins/link/icons/anchor-rtl.png", - "plugins/copyformatting/icons/copyformatting.png" - ], - "7": [ - [ - "plugins/image/icons/image.png", - "plugins/image2/icons/image.png" - ], - "plugins/flash/icons/flash.png", - "plugins/table/icons/table.png", - "plugins/horizontalrule/icons/horizontalrule.png", - "plugins/smiley/icons/smiley.png", - "plugins/specialchar/icons/specialchar.png", - "plugins/pagebreak/icons/pagebreak.png", - "plugins/pagebreak/icons/pagebreak-rtl.png", - "plugins/iframe/icons/iframe.png" - ], - "8": [ - "plugins/colorbutton/icons/textcolor.png", - "plugins/colorbutton/icons/bgcolor.png" - ], - "9": [ - "plugins/maximize/icons/maximize.png", - "plugins/showblocks/icons/showblocks.png", - "plugins/showblocks/icons/showblocks-rtl.png" - ], - "10": [ - "plugins/about/icons/about.png", - "plugins/uicolor/icons/uicolor.png", - "plugins/placeholder/icons/placeholder.png", - "plugins/language/icons/language.png", - "plugins/codesnippet/icons/codesnippet.png" - ], - "11": [ - "plugins/link/images/anchor.png", - "skins/moono-lexicon/images/close.png", - "skins/moono-lexicon/images/lock.png", - "skins/moono-lexicon/images/lock-open.png", - "skins/moono-lexicon/images/refresh.png" - ] -} diff --git a/skins/moono-lexicon/icons/hidpi/.gitignore b/skins/moono-lexicon/icons/hidpi/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 From e8b036fa31404aec9a4aa04d7d953ec2ed0c6a45 Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 19:31:08 +0200 Subject: [PATCH 08/14] feat: run iconsClassesGenerator on build --- ck.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ck.sh b/ck.sh index 50d29bd5a7..74f004bd1e 100755 --- a/ck.sh +++ b/ck.sh @@ -59,7 +59,7 @@ case "$COMMAND" in cd ckeditor-dev # Convert svg icons to png - node ../support/svgToPng.js skins/moono-lexicon/icons/icons.json skins/moono-lexicon/icons + node ../support/iconsClassesGenerator.js skins/moono-lexicon/icons/icons.json skins/moono-lexicon/icons.css if [ -n "$DEBUG" ]; then dev/builder/build.sh --build-config ../../../support/build-config.js \ From 192a1febac70d5dbfc56d7b1db6b952b49b63c2e Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 19:32:11 +0200 Subject: [PATCH 09/14] feat: sf --- skins/moono-lexicon/icons.css | 4 +- support/iconsClassesGenerator.js | 85 +++++++++++++++++++------------- 2 files changed, 53 insertions(+), 36 deletions(-) diff --git a/skins/moono-lexicon/icons.css b/skins/moono-lexicon/icons.css index 7d65351b91..c879f7e940 100644 --- a/skins/moono-lexicon/icons.css +++ b/skins/moono-lexicon/icons.css @@ -1,4 +1,4 @@ .cke_hidpi .cke_button_icon { - background-size: 16px !important; - background-position: center !important; + background-size: 16px !important; + background-position: center !important; } diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index b5da9877ff..da67a77ccf 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -26,48 +26,58 @@ const encodeSvgData = (svgData, color) => { return svgData .replace(/\s+fill="[^"]+"/, '') .replace(/\s{1,}<") - .replace(/\s{2,}/g, " ") + .replace(/"/g, "'") // Use single quotes instead of double to avoid encoding. + .replace(/>\s{1,}<') + .replace(/\s{2,}/g, ' ') .replace(symbols, encodeURIComponent) .replace(/\s+/g, '%20'); }; const getCSS = (svgData, cKEditorIcon, direction) => { let directionClass = direction ? `.cke_${direction}` : ''; - - const activeIconCSS = - `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, + + const activeIconCSS = `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, activeColor)}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( + svgData, + activeColor + )}") !important; }`; - const defaultIconCSS = - `${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, + const defaultIconCSS = `${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, defaultColor)}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( + svgData, + defaultColor + )}") !important; }`; - const disableIconCSS = - `${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, + const disableIconCSS = `${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, disableColor)}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( + svgData, + disableColor + )}") !important; }`; - const hoverIconCSS = - `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, + const hoverIconCSS = `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, hoverColor)}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( + svgData, + hoverColor + )}") !important; }`; - const focusIconCSS = - `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, + const focusIconCSS = `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, focusColor)}") !important; + background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( + svgData, + focusColor + )}") !important; }`; return `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; -} +}; let iconsCSSContent = ''; @@ -76,29 +86,36 @@ for (const [cKEditorIcon, clayIcon] of Object.entries(iconsConfig.icons)) { let svgDataList = []; if (typeof clayIcon === 'string') { - const svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon}.svg`, 'utf8'); + const svgData = fs.readFileSync( + `${sourceIconsPath}/${clayIcon}.svg`, + 'utf8' + ); - iconsCSSContent += getCSS(svgData, cKEditorIcon); + iconsCSSContent += getCSS(svgData, cKEditorIcon); //svgDataList = [fs.readFileSync(`${sourceIconsPath}/${clayIcon}.svg`, 'utf8')]; - } - else { - if (clayIcon.ltr) { - const svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.ltr}.svg`, 'utf8'); - - iconsCSSContent += getCSS(svgData, cKEditorIcon, 'ltr'); + } else { + if (clayIcon.ltr) { + const svgData = fs.readFileSync( + `${sourceIconsPath}/${clayIcon.ltr}.svg`, + 'utf8' + ); + + iconsCSSContent += getCSS(svgData, cKEditorIcon, 'ltr'); } - if (clayIcon.rtl) { - const svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.rtl}.svg`, 'utf8'); + if (clayIcon.rtl) { + const svgData = fs.readFileSync( + `${sourceIconsPath}/${clayIcon.rtl}.svg`, + 'utf8' + ); - iconsCSSContent += getCSS(svgData, cKEditorIcon, 'rtl'); + iconsCSSContent += getCSS(svgData, cKEditorIcon, 'rtl'); } - //directionClass = `.cke_${clayIcon.direction}`; //svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.icon}.svg`, 'utf8'); } - + /* const activeIconCSS = `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, @@ -134,4 +151,4 @@ for (const [cKEditorIcon, clayIcon] of Object.entries(iconsConfig.icons)) { */ } -fs.writeFileSync(outputFile, iconsCSSContent, { flag: 'a'}); \ No newline at end of file +fs.writeFileSync(outputFile, iconsCSSContent, {flag: 'a'}); From caf994078e98f4ec367bd0b201a866a657f012c1 Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Thu, 25 Jun 2020 19:45:10 +0200 Subject: [PATCH 10/14] feat: typo --- ck.sh | 2 +- support/iconsClassesGenerator.js | 38 -------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/ck.sh b/ck.sh index 74f004bd1e..e3e283b0ba 100755 --- a/ck.sh +++ b/ck.sh @@ -58,7 +58,7 @@ case "$COMMAND" in cd ckeditor-dev - # Convert svg icons to png + # Generate svg icons CSS Classes node ../support/iconsClassesGenerator.js skins/moono-lexicon/icons/icons.json skins/moono-lexicon/icons.css if [ -n "$DEBUG" ]; then diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index da67a77ccf..0fc18b80f4 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -92,7 +92,6 @@ for (const [cKEditorIcon, clayIcon] of Object.entries(iconsConfig.icons)) { ); iconsCSSContent += getCSS(svgData, cKEditorIcon); - //svgDataList = [fs.readFileSync(`${sourceIconsPath}/${clayIcon}.svg`, 'utf8')]; } else { if (clayIcon.ltr) { const svgData = fs.readFileSync( @@ -111,44 +110,7 @@ for (const [cKEditorIcon, clayIcon] of Object.entries(iconsConfig.icons)) { iconsCSSContent += getCSS(svgData, cKEditorIcon, 'rtl'); } - - //directionClass = `.cke_${clayIcon.direction}`; - //svgData = fs.readFileSync(`${sourceIconsPath}/${clayIcon.icon}.svg`, 'utf8'); } - - /* - const activeIconCSS = - `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, - ${directionClass} .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, activeColor)}") !important; - }`; - - const defaultIconCSS = - `${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, - ${directionClass} .cke_button .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, defaultColor)}") !important; - }`; - - const disableIconCSS = - `${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, - ${directionClass} .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, disableColor)}") !important; - }`; - - const hoverIconCSS = - `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, - ${directionClass} .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, hoverColor)}") !important; - }`; - - const focusIconCSS = - `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, - ${directionClass} .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon { - background: url("data:image/svg+xml;charset=utf8,${encodeSvgData(svgData, focusColor)}") !important; - }`; - - iconsCSSContent += `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; - */ } fs.writeFileSync(outputFile, iconsCSSContent, {flag: 'a'}); From abd14caca0b3e272948cb6e3add8f85097819320 Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Fri, 26 Jun 2020 08:33:39 +0200 Subject: [PATCH 11/14] feat: add missing rtl icons --- skins/moono-lexicon/icons/icons.json | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/skins/moono-lexicon/icons/icons.json b/skins/moono-lexicon/icons/icons.json index cdf93d26ce..611d61df38 100644 --- a/skins/moono-lexicon/icons/icons.json +++ b/skins/moono-lexicon/icons/icons.json @@ -5,15 +5,23 @@ "align-image-left": "align-image-left", "align-image-right": "align-image-right", "anchor": { - "ltr": "flag-full" + "ltr": "flag-full", + "rtl": "flag-full" }, "blockquote": "quote-right", "bold": "bold", "bulletedlist": { - "ltr": "list-ul" + "ltr": "list-ul", + "rtl": "list-ul" + }, + "copy": { + "ltr": "paste", + "rtl": "paste" + }, + "cut": { + "ltr": "cut", + "rtl": "cut" }, - "copy": "paste", - "cut": "cut", "find": { "ltr": "search", "rtl": "search" @@ -33,7 +41,8 @@ "link": "link", "maximize": "full-size", "numberedlist": { - "ltr": "list-ol" + "ltr": "list-ol", + "rtl": "list-ol" }, "outdent": { "ltr": "indent-less", @@ -46,7 +55,8 @@ "removeformat": "remove-style", "replace": "change-list", "source": { - "ltr":"code" + "ltr":"code", + "rtl":"code" }, "strike": "strikethrough", "subscript": "subscript", From 8119936a8d3156937345d5248619ca1315c5545f Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Fri, 26 Jun 2020 10:28:04 +0200 Subject: [PATCH 12/14] feat: remove only svg fill attribute --- support/iconsClassesGenerator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index 0fc18b80f4..1453a4613f 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -24,7 +24,7 @@ const encodeSvgData = (svgData, color) => { const symbols = /[\r\n%#()<>?\[\\\]^`{|}]/g; return svgData - .replace(/\s+fill="[^"]+"/, '') + .replace(/(]*)( fill="[^"]+")/, '\1') .replace(/\s{1,}<') From 3723b95ce1226168aee4b173aaff8780321cdbfe Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Fri, 26 Jun 2020 11:47:40 +0200 Subject: [PATCH 13/14] feat: format --- ck.sh | 2 +- support/iconsClassesGenerator.js | 42 ++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ck.sh b/ck.sh index e3e283b0ba..5f1f19c939 100755 --- a/ck.sh +++ b/ck.sh @@ -58,7 +58,7 @@ case "$COMMAND" in cd ckeditor-dev - # Generate svg icons CSS Classes + # Generate SVG icons CSS Classes node ../support/iconsClassesGenerator.js skins/moono-lexicon/icons/icons.json skins/moono-lexicon/icons.css if [ -n "$DEBUG" ]; then diff --git a/support/iconsClassesGenerator.js b/support/iconsClassesGenerator.js index 1453a4613f..59209435da 100644 --- a/support/iconsClassesGenerator.js +++ b/support/iconsClassesGenerator.js @@ -27,7 +27,7 @@ const encodeSvgData = (svgData, color) => { .replace(/(]*)( fill="[^"]+")/, '\1') .replace(/\s{1,}<') + .replace(/>\s+<') .replace(/\s{2,}/g, ' ') .replace(symbols, encodeURIComponent) .replace(/\s+/g, '%20'); @@ -36,47 +36,63 @@ const encodeSvgData = (svgData, color) => { const getCSS = (svgData, cKEditorIcon, direction) => { let directionClass = direction ? `.cke_${direction}` : ''; - const activeIconCSS = `${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, + const activeIconCSS = ` + ${directionClass}.cke_hidpi .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button.cke_button_on .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( svgData, activeColor )}") !important; - }`; + } + `; - const defaultIconCSS = `${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, + const defaultIconCSS = ` + ${directionClass}.cke_hidpi .cke_button .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( svgData, defaultColor )}") !important; - }`; + } + `; - const disableIconCSS = `${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, + const disableIconCSS = ` + ${directionClass}.cke_hidpi .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button.cke_button_disabled .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( svgData, disableColor )}") !important; - }`; + } + `; - const hoverIconCSS = `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, + const hoverIconCSS = ` + ${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button:not(.cke_button_disabled):hover .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( svgData, hoverColor )}") !important; - }`; + } + `; - const focusIconCSS = `${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, + const focusIconCSS = ` + ${directionClass}.cke_hidpi .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon, ${directionClass} .cke_button:not(.cke_button_disabled):focus .cke_button__${cKEditorIcon}_icon { background: url("data:image/svg+xml;charset=utf8,${encodeSvgData( svgData, focusColor )}") !important; - }`; - - return `${activeIconCSS} ${defaultIconCSS} ${disableIconCSS} ${hoverIconCSS} ${focusIconCSS}`; + } + `; + + return [ + activeIconCSS, + defaultIconCSS, + disableIconCSS, + hoverIconCSS, + focusIconCSS, + ].join('\n\n'); }; let iconsCSSContent = ''; From 7d214a77375e3d7c88c83898483c2b4b581e5713 Mon Sep 17 00:00:00 2001 From: Carlos Lancha Date: Mon, 29 Jun 2020 13:23:16 +0200 Subject: [PATCH 14/14] feat: add imageselector icon --- skins/moono-lexicon/icons/icons.json | 1 + 1 file changed, 1 insertion(+) diff --git a/skins/moono-lexicon/icons/icons.json b/skins/moono-lexicon/icons/icons.json index 611d61df38..4f733e6edc 100644 --- a/skins/moono-lexicon/icons/icons.json +++ b/skins/moono-lexicon/icons/icons.json @@ -29,6 +29,7 @@ "hidden": "hidden", "horizontalrule": "separator", "image": "picture", + "imageselector": "picture", "indent": { "ltr": "indent-more", "rtl": "indent-less"