mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-04 01:42:42 +00:00
Merge branch 'master' of https://github.com/naturalcrit/homebrewery into refactor-splitpane
This commit is contained in:
@@ -25,12 +25,11 @@
|
|||||||
|
|
||||||
.homebrew nav {
|
.homebrew nav {
|
||||||
background-color : #333333;
|
background-color : #333333;
|
||||||
.navContent {
|
position : relative;
|
||||||
position : relative;
|
z-index : 2;
|
||||||
z-index : 2;
|
display : flex;
|
||||||
display : flex;
|
justify-content : space-between;
|
||||||
justify-content : space-between;
|
|
||||||
}
|
|
||||||
.navSection {
|
.navSection {
|
||||||
display : flex;
|
display : flex;
|
||||||
align-items : center;
|
align-items : center;
|
||||||
|
|||||||
@@ -429,42 +429,40 @@ const EditPage = createClass({
|
|||||||
<Meta name='robots' content='noindex, nofollow' />
|
<Meta name='robots' content='noindex, nofollow' />
|
||||||
{this.renderNavbar()}
|
{this.renderNavbar()}
|
||||||
|
|
||||||
<div className='content'>
|
{this.props.brew.lock && <LockNotification shareId={this.props.brew.shareId} message={this.props.brew.lock.editMessage} />}
|
||||||
{this.props.brew.lock && <LockNotification shareId={this.props.brew.shareId} message={this.props.brew.lock.editMessage} />}
|
<SplitPane onDragFinish={this.handleSplitMove}>
|
||||||
<SplitPane onDragFinish={this.handleSplitMove}>
|
<Editor
|
||||||
<Editor
|
ref={this.editor}
|
||||||
ref={this.editor}
|
brew={this.state.brew}
|
||||||
brew={this.state.brew}
|
onTextChange={this.handleTextChange}
|
||||||
onTextChange={this.handleTextChange}
|
onStyleChange={this.handleStyleChange}
|
||||||
onStyleChange={this.handleStyleChange}
|
onMetaChange={this.handleMetaChange}
|
||||||
onMetaChange={this.handleMetaChange}
|
reportError={this.errorReported}
|
||||||
reportError={this.errorReported}
|
renderer={this.state.brew.renderer}
|
||||||
renderer={this.state.brew.renderer}
|
userThemes={this.props.userThemes}
|
||||||
userThemes={this.props.userThemes}
|
snippetBundle={this.state.themeBundle.snippets}
|
||||||
snippetBundle={this.state.themeBundle.snippets}
|
updateBrew={this.updateBrew}
|
||||||
updateBrew={this.updateBrew}
|
onCursorPageChange={this.handleEditorCursorPageChange}
|
||||||
onCursorPageChange={this.handleEditorCursorPageChange}
|
onViewPageChange={this.handleEditorViewPageChange}
|
||||||
onViewPageChange={this.handleEditorViewPageChange}
|
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
||||||
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
||||||
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
||||||
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
/>
|
||||||
/>
|
<BrewRenderer
|
||||||
<BrewRenderer
|
text={this.state.brew.text}
|
||||||
text={this.state.brew.text}
|
style={this.state.brew.style}
|
||||||
style={this.state.brew.style}
|
renderer={this.state.brew.renderer}
|
||||||
renderer={this.state.brew.renderer}
|
theme={this.state.brew.theme}
|
||||||
theme={this.state.brew.theme}
|
themeBundle={this.state.themeBundle}
|
||||||
themeBundle={this.state.themeBundle}
|
errors={this.state.htmlErrors}
|
||||||
errors={this.state.htmlErrors}
|
lang={this.state.brew.lang}
|
||||||
lang={this.state.brew.lang}
|
onPageChange={this.handleBrewRendererPageChange}
|
||||||
onPageChange={this.handleBrewRendererPageChange}
|
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
||||||
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
||||||
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
||||||
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
allowPrint={true}
|
||||||
allowPrint={true}
|
/>
|
||||||
/>
|
</SplitPane>
|
||||||
</SplitPane>
|
|
||||||
</div>
|
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -100,35 +100,31 @@ const HomePage = createClass({
|
|||||||
return <div className='homePage sitePage'>
|
return <div className='homePage sitePage'>
|
||||||
<Meta name='google-site-verification' content='NwnAQSSJZzAT7N-p5MY6ydQ7Njm67dtbu73ZSyE5Fy4' />
|
<Meta name='google-site-verification' content='NwnAQSSJZzAT7N-p5MY6ydQ7Njm67dtbu73ZSyE5Fy4' />
|
||||||
{this.renderNavbar()}
|
{this.renderNavbar()}
|
||||||
|
<SplitPane onDragFinish={this.handleSplitMove}>
|
||||||
<div className='content'>
|
<Editor
|
||||||
<SplitPane onDragFinish={this.handleSplitMove}>
|
ref={this.editor}
|
||||||
<Editor
|
brew={this.state.brew}
|
||||||
ref={this.editor}
|
onTextChange={this.handleTextChange}
|
||||||
brew={this.state.brew}
|
renderer={this.state.brew.renderer}
|
||||||
onTextChange={this.handleTextChange}
|
showEditButtons={false}
|
||||||
renderer={this.state.brew.renderer}
|
snippetBundle={this.state.themeBundle.snippets}
|
||||||
showEditButtons={false}
|
onCursorPageChange={this.handleEditorCursorPageChange}
|
||||||
snippetBundle={this.state.themeBundle.snippets}
|
onViewPageChange={this.handleEditorViewPageChange}
|
||||||
onCursorPageChange={this.handleEditorCursorPageChange}
|
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
||||||
onViewPageChange={this.handleEditorViewPageChange}
|
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
||||||
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
||||||
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
/>
|
||||||
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
<BrewRenderer
|
||||||
/>
|
text={this.state.brew.text}
|
||||||
<BrewRenderer
|
style={this.state.brew.style}
|
||||||
text={this.state.brew.text}
|
renderer={this.state.brew.renderer}
|
||||||
style={this.state.brew.style}
|
onPageChange={this.handleBrewRendererPageChange}
|
||||||
renderer={this.state.brew.renderer}
|
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
||||||
onPageChange={this.handleBrewRendererPageChange}
|
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
||||||
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
||||||
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
themeBundle={this.state.themeBundle}
|
||||||
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
/>
|
||||||
themeBundle={this.state.themeBundle}
|
</SplitPane>
|
||||||
/>
|
|
||||||
</SplitPane>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className={cx('floatingSaveButton', { show: this.state.welcomeText != this.state.brew.text })} onClick={this.handleSave}>
|
<div className={cx('floatingSaveButton', { show: this.state.welcomeText != this.state.brew.text })} onClick={this.handleSave}>
|
||||||
Save current <i className='fas fa-save' />
|
Save current <i className='fas fa-save' />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -91,13 +91,6 @@ If you are looking for more 5e Homebrew resources check out [r/UnearthedArcana](
|
|||||||
|
|
||||||
\page
|
\page
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Markdown+
|
## Markdown+
|
||||||
The Homebrewery aims to make homebrewing as simple as possible, providing a live editor with Markdown syntax that is more human-readable and faster to write with than raw HTML.
|
The Homebrewery aims to make homebrewing as simple as possible, providing a live editor with Markdown syntax that is more human-readable and faster to write with than raw HTML.
|
||||||
|
|
||||||
|
|||||||
@@ -223,39 +223,37 @@ const NewPage = createClass({
|
|||||||
render : function(){
|
render : function(){
|
||||||
return <div className='newPage sitePage'>
|
return <div className='newPage sitePage'>
|
||||||
{this.renderNavbar()}
|
{this.renderNavbar()}
|
||||||
<div className='content'>
|
<SplitPane onDragFinish={this.handleSplitMove}>
|
||||||
<SplitPane onDragFinish={this.handleSplitMove}>
|
<Editor
|
||||||
<Editor
|
ref={this.editor}
|
||||||
ref={this.editor}
|
brew={this.state.brew}
|
||||||
brew={this.state.brew}
|
onTextChange={this.handleTextChange}
|
||||||
onTextChange={this.handleTextChange}
|
onStyleChange={this.handleStyleChange}
|
||||||
onStyleChange={this.handleStyleChange}
|
onMetaChange={this.handleMetaChange}
|
||||||
onMetaChange={this.handleMetaChange}
|
renderer={this.state.brew.renderer}
|
||||||
renderer={this.state.brew.renderer}
|
userThemes={this.props.userThemes}
|
||||||
userThemes={this.props.userThemes}
|
snippetBundle={this.state.themeBundle.snippets}
|
||||||
snippetBundle={this.state.themeBundle.snippets}
|
onCursorPageChange={this.handleEditorCursorPageChange}
|
||||||
onCursorPageChange={this.handleEditorCursorPageChange}
|
onViewPageChange={this.handleEditorViewPageChange}
|
||||||
onViewPageChange={this.handleEditorViewPageChange}
|
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
||||||
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
||||||
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
||||||
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
/>
|
||||||
/>
|
<BrewRenderer
|
||||||
<BrewRenderer
|
text={this.state.brew.text}
|
||||||
text={this.state.brew.text}
|
style={this.state.brew.style}
|
||||||
style={this.state.brew.style}
|
renderer={this.state.brew.renderer}
|
||||||
renderer={this.state.brew.renderer}
|
theme={this.state.brew.theme}
|
||||||
theme={this.state.brew.theme}
|
themeBundle={this.state.themeBundle}
|
||||||
themeBundle={this.state.themeBundle}
|
errors={this.state.htmlErrors}
|
||||||
errors={this.state.htmlErrors}
|
lang={this.state.brew.lang}
|
||||||
lang={this.state.brew.lang}
|
onPageChange={this.handleBrewRendererPageChange}
|
||||||
onPageChange={this.handleBrewRendererPageChange}
|
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
||||||
currentEditorViewPageNum={this.state.currentEditorViewPageNum}
|
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
||||||
currentEditorCursorPageNum={this.state.currentEditorCursorPageNum}
|
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
||||||
currentBrewRendererPageNum={this.state.currentBrewRendererPageNum}
|
allowPrint={true}
|
||||||
allowPrint={true}
|
/>
|
||||||
/>
|
</SplitPane>
|
||||||
</SplitPane>
|
|
||||||
</div>
|
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.sharePage{
|
.sharePage{
|
||||||
.navContent .navSection.titleSection {
|
nav .navSection.titleSection {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
const React = require('react');
|
const React = require('react');
|
||||||
const createClass = require('create-react-class');
|
const { useState } = React;
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
const ListPage = require('../basePages/listPage/listPage.jsx');
|
const ListPage = require('../basePages/listPage/listPage.jsx');
|
||||||
|
|
||||||
const Nav = require('naturalcrit/nav/nav.jsx');
|
const Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
const Navbar = require('../../navbar/navbar.jsx');
|
const Navbar = require('../../navbar/navbar.jsx');
|
||||||
|
|
||||||
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
|
const RecentNavItem = require('../../navbar/recent.navitem.jsx').both;
|
||||||
const Account = require('../../navbar/account.navitem.jsx');
|
const Account = require('../../navbar/account.navitem.jsx');
|
||||||
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
|
const NewBrew = require('../../navbar/newbrew.navitem.jsx');
|
||||||
@@ -14,69 +13,48 @@ const HelpNavItem = require('../../navbar/help.navitem.jsx');
|
|||||||
const ErrorNavItem = require('../../navbar/error-navitem.jsx');
|
const ErrorNavItem = require('../../navbar/error-navitem.jsx');
|
||||||
const VaultNavitem = require('../../navbar/vault.navitem.jsx');
|
const VaultNavitem = require('../../navbar/vault.navitem.jsx');
|
||||||
|
|
||||||
const UserPage = createClass({
|
const UserPage = (props)=>{
|
||||||
displayName : 'UserPage',
|
props = {
|
||||||
getDefaultProps : function() {
|
username : '',
|
||||||
return {
|
brews : [],
|
||||||
username : '',
|
query : '',
|
||||||
brews : [],
|
...props
|
||||||
query : '',
|
};
|
||||||
error : null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
getInitialState : function() {
|
|
||||||
const usernameWithS = this.props.username + (this.props.username.endsWith('s') ? `’` : `’s`);
|
|
||||||
|
|
||||||
const brews = _.groupBy(this.props.brews, (brew)=>{
|
const [error, setError] = useState(null);
|
||||||
return (brew.published ? 'published' : 'private');
|
|
||||||
});
|
|
||||||
|
|
||||||
const brewCollection = [
|
const usernameWithS = props.username + (props.username.endsWith('s') ? `’` : `’s`);
|
||||||
{
|
const groupedBrews = _.groupBy(props.brews, (brew)=>brew.published ? 'published' : 'private');
|
||||||
title : `${usernameWithS} published brews`,
|
|
||||||
class : 'published',
|
|
||||||
brews : brews.published
|
|
||||||
}
|
|
||||||
];
|
|
||||||
if(this.props.username == global.account?.username){
|
|
||||||
brewCollection.push(
|
|
||||||
{
|
|
||||||
title : `${usernameWithS} unpublished brews`,
|
|
||||||
class : 'unpublished',
|
|
||||||
brews : brews.private
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
const brewCollection = [
|
||||||
brewCollection : brewCollection
|
{
|
||||||
};
|
title : `${usernameWithS} published brews`,
|
||||||
},
|
class : 'published',
|
||||||
errorReported : function(error) {
|
brews : groupedBrews.published || []
|
||||||
this.setState({
|
},
|
||||||
error
|
...(props.username === global.account?.username ? [{
|
||||||
});
|
title : `${usernameWithS} unpublished brews`,
|
||||||
},
|
class : 'unpublished',
|
||||||
|
brews : groupedBrews.private || []
|
||||||
|
}] : [])
|
||||||
|
];
|
||||||
|
|
||||||
navItems : function() {
|
const navItems = (
|
||||||
return <Navbar>
|
<Navbar>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
{this.state.error ?
|
{error && (<ErrorNavItem error={error} parent={null}></ErrorNavItem>)}
|
||||||
<ErrorNavItem error={this.state.error} parent={this}></ErrorNavItem> :
|
|
||||||
null
|
|
||||||
}
|
|
||||||
<NewBrew />
|
<NewBrew />
|
||||||
<HelpNavItem />
|
<HelpNavItem />
|
||||||
<VaultNavitem/>
|
<VaultNavitem />
|
||||||
<RecentNavItem />
|
<RecentNavItem />
|
||||||
<Account />
|
<Account />
|
||||||
</Nav.section>
|
</Nav.section>
|
||||||
</Navbar>;
|
</Navbar>
|
||||||
},
|
);
|
||||||
|
|
||||||
render : function(){
|
return (
|
||||||
return <ListPage brewCollection={this.state.brewCollection} navItems={this.navItems()} query={this.props.query} reportError={this.errorReported}></ListPage>;
|
<ListPage brewCollection={brewCollection} navItems={navItems} query={props.query} reportError={(err)=>setError(err)} />
|
||||||
}
|
);
|
||||||
});
|
};
|
||||||
|
|
||||||
module.exports = UserPage;
|
module.exports = UserPage;
|
||||||
|
|||||||
@@ -415,16 +415,13 @@ const VaultPage = (props)=>{
|
|||||||
<link href='/themes/V3/Blank/style.css' rel='stylesheet' />
|
<link href='/themes/V3/Blank/style.css' rel='stylesheet' />
|
||||||
<link href='/themes/V3/5ePHB/style.css' rel='stylesheet' />
|
<link href='/themes/V3/5ePHB/style.css' rel='stylesheet' />
|
||||||
{renderNavItems()}
|
{renderNavItems()}
|
||||||
<div className='content'>
|
<SplitPane showDividerButtons={false}>
|
||||||
<SplitPane showDividerButtons={false}>
|
<div className='form dataGroup'>{renderForm()}</div>
|
||||||
<div className='form dataGroup'>{renderForm()}</div>
|
<div className='resultsContainer dataGroup'>
|
||||||
|
{renderSortBar()}
|
||||||
<div className='resultsContainer dataGroup'>
|
{renderFoundBrews()}
|
||||||
{renderSortBar()}
|
</div>
|
||||||
{renderFoundBrews()}
|
</SplitPane>
|
||||||
</div>
|
|
||||||
</SplitPane>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,10 +12,8 @@ const Nav = {
|
|||||||
displayName : 'Nav.base',
|
displayName : 'Nav.base',
|
||||||
render : function(){
|
render : function(){
|
||||||
return <nav>
|
return <nav>
|
||||||
<div className='navContent'>
|
|
||||||
{this.props.children}
|
{this.props.children}
|
||||||
</div>
|
</nav>;
|
||||||
</nav>;
|
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
logo : function(){
|
logo : function(){
|
||||||
|
|||||||
Reference in New Issue
Block a user