bookish-press 0.4.0
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/LICENSE +21 -0
- package/README.md +5 -0
- package/components/Auth.svelte +52 -0
- package/components/Auth.svelte.d.ts +16 -0
- package/components/Authentication.d.ts +8 -0
- package/components/Authentication.js +1 -0
- package/components/BookPreview.svelte +87 -0
- package/components/BookPreview.svelte.d.ts +18 -0
- package/components/External.svelte +4 -0
- package/components/External.svelte.d.ts +18 -0
- package/components/Link.svelte +5 -0
- package/components/Link.svelte.d.ts +19 -0
- package/components/chapter/Atom.svelte +36 -0
- package/components/chapter/Atom.svelte.d.ts +19 -0
- package/components/chapter/Block.svelte +32 -0
- package/components/chapter/Block.svelte.d.ts +17 -0
- package/components/chapter/Callout.svelte +10 -0
- package/components/chapter/Callout.svelte.d.ts +17 -0
- package/components/chapter/CaptionedCode.svelte +34 -0
- package/components/chapter/CaptionedCode.svelte.d.ts +17 -0
- package/components/chapter/ChapterBody.svelte +23 -0
- package/components/chapter/ChapterBody.svelte.d.ts +18 -0
- package/components/chapter/Citations.svelte +66 -0
- package/components/chapter/Citations.svelte.d.ts +17 -0
- package/components/chapter/Code.svelte +35 -0
- package/components/chapter/Code.svelte.d.ts +22 -0
- package/components/chapter/Comment.svelte +46 -0
- package/components/chapter/Comment.svelte.d.ts +17 -0
- package/components/chapter/Definition.svelte +38 -0
- package/components/chapter/Definition.svelte.d.ts +20 -0
- package/components/chapter/Embed.svelte +122 -0
- package/components/chapter/Embed.svelte.d.ts +18 -0
- package/components/chapter/ErrorMessage.svelte +4 -0
- package/components/chapter/ErrorMessage.svelte.d.ts +17 -0
- package/components/chapter/Footnote.svelte +37 -0
- package/components/chapter/Footnote.svelte.d.ts +19 -0
- package/components/chapter/Format.svelte +57 -0
- package/components/chapter/Format.svelte.d.ts +18 -0
- package/components/chapter/InlineCode.svelte +12 -0
- package/components/chapter/InlineCode.svelte.d.ts +17 -0
- package/components/chapter/Label.svelte +20 -0
- package/components/chapter/Label.svelte.d.ts +17 -0
- package/components/chapter/Link.svelte +51 -0
- package/components/chapter/Link.svelte.d.ts +17 -0
- package/components/chapter/List.svelte +14 -0
- package/components/chapter/List.svelte.d.ts +17 -0
- package/components/chapter/Marginal.svelte +48 -0
- package/components/chapter/Marginal.svelte.d.ts +19 -0
- package/components/chapter/Paragraph.svelte +15 -0
- package/components/chapter/Paragraph.svelte.d.ts +18 -0
- package/components/chapter/Python.svelte +81 -0
- package/components/chapter/Python.svelte.d.ts +18 -0
- package/components/chapter/Quote.svelte +16 -0
- package/components/chapter/Quote.svelte.d.ts +17 -0
- package/components/chapter/Rule.svelte +4 -0
- package/components/chapter/Rule.svelte.d.ts +17 -0
- package/components/chapter/Table.svelte +29 -0
- package/components/chapter/Table.svelte.d.ts +17 -0
- package/components/chapter/Text.svelte +62 -0
- package/components/chapter/Text.svelte.d.ts +17 -0
- package/components/chapter/renderPosition.d.ts +3 -0
- package/components/chapter/renderPosition.js +4 -0
- package/components/editor/BookishEditor.svelte +755 -0
- package/components/editor/BookishEditor.svelte.d.ts +22 -0
- package/components/editor/CalloutEditor.svelte +10 -0
- package/components/editor/CalloutEditor.svelte.d.ts +17 -0
- package/components/editor/CaptionedCodeEditor.svelte +22 -0
- package/components/editor/CaptionedCodeEditor.svelte.d.ts +17 -0
- package/components/editor/CaretContext.d.ts +18 -0
- package/components/editor/CaretContext.js +1 -0
- package/components/editor/CaretState.d.ts +47 -0
- package/components/editor/CaretState.js +1 -0
- package/components/editor/CaretUtilities.d.ts +5 -0
- package/components/editor/CaretUtilities.js +1 -0
- package/components/editor/CitationsEditor.svelte +42 -0
- package/components/editor/CitationsEditor.svelte.d.ts +17 -0
- package/components/editor/Clipboard.d.ts +3 -0
- package/components/editor/Clipboard.js +1 -0
- package/components/editor/Command.d.ts +18 -0
- package/components/editor/Command.js +1 -0
- package/components/editor/Commands.d.ts +3 -0
- package/components/editor/Commands.js +951 -0
- package/components/editor/ConfirmButton.svelte +43 -0
- package/components/editor/ConfirmButton.svelte.d.ts +18 -0
- package/components/editor/DefinitionEditor.svelte +28 -0
- package/components/editor/DefinitionEditor.svelte.d.ts +17 -0
- package/components/editor/EmbedEditor.svelte +87 -0
- package/components/editor/EmbedEditor.svelte.d.ts +17 -0
- package/components/editor/ImageChooser.svelte +70 -0
- package/components/editor/ImageChooser.svelte.d.ts +18 -0
- package/components/editor/InlineCodeEditor.svelte +9 -0
- package/components/editor/InlineCodeEditor.svelte.d.ts +17 -0
- package/components/editor/LabelEditor.svelte +23 -0
- package/components/editor/LabelEditor.svelte.d.ts +17 -0
- package/components/editor/LanguageEditor.svelte +11 -0
- package/components/editor/LanguageEditor.svelte.d.ts +17 -0
- package/components/editor/LinkEditor.svelte +75 -0
- package/components/editor/LinkEditor.svelte.d.ts +17 -0
- package/components/editor/Note.svelte +9 -0
- package/components/editor/Note.svelte.d.ts +23 -0
- package/components/editor/PositionEditor.svelte +14 -0
- package/components/editor/PositionEditor.svelte.d.ts +18 -0
- package/components/editor/QuoteEditor.svelte +5 -0
- package/components/editor/QuoteEditor.svelte.d.ts +17 -0
- package/components/editor/Switch.svelte +56 -0
- package/components/editor/Switch.svelte.d.ts +20 -0
- package/components/editor/TextEditor.svelte +193 -0
- package/components/editor/TextEditor.svelte.d.ts +23 -0
- package/components/editor/Toggle.svelte +38 -0
- package/components/editor/Toggle.svelte.d.ts +19 -0
- package/components/editor/Toolbar.svelte +202 -0
- package/components/editor/Toolbar.svelte.d.ts +20 -0
- package/components/editor/ToolbarGroup.svelte +41 -0
- package/components/editor/ToolbarGroup.svelte.d.ts +19 -0
- package/components/editor/ToolbarIcon.svelte +22 -0
- package/components/editor/ToolbarIcon.svelte.d.ts +16 -0
- package/components/editor/ToolbarSpacer.svelte +1 -0
- package/components/editor/ToolbarSpacer.svelte.d.ts +19 -0
- package/components/editor/URLEditor.svelte +15 -0
- package/components/editor/URLEditor.svelte.d.ts +18 -0
- package/components/editor/UndoState.d.ts +8 -0
- package/components/editor/UndoState.js +1 -0
- package/components/page/Acknowledgements.svelte +29 -0
- package/components/page/Acknowledgements.svelte.d.ts +14 -0
- package/components/page/Alert.svelte +11 -0
- package/components/page/Alert.svelte.d.ts +23 -0
- package/components/page/Authors.svelte +62 -0
- package/components/page/Authors.svelte.d.ts +20 -0
- package/components/page/BulkReferenceEditor.svelte +32 -0
- package/components/page/BulkReferenceEditor.svelte.d.ts +14 -0
- package/components/page/Chapter.svelte +301 -0
- package/components/page/Chapter.svelte.d.ts +18 -0
- package/components/page/ChapterContext.d.ts +10 -0
- package/components/page/ChapterContext.js +1 -0
- package/components/page/Contexts.d.ts +27 -0
- package/components/page/Contexts.js +21 -0
- package/components/page/DefinitionView.svelte +129 -0
- package/components/page/DefinitionView.svelte.d.ts +18 -0
- package/components/page/Description.svelte +22 -0
- package/components/page/Description.svelte.d.ts +14 -0
- package/components/page/Edition.svelte +106 -0
- package/components/page/Edition.svelte.d.ts +21 -0
- package/components/page/Glossary.svelte +61 -0
- package/components/page/Glossary.svelte.d.ts +14 -0
- package/components/page/Header.svelte +105 -0
- package/components/page/Header.svelte.d.ts +27 -0
- package/components/page/Index.svelte +117 -0
- package/components/page/Index.svelte.d.ts +14 -0
- package/components/page/Instructions.svelte +30 -0
- package/components/page/Instructions.svelte.d.ts +16 -0
- package/components/page/License.svelte +29 -0
- package/components/page/License.svelte.d.ts +14 -0
- package/components/page/Loading.svelte +13 -0
- package/components/page/Loading.svelte.d.ts +19 -0
- package/components/page/Media.svelte +76 -0
- package/components/page/Media.svelte.d.ts +14 -0
- package/components/page/MediaPreview.svelte +11 -0
- package/components/page/MediaPreview.svelte.d.ts +19 -0
- package/components/page/Outline.svelte +173 -0
- package/components/page/Outline.svelte.d.ts +19 -0
- package/components/page/Page.svelte +53 -0
- package/components/page/Page.svelte.d.ts +19 -0
- package/components/page/PossibleChapter.svelte +14 -0
- package/components/page/PossibleChapter.svelte.d.ts +14 -0
- package/components/page/PossibleReference.svelte +16 -0
- package/components/page/PossibleReference.svelte.d.ts +19 -0
- package/components/page/Print.svelte +8 -0
- package/components/page/Print.svelte.d.ts +14 -0
- package/components/page/Reference.svelte +145 -0
- package/components/page/Reference.svelte.d.ts +17 -0
- package/components/page/References.svelte +58 -0
- package/components/page/References.svelte.d.ts +14 -0
- package/components/page/Revisions.svelte +124 -0
- package/components/page/Revisions.svelte.d.ts +14 -0
- package/components/page/Search.svelte +108 -0
- package/components/page/Search.svelte.d.ts +14 -0
- package/components/page/Status.svelte +49 -0
- package/components/page/Status.svelte.d.ts +19 -0
- package/components/page/SubdomainEditor.svelte +30 -0
- package/components/page/SubdomainEditor.svelte.d.ts +14 -0
- package/components/page/TableOfContents.svelte +234 -0
- package/components/page/TableOfContents.svelte.d.ts +14 -0
- package/components/page/TableOfContentsImage.svelte +15 -0
- package/components/page/TableOfContentsImage.svelte.d.ts +16 -0
- package/components/page/TableOfContentsRow.svelte +57 -0
- package/components/page/TableOfContentsRow.svelte.d.ts +24 -0
- package/components/page/ThemeEditor.svelte +52 -0
- package/components/page/ThemeEditor.svelte.d.ts +14 -0
- package/components/page/ThemeEditorPreview.svelte +37 -0
- package/components/page/ThemeEditorPreview.svelte.d.ts +17 -0
- package/components/page/ThemeSetEditor.svelte +17 -0
- package/components/page/ThemeSetEditor.svelte.d.ts +18 -0
- package/components/page/ThemeVariableEditor.svelte +28 -0
- package/components/page/ThemeVariableEditor.svelte.d.ts +18 -0
- package/components/page/Unknown.svelte +29 -0
- package/components/page/Unknown.svelte.d.ts +16 -0
- package/components/page/margins.d.ts +2 -0
- package/components/page/margins.js +132 -0
- package/models/BookLoader.d.ts +2 -0
- package/models/BookLoader.js +67 -0
- package/models/Firebase.d.ts +4 -0
- package/models/Firebase.js +26 -0
- package/models/Firestore.d.ts +22 -0
- package/models/Firestore.js +194 -0
- package/models/book/Book.d.ts +60 -0
- package/models/book/Book.js +135 -0
- package/models/book/BookMedia.d.ts +23 -0
- package/models/book/BookMedia.js +102 -0
- package/models/book/Chapter.d.ts +70 -0
- package/models/book/Chapter.js +221 -0
- package/models/book/ChapterID.d.ts +10 -0
- package/models/book/ChapterID.js +10 -0
- package/models/book/Definition.d.ts +6 -0
- package/models/book/Definition.js +1 -0
- package/models/book/Edition.d.ts +111 -0
- package/models/book/Edition.js +466 -0
- package/models/book/Theme.d.ts +106 -0
- package/models/book/Theme.js +76 -0
- package/models/book/ThemeColors.d.ts +15 -0
- package/models/book/ThemeColors.js +1 -0
- package/models/chapter/AtomNode.d.ts +18 -0
- package/models/chapter/AtomNode.js +31 -0
- package/models/chapter/BlockNode.d.ts +21 -0
- package/models/chapter/BlockNode.js +117 -0
- package/models/chapter/BlocksNode.d.ts +50 -0
- package/models/chapter/BlocksNode.js +709 -0
- package/models/chapter/BlocksNode.test.d.ts +1 -0
- package/models/chapter/BlocksNode.test.js +302 -0
- package/models/chapter/Bookkeeping.d.ts +4 -0
- package/models/chapter/Bookkeeping.js +1 -0
- package/models/chapter/CalloutNode.d.ts +17 -0
- package/models/chapter/CalloutNode.js +36 -0
- package/models/chapter/Caret.d.ts +21 -0
- package/models/chapter/Caret.js +69 -0
- package/models/chapter/ChapterNode.d.ts +34 -0
- package/models/chapter/ChapterNode.js +80 -0
- package/models/chapter/CitationsNode.d.ts +16 -0
- package/models/chapter/CitationsNode.js +17 -0
- package/models/chapter/CodeNode.d.ts +30 -0
- package/models/chapter/CodeNode.js +64 -0
- package/models/chapter/CommentNode.d.ts +18 -0
- package/models/chapter/CommentNode.js +32 -0
- package/models/chapter/DefinitionNode.d.ts +12 -0
- package/models/chapter/DefinitionNode.js +20 -0
- package/models/chapter/Edit.d.ts +7 -0
- package/models/chapter/Edit.js +1 -0
- package/models/chapter/EmbedNode.d.ts +40 -0
- package/models/chapter/EmbedNode.js +89 -0
- package/models/chapter/ErrorNode.d.ts +17 -0
- package/models/chapter/ErrorNode.js +21 -0
- package/models/chapter/FootnoteNode.d.ts +18 -0
- package/models/chapter/FootnoteNode.js +29 -0
- package/models/chapter/FormatNode.d.ts +60 -0
- package/models/chapter/FormatNode.js +614 -0
- package/models/chapter/FormatNode.test.d.ts +1 -0
- package/models/chapter/FormatNode.test.js +54 -0
- package/models/chapter/InlineCodeNode.d.ts +12 -0
- package/models/chapter/InlineCodeNode.js +18 -0
- package/models/chapter/LabelNode.d.ts +17 -0
- package/models/chapter/LabelNode.js +22 -0
- package/models/chapter/LinkNode.d.ts +12 -0
- package/models/chapter/LinkNode.js +16 -0
- package/models/chapter/ListNode.d.ts +51 -0
- package/models/chapter/ListNode.js +370 -0
- package/models/chapter/ListNode.test.d.ts +1 -0
- package/models/chapter/ListNode.test.js +49 -0
- package/models/chapter/MetadataNode.d.ts +17 -0
- package/models/chapter/MetadataNode.js +24 -0
- package/models/chapter/Node.d.ts +36 -0
- package/models/chapter/Node.js +173 -0
- package/models/chapter/Node.test.d.ts +1 -0
- package/models/chapter/Node.test.js +27 -0
- package/models/chapter/ParagraphNode.d.ts +33 -0
- package/models/chapter/ParagraphNode.js +93 -0
- package/models/chapter/ParagraphNode.test.d.ts +1 -0
- package/models/chapter/ParagraphNode.test.js +21 -0
- package/models/chapter/Parser.d.ts +75 -0
- package/models/chapter/Parser.js +824 -0
- package/models/chapter/Parser.test.d.ts +1 -0
- package/models/chapter/Parser.test.js +25 -0
- package/models/chapter/Position.d.ts +2 -0
- package/models/chapter/Position.js +1 -0
- package/models/chapter/QuoteNode.d.ts +25 -0
- package/models/chapter/QuoteNode.js +61 -0
- package/models/chapter/ReferenceNode.d.ts +29 -0
- package/models/chapter/ReferenceNode.js +48 -0
- package/models/chapter/RootNode.d.ts +5 -0
- package/models/chapter/RootNode.js +1 -0
- package/models/chapter/RuleNode.d.ts +15 -0
- package/models/chapter/RuleNode.js +16 -0
- package/models/chapter/TableNode.d.ts +35 -0
- package/models/chapter/TableNode.js +176 -0
- package/models/chapter/TableNode.test.d.ts +1 -0
- package/models/chapter/TableNode.test.js +31 -0
- package/models/chapter/TextNode.d.ts +36 -0
- package/models/chapter/TextNode.js +136 -0
- package/models/chapter/TextNode.test.d.ts +1 -0
- package/models/chapter/TextNode.test.js +6 -0
- package/models/loadEdition.d.ts +5 -0
- package/models/loadEdition.js +16 -0
- package/package.json +189 -0
- package/util/getSubdomain.d.ts +3 -0
- package/util/getSubdomain.js +22 -0
- package/util/isMobile.d.ts +2 -0
- package/util/isMobile.js +6 -0
- package/util/mineReference.d.ts +3 -0
- package/util/mineReference.js +62 -0
- package/util/scrollToEyeLevel.d.ts +2 -0
- package/util/scrollToEyeLevel.js +5 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script>import { isEditable } from "./Contexts";
|
|
2
|
+
let editable = isEditable();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
{#if editable }
|
|
6
|
+
<div class="bookish-instructions"><slot></slot></div>
|
|
7
|
+
{/if}
|
|
8
|
+
|
|
9
|
+
<style>
|
|
10
|
+
.bookish-instructions {
|
|
11
|
+
font-style: italic;
|
|
12
|
+
margin-top: var(--bookish-app-margin);
|
|
13
|
+
margin-bottom: var(--bookish-app-margin);
|
|
14
|
+
line-height: 1.2;
|
|
15
|
+
padding: var(--bookish-app-margin);
|
|
16
|
+
border: 2px solid var(--bookish-app-chrome-border-color);
|
|
17
|
+
border-radius: var(--bookish-roundedness);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.bookish-instructions :global(p), .bookish-instructions :global(li) {
|
|
21
|
+
font-family: var(--bookish-app-chrome-font-family);
|
|
22
|
+
font-size: var(--bookish-app-chrome-font-size);
|
|
23
|
+
line-height: var(--bookish-app-chrome-line-height);
|
|
24
|
+
margin-bottom: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.bookish-instructions :global(p) {
|
|
28
|
+
margin-top: 0;
|
|
29
|
+
}
|
|
30
|
+
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {};
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {
|
|
8
|
+
default: {};
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare type InstructionsProps = typeof __propDef.props;
|
|
12
|
+
export declare type InstructionsEvents = typeof __propDef.events;
|
|
13
|
+
export declare type InstructionsSlots = typeof __propDef.slots;
|
|
14
|
+
export default class Instructions extends SvelteComponentTyped<InstructionsProps, InstructionsEvents, InstructionsSlots> {
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script>import Parser from "../../models/chapter/Parser";
|
|
2
|
+
import BookishEditor from "../editor/BookishEditor.svelte";
|
|
3
|
+
import Instructions from "./Instructions.svelte";
|
|
4
|
+
import Format from "../chapter/Format.svelte";
|
|
5
|
+
import { getEdition, isEditable } from "./Contexts";
|
|
6
|
+
let edition = getEdition();
|
|
7
|
+
let editable = isEditable();
|
|
8
|
+
$: formatNode = Parser.parseFormat($edition, $edition.getLicense()).withTextIfEmpty();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<h2 class="bookish-header" id="license">License</h2>
|
|
12
|
+
|
|
13
|
+
<Instructions>
|
|
14
|
+
By default of U.S. Copyright Law, your content copyrighted and owned by all authors.
|
|
15
|
+
Edit this if you'd like to grant different rights.
|
|
16
|
+
</Instructions>
|
|
17
|
+
|
|
18
|
+
<!-- If editable, show acknowledgements even if they're empty, otherwise hide -->
|
|
19
|
+
{#if editable }
|
|
20
|
+
<BookishEditor
|
|
21
|
+
ast={formatNode}
|
|
22
|
+
save={node => $edition.setLicense(node.toBookdown())}
|
|
23
|
+
chapter={false}
|
|
24
|
+
component={Format}
|
|
25
|
+
placeholder="In the U.S., all rights reserved by default. Want to offer different rights to readers?"
|
|
26
|
+
/>
|
|
27
|
+
{:else}
|
|
28
|
+
<Format node={formatNode} />
|
|
29
|
+
{/if}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {};
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export declare type LicenseProps = typeof __propDef.props;
|
|
10
|
+
export declare type LicenseEvents = typeof __propDef.events;
|
|
11
|
+
export declare type LicenseSlots = typeof __propDef.slots;
|
|
12
|
+
export default class License extends SvelteComponentTyped<LicenseProps, LicenseEvents, LicenseSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class={"bookish bookish-loading" + (localStorage.getItem("bookish-dark") === "true" ? " bookish-dark" : "")}>
|
|
2
|
+
<div class="bookish-loading-animation">
|
|
3
|
+
<div></div>
|
|
4
|
+
<div></div>
|
|
5
|
+
<div></div>
|
|
6
|
+
<div></div>
|
|
7
|
+
<div></div>
|
|
8
|
+
<div></div>
|
|
9
|
+
<div></div>
|
|
10
|
+
<div></div>
|
|
11
|
+
<div></div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} LoadingProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} LoadingEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} LoadingSlots */
|
|
4
|
+
export default class Loading extends SvelteComponentTyped<{}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> {
|
|
7
|
+
}
|
|
8
|
+
export type LoadingProps = typeof __propDef.props;
|
|
9
|
+
export type LoadingEvents = typeof __propDef.events;
|
|
10
|
+
export type LoadingSlots = typeof __propDef.slots;
|
|
11
|
+
import { SvelteComponentTyped } from "svelte";
|
|
12
|
+
declare const __propDef: {
|
|
13
|
+
props: {};
|
|
14
|
+
events: {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
};
|
|
17
|
+
slots: {};
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script>import Header from "./Header.svelte";
|
|
2
|
+
import Outline from './Outline.svelte';
|
|
3
|
+
import Page from './Page.svelte';
|
|
4
|
+
import Instructions from './Instructions.svelte';
|
|
5
|
+
import ChapterIDs from '../../models/book/ChapterID';
|
|
6
|
+
import Format from '../chapter/Format.svelte';
|
|
7
|
+
import MediaPreview from "./MediaPreview.svelte";
|
|
8
|
+
import { onMount } from "svelte";
|
|
9
|
+
import { getEdition, isEditable } from "./Contexts";
|
|
10
|
+
let edition = getEdition();
|
|
11
|
+
let editable = isEditable();
|
|
12
|
+
let images = [];
|
|
13
|
+
$: embeds = $edition.getEmbeds();
|
|
14
|
+
$: media = $edition.getBook()?.getMedia();
|
|
15
|
+
function updateImages(newImages) {
|
|
16
|
+
images = newImages;
|
|
17
|
+
}
|
|
18
|
+
onMount(() => {
|
|
19
|
+
// Listen to image changes.
|
|
20
|
+
media?.notify(updateImages);
|
|
21
|
+
return () => media?.stopNotifying(updateImages);
|
|
22
|
+
});
|
|
23
|
+
$: unused = images?.filter(image => embeds.find(embed => embed.getURL() === image.url) === undefined);
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<Page title={`${$edition.getTitle()} - Media`}>
|
|
27
|
+
<Header
|
|
28
|
+
label="Media title"
|
|
29
|
+
getImage={() => $edition.getImage(ChapterIDs.MediaID)}
|
|
30
|
+
setImage={(embed) => $edition.setImage(ChapterIDs.MediaID, embed)}
|
|
31
|
+
header="Media"
|
|
32
|
+
tags={$edition.getTags()}
|
|
33
|
+
>
|
|
34
|
+
<Outline
|
|
35
|
+
slot="outline"
|
|
36
|
+
previous={$edition.getPreviousChapterID(ChapterIDs.MediaID)}
|
|
37
|
+
next={$edition.getNextChapterID(ChapterIDs.MediaID)}
|
|
38
|
+
/>
|
|
39
|
+
</Header>
|
|
40
|
+
<Instructions>
|
|
41
|
+
This page shows readers an index of the media in the book.
|
|
42
|
+
Writers can use this page to manage any images that are linked or uploaded for this book.
|
|
43
|
+
Note: images are shared between all editions, so if you delete one not used in this edition,
|
|
44
|
+
it might be used in others.
|
|
45
|
+
</Instructions>
|
|
46
|
+
|
|
47
|
+
{#if embeds.length === 0}
|
|
48
|
+
<p>No images or videos appear in the book.</p>
|
|
49
|
+
{:else}
|
|
50
|
+
<p>These are the images and videos in the book:</p>
|
|
51
|
+
{/if}
|
|
52
|
+
{#each embeds as embed }
|
|
53
|
+
<MediaPreview
|
|
54
|
+
url={embed.getSmallURL()}
|
|
55
|
+
alt={embed.getDescription()}
|
|
56
|
+
>
|
|
57
|
+
<span>{editable ? (images && images.find(i => i.url === embed.getURL()) === undefined) ? "linked" : "uploaded" : null }{embed.getCredit().isEmptyText() ? null : " • "}<Format node={embed.getCredit()}/></span>
|
|
58
|
+
</MediaPreview>
|
|
59
|
+
{/each}
|
|
60
|
+
{#if editable !== undefined && unused !== undefined && unused.length > 0 }
|
|
61
|
+
<h2>Unused</h2>
|
|
62
|
+
<Instructions>
|
|
63
|
+
These images are uploaded to this book, but not used.
|
|
64
|
+
Delete them if you don't need them.
|
|
65
|
+
Note, however, that these images may be used in other editions of this book.
|
|
66
|
+
</Instructions>
|
|
67
|
+
{#each unused as image }
|
|
68
|
+
<MediaPreview
|
|
69
|
+
url={image.url}
|
|
70
|
+
alt={""}
|
|
71
|
+
>
|
|
72
|
+
<span>uploaded <button on:click={() => media?.remove(image).then(images => updateImages(images))}>x</button></span>
|
|
73
|
+
</MediaPreview>
|
|
74
|
+
{/each}
|
|
75
|
+
{/if}
|
|
76
|
+
</Page>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {};
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export declare type MediaProps = typeof __propDef.props;
|
|
10
|
+
export declare type MediaEvents = typeof __propDef.events;
|
|
11
|
+
export declare type MediaSlots = typeof __propDef.slots;
|
|
12
|
+
export default class Media extends SvelteComponentTyped<MediaProps, MediaEvents, MediaSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
url: string;
|
|
5
|
+
alt: string;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {
|
|
11
|
+
default: {};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare type MediaPreviewProps = typeof __propDef.props;
|
|
15
|
+
export declare type MediaPreviewEvents = typeof __propDef.events;
|
|
16
|
+
export declare type MediaPreviewSlots = typeof __propDef.slots;
|
|
17
|
+
export default class MediaPreview extends SvelteComponentTyped<MediaPreviewProps, MediaPreviewEvents, MediaPreviewSlots> {
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
<script>import { isMobile } from '../../util/isMobile';
|
|
2
|
+
import { onMount } from 'svelte';
|
|
3
|
+
import Link from '../Link.svelte';
|
|
4
|
+
import { getBase, getDarkMode } from './Contexts';
|
|
5
|
+
export let previous;
|
|
6
|
+
export let next;
|
|
7
|
+
export let collapse = false;
|
|
8
|
+
export let listener = undefined;
|
|
9
|
+
let headerString = null;
|
|
10
|
+
let headerIndex = -1;
|
|
11
|
+
let expanded = false;
|
|
12
|
+
let dark = getDarkMode();
|
|
13
|
+
let base = getBase();
|
|
14
|
+
let outline = null;
|
|
15
|
+
let headers = [];
|
|
16
|
+
function toggleExpanded() {
|
|
17
|
+
// Don't toggle when in margin mode.
|
|
18
|
+
if (!isMobile())
|
|
19
|
+
return;
|
|
20
|
+
const newExpanded = !expanded;
|
|
21
|
+
// Toggle expanded state
|
|
22
|
+
expanded = newExpanded;
|
|
23
|
+
if (listener)
|
|
24
|
+
listener(newExpanded, layout);
|
|
25
|
+
}
|
|
26
|
+
function toggleReadingMode() {
|
|
27
|
+
dark.set(!$dark);
|
|
28
|
+
}
|
|
29
|
+
function layout() {
|
|
30
|
+
position();
|
|
31
|
+
highlight();
|
|
32
|
+
updateHeaders();
|
|
33
|
+
}
|
|
34
|
+
function updateHeaders() {
|
|
35
|
+
// When the outline updates (due to the page its on updating), generate a unique string for the current header outline.
|
|
36
|
+
// If it's different from the last rendered state, refresh.
|
|
37
|
+
headers = Array.from(document.getElementsByClassName("bookish-header"));
|
|
38
|
+
let newHeaderString = headers.reduce((sum, el) => sum + el.outerHTML, "");
|
|
39
|
+
// If the headers change, update the outline.
|
|
40
|
+
if (headerString !== newHeaderString)
|
|
41
|
+
headerString = newHeaderString;
|
|
42
|
+
}
|
|
43
|
+
function getHighlightThreshold() { return window.innerHeight / 3; }
|
|
44
|
+
function position() {
|
|
45
|
+
// Left align the floating outline with the left margin of the chapter
|
|
46
|
+
// and the top of the title, unless we're past it.
|
|
47
|
+
let title = document.getElementsByClassName("bookish-chapter-header-text")[0];
|
|
48
|
+
// If we found them both...
|
|
49
|
+
if (outline && title) {
|
|
50
|
+
// If so, remove the inline position so the footer CSS applies.
|
|
51
|
+
if (isMobile()) {
|
|
52
|
+
outline.style.removeProperty("margin-top");
|
|
53
|
+
}
|
|
54
|
+
// If not, set the position of the outline.
|
|
55
|
+
else {
|
|
56
|
+
let titleY = title.getBoundingClientRect().top + window.scrollY;
|
|
57
|
+
// If the title is off screen, anchor it to the top of the window. (CSS is set to do this).
|
|
58
|
+
if (titleY - 50 < window.scrollY) {
|
|
59
|
+
outline.classList.add("bookish-outline-fixed-left");
|
|
60
|
+
outline.classList.remove("bookish-outline-title-left");
|
|
61
|
+
}
|
|
62
|
+
// Otherwise, anchor it to the title position.
|
|
63
|
+
else {
|
|
64
|
+
outline.classList.remove("bookish-outline-fixed-left");
|
|
65
|
+
outline.classList.add("bookish-outline-title-left");
|
|
66
|
+
}
|
|
67
|
+
// Tell any listeners about the repositioning.
|
|
68
|
+
if (listener)
|
|
69
|
+
listener(false, layout);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function highlight() {
|
|
74
|
+
const top = window.scrollY;
|
|
75
|
+
const threshold = getHighlightThreshold();
|
|
76
|
+
// Find the header that we're past so we can update the outline.
|
|
77
|
+
let indexOfNearestHeaderAbove = -1; // -1 represents the title
|
|
78
|
+
Array.from(document.getElementsByClassName("bookish-header")).forEach((header, index) => {
|
|
79
|
+
// Is this a header we care about?
|
|
80
|
+
if (header.tagName === "H1" || header.tagName === "H2" || header.tagName === "H3") {
|
|
81
|
+
let rect = header.getBoundingClientRect();
|
|
82
|
+
let headerTop = rect.y + top - rect.height;
|
|
83
|
+
// Are we past this header?
|
|
84
|
+
if (top > headerTop - threshold)
|
|
85
|
+
indexOfNearestHeaderAbove = index;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// Update the outline and progress bar.
|
|
89
|
+
headerIndex = indexOfNearestHeaderAbove;
|
|
90
|
+
}
|
|
91
|
+
onMount(() => {
|
|
92
|
+
window.addEventListener('resize', layout);
|
|
93
|
+
window.addEventListener('scroll', layout);
|
|
94
|
+
// This is a bit hacky: we update the headers on every selection change so we
|
|
95
|
+
// can detect any header changes during editing. This isn't necessary during
|
|
96
|
+
// reading, and is only necessary when a header is created, updated, or removed,
|
|
97
|
+
// but we don't have a precise mechanism to listen to chapter changes, so we do this instead.
|
|
98
|
+
document.addEventListener("selectionchange", updateHeaders);
|
|
99
|
+
// Position outline after first render.
|
|
100
|
+
layout();
|
|
101
|
+
// Stop listening!
|
|
102
|
+
return () => {
|
|
103
|
+
window.removeEventListener('scroll', layout);
|
|
104
|
+
window.removeEventListener('resize', layout);
|
|
105
|
+
document.removeEventListener("selectionchange", updateHeaders);
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
let previousLabel = "\u25C0\uFE0E";
|
|
109
|
+
let nextLabel = "\u25B6\uFE0E";
|
|
110
|
+
let expandLabel = "\u2630";
|
|
111
|
+
let lightLabel = "\u263C";
|
|
112
|
+
let darkLabel = "\u263E";
|
|
113
|
+
</script>
|
|
114
|
+
|
|
115
|
+
<div
|
|
116
|
+
bind:this={outline}
|
|
117
|
+
class={"bookish-outline " + (!expanded || collapse ? "bookish-outline-collapsed": "bookish-outline-expanded")}
|
|
118
|
+
>
|
|
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
|
+
<!-- Visual cue of expandability, only visible in footer mode. -->
|
|
136
|
+
<div
|
|
137
|
+
class={"bookish-outline-collapse-cue" + (headers.length === 0 ? " bookish-outline-collapse-cue-disabled" : "") }
|
|
138
|
+
role="button"
|
|
139
|
+
aria-label={expanded ? "Collapse navigation menu" : "Expand navigation menu"}
|
|
140
|
+
tabIndex=0
|
|
141
|
+
on:click={headers.length > 0 ? toggleExpanded : undefined }
|
|
142
|
+
on:keydown={event => {
|
|
143
|
+
if(event.key === "Enter" || event.key === " ")
|
|
144
|
+
toggleExpanded()
|
|
145
|
+
}}
|
|
146
|
+
>
|
|
147
|
+
{ expandLabel }
|
|
148
|
+
</div>
|
|
149
|
+
<div class="bookish-outline-headers">
|
|
150
|
+
|
|
151
|
+
<!-- Book navigation links -->
|
|
152
|
+
<div class="bookish-outline-header-nav">
|
|
153
|
+
{#if previous !== null}<Link to={base + "/" + previous}>{previousLabel}</Link>{:else}<span class="bookish-outline-header-nav-disabled">{previousLabel}</span>{/if}
|
|
154
|
+
·
|
|
155
|
+
<Link to={base + "/"}>Home</Link>
|
|
156
|
+
·
|
|
157
|
+
{#if next !== null}<Link to={base + "/" + next}>{nextLabel}</Link>{:else}<span class="bookish-outline-header-nav-disabled">{nextLabel}</span>{/if}
|
|
158
|
+
</div>
|
|
159
|
+
<!-- Scan through the headers and add a properly formatted link for each. -->
|
|
160
|
+
{#each headers as header, index }
|
|
161
|
+
<!-- Assumes that all headers have an H1, H2, etc. tag. -->
|
|
162
|
+
{@const level = Number.parseInt(header.tagName.charAt(1)) }
|
|
163
|
+
<!-- Only h1, h2, and h3 headers... -->
|
|
164
|
+
{#if level <= 3 }
|
|
165
|
+
<Link to={"#" + header.id}>
|
|
166
|
+
<div class={"bookish-outline-header bookish-outline-header-level-" + (level - 1) + (headerIndex === index ? " bookish-outline-header-active" : "")}>
|
|
167
|
+
{header.textContent}
|
|
168
|
+
</div>
|
|
169
|
+
</Link>
|
|
170
|
+
{/if}
|
|
171
|
+
{/each}
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
previous: string | null;
|
|
5
|
+
next: string | null;
|
|
6
|
+
collapse?: boolean | undefined;
|
|
7
|
+
listener?: ((expanded: boolean, layout: Function) => void) | undefined;
|
|
8
|
+
};
|
|
9
|
+
events: {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export declare type OutlineProps = typeof __propDef.props;
|
|
15
|
+
export declare type OutlineEvents = typeof __propDef.events;
|
|
16
|
+
export declare type OutlineSlots = typeof __propDef.slots;
|
|
17
|
+
export default class Outline extends SvelteComponentTyped<OutlineProps, OutlineEvents, OutlineSlots> {
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script>import { onMount } from 'svelte';
|
|
2
|
+
import Loading from './Loading.svelte';
|
|
3
|
+
export let title;
|
|
4
|
+
export let afterLoaded = undefined;
|
|
5
|
+
let loaded = false;
|
|
6
|
+
let lastHeight = 0;
|
|
7
|
+
let intervalID = null;
|
|
8
|
+
let mountTime = Date.now();
|
|
9
|
+
function watchLoading() {
|
|
10
|
+
const bodyHeight = document.body.clientHeight;
|
|
11
|
+
// If the height hasn't changed and images are loaded OR it's been 2 seconds, load.
|
|
12
|
+
if ((lastHeight === bodyHeight && imagesAreLoaded()) || (Date.now() - mountTime) > 2000) {
|
|
13
|
+
// Stop watching the images
|
|
14
|
+
stopWatching();
|
|
15
|
+
// Set to loaded to hide the overlay and notify callback if there is one.
|
|
16
|
+
loaded = true;
|
|
17
|
+
if (afterLoaded)
|
|
18
|
+
afterLoaded();
|
|
19
|
+
}
|
|
20
|
+
// Remember the last height
|
|
21
|
+
lastHeight = bodyHeight;
|
|
22
|
+
}
|
|
23
|
+
function stopWatching() {
|
|
24
|
+
if (intervalID)
|
|
25
|
+
clearInterval(intervalID);
|
|
26
|
+
}
|
|
27
|
+
onMount(() => {
|
|
28
|
+
// Watch the height of the document and wait until it's been stable for a while before scrolling
|
|
29
|
+
// to any targets. We use the data below to monitor the document height over time.
|
|
30
|
+
intervalID = setInterval(() => watchLoading(), 50);
|
|
31
|
+
return () => stopWatching();
|
|
32
|
+
});
|
|
33
|
+
function imagesAreLoaded() {
|
|
34
|
+
let done = true;
|
|
35
|
+
Array.from(document.getElementsByTagName("img")).forEach(el => {
|
|
36
|
+
done = done && el.complete;
|
|
37
|
+
});
|
|
38
|
+
return done;
|
|
39
|
+
}
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<svelte:head>
|
|
43
|
+
<title>{title}</title>
|
|
44
|
+
<meta name="description" content={title}>
|
|
45
|
+
</svelte:head>
|
|
46
|
+
|
|
47
|
+
{#if loaded === false }
|
|
48
|
+
<Loading/>
|
|
49
|
+
{:else}
|
|
50
|
+
<div class={"bookish-page" + (loaded ? " bookish-page-loaded": "")}>
|
|
51
|
+
<slot></slot>
|
|
52
|
+
</div>
|
|
53
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
title: string;
|
|
5
|
+
afterLoaded?: Function | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {
|
|
11
|
+
default: {};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare type PageProps = typeof __propDef.props;
|
|
15
|
+
export declare type PageEvents = typeof __propDef.events;
|
|
16
|
+
export declare type PageSlots = typeof __propDef.slots;
|
|
17
|
+
export default class Page extends SvelteComponentTyped<PageProps, PageEvents, PageSlots> {
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
$: edition = getEdition();
|
|
6
|
+
$: chapterID = $page.params.chapterid;
|
|
7
|
+
$: chapter = $edition.getChapter(chapterID);
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
{#if chapter}
|
|
11
|
+
<Chapter chapter={chapter}/>
|
|
12
|
+
{:else}
|
|
13
|
+
<Unknown>This chapter doesn't exist...</Unknown>
|
|
14
|
+
{/if}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {};
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export declare type PossibleChapterProps = typeof __propDef.props;
|
|
10
|
+
export declare type PossibleChapterEvents = typeof __propDef.events;
|
|
11
|
+
export declare type PossibleChapterSlots = typeof __propDef.slots;
|
|
12
|
+
export default class PossibleChapter extends SvelteComponentTyped<PossibleChapterProps, PossibleChapterEvents, PossibleChapterSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script>import ErrorNode from "../../models/chapter/ErrorNode";
|
|
2
|
+
import FormatNode from "../../models/chapter/FormatNode";
|
|
3
|
+
import ErrorMessage from "../chapter/ErrorMessage.svelte";
|
|
4
|
+
import Format from "../chapter/Format.svelte";
|
|
5
|
+
import Reference from "./Reference.svelte";
|
|
6
|
+
export let node;
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
{#if node instanceof FormatNode}
|
|
11
|
+
<Format node={node}/>
|
|
12
|
+
{:else if node instanceof ErrorNode}
|
|
13
|
+
<ErrorMessage node={node}/>
|
|
14
|
+
{:else}
|
|
15
|
+
<Reference node={node} />
|
|
16
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import ErrorNode from "../../models/chapter/ErrorNode";
|
|
3
|
+
import FormatNode from "../../models/chapter/FormatNode";
|
|
4
|
+
import type ReferenceNode from "../../models/chapter/ReferenceNode";
|
|
5
|
+
declare const __propDef: {
|
|
6
|
+
props: {
|
|
7
|
+
node: FormatNode | ErrorNode | ReferenceNode;
|
|
8
|
+
};
|
|
9
|
+
events: {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export declare type PossibleReferenceProps = typeof __propDef.props;
|
|
15
|
+
export declare type PossibleReferenceEvents = typeof __propDef.events;
|
|
16
|
+
export declare type PossibleReferenceSlots = typeof __propDef.slots;
|
|
17
|
+
export default class PossibleReference extends SvelteComponentTyped<PossibleReferenceProps, PossibleReferenceEvents, PossibleReferenceSlots> {
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<script>import Chapter from './Chapter.svelte';
|
|
2
|
+
import { getEdition } from './Contexts';
|
|
3
|
+
let edition = getEdition();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
{#each $edition.getChapters().filter(chapter => !chapter.isForthcoming()) as chapter }
|
|
7
|
+
<Chapter chapter={chapter} print />
|
|
8
|
+
{/each}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {};
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export declare type PrintProps = typeof __propDef.props;
|
|
10
|
+
export declare type PrintEvents = typeof __propDef.events;
|
|
11
|
+
export declare type PrintSlots = typeof __propDef.slots;
|
|
12
|
+
export default class Print extends SvelteComponentTyped<PrintProps, PrintEvents, PrintSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|