From 9de13737460984c30191053a3c8fbd31dbc8e0eb Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Sat, 5 Nov 2022 14:11:53 +0200 Subject: [PATCH 1/7] Change image tunes format --- src/index.js | 70 +++++++++++++++++++++++------- src/tunes.js | 120 --------------------------------------------------- 2 files changed, 54 insertions(+), 136 deletions(-) delete mode 100644 src/tunes.js diff --git a/src/index.js b/src/index.js index 53d2ec49..64fe1b8a 100644 --- a/src/index.js +++ b/src/index.js @@ -41,13 +41,16 @@ * @property {string} file.url — image URL */ -// eslint-disable-next-line -import css from './index.css'; +import './index.css'; + import Ui from './ui'; -import Tunes from './tunes'; import ToolboxIcon from './svg/toolbox.svg'; import Uploader from './uploader'; +import bgIcon from './svg/background.svg'; +import borderIcon from './svg/border.svg'; +import stretchedIcon from './svg/stretched.svg'; + /** * @typedef {object} ImageConfig * @description Config supported by Tool @@ -98,6 +101,34 @@ export default class ImageTool { }; } + /** + * Available image tools + * + * @returns {Array} + */ + static get tunes() { + return [ + { + name: 'withBorder', + icon: borderIcon, + title: 'With border', + toggle: true, + }, + { + name: 'stretched', + icon: stretchedIcon, + title: 'Stretch image', + toggle: true, + }, + { + name: 'withBackground', + icon: bgIcon, + title: 'With background', + toggle: true, + }, + ]; + } + /** * @param {object} tool - tool properties got from editor.js * @param {ImageToolData} tool.data - previously saved data @@ -149,15 +180,6 @@ export default class ImageTool { readOnly, }); - /** - * Module for working with tunes - */ - this.tunes = new Tunes({ - api, - actions: this.config.actions, - onChange: (tuneName) => this.tuneToggled(tuneName), - }); - /** * Set saved state */ @@ -203,14 +225,30 @@ export default class ImageTool { } /** - * Makes buttons with tunes: add background, add border, stretch image + * Returns configuration for block tunes: add background, add border, stretch image * * @public * - * @returns {Element} + * @returns {Array} */ renderSettings() { - return this.tunes.render(this.data); + const tunes = ImageTool.tunes.concat(this.config.actions); + + return tunes.map(tune => ({ + icon: tune.icon, + label: this.api.i18n.t(tune.title), + name: tune.name, + toggle: tune.toggle, + isActive: this.data[tune.name], + onActivate: () => { + if (typeof tune.action === 'function') { + tune.action(tune.name); + + return; + } + this.tuneToggled(tune.name); + }, + })); } /** @@ -311,7 +349,7 @@ export default class ImageTool { this._data.caption = data.caption || ''; this.ui.fillCaption(this._data.caption); - Tunes.tunes.forEach(({ name: tune }) => { + ImageTool.tunes.forEach(({ name: tune }) => { const value = typeof data[tune] !== 'undefined' ? data[tune] === true || data[tune] === 'true' : false; this.setTune(tune, value); diff --git a/src/tunes.js b/src/tunes.js deleted file mode 100644 index 2aa38e6e..00000000 --- a/src/tunes.js +++ /dev/null @@ -1,120 +0,0 @@ -import { make } from './ui'; -import bgIcon from './svg/background.svg'; -import borderIcon from './svg/border.svg'; -import stretchedIcon from './svg/stretched.svg'; - -/** - * Working with Block Tunes - */ -export default class Tunes { - /** - * @param {object} tune - image tool Tunes managers - * @param {object} tune.api - Editor API - * @param {object} tune.actions - list of user defined tunes - * @param {Function} tune.onChange - tune toggling callback - */ - constructor({ api, actions, onChange }) { - this.api = api; - this.actions = actions; - this.onChange = onChange; - this.buttons = []; - } - - /** - * Available Image tunes - * - * @returns {{name: string, icon: string, title: string}[]} - */ - static get tunes() { - return [ - { - name: 'withBorder', - icon: borderIcon, - title: 'With border', - }, - { - name: 'stretched', - icon: stretchedIcon, - title: 'Stretch image', - }, - { - name: 'withBackground', - icon: bgIcon, - title: 'With background', - }, - ]; - } - - /** - * Styles - * - * @returns {{wrapper: string, buttonBase: *, button: string, buttonActive: *}} - */ - get CSS() { - return { - wrapper: '', - buttonBase: this.api.styles.settingsButton, - button: 'image-tool__tune', - buttonActive: this.api.styles.settingsButtonActive, - }; - } - - /** - * Makes buttons with tunes: add background, add border, stretch image - * - * @param {ImageToolData} toolData - generate Elements of tunes - * @returns {Element} - */ - render(toolData) { - const wrapper = make('div', this.CSS.wrapper); - - this.buttons = []; - - const tunes = Tunes.tunes.concat(this.actions); - - tunes.forEach(tune => { - const title = this.api.i18n.t(tune.title); - const el = make('div', [this.CSS.buttonBase, this.CSS.button], { - innerHTML: tune.icon, - title, - }); - - el.addEventListener('click', () => { - this.tuneClicked(tune.name, tune.action); - }); - - el.dataset.tune = tune.name; - el.classList.toggle(this.CSS.buttonActive, toolData[tune.name]); - - this.buttons.push(el); - - this.api.tooltip.onHover(el, title, { - placement: 'top', - }); - - wrapper.appendChild(el); - }); - - return wrapper; - } - - /** - * Clicks to one of the tunes - * - * @param {string} tuneName - clicked tune name - * @param {Function} customFunction - function to execute on click - */ - tuneClicked(tuneName, customFunction) { - if (typeof customFunction === 'function') { - if (!customFunction(tuneName)) { - return false; - } - } - - const button = this.buttons.find(el => el.dataset.tune === tuneName); - - button.classList.toggle(this.CSS.buttonActive, !button.classList.contains(this.CSS.buttonActive)); - - this.onChange(tuneName); - } -} From d684cddccff6c1573576cb03863581d62b23f48c Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Sat, 5 Nov 2022 16:15:07 +0200 Subject: [PATCH 2/7] Update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1c44f3bf..e050c2eb 100644 --- a/README.md +++ b/README.md @@ -118,15 +118,15 @@ actions: [ name: 'new_button', icon: '...', title: 'New Button', + toggle: true, action: (name) => { alert(`${name} button clicked`); - return false; } } ] ``` -By adding `return true` or `return false` at the end of your custom actions, you can determine wether the icon in the tool's settings is toggled or not. This is helpfull for actions that do not toggle between states, but execute a different action. -If toggling is enabled, an `image-tool--[button name]` class will be appended and removed from the container. + +**_NOTE:_** return value of `action` callback for settings whether action button should be toggled or not is *deprecated*. Consider using `toggle` option instead. ## Output data From d8b95f9dcd9b8b28ada27a0d6040e06cfce0ba0d Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Sat, 5 Nov 2022 17:53:24 +0200 Subject: [PATCH 3/7] Add comments --- src/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/index.js b/src/index.js index 64fe1b8a..060e17f4 100644 --- a/src/index.js +++ b/src/index.js @@ -232,6 +232,8 @@ export default class ImageTool { * @returns {Array} */ renderSettings() { + // Merge default tunes with the ones that might be added by user + // @see https://github.com/editor-js/image/pull/49 const tunes = ImageTool.tunes.concat(this.config.actions); return tunes.map(tune => ({ @@ -241,6 +243,7 @@ export default class ImageTool { toggle: tune.toggle, isActive: this.data[tune.name], onActivate: () => { + /* If it'a user defined tune, execute it's callback stored in action property */ if (typeof tune.action === 'function') { tune.action(tune.name); From d4c09353dd705097ffcf90a41f19ce2982a98fa4 Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Mon, 7 Nov 2022 20:43:07 +0200 Subject: [PATCH 4/7] Update icons --- package.json | 3 +++ src/index.js | 13 +++++-------- src/svg/background.svg | 1 - src/svg/border.svg | 1 - src/svg/button-icon.svg | 3 --- src/svg/stretched.svg | 1 - src/svg/toolbox.svg | 1 - src/ui.js | 4 ++-- yarn.lock | 5 +++++ 9 files changed, 15 insertions(+), 17 deletions(-) delete mode 100644 src/svg/background.svg delete mode 100644 src/svg/border.svg delete mode 100644 src/svg/button-icon.svg delete mode 100644 src/svg/stretched.svg delete mode 100644 src/svg/toolbox.svg diff --git a/package.json b/package.json index fc871d58..1e5edbdb 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,8 @@ "svg-inline-loader": "^0.8.0", "webpack": "^4.29.5", "webpack-cli": "^3.2.3" + }, + "dependencies": { + "@codexteam/icons": "^0.0.3" } } diff --git a/src/index.js b/src/index.js index 060e17f4..700bee61 100644 --- a/src/index.js +++ b/src/index.js @@ -44,12 +44,9 @@ import './index.css'; import Ui from './ui'; -import ToolboxIcon from './svg/toolbox.svg'; import Uploader from './uploader'; -import bgIcon from './svg/background.svg'; -import borderIcon from './svg/border.svg'; -import stretchedIcon from './svg/stretched.svg'; +import { IconAddBorder, IconStretch, IconAddBackground, IconPicture } from '@codexteam/icons'; /** * @typedef {object} ImageConfig @@ -96,7 +93,7 @@ export default class ImageTool { */ static get toolbox() { return { - icon: ToolboxIcon, + icon: IconPicture, title: 'Image', }; } @@ -110,19 +107,19 @@ export default class ImageTool { return [ { name: 'withBorder', - icon: borderIcon, + icon: IconAddBorder, title: 'With border', toggle: true, }, { name: 'stretched', - icon: stretchedIcon, + icon: IconStretch, title: 'Stretch image', toggle: true, }, { name: 'withBackground', - icon: bgIcon, + icon: IconAddBackground, title: 'With background', toggle: true, }, diff --git a/src/svg/background.svg b/src/svg/background.svg deleted file mode 100644 index 89fe4e75..00000000 --- a/src/svg/background.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/svg/border.svg b/src/svg/border.svg deleted file mode 100644 index 8165f865..00000000 --- a/src/svg/border.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/svg/button-icon.svg b/src/svg/button-icon.svg deleted file mode 100644 index 6fe4c8e6..00000000 --- a/src/svg/button-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/svg/stretched.svg b/src/svg/stretched.svg deleted file mode 100644 index d67ba06e..00000000 --- a/src/svg/stretched.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/svg/toolbox.svg b/src/svg/toolbox.svg deleted file mode 100644 index 2948196f..00000000 --- a/src/svg/toolbox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/ui.js b/src/ui.js index 9872aedb..dd727d5e 100644 --- a/src/ui.js +++ b/src/ui.js @@ -1,4 +1,4 @@ -import buttonIcon from './svg/button-icon.svg'; +import { IconPicture } from '@codexteam/icons'; /** * Class for working with UI: @@ -110,7 +110,7 @@ export default class Ui { createFileButton() { const button = make('div', [ this.CSS.button ]); - button.innerHTML = this.config.buttonContent || `${buttonIcon} ${this.api.i18n.t('Select an Image')}`; + button.innerHTML = this.config.buttonContent || `${IconPicture} ${this.api.i18n.t('Select an Image')}`; button.addEventListener('click', () => { this.onSelectFile(); diff --git a/yarn.lock b/yarn.lock index 3ef32b35..0325f3c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -674,6 +674,11 @@ resolved "https://registry.yarnpkg.com/@codexteam/ajax/-/ajax-4.2.0.tgz#f89faecbaf8cd496bfd77ef20a7fe99ee20ca9a3" integrity sha512-54r/HZirqBPEV8rM9gZh570RCwG6M/iDAXT9Q9eGuMo9KZU49tw1dEDHjYsResGckfCsaymDqg4GnhfrBtX9JQ== +"@codexteam/icons@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@codexteam/icons/-/icons-0.0.3.tgz#921f78aef1ad13a49d0ef63a3f567222bee7fe59" + integrity sha512-UMVwaYWkoVFhZNO0MEETwlZsJjsyr+Q3btOlD01xcWKW6EKisn41oB8bF/n6g4mC+WxV31KFPztxmxojzDbWAw== + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" From 818d642ef9e6e8df3acc0f2636f3e3ab7febb746 Mon Sep 17 00:00:00 2001 From: Tanya Fomina Date: Mon, 7 Nov 2022 21:36:23 +0200 Subject: [PATCH 5/7] Update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1e5edbdb..3c0dbe9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/image", - "version": "2.6.2", + "version": "2.7.0", "keywords": [ "codex editor", "tool", From bb794e9cbccc9dea23d91d4fb6eb3fa8f9163879 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Wed, 30 Nov 2022 00:40:16 +0400 Subject: [PATCH 6/7] eslint errors fixed --- src/ui.js | 24 +----------------------- src/uploader.js | 10 +--------- src/utils/dom.js | 23 +++++++++++++++++++++++ src/utils/isPromise.js | 9 +++++++++ 4 files changed, 34 insertions(+), 32 deletions(-) create mode 100644 src/utils/dom.js create mode 100644 src/utils/isPromise.js diff --git a/src/ui.js b/src/ui.js index dd727d5e..8609ef21 100644 --- a/src/ui.js +++ b/src/ui.js @@ -1,4 +1,5 @@ import { IconPicture } from '@codexteam/icons'; +import { make } from './utils/dom'; /** * Class for working with UI: @@ -250,26 +251,3 @@ export default class Ui { } } -/** - * Helper for making Elements with attributes - * - * @param {string} tagName - new Element tag name - * @param {Array|string} classNames - list or name of CSS class - * @param {object} attributes - any attributes - * @returns {Element} - */ -export const make = function make(tagName, classNames = null, attributes = {}) { - const el = document.createElement(tagName); - - if (Array.isArray(classNames)) { - el.classList.add(...classNames); - } else if (classNames) { - el.classList.add(classNames); - } - - for (const attrName in attributes) { - el[attrName] = attributes[attrName]; - } - - return el; -}; diff --git a/src/uploader.js b/src/uploader.js index 98752a41..bfa6e2a5 100644 --- a/src/uploader.js +++ b/src/uploader.js @@ -1,4 +1,5 @@ import ajax from '@codexteam/ajax'; +import isPromise from './utils/isPromise'; /** * Module for file uploading. Handle 3 scenarios: @@ -176,12 +177,3 @@ export default class Uploader { } } -/** - * Check if passed object is a Promise - * - * @param {*} object - object to check - * @returns {boolean} - */ -function isPromise(object) { - return object && typeof object.then === "function"; -} diff --git a/src/utils/dom.js b/src/utils/dom.js new file mode 100644 index 00000000..0c38df27 --- /dev/null +++ b/src/utils/dom.js @@ -0,0 +1,23 @@ +/** + * Helper for making Elements with attributes + * + * @param {string} tagName - new Element tag name + * @param {Array|string} classNames - list or name of CSS class + * @param {object} attributes - any attributes + * @returns {Element} + */ +export function make(tagName, classNames = null, attributes = {}) { + const el = document.createElement(tagName); + + if (Array.isArray(classNames)) { + el.classList.add(...classNames); + } else if (classNames) { + el.classList.add(classNames); + } + + for (const attrName in attributes) { + el[attrName] = attributes[attrName]; + } + + return el; +}; diff --git a/src/utils/isPromise.js b/src/utils/isPromise.js new file mode 100644 index 00000000..616916f4 --- /dev/null +++ b/src/utils/isPromise.js @@ -0,0 +1,9 @@ +/** + * Check if passed object is a Promise + * + * @param {*} object - object to check + * @returns {boolean} + */ +export default function isPromise(object) { + return object && typeof object.then === 'function'; +} From eb2d28749c22160853f204181bd056f446102846 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Wed, 30 Nov 2022 00:48:58 +0400 Subject: [PATCH 7/7] update icons --- package.json | 2 +- src/index.css | 11 +++++++++++ yarn.lock | 28 +++------------------------- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 3c0dbe9a..ed8f2752 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,6 @@ "webpack-cli": "^3.2.3" }, "dependencies": { - "@codexteam/icons": "^0.0.3" + "@codexteam/icons": "^0.0.6" } } diff --git a/src/index.css b/src/index.css index 1f912593..1a96889d 100644 --- a/src/index.css +++ b/src/index.css @@ -135,6 +135,17 @@ } } } + + .cdx-button { + display: flex; + align-items: center; + justify-content: center; + + svg { + height: auto; + margin: 0 6px 0 0; + } + } } @keyframes image-preloader-spin { diff --git a/yarn.lock b/yarn.lock index 0325f3c7..8cbe6d38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -672,12 +672,10 @@ "@codexteam/ajax@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@codexteam/ajax/-/ajax-4.2.0.tgz#f89faecbaf8cd496bfd77ef20a7fe99ee20ca9a3" - integrity sha512-54r/HZirqBPEV8rM9gZh570RCwG6M/iDAXT9Q9eGuMo9KZU49tw1dEDHjYsResGckfCsaymDqg4GnhfrBtX9JQ== -"@codexteam/icons@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@codexteam/icons/-/icons-0.0.3.tgz#921f78aef1ad13a49d0ef63a3f567222bee7fe59" - integrity sha512-UMVwaYWkoVFhZNO0MEETwlZsJjsyr+Q3btOlD01xcWKW6EKisn41oB8bF/n6g4mC+WxV31KFPztxmxojzDbWAw== +"@codexteam/icons@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@codexteam/icons/-/icons-0.0.6.tgz#5553ada48dddf5940851ccc142cfe17835c36ad3" "@types/color-name@^1.1.1": version "1.1.1" @@ -1089,7 +1087,6 @@ bluebird@^3.5.5: bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== brace-expansion@^1.1.7: version "1.1.11" @@ -1116,7 +1113,6 @@ braces@^2.3.1, braces@^2.3.2: brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" @@ -1174,7 +1170,6 @@ browserify-zlib@^0.2.0: browserslist@^4.8.5, browserslist@^4.9.1: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: caniuse-lite "^1.0.30001219" colorette "^1.2.2" @@ -1263,7 +1258,6 @@ camelcase@^5.0.0, camelcase@^5.3.1: caniuse-lite@^1.0.30001219: version "1.0.30001228" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" - integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== caseless@~0.12.0: version "0.12.0" @@ -1380,7 +1374,6 @@ color-name@~1.1.4: colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" @@ -1664,12 +1657,10 @@ ecc-jsbn@~0.1.1: electron-to-chromium@^1.3.723: version "1.3.736" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" - integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== elliptic@^6.0.0: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -1756,7 +1747,6 @@ es-to-primitive@^1.2.1: escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" @@ -2069,7 +2059,6 @@ fast-levenshtein@~2.0.6: figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== figures@^3.0.0: version "3.2.0" @@ -2389,7 +2378,6 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -2397,7 +2385,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -2412,7 +2399,6 @@ homedir-polyfill@^1.0.1: hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== http-signature@~1.2.0: version "1.2.0" @@ -2521,7 +2507,6 @@ inherits@2.0.3: ini@^1.3.4, ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inquirer@^7.0.0: version "7.1.0" @@ -2905,7 +2890,6 @@ locate-path@^3.0.0: lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loose-envify@^1.0.0: version "1.4.0" @@ -3014,12 +2998,10 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@^3.0.4: version "3.0.4" @@ -3145,7 +3127,6 @@ node-libs-browser@^2.2.1: node-releases@^1.1.71: version "1.1.72" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" - integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== normalize-package-data@^2.3.2: version "2.5.0" @@ -3392,7 +3373,6 @@ path-key@^2.0.0, path-key@^2.0.1: path-parse@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^2.0.0: version "2.0.0" @@ -4076,7 +4056,6 @@ sshpk@^1.7.0: ssri@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" @@ -4606,7 +4585,6 @@ xtend@^4.0.0, xtend@~4.0.1: y18n@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yallist@^3.0.2: version "3.1.1"