2025-06-14 01:35:21 -05:00
<!DOCTYPE html>
< html lang = "en" > < head > < title > hey, welcome to my notebook.< / title > < meta charset = "utf-8" / > < link rel = "preconnect" href = "https://fonts.googleapis.com" / > < link rel = "preconnect" href = "https://fonts.gstatic.com" / > < link rel = "stylesheet" href = "https://fonts.googleapis.com/css2?family=JetBrains Mono:wght@400;700&family=Atkinson Hyperlegible Next:ital,wght@0,400;0,600;1,400;1,600&family=JetBrains Mono:wght@400;600&display=swap" / > < link rel = "preconnect" href = "https://cdnjs.cloudflare.com" crossorigin = "anonymous" / > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" / > < meta name = "og:site_name" content = "a gooey synth's notebook" / > < meta property = "og:title" content = "hey, welcome to my notebook." / > < meta property = "og:type" content = "website" / > < meta name = "twitter:card" content = "summary_large_image" / > < meta name = "twitter:title" content = "hey, welcome to my notebook." / > < meta name = "twitter:description" content = "treat this space as an endless journal (or as others call it, my “digital garden”) for myself that i expose to the internet." / > < meta property = "og:description" content = "treat this space as an endless journal (or as others call it, my “digital garden”) for myself that i expose to the internet." / > < meta property = "og:image:alt" content = "treat this space as an endless journal (or as others call it, my “digital garden”) for myself that i expose to the internet." / > < meta property = "twitter:domain" content = "synth.download/~sneexy/notebook" / > < meta property = "og:url" content = "https://synth.download/~sneexy/notebook/index" / > < meta property = "twitter:url" content = "https://synth.download/~sneexy/notebook/index" / > < link rel = "icon" href = "./static/icon.png" / > < meta name = "description" content = "treat this space as an endless journal (or as others call it, my “digital garden”) for myself that i expose to the internet." / > < meta name = "generator" content = "Quartz" / > < link href = "./index.css" rel = "stylesheet" type = "text/css" spa-preserve / > < style > . e x p a n d - b u t t o n {
position: absolute;
display: flex;
float: right;
padding: 0.4rem;
margin: 0.3rem;
right: 0;
color: var(--gray);
border-color: var(--dark);
background-color: var(--light);
border: 1px solid;
border-radius: 5px;
opacity: 0;
transition: 0.2s;
}
.expand-button > svg {
fill: var(--light);
filter: contrast(0.3);
}
.expand-button:hover {
cursor: pointer;
border-color: var(--secondary);
}
.expand-button:focus {
outline: 0;
}
pre:hover > .expand-button {
opacity: 1;
transition: 0.2s;
}
#mermaid-container {
position: fixed;
contain: layout;
z-index: 999;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: none;
backdrop-filter: blur(4px);
background: rgba(0, 0, 0, 0.5);
}
#mermaid-container.active {
display: inline-block;
}
#mermaid-container > #mermaid-space {
border: 1px solid var(--lightgray);
background-color: var(--light);
border-radius: 5px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 80vh;
width: 80vw;
overflow: hidden;
}
#mermaid-container > #mermaid-space > .mermaid-content {
padding: 2rem;
position: relative;
transform-origin: 0 0;
transition: transform 0.1s ease;
overflow: visible;
min-height: 200px;
min-width: 200px;
}
#mermaid-container > #mermaid-space > .mermaid-content pre {
margin: 0;
border: none;
}
#mermaid-container > #mermaid-space > .mermaid-content svg {
max-width: none;
height: auto;
}
#mermaid-container > #mermaid-space > .mermaid-controls {
position: absolute;
bottom: 20px;
right: 20px;
display: flex;
gap: 8px;
padding: 8px;
background: var(--light);
border: 1px solid var(--lightgray);
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
padding: 0;
border: 1px solid var(--lightgray);
background: var(--light);
color: var(--dark);
border-radius: 4px;
cursor: pointer;
font-size: 16px;
font-family: var(--bodyFont);
transition: all 0.2s ease;
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button:hover {
background: var(--lightgray);
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button:active {
transform: translateY(1px);
}
#mermaid-container > #mermaid-space > .mermaid-controls .mermaid-control-button:nth-child(2) {
width: auto;
padding: 0 12px;
font-size: 14px;
}
2025-06-16 23:48:39 -05:00
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL3Zhci9ob21lL3J1YmVuL0dpdC9zbmVleHkvbm90ZWJvb2svcXVhcnR6L2NvbXBvbmVudHMvc3R5bGVzIiwic291cmNlcyI6WyJtZXJtYWlkLmlubGluZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOzs7QUFLRjtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLmV4cGFuZC1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsb2F0OiByaWdodDtcbiAgcGFkZGluZzogMC40cmVtO1xuICBtYXJnaW46IDAuM3JlbTtcbiAgcmlnaHQ6IDA7IC8vIE5PVEU6IHJpZ2h0IHdpbGwgYmUgc2V0IGluIG1lcm1haWQuaW5saW5lLnRzXG4gIGNvbG9yOiB2YXIoLS1ncmF5KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1kYXJrKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQpO1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiAwLjJzO1xuXG4gICYgPiBzdmcge1xuICAgIGZpbGw6IHZhcigtLWxpZ2h0KTtcbiAgICBmaWx0ZXI6IGNvbnRyYXN0KDAuMyk7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG5wcmUge1xuICAmOmhvdmVyID4gLmV4cGFuZC1idXR0b24ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuXG4jbWVybWFpZC1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGNvbnRhaW46IGxheW91dDtcbiAgei1pbmRleDogOTk5O1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogbm9uZTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcblxuICAmLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgJiA+ICNtZXJtYWlkLXNwYWNlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWdodGdyYXkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICBoZWlnaHQ6IDgwdmg7XG4gICAgd2lkdGg6IDgwdnc7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYgPiAubWVybWFpZC1jb250ZW50IHtcbiAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBtaW4taGVpZ2h0OiAyMDBweDtcbiAgICAgIG1pbi13aWR0aDogMjAwcHg7XG5cbiAgICAgIHByZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgfVxuXG4gICAgICBzdmcge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmID4gLm1lcm1haWQtY29udHJvbHMge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiA4cHg7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWdodCk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWdodGdyYXkpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgIHotaW5kZXg6IDI7XG5cbiAgICAgIC5tZXJtYWlkLWNvbnRyb2wtYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpZ2h0Z3JheSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWRhcmspO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tYm9keUZvbnQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4
2025-06-14 01:35:21 -05:00
< p > i try my best to sort my pages into separate categories:< / p >
< ul >
< li > < a href = "./knowledgebase" class = "internal" data-slug = "knowledgebase" > knowledgebase< / a > ,
< ul >
< li > a place that acts as… my knowledgebase. this will range from many things, such as whole blogposts or rants or opinions to (probably) helpful things like guides.< / li >
< / ul >
< / li >
< li > < a href = "./writings" class = "internal" data-slug = "writings" > writings< / a > ,
< ul >
2025-06-14 03:16:38 -05:00
< li > a place to store any fictional writings i do from time to time. most things in here are < em > nsfw< / em > and generally will pretty much be the same exact kinks and fetishes on repeat (mainly consisting of fat, < em > sometimes< / em > vore), so i suggest staying away if you’ re not a fan of that stuff< / li >
2025-06-14 01:35:21 -05:00
< / ul >
< / li >
< li > < a href = "./dump" class = "internal" data-slug = "dump" > dump< / a > ,
< ul >
< li > a place where i just dump anything else in here that doesn’ t fit into the other categories. this may range from what/how i’ m doing, whole entire thoughts to simple short sentences of what i think about something.< / li >
< / ul >
< / li >
< li > < a href = "./horrors" class = "internal" data-slug = "horrors" > horrors< / a > ,
< ul >
< li > a place where i vomit anything that i need to rip out of me. this < em > only< / em > contains copious amounts of negative mental health posting and other unhealthy things, so there’ s the content warning for that.< / li >
< / ul >
< / li >
< / ul >
2025-06-16 23:48:39 -05:00
< p > other places of interest:< / p >
< ul >
< li > < a href = "./doing" class = "internal" data-slug = "doing" > doing< / a > ,
< ul >
< li > a sort of publicized “to-do” list (“what i’ m doing now”, “what’ s planned”, etc.)< / li >
< / ul >
< / li >
< / ul >
2025-06-14 01:35:21 -05:00
< p > this page is powered by < a href = "https://quartz.jzhao.xyz" class = "external" > quartz< svg aria-hidden = "true" class = "external-icon" style = "max-width:0.8em;max-height:0.8em;" viewBox = "0 0 512 512" > < path d = "M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z" > < / path > < / svg > < / a > , and is fed by an < a href = "https://git.gay/sneexy/notebook" class = "external" > obsidian vault< svg aria-hidden = "true" class = "external-icon" style = "max-width:0.8em;max-height:0.8em;" viewBox = "0 0 512 512" > < path d = "M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z" > < / path > < / svg > < / a > .< / p >
< blockquote class = "callout info" data-callout = "info" >
< div class = "callout-title" >
< div class = "callout-icon" > < / div >
< div class = "callout-title-inner" > < p > some notices about this page < / p > < / div >
< / div >
< div class = "callout-content" >
< div class = "callout-content-inner" >
< ul >
< li > quartz has < a href = "https://github.com/jackyzha0/quartz/issues/1819" class = "external" > accessibility issues< svg aria-hidden = "true" class = "external-icon" style = "max-width:0.8em;max-height:0.8em;" viewBox = "0 0 512 512" > < path d = "M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z" > < / path > < / svg > < / a > that i cannot control.
< ul >
< li > unless there is other software like quartz i can use that won’ t have these issues, this and other pages here will continue to be generated with quartz.< / li >
< li > yes, my main site is generated with < a href = "https://www.11ty.dev" class = "external" > eleventy< svg aria-hidden = "true" class = "external-icon" style = "max-width:0.8em;max-height:0.8em;" viewBox = "0 0 512 512" > < path d = "M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z" > < / path > < / svg > < / a > , but i failed to understand how to properly convert markdown files into full blogs and no existing examples actually helped bring me closer to understanding how to make it work.< / li >
< / ul >
< / li >
2025-06-14 03:16:38 -05:00
< li > some links may be wrong at random and error upon visiting. this consistently happens when you try to directly view a post via browsing a “folder”, avoiding doing that will have no issues.< / li >
< li > < b > this is my comfort zone.< / b > i will type everything in the way i feel like doing so, such as how all of this text is uncapitalized, all opinions are my own etc etc. i might make some “proper” pages from time to time, but again, my comfort zone.< / li >
2025-06-14 01:35:21 -05:00
< / ul >
< / div >
< / div >
< / blockquote >
< p > if you don’ t think you’ d want here, feel free to < a href = "https://synth.download/~sneexy" class = "external" > head back< svg aria-hidden = "true" class = "external-icon" style = "max-width:0.8em;max-height:0.8em;" viewBox = "0 0 512 512" > < path d = "M320 0H288V64h32 82.7L201.4 265.4 178.7 288 224 333.3l22.6-22.6L448 109.3V192v32h64V192 32 0H480 320zM32 32H0V64 480v32H32 456h32V480 352 320H424v32 96H64V96h96 32V32H160 32z" > < / path > < / svg > < / a > . no hard feelings.< / p > < / article > < hr / > < div class = "page-footer" > < / div > < / div > < div class = "right sidebar" > < div class = "graph" > < h3 > Graph View< / h3 > < div class = "graph-outer" > < div class = "graph-container" data-cfg = "{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[],"focusOnHover":false,"enableRadial":false}" > < / div > < button class = "global-graph-icon" aria-label = "Global Graph" > < svg version = "1.1" xmlns = "http://www.w3.org/2000/svg" xmlns:xlink = "http://www.w3.org/1999/xlink" x = "0px" y = "0px" viewBox = "0 0 55 55" fill = "currentColor" xml:space = "preserve" > < path d = "M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
2025-06-14 03:16:38 -05:00
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z">< / path > < / svg > < / button > < / div > < div class = "global-graph-outer" > < div class = "global-graph-container" data-cfg = "{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.2,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[],"focusOnHover":true,"enableRadial":true}" > < / div > < / div > < / div > < / div > < footer class > < p > Created with < a href = "https://quartz.jzhao.xyz/" > Quartz v4.5.1< / a > © 2025< / p > < ul > < li > < a href = "https://github.com/jackyzha0/quartz" > Quartz GitHub< / a > < / li > < li > < a href = "https://synth.download" > Synth.Download< / a > < / li > < li > < a href = "https://synth.download/~sneexy" > ~sneexy< / a > < / li > < / ul > < / footer > < / div > < / div > < / body > < script type = "application/javascript" > f u n c t i o n n ( ) { l e t t = t h i s . p a r e n t E l e m e n t ; t . c l a s s L i s t . t o g g l e ( " i s - c o l l a p s e d " ) ; l e t e = t . g e t E l e m e n t s B y C l a s s N a m e ( " c a l l o u t - c o n t e n t " ) [ 0 ] ; i f ( ! e ) r e t u r n ; l e t l = t . c l a s s L i s t . c o n t a i n s ( " i s - c o l l a p s e d " ) ; e . s t y l e . g r i d T e m p l a t e R o w s = l ? " 0 f r " : " 1 f r " } f u n c t i o n c ( ) { l e t t = d o c u m e n t . g e t E l e m e n t s B y C l a s s N a m e ( " c a l l o u t i s - c o l l a p s i b l e " ) ; f o r ( l e t e o f t ) { l e t l = e . g e t E l e m e n t s B y C l a s s N a m e ( " c a l l o u t - t i t l e " ) [ 0 ] , s = e . g e t E l e m e n t s B y C l a s s N a m e ( " c a l l o u t - c o n t e n t " ) [ 0 ] ; i f ( ! l | | ! s ) c o n t i n u e ; l . a d d E v e n t L i s t e n e r ( " c l i c k " , n ) , w i n d o w . a d d C l e a n u p ( ( ) = > l . r e m o v e E v e n t L i s t e n e r ( " c l i c k " , n ) ) ; l e t o = e . c l a s s L i s t . c o n t a i n s ( " i s - c o l l a p s e d " ) ; s . s t y l e . g r i d T e m p l a t e R o w s = o ? " 0 f r " : " 1 f r " } } d o c u m e n t . a d d E v e n t L i s t e n e r ( " n a v " , c ) ;
2025-06-14 01:35:21 -05:00
< / script > < script type = "module" > f u n c t i o n f ( i , e ) { i f ( ! i ) r e t u r n ; f u n c t i o n r ( o ) { o . t a r g e t = = = t h i s & & ( o . p r e v e n t D e f a u l t ( ) , o . s t o p P r o p a g a t i o n ( ) , e ( ) ) } f u n c t i o n t ( o ) { o . k e y . s t a r t s W i t h ( " E s c " ) & & ( o . p r e v e n t D e f a u l t ( ) , e ( ) ) } i ? . a d d E v e n t L i s t e n e r ( " c l i c k " , r ) , w i n d o w . a d d C l e a n u p ( ( ) = > i ? . r e m o v e E v e n t L i s t e n e r ( " c l i c k " , r ) ) , d o c u m e n t . a d d E v e n t L i s t e n e r ( " k e y d o w n " , t ) , w i n d o w . a d d C l e a n u p ( ( ) = > d o c u m e n t . r e m o v e E v e n t L i s t e n e r ( " k e y d o w n " , t ) ) } f u n c t i o n y ( i ) { f o r ( ; i . f i r s t C h i l d ; ) i . r e m o v e C h i l d ( i . f i r s t C h i l d ) } v a r h = c l a s s { c o n s t r u c t o r ( e , r ) { t h i s . c o n t a i n e r = e ; t h i s . c o n t e n t = r ; t h i s . s e t u p E v e n t L i s t e n e r s ( ) , t h i s . s e t u p N a v i g a t i o n C o n t r o l s ( ) , t h i s . r e s e t T r a n s f o r m ( ) } i s D r a g g i n g = ! 1 ; s t a r t P a n = { x : 0 , y : 0 } ; c u r r e n t P a n = { x : 0 , y : 0 } ; s c a l e = 1 ; M I N _ S C A L E = . 5 ; M A X _ S C A L E = 3 ; c l e a n u p s = [ ] ; s e t u p E v e n t L i s t e n e r s ( ) { l e t e = t h i s . o n M o u s e D o w n . b i n d ( t h i s ) , r = t h i s . o n M o u s e M o v e . b i n d ( t h i s ) , t = t h i s . o n M o u s e U p . b i n d ( t h i s ) , o = t h i s . r e s e t T r a n s f o r m . b i n d ( t h i s ) ; t h i s . c o n t a i n e r . a d d E v e n t L i s t e n e r ( " m o u s e d o w n " , e ) , d o c u m e n t . a d d E v e n t L i s t e n e r ( " m o u s e m o v e " , r ) , d o c u m e n t . a d d E v e n t L i s t e n e r ( " m o u s e u p " , t ) , w i n d o w . a d d E v e n t L i s t e n e r ( " r e s i z e " , o ) , t h i s . c l e a n u p s . p u s h ( ( ) = > t h i s . c o n t a i n e r . r e m o v e E v e n t L i s t e n e r ( " m o u s e d o w n " , e ) , ( ) = > d o c u m e n t . r e m o v e E v e n t L i s t e n e r ( " m o u s e m o v e " , r ) , ( ) = > d o c u m e n t . r e m o v e E v e n t L i s t e n e r ( " m o u s e u p " , t ) , ( ) = > w i n d o w . r e m o v e E v e n t L i s t e n e r ( " r e s i z e " , o ) ) } c l e a n u p ( ) { f o r ( l e t e o f t h i s . c l e a n u p s ) e ( ) } s e t u p N a v i g a t i o n C o n t r o l s ( ) { l e t e = d o c u m e n t . c r e a t e E l e m e n t ( " d i v " ) ; e . c l a s s N a m e = " m e r m a i d - c o n t r o l s " ; l e t r = t h i s . c r e a t e B u t t o n ( " + " , ( ) = > t h i s . z o o m ( . 1 ) ) , t = t h i s . c r e a t e B u t t o n ( " - " , ( ) = > t h i s . z o o m ( - . 1 ) ) , o = t h i s . c r e a t e B u t t o n ( " R e s e t " , ( ) = > t h i s . r e s e t T r a n s f o r m ( ) ) ; e . a p p e n d C h i l d ( t ) , e . a p p e n d C h i l d ( o ) , e . a p p e n d C h i l d ( r ) , t h i s . c o n t a i n e r . a p p e n d C h i l d ( e ) } c r e a t e B u t t o n ( e , r ) { l e t t = d o c u m e n t . c r e a t e E l e m e n t ( " b u t t o n " ) ; r e t u r n t . t e x t C o n t e n t = e , t . c l a s s N a m e = " m e r m a i d - c o n t r o l - b u t t o n " , t . a d d E v e n t L i s t e n e r ( " c l i c k " , r ) , w i n d o w . a d d C l e a n u p ( ( ) = > t . r e m o v e E v e n t L i s t e n e r ( " c l i c k " , r ) ) , t } o n M o u s e D o w n ( e ) { e . b u t t o n = = = 0 & & ( t h i s . i s D r a g g i n g = ! 0 , t h i s . s t a r t P a n = { x : e . c l i e n t X - t h i s . c u r r e n t P a n . x , y : e . c l i e n t Y - t h i s . c u r r e n t P a n . y } , t h i s . c o n t a i n e r . s t y l e . c u r s o r = " g r a b b i n g " ) } o n M o u s e M o v e ( e ) { t h i s . i s D r a g g i n g & & ( e . p r e v e n t D e f a u l t ( ) , t h i s . c u r r e n t P a n = { x : e . c l i e n t X - t h i s . s t a r t P a n . x , y : e . c l i e n t Y - t h i s . s t a r t P a n . y } , t h i s . u p d a t e T r a n s f o r m ( ) ) } o n M o u s e U p ( ) { t h i s . i s D r a g g i n g = ! 1 , t h i s . c o n t a i n e r . s t y l e . c u r s o r = " g r a b " } z o o m ( e ) { l e t r = M a t h . m i n ( M a t h . m a x ( t h i s . s c a l e + e , t h i s . M I N _ S C A L E ) , t h i s . M A X _ S C A L E ) , t = t h i s . c o n t e n t . g e t B o u n d i n g C l i e n t R e c t ( ) , o = t . w i d t h / 2 , n = t . h e i g h t / 2 , c = r - t h i s . s c a l e ; t h i s . c u r r e n t P a n . x - = o * c , t h i s . c u r r e n t P a n . y - = n * c , t h i s . s c a l e = r , t h i s . u p d a t e T r a n s f o r m ( ) } u p d a t e T r a n s f o r m ( ) { t h i s . c o n t e n t . s t y l e . t r a n s f o r m = ` t r a n s l a t e ( $ { t h i s . c u r r e n t P a n . x } p x , $ { t h i s . c u r r e n t P a n . y } p x ) s c a l e ( $ { t h i s . s c a l e } ) ` } r e s e t T r a n s f o r m ( ) { t h i s . s c a l e = 1 ; l e t e = t h i s . c o n t e n t . q u e r y S e l e c t o r ( " s v g " ) ; t h i s . c u r r e n t P a n = { x : e . g e t B o u n d i n g C l i e n t R e c t ( ) . w i d t h / 2 , y : e . g e t B o u n d i n g C l i e n t R e c t ( ) . h e i g h t / 2 } , t h i s . u p d a t e T r a n s f o r m ( ) } } , C = [ " - - s e c o n d a r y " , " - - t e r t i a r y " , " - - g r a y " , " - - l i g h t " , " - - l i g h t g r a y " , " - - h i g h l i g h t " , " - - d a r k " , " - - d a r k g r a y " , " - - c o d e F o n t " ] , E ; d o c u m e n t . a d d E v e n t L i s t e n e r ( " n a v " , a s y n c ( ) = > { l e t e = d o c u m e n t . q u e r y S e l e c t o r ( " . c e n t e r " ) . q u e r y S e l e c t o r A l l ( " c o d e . m e r m a i d " ) ; i f ( e . l e n g t h = = = 0 ) r e t u r n ; E | | = a w a i t i m p o r t ( " h t t p s : / / c d n j s . c l o u d f l a r e . c o m / a j a x / l i b s / m e r m a i d / 1 1 . 4 . 0 / m e r m a i d . e s m . m i n . m j s " ) ; l e t r = E . d e f a u l t , t = n e w W e a k M a p ; f o r ( l e t n o f e ) t . s e t ( n , n . i n n e r T e x t ) ; a s y n c f u n c t i o n o ( ) { f o r ( l e t s o f e ) { s . r e m o v e A t t r i b u t e ( " d a t a - p r o c e s s e d " ) ; l e t a = t . g e t ( s ) ; a & & ( s . i n n e r H T M L = a ) } l e t n = C . r e d u c e ( ( s , a ) = > ( s [ a ] = w i n d o w . g e t C o m p u t e d S t y l e ( d o c u m e n t . d o c u m e n t E l e m e n t ) . g e t P r o p e r t y V a l u e ( a ) , s ) , { } ) , c = d o c u m e n t . d o c u m e n t E l e m e n t . g e t A t t r i b u t e ( " s a v e d - t h e m e " ) = = = " d a r k " ; r . i n i t i a l i z e ( { s t a r t O n L o a d : ! 1 , s e c u r i t y L e v e l : " l o o s e " , t h e m e : c ? " d a r k " : " b a s e " , t h e m e V a r i a b l e s : { f o n t F a m i l y : n [ " - - c o d e F o n t " ] , p r i m a r y C o l o r : n [ " - - l i g h t " ] , p r i m a r y T e x t C o l o r : n [ " - - d a r k g r a y " ] , p r i m a r y B o r d e r C o l o r : n [ " - - t e r t i a r y " ] , l i n e C o l o r : n [ " - - d a r k g r a y " ] , s e c o n d a r y C o l o r : n [ " - - s e c o n d a r y " ] , t e r t i a r y C o l o r : n [ " - - t e r t i a r y " ] , c l u s t e r B k g : n [ " - - l i g h t " ] , e d g e L a b e l B a c k g r o u n d : n [ " - - h i g h l i g h t " ] } } ) , a w a i t r . r u n ( { n o d e s : e } ) } a w a i t o ( ) , d o c u m e n t . a d d E v e n t L i s t e n e r ( " t h e m e c h a n g e " , o ) , w i n d o w . a d d C l e a n u p ( ( ) = > d o c u m e n t . r e m o v e E v e n t L i s t e n e r ( " t h e m e c h a n g e " , o ) ) ; f o r ( l e t n = 0 ; n < e . l e n g t h ; n + + ) { l e t v = f u n c t i o n ( ) { l e t g = l . q u e r y S e l e c t o r ( " # m e r m a i d - s p a c e " ) , m = l . q u e r y S e l e c t o r ( " . m e r m a i d - c o n t e n t " ) ; i f ( ! m ) r e t u r n ; y ( m ) ; l e t w = c . q u e r y S e l e c t o r ( " s v g " ) . c l o n e N o d e ( ! 0 ) ; m . a p
< / script > < script src = "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/copy-tex.min.js" type = "application/javascript" > < / script > < script src = "./postscript.js" type = "module" > < / script > < / html >