bookish-press 0.7.1 → 0.8.2
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 +8 -0
- package/dist/components/Auth.svelte +29 -39
- package/dist/components/Auth.svelte.d.ts +5 -17
- package/dist/components/BookPreview.svelte +14 -20
- package/dist/components/BookPreview.svelte.d.ts +6 -18
- package/dist/components/Link.svelte +19 -30
- package/dist/components/Link.svelte.d.ts +7 -20
- package/dist/components/app/BookList.svelte +2 -3
- package/dist/components/app/BookList.svelte.d.ts +6 -18
- package/dist/components/app/Button.svelte +12 -8
- package/dist/components/app/Button.svelte.d.ts +10 -23
- package/dist/components/app/Feedback.svelte +4 -4
- package/dist/components/app/Feedback.svelte.d.ts +6 -19
- package/dist/components/app/Head.svelte +2 -2
- package/dist/components/app/Head.svelte.d.ts +6 -19
- package/dist/components/app/Large.svelte +4 -1
- package/dist/components/app/Large.svelte.d.ts +5 -28
- package/dist/components/app/Lead.svelte +4 -1
- package/dist/components/app/Lead.svelte.d.ts +5 -28
- package/dist/components/app/Link.svelte +12 -9
- package/dist/components/app/Link.svelte.d.ts +9 -22
- package/dist/components/app/Options.svelte +8 -6
- package/dist/components/app/Options.svelte.d.ts +8 -20
- package/dist/components/app/Paragraph.svelte +2 -2
- package/dist/components/app/Paragraph.svelte.d.ts +6 -19
- package/dist/components/app/Section.svelte +4 -1
- package/dist/components/app/Section.svelte.d.ts +5 -28
- package/dist/components/app/Table.svelte +4 -1
- package/dist/components/app/Table.svelte.d.ts +5 -28
- package/dist/components/app/TextInput.svelte +10 -8
- package/dist/components/app/TextInput.svelte.d.ts +12 -23
- package/dist/components/chapter/Atom.svelte +4 -7
- package/dist/components/chapter/Atom.svelte.d.ts +6 -19
- package/dist/components/chapter/Block.svelte +21 -23
- package/dist/components/chapter/Block.svelte.d.ts +5 -17
- package/dist/components/chapter/Callout.svelte +3 -5
- package/dist/components/chapter/Callout.svelte.d.ts +5 -17
- package/dist/components/chapter/CaptionedCode.svelte +12 -14
- package/dist/components/chapter/CaptionedCode.svelte.d.ts +5 -17
- package/dist/components/chapter/ChapterBody.svelte +14 -17
- package/dist/components/chapter/ChapterBody.svelte.d.ts +7 -19
- package/dist/components/chapter/ChapterBody.test.d.ts +1 -0
- package/dist/components/chapter/ChapterBody.test.js +85 -0
- package/dist/components/chapter/Citations.svelte +39 -45
- package/dist/components/chapter/Citations.svelte.d.ts +5 -17
- package/dist/components/chapter/Code.svelte +158 -155
- package/dist/components/chapter/Code.svelte.d.ts +10 -23
- package/dist/components/chapter/Comment.svelte +30 -23
- package/dist/components/chapter/Comment.svelte.d.ts +5 -17
- package/dist/components/chapter/Definition.svelte +36 -34
- package/dist/components/chapter/Definition.svelte.d.ts +5 -17
- package/dist/components/chapter/Embed.svelte +78 -72
- package/dist/components/chapter/Embed.svelte.d.ts +8 -20
- package/dist/components/chapter/ErrorMessage.svelte +2 -4
- package/dist/components/chapter/ErrorMessage.svelte.d.ts +5 -17
- package/dist/components/chapter/Figure.svelte +22 -29
- package/dist/components/chapter/Figure.svelte.d.ts +9 -22
- package/dist/components/chapter/Footnote.svelte +40 -32
- package/dist/components/chapter/Footnote.svelte.d.ts +5 -17
- package/dist/components/chapter/Format.svelte +26 -41
- package/dist/components/chapter/Format.svelte.d.ts +7 -18
- package/dist/components/chapter/InlineCode.svelte +7 -8
- package/dist/components/chapter/InlineCode.svelte.d.ts +5 -17
- package/dist/components/chapter/Label.svelte +5 -11
- package/dist/components/chapter/Label.svelte.d.ts +5 -17
- package/dist/components/chapter/LineBreak.svelte +1 -3
- package/dist/components/chapter/LineBreak.svelte.d.ts +5 -17
- package/dist/components/chapter/Link.svelte +17 -23
- package/dist/components/chapter/Link.svelte.d.ts +5 -17
- package/dist/components/chapter/List.svelte +9 -9
- package/dist/components/chapter/List.svelte.d.ts +6 -17
- package/dist/components/chapter/Marginal.svelte +59 -60
- package/dist/components/chapter/Marginal.svelte.d.ts +10 -22
- package/dist/components/chapter/Paragraph.svelte +8 -23
- package/dist/components/chapter/Paragraph.svelte.d.ts +6 -18
- package/dist/components/chapter/Positioned.svelte +2 -4
- package/dist/components/chapter/Positioned.svelte.d.ts +6 -19
- package/dist/components/chapter/Problem.svelte +3 -2
- package/dist/components/chapter/Problem.svelte.d.ts +5 -28
- package/dist/components/chapter/Python.svelte +45 -58
- package/dist/components/chapter/Python.svelte.d.ts +6 -18
- package/dist/components/chapter/Quote.svelte +5 -7
- package/dist/components/chapter/Quote.svelte.d.ts +5 -17
- package/dist/components/chapter/Rule.svelte +1 -3
- package/dist/components/chapter/Rule.svelte.d.ts +5 -17
- package/dist/components/chapter/Table.svelte +6 -8
- package/dist/components/chapter/Table.svelte.d.ts +5 -17
- package/dist/components/chapter/Text.svelte +54 -69
- package/dist/components/chapter/Text.svelte.d.ts +6 -18
- package/dist/components/controls/DarkToggle.svelte +7 -8
- package/dist/components/controls/DarkToggle.svelte.d.ts +6 -18
- package/dist/components/editor/BookishEditor.svelte +583 -761
- package/dist/components/editor/BookishEditor.svelte.d.ts +14 -26
- package/dist/components/editor/CalloutEditor.svelte +3 -3
- package/dist/components/editor/CalloutEditor.svelte.d.ts +5 -17
- package/dist/components/editor/CaptionedCodeEditor.svelte +5 -5
- package/dist/components/editor/CaptionedCodeEditor.svelte.d.ts +5 -17
- package/dist/components/editor/CaretView.svelte +23 -25
- package/dist/components/editor/CaretView.svelte.d.ts +15 -27
- package/dist/components/editor/CitationsEditor.svelte +25 -28
- package/dist/components/editor/CitationsEditor.svelte.d.ts +5 -17
- package/dist/components/editor/ConfirmButton.svelte +9 -6
- package/dist/components/editor/ConfirmButton.svelte.d.ts +8 -21
- package/dist/components/editor/DefinitionEditor.svelte +11 -15
- package/dist/components/editor/DefinitionEditor.svelte.d.ts +5 -17
- package/dist/components/editor/EmbedEditor.svelte +43 -44
- package/dist/components/editor/EmbedEditor.svelte.d.ts +5 -17
- package/dist/components/editor/Icon.svelte +1 -1
- package/dist/components/editor/Icon.svelte.d.ts +5 -17
- package/dist/components/editor/ImageChooser.svelte +15 -18
- package/dist/components/editor/ImageChooser.svelte.d.ts +6 -18
- package/dist/components/editor/ImageThumbnail.svelte +29 -24
- package/dist/components/editor/ImageThumbnail.svelte.d.ts +7 -19
- package/dist/components/editor/InlineCodeEditor.svelte +3 -3
- package/dist/components/editor/InlineCodeEditor.svelte.d.ts +5 -17
- package/dist/components/editor/LabelEditor.svelte +5 -6
- package/dist/components/editor/LabelEditor.svelte.d.ts +5 -17
- package/dist/components/editor/LanguageEditor.svelte +4 -5
- package/dist/components/editor/LanguageEditor.svelte.d.ts +6 -18
- package/dist/components/editor/LinkEditor.svelte +52 -68
- package/dist/components/editor/LinkEditor.svelte.d.ts +5 -17
- package/dist/components/editor/Note.svelte +4 -1
- package/dist/components/editor/Note.svelte.d.ts +5 -28
- package/dist/components/editor/Permissions.svelte +55 -51
- package/dist/components/editor/Permissions.svelte.d.ts +9 -21
- package/dist/components/editor/PositionEditor.svelte +6 -7
- package/dist/components/editor/PositionEditor.svelte.d.ts +6 -18
- package/dist/components/editor/QuoteEditor.svelte +3 -3
- package/dist/components/editor/QuoteEditor.svelte.d.ts +5 -17
- package/dist/components/editor/Switch.svelte +16 -11
- package/dist/components/editor/Switch.svelte.d.ts +9 -21
- package/dist/components/editor/TableEditor.svelte +3 -3
- package/dist/components/editor/TableEditor.svelte.d.ts +5 -17
- package/dist/components/editor/TextEditor.svelte +74 -87
- package/dist/components/editor/TextEditor.svelte.d.ts +13 -25
- package/dist/components/editor/Toggle.svelte +18 -21
- package/dist/components/editor/Toggle.svelte.d.ts +7 -20
- package/dist/components/editor/Toolbar.svelte +140 -145
- package/dist/components/editor/Toolbar.svelte.d.ts +5 -17
- package/dist/components/editor/ToolbarGroup.svelte +4 -4
- package/dist/components/editor/ToolbarGroup.svelte.d.ts +6 -19
- package/dist/components/editor/ToolbarSpacer.svelte +1 -1
- package/dist/components/editor/ToolbarSpacer.svelte.d.ts +22 -21
- package/dist/components/editor/URLEditor.svelte +3 -5
- package/dist/components/editor/URLEditor.svelte.d.ts +7 -19
- package/dist/components/page/Acknowledgements.svelte +14 -8
- package/dist/components/page/Acknowledgements.svelte.d.ts +3 -16
- package/dist/components/page/Analytics.svelte +2 -3
- package/dist/components/page/Analytics.svelte.d.ts +6 -17
- package/dist/components/page/Authors.svelte +29 -29
- package/dist/components/page/Authors.svelte.d.ts +11 -23
- package/dist/components/page/BookLoader.svelte +47 -43
- package/dist/components/page/BookLoader.svelte.d.ts +5 -17
- package/dist/components/page/BulkReferenceEditor.svelte +43 -26
- package/dist/components/page/BulkReferenceEditor.svelte.d.ts +3 -16
- package/dist/components/page/Chapter.svelte +226 -250
- package/dist/components/page/Chapter.svelte.d.ts +6 -18
- package/dist/components/page/ChapterContext.d.ts +3 -1
- package/dist/components/page/ChapterNumber.svelte +4 -1
- package/dist/components/page/ChapterNumber.svelte.d.ts +5 -28
- package/dist/components/page/ChapterTitle.svelte +4 -4
- package/dist/components/page/ChapterTitle.svelte.d.ts +6 -19
- package/dist/components/page/Contexts.js +2 -2
- package/dist/components/page/DefinitionView.svelte +51 -44
- package/dist/components/page/DefinitionView.svelte.d.ts +6 -18
- package/dist/components/page/Description.svelte +10 -4
- package/dist/components/page/Description.svelte.d.ts +16 -14
- package/dist/components/page/EditableHeader.svelte +4 -6
- package/dist/components/page/EditableHeader.svelte.d.ts +7 -18
- package/dist/components/page/Edition.svelte +57 -71
- package/dist/components/page/Edition.svelte.d.ts +7 -20
- package/dist/components/page/EditionLoader.svelte +119 -82
- package/dist/components/page/EditionLoader.svelte.d.ts +6 -19
- package/dist/components/page/Editions.svelte +61 -41
- package/dist/components/page/Editions.svelte.d.ts +5 -17
- package/dist/components/page/Glossary.svelte +31 -35
- package/dist/components/page/Glossary.svelte.d.ts +3 -16
- package/dist/components/page/Header.svelte +43 -49
- package/dist/components/page/Header.svelte.d.ts +19 -30
- package/dist/components/page/Index.svelte +46 -46
- package/dist/components/page/Index.svelte.d.ts +3 -16
- package/dist/components/page/Instructions.svelte +2 -2
- package/dist/components/page/Instructions.svelte.d.ts +6 -19
- package/dist/components/page/License.svelte +13 -7
- package/dist/components/page/License.svelte.d.ts +16 -14
- package/dist/components/page/Loading.svelte +9 -9
- package/dist/components/page/Loading.svelte.d.ts +22 -21
- package/dist/components/page/Media.svelte +36 -27
- package/dist/components/page/Media.svelte.d.ts +3 -16
- package/dist/components/page/MediaPreview.svelte +22 -19
- package/dist/components/page/MediaPreview.svelte.d.ts +8 -21
- package/dist/components/page/Muted.svelte +4 -1
- package/dist/components/page/Muted.svelte.d.ts +5 -28
- package/dist/components/page/Outline.svelte +76 -97
- package/dist/components/page/Outline.svelte.d.ts +8 -20
- package/dist/components/page/Page.svelte +27 -35
- package/dist/components/page/Page.svelte.d.ts +7 -20
- package/dist/components/page/PageHeader.svelte +2 -2
- package/dist/components/page/PageHeader.svelte.d.ts +6 -19
- package/dist/components/page/PageParagraph.svelte +4 -1
- package/dist/components/page/PageParagraph.svelte.d.ts +5 -28
- package/dist/components/page/PossibleChapter.svelte +7 -7
- package/dist/components/page/PossibleChapter.svelte.d.ts +3 -16
- package/dist/components/page/PossibleReference.svelte +4 -5
- package/dist/components/page/PossibleReference.svelte.d.ts +6 -18
- package/dist/components/page/Print.svelte +18 -2
- package/dist/components/page/Print.svelte.d.ts +3 -16
- package/dist/components/page/Publish.svelte +47 -47
- package/dist/components/page/Publish.svelte.d.ts +3 -16
- package/dist/components/page/Reference.svelte +24 -35
- package/dist/components/page/Reference.svelte.d.ts +6 -18
- package/dist/components/page/References.svelte +21 -22
- package/dist/components/page/References.svelte.d.ts +3 -16
- package/dist/components/page/Rows.svelte +4 -1
- package/dist/components/page/Rows.svelte.d.ts +5 -28
- package/dist/components/page/Search.svelte +58 -60
- package/dist/components/page/Search.svelte.d.ts +3 -16
- package/dist/components/page/Status.svelte +2 -2
- package/dist/components/page/Status.svelte.d.ts +16 -14
- package/dist/components/page/SubdomainEditor.svelte +11 -11
- package/dist/components/page/SubdomainEditor.svelte.d.ts +16 -14
- package/dist/components/page/TableOfContents.svelte +143 -125
- package/dist/components/page/TableOfContents.svelte.d.ts +3 -16
- package/dist/components/page/TableOfContentsImage.svelte +6 -7
- package/dist/components/page/TableOfContentsImage.svelte.d.ts +6 -18
- package/dist/components/page/TableOfContentsRow.svelte +32 -32
- package/dist/components/page/TableOfContentsRow.svelte.d.ts +10 -22
- package/dist/components/page/ThemeEditor.svelte +35 -28
- package/dist/components/page/ThemeEditor.svelte.d.ts +3 -16
- package/dist/components/page/ThemeEditorPreview.svelte +11 -13
- package/dist/components/page/ThemeEditorPreview.svelte.d.ts +5 -17
- package/dist/components/page/ThemeSetEditor.svelte +4 -6
- package/dist/components/page/ThemeSetEditor.svelte.d.ts +7 -19
- package/dist/components/page/ThemeVariableEditor.svelte +9 -11
- package/dist/components/page/ThemeVariableEditor.svelte.d.ts +7 -19
- package/dist/components/page/Title.svelte +4 -1
- package/dist/components/page/Title.svelte.d.ts +5 -28
- package/dist/components/page/Unknown.svelte +11 -8
- package/dist/components/page/Unknown.svelte.d.ts +5 -17
- package/dist/models/CRUD.js +23 -4
- package/dist/models/Firebase.js +18 -4
- package/dist/models/book/Book.d.ts +1 -1
- package/dist/models/book/Book.js +4 -3
- package/dist/models/book/BookMedia.js +1 -2
- package/dist/models/book/Chapter.js +3 -2
- package/dist/models/book/Edition.d.ts +1 -1
- package/dist/models/book/Edition.js +5 -1
- package/dist/models/chapter/BlocksNode.js +3 -1
- package/dist/models/chapter/BlocksNode.test.js +5 -1
- package/dist/models/chapter/Node.test.js +2 -2
- package/package.json +36 -25
|
@@ -1,74 +1,60 @@
|
|
|
1
|
-
<script
|
|
2
|
-
</script>
|
|
1
|
+
<script module lang="ts"></script>
|
|
3
2
|
|
|
4
|
-
<script>import {
|
|
5
|
-
import Code from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
let output = '';
|
|
12
|
-
// Whether the runtime is loaded. Initialized based on presence of global.
|
|
13
|
-
let loaded = skulptLoaded();
|
|
14
|
-
let ref = null;
|
|
3
|
+
<script lang="ts">import { onMount, untrack } from "svelte";
|
|
4
|
+
import Code from "./Code.svelte";
|
|
5
|
+
let { node, startCode } = $props();
|
|
6
|
+
let code = $state(untrack(() => startCode));
|
|
7
|
+
let output = $state("");
|
|
8
|
+
let loaded = $state(skulptLoaded());
|
|
9
|
+
let ref = $state(null);
|
|
15
10
|
onMount(() => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
document.getElementsByTagName('head')[0].appendChild(script);
|
|
26
|
-
}
|
|
11
|
+
if (document.getElementById("skulpt") === null) {
|
|
12
|
+
let script = document.createElement("script");
|
|
13
|
+
script.type = "text/javascript";
|
|
14
|
+
script.async = true;
|
|
15
|
+
script.id = "skulpt";
|
|
16
|
+
script.onload = () => loaded = true;
|
|
17
|
+
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";
|
|
18
|
+
document.getElementsByTagName("head")[0].appendChild(script);
|
|
19
|
+
}
|
|
27
20
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
21
|
+
$effect(() => {
|
|
22
|
+
void output;
|
|
23
|
+
if (ref) {
|
|
24
|
+
let outputView = ref.querySelector(".bookish-python-output");
|
|
25
|
+
if (outputView) outputView.scrollTop = outputView.scrollHeight;
|
|
26
|
+
}
|
|
35
27
|
});
|
|
36
28
|
function skulptLoaded() {
|
|
37
|
-
|
|
29
|
+
return typeof window !== "undefined" && window.hasOwnProperty("Sk");
|
|
38
30
|
}
|
|
39
31
|
function reset() {
|
|
40
|
-
|
|
32
|
+
code = startCode;
|
|
41
33
|
}
|
|
42
34
|
function handleEdit(newCode) {
|
|
43
|
-
|
|
35
|
+
code = newCode;
|
|
44
36
|
}
|
|
45
37
|
function handleOutput(out) {
|
|
46
|
-
|
|
47
|
-
output += out;
|
|
38
|
+
output += out;
|
|
48
39
|
}
|
|
49
40
|
function start() {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
setTimeout(() => execute(), 500);
|
|
55
|
-
}
|
|
41
|
+
if (skulptLoaded()) {
|
|
42
|
+
output = "Executing...";
|
|
43
|
+
setTimeout(() => execute(), 500);
|
|
44
|
+
}
|
|
56
45
|
}
|
|
57
46
|
function execute() {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
handleOutput(error);
|
|
68
|
-
}
|
|
47
|
+
output = "";
|
|
48
|
+
if (Sk) {
|
|
49
|
+
Sk.configure({ output: handleOutput });
|
|
50
|
+
try {
|
|
51
|
+
if (Sk) Sk.importMainWithBody("<stdin>", false, code, true);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
handleOutput(error);
|
|
69
54
|
}
|
|
55
|
+
}
|
|
70
56
|
}
|
|
71
|
-
|
|
57
|
+
let lines = $derived(output.split("\n"));
|
|
72
58
|
</script>
|
|
73
59
|
|
|
74
60
|
<div class="bookish-python" bind:this={ref}>
|
|
@@ -77,13 +63,14 @@ $: lines = output.split('\n');
|
|
|
77
63
|
language={'python'}
|
|
78
64
|
editable
|
|
79
65
|
edited={handleEdit}
|
|
80
|
-
nodeID={node.nodeID}
|
|
81
|
-
|
|
66
|
+
nodeID={node.nodeID}
|
|
67
|
+
{code}
|
|
68
|
+
/>
|
|
82
69
|
<div class="bookish-python-controls">
|
|
83
|
-
<button disabled={startCode === code}
|
|
70
|
+
<button disabled={startCode === code} onclick={reset}
|
|
84
71
|
>{'\u21BB'}</button
|
|
85
72
|
>
|
|
86
|
-
<button disabled={!loaded}
|
|
73
|
+
<button disabled={!loaded} onclick={start}>{'\u25B6\uFE0E'}</button>
|
|
87
74
|
<div class="bookish-python-output">
|
|
88
75
|
{#each lines as line, index}
|
|
89
76
|
<span class="python-output-line"
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type CodeNode from '../../models/chapter/CodeNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
startCode: string;
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {};
|
|
12
|
-
exports?: {} | undefined;
|
|
13
|
-
bindings?: string | undefined;
|
|
14
|
-
};
|
|
15
|
-
export type PythonProps = typeof __propDef.props;
|
|
16
|
-
export type PythonEvents = typeof __propDef.events;
|
|
17
|
-
export type PythonSlots = typeof __propDef.slots;
|
|
18
|
-
export default class Python extends SvelteComponent<PythonProps, PythonEvents, PythonSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: CodeNode;
|
|
4
|
+
startCode: string;
|
|
19
5
|
}
|
|
20
|
-
|
|
6
|
+
declare const Python: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type Python = ReturnType<typeof Python>;
|
|
8
|
+
export default Python;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export let node;
|
|
7
|
-
$: credit = node.getCredit();
|
|
1
|
+
<script lang="ts">import Block from "./Block.svelte";
|
|
2
|
+
import Format from "./Format.svelte";
|
|
3
|
+
import Positioned from "./Positioned.svelte";
|
|
4
|
+
let { node } = $props();
|
|
5
|
+
let credit = $derived(node.getCredit());
|
|
8
6
|
</script>
|
|
9
7
|
|
|
10
8
|
<Positioned position={node.getPosition()}>
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type QuoteNode from '../../models/chapter/QuoteNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
node: QuoteNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type QuoteProps = typeof __propDef.props;
|
|
15
|
-
export type QuoteEvents = typeof __propDef.events;
|
|
16
|
-
export type QuoteSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Quote extends SvelteComponent<QuoteProps, QuoteEvents, QuoteSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: QuoteNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const Quote: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Quote = ReturnType<typeof Quote>;
|
|
7
|
+
export default Quote;
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type RuleNode from '../../models/chapter/RuleNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
node: RuleNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type RuleProps = typeof __propDef.props;
|
|
15
|
-
export type RuleEvents = typeof __propDef.events;
|
|
16
|
-
export type RuleSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Rule extends SvelteComponent<RuleProps, RuleEvents, RuleSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: RuleNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const Rule: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Rule = ReturnType<typeof Rule>;
|
|
7
|
+
export default Rule;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import { isChapterEditable } from '../page/Contexts';
|
|
7
|
-
export let node;
|
|
1
|
+
<script lang="ts">import Figure from "./Figure.svelte";
|
|
2
|
+
import Format from "./Format.svelte";
|
|
3
|
+
import Rows from "../page/Rows.svelte";
|
|
4
|
+
import { isChapterEditable } from "../page/Contexts";
|
|
5
|
+
let { node } = $props();
|
|
8
6
|
let editable = isChapterEditable();
|
|
9
|
-
|
|
7
|
+
let rows = $derived(node.getRows());
|
|
10
8
|
</script>
|
|
11
9
|
|
|
12
10
|
<Figure {node} caption={node.getCaption()} focusable={false}>
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type TableNode from '../../models/chapter/TableNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
node: TableNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type TableProps = typeof __propDef.props;
|
|
15
|
-
export type TableEvents = typeof __propDef.events;
|
|
16
|
-
export type TableSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Table extends SvelteComponent<TableProps, TableEvents, TableSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: TableNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const Table: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Table = ReturnType<typeof Table>;
|
|
7
|
+
export default Table;
|
|
@@ -1,77 +1,62 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
<script>import { getChapter, isChapterEditable } from '../page/Contexts';
|
|
4
|
-
export let node;
|
|
5
|
-
export let placeholder = undefined;
|
|
6
|
-
$: text = node.getText();
|
|
1
|
+
<script lang="ts">import { getChapter, isChapterEditable } from "../page/Contexts";
|
|
2
|
+
let { node, placeholder = void 0 } = $props();
|
|
7
3
|
let context = getChapter();
|
|
8
4
|
let editable = isChapterEditable();
|
|
9
5
|
function replaceMultipleSpacesWithNonBreakingSpaces(original) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
revisedText += '\u00a0';
|
|
19
|
-
else
|
|
20
|
-
revisedText += c;
|
|
21
|
-
}
|
|
22
|
-
return revisedText;
|
|
6
|
+
let revisedText = "";
|
|
7
|
+
for (let i = 0; i < original.length; i++) {
|
|
8
|
+
let c = original.charAt(i);
|
|
9
|
+
if (c === " " && (i === 0 || i === original.length - 1 || original.charAt(i - 1) === " "))
|
|
10
|
+
revisedText += "\xA0";
|
|
11
|
+
else revisedText += c;
|
|
12
|
+
}
|
|
13
|
+
return revisedText;
|
|
23
14
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const lowerText = text.toLowerCase();
|
|
44
|
-
// Does this text contain the query? Highlight it.
|
|
45
|
-
if (lowerText.indexOf(query) >= 0) {
|
|
46
|
-
// Find all the matches
|
|
47
|
-
const indices = [];
|
|
48
|
-
for (let i = 0; i < text.length; ++i) {
|
|
49
|
-
if (lowerText.substring(i, i + query.length) === query) {
|
|
50
|
-
indices.push(i);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// Go through each one and construct contents for the span to return.
|
|
54
|
-
segments = [];
|
|
55
|
-
for (let i = 0; i < indices.length; i++) {
|
|
56
|
-
// Push the text from the end of the last match or the start of the string.
|
|
57
|
-
segments.push([
|
|
58
|
-
text.substring(i === 0 ? 0 : indices[i - 1] + query.length, indices[i]),
|
|
59
|
-
false,
|
|
60
|
-
]);
|
|
61
|
-
segments.push([
|
|
62
|
-
text.substring(indices[i], indices[i] + query.length),
|
|
63
|
-
true,
|
|
64
|
-
]);
|
|
65
|
-
}
|
|
66
|
-
if (indices[indices.length - 1] < text.length - 1)
|
|
67
|
-
segments.push([
|
|
68
|
-
text.substring(indices[indices.length - 1] + query.length, text.length),
|
|
69
|
-
false,
|
|
70
|
-
]);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
15
|
+
let text = $derived.by(() => {
|
|
16
|
+
let revised = replaceMultipleSpacesWithNonBreakingSpaces(
|
|
17
|
+
node.getText()
|
|
18
|
+
);
|
|
19
|
+
if (revised.length > 0 && revised.charAt(revised.length - 1) === "\n")
|
|
20
|
+
revised = revised + "\uFEFF";
|
|
21
|
+
if (revised.length === 0) revised = placeholder ?? "\uFEFF";
|
|
22
|
+
return revised;
|
|
23
|
+
});
|
|
24
|
+
let segments = $derived.by(() => {
|
|
25
|
+
if (editable) return void 0;
|
|
26
|
+
if (!$context || !$context.highlightedWord) return void 0;
|
|
27
|
+
const query = $context.highlightedWord;
|
|
28
|
+
const lowerText = text.toLowerCase();
|
|
29
|
+
if (lowerText.indexOf(query) < 0) return void 0;
|
|
30
|
+
const indices = [];
|
|
31
|
+
for (let i = 0; i < text.length; ++i) {
|
|
32
|
+
if (lowerText.substring(i, i + query.length) === query) {
|
|
33
|
+
indices.push(i);
|
|
73
34
|
}
|
|
74
|
-
}
|
|
35
|
+
}
|
|
36
|
+
const list = [];
|
|
37
|
+
for (let i = 0; i < indices.length; i++) {
|
|
38
|
+
list.push([
|
|
39
|
+
text.substring(
|
|
40
|
+
i === 0 ? 0 : indices[i - 1] + query.length,
|
|
41
|
+
indices[i]
|
|
42
|
+
),
|
|
43
|
+
false
|
|
44
|
+
]);
|
|
45
|
+
list.push([
|
|
46
|
+
text.substring(indices[i], indices[i] + query.length),
|
|
47
|
+
true
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
if (indices[indices.length - 1] < text.length - 1)
|
|
51
|
+
list.push([
|
|
52
|
+
text.substring(
|
|
53
|
+
indices[indices.length - 1] + query.length,
|
|
54
|
+
text.length
|
|
55
|
+
),
|
|
56
|
+
false
|
|
57
|
+
]);
|
|
58
|
+
return list;
|
|
59
|
+
});
|
|
75
60
|
</script>
|
|
76
61
|
|
|
77
62
|
{#if segments}
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type TextNode from '../../models/chapter/TextNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
placeholder?: string | undefined;
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {};
|
|
12
|
-
exports?: {} | undefined;
|
|
13
|
-
bindings?: string | undefined;
|
|
14
|
-
};
|
|
15
|
-
export type TextProps = typeof __propDef.props;
|
|
16
|
-
export type TextEvents = typeof __propDef.events;
|
|
17
|
-
export type TextSlots = typeof __propDef.slots;
|
|
18
|
-
export default class Text extends SvelteComponent<TextProps, TextEvents, TextSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: TextNode;
|
|
4
|
+
placeholder?: string | undefined;
|
|
19
5
|
}
|
|
20
|
-
|
|
6
|
+
declare const Text: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type Text = ReturnType<typeof Text>;
|
|
8
|
+
export default Text;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const darkLabel = '\u263E';
|
|
1
|
+
<script lang="ts">let { dark = $bindable(), toggle } = $props();
|
|
2
|
+
const lightLabel = "\u263C";
|
|
3
|
+
const darkLabel = "\u263E";
|
|
5
4
|
function change() {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
dark = !dark;
|
|
6
|
+
toggle();
|
|
8
7
|
}
|
|
9
8
|
</script>
|
|
10
9
|
|
|
@@ -14,8 +13,8 @@ function change() {
|
|
|
14
13
|
role="button"
|
|
15
14
|
aria-label={dark === true ? 'Switch to light mode' : 'Switch to dark mode'}
|
|
16
15
|
tabindex="0"
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
onclick={change}
|
|
17
|
+
onkeydown={(event) => {
|
|
19
18
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
20
19
|
change();
|
|
21
20
|
event.stopPropagation();
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
dark: boolean;
|
|
5
|
-
toggle: () => void;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type DarkToggleProps = typeof __propDef.props;
|
|
15
|
-
export type DarkToggleEvents = typeof __propDef.events;
|
|
16
|
-
export type DarkToggleSlots = typeof __propDef.slots;
|
|
17
|
-
export default class DarkToggle extends SvelteComponent<DarkToggleProps, DarkToggleEvents, DarkToggleSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
dark: boolean;
|
|
3
|
+
toggle: () => void;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const DarkToggle: import("svelte").Component<Props, {}, "dark">;
|
|
6
|
+
type DarkToggle = ReturnType<typeof DarkToggle>;
|
|
7
|
+
export default DarkToggle;
|