mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-16 14:42:45 +00:00
Display name of write in theme next to write-in
Clear user's active ThemeBundle when an incomplete/broken/invalid writein. Needs theming help.
This commit is contained in:
@@ -454,6 +454,7 @@ const Editor = createClass({
|
|||||||
rerenderParent={this.rerenderParent} />
|
rerenderParent={this.rerenderParent} />
|
||||||
<MetadataEditor
|
<MetadataEditor
|
||||||
metadata={this.props.brew}
|
metadata={this.props.brew}
|
||||||
|
themeBundle={this.props.themeBundle}
|
||||||
onChange={this.props.onMetaChange}
|
onChange={this.props.onMetaChange}
|
||||||
reportError={this.props.reportError}
|
reportError={this.props.reportError}
|
||||||
userThemes={this.props.userThemes}/>
|
userThemes={this.props.userThemes}/>
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ const MetadataEditor = createClass({
|
|||||||
return {
|
return {
|
||||||
showThumbnail : true,
|
showThumbnail : true,
|
||||||
showThemeWritein : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] ? false : true,
|
showThemeWritein : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] ? false : true,
|
||||||
lastThemePulldown : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] ? mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] : '',
|
lastThemePulldown : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] ? mergedThemes[this.props.metadata.renderer][this.props.metadata.theme].path : '',
|
||||||
lastThemeWriteIn : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] ? '' : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme]
|
lastThemeWriteIn : mergedThemes[this.props.metadata.renderer][this.props.metadata.theme] ? '' : this.props.metadata.theme
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ const MetadataEditor = createClass({
|
|||||||
|
|
||||||
const currentRenderer = this.props.metadata.renderer;
|
const currentRenderer = this.props.metadata.renderer;
|
||||||
const currentTheme = mergedThemes[`${_.upperFirst(this.props.metadata.renderer)}`][this.props.metadata.theme]
|
const currentTheme = mergedThemes[`${_.upperFirst(this.props.metadata.renderer)}`][this.props.metadata.theme]
|
||||||
?? { name: `!!! Manually selected theme !!! ID=${this.props.metadata.theme}` };
|
?? { name: `${this.props.themeBundle?.path || ''}`, author: '!!!' };
|
||||||
let dropdown;
|
let dropdown;
|
||||||
|
|
||||||
if(currentRenderer == 'legacy') {
|
if(currentRenderer == 'legacy') {
|
||||||
@@ -273,12 +273,15 @@ const MetadataEditor = createClass({
|
|||||||
|
|
||||||
renderThemeWritein : function(){
|
renderThemeWritein : function(){
|
||||||
if(!this.state.showThemeWritein) return;
|
if(!this.state.showThemeWritein) return;
|
||||||
return <input type='text'
|
return <div>
|
||||||
|
<input type='text'
|
||||||
default=''
|
default=''
|
||||||
placeholder='Enter share id'
|
placeholder='Enter share id'
|
||||||
className='value'
|
className='value'
|
||||||
defaultValue={this.state.lastThemeWriteIn || this.props.metadata.theme}
|
defaultValue={this.state.lastThemeWriteIn || this.props.metadata.theme}
|
||||||
onChange={(e)=>this.handleThemeWritein(e)} />;
|
onChange={(e)=>this.handleThemeWritein(e)} />
|
||||||
|
<span class='userThemeName'>{`${this.state.lastThemeWriteIn ? this.props.themeBundle?.path || '' : ''}`}</span>
|
||||||
|
</div>;
|
||||||
},
|
},
|
||||||
|
|
||||||
renderLanguageDropdown : function(){
|
renderLanguageDropdown : function(){
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
@import 'naturalcrit/styles/colors.less';
|
@import 'naturalcrit/styles/colors.less';
|
||||||
|
|
||||||
|
.userThemeName {
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.metadataEditor {
|
.metadataEditor {
|
||||||
position : absolute;
|
position : absolute;
|
||||||
|
|||||||
@@ -443,6 +443,7 @@ const EditPage = createClass({
|
|||||||
reportError={this.errorReported}
|
reportError={this.errorReported}
|
||||||
renderer={this.state.brew.renderer}
|
renderer={this.state.brew.renderer}
|
||||||
userThemes={this.props.userThemes}
|
userThemes={this.props.userThemes}
|
||||||
|
themeBundle={this.state.themeBundle}
|
||||||
snippetBundle={this.state.themeBundle.snippets}
|
snippetBundle={this.state.themeBundle.snippets}
|
||||||
updateBrew={this.updateBrew}
|
updateBrew={this.updateBrew}
|
||||||
onCursorPageChange={this.handleEditorCursorPageChange}
|
onCursorPageChange={this.handleEditorCursorPageChange}
|
||||||
|
|||||||
@@ -279,6 +279,7 @@ const api = {
|
|||||||
let currentTheme;
|
let currentTheme;
|
||||||
const completeStyles = [];
|
const completeStyles = [];
|
||||||
const completeSnippets = [];
|
const completeSnippets = [];
|
||||||
|
let themePath = '';
|
||||||
|
|
||||||
while (req.params.id) {
|
while (req.params.id) {
|
||||||
//=== User Themes ===//
|
//=== User Themes ===//
|
||||||
@@ -292,6 +293,7 @@ const api = {
|
|||||||
|
|
||||||
currentTheme = req.brew;
|
currentTheme = req.brew;
|
||||||
splitTextStyleAndMetadata(currentTheme);
|
splitTextStyleAndMetadata(currentTheme);
|
||||||
|
if(themePath === '') themePath = currentTheme.title;
|
||||||
|
|
||||||
// If there is anything in the snippets or style members, append them to the appropriate array
|
// If there is anything in the snippets or style members, append them to the appropriate array
|
||||||
// if(currentTheme?.snippets) completeSnippets.push(JSON.parse(currentTheme.snippets));
|
// if(currentTheme?.snippets) completeSnippets.push(JSON.parse(currentTheme.snippets));
|
||||||
@@ -301,6 +303,7 @@ const api = {
|
|||||||
req.params.renderer = currentTheme.renderer;
|
req.params.renderer = currentTheme.renderer;
|
||||||
} else {
|
} else {
|
||||||
//=== Static Themes ===//
|
//=== Static Themes ===//
|
||||||
|
if(themePath === '') themePath = req.params.id;
|
||||||
const localSnippets = `${req.params.renderer}_${req.params.id}`; // Just log the name for loading on client
|
const localSnippets = `${req.params.renderer}_${req.params.id}`; // Just log the name for loading on client
|
||||||
const localStyle = `@import url(\"/themes/${req.params.renderer}/${req.params.id}/style.css\");`;
|
const localStyle = `@import url(\"/themes/${req.params.renderer}/${req.params.id}/style.css\");`;
|
||||||
completeSnippets.push(localSnippets);
|
completeSnippets.push(localSnippets);
|
||||||
@@ -313,7 +316,8 @@ const api = {
|
|||||||
const returnObj = {
|
const returnObj = {
|
||||||
// Reverse the order of the arrays so they are listed oldest parent to youngest child.
|
// Reverse the order of the arrays so they are listed oldest parent to youngest child.
|
||||||
styles : completeStyles.reverse(),
|
styles : completeStyles.reverse(),
|
||||||
snippets : completeSnippets.reverse()
|
snippets : completeSnippets.reverse(),
|
||||||
|
path : themePath
|
||||||
};
|
};
|
||||||
|
|
||||||
res.setHeader('Content-Type', 'application/json');
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
|||||||
@@ -44,8 +44,13 @@ const fetchThemeBundle = async (obj, renderer, theme)=>{
|
|||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
obj.setState({ error: err });
|
obj.setState({ error: err });
|
||||||
});
|
});
|
||||||
if(!res) return;
|
if(!res) {
|
||||||
|
obj.setState((prevState)=>({
|
||||||
|
...prevState,
|
||||||
|
themeBundle : {}
|
||||||
|
}));
|
||||||
|
return;
|
||||||
|
}
|
||||||
const themeBundle = res.body;
|
const themeBundle = res.body;
|
||||||
themeBundle.joinedStyles = themeBundle.styles.map((style)=>`<style>${style}</style>`).join('\n\n');
|
themeBundle.joinedStyles = themeBundle.styles.map((style)=>`<style>${style}</style>`).join('\n\n');
|
||||||
obj.setState((prevState)=>({
|
obj.setState((prevState)=>({
|
||||||
@@ -54,8 +59,14 @@ const fetchThemeBundle = async (obj, renderer, theme)=>{
|
|||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const fetchBrewAsThemeJSON = async (renderer, theme)=>{
|
||||||
|
if(!renderer || !theme) return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
splitTextStyleAndMetadata,
|
splitTextStyleAndMetadata,
|
||||||
printCurrentBrew,
|
printCurrentBrew,
|
||||||
fetchThemeBundle,
|
fetchThemeBundle,
|
||||||
|
fetchBrewAsThemeJSON
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user