mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-31 13:02:38 +00:00
Move most common "handler" functions (textChange/splitMoves/etc.)
This commit is contained in:
@@ -27,6 +27,66 @@ const BaseEditPage = (props)=>{
|
|||||||
const [currentEditorCursorPageNum, setCurrentEditorCursorPageNum] = useState(1);
|
const [currentEditorCursorPageNum, setCurrentEditorCursorPageNum] = useState(1);
|
||||||
const [currentBrewRendererPageNum, setCurrentBrewRendererPageNum] = useState(1);
|
const [currentBrewRendererPageNum, setCurrentBrewRendererPageNum] = useState(1);
|
||||||
const [themeBundle, setThemeBundle] = useState({});
|
const [themeBundle, setThemeBundle] = useState({});
|
||||||
|
|
||||||
|
const editorRef = useRef(null);
|
||||||
|
|
||||||
|
const handleSplitMove = ()=>{
|
||||||
|
editorRef.current.update();
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleEditorViewPageChange = (pageNumber)=>{
|
||||||
|
setCurrentEditorViewPageNum(pageNumber);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleEditorCursorPageChange = (pageNumber)=>{
|
||||||
|
setCurrentEditorCursorPageNum(pageNumber);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleBrewRendererPageChange = (pageNumber)=>{
|
||||||
|
setCurrentBrewRendererPageNum(pageNumber);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleTextChange = (text)=>{
|
||||||
|
//If there are HTML errors, run the validator on every change to give quick feedback
|
||||||
|
if(htmlErrors.length)
|
||||||
|
htmlErrors = Markdown.validate(text);
|
||||||
|
|
||||||
|
setHTMLErrors(htmlErrors);
|
||||||
|
setBrew((prevBrew) => ({ ...prevBrew, text }));
|
||||||
|
|
||||||
|
// TODO: ONLY ON /NEW PAGE
|
||||||
|
localStorage.setItem(BREWKEY, text);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleStyleChange = (style)=>{
|
||||||
|
setBrew((prevBrew) => ({ ...prevBrew, style }));
|
||||||
|
|
||||||
|
if(props.useLocalStorage)
|
||||||
|
localStorage.setItem(STYLEKEY, style);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSnipChange = (snippet)=>{
|
||||||
|
setBrew((prevBrew) => ({ ...prevBrew, snippets: snippet }));
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleMetaChange = (metadata, field=undefined)=>{
|
||||||
|
if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
|
||||||
|
fetchThemeBundle(setError, setThemeBundle, metadata.renderer, metadata.theme);
|
||||||
|
|
||||||
|
setBrew((prevBrew) => ({ ...prevBrew, ...metadata }));
|
||||||
|
|
||||||
|
if(props.useLocalStorage)
|
||||||
|
localStorage.setItem(METAKEY, JSON.stringify({
|
||||||
|
'renderer' : metadata.renderer,
|
||||||
|
'theme' : metadata.theme,
|
||||||
|
'lang' : metadata.lang
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
const clearError = ()=>{
|
||||||
|
setError(null);
|
||||||
|
setIsSaving(false);
|
||||||
|
};
|
||||||
return (
|
return (
|
||||||
<div className={`sitePage ${props.className || ''}`}>
|
<div className={`sitePage ${props.className || ''}`}>
|
||||||
<Navbar>
|
<Navbar>
|
||||||
|
|||||||
@@ -49,28 +49,6 @@ const HomePage = createClass({
|
|||||||
this.setState({ isSaving: false, error: err });
|
this.setState({ isSaving: false, error: err });
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleSplitMove : function(){
|
|
||||||
this.editor.current.update();
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEditorViewPageChange : function(pageNumber){
|
|
||||||
this.setState({ currentEditorViewPageNum: pageNumber });
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEditorCursorPageChange : function(pageNumber){
|
|
||||||
this.setState({ currentEditorCursorPageNum: pageNumber });
|
|
||||||
},
|
|
||||||
|
|
||||||
handleBrewRendererPageChange : function(pageNumber){
|
|
||||||
this.setState({ currentBrewRendererPageNum: pageNumber });
|
|
||||||
},
|
|
||||||
|
|
||||||
handleTextChange : function(text){
|
|
||||||
this.setState((prevState)=>({
|
|
||||||
brew : { ...prevState.brew, text: text },
|
|
||||||
}));
|
|
||||||
},
|
|
||||||
|
|
||||||
renderSaveButton : function(){
|
renderSaveButton : function(){
|
||||||
if(this.state.isSaving){
|
if(this.state.isSaving){
|
||||||
return <Nav.item icon='fas fa-spinner fa-spin' className='save'>
|
return <Nav.item icon='fas fa-spinner fa-spin' className='save'>
|
||||||
|
|||||||
@@ -75,81 +75,6 @@ const NewPage = createClass({
|
|||||||
document.removeEventListener('keydown', this.handleControlKeys);
|
document.removeEventListener('keydown', this.handleControlKeys);
|
||||||
},
|
},
|
||||||
|
|
||||||
handleControlKeys : function(e){
|
|
||||||
if(!(e.ctrlKey || e.metaKey)) return;
|
|
||||||
const S_KEY = 83;
|
|
||||||
const P_KEY = 80;
|
|
||||||
if(e.keyCode == S_KEY) this.save();
|
|
||||||
if(e.keyCode == P_KEY) printCurrentBrew();
|
|
||||||
if(e.keyCode == P_KEY || e.keyCode == S_KEY){
|
|
||||||
e.stopPropagation();
|
|
||||||
e.preventDefault();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
handleSplitMove : function(){
|
|
||||||
this.editor.current.update();
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEditorViewPageChange : function(pageNumber){
|
|
||||||
this.setState({ currentEditorViewPageNum: pageNumber });
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEditorCursorPageChange : function(pageNumber){
|
|
||||||
this.setState({ currentEditorCursorPageNum: pageNumber });
|
|
||||||
},
|
|
||||||
|
|
||||||
handleBrewRendererPageChange : function(pageNumber){
|
|
||||||
this.setState({ currentBrewRendererPageNum: pageNumber });
|
|
||||||
},
|
|
||||||
|
|
||||||
handleTextChange : function(text){
|
|
||||||
//If there are errors, run the validator on every change to give quick feedback
|
|
||||||
let htmlErrors = this.state.htmlErrors;
|
|
||||||
if(htmlErrors.length) htmlErrors = Markdown.validate(text);
|
|
||||||
|
|
||||||
this.setState((prevState)=>({
|
|
||||||
brew : { ...prevState.brew, text: text },
|
|
||||||
htmlErrors : htmlErrors,
|
|
||||||
}));
|
|
||||||
localStorage.setItem(BREWKEY, text);
|
|
||||||
},
|
|
||||||
|
|
||||||
handleStyleChange : function(style){
|
|
||||||
this.setState((prevState)=>({
|
|
||||||
brew : { ...prevState.brew, style: style },
|
|
||||||
}));
|
|
||||||
localStorage.setItem(STYLEKEY, style);
|
|
||||||
},
|
|
||||||
|
|
||||||
handleSnipChange : function(snippet){
|
|
||||||
//If there are errors, run the validator on every change to give quick feedback
|
|
||||||
let htmlErrors = this.state.htmlErrors;
|
|
||||||
if(htmlErrors.length) htmlErrors = Markdown.validate(snippet);
|
|
||||||
|
|
||||||
this.setState((prevState)=>({
|
|
||||||
brew : { ...prevState.brew, snippets: snippet },
|
|
||||||
htmlErrors : htmlErrors,
|
|
||||||
}), ()=>{if(this.state.autoSave) this.trySave();});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleMetaChange : function(metadata, field=undefined){
|
|
||||||
if(field == 'theme' || field == 'renderer') // Fetch theme bundle only if theme or renderer was changed
|
|
||||||
fetchThemeBundle(this, metadata.renderer, metadata.theme);
|
|
||||||
|
|
||||||
this.setState((prevState)=>({
|
|
||||||
brew : { ...prevState.brew, ...metadata },
|
|
||||||
}), ()=>{
|
|
||||||
localStorage.setItem(METAKEY, JSON.stringify({
|
|
||||||
// 'title' : this.state.brew.title,
|
|
||||||
// 'description' : this.state.brew.description,
|
|
||||||
'renderer' : this.state.brew.renderer,
|
|
||||||
'theme' : this.state.brew.theme,
|
|
||||||
'lang' : this.state.brew.lang
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
;
|
|
||||||
},
|
|
||||||
|
|
||||||
save : async function(){
|
save : async function(){
|
||||||
this.setState({
|
this.setState({
|
||||||
|
|||||||
Reference in New Issue
Block a user