diff --git a/components/Editor.js b/components/Editor.js index bcd60d8..bf54a06 100644 --- a/components/Editor.js +++ b/components/Editor.js @@ -98,18 +98,12 @@ class Editor extends React.Component { updateState = updates => { this.setState(updates, () => { - // eslint-disable-next-line no-unused-vars - const { highlights, ...state } = this.state - !this.gist && this.props.onUpdate(state) + !this.gist && this.props.onUpdate(this.state) }) } updateCode = code => this.updateState({ code }) - updateTheme = theme => this.updateState({ theme }) - - updateHighlights = highlights => this.updateState({ highlights }) - async getCarbonImage( { format, @@ -290,13 +284,7 @@ class Editor extends React.Component { return (
- + { @@ -63,10 +64,10 @@ class Themes extends React.PureComponent { const name = getCustomName(newThemes) - this.selectedTheme = newThemes.find(({ id }) => id === this.props.theme) || DEFAULT_THEME + this.selectedTheme = newThemes.find(({ id }) => id === theme) || DEFAULT_THEME - if (Object.keys(this.props.highlights).length === 0) { - this.props.updateHighlights(this.selectedTheme.highlights) + if (Object.keys(highlights).length === 0) { + update({ highlights: this.selectedTheme.highlights }) } return { @@ -77,18 +78,18 @@ class Themes extends React.PureComponent { } componentDidUpdate(prevProps) { - const { isVisible, theme, updateHighlights } = this.props + const { isVisible, theme, update } = this.props const { themes } = this.state if (prevProps.isVisible && !isVisible) { this.setState({ name: getCustomName(themes) }) - updateHighlights(themes.find(({ id }) => id === theme).highlights) + update({ highlights: themes.find(({ id }) => id === theme).highlights }) } } applyPreset = preset => { this.setState(({ themes }) => { - this.props.updateHighlights(themes.find(({ id }) => id === preset).highlights) + this.props.update({ highlights: themes.find(({ id }) => id === preset).highlights }) return { preset } @@ -96,15 +97,14 @@ class Themes extends React.PureComponent { } handleChange = ({ id }) => { - const { toggleVisibility, updateTheme, updateHighlights } = this.props + const { toggleVisibility, update } = this.props const { themes } = this.state if (id === 'create') { toggleVisibility() this.dropdown.current.closeMenu() } else { - updateTheme(id) - updateHighlights(themes.find(theme => theme.id === id).highlights) + update({ theme: id, highlights: themes.find(theme => theme.id === id).highlights }) } } @@ -116,14 +116,16 @@ class Themes extends React.PureComponent { })) updateHighlight = ({ rgb }) => - this.props.updateHighlights({ - ...this.props.highlights, - [this.state.selected]: stringifyRGBA(rgb) + this.props.update({ + highlights: { + ...this.props.highlights, + [this.state.selected]: stringifyRGBA(rgb) + } }) removeTheme = id => event => { const { themes } = this.state - const { theme, updateHighlights, updateTheme } = this.props + const { theme, update } = this.props event.stopPropagation() @@ -132,15 +134,14 @@ class Themes extends React.PureComponent { saveThemes(localStorage, newThemes.filter(({ custom }) => custom)) if (theme === id) { - updateTheme(DEFAULT_THEME.id) - updateHighlights(DEFAULT_THEME.highlights) + update({ theme: DEFAULT_THEME.id, highlights: DEFAULT_THEME.highlights }) } else { this.setState({ themes: newThemes }) } } createTheme = () => { - const { highlights, updateTheme } = this.props + const { highlights, update } = this.props const { themes, name } = this.state const id = `theme:${generateId()}` @@ -156,7 +157,7 @@ class Themes extends React.PureComponent { saveThemes(localStorage, customThemes) - updateTheme(id) + update({ theme: id }) } itemWrapper = props => diff --git a/pages/index.js b/pages/index.js index 0762e57..b25e966 100644 --- a/pages/index.js +++ b/pages/index.js @@ -23,10 +23,16 @@ class Index extends React.Component { onEditorUpdate = debounce( state => { - updateRouteState(this.props.router, state) + updateRouteState(this.props.router, omit(state, ['highlights'])) saveSettings( localStorage, - omit(state, ['code', 'backgroundImage', 'backgroundImageSelection', 'filename']) + omit(state, [ + 'code', + 'backgroundImage', + 'backgroundImageSelection', + 'filename', + 'highlights' + ]) ) }, 750,