bookish-press 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/components/Auth.svelte +27 -24
- package/components/Auth.svelte.d.ts +4 -4
- package/components/Authentication.d.ts +2 -2
- package/components/BookPreview.svelte +75 -59
- package/components/BookPreview.svelte.d.ts +5 -5
- package/components/External.svelte +1 -1
- package/components/External.svelte.d.ts +3 -3
- package/components/Link.svelte +49 -3
- package/components/Link.svelte.d.ts +3 -4
- package/components/app/BookList.svelte +19 -0
- package/components/app/BookList.svelte.d.ts +18 -0
- package/components/app/Button.svelte +49 -0
- package/components/app/Button.svelte.d.ts +22 -0
- package/components/app/Feedback.svelte +47 -0
- package/components/app/Feedback.svelte.d.ts +18 -0
- package/components/app/Head.svelte +15 -0
- package/components/app/Head.svelte.d.ts +18 -0
- package/components/app/Large.svelte +8 -0
- package/components/app/Large.svelte.d.ts +27 -0
- package/components/app/Lead.svelte +12 -0
- package/components/app/Lead.svelte.d.ts +27 -0
- package/components/app/Link.svelte +24 -0
- package/components/app/Link.svelte.d.ts +20 -0
- package/components/app/Options.svelte +24 -0
- package/components/app/Options.svelte.d.ts +19 -0
- package/components/app/Paragraph.svelte +20 -0
- package/components/app/Paragraph.svelte.d.ts +18 -0
- package/components/app/Section.svelte +12 -0
- package/components/app/Section.svelte.d.ts +27 -0
- package/components/app/Table.svelte +32 -0
- package/components/app/Table.svelte.d.ts +27 -0
- package/components/app/TextInput.svelte +38 -0
- package/components/app/TextInput.svelte.d.ts +22 -0
- package/components/chapter/Atom.svelte +20 -6
- package/components/chapter/Atom.svelte.d.ts +3 -3
- package/components/chapter/Block.svelte +26 -21
- package/components/chapter/Block.svelte.d.ts +4 -4
- package/components/chapter/Callout.svelte +38 -7
- package/components/chapter/Callout.svelte.d.ts +4 -4
- package/components/chapter/CaptionedCode.svelte +67 -24
- package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
- package/components/chapter/ChapterBody.svelte +62 -9
- package/components/chapter/ChapterBody.svelte.d.ts +5 -4
- package/components/chapter/Citations.svelte +86 -20
- package/components/chapter/Citations.svelte.d.ts +4 -4
- package/components/chapter/Code.svelte +152 -21
- package/components/chapter/Code.svelte.d.ts +3 -3
- package/components/chapter/Comment.svelte +39 -17
- package/components/chapter/Comment.svelte.d.ts +3 -3
- package/components/chapter/Definition.svelte +52 -18
- package/components/chapter/Definition.svelte.d.ts +5 -8
- package/components/chapter/Embed.svelte +155 -67
- package/components/chapter/Embed.svelte.d.ts +6 -4
- package/components/chapter/ErrorMessage.svelte +7 -2
- package/components/chapter/ErrorMessage.svelte.d.ts +4 -4
- package/components/chapter/ExtendedPrism.d.ts +2 -0
- package/components/chapter/ExtendedPrism.js +69 -0
- package/components/chapter/Figure.svelte +90 -0
- package/components/chapter/Figure.svelte.d.ts +24 -0
- package/components/chapter/Footnote.svelte +75 -12
- package/components/chapter/Footnote.svelte.d.ts +4 -4
- package/components/chapter/Format.svelte +63 -38
- package/components/chapter/Format.svelte.d.ts +5 -4
- package/components/chapter/InlineCode.svelte +16 -6
- package/components/chapter/InlineCode.svelte.d.ts +4 -4
- package/components/chapter/Label.svelte +38 -9
- package/components/chapter/Label.svelte.d.ts +4 -4
- package/components/chapter/Link.svelte +24 -19
- package/components/chapter/Link.svelte.d.ts +4 -4
- package/components/chapter/List.svelte +75 -8
- package/components/chapter/List.svelte.d.ts +4 -4
- package/components/chapter/Marginal.svelte +169 -27
- package/components/chapter/Marginal.svelte.d.ts +6 -3
- package/components/chapter/Paragraph.svelte +79 -6
- package/components/chapter/Paragraph.svelte.d.ts +4 -4
- package/components/chapter/Positioned.svelte +33 -0
- package/components/chapter/Positioned.svelte.d.ts +19 -0
- package/components/chapter/Problem.svelte +15 -0
- package/components/chapter/Problem.svelte.d.ts +27 -0
- package/components/chapter/Python.svelte +68 -21
- package/components/chapter/Python.svelte.d.ts +4 -4
- package/components/chapter/Quote.svelte +64 -11
- package/components/chapter/Quote.svelte.d.ts +4 -4
- package/components/chapter/Rule.svelte +12 -1
- package/components/chapter/Rule.svelte.d.ts +4 -4
- package/components/chapter/Table.svelte +36 -25
- package/components/chapter/Table.svelte.d.ts +4 -4
- package/components/chapter/Text.svelte +61 -36
- package/components/chapter/Text.svelte.d.ts +5 -4
- package/components/editor/BookishEditor.svelte +373 -244
- package/components/editor/BookishEditor.svelte.d.ts +9 -6
- package/components/editor/CalloutEditor.svelte +5 -5
- package/components/editor/CalloutEditor.svelte.d.ts +4 -4
- package/components/editor/CaptionedCodeEditor.svelte +16 -12
- package/components/editor/CaptionedCodeEditor.svelte.d.ts +4 -4
- package/components/editor/CaretContext.d.ts +48 -16
- package/components/editor/CaretState.d.ts +16 -44
- package/components/editor/CaretUtilities.d.ts +2 -2
- package/components/editor/CaretView.svelte +82 -0
- package/components/editor/CaretView.svelte.d.ts +25 -0
- package/components/editor/CitationsEditor.svelte +36 -25
- package/components/editor/CitationsEditor.svelte.d.ts +4 -4
- package/components/editor/Clipboard.d.ts +2 -2
- package/components/editor/Command.d.ts +13 -12
- package/components/editor/Commands.d.ts +1 -1
- package/components/editor/Commands.js +1114 -571
- package/components/editor/ConfirmButton.svelte +18 -12
- package/components/editor/ConfirmButton.svelte.d.ts +5 -4
- package/components/editor/DefinitionEditor.svelte +29 -21
- package/components/editor/DefinitionEditor.svelte.d.ts +4 -4
- package/components/editor/EmbedEditor.svelte +93 -43
- package/components/editor/EmbedEditor.svelte.d.ts +3 -3
- package/components/editor/Icon.svelte +17 -0
- package/components/editor/Icon.svelte.d.ts +16 -0
- package/components/editor/ImageChooser.svelte +53 -34
- package/components/editor/ImageChooser.svelte.d.ts +3 -3
- package/components/editor/InlineCodeEditor.svelte +7 -4
- package/components/editor/InlineCodeEditor.svelte.d.ts +4 -4
- package/components/editor/LabelEditor.svelte +20 -11
- package/components/editor/LabelEditor.svelte.d.ts +4 -4
- package/components/editor/LanguageEditor.svelte +10 -7
- package/components/editor/LanguageEditor.svelte.d.ts +3 -3
- package/components/editor/LinkEditor.svelte +64 -39
- package/components/editor/LinkEditor.svelte.d.ts +4 -4
- package/components/editor/Note.svelte +4 -3
- package/components/editor/Note.svelte.d.ts +6 -2
- package/components/editor/Permissions.svelte +95 -0
- package/components/editor/Permissions.svelte.d.ts +20 -0
- package/components/editor/PositionEditor.svelte +9 -6
- package/components/editor/PositionEditor.svelte.d.ts +4 -4
- package/components/editor/QuoteEditor.svelte +7 -2
- package/components/editor/QuoteEditor.svelte.d.ts +4 -4
- package/components/editor/Switch.svelte +55 -28
- package/components/editor/Switch.svelte.d.ts +4 -4
- package/components/editor/TableEditor.svelte +10 -0
- package/components/editor/TableEditor.svelte.d.ts +17 -0
- package/components/editor/TextEditor.svelte +83 -45
- package/components/editor/TextEditor.svelte.d.ts +5 -4
- package/components/editor/Toggle.svelte +11 -8
- package/components/editor/Toggle.svelte.d.ts +4 -4
- package/components/editor/Toolbar.svelte +191 -144
- package/components/editor/Toolbar.svelte.d.ts +5 -8
- package/components/editor/ToolbarGroup.svelte +17 -23
- package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
- package/components/editor/ToolbarSpacer.svelte +8 -1
- package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
- package/components/editor/URLEditor.svelte +6 -8
- package/components/editor/URLEditor.svelte.d.ts +3 -3
- package/components/editor/UndoState.d.ts +3 -3
- package/components/editor/icons/annotate.svg +1 -0
- package/components/editor/icons/block.svg +1 -0
- package/components/editor/icons/bold.svg +1 -0
- package/components/editor/icons/bullets.svg +1 -0
- package/components/editor/icons/callout.svg +1 -0
- package/components/editor/icons/citation.svg +8 -0
- package/components/editor/icons/clear.svg +1 -0
- package/components/editor/icons/clipboard.svg +1 -0
- package/components/editor/icons/code.svg +1 -0
- package/components/editor/icons/columnafter.svg +1 -0
- package/components/editor/icons/columnbefore.svg +1 -0
- package/components/editor/icons/comment.svg +1 -0
- package/components/editor/icons/copy.svg +1 -0
- package/components/editor/icons/cut.svg +1 -0
- package/components/editor/icons/define.svg +7 -0
- package/components/editor/icons/deletecolumn.svg +1 -0
- package/components/editor/icons/deleterow.svg +1 -0
- package/components/editor/icons/footnote.svg +8 -0
- package/components/editor/icons/header1.svg +7 -0
- package/components/editor/icons/header2.svg +7 -0
- package/components/editor/icons/header3.svg +7 -0
- package/components/editor/icons/home.svg +1 -0
- package/components/editor/icons/indent.svg +1 -0
- package/components/editor/icons/italic.svg +1 -0
- package/components/editor/icons/label.svg +1 -0
- package/components/editor/icons/left.svg +1 -0
- package/components/editor/icons/level.svg +1 -0
- package/components/editor/icons/link.svg +1 -0
- package/components/editor/icons/list.svg +1 -0
- package/components/editor/icons/media.svg +1 -0
- package/components/editor/icons/middle.svg +1 -0
- package/components/editor/icons/numbers.svg +10 -0
- package/components/editor/icons/paragraph.svg +1 -0
- package/components/editor/icons/paste.svg +10 -0
- package/components/editor/icons/quote.svg +1 -0
- package/components/editor/icons/redo.svg +1 -0
- package/components/editor/icons/right.svg +1 -0
- package/components/editor/icons/rowabove.svg +1 -0
- package/components/editor/icons/rowbelow.svg +1 -0
- package/components/editor/icons/rule.svg +1 -0
- package/components/editor/icons/sub.svg +1 -0
- package/components/editor/icons/super.svg +1 -0
- package/components/editor/icons/table.svg +1 -0
- package/components/editor/icons/text.svg +1 -0
- package/components/editor/icons/time.svg +1 -0
- package/components/editor/icons/undo.svg +1 -0
- package/components/editor/icons/unindent.svg +1 -0
- package/components/editor/icons/unlink.svg +1 -0
- package/components/page/Acknowledgements.svelte +35 -24
- package/components/page/Acknowledgements.svelte.d.ts +4 -4
- package/components/page/Authors.svelte +34 -17
- package/components/page/Authors.svelte.d.ts +7 -6
- package/components/page/BookLoader.svelte +59 -0
- package/components/page/BookLoader.svelte.d.ts +16 -0
- package/components/page/BulkReferenceEditor.svelte +54 -23
- package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
- package/components/page/Chapter.svelte +234 -143
- package/components/page/Chapter.svelte.d.ts +3 -3
- package/components/page/ChapterContext.d.ts +4 -4
- package/components/page/ChapterNumber.svelte +9 -0
- package/components/page/ChapterNumber.svelte.d.ts +27 -0
- package/components/page/ChapterTitle.svelte +16 -0
- package/components/page/ChapterTitle.svelte.d.ts +18 -0
- package/components/page/Contexts.d.ts +42 -22
- package/components/page/Contexts.js +129 -17
- package/components/page/DefinitionView.svelte +129 -90
- package/components/page/DefinitionView.svelte.d.ts +3 -3
- package/components/page/Description.svelte +31 -19
- package/components/page/Description.svelte.d.ts +4 -4
- package/components/page/Edition.svelte +135 -81
- package/components/page/Edition.svelte.d.ts +5 -6
- package/components/page/EditionLoader.svelte +99 -0
- package/components/page/EditionLoader.svelte.d.ts +18 -0
- package/components/page/Editions.svelte +106 -0
- package/components/page/Editions.svelte.d.ts +14 -0
- package/components/page/Glossary.svelte +65 -49
- package/components/page/Glossary.svelte.d.ts +4 -4
- package/components/page/Header.svelte +143 -56
- package/components/page/Header.svelte.d.ts +8 -6
- package/components/page/Index.svelte +116 -80
- package/components/page/Index.svelte.d.ts +4 -4
- package/components/page/Instructions.svelte +18 -17
- package/components/page/Instructions.svelte.d.ts +6 -4
- package/components/page/License.svelte +39 -23
- package/components/page/License.svelte.d.ts +4 -4
- package/components/page/Loading.svelte +102 -12
- package/components/page/Loading.svelte.d.ts +6 -2
- package/components/page/Media.svelte +81 -53
- package/components/page/Media.svelte.d.ts +4 -4
- package/components/page/MediaPreview.svelte +26 -8
- package/components/page/MediaPreview.svelte.d.ts +3 -3
- package/components/page/Muted.svelte +10 -0
- package/components/page/Muted.svelte.d.ts +27 -0
- package/components/page/Outline.svelte +279 -59
- package/components/page/Outline.svelte.d.ts +3 -3
- package/components/page/Page.svelte +40 -9
- package/components/page/Page.svelte.d.ts +3 -3
- package/components/page/PageHeader.svelte +14 -0
- package/components/page/PageHeader.svelte.d.ts +18 -0
- package/components/page/PageParagraph.svelte +18 -0
- package/components/page/PageParagraph.svelte.d.ts +27 -0
- package/components/page/PossibleChapter.svelte +7 -7
- package/components/page/PossibleChapter.svelte.d.ts +4 -4
- package/components/page/PossibleReference.svelte +6 -11
- package/components/page/PossibleReference.svelte.d.ts +6 -7
- package/components/page/Print.svelte +27 -3
- package/components/page/Print.svelte.d.ts +4 -4
- package/components/page/Publish.svelte +134 -0
- package/components/page/Publish.svelte.d.ts +14 -0
- package/components/page/Reference.svelte +259 -117
- package/components/page/Reference.svelte.d.ts +5 -5
- package/components/page/References.svelte +45 -48
- package/components/page/References.svelte.d.ts +4 -4
- package/components/page/Rows.svelte +54 -0
- package/components/page/Rows.svelte.d.ts +27 -0
- package/components/page/Search.svelte +88 -63
- package/components/page/Search.svelte.d.ts +4 -4
- package/components/page/Status.svelte +46 -39
- package/components/page/Status.svelte.d.ts +4 -9
- package/components/page/SubdomainEditor.svelte +41 -27
- package/components/page/SubdomainEditor.svelte.d.ts +4 -4
- package/components/page/TableOfContents.svelte +264 -191
- package/components/page/TableOfContents.svelte.d.ts +4 -4
- package/components/page/TableOfContentsImage.svelte +8 -8
- package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
- package/components/page/TableOfContentsRow.svelte +97 -34
- package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
- package/components/page/ThemeEditor.svelte +177 -39
- package/components/page/ThemeEditor.svelte.d.ts +4 -4
- package/components/page/ThemeEditorPreview.svelte +35 -23
- package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
- package/components/page/ThemeSetEditor.svelte +15 -13
- package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
- package/components/page/ThemeVariableEditor.svelte +24 -15
- package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
- package/components/page/Title.svelte +12 -0
- package/components/page/Title.svelte.d.ts +27 -0
- package/components/page/Unknown.svelte +28 -21
- package/components/page/Unknown.svelte.d.ts +4 -4
- package/components/page/margins.js +50 -33
- package/index.d.ts +13 -0
- package/index.js +14 -0
- package/models/CRUD.d.ts +27 -0
- package/models/CRUD.js +262 -0
- package/models/Firebase.d.ts +1 -0
- package/models/Firebase.js +26 -16
- package/models/book/Book.d.ts +40 -39
- package/models/book/Book.js +121 -121
- package/models/book/BookMedia.d.ts +3 -3
- package/models/book/BookMedia.js +22 -16
- package/models/book/BookSaveStatus.d.ts +7 -0
- package/models/book/BookSaveStatus.js +8 -0
- package/models/book/Chapter.d.ts +50 -39
- package/models/book/Chapter.js +189 -198
- package/models/book/ChapterID.js +7 -7
- package/models/book/Definition.d.ts +1 -1
- package/models/book/Edition.d.ts +87 -61
- package/models/book/Edition.js +460 -309
- package/models/book/Reference.d.ts +24 -0
- package/models/book/Reference.js +78 -0
- package/models/book/Schema.d.ts +168 -0
- package/models/book/Schema.js +115 -0
- package/models/book/Theme.d.ts +44 -37
- package/models/book/Theme.js +452 -52
- package/models/book/ThemeColors.d.ts +1 -1
- package/models/book/Words.d.ts +2 -0
- package/models/book/Words.js +110 -0
- package/models/chapter/AtomNode.d.ts +4 -4
- package/models/chapter/AtomNode.js +20 -13
- package/models/chapter/BlockNode.d.ts +9 -10
- package/models/chapter/BlockNode.js +32 -13
- package/models/chapter/BlocksNode.d.ts +10 -10
- package/models/chapter/BlocksNode.js +315 -120
- package/models/chapter/BlocksNode.test.js +494 -228
- package/models/chapter/Bookkeeping.d.ts +1 -1
- package/models/chapter/CalloutNode.d.ts +3 -3
- package/models/chapter/CalloutNode.js +34 -12
- package/models/chapter/Caret.d.ts +9 -7
- package/models/chapter/Caret.js +11 -6
- package/models/chapter/ChapterNode.d.ts +11 -11
- package/models/chapter/ChapterNode.js +70 -33
- package/models/chapter/CitationsNode.d.ts +3 -3
- package/models/chapter/CitationsNode.js +31 -12
- package/models/chapter/CodeNode.d.ts +11 -6
- package/models/chapter/CodeNode.js +143 -34
- package/models/chapter/CommentNode.d.ts +5 -5
- package/models/chapter/CommentNode.js +29 -13
- package/models/chapter/DefinitionNode.d.ts +2 -2
- package/models/chapter/DefinitionNode.js +15 -7
- package/models/chapter/Edit.d.ts +3 -3
- package/models/chapter/EmbedNode.d.ts +9 -5
- package/models/chapter/EmbedNode.js +108 -35
- package/models/chapter/ErrorNode.d.ts +2 -2
- package/models/chapter/ErrorNode.js +34 -12
- package/models/chapter/FootnoteNode.d.ts +5 -5
- package/models/chapter/FootnoteNode.js +34 -16
- package/models/chapter/FormatNode.d.ts +10 -10
- package/models/chapter/FormatNode.js +237 -106
- package/models/chapter/FormatNode.test.js +87 -45
- package/models/chapter/InlineCodeNode.d.ts +2 -2
- package/models/chapter/InlineCodeNode.js +22 -9
- package/models/chapter/LabelNode.d.ts +4 -4
- package/models/chapter/LabelNode.js +31 -13
- package/models/chapter/LinkNode.d.ts +2 -2
- package/models/chapter/LinkNode.js +21 -9
- package/models/chapter/ListNode.d.ts +8 -8
- package/models/chapter/ListNode.js +99 -38
- package/models/chapter/ListNode.test.js +29 -24
- package/models/chapter/MetadataNode.d.ts +3 -3
- package/models/chapter/MetadataNode.js +13 -5
- package/models/chapter/Node.d.ts +5 -3
- package/models/chapter/Node.js +76 -29
- package/models/chapter/Node.test.js +20 -18
- package/models/chapter/ParagraphNode.d.ts +6 -6
- package/models/chapter/ParagraphNode.js +84 -29
- package/models/chapter/ParagraphNode.test.js +22 -13
- package/models/chapter/Parser.d.ts +27 -27
- package/models/chapter/Parser.js +220 -206
- package/models/chapter/Parser.test.js +16 -16
- package/models/chapter/Position.d.ts +1 -1
- package/models/chapter/QuoteNode.d.ts +6 -6
- package/models/chapter/QuoteNode.js +61 -23
- package/models/chapter/RootNode.d.ts +4 -4
- package/models/chapter/RuleNode.d.ts +2 -2
- package/models/chapter/RuleNode.js +31 -11
- package/models/chapter/TableNode.d.ts +8 -6
- package/models/chapter/TableNode.js +89 -34
- package/models/chapter/TableNode.test.js +22 -24
- package/models/chapter/TextNode.d.ts +6 -6
- package/models/chapter/TextNode.js +72 -32
- package/models/chapter/TextNode.test.js +4 -4
- package/package.json +108 -26
- package/util/getSubdomain.js +8 -6
- package/util/isMobile.js +1 -1
- package/util/mineReference.d.ts +3 -2
- package/util/mineReference.js +67 -29
- package/util/scrollToEyeLevel.js +6 -1
- package/components/chapter/renderPosition.d.ts +0 -3
- package/components/chapter/renderPosition.js +0 -4
- package/components/editor/ToolbarIcon.svelte +0 -22
- package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
- package/components/page/Alert.svelte +0 -11
- package/components/page/Alert.svelte.d.ts +0 -23
- package/components/page/Revisions.svelte +0 -124
- package/components/page/Revisions.svelte.d.ts +0 -14
- package/models/BookLoader.d.ts +0 -2
- package/models/BookLoader.js +0 -67
- package/models/Firestore.d.ts +0 -22
- package/models/Firestore.js +0 -194
- package/models/chapter/ReferenceNode.d.ts +0 -29
- package/models/chapter/ReferenceNode.js +0 -48
- package/models/loadEdition.d.ts +0 -5
- package/models/loadEdition.js +0 -16
|
@@ -34,35 +34,37 @@ function layout() {
|
|
|
34
34
|
function updateHeaders() {
|
|
35
35
|
// When the outline updates (due to the page its on updating), generate a unique string for the current header outline.
|
|
36
36
|
// If it's different from the last rendered state, refresh.
|
|
37
|
-
headers = Array.from(document.getElementsByClassName(
|
|
38
|
-
let newHeaderString = headers.reduce((sum, el) => sum + el.outerHTML,
|
|
37
|
+
headers = Array.from(document.getElementsByClassName('page-header'));
|
|
38
|
+
let newHeaderString = headers.reduce((sum, el) => sum + el.outerHTML, '');
|
|
39
39
|
// If the headers change, update the outline.
|
|
40
40
|
if (headerString !== newHeaderString)
|
|
41
41
|
headerString = newHeaderString;
|
|
42
42
|
}
|
|
43
|
-
function getHighlightThreshold() {
|
|
43
|
+
function getHighlightThreshold() {
|
|
44
|
+
return window.innerHeight / 3;
|
|
45
|
+
}
|
|
44
46
|
function position() {
|
|
45
47
|
// Left align the floating outline with the left margin of the chapter
|
|
46
48
|
// and the top of the title, unless we're past it.
|
|
47
|
-
let title = document.getElementsByClassName(
|
|
49
|
+
let title = document.getElementsByClassName('bookish-chapter-header-text')[0];
|
|
48
50
|
// If we found them both...
|
|
49
51
|
if (outline && title) {
|
|
50
52
|
// If so, remove the inline position so the footer CSS applies.
|
|
51
53
|
if (isMobile()) {
|
|
52
|
-
outline.style.removeProperty(
|
|
54
|
+
outline.style.removeProperty('margin-top');
|
|
53
55
|
}
|
|
54
56
|
// If not, set the position of the outline.
|
|
55
57
|
else {
|
|
56
58
|
let titleY = title.getBoundingClientRect().top + window.scrollY;
|
|
57
59
|
// If the title is off screen, anchor it to the top of the window. (CSS is set to do this).
|
|
58
60
|
if (titleY - 50 < window.scrollY) {
|
|
59
|
-
outline.classList.add(
|
|
60
|
-
outline.classList.remove(
|
|
61
|
+
outline.classList.add('outline-fixed-left');
|
|
62
|
+
outline.classList.remove('outline-title-left');
|
|
61
63
|
}
|
|
62
64
|
// Otherwise, anchor it to the title position.
|
|
63
65
|
else {
|
|
64
|
-
outline.classList.remove(
|
|
65
|
-
outline.classList.add(
|
|
66
|
+
outline.classList.remove('outline-fixed-left');
|
|
67
|
+
outline.classList.add('outline-title-left');
|
|
66
68
|
}
|
|
67
69
|
// Tell any listeners about the repositioning.
|
|
68
70
|
if (listener)
|
|
@@ -75,9 +77,11 @@ function highlight() {
|
|
|
75
77
|
const threshold = getHighlightThreshold();
|
|
76
78
|
// Find the header that we're past so we can update the outline.
|
|
77
79
|
let indexOfNearestHeaderAbove = -1; // -1 represents the title
|
|
78
|
-
Array.from(document.getElementsByClassName(
|
|
80
|
+
Array.from(document.getElementsByClassName('bookish-header')).forEach((header, index) => {
|
|
79
81
|
// Is this a header we care about?
|
|
80
|
-
if (header.tagName ===
|
|
82
|
+
if (header.tagName === 'H1' ||
|
|
83
|
+
header.tagName === 'H2' ||
|
|
84
|
+
header.tagName === 'H3') {
|
|
81
85
|
let rect = header.getBoundingClientRect();
|
|
82
86
|
let headerTop = rect.y + top - rect.height;
|
|
83
87
|
// Are we past this header?
|
|
@@ -91,83 +95,299 @@ function highlight() {
|
|
|
91
95
|
onMount(() => {
|
|
92
96
|
window.addEventListener('resize', layout);
|
|
93
97
|
window.addEventListener('scroll', layout);
|
|
94
|
-
// This is a bit hacky: we update the headers on every selection change so we
|
|
98
|
+
// This is a bit hacky: we update the headers on every selection change so we
|
|
95
99
|
// can detect any header changes during editing. This isn't necessary during
|
|
96
100
|
// reading, and is only necessary when a header is created, updated, or removed,
|
|
97
101
|
// but we don't have a precise mechanism to listen to chapter changes, so we do this instead.
|
|
98
|
-
document.addEventListener(
|
|
102
|
+
document.addEventListener('selectionchange', updateHeaders);
|
|
99
103
|
// Position outline after first render.
|
|
100
104
|
layout();
|
|
101
105
|
// Stop listening!
|
|
102
106
|
return () => {
|
|
103
107
|
window.removeEventListener('scroll', layout);
|
|
104
108
|
window.removeEventListener('resize', layout);
|
|
105
|
-
document.removeEventListener(
|
|
109
|
+
document.removeEventListener('selectionchange', updateHeaders);
|
|
106
110
|
};
|
|
107
111
|
});
|
|
108
|
-
let previousLabel =
|
|
109
|
-
let nextLabel =
|
|
110
|
-
let expandLabel =
|
|
111
|
-
let lightLabel =
|
|
112
|
-
let darkLabel =
|
|
112
|
+
let previousLabel = '\u25C0\uFE0E';
|
|
113
|
+
let nextLabel = '\u25B6\uFE0E';
|
|
114
|
+
let expandLabel = '\u2630';
|
|
115
|
+
let lightLabel = '\u263C';
|
|
116
|
+
let darkLabel = '\u263E';
|
|
113
117
|
</script>
|
|
114
118
|
|
|
115
|
-
<
|
|
119
|
+
<nav
|
|
116
120
|
bind:this={outline}
|
|
117
|
-
class={
|
|
121
|
+
class={'outline ' +
|
|
122
|
+
(!expanded || collapse ? 'outline-collapsed' : 'outline-expanded')}
|
|
118
123
|
>
|
|
119
|
-
<!-- Dark mode toggle -->
|
|
120
|
-
<div
|
|
121
|
-
class="bookish-outline-reading-mode"
|
|
122
|
-
role="button"
|
|
123
|
-
aria-label={$dark === true ? "Switch to light mode" : "Switch to dark mode"}
|
|
124
|
-
tabIndex=0
|
|
125
|
-
on:click={toggleReadingMode}
|
|
126
|
-
on:keydown={event => {
|
|
127
|
-
if(event.key === "Enter" || event.key === " ") {
|
|
128
|
-
toggleReadingMode();
|
|
129
|
-
event.stopPropagation();
|
|
130
|
-
}
|
|
131
|
-
}}
|
|
132
|
-
>
|
|
133
|
-
{$dark ? darkLabel : lightLabel}
|
|
134
|
-
</div>
|
|
135
124
|
<!-- Visual cue of expandability, only visible in footer mode. -->
|
|
136
|
-
<div
|
|
137
|
-
class={
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
125
|
+
<div
|
|
126
|
+
class={'outline-collapse-cue' +
|
|
127
|
+
(headers.length === 0 ? ' outline-collapse-cue-disabled' : '')}
|
|
128
|
+
role="button"
|
|
129
|
+
aria-label={expanded
|
|
130
|
+
? 'Collapse navigation menu'
|
|
131
|
+
: 'Expand navigation menu'}
|
|
132
|
+
tabIndex="0"
|
|
133
|
+
on:click={headers.length > 0 ? toggleExpanded : undefined}
|
|
134
|
+
on:keydown={(event) => {
|
|
135
|
+
if (event.key === 'Enter' || event.key === ' ') toggleExpanded();
|
|
145
136
|
}}
|
|
146
137
|
>
|
|
147
|
-
{
|
|
138
|
+
{expandLabel}
|
|
148
139
|
</div>
|
|
149
|
-
<div class="
|
|
150
|
-
|
|
140
|
+
<div class="outline-headers">
|
|
151
141
|
<!-- Book navigation links -->
|
|
152
|
-
<div class="
|
|
153
|
-
{#if previous !== null}<Link to={base +
|
|
142
|
+
<div class="outline-header-nav">
|
|
143
|
+
{#if previous !== null}<Link to={$base + previous}
|
|
144
|
+
>{previousLabel}</Link
|
|
145
|
+
>{:else}<span class="outline-header-nav-disabled"
|
|
146
|
+
>{previousLabel}</span
|
|
147
|
+
>{/if}
|
|
154
148
|
·
|
|
155
|
-
<Link to={base
|
|
149
|
+
<Link to={$base}>Home</Link>
|
|
156
150
|
·
|
|
157
|
-
{#if next !== null}<Link to={base +
|
|
151
|
+
{#if next !== null}<Link to={$base + next}>{nextLabel}</Link
|
|
152
|
+
>{:else}<span class="outline-header-nav-disabled"
|
|
153
|
+
>{nextLabel}</span
|
|
154
|
+
>{/if}
|
|
158
155
|
</div>
|
|
159
156
|
<!-- Scan through the headers and add a properly formatted link for each. -->
|
|
160
|
-
{#each headers as header, index
|
|
157
|
+
{#each headers as header, index}
|
|
161
158
|
<!-- Assumes that all headers have an H1, H2, etc. tag. -->
|
|
162
|
-
{@const level = Number.parseInt(header.tagName.charAt(1))
|
|
159
|
+
{@const level = Number.parseInt(header.tagName.charAt(1))}
|
|
163
160
|
<!-- Only h1, h2, and h3 headers... -->
|
|
164
|
-
{#if level <= 3
|
|
165
|
-
<Link to={
|
|
166
|
-
<div
|
|
161
|
+
{#if level <= 3}
|
|
162
|
+
<Link to={'#' + header.id}>
|
|
163
|
+
<div
|
|
164
|
+
class={'outline-header outline-header-level-' +
|
|
165
|
+
(level - 1) +
|
|
166
|
+
(headerIndex === index
|
|
167
|
+
? ' outline-header-active'
|
|
168
|
+
: '')}
|
|
169
|
+
>
|
|
167
170
|
{header.textContent}
|
|
168
171
|
</div>
|
|
169
172
|
</Link>
|
|
170
173
|
{/if}
|
|
171
174
|
{/each}
|
|
172
175
|
</div>
|
|
173
|
-
|
|
176
|
+
<!-- Dark mode toggle -->
|
|
177
|
+
<div
|
|
178
|
+
class="outline-reading-mode"
|
|
179
|
+
role="button"
|
|
180
|
+
aria-label={$dark === true
|
|
181
|
+
? 'Switch to light mode'
|
|
182
|
+
: 'Switch to dark mode'}
|
|
183
|
+
tabIndex="0"
|
|
184
|
+
on:click={toggleReadingMode}
|
|
185
|
+
on:keydown={(event) => {
|
|
186
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
187
|
+
toggleReadingMode();
|
|
188
|
+
event.stopPropagation();
|
|
189
|
+
}
|
|
190
|
+
}}
|
|
191
|
+
>
|
|
192
|
+
{$dark ? darkLabel : lightLabel}
|
|
193
|
+
</div>
|
|
194
|
+
</nav>
|
|
195
|
+
|
|
196
|
+
<style>
|
|
197
|
+
.outline {
|
|
198
|
+
font-family: var(--bookish-header-font-family);
|
|
199
|
+
font-weight: normal;
|
|
200
|
+
font-size: var(--bookish-paragraph-font-size);
|
|
201
|
+
color: var(--bookish-muted-color);
|
|
202
|
+
--outline-width: 12em;
|
|
203
|
+
--outline-padding: 1em;
|
|
204
|
+
--outline-offset: calc(
|
|
205
|
+
-1 * (var(--outline-width) + 3 * var(--outline-padding))
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.outline-header-nav {
|
|
210
|
+
display: inline-block;
|
|
211
|
+
width: 100%;
|
|
212
|
+
padding-bottom: var(--outline-padding);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.outline-header {
|
|
216
|
+
display: block;
|
|
217
|
+
line-height: var(--bookish-paragraph-line-height-tight);
|
|
218
|
+
text-indent: 0;
|
|
219
|
+
padding-left: 1rem;
|
|
220
|
+
padding-right: 1rem;
|
|
221
|
+
margin-bottom: 0.75rem;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.outline-header-level-0 {
|
|
225
|
+
font-size: 1rem;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.outline-header-level-1 {
|
|
229
|
+
font-size: 0.9rem;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.outline-header-level-2 {
|
|
233
|
+
font-size: 0.8rem;
|
|
234
|
+
font-style: italic;
|
|
235
|
+
margin-left: 1em;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
:global(a .outline-header),
|
|
239
|
+
:global(.outline-header-nav a) {
|
|
240
|
+
color: var(--bookish-muted-color);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
:global(a .outline-header-active),
|
|
244
|
+
:global(a:hover .outline-header) {
|
|
245
|
+
color: var(--bookish-paragraph-color);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.outline-header-nav-disabled {
|
|
249
|
+
opacity: 0.3;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
:global(.outline a:hover) {
|
|
253
|
+
text-decoration: none;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Only apply this on devices with hover abilities. */
|
|
257
|
+
@media (hover: hover) {
|
|
258
|
+
:global(.outline a:hover) {
|
|
259
|
+
color: var(--bookish-paragraph-color);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
:global(a .outline-header-active) {
|
|
264
|
+
color: var(--bookish-paragraph-color);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.outline-reading-mode {
|
|
268
|
+
transition: transform 0.2s ease-in;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.outline-reading-mode:hover {
|
|
272
|
+
cursor: pointer;
|
|
273
|
+
transform: scale(1.25, 1.25);
|
|
274
|
+
color: var(--bookish-paragraph-color);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* Mobile */
|
|
278
|
+
@media screen and (max-width: 1200px) {
|
|
279
|
+
.outline {
|
|
280
|
+
position: fixed;
|
|
281
|
+
top: 100%; /* Put it all the way off screen on the bottom, then let JS translate */
|
|
282
|
+
left: 0;
|
|
283
|
+
right: 0;
|
|
284
|
+
width: 100%;
|
|
285
|
+
z-index: 2; /* Put it above content when it's a sheet in the footer */
|
|
286
|
+
border-top: 1px solid var(--bookish-border-color-light);
|
|
287
|
+
text-align: left;
|
|
288
|
+
transition: transform 0.2s ease-in;
|
|
289
|
+
background-color: var(--bookish-background-color);
|
|
290
|
+
box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.25);
|
|
291
|
+
backdrop-filter: blur(10px);
|
|
292
|
+
-webkit-backdrop-filter: blur(10px);
|
|
293
|
+
/* Cap height at window size. If the content is too tall, scroll it. */
|
|
294
|
+
max-height: 100%;
|
|
295
|
+
overflow-y: scroll;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/* Make a little centered box to store the outline to preserve its left aligned structure, while making it easier to click. */
|
|
299
|
+
.outline-headers {
|
|
300
|
+
width: 20em;
|
|
301
|
+
margin: auto;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.outline-header-nav {
|
|
305
|
+
text-align: center;
|
|
306
|
+
padding-top: 0.5em; /* Add some spacing when in the footer */
|
|
307
|
+
padding-bottom: 0.5em;
|
|
308
|
+
text-indent: 0 !important; /* Override header default */
|
|
309
|
+
font-size: 1.25rem !important;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.outline-reading-mode {
|
|
313
|
+
position: absolute;
|
|
314
|
+
top: 0.5em;
|
|
315
|
+
left: 0;
|
|
316
|
+
font-size: 1em;
|
|
317
|
+
display: inline-block;
|
|
318
|
+
padding-left: 1em;
|
|
319
|
+
padding-right: 1em;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.outline-collapse-cue {
|
|
323
|
+
position: absolute;
|
|
324
|
+
top: 0.5em;
|
|
325
|
+
right: 0;
|
|
326
|
+
font-size: 1em;
|
|
327
|
+
display: inline-block;
|
|
328
|
+
padding-left: 1em;
|
|
329
|
+
padding-right: 1em;
|
|
330
|
+
transition: transform 0.2s ease-in;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.outline-collapse-cue:hover {
|
|
334
|
+
cursor: pointer;
|
|
335
|
+
transform: scale(1.25, 1.25);
|
|
336
|
+
color: var(--bookish-paragraph-color);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.outline-collapse-cue-disabled {
|
|
340
|
+
display: none;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.outline-expanded .outline-collapse-cue {
|
|
344
|
+
transform: rotate(90deg);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.outline.outline-expanded {
|
|
348
|
+
transform: translateY(-100%);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.outline.outline-collapsed {
|
|
352
|
+
transform: translateY(-3rem);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/* Desktop */
|
|
357
|
+
@media screen and (min-width: 1200px) {
|
|
358
|
+
.outline {
|
|
359
|
+
width: var(--outline-width);
|
|
360
|
+
z-index: 0; /* Put it below everything when it's in the margin. */
|
|
361
|
+
border-right: 1px solid var(--bookish-border-color-light);
|
|
362
|
+
padding: var(--outline-padding);
|
|
363
|
+
background-color: var(--bookish-background-color);
|
|
364
|
+
margin-right: var(--outline-padding);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/* When the outline is fixed to the left, it's translated by it's width (with some padding). */
|
|
368
|
+
/* It's left position is set outline.js. This class is set by outline.js. */
|
|
369
|
+
.outline.outline-fixed-left {
|
|
370
|
+
position: fixed;
|
|
371
|
+
display: inline-block;
|
|
372
|
+
top: 50px;
|
|
373
|
+
transform: translateX(var(--outline-offset));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/* When the outline is fixed to title, it's positioned absolutely relative to the book container. */
|
|
377
|
+
/* We set a margin appropriate for it's width above. This class is set in Outline.tsx. */
|
|
378
|
+
.outline.outline-title-left {
|
|
379
|
+
position: absolute;
|
|
380
|
+
margin-left: var(--outline-offset);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.outline-collapse-cue {
|
|
384
|
+
display: none;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.outline-reading-mode {
|
|
388
|
+
position: absolute;
|
|
389
|
+
top: calc(var(--outline-padding));
|
|
390
|
+
right: calc(var(--outline-padding));
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
</style>
|
|
@@ -11,9 +11,9 @@ declare const __propDef: {
|
|
|
11
11
|
};
|
|
12
12
|
slots: {};
|
|
13
13
|
};
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
14
|
+
export type OutlineProps = typeof __propDef.props;
|
|
15
|
+
export type OutlineEvents = typeof __propDef.events;
|
|
16
|
+
export type OutlineSlots = typeof __propDef.slots;
|
|
17
17
|
export default class Outline extends SvelteComponentTyped<OutlineProps, OutlineEvents, OutlineSlots> {
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -9,7 +9,8 @@ let mountTime = Date.now();
|
|
|
9
9
|
function watchLoading() {
|
|
10
10
|
const bodyHeight = document.body.clientHeight;
|
|
11
11
|
// If the height hasn't changed and images are loaded OR it's been 2 seconds, load.
|
|
12
|
-
if ((lastHeight === bodyHeight && imagesAreLoaded()) ||
|
|
12
|
+
if ((lastHeight === bodyHeight && imagesAreLoaded()) ||
|
|
13
|
+
Date.now() - mountTime > 2000) {
|
|
13
14
|
// Stop watching the images
|
|
14
15
|
stopWatching();
|
|
15
16
|
// Set to loaded to hide the overlay and notify callback if there is one.
|
|
@@ -32,7 +33,7 @@ onMount(() => {
|
|
|
32
33
|
});
|
|
33
34
|
function imagesAreLoaded() {
|
|
34
35
|
let done = true;
|
|
35
|
-
Array.from(document.getElementsByTagName(
|
|
36
|
+
Array.from(document.getElementsByTagName('img')).forEach((el) => {
|
|
36
37
|
done = done && el.complete;
|
|
37
38
|
});
|
|
38
39
|
return done;
|
|
@@ -41,13 +42,43 @@ function imagesAreLoaded() {
|
|
|
41
42
|
|
|
42
43
|
<svelte:head>
|
|
43
44
|
<title>{title}</title>
|
|
44
|
-
<meta name="description" content={title}
|
|
45
|
+
<meta name="description" content={title} />
|
|
45
46
|
</svelte:head>
|
|
46
47
|
|
|
47
|
-
{#if loaded === false
|
|
48
|
-
<Loading/>
|
|
48
|
+
{#if loaded === false}
|
|
49
|
+
<Loading />
|
|
49
50
|
{:else}
|
|
50
|
-
<
|
|
51
|
-
<slot
|
|
52
|
-
</
|
|
53
|
-
{/if}
|
|
51
|
+
<section class={'bookish-page' + (loaded ? ' loaded' : '')}>
|
|
52
|
+
<slot />
|
|
53
|
+
</section>
|
|
54
|
+
{/if}
|
|
55
|
+
|
|
56
|
+
<style>
|
|
57
|
+
/* A page, such as table of contents, chapter, or references */
|
|
58
|
+
.bookish-page {
|
|
59
|
+
max-width: 720px;
|
|
60
|
+
|
|
61
|
+
/* This helps marginals relative to the page */
|
|
62
|
+
position: relative;
|
|
63
|
+
|
|
64
|
+
/* To make room for navigation footer. Without this, the page is too short to show it. */
|
|
65
|
+
padding-left: var(--bookish-block-padding);
|
|
66
|
+
padding-right: var(--bookish-block-padding);
|
|
67
|
+
padding-bottom: 5em;
|
|
68
|
+
|
|
69
|
+
/* Center the application in the viewport */
|
|
70
|
+
margin-top: 0;
|
|
71
|
+
margin-left: auto;
|
|
72
|
+
margin-right: auto;
|
|
73
|
+
|
|
74
|
+
/* Hidden by default until tagged as loaded */
|
|
75
|
+
opacity: 0;
|
|
76
|
+
transition: opacity 0.25s ease-in;
|
|
77
|
+
|
|
78
|
+
z-index: 1;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.loaded {
|
|
82
|
+
opacity: 1;
|
|
83
|
+
}
|
|
84
|
+
</style>
|
|
@@ -11,9 +11,9 @@ declare const __propDef: {
|
|
|
11
11
|
default: {};
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
14
|
+
export type PageProps = typeof __propDef.props;
|
|
15
|
+
export type PageEvents = typeof __propDef.events;
|
|
16
|
+
export type PageSlots = typeof __propDef.slots;
|
|
17
17
|
export default class Page extends SvelteComponentTyped<PageProps, PageEvents, PageSlots> {
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script>export let id = null;
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<h2 class="page-header" {id}><slot /></h2>
|
|
5
|
+
|
|
6
|
+
<style>
|
|
7
|
+
h2 {
|
|
8
|
+
margin-top: var(--bookish-header-spacing);
|
|
9
|
+
font-family: var(--bookish-header-font-family);
|
|
10
|
+
font-weight: var(--bookish-header-font-weight);
|
|
11
|
+
line-height: var(--bookish-header-line-height);
|
|
12
|
+
font-size: var(--bookish-header-1-font-size);
|
|
13
|
+
}
|
|
14
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
id?: string | null | undefined;
|
|
5
|
+
};
|
|
6
|
+
events: {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
};
|
|
9
|
+
slots: {
|
|
10
|
+
default: {};
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export type PageHeaderProps = typeof __propDef.props;
|
|
14
|
+
export type PageHeaderEvents = typeof __propDef.events;
|
|
15
|
+
export type PageHeaderSlots = typeof __propDef.slots;
|
|
16
|
+
export default class PageHeader extends SvelteComponentTyped<PageHeaderProps, PageHeaderEvents, PageHeaderSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<p><slot /></p>
|
|
2
|
+
|
|
3
|
+
<style>
|
|
4
|
+
p {
|
|
5
|
+
margin-top: var(--bookish-header-spacing);
|
|
6
|
+
font-family: var(--bookish-paragraph-font-family);
|
|
7
|
+
font-size: var(--bookish-paragraph-font-size);
|
|
8
|
+
color: var(--bookish-paragraph-color);
|
|
9
|
+
|
|
10
|
+
margin-top: var(--bookish-paragraph-spacing);
|
|
11
|
+
margin-bottom: var(--bookish-paragraph-spacing);
|
|
12
|
+
|
|
13
|
+
line-height: var(--bookish-paragraph-line-height);
|
|
14
|
+
|
|
15
|
+
/* Allow paragraphs to break on words to support small screens. */
|
|
16
|
+
word-break: break-word;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} PageParagraphProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} PageParagraphEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} PageParagraphSlots */
|
|
4
|
+
export default class PageParagraph extends SvelteComponentTyped<{
|
|
5
|
+
[x: string]: never;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {
|
|
9
|
+
default: {};
|
|
10
|
+
}> {
|
|
11
|
+
}
|
|
12
|
+
export type PageParagraphProps = typeof __propDef.props;
|
|
13
|
+
export type PageParagraphEvents = typeof __propDef.events;
|
|
14
|
+
export type PageParagraphSlots = typeof __propDef.slots;
|
|
15
|
+
import { SvelteComponentTyped } from "svelte";
|
|
16
|
+
declare const __propDef: {
|
|
17
|
+
props: {
|
|
18
|
+
[x: string]: never;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {
|
|
24
|
+
default: {};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export {};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<script>import Chapter from
|
|
2
|
-
import { page } from
|
|
3
|
-
import { getEdition } from
|
|
4
|
-
import Unknown from
|
|
1
|
+
<script>import Chapter from './Chapter.svelte';
|
|
2
|
+
import { page } from '$app/stores';
|
|
3
|
+
import { getEdition } from './Contexts';
|
|
4
|
+
import Unknown from './Unknown.svelte';
|
|
5
5
|
$: edition = getEdition();
|
|
6
6
|
$: chapterID = $page.params.chapterid;
|
|
7
|
-
$: chapter = $edition
|
|
7
|
+
$: chapter = $edition?.getChapter(chapterID);
|
|
8
8
|
</script>
|
|
9
9
|
|
|
10
10
|
{#if chapter}
|
|
11
|
-
<Chapter
|
|
11
|
+
<Chapter {chapter} />
|
|
12
12
|
{:else}
|
|
13
13
|
<Unknown>This chapter doesn't exist...</Unknown>
|
|
14
|
-
{/if}
|
|
14
|
+
{/if}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
|
-
props:
|
|
3
|
+
props: Record<string, never>;
|
|
4
4
|
events: {
|
|
5
5
|
[evt: string]: CustomEvent<any>;
|
|
6
6
|
};
|
|
7
7
|
slots: {};
|
|
8
8
|
};
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
9
|
+
export type PossibleChapterProps = typeof __propDef.props;
|
|
10
|
+
export type PossibleChapterEvents = typeof __propDef.events;
|
|
11
|
+
export type PossibleChapterSlots = typeof __propDef.slots;
|
|
12
12
|
export default class PossibleChapter extends SvelteComponentTyped<PossibleChapterProps, PossibleChapterEvents, PossibleChapterSlots> {
|
|
13
13
|
}
|
|
14
14
|
export {};
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
<script>import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import Format from "../chapter/Format.svelte";
|
|
5
|
-
import Reference from "./Reference.svelte";
|
|
1
|
+
<script>import FormatNode from '../../models/chapter/FormatNode';
|
|
2
|
+
import Format from '../chapter/Format.svelte';
|
|
3
|
+
import Reference from './Reference.svelte';
|
|
6
4
|
export let node;
|
|
7
5
|
</script>
|
|
8
6
|
|
|
9
|
-
|
|
10
7
|
{#if node instanceof FormatNode}
|
|
11
|
-
<Format
|
|
12
|
-
{:else if node instanceof ErrorNode}
|
|
13
|
-
<ErrorMessage node={node}/>
|
|
8
|
+
<Format {node} />
|
|
14
9
|
{:else}
|
|
15
|
-
<Reference
|
|
16
|
-
{/if}
|
|
10
|
+
<Reference reference={node} />
|
|
11
|
+
{/if}
|