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,58 +1,52 @@
|
|
|
1
|
-
<script>import Parser from
|
|
2
|
-
import Embed from
|
|
3
|
-
import BookishEditor from
|
|
4
|
-
import Title from
|
|
5
|
-
import { onMount } from
|
|
6
|
-
import TextEditor from
|
|
7
|
-
import { getUser, getEdition, getLeasee, lease } from
|
|
8
|
-
import Button from
|
|
9
|
-
import ConfirmButton from
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
<script lang="ts">import Parser from "../../models/chapter/Parser";
|
|
2
|
+
import Embed from "../chapter/Embed.svelte";
|
|
3
|
+
import BookishEditor from "../editor/BookishEditor.svelte";
|
|
4
|
+
import Title from "./Title.svelte";
|
|
5
|
+
import { onMount } from "svelte";
|
|
6
|
+
import TextEditor from "../editor/TextEditor.svelte";
|
|
7
|
+
import { getUser, getEdition, getLeasee, lease } from "./Contexts";
|
|
8
|
+
import Button from "../app/Button.svelte";
|
|
9
|
+
import ConfirmButton from "../editor/ConfirmButton.svelte";
|
|
10
|
+
let {
|
|
11
|
+
editable,
|
|
12
|
+
label,
|
|
13
|
+
header,
|
|
14
|
+
id,
|
|
15
|
+
subtitle = void 0,
|
|
16
|
+
print = false,
|
|
17
|
+
tags = void 0,
|
|
18
|
+
getImage = void 0,
|
|
19
|
+
setImage = void 0,
|
|
20
|
+
save = null,
|
|
21
|
+
outline,
|
|
22
|
+
before,
|
|
23
|
+
after
|
|
24
|
+
} = $props();
|
|
25
|
+
let title = $state(null);
|
|
26
|
+
let showReminder = $state(true);
|
|
24
27
|
let auth = getUser();
|
|
25
28
|
let edition = getEdition();
|
|
26
29
|
function updateScrollReminder() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
showReminder =
|
|
30
|
-
window.scrollY + window.innerHeight <=
|
|
31
|
-
title.getBoundingClientRect().top + window.scrollY;
|
|
30
|
+
if (title)
|
|
31
|
+
showReminder = window.scrollY + window.innerHeight <= title.getBoundingClientRect().top + window.scrollY;
|
|
32
32
|
}
|
|
33
33
|
function addCover() {
|
|
34
|
-
|
|
35
|
-
setImage('|||||');
|
|
34
|
+
if (setImage) setImage("|||||");
|
|
36
35
|
}
|
|
37
36
|
function removeCover() {
|
|
38
|
-
|
|
39
|
-
setImage(null);
|
|
37
|
+
if (setImage) setImage(null);
|
|
40
38
|
}
|
|
41
|
-
// When the title becomes visible or hidden, update the scroll reminder.
|
|
42
39
|
onMount(() => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
40
|
+
const intersectionObserver = new IntersectionObserver(
|
|
41
|
+
() => updateScrollReminder()
|
|
42
|
+
);
|
|
43
|
+
if (title) intersectionObserver.observe(title);
|
|
44
|
+
updateScrollReminder();
|
|
45
|
+
return () => {
|
|
46
|
+
if (title) intersectionObserver.unobserve(title);
|
|
47
|
+
};
|
|
52
48
|
});
|
|
53
|
-
|
|
54
|
-
let embed;
|
|
55
|
-
$: embed = getImage ? getImage() : null;
|
|
49
|
+
let embed = $derived(getImage ? getImage() : null);
|
|
56
50
|
</script>
|
|
57
51
|
|
|
58
52
|
<!-- We key on the chapter ID to avoid laggy updates from image loading -->
|
|
@@ -80,7 +74,7 @@ $: embed = getImage ? getImage() : null;
|
|
|
80
74
|
/>
|
|
81
75
|
{/if}
|
|
82
76
|
{#if !print && showReminder}
|
|
83
|
-
<div class="bookish-scroll-reminder"
|
|
77
|
+
<div class="bookish-scroll-reminder"></div>
|
|
84
78
|
{/if}
|
|
85
79
|
</div>
|
|
86
80
|
{:else}
|
|
@@ -88,7 +82,7 @@ $: embed = getImage ? getImage() : null;
|
|
|
88
82
|
<p> </p>
|
|
89
83
|
{/if}
|
|
90
84
|
{#if !print}
|
|
91
|
-
|
|
85
|
+
{@render outline?.()}
|
|
92
86
|
{/if}
|
|
93
87
|
{#if editable && getImage && setImage}
|
|
94
88
|
{#if embed === null}
|
|
@@ -104,7 +98,7 @@ $: embed = getImage ? getImage() : null;
|
|
|
104
98
|
{/if}
|
|
105
99
|
{/if}
|
|
106
100
|
<div bind:this={title} class="bookish-chapter-header-text">
|
|
107
|
-
|
|
101
|
+
{@render before?.()}
|
|
108
102
|
<Title>
|
|
109
103
|
{#if editable && save}
|
|
110
104
|
<TextEditor
|
|
@@ -123,7 +117,7 @@ $: embed = getImage ? getImage() : null;
|
|
|
123
117
|
>{/if}
|
|
124
118
|
{/if}
|
|
125
119
|
</Title>
|
|
126
|
-
|
|
120
|
+
{@render after?.()}
|
|
127
121
|
{#if tags}
|
|
128
122
|
<div
|
|
129
123
|
>{#each tags as tag}<span class="bookish-tag">{tag}</span
|
|
@@ -1,31 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
slots: {
|
|
19
|
-
outline: {};
|
|
20
|
-
before: {};
|
|
21
|
-
after: {};
|
|
22
|
-
};
|
|
23
|
-
exports?: {} | undefined;
|
|
24
|
-
bindings?: string | undefined;
|
|
25
|
-
};
|
|
26
|
-
export type HeaderProps = typeof __propDef.props;
|
|
27
|
-
export type HeaderEvents = typeof __propDef.events;
|
|
28
|
-
export type HeaderSlots = typeof __propDef.slots;
|
|
29
|
-
export default class Header extends SvelteComponent<HeaderProps, HeaderEvents, HeaderSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
/** True if an author should be able to edit this header. */
|
|
3
|
+
editable: boolean;
|
|
4
|
+
label: string;
|
|
5
|
+
header: string;
|
|
6
|
+
id: string;
|
|
7
|
+
subtitle?: string | undefined;
|
|
8
|
+
print?: boolean;
|
|
9
|
+
tags?: string[] | undefined;
|
|
10
|
+
getImage?: undefined | (() => string | null);
|
|
11
|
+
setImage?: undefined | ((embed: string | null) => Promise<void> | void);
|
|
12
|
+
/** For saving the revised chapter title*/
|
|
13
|
+
save?: ((text: string) => Promise<void> | void) | null;
|
|
14
|
+
outline?: import('svelte').Snippet;
|
|
15
|
+
before?: import('svelte').Snippet;
|
|
16
|
+
after?: import('svelte').Snippet;
|
|
30
17
|
}
|
|
31
|
-
|
|
18
|
+
declare const Header: import("svelte").Component<Props, {}, "">;
|
|
19
|
+
type Header = ReturnType<typeof Header>;
|
|
20
|
+
export default Header;
|
|
@@ -1,44 +1,42 @@
|
|
|
1
|
-
<script>import Header from
|
|
2
|
-
import Outline from
|
|
3
|
-
import Page from
|
|
4
|
-
import Instructions from
|
|
5
|
-
import ChapterIDs from
|
|
6
|
-
import Link from
|
|
7
|
-
import { getBase, getEdition, isEditionEditable } from
|
|
8
|
-
import { page } from
|
|
9
|
-
import Muted from
|
|
10
|
-
import ChapterTitle from
|
|
11
|
-
import ChapterNumber from
|
|
12
|
-
import PageHeader from
|
|
13
|
-
import Rows from
|
|
1
|
+
<script lang="ts">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 Link from "../Link.svelte";
|
|
7
|
+
import { getBase, getEdition, isEditionEditable } from "./Contexts";
|
|
8
|
+
import { page } from "$app/state";
|
|
9
|
+
import Muted from "./Muted.svelte";
|
|
10
|
+
import ChapterTitle from "./ChapterTitle.svelte";
|
|
11
|
+
import ChapterNumber from "./ChapterNumber.svelte";
|
|
12
|
+
import PageHeader from "./PageHeader.svelte";
|
|
13
|
+
import Rows from "./Rows.svelte";
|
|
14
14
|
let editable = isEditionEditable();
|
|
15
15
|
let edition = getEdition();
|
|
16
16
|
let base = getBase();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
});
|
|
41
|
-
}
|
|
17
|
+
let letter = $derived(page.params.letter);
|
|
18
|
+
let bookIndex = $derived($edition?.getBookIndex() ?? {});
|
|
19
|
+
let letters = $derived.by(() => {
|
|
20
|
+
const map = {};
|
|
21
|
+
for (const word of Object.keys(bookIndex).sort(
|
|
22
|
+
(a, b) => a.localeCompare(b)
|
|
23
|
+
))
|
|
24
|
+
map[word.charAt(0).toLocaleLowerCase()] = true;
|
|
25
|
+
return map;
|
|
26
|
+
});
|
|
27
|
+
let words = $derived.by(() => {
|
|
28
|
+
const list = [];
|
|
29
|
+
let count = 0;
|
|
30
|
+
Object.keys(bookIndex).sort((a, b) => a.localeCompare(b)).forEach((word) => {
|
|
31
|
+
const firstLetter = word.charAt(0).toLowerCase();
|
|
32
|
+
if (letter === firstLetter) {
|
|
33
|
+
count++;
|
|
34
|
+
if (count % 20 === 0) list.push(true);
|
|
35
|
+
list.push(word);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return list;
|
|
39
|
+
});
|
|
42
40
|
</script>
|
|
43
41
|
|
|
44
42
|
{#if $edition}
|
|
@@ -59,14 +57,16 @@ $: {
|
|
|
59
57
|
? edition.set($edition.withHeader(ChapterIDs.IndexID, text))
|
|
60
58
|
: undefined}
|
|
61
59
|
>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
{#snippet outline()}
|
|
61
|
+
<Outline
|
|
62
|
+
|
|
63
|
+
previous={$edition.getPreviousChapterID(
|
|
64
|
+
ChapterIDs.IndexID,
|
|
65
|
+
editable,
|
|
66
|
+
)}
|
|
67
|
+
next={$edition.getNextChapterID(ChapterIDs.IndexID, editable)}
|
|
68
|
+
/>
|
|
69
|
+
{/snippet}
|
|
70
70
|
</Header>
|
|
71
71
|
|
|
72
72
|
<Instructions {editable}>
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
events: {
|
|
5
|
-
[evt: string]: CustomEvent<any>;
|
|
6
|
-
};
|
|
7
|
-
slots: {};
|
|
8
|
-
exports?: {} | undefined;
|
|
9
|
-
bindings?: string | undefined;
|
|
10
|
-
};
|
|
11
|
-
export type IndexProps = typeof __propDef.props;
|
|
12
|
-
export type IndexEvents = typeof __propDef.events;
|
|
13
|
-
export type IndexSlots = typeof __propDef.slots;
|
|
14
|
-
export default class Index extends SvelteComponent<IndexProps, IndexEvents, IndexSlots> {
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
1
|
+
declare const Index: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type Index = ReturnType<typeof Index>;
|
|
3
|
+
export default Index;
|
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
editable: boolean;
|
|
5
|
-
};
|
|
6
|
-
events: {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
};
|
|
9
|
-
slots: {
|
|
10
|
-
default: {};
|
|
11
|
-
};
|
|
12
|
-
exports?: {} | undefined;
|
|
13
|
-
bindings?: string | undefined;
|
|
14
|
-
};
|
|
15
|
-
export type InstructionsProps = typeof __propDef.props;
|
|
16
|
-
export type InstructionsEvents = typeof __propDef.events;
|
|
17
|
-
export type InstructionsSlots = typeof __propDef.slots;
|
|
18
|
-
export default class Instructions extends SvelteComponent<InstructionsProps, InstructionsEvents, InstructionsSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
editable: boolean;
|
|
3
|
+
children?: import('svelte').Snippet;
|
|
19
4
|
}
|
|
20
|
-
|
|
5
|
+
declare const Instructions: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Instructions = ReturnType<typeof Instructions>;
|
|
7
|
+
export default Instructions;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
<script>import Parser from
|
|
2
|
-
import BookishEditor from
|
|
3
|
-
import Instructions from
|
|
4
|
-
import Format from
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
<script lang="ts">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 {
|
|
6
|
+
getUser,
|
|
7
|
+
getEdition,
|
|
8
|
+
getLeasee,
|
|
9
|
+
isEditionEditable,
|
|
10
|
+
lease
|
|
11
|
+
} from "./Contexts";
|
|
12
|
+
import EditableHeader from "./EditableHeader.svelte";
|
|
7
13
|
let auth = getUser();
|
|
8
14
|
let edition = getEdition();
|
|
9
15
|
let editable = isEditionEditable();
|
|
@@ -19,7 +25,7 @@ let editable = isEditionEditable();
|
|
|
19
25
|
{#if $edition}
|
|
20
26
|
<!-- If editable, show acknowledgements even if they're empty, otherwise hide -->
|
|
21
27
|
{#if editable}
|
|
22
|
-
<!-- svelte-ignore
|
|
28
|
+
<!-- svelte-ignore missing_declaration -->
|
|
23
29
|
<BookishEditor
|
|
24
30
|
text={$edition.getLicense()}
|
|
25
31
|
parser={(text) =>
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
6
11
|
};
|
|
7
|
-
|
|
8
|
-
exports?: {} | undefined;
|
|
9
|
-
bindings?: string | undefined;
|
|
10
|
-
};
|
|
11
|
-
export type LicenseProps = typeof __propDef.props;
|
|
12
|
-
export type LicenseEvents = typeof __propDef.events;
|
|
13
|
-
export type LicenseSlots = typeof __propDef.slots;
|
|
14
|
-
export default class License extends SvelteComponent<LicenseProps, LicenseEvents, LicenseSlots> {
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
15
13
|
}
|
|
16
|
-
|
|
14
|
+
declare const License: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type License = InstanceType<typeof License>;
|
|
18
|
+
export default License;
|
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
: '')}
|
|
8
8
|
>
|
|
9
9
|
<div class="bookish-loading-animation">
|
|
10
|
-
<div
|
|
11
|
-
<div
|
|
12
|
-
<div
|
|
13
|
-
<div
|
|
14
|
-
<div
|
|
15
|
-
<div
|
|
16
|
-
<div
|
|
17
|
-
<div
|
|
18
|
-
<div
|
|
10
|
+
<div></div>
|
|
11
|
+
<div></div>
|
|
12
|
+
<div></div>
|
|
13
|
+
<div></div>
|
|
14
|
+
<div></div>
|
|
15
|
+
<div></div>
|
|
16
|
+
<div></div>
|
|
17
|
+
<div></div>
|
|
18
|
+
<div></div>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
21
|
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** @typedef {typeof __propDef.slots} LoadingSlots */
|
|
4
|
-
export default class Loading extends SvelteComponent<{
|
|
1
|
+
export default Loading;
|
|
2
|
+
type Loading = SvelteComponent<{
|
|
5
3
|
[x: string]: never;
|
|
6
4
|
}, {
|
|
7
5
|
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
|
|
10
|
-
export type LoadingProps = typeof __propDef.props;
|
|
11
|
-
export type LoadingEvents = typeof __propDef.events;
|
|
12
|
-
export type LoadingSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
[x: string]: never;
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
exports?: undefined;
|
|
23
|
-
bindings?: undefined;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
24
8
|
};
|
|
25
|
-
|
|
9
|
+
declare const Loading: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
15
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
16
|
+
$$bindings?: Bindings;
|
|
17
|
+
} & Exports;
|
|
18
|
+
(internal: unknown, props: {
|
|
19
|
+
$$events?: Events;
|
|
20
|
+
$$slots?: Slots;
|
|
21
|
+
}): Exports & {
|
|
22
|
+
$set?: any;
|
|
23
|
+
$on?: any;
|
|
24
|
+
};
|
|
25
|
+
z_$$bindings?: Bindings;
|
|
26
|
+
}
|
|
@@ -1,30 +1,37 @@
|
|
|
1
|
-
<script>import Header from
|
|
2
|
-
import Outline from
|
|
3
|
-
import Page from
|
|
4
|
-
import Instructions from
|
|
5
|
-
import ChapterIDs from
|
|
6
|
-
import Format from
|
|
7
|
-
import MediaPreview from
|
|
8
|
-
import { onMount } from
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
<script lang="ts">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 {
|
|
10
|
+
getBase,
|
|
11
|
+
getBook,
|
|
12
|
+
getEdition,
|
|
13
|
+
isBookEditable,
|
|
14
|
+
isEditionEditable
|
|
15
|
+
} from "./Contexts";
|
|
16
|
+
import PageHeader from "./PageHeader.svelte";
|
|
17
|
+
import ConfirmButton from "../editor/ConfirmButton.svelte";
|
|
12
18
|
let book = getBook();
|
|
13
19
|
let edition = getEdition();
|
|
14
20
|
let editable = isBookEditable();
|
|
15
21
|
let base = getBase();
|
|
16
|
-
let images = [];
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
let images = $state([]);
|
|
23
|
+
let embeds = $derived($edition?.getEmbeds() ?? []);
|
|
24
|
+
let media = $derived($book?.getMedia());
|
|
19
25
|
function updateImages(newImages) {
|
|
20
|
-
|
|
26
|
+
images = newImages;
|
|
21
27
|
}
|
|
22
28
|
onMount(() => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return () => media?.stopNotifying(updateImages);
|
|
29
|
+
media?.notify(updateImages);
|
|
30
|
+
return () => media?.stopNotifying(updateImages);
|
|
26
31
|
});
|
|
27
|
-
|
|
32
|
+
let unused = $derived(images?.filter(
|
|
33
|
+
(image) => !embeds.some((embed) => image.url.includes(embed.embed.getURL()))
|
|
34
|
+
));
|
|
28
35
|
</script>
|
|
29
36
|
|
|
30
37
|
{#if $edition}
|
|
@@ -45,14 +52,16 @@ $: unused = images?.filter((image) => !embeds.some((embed) => image.url.includes
|
|
|
45
52
|
? edition.set($edition.withHeader(ChapterIDs.MediaID, text))
|
|
46
53
|
: undefined}
|
|
47
54
|
>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
{#snippet outline()}
|
|
56
|
+
<Outline
|
|
57
|
+
|
|
58
|
+
previous={$edition.getPreviousChapterID(
|
|
59
|
+
ChapterIDs.MediaID,
|
|
60
|
+
editable,
|
|
61
|
+
)}
|
|
62
|
+
next={$edition.getNextChapterID(ChapterIDs.MediaID, editable)}
|
|
63
|
+
/>
|
|
64
|
+
{/snippet}
|
|
56
65
|
</Header>
|
|
57
66
|
<Instructions {editable}>
|
|
58
67
|
These are the images in the book, in order of appearance. You can
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
events: {
|
|
5
|
-
[evt: string]: CustomEvent<any>;
|
|
6
|
-
};
|
|
7
|
-
slots: {};
|
|
8
|
-
exports?: {} | undefined;
|
|
9
|
-
bindings?: string | undefined;
|
|
10
|
-
};
|
|
11
|
-
export type MediaProps = typeof __propDef.props;
|
|
12
|
-
export type MediaEvents = typeof __propDef.events;
|
|
13
|
-
export type MediaSlots = typeof __propDef.slots;
|
|
14
|
-
export default class Media extends SvelteComponent<MediaProps, MediaEvents, MediaSlots> {
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
1
|
+
declare const Media: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type Media = ReturnType<typeof Media>;
|
|
3
|
+
export default Media;
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
<script>import Link from
|
|
2
|
-
import { getBase } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<script lang="ts">import Link from "../Link.svelte";
|
|
2
|
+
import { getBase } from "./Contexts";
|
|
3
|
+
let {
|
|
4
|
+
url,
|
|
5
|
+
alt,
|
|
6
|
+
chapterID,
|
|
7
|
+
children
|
|
8
|
+
} = $props();
|
|
6
9
|
let base = getBase();
|
|
7
|
-
let loaded;
|
|
8
|
-
let urlChecked;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
10
|
+
let loaded = $state();
|
|
11
|
+
let urlChecked = void 0;
|
|
12
|
+
$effect.pre(() => {
|
|
13
|
+
if (urlChecked !== url && typeof Image !== "undefined") {
|
|
14
|
+
urlChecked = url;
|
|
15
|
+
let image = new Image();
|
|
16
|
+
image.src = url;
|
|
17
|
+
loaded = image.complete;
|
|
18
|
+
if (!loaded) {
|
|
19
|
+
image.onload = () => loaded = true;
|
|
20
|
+
image.onerror = () => loaded = null;
|
|
19
21
|
}
|
|
20
|
-
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
21
24
|
</script>
|
|
22
25
|
|
|
23
26
|
<figure class={'media-preview'}>
|
|
@@ -28,7 +31,7 @@ $: {
|
|
|
28
31
|
{:else if loaded === null}
|
|
29
32
|
<div class="missing">missing image</div>
|
|
30
33
|
{/if}
|
|
31
|
-
<figcaption class="credit"
|
|
34
|
+
<figcaption class="credit">{@render children?.()}</figcaption>
|
|
32
35
|
</figure>
|
|
33
36
|
|
|
34
37
|
<style>
|