494 lines
11 KiB
CSS
Raw Normal View History

/**********************************************************************
*
*
*
**********************************************************************/
:root {
--font-size: 5mm;
--outline-padding: 5rem;
--item-indent: 2rem;
--item-padding-ratio: 0.2;
--checkbox-size: 1.5rem;
--checkbox-margin: 0.5em;
--button-size: 2em;
}
/*********************************************************************/
:root {
font-family: sans-serif;
font-size: var(--font-size);
/*text-size-adjust: none;*/
text-size-adjust: 150%;
}
.editor {
--item-padding: calc(1em * var(--item-padding-ratio));
}
/*********************************************************************/
.editor {
display: block;
position: relative;
}
.editor .code {
display: none;
}
.editor .children {
}
.editor .outline {
display: block;
position: relative;
/* XXX do a better calculation... */
width: calc(100% - var(--button-size) - var(--outline-padding) * 2);
padding-left: var(--outline-padding);
padding-right: var(--outline-padding);
}
.editor .outline .block {
position: relative;
outline: none;
border: none;
}
.editor .outline .block .block {
margin-left: var(--item-indent);
}
.editor .outline .block>.text {
display: block;
width: 100%;
/* XXX this is a tiny bit off and using .code's height here is off too... */
min-height: calc(1em + var(--item-padding) * 2);
padding-top: var(--item-padding);
padding-bottom: var(--item-padding);
padding-left: 0;
padding-right: 0;
margin: 0;
box-sizing: border-box;
font-family: sans-serif;
font-size: var(--font-size);
white-space: pre-wrap;
outline: none;
border: none;
}
/* show/hide node's view/code... */
/*.editor .outline .block>.code:focus+.view,*/
.editor .outline .block>.code:not(:focus) {
position: absolute;
opacity: 0;
}
/* hide .view content but show before/after -- keep bulets and touch zones... */
.editor .outline .block>.code:focus+.view {
position: absolute;
top: 0;
visibility: hidden;
}
.editor .outline .block>.code:focus+.view:before,
.editor .outline .block>.code:focus+.view:after {
visibility: visible;
}
/* click through the .view text to the .code */
.editor .outline .block>.view {
position: relative;
pointer-events: none;
}
/* block hover... */
.editor .outline .block:hover>.view {
background: linear-gradient(
90deg,
rgba(0,0,0,0.01) 0%,
rgba(0,0,0,0.01) 80%,
rgba(0,0,0,0.03) 100%);
}
.editor .outline .block>.view:blank {
content: " ";
}
.editor .outline .block>.code {
height: calc(2 * var(--item-padding) + 1em);
overflow: hidden;
resize: none;
}
/* clickable things in view */
.editor .outline .block>.view a,
.editor .outline .block>.view input {
pointer-events: auto;
}
/* focus... */
editor .outline .block:focus {
/*outline: solid 0.2em silver;*/
outline: none;
}
.editor .outline .block:focus>.text {
background: rgba(0,0,0,0.1);
}
.editor .outline .block.focused:not(:focus)>.text {
background: rgba(0,0,0,0.01);
}
.editor .outline div[collapsed] {
border-bottom: solid 1px silver;
}
/* click/tap zones for expand button... */
.editor .outline .block>.view:before,
.editor .outline .block>.view:after {
--size: 3rem;
content: "";
position: absolute;
display: flex;
top: 0;
right: calc(-1 * var(--size));
width: var(--size);
height: 100%;
align-items: top;
justify-content: center;
box-sizing: border-box;
border-left: solid 0.5em transparent;
border-right: solid 0.5em transparent;
/* make the text align to the center of the first line... */
font-size: 1rem;
/* XXX the 1.1 coeficient here is a hack... */
line-height: calc(
var(--font-size)
* 1.1
+ var(--font-size)
* var(--item-padding-ratio)
* 2);
pointer-events: auto;
background: transparent;
}
/* left indicator */
.editor .outline .block>.view:before {
justify-content: right;
left: calc(-1 * var(--size));
}
/* right indicator (collapse/expand) */
.editor .outline .block>.view:after {
color: silver;
}
.editor .outline .block:has(.block)>.view:after {
content: "○";
}
.editor .outline .block[collapsed]>.view:after {
content: "●";
}
/* collapse -- hide children... */
.editor .outline .block[collapsed] .block {
display: none;
}
/* XXX are we selecting subtrees or blocks??? */
.editor .outline [selected] {
background: silver;
}
.editor .toolbar {
display: inline-block;
position: absolute;
top: 1em;
right: 1em;
}
.editor .toolbar button {
--margin: 0.1em;
display: block;
width: calc(var(--button-size) + var(--margin) * 2);
height: var(--button-size);
margin: var(--margin);
font-size: var(--button-size);
}
/********************************************************** Styles ***/
/* Headings... */
.editor .outline .heading-1,
.editor .outline .heading-2,
.editor .outline .heading-3,
.editor .outline .heading-4,
.editor .outline .heading-5,
.editor .outline .heading-6 {
margin-top: 1rem;
}
.editor .outline .heading-1>.text,
.editor .outline .heading-2>.text,
.editor .outline .heading-3>.text,
.editor .outline .heading-4>.text,
.editor .outline .heading-5>.text,
.editor .outline .heading-6>.text {
font-weight: bold;
}
.editor .outline .heading-1>.text,
.editor .outline .heading-2>.text,
.editor .outline .heading-3>.text {
border-bottom: solid 1px rgba(0,0,0,0.1);
}
.editor .outline .heading-1>.text {
--font-size: 2.5em;
}
.editor .outline .heading-2>.text {
--font-size: 1.9em;
}
.editor .outline .heading-3>.text {
--font-size: 1.5em;
}
.editor .outline .heading-4>.text {
--font-size: 1.3em;
}
.editor .outline .heading-5>.text {
--font-size: 1.1em;
}
.editor .outline .heading-6>.text {
--font-size: 1em;
}
/* Quote... */
.editor .outline .quote>.text {
--indent: 1rem;
--margin: 0.7rem;
--item-padding-ratio: 0.7;
/* XXX for some reason if this is not set here it will not see the new --item-padding-ratio */
--item-padding: calc(1rem * var(--item-padding-ratio));
margin-top: var(--margin);
margin-bottom: var(--margin);
padding: var(--item-padding) 1.5rem;
color: rgba(0,0,0,0.8);
/* XXX border messes up bullet alignment... */
/*border-left: solid 0.2em silver;*/
box-shadow: inset 0.2em 0 0 0 silver;
background: rgba(0,0,0,0.05);
}
/* List... */
/* XXX needs to be in the middle of the first .view but with universal size... */
.editor .outline .list-item>.view:before,
.editor .outline .list>.children>.block>.view:not(:empty):before {
content: "◼";
color: gray;
}
.editor .outline
.list>.children
>.list>.children>.block>.view:not(:empty):before {
content: "●";
}
.editor .outline
.list>.children
>.list>.children
>.list>.children>.block>.view:not(:empty):before {
content: "○";
}
.editor .outline
.list>.children
>.list>.children
>.list>.children
>.list>.children>.block>.view:not(:empty):before {
content: "▪";
}
/* List... */
/* XXX nested lists are broken -- seems that I need a container for the children... */
.editor .outline .numbered-list>.children {
counter-reset: numbered-list;
}
.editor .outline .numbered-list>.children>.block>.view:not(:empty):before {
counter-increment: numbered-list;
content: counter(numbered-list) ".";
color: gray;
}
.editor .outline
.numbered-list>.children
>.numbered-list>.children>.block>.view:not(:empty):before {
counter-increment: numbered-list;
content: counter(numbered-list, lower-alpha) ".";
color: gray;
}
.editor .outline
.numbered-list>.children
>.numbered-list>.children
>.numbered-list>.children>.block>.view:not(:empty):before {
counter-increment: numbered-list;
content: counter(numbered-list, lower-roman) ".";
color: gray;
}
.editor .outline
.numbered-list>.children
>.numbered-list>.children
>.numbered-list>.children
>.numbered-list>.children>.block>.view:not(:empty):before {
counter-increment: numbered-list;
content: counters(numbered-list, ".") ".";
color: gray;
}
/* Notes... */
.editor .outline .NOTE {
--margin: 1rem;
--padding-h: 2rem;
--padding-v: 1.2em;
margin: var(--margin) 0;
padding: var(--padding-v) var(--padding-h);
border: solid 2px silver;
background: rgba(0,0,0,0.05);
}
/* XXX this prevents it from being accesible via click/tap... */
.editor .outline .NOTE>.view:empty {
display: none;
}
.editor .outline .NOTE>.view:empty ~ .block {
/* XXX calculate this... */
margin-left: 1em;
}
.editor .outline .NOTE>.view:before {
content: "" !important;
}
/* correct the right click zone... */
/* XXX need to account for nesting... (???) */
.editor .outline .block.NOTE>.view:after,
.editor .outline .block.NOTE .block>.view:after {
margin-right: calc(-1 * var(--padding-h));
}
/* Highlightes... */
.editor .outline .highlight {
font-weight: bold;
background: yellow;
}
.editor .outline .XXX>.view {
background: yellow;
}
/* Comments... */
.editor.hide-comments .outline .comment {
display: none;
}
.editor .outline .comment>.view {
color: silver;
}
/* Checkboxes... */
.editor .outline .block.todo>.view {
width: calc(
100%
- var(--checkbox-size)
- var(--checkbox-margin));
margin-left: calc(
var(--checkbox-size)
+ var(--checkbox-margin));
}
.editor .outline .block.check>.view input[type=checkbox],
.editor .outline .block.todo>.view input[type=checkbox] {
height: var(--checkbox-size);
width: var(--checkbox-size);
margin-top: calc(var(--checkbox-size) / -2);
margin-left: var(--checkbox-margin);
margin-right: var(--checkbox-margin);
transform: translateY(calc(2 * var(--item-padding)));
/* NOTE: this appears to be needed for the em sizes above to work correctly */
font-size: 1em;
}
.editor .outline .block.todo>.view input[type=checkbox]:first-child {
margin-left: calc(
-1 * var(--checkbox-size)
- var(--checkbox-margin));
}
/* correct the left click zone... */
.editor .outline .block.todo>.view:before {
margin-left: calc(
-1 * var(--checkbox-size)
- var(--checkbox-margin));
}
/* code... */
.editor .outline .block>.view code {
padding: 0.1em 0.3em;
font-family: monospace;
background: rgba(0,0,0,0.07);
border-radius: 0.2em;
}
/* Tables... */
.editor .outline .block>.view>table {
width: 100%;
border-collapse: collapse;
}
.editor .outline .block>.view>table tr:nth-child(odd) {
background: rgba(0,0,0,0.03);
}
.editor .outline .block>.view>table tr:first-child {
font-weight: bold;
border-bottom: solid 0.1rem silver;
background: transparent;
}
.editor .outline .block>.view>table td {
height: calc(1em + var(--item-padding) * 2);
padding: 0 1em;
/*text-align: center;*/
}
/********************************************************* Testing ***/
.editor.show-click-zones .outline .block>.view:before,
.editor.show-click-zones .outline .block>.view:after {
background: rgba(0,0,0,0.03);
border: solid 1px silver;
}
.editor.show-click-zones .outline .block:hover>.view:before,
.editor.show-click-zones .outline .block:hover>.view:after {
background: rgba(0,0,0,0.1);
}
/*********************************************************************/