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,19 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
id: string;
|
|
5
|
+
};
|
|
6
|
+
events: {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
};
|
|
9
|
+
slots: {
|
|
10
|
+
interactor: {};
|
|
11
|
+
content: {};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare type MarginalProps = typeof __propDef.props;
|
|
15
|
+
export declare type MarginalEvents = typeof __propDef.events;
|
|
16
|
+
export declare type MarginalSlots = typeof __propDef.slots;
|
|
17
|
+
export default class Marginal extends SvelteComponentTyped<MarginalProps, MarginalEvents, MarginalSlots> {
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script>import Format from './Format.svelte';
|
|
2
|
+
import { getChapter } from "../page/Contexts";
|
|
3
|
+
export let node;
|
|
4
|
+
export let placeholder = undefined;
|
|
5
|
+
$: level = node.getLevel();
|
|
6
|
+
$: chapter = getChapter();
|
|
7
|
+
$: id = node.getLevel() === 0 || $chapter === undefined ? undefined : "header-" + ($chapter.chapter.getAST()?.getHeaders().indexOf(node) ?? "");
|
|
8
|
+
$: classes = node.getLevel() === 0 ? undefined : "bookish-header" + ($chapter && $chapter.highlightedID === id ? " bookish-content-highlight" : "");
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
{#if level === 0}
|
|
12
|
+
<p data-nodeid={node.nodeID}><Format node={node.getFormat()} placeholder={placeholder ?? "¶"}/></p>
|
|
13
|
+
{:else}
|
|
14
|
+
<svelte:element this={`h${level + 1}`} class={classes} id={id} data-nodeid={node.nodeID}><Format node={node.getFormat()} /></svelte:element>
|
|
15
|
+
{/if}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type ParagraphNode from "../../models/chapter/ParagraphNode";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
node: ParagraphNode;
|
|
6
|
+
placeholder?: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
};
|
|
11
|
+
slots: {};
|
|
12
|
+
};
|
|
13
|
+
export declare type ParagraphProps = typeof __propDef.props;
|
|
14
|
+
export declare type ParagraphEvents = typeof __propDef.events;
|
|
15
|
+
export declare type ParagraphSlots = typeof __propDef.slots;
|
|
16
|
+
export default class Paragraph extends SvelteComponentTyped<ParagraphProps, ParagraphEvents, ParagraphSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<script context="module">"use strict";
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script>import { afterUpdate, onMount } from "svelte";
|
|
5
|
+
import Code from './Code.svelte';
|
|
6
|
+
export let node;
|
|
7
|
+
export let startCode;
|
|
8
|
+
// Start with whatever code was passed in.
|
|
9
|
+
let code = startCode;
|
|
10
|
+
// What is currently rendered to the console (not always program output).
|
|
11
|
+
let output = "";
|
|
12
|
+
// Whether the runtime is loaded. Initialized based on presence of global.
|
|
13
|
+
let loaded = skulptLoaded();
|
|
14
|
+
let ref = null;
|
|
15
|
+
onMount(() => {
|
|
16
|
+
// Dynamically load the script to minimize payload and reduce index complexity.
|
|
17
|
+
if (document.getElementById("skulpt") === null) {
|
|
18
|
+
let script = document.createElement('script');
|
|
19
|
+
script.type = 'text/javascript';
|
|
20
|
+
script.async = true;
|
|
21
|
+
script.id = 'skulpt';
|
|
22
|
+
script.onload = () => loaded = true;
|
|
23
|
+
script.src = "https://cdn.jsdelivr.net/combine/npm/skulpt@1.2.0/dist/skulpt.min.js,npm/skulpt@1.2.0/dist/skulpt-stdlib.min.js";
|
|
24
|
+
document.getElementsByTagName('head')[0].appendChild(script);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// Always scroll to the bottom of the output.
|
|
28
|
+
afterUpdate(() => {
|
|
29
|
+
if (ref) {
|
|
30
|
+
let outputView = ref.querySelector(".bookish-python-output");
|
|
31
|
+
if (outputView)
|
|
32
|
+
outputView.scrollTop = outputView.scrollHeight;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
function skulptLoaded() {
|
|
36
|
+
return window.hasOwnProperty("Sk");
|
|
37
|
+
}
|
|
38
|
+
function reset() { code = startCode; }
|
|
39
|
+
function handleEdit(newCode) { code = newCode; }
|
|
40
|
+
function handleOutput(out) {
|
|
41
|
+
// Update the state to re-render.
|
|
42
|
+
output = out;
|
|
43
|
+
}
|
|
44
|
+
function start() {
|
|
45
|
+
if (skulptLoaded()) {
|
|
46
|
+
// Communicate that executing is starting, wait a second, then execute the program.
|
|
47
|
+
// This is important in case the user wants to run it again; it provides confirmation that it was run again.
|
|
48
|
+
output = "Executing...";
|
|
49
|
+
setTimeout(() => execute(), 500);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function execute() {
|
|
53
|
+
// Reset the output, run the code, and update it's output.
|
|
54
|
+
output = "";
|
|
55
|
+
if (Sk) {
|
|
56
|
+
Sk.configure({ output: handleOutput });
|
|
57
|
+
try {
|
|
58
|
+
if (Sk)
|
|
59
|
+
Sk.importMainWithBody("<stdin>", false, code, true);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
handleOutput(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
$: lines = output.split("\n");
|
|
67
|
+
</script>
|
|
68
|
+
|
|
69
|
+
<div class="bookish-python" bind:this={ref}>
|
|
70
|
+
<Code inline={false} language={"python"} editable edited={handleEdit} nodeID={node.nodeID}>{code}</Code>
|
|
71
|
+
<div class="bookish-code-language">{"python"}</div>
|
|
72
|
+
<div class="bookish-python-controls">
|
|
73
|
+
<button disabled={startCode === code } on:click={reset}>{"\u21BB"}</button>
|
|
74
|
+
<button disabled={!loaded} on:click={start}>{"\u25B6\uFE0E"}</button>
|
|
75
|
+
<div class="bookish-python-output">
|
|
76
|
+
{#each lines as line, index }
|
|
77
|
+
<span class="python-output-line">{line}{#if index < lines.length - 1}<br/>{/if}</span>
|
|
78
|
+
{/each}
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type CodeNode from "../../models/chapter/CodeNode";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
node: CodeNode;
|
|
6
|
+
startCode: string;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
};
|
|
11
|
+
slots: {};
|
|
12
|
+
};
|
|
13
|
+
export declare type PythonProps = typeof __propDef.props;
|
|
14
|
+
export declare type PythonEvents = typeof __propDef.events;
|
|
15
|
+
export declare type PythonSlots = typeof __propDef.slots;
|
|
16
|
+
export default class Python extends SvelteComponentTyped<PythonProps, PythonEvents, PythonSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script>import Block from "./Block.svelte";
|
|
2
|
+
import Format from './Format.svelte';
|
|
3
|
+
import renderPosition from "./renderPosition";
|
|
4
|
+
export let node;
|
|
5
|
+
$: credit = node.getCredit();
|
|
6
|
+
$: position = node.getPosition();
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<blockquote class={"bookish-blockquote " + renderPosition(position)} data-nodeid={node.nodeID}>
|
|
10
|
+
{#each node.getBlocks() as element}
|
|
11
|
+
<Block node={element}/>
|
|
12
|
+
{/each}
|
|
13
|
+
{#if credit}
|
|
14
|
+
<div class="bookish-blockquote-caption"><span><Format node={credit} placeholder="credit"/></span></div>
|
|
15
|
+
{/if}
|
|
16
|
+
</blockquote>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type QuoteNode from "../../models/chapter/QuoteNode";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
node: QuoteNode;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export declare type QuoteProps = typeof __propDef.props;
|
|
13
|
+
export declare type QuoteEvents = typeof __propDef.events;
|
|
14
|
+
export declare type QuoteSlots = typeof __propDef.slots;
|
|
15
|
+
export default class Quote extends SvelteComponentTyped<QuoteProps, QuoteEvents, QuoteSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type RuleNode from "../../models/chapter/RuleNode";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
node: RuleNode;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export declare type RuleProps = typeof __propDef.props;
|
|
13
|
+
export declare type RuleEvents = typeof __propDef.events;
|
|
14
|
+
export declare type RuleSlots = typeof __propDef.slots;
|
|
15
|
+
export default class Rule extends SvelteComponentTyped<RuleProps, RuleEvents, RuleSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script>import Format from './Format.svelte';
|
|
2
|
+
import renderPosition from "./renderPosition";
|
|
3
|
+
export let node;
|
|
4
|
+
$: rows = node.getRows();
|
|
5
|
+
$: caption = node.getCaption();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<div class={"bookish-figure " + renderPosition(node.getPosition())} data-nodeid={node.nodeID}>
|
|
9
|
+
<div class="bookish-table">
|
|
10
|
+
<table>
|
|
11
|
+
<tbody>
|
|
12
|
+
{#each rows as row }
|
|
13
|
+
<tr>
|
|
14
|
+
{#if row.length === 1 }
|
|
15
|
+
<td colspan={rows.reduce((max, row) => Math.max(row.length, max), 0)}><Format node={row[0]}/></td>
|
|
16
|
+
{:else}
|
|
17
|
+
{#each row as cell }
|
|
18
|
+
<td><Format node={cell}/></td>
|
|
19
|
+
{/each}
|
|
20
|
+
{/if}
|
|
21
|
+
</tr>
|
|
22
|
+
{/each}
|
|
23
|
+
</tbody>
|
|
24
|
+
</table>
|
|
25
|
+
</div>
|
|
26
|
+
{#if caption !== undefined}
|
|
27
|
+
<div class="bookish-figure-caption"><Format node={caption} placeholder="caption"/></div>
|
|
28
|
+
{/if}
|
|
29
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type TableNode from "../../models/chapter/TableNode";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
node: TableNode;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export declare type TableProps = typeof __propDef.props;
|
|
13
|
+
export declare type TableEvents = typeof __propDef.events;
|
|
14
|
+
export declare type TableSlots = typeof __propDef.slots;
|
|
15
|
+
export default class Table extends SvelteComponentTyped<TableProps, TableEvents, TableSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<script>import { getChapter } from "../page/Contexts";
|
|
2
|
+
export let node;
|
|
3
|
+
$: text = node.getText();
|
|
4
|
+
let context = getChapter();
|
|
5
|
+
function replaceMultipleSpacesWithNonBreakingSpaces(original) {
|
|
6
|
+
let revisedText = "";
|
|
7
|
+
for (let i = 0; i < original.length; i++) {
|
|
8
|
+
// If its a space and its at the beginning, the end, or the previous character was a space, make it a non-breaking space.
|
|
9
|
+
let c = original.charAt(i);
|
|
10
|
+
if (c === " " && (i === 0 || i === original.length - 1 || original.charAt(i - 1) === " "))
|
|
11
|
+
revisedText += "\u00a0";
|
|
12
|
+
else
|
|
13
|
+
revisedText += c;
|
|
14
|
+
}
|
|
15
|
+
return revisedText;
|
|
16
|
+
}
|
|
17
|
+
// Compute highlights, if highlighted
|
|
18
|
+
let segments = undefined;
|
|
19
|
+
$: {
|
|
20
|
+
// Replace any spaces at the beginning or end of the string with explicit non-breaking spaces to ensure that they render.
|
|
21
|
+
text = replaceMultipleSpacesWithNonBreakingSpaces(text);
|
|
22
|
+
// If the text ends with a newline, render a non-breaking space at the end.
|
|
23
|
+
if (text.length > 0 && text.charAt(text.length - 1) === "\n")
|
|
24
|
+
text = text + "\ufeff";
|
|
25
|
+
// If there's no text, render a non-breaking space.
|
|
26
|
+
if (text.length === 0)
|
|
27
|
+
text = "\ufeff";
|
|
28
|
+
// Is there a query we're supposed to highlight? If so, highlight it.
|
|
29
|
+
if ($context && $context.highlightedWord) {
|
|
30
|
+
const query = $context.highlightedWord;
|
|
31
|
+
const lowerText = text.toLowerCase();
|
|
32
|
+
// Does this text contain the query? Highlight it.
|
|
33
|
+
if (lowerText.indexOf(query) >= 0) {
|
|
34
|
+
// Find all the matches
|
|
35
|
+
const indices = [];
|
|
36
|
+
for (let i = 0; i < text.length; ++i) {
|
|
37
|
+
if (lowerText.substring(i, i + query.length) === query) {
|
|
38
|
+
indices.push(i);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Go through each one and construct contents for the span to return.
|
|
42
|
+
segments = [];
|
|
43
|
+
for (let i = 0; i < indices.length; i++) {
|
|
44
|
+
// Push the text from the end of the last match or the start of the string.
|
|
45
|
+
segments.push([text.substring(i === 0 ? 0 : indices[i - 1] + query.length, indices[i]), false]);
|
|
46
|
+
segments.push([text.substring(indices[i], indices[i] + query.length), true]);
|
|
47
|
+
}
|
|
48
|
+
if (indices[indices.length - 1] < text.length - 1)
|
|
49
|
+
segments.push([text.substring(indices[indices.length - 1] + query.length, text.length), false]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
{#if segments }
|
|
57
|
+
{#each segments as segment }
|
|
58
|
+
<span class={`bookish-text ${segment[1] ? "bookish-content-highlight" : ""}`}>{segment[0]}</span>
|
|
59
|
+
{/each}
|
|
60
|
+
{:else}
|
|
61
|
+
<span class={"bookish-text"} data-nodeid={node.nodeID}>{text}</span>
|
|
62
|
+
{/if}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type TextNode from "../../models/chapter/TextNode";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
node: TextNode;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export declare type TextProps = typeof __propDef.props;
|
|
13
|
+
export declare type TextEvents = typeof __propDef.events;
|
|
14
|
+
export declare type TextSlots = typeof __propDef.slots;
|
|
15
|
+
export default class Text extends SvelteComponentTyped<TextProps, TextEvents, TextSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|