;
},
@@ -291,8 +300,9 @@ const SnippetGroup = createClass({
return _.map(snippets, (snippet)=>{
return
this.handleSnippetClick(e, snippet)}>
-
{snippet.name}
+
{snippet.name}
{snippet.experimental &&
beta}
+ {snippet.disabled &&
disabled}
{snippet.subsnippets && <>
diff --git a/client/homebrew/editor/snippetbar/snippetbar.less b/client/homebrew/editor/snippetbar/snippetbar.less
index c50d9df4c..a4d273bbf 100644
--- a/client/homebrew/editor/snippetbar/snippetbar.less
+++ b/client/homebrew/editor/snippetbar/snippetbar.less
@@ -4,97 +4,108 @@
.snippetBar {
@menuHeight : 25px;
position : relative;
- height : @menuHeight;
+ display : flex;
+ flex-wrap : wrap-reverse;
+ justify-content : space-between;
+ min-width : 331px;
+ height : auto;
color : black;
background-color : #DDDDDD;
+ .snippets {
+ display : flex;
+ justify-content : space-evenly;
+ }
+
.editors {
- position : absolute;
- top : 0px;
- right : 0px;
display : flex;
justify-content : space-between;
- height : @menuHeight;
- & > div {
- width : @menuHeight;
- height : @menuHeight;
- line-height : @menuHeight;
- text-align : center;
- cursor : pointer;
- &:hover,&.selected { background-color : #999999; }
- &.text {
- .tooltipLeft('Brew Editor');
- }
- &.style {
- .tooltipLeft('Style Editor');
- }
- &.meta {
- .tooltipLeft('Properties');
- }
- &.undo {
- .tooltipLeft('Undo');
- font-size : 0.75em;
- color : grey;
- &.active { color : inherit; }
- }
- &.redo {
- .tooltipLeft('Redo');
- font-size : 0.75em;
- color : grey;
- &.active { color : inherit; }
- }
- &.foldAll {
- .tooltipLeft('Fold All');
- font-size : 0.75em;
- color : inherit;
- }
- &.unfoldAll {
- .tooltipLeft('Unfold All');
- font-size : 0.75em;
- color : inherit;
- }
- &.history {
- .tooltipLeft('History');
- font-size : 0.75em;
- color : grey;
- position : relative;
- &.active {
- color : inherit;
+ >div {
+ display : flex;
+ flex : 1;
+ justify-content : space-around;
+
+ &:first-child { border-left : none; }
+
+ & > div {
+ position : relative;
+ width : @menuHeight;
+ height : @menuHeight;
+ line-height : @menuHeight;
+ text-align : center;
+ cursor : pointer;
+ &:hover,&.selected { background-color : #999999; }
+ &.text {
+ .tooltipLeft('Brew Editor');
}
- &>.dropdown{
- right : -1px;
- &>.snippet{
- padding-right : 10px;
+ &.style {
+ .tooltipLeft('Style Editor');
+ }
+ &.meta {
+ .tooltipLeft('Properties');
+ }
+ &.undo {
+ .tooltipLeft('Undo');
+ font-size : 0.75em;
+ color : grey;
+ &.active { color : inherit; }
+ }
+ &.redo {
+ .tooltipLeft('Redo');
+ font-size : 0.75em;
+ color : grey;
+ &.active { color : inherit; }
+ }
+ &.foldAll {
+ .tooltipLeft('Fold All');
+ font-size : 0.75em;
+ color : inherit;
+ }
+ &.unfoldAll {
+ .tooltipLeft('Unfold All');
+ font-size : 0.75em;
+ color : inherit;
+ }
+ &.history {
+ .tooltipLeft('History');
+ position : relative;
+ font-size : 0.75em;
+ color : grey;
+ border : none;
+ &.active { color : inherit; }
+ & > .dropdown {
+ right : -1px;
+ & > .snippet { padding-right : 10px; }
}
}
- }
- &.editorTheme {
- .tooltipLeft('Editor Themes');
- font-size : 0.75em;
- color : black;
- &.active {
- position : relative;
- background-color : #999999;
+ &.editorTheme {
+ .tooltipLeft('Editor Themes');
+ font-size : 0.75em;
+ color : black;
+ &.active {
+ position : relative;
+ background-color : #999999;
+ }
+ }
+ &.divider {
+ width : 5px;
+ background : linear-gradient(currentColor, currentColor) no-repeat center/1px 100%;
+ &:hover { background-color : inherit; }
}
}
- &.divider {
- width : 5px;
- background : linear-gradient(currentColor, currentColor) no-repeat center/1px 100%;
- &:hover { background-color : inherit; }
+ .themeSelector {
+ position : absolute;
+ top : 25px;
+ right : 0;
+ z-index : 10;
+ display : flex;
+ align-items : center;
+ justify-content : center;
+ width : 170px;
+ height : inherit;
+ background-color : inherit;
}
- }
- .themeSelector {
- position : absolute;
- top : 25px;
- right : 0;
- z-index : 10;
- display : flex;
- align-items : center;
- justify-content : center;
- width : 170px;
- height : inherit;
- background-color : inherit;
- }
+ }
}
.snippetBarButton {
display : inline-block;
@@ -104,6 +115,7 @@
font-weight : 800;
line-height : @menuHeight;
text-transform : uppercase;
+ text-wrap : nowrap;
cursor : pointer;
&:hover, &.selected { background-color : #999999; }
i {
@@ -120,7 +132,7 @@
.tooltipLeft('Edit Brew Properties');
}
.snippetGroup {
- border-right : 1px solid currentColor;
+
&:hover {
& > .dropdown { visibility : visible; }
}
@@ -142,11 +154,11 @@
cursor : pointer;
.animate(background-color);
i {
+ min-width : 25px;
height : 1.2em;
margin-right : 8px;
font-size : 1.2em;
- min-width: 25px;
- text-align: center;
+ text-align : center;
& ~ i {
margin-right : 0;
margin-left : 5px;
@@ -179,6 +191,7 @@
}
}
.name { margin-right : auto; }
+ .disabled { text-decoration : line-through; }
.beta {
align-self : center;
padding : 4px 6px;
@@ -204,4 +217,10 @@
}
}
}
-}
\ No newline at end of file
+}
+
+@container editor (width < 553px) {
+ .editors,.snippets { flex : 1; }
+ .editors { border-bottom : 1px solid;}
+ .snippetBar .editors > div.history > .dropdown { right : unset; }
+}
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index fcc43e81a..7fcee9e0c 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -228,8 +228,8 @@ const EditPage = createClass({
htmlErrors : Markdown.validate(prevState.brew.text)
}));
- await updateHistory(this.state.brew);
- await versionHistoryGarbageCollection();
+ await updateHistory(this.state.brew).catch(console.error);
+ await versionHistoryGarbageCollection().catch(console.error);
const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId);
diff --git a/package-lock.json b/package-lock.json
index e3fb0ad29..a87ed05c5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -39,7 +39,7 @@
"marked-smartypants-lite": "^1.0.2",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.30.1",
- "mongoose": "^8.7.1",
+ "mongoose": "^8.7.2",
"nanoid": "3.3.4",
"nconf": "^0.12.1",
"react": "^18.3.1",
@@ -47,12 +47,12 @@
"react-frame-component": "^4.1.3",
"react-router-dom": "6.27.0",
"sanitize-filename": "1.6.3",
- "superagent": "^10.1.0",
+ "superagent": "^10.1.1",
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
},
"devDependencies": {
"@stylistic/stylelint-plugin": "^3.1.1",
- "eslint": "^9.12.0",
+ "eslint": "^9.13.0",
"eslint-plugin-jest": "^28.8.3",
"eslint-plugin-react": "^7.37.1",
"globals": "^15.11.0",
@@ -1881,9 +1881,9 @@
}
},
"node_modules/@eslint/core": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
- "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
+ "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1927,9 +1927,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.12.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz",
- "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==",
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz",
+ "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -5702,17 +5702,17 @@
}
},
"node_modules/eslint": {
- "version": "9.12.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz",
- "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==",
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz",
+ "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.11.0",
"@eslint/config-array": "^0.18.0",
- "@eslint/core": "^0.6.0",
+ "@eslint/core": "^0.7.0",
"@eslint/eslintrc": "^3.1.0",
- "@eslint/js": "9.12.0",
+ "@eslint/js": "9.13.0",
"@eslint/plugin-kit": "^0.2.0",
"@humanfs/node": "^0.16.5",
"@humanwhocodes/module-importer": "^1.0.1",
@@ -6551,13 +6551,12 @@
}
},
"node_modules/formidable": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz",
- "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==",
- "license": "MIT",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz",
+ "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==",
"dependencies": {
"dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
+ "hexoid": "^2.0.0",
"once": "^1.4.0"
},
"funding": {
@@ -7190,10 +7189,9 @@
}
},
"node_modules/hexoid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
- "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
- "license": "MIT",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz",
+ "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==",
"engines": {
"node": ">=8"
}
@@ -10661,9 +10659,9 @@
}
},
"node_modules/mongoose": {
- "version": "8.7.1",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.7.1.tgz",
- "integrity": "sha512-RpNMyhyzLVCVbf8xTVbrf/18G3MqQzNw5pJdvOJ60fzbCa3cOZzz9L+8XpqzBXtRlgZGWv0T7MmOtvrT8ocp1Q==",
+ "version": "8.7.2",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.7.2.tgz",
+ "integrity": "sha512-Ok4VzMds9p5G3ZSUhmvBm1GdxanbzhS29jpSn02SPj+IXEVFnIdfwAlHHXWkyNscZKlcn8GuMi68FH++jo0flg==",
"dependencies": {
"bson": "^6.7.0",
"kareem": "2.6.3",
@@ -13597,16 +13595,16 @@
}
},
"node_modules/superagent": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.1.0.tgz",
- "integrity": "sha512-JMmik7PbnXGlq7g528Gi6apHbVbTz2vrE3du6fuG4kIPSb2PnLoSOPvfjKn8aQYuJcBWAKW6ZG90qPPsE5jZxQ==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.1.1.tgz",
+ "integrity": "sha512-9pIwrHrOj3uAnqg9gDlW7EA2xv+N5au/dSM0kM22HTqmUu8jBxNT+8uA7tA3UoCnmiqzpSbu8rasIUZvbyamMQ==",
"dependencies": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.4",
"debug": "^4.3.4",
"fast-safe-stringify": "^2.1.1",
"form-data": "^4.0.0",
- "formidable": "^3.5.1",
+ "formidable": "^3.5.2",
"methods": "^1.1.2",
"mime": "2.6.0",
"qs": "^6.11.0"
diff --git a/package.json b/package.json
index a4c6ee38a..c9c78f766 100644
--- a/package.json
+++ b/package.json
@@ -115,7 +115,7 @@
"marked-smartypants-lite": "^1.0.2",
"markedLegacy": "npm:marked@^0.3.19",
"moment": "^2.30.1",
- "mongoose": "^8.7.1",
+ "mongoose": "^8.7.2",
"nanoid": "3.3.4",
"nconf": "^0.12.1",
"react": "^18.3.1",
@@ -123,12 +123,12 @@
"react-frame-component": "^4.1.3",
"react-router-dom": "6.27.0",
"sanitize-filename": "1.6.3",
- "superagent": "^10.1.0",
+ "superagent": "^10.1.1",
"vitreum": "git+https://git@github.com/calculuschild/vitreum.git"
},
"devDependencies": {
"@stylistic/stylelint-plugin": "^3.1.1",
- "eslint": "^9.12.0",
+ "eslint": "^9.13.0",
"eslint-plugin-jest": "^28.8.3",
"eslint-plugin-react": "^7.37.1",
"globals": "^15.11.0",
diff --git a/themes/V3/5ePHB/snippets.js b/themes/V3/5ePHB/snippets.js
index c3094abc4..dbcdc6f2a 100644
--- a/themes/V3/5ePHB/snippets.js
+++ b/themes/V3/5ePHB/snippets.js
@@ -154,28 +154,6 @@ module.exports = [
]
},
- {
- name : 'Table of Contents Toggles',
- icon : 'fas fa-book',
- gen : `{{tocGlobalH4}}\n\n`,
- subsnippets : [
- {
- name : 'Enable H1-H4 all pages',
- icon : 'fas fa-dice-four',
- gen : `{{tocGlobalH4}}\n\n`,
- },
- {
- name : 'Enable H1-H5 all pages',
- icon : 'fas fa-dice-five',
- gen : `{{tocGlobalH5}}\n\n`,
- },
- {
- name : 'Enable H1-H6 all pages',
- icon : 'fas fa-dice-six',
- gen : `{{tocGlobalH6}}\n\n`,
- },
- ]
- }
]
},
{
@@ -214,6 +192,27 @@ module.exports = [
line-height: 1em;
}\n\n`
},
+ {
+ name : 'Table of Contents Toggles',
+ icon : 'fas fa-book',
+ subsnippets : [
+ {
+ name : 'Enable H1-H4 all pages',
+ icon : 'fas fa-dice-four',
+ gen : `.page {\n\th4 {--TOC: include; }\n}\n\n`,
+ },
+ {
+ name : 'Enable H1-H5 all pages',
+ icon : 'fas fa-dice-five',
+ gen : `.page {\n\th4, h5 {--TOC: include; }\n}\n\n`,
+ },
+ {
+ name : 'Enable H1-H6 all pages',
+ icon : 'fas fa-dice-six',
+ gen : `.page {\n\th4, h5, h6 {--TOC: include; }\n}\n\n`,
+ },
+ ]
+ }
]
},
diff --git a/themes/V3/5ePHB/style.less b/themes/V3/5ePHB/style.less
index 5a2b5cf3f..ba975e58a 100644
--- a/themes/V3/5ePHB/style.less
+++ b/themes/V3/5ePHB/style.less
@@ -812,17 +812,8 @@ h6,
// Brew level default inclusion changes.
// These add Headers 'back' to inclusion.
-.pages:has(.tocGlobalH4) {
- h4 {--TOC: include; }
-}
-.pages:has(.tocGlobalH5) {
- h4, h5 {--TOC: include; }
-}
-
-.pages:has(.tocGlobalH6) {
- h4, h5, h6 {--TOC: include; }
-}
+//NOTE: DO NOT USE :HAS WITH .PAGES!!! EXTREMELY SLOW TO RENDER ON LARGE DOCS!
// Block level inclusion changes
// These include either a single (include) or a range (depth)