draft branches, some minor cleanups
This commit is contained in:
parent
3a8799f581
commit
90de54c359
|
@ -72,6 +72,12 @@
|
||||||
% id = "emoji/nap"
|
% id = "emoji/nap"
|
||||||
- :nap: - <sub>z</sub>zZ
|
- :nap: - <sub>z</sub>zZ
|
||||||
|
|
||||||
|
% id = "01HQ3YQCYQ995V33NY6QFW6TVJ"
|
||||||
|
- my little guy is asleep. please do not wake (he is actually kind of sleep deprived and needs the rest)
|
||||||
|
|
||||||
|
% id = "01HQ3YQCYQG20JTCF4T3507YVX"
|
||||||
|
- …stolen! from the Discord. again.
|
||||||
|
|
||||||
% id = "01HQ162WWF60BD1F4K26E7ZZEV"
|
% id = "01HQ162WWF60BD1F4K26E7ZZEV"
|
||||||
- ### random places
|
- ### random places
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ scripts = [
|
||||||
"components/literate-programming.js",
|
"components/literate-programming.js",
|
||||||
"vendor/codejar.js",
|
"vendor/codejar.js",
|
||||||
]
|
]
|
||||||
styles = ["tairu.css"]
|
styles = ["post/tairu.css"]
|
||||||
|
|
||||||
% id = "01HPD4XQPWM8ECT2QM6AT9YRWB"
|
% id = "01HPD4XQPWM8ECT2QM6AT9YRWB"
|
||||||
- I remember since my early days doing programming, I've been interested in how games like Terraria handle automatically tiling their terrain.
|
- I remember since my early days doing programming, I've been interested in how games like Terraria handle automatically tiling their terrain.
|
||||||
|
@ -893,7 +893,7 @@ styles = ["tairu.css"]
|
||||||
introducing variations and what not, such that the world doesn't look too bland… there has to be a better way!
|
introducing variations and what not, such that the world doesn't look too bland… there has to be a better way!
|
||||||
|
|
||||||
% id = "01HQ1M84GSE1N5WG88DGJZH0F8"
|
% id = "01HQ1M84GSE1N5WG88DGJZH0F8"
|
||||||
- and a better way… there is! but I'll get to that once my nap is over. <!--
|
- and a better way… there is! but I'll get to that once my nap is over.
|
||||||
|
|
||||||
% id = "01HQ1M84GS0KJ9NA6GPS62RC95"
|
% id = "01HQ1M84GS0KJ9NA6GPS62RC95"
|
||||||
- for now, have a big editor to play around with. it's a lot of fun arranging the tiles in various shapes!
|
- for now, have a big editor to play around with. it's a lot of fun arranging the tiles in various shapes!
|
||||||
|
@ -910,9 +910,9 @@ new TilesetTileEditor({
|
||||||
```output tairu
|
```output tairu
|
||||||
```
|
```
|
||||||
|
|
||||||
:nap:
|
:nap: <!--
|
||||||
|
|
||||||
% disabled = true
|
% stage = "Draft"
|
||||||
id = "01HQ1M84GS3WKE2X6QV2SNQX46"
|
id = "01HQ1M84GS3WKE2X6QV2SNQX46"
|
||||||
- TODO: next chapter! if you're reading this, you're in on it soon. that's quite sad, but YOU CAN STILL TURN BACK! I advise you to do that immediately.
|
- TODO: next chapter! if you're reading this, you're in on it soon. that's quite sad, but YOU CAN STILL TURN BACK! I advise you to do that immediately.
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,10 @@ use crate::{
|
||||||
config::Config,
|
config::Config,
|
||||||
html::EscapeAttribute,
|
html::EscapeAttribute,
|
||||||
state::{FileId, Treehouse},
|
state::{FileId, Treehouse},
|
||||||
tree::{attributes::Content, mini_template, SemaBranchId},
|
tree::{
|
||||||
|
attributes::{Content, Stage},
|
||||||
|
mini_template, SemaBranchId,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{markdown, EscapeHtml};
|
use super::{markdown, EscapeHtml};
|
||||||
|
@ -22,6 +25,10 @@ pub fn branch_to_html(
|
||||||
let source = treehouse.source(file_id);
|
let source = treehouse.source(file_id);
|
||||||
let branch = treehouse.tree.branch(branch_id);
|
let branch = treehouse.tree.branch(branch_id);
|
||||||
|
|
||||||
|
if !cfg!(debug_assertions) && branch.attributes.stage == Stage::Draft {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let has_children =
|
let has_children =
|
||||||
!branch.children.is_empty() || matches!(branch.attributes.content, Content::Link(_));
|
!branch.children.is_empty() || matches!(branch.attributes.content, Content::Link(_));
|
||||||
|
|
||||||
|
@ -32,6 +39,10 @@ pub fn branch_to_html(
|
||||||
class.push_str(&branch.attributes.classes.branch);
|
class.push_str(&branch.attributes.classes.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if branch.attributes.stage == Stage::Draft {
|
||||||
|
class.push_str(" draft");
|
||||||
|
}
|
||||||
|
|
||||||
let component = if let Content::Link(_) = branch.attributes.content {
|
let component = if let Content::Link(_) = branch.attributes.content {
|
||||||
"th-b-linked"
|
"th-b-linked"
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -64,6 +64,11 @@ pub struct Attributes {
|
||||||
/// Enable `mini_template` templating in this branch.
|
/// Enable `mini_template` templating in this branch.
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub template: bool,
|
pub template: bool,
|
||||||
|
|
||||||
|
/// Publishing stage; if `Draft`, the branch is invisible unless treehouse is compiled in
|
||||||
|
/// debug mode.
|
||||||
|
#[serde(default)]
|
||||||
|
pub stage: Stage,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Controls for block content presentation.
|
/// Controls for block content presentation.
|
||||||
|
@ -100,3 +105,14 @@ pub struct Classes {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub branch_children: String,
|
pub branch_children: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Publish stage of a branch.
|
||||||
|
///
|
||||||
|
/// Draft branches are not included in release builds of treehouse. In debug builds, they are also
|
||||||
|
/// marked with an extra "draft" before the content.
|
||||||
|
#[derive(Debug, Default, Clone, PartialEq, Eq, Deserialize)]
|
||||||
|
pub enum Stage {
|
||||||
|
#[default]
|
||||||
|
Public,
|
||||||
|
Draft,
|
||||||
|
}
|
||||||
|
|
|
@ -20,13 +20,12 @@
|
||||||
width: 56px;
|
width: 56px;
|
||||||
height: 56px;
|
height: 56px;
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
background-image: url('../pic/01HPHVDRV0F0251MD0A2EG66C4-tilemap-heavy-metal-16+pixel+width160.png');
|
background-image: url('../../pic/01HPHVDRV0F0251MD0A2EG66C4-tilemap-heavy-metal-16+pixel+width160.png');
|
||||||
background-size: 400%;
|
background-size: 400%;
|
||||||
image-rendering: pixelated;
|
image-rendering: pixelated;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
& .east,
|
& .east,
|
||||||
& .south,
|
& .south,
|
||||||
& .west,
|
& .west,
|
||||||
|
@ -128,7 +127,7 @@
|
||||||
width: 72px;
|
width: 72px;
|
||||||
height: 72px;
|
height: 72px;
|
||||||
|
|
||||||
background-image: url('../pic/01HPHVDRV0F0251MD0A2EG66C4-tilemap-heavy-metal-16+pixel+width160.png');
|
background-image: url('../../pic/01HPHVDRV0F0251MD0A2EG66C4-tilemap-heavy-metal-16+pixel+width160.png');
|
||||||
background-size: 400%;
|
background-size: 400%;
|
||||||
background-position: 100% 100%;
|
background-position: 100% 100%;
|
||||||
image-rendering: pixelated;
|
image-rendering: pixelated;
|
||||||
|
@ -136,14 +135,14 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&.bend {
|
&.bend {
|
||||||
background-image: url('../pic/01HQ183RANGH4S7VZSG1ZGH0S5-the-tile+width72+pixel.png');
|
background-image: url('../../pic/01HQ183RANGH4S7VZSG1ZGH0S5-the-tile+width72+pixel.png');
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
background-position: 0 0;
|
background-position: 0 0;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.notabend {
|
&.notabend {
|
||||||
background-image: url('../pic/01HQ18E39K5F9Q5P41XAEVSEWK-the-also-tile.png');
|
background-image: url('../../pic/01HQ18E39K5F9Q5P41XAEVSEWK-the-also-tile.png');
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
background-position: 0 0;
|
background-position: 0 0;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
|
@ -243,6 +243,24 @@ th-bc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Display a [draft] pill for branches that are drafts. */
|
||||||
|
.tree li.draft {
|
||||||
|
|
||||||
|
&>details>summary>th-bc::before,
|
||||||
|
&>div>th-bc::before {
|
||||||
|
content: 'draft';
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
width: min-content;
|
||||||
|
|
||||||
|
background-color: #058ef0;
|
||||||
|
color: #ffffff;
|
||||||
|
padding: 4px 12px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
border-radius: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* bb - button bar */
|
/* bb - button bar */
|
||||||
th-bb {
|
th-bb {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
|
@ -46,18 +46,22 @@ class EmojiTooltip extends HTMLElement {
|
||||||
customElements.define("th-emoji-tooltip", EmojiTooltip);
|
customElements.define("th-emoji-tooltip", EmojiTooltip);
|
||||||
|
|
||||||
let emojiTooltips = null;
|
let emojiTooltips = null;
|
||||||
addEventListener("wheel", event => emojiTooltips.closeTooltips(event));
|
|
||||||
|
|
||||||
class EmojiTooltips extends HTMLElement {
|
class EmojiTooltips extends HTMLElement {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.tooltips = new Set();
|
this.tooltips = new Set();
|
||||||
this.abortController = new AbortController();
|
this.abortController = new AbortController();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
emojiTooltips = this;
|
emojiTooltips = this;
|
||||||
|
|
||||||
|
addEventListener(
|
||||||
|
"wheel",
|
||||||
|
event => emojiTooltips.closeTooltips(event),
|
||||||
|
{ signal: this.abortController.signal },
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnectedCallback() {
|
disconnectedCallback() {
|
||||||
|
|
Loading…
Reference in a new issue