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,22 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
chapterID: string | undefined;
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {
|
|
12
|
-
default: {};
|
|
13
|
-
};
|
|
14
|
-
exports?: {} | undefined;
|
|
15
|
-
bindings?: string | undefined;
|
|
16
|
-
};
|
|
17
|
-
export type MediaPreviewProps = typeof __propDef.props;
|
|
18
|
-
export type MediaPreviewEvents = typeof __propDef.events;
|
|
19
|
-
export type MediaPreviewSlots = typeof __propDef.slots;
|
|
20
|
-
export default class MediaPreview extends SvelteComponent<MediaPreviewProps, MediaPreviewEvents, MediaPreviewSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
url: string;
|
|
3
|
+
alt: string;
|
|
4
|
+
chapterID: string | undefined;
|
|
5
|
+
children?: import('svelte').Snippet;
|
|
21
6
|
}
|
|
22
|
-
|
|
7
|
+
declare const MediaPreview: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type MediaPreview = ReturnType<typeof MediaPreview>;
|
|
9
|
+
export default MediaPreview;
|
|
@@ -1,29 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** @typedef {typeof __propDef.slots} MutedSlots */
|
|
4
|
-
export default class Muted extends SvelteComponent<{
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {
|
|
9
|
-
default: {};
|
|
10
|
-
}> {
|
|
1
|
+
interface Props {
|
|
2
|
+
children?: import('svelte').Snippet;
|
|
11
3
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
import { SvelteComponent } from "svelte";
|
|
16
|
-
declare const __propDef: {
|
|
17
|
-
props: {
|
|
18
|
-
[x: string]: never;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {
|
|
24
|
-
default: {};
|
|
25
|
-
};
|
|
26
|
-
exports?: undefined;
|
|
27
|
-
bindings?: undefined;
|
|
28
|
-
};
|
|
29
|
-
export {};
|
|
4
|
+
declare const Muted: import("svelte").Component<Props, {}, "">;
|
|
5
|
+
type Muted = ReturnType<typeof Muted>;
|
|
6
|
+
export default Muted;
|
|
@@ -1,118 +1,96 @@
|
|
|
1
|
-
<script>import { isMobile } from
|
|
2
|
-
import { onMount } from
|
|
3
|
-
import Link from
|
|
4
|
-
import { getBase, getDarkMode } from
|
|
5
|
-
import DarkToggle from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
<script lang="ts">import { isMobile } from "../../util/isMobile";
|
|
2
|
+
import { onMount } from "svelte";
|
|
3
|
+
import Link from "../Link.svelte";
|
|
4
|
+
import { getBase, getDarkMode } from "./Contexts";
|
|
5
|
+
import DarkToggle from "../controls/DarkToggle.svelte";
|
|
6
|
+
let {
|
|
7
|
+
previous,
|
|
8
|
+
next,
|
|
9
|
+
collapse = false,
|
|
10
|
+
listener = void 0
|
|
11
|
+
} = $props();
|
|
10
12
|
let headerString = null;
|
|
11
|
-
let headerIndex = -1;
|
|
12
|
-
let expanded = false;
|
|
13
|
+
let headerIndex = $state(-1);
|
|
14
|
+
let expanded = $state(false);
|
|
13
15
|
let dark = getDarkMode();
|
|
14
16
|
let base = getBase();
|
|
15
|
-
let outline = null;
|
|
16
|
-
let headers = [];
|
|
17
|
+
let outline = $state(null);
|
|
18
|
+
let headers = $state([]);
|
|
17
19
|
function toggleExpanded() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// Toggle expanded state
|
|
23
|
-
expanded = newExpanded;
|
|
24
|
-
if (listener)
|
|
25
|
-
listener(newExpanded, layout);
|
|
20
|
+
if (!isMobile()) return;
|
|
21
|
+
const newExpanded = !expanded;
|
|
22
|
+
expanded = newExpanded;
|
|
23
|
+
if (listener) listener(newExpanded, layout);
|
|
26
24
|
}
|
|
27
25
|
function toggleReadingMode() {
|
|
28
|
-
|
|
26
|
+
dark.set(!$dark);
|
|
29
27
|
}
|
|
30
28
|
function layout() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
position();
|
|
30
|
+
highlight();
|
|
31
|
+
updateHeaders();
|
|
34
32
|
}
|
|
35
33
|
function updateHeaders() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
headerString = newHeaderString;
|
|
34
|
+
headers = Array.from(document.getElementsByClassName("page-header"));
|
|
35
|
+
let newHeaderString = headers.reduce(
|
|
36
|
+
(sum, el) => sum + el.outerHTML,
|
|
37
|
+
""
|
|
38
|
+
);
|
|
39
|
+
if (headerString !== newHeaderString) headerString = newHeaderString;
|
|
43
40
|
}
|
|
44
41
|
function getHighlightThreshold() {
|
|
45
|
-
|
|
42
|
+
return window.innerHeight / 3;
|
|
46
43
|
}
|
|
47
44
|
function position() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
// Otherwise, anchor it to the title position.
|
|
66
|
-
else {
|
|
67
|
-
outline.classList.remove('outline-fixed-left');
|
|
68
|
-
outline.classList.add('outline-title-left');
|
|
69
|
-
}
|
|
70
|
-
// Tell any listeners about the repositioning.
|
|
71
|
-
if (listener)
|
|
72
|
-
listener(false, layout);
|
|
73
|
-
}
|
|
45
|
+
let title = document.getElementsByClassName(
|
|
46
|
+
"bookish-chapter-header-text"
|
|
47
|
+
)[0];
|
|
48
|
+
if (outline && title) {
|
|
49
|
+
if (isMobile()) {
|
|
50
|
+
outline.style.removeProperty("margin-top");
|
|
51
|
+
} else {
|
|
52
|
+
let titleY = title.getBoundingClientRect().top + window.scrollY;
|
|
53
|
+
if (titleY - 50 < window.scrollY) {
|
|
54
|
+
outline.classList.add("outline-fixed-left");
|
|
55
|
+
outline.classList.remove("outline-title-left");
|
|
56
|
+
} else {
|
|
57
|
+
outline.classList.remove("outline-fixed-left");
|
|
58
|
+
outline.classList.add("outline-title-left");
|
|
59
|
+
}
|
|
60
|
+
if (listener) listener(false, layout);
|
|
74
61
|
}
|
|
62
|
+
}
|
|
75
63
|
}
|
|
76
64
|
function highlight() {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
// Update the outline and progress bar.
|
|
94
|
-
headerIndex = indexOfNearestHeaderAbove;
|
|
65
|
+
const top = window.scrollY;
|
|
66
|
+
const threshold = getHighlightThreshold();
|
|
67
|
+
let indexOfNearestHeaderAbove = -1;
|
|
68
|
+
Array.from(document.getElementsByClassName("page-header")).forEach(
|
|
69
|
+
(header, index) => {
|
|
70
|
+
if (header.tagName === "H1" || header.tagName === "H2" || header.tagName === "H3") {
|
|
71
|
+
let rect = header.getBoundingClientRect();
|
|
72
|
+
let headerTop = rect.y + top - rect.height;
|
|
73
|
+
if (top > headerTop - threshold)
|
|
74
|
+
indexOfNearestHeaderAbove = index;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
headerIndex = indexOfNearestHeaderAbove;
|
|
95
79
|
}
|
|
96
80
|
onMount(() => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// Stop listening!
|
|
107
|
-
return () => {
|
|
108
|
-
window.removeEventListener('scroll', layout);
|
|
109
|
-
window.removeEventListener('resize', layout);
|
|
110
|
-
document.removeEventListener('selectionchange', updateHeaders);
|
|
111
|
-
};
|
|
81
|
+
window.addEventListener("resize", layout);
|
|
82
|
+
window.addEventListener("scroll", layout);
|
|
83
|
+
document.addEventListener("selectionchange", updateHeaders);
|
|
84
|
+
layout();
|
|
85
|
+
return () => {
|
|
86
|
+
window.removeEventListener("scroll", layout);
|
|
87
|
+
window.removeEventListener("resize", layout);
|
|
88
|
+
document.removeEventListener("selectionchange", updateHeaders);
|
|
89
|
+
};
|
|
112
90
|
});
|
|
113
|
-
let previousLabel =
|
|
114
|
-
let nextLabel =
|
|
115
|
-
let expandLabel =
|
|
91
|
+
let previousLabel = "\u25C0\uFE0E";
|
|
92
|
+
let nextLabel = "\u25B6\uFE0E";
|
|
93
|
+
let expandLabel = "\u2630";
|
|
116
94
|
</script>
|
|
117
95
|
|
|
118
96
|
<nav
|
|
@@ -130,8 +108,8 @@ let expandLabel = '\u2630';
|
|
|
130
108
|
? 'Collapse navigation menu'
|
|
131
109
|
: 'Expand navigation menu'}
|
|
132
110
|
tabindex="0"
|
|
133
|
-
|
|
134
|
-
|
|
111
|
+
onclick={headers.length > 0 ? toggleExpanded : undefined}
|
|
112
|
+
onkeydown={(event) => {
|
|
135
113
|
if (event.key === 'Enter' || event.key === ' ')
|
|
136
114
|
toggleExpanded();
|
|
137
115
|
}}
|
|
@@ -324,6 +302,7 @@ let expandLabel = '\u2630';
|
|
|
324
302
|
/* Desktop */
|
|
325
303
|
@media screen and (min-width: 1200px) {
|
|
326
304
|
.outline {
|
|
305
|
+
--outline-width: min(12em, calc((100vw - 740px) / 2 - 3 * var(--outline-padding)));
|
|
327
306
|
width: var(--outline-width);
|
|
328
307
|
z-index: 0; /* Put it below everything when it's in the margin. */
|
|
329
308
|
border-right: 1px solid var(--bookish-border-color-light);
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
collapse?: boolean;
|
|
7
|
-
listener?: ((expanded: boolean, layout: Function) => void) | undefined;
|
|
8
|
-
};
|
|
9
|
-
events: {
|
|
10
|
-
[evt: string]: CustomEvent<any>;
|
|
11
|
-
};
|
|
12
|
-
slots: {};
|
|
13
|
-
exports?: {} | undefined;
|
|
14
|
-
bindings?: string | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type OutlineProps = typeof __propDef.props;
|
|
17
|
-
export type OutlineEvents = typeof __propDef.events;
|
|
18
|
-
export type OutlineSlots = typeof __propDef.slots;
|
|
19
|
-
export default class Outline extends SvelteComponent<OutlineProps, OutlineEvents, OutlineSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
previous: string | null;
|
|
3
|
+
next: string | null;
|
|
4
|
+
collapse?: boolean;
|
|
5
|
+
listener?: ((expanded: boolean, layout: Function) => void) | undefined;
|
|
20
6
|
}
|
|
21
|
-
|
|
7
|
+
declare const Outline: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type Outline = ReturnType<typeof Outline>;
|
|
9
|
+
export default Outline;
|
|
@@ -1,55 +1,47 @@
|
|
|
1
|
-
<script>import { onMount } from
|
|
2
|
-
import Loading from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
let
|
|
6
|
-
let imagesLoaded = false;
|
|
1
|
+
<script lang="ts">import { onMount } from "svelte";
|
|
2
|
+
import Loading from "./Loading.svelte";
|
|
3
|
+
let { title = void 0, afterLoaded = void 0, children } = $props();
|
|
4
|
+
let fontsLoaded = $state(false);
|
|
5
|
+
let imagesLoaded = $state(false);
|
|
7
6
|
let lastHeight = 0;
|
|
8
7
|
let intervalID = null;
|
|
9
8
|
let mountTime = Date.now();
|
|
10
|
-
|
|
9
|
+
let loaded = $derived(fontsLoaded && imagesLoaded);
|
|
11
10
|
function watchLoading() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
imagesLoaded = true;
|
|
20
|
-
if (afterLoaded)
|
|
21
|
-
afterLoaded();
|
|
22
|
-
}
|
|
23
|
-
// Remember the last height
|
|
24
|
-
lastHeight = bodyHeight;
|
|
11
|
+
const bodyHeight = document.body.clientHeight;
|
|
12
|
+
if (lastHeight === bodyHeight && imagesAreLoaded() || Date.now() - mountTime > 2e3) {
|
|
13
|
+
stopWatching();
|
|
14
|
+
imagesLoaded = true;
|
|
15
|
+
if (afterLoaded) afterLoaded();
|
|
16
|
+
}
|
|
17
|
+
lastHeight = bodyHeight;
|
|
25
18
|
}
|
|
26
19
|
function stopWatching() {
|
|
27
|
-
|
|
28
|
-
clearInterval(intervalID);
|
|
20
|
+
if (intervalID) clearInterval(intervalID);
|
|
29
21
|
}
|
|
30
22
|
onMount(() => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
document.fonts.ready.then(() => (fontsLoaded = true));
|
|
35
|
-
return () => stopWatching();
|
|
23
|
+
intervalID = setInterval(() => watchLoading(), 50);
|
|
24
|
+
document.fonts.ready.then(() => fontsLoaded = true);
|
|
25
|
+
return () => stopWatching();
|
|
36
26
|
});
|
|
37
27
|
function imagesAreLoaded() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
28
|
+
let done = true;
|
|
29
|
+
Array.from(document.getElementsByTagName("img")).forEach((el) => {
|
|
30
|
+
done = done && el.complete;
|
|
31
|
+
});
|
|
32
|
+
return done;
|
|
43
33
|
}
|
|
44
34
|
</script>
|
|
45
35
|
|
|
46
36
|
<svelte:head>
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
{#if title !== undefined}
|
|
38
|
+
<title>{title}</title>
|
|
39
|
+
<meta name="description" content={title} />
|
|
40
|
+
{/if}
|
|
49
41
|
</svelte:head>
|
|
50
42
|
|
|
51
43
|
<section class={'bookish-page' + (imagesLoaded ? ' loaded' : '')}>
|
|
52
|
-
|
|
44
|
+
{@render children?.()}
|
|
53
45
|
</section>
|
|
54
46
|
<!-- Overlay loading feedback if loading, but still render the page. -->
|
|
55
47
|
{#if loaded === false}
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
afterLoaded?: Function | undefined;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {
|
|
11
|
-
default: {};
|
|
12
|
-
};
|
|
13
|
-
exports?: {} | undefined;
|
|
14
|
-
bindings?: string | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type PageProps = typeof __propDef.props;
|
|
17
|
-
export type PageEvents = typeof __propDef.events;
|
|
18
|
-
export type PageSlots = typeof __propDef.slots;
|
|
19
|
-
export default class Page extends SvelteComponent<PageProps, PageEvents, PageSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
title?: string | undefined;
|
|
3
|
+
afterLoaded?: Function | undefined;
|
|
4
|
+
children?: import('svelte').Snippet;
|
|
20
5
|
}
|
|
21
|
-
|
|
6
|
+
declare const Page: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type Page = ReturnType<typeof Page>;
|
|
8
|
+
export default Page;
|
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
id?: string | null;
|
|
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 PageHeaderProps = typeof __propDef.props;
|
|
16
|
-
export type PageHeaderEvents = typeof __propDef.events;
|
|
17
|
-
export type PageHeaderSlots = typeof __propDef.slots;
|
|
18
|
-
export default class PageHeader extends SvelteComponent<PageHeaderProps, PageHeaderEvents, PageHeaderSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
id?: string | null;
|
|
3
|
+
children?: import('svelte').Snippet;
|
|
19
4
|
}
|
|
20
|
-
|
|
5
|
+
declare const PageHeader: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type PageHeader = ReturnType<typeof PageHeader>;
|
|
7
|
+
export default PageHeader;
|
|
@@ -1,29 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** @typedef {typeof __propDef.slots} PageParagraphSlots */
|
|
4
|
-
export default class PageParagraph extends SvelteComponent<{
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {
|
|
9
|
-
default: {};
|
|
10
|
-
}> {
|
|
1
|
+
interface Props {
|
|
2
|
+
children?: import('svelte').Snippet;
|
|
11
3
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
import { SvelteComponent } from "svelte";
|
|
16
|
-
declare const __propDef: {
|
|
17
|
-
props: {
|
|
18
|
-
[x: string]: never;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {
|
|
24
|
-
default: {};
|
|
25
|
-
};
|
|
26
|
-
exports?: undefined;
|
|
27
|
-
bindings?: undefined;
|
|
28
|
-
};
|
|
29
|
-
export {};
|
|
4
|
+
declare const PageParagraph: import("svelte").Component<Props, {}, "">;
|
|
5
|
+
type PageParagraph = ReturnType<typeof PageParagraph>;
|
|
6
|
+
export default PageParagraph;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<script>import Chapter from
|
|
2
|
-
import { page } from
|
|
3
|
-
import { getEdition } from
|
|
4
|
-
import Unknown from
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
<script lang="ts">import Chapter from "./Chapter.svelte";
|
|
2
|
+
import { page } from "$app/state";
|
|
3
|
+
import { getEdition } from "./Contexts";
|
|
4
|
+
import Unknown from "./Unknown.svelte";
|
|
5
|
+
let edition = $derived(getEdition());
|
|
6
|
+
let chapterID = $derived(page.params.chapterid);
|
|
7
|
+
let chapter = $derived(chapterID === void 0 ? void 0 : $edition?.getChapter(chapterID));
|
|
8
8
|
</script>
|
|
9
9
|
|
|
10
10
|
{#if chapter}
|
|
@@ -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 PossibleChapterProps = typeof __propDef.props;
|
|
12
|
-
export type PossibleChapterEvents = typeof __propDef.events;
|
|
13
|
-
export type PossibleChapterSlots = typeof __propDef.slots;
|
|
14
|
-
export default class PossibleChapter extends SvelteComponent<PossibleChapterProps, PossibleChapterEvents, PossibleChapterSlots> {
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
1
|
+
declare const PossibleChapter: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type PossibleChapter = ReturnType<typeof PossibleChapter>;
|
|
3
|
+
export default PossibleChapter;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
<script>import FormatNode from
|
|
2
|
-
import Format from
|
|
3
|
-
import Reference from
|
|
4
|
-
|
|
5
|
-
export let edit;
|
|
1
|
+
<script lang="ts">import FormatNode from "../../models/chapter/FormatNode";
|
|
2
|
+
import Format from "../chapter/Format.svelte";
|
|
3
|
+
import Reference from "./Reference.svelte";
|
|
4
|
+
let { node, edit } = $props();
|
|
6
5
|
</script>
|
|
7
6
|
|
|
8
7
|
{#if node instanceof FormatNode}
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import FormatNode from '../../models/chapter/FormatNode';
|
|
3
2
|
import type Ref from '../../models/book/Reference';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
edit: boolean;
|
|
8
|
-
};
|
|
9
|
-
events: {
|
|
10
|
-
[evt: string]: CustomEvent<any>;
|
|
11
|
-
};
|
|
12
|
-
slots: {};
|
|
13
|
-
exports?: {} | undefined;
|
|
14
|
-
bindings?: string | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type PossibleReferenceProps = typeof __propDef.props;
|
|
17
|
-
export type PossibleReferenceEvents = typeof __propDef.events;
|
|
18
|
-
export type PossibleReferenceSlots = typeof __propDef.slots;
|
|
19
|
-
export default class PossibleReference extends SvelteComponent<PossibleReferenceProps, PossibleReferenceEvents, PossibleReferenceSlots> {
|
|
3
|
+
interface Props {
|
|
4
|
+
node: FormatNode | Ref;
|
|
5
|
+
edit: boolean;
|
|
20
6
|
}
|
|
21
|
-
|
|
7
|
+
declare const PossibleReference: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type PossibleReference = ReturnType<typeof PossibleReference>;
|
|
9
|
+
export default PossibleReference;
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
<script>import Chapter from
|
|
2
|
-
import { getEdition } from
|
|
1
|
+
<script lang="ts">import Chapter from "./Chapter.svelte";
|
|
2
|
+
import { getEdition } from "./Contexts";
|
|
3
|
+
import Parser from "../../models/chapter/Parser";
|
|
3
4
|
let edition = getEdition();
|
|
5
|
+
let title = $derived($edition ? [
|
|
6
|
+
$edition.getTitle(),
|
|
7
|
+
`${$edition.getEditionLabel()} Edition`,
|
|
8
|
+
Parser.parseFormat(
|
|
9
|
+
$edition,
|
|
10
|
+
$edition.getAuthors().at(0) ?? ""
|
|
11
|
+
).toText() + ($edition.getAuthors().length > 1 ? " et al." : "")
|
|
12
|
+
].filter(Boolean).join(" - ") : void 0);
|
|
4
13
|
</script>
|
|
5
14
|
|
|
15
|
+
<svelte:head>
|
|
16
|
+
{#if title}<title>{title}</title>{/if}
|
|
17
|
+
</svelte:head>
|
|
18
|
+
|
|
6
19
|
{#if $edition}
|
|
7
20
|
{#each $edition
|
|
8
21
|
.getChapters()
|
|
@@ -16,6 +29,9 @@ let edition = getEdition();
|
|
|
16
29
|
:global(.bookish-chapter-header) {
|
|
17
30
|
break-before: page;
|
|
18
31
|
}
|
|
32
|
+
:global(.bookish-page:first-of-type .bookish-chapter-header) {
|
|
33
|
+
break-before: auto;
|
|
34
|
+
}
|
|
19
35
|
|
|
20
36
|
:global(body) {
|
|
21
37
|
font-size: 16pt;
|