bookish-press 0.7.4 → 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 +36 -34
- 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 +224 -249
- 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 +26 -31
- 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 +75 -97
- package/dist/components/page/Outline.svelte.d.ts +8 -20
- package/dist/components/page/Page.svelte +23 -33
- 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 +11 -12
- 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/Firebase.js +18 -4
- package/dist/models/book/Book.js +2 -1
- 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 +34 -22
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type DefinitionNode from '../../models/chapter/DefinitionNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
node: DefinitionNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type DefinitionProps = typeof __propDef.props;
|
|
15
|
-
export type DefinitionEvents = typeof __propDef.events;
|
|
16
|
-
export type DefinitionSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Definition extends SvelteComponent<DefinitionProps, DefinitionEvents, DefinitionSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: DefinitionNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const Definition: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Definition = ReturnType<typeof Definition>;
|
|
7
|
+
export default Definition;
|
|
@@ -1,84 +1,87 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
<script lang="ts">import { storage } from "../../models/Firebase";
|
|
2
|
+
import {
|
|
3
|
+
getCaret,
|
|
4
|
+
getBook,
|
|
5
|
+
getBase,
|
|
6
|
+
isEditionEditable
|
|
7
|
+
} from "../page/Contexts";
|
|
8
|
+
import Figure from "./Figure.svelte";
|
|
9
|
+
import { getContext } from "svelte";
|
|
10
|
+
let {
|
|
11
|
+
node,
|
|
12
|
+
editable = true,
|
|
13
|
+
placeholder = "",
|
|
14
|
+
imageOnly = false
|
|
15
|
+
} = $props();
|
|
16
|
+
let url = $derived(node.getURL());
|
|
17
|
+
let description = $derived(node.getDescription());
|
|
13
18
|
let caret = getCaret();
|
|
14
19
|
let book = getBook();
|
|
15
20
|
let base = getBase();
|
|
16
21
|
let editionEditable = isEditionEditable();
|
|
17
|
-
|
|
18
|
-
let
|
|
19
|
-
let
|
|
20
|
-
let
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
let claimCaret = getContext("claimeditor");
|
|
23
|
+
let dragging = $state(false);
|
|
24
|
+
let dragFeedback = $state(void 0);
|
|
25
|
+
let imageError = $state(false);
|
|
26
|
+
$effect.pre(() => {
|
|
27
|
+
if (node) imageError = false;
|
|
28
|
+
});
|
|
24
29
|
function handleDrop(event) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
if (event.dataTransfer?.items) {
|
|
32
|
+
const imageFiles = [...event.dataTransfer.items].filter((item) => item.kind === "file").map((item) => item.getAsFile()).filter(
|
|
33
|
+
(file) => file !== null && /.*\.(jpg|jpeg|png)/i.test(file.name)
|
|
34
|
+
);
|
|
35
|
+
if (imageFiles.length === 0)
|
|
36
|
+
dragFeedback = "Only JPEG or PNG images are allowed.";
|
|
37
|
+
else if (imageFiles.length > 1)
|
|
38
|
+
dragFeedback = "Only one image at a time please!";
|
|
39
|
+
else {
|
|
40
|
+
dragFeedback = "Uploading\u2026";
|
|
41
|
+
const file = imageFiles[0];
|
|
42
|
+
const media = $book?.getMedia();
|
|
43
|
+
if (file === null) return;
|
|
44
|
+
if (storage === void 0) return;
|
|
45
|
+
if (media === void 0) return;
|
|
46
|
+
media.upload(
|
|
47
|
+
file,
|
|
48
|
+
(progress) => dragFeedback = `${progress}% done`,
|
|
49
|
+
(error) => {
|
|
50
|
+
dragFeedback = error;
|
|
51
|
+
dragging = false;
|
|
52
|
+
},
|
|
53
|
+
(url2, thumbnails) => {
|
|
54
|
+
$caret?.edit(
|
|
55
|
+
node,
|
|
56
|
+
node.withURLs(url2, thumbnails).withDescription("")
|
|
57
|
+
);
|
|
58
|
+
dragging = false;
|
|
59
|
+
dragFeedback = void 0;
|
|
55
60
|
}
|
|
61
|
+
);
|
|
56
62
|
}
|
|
63
|
+
}
|
|
57
64
|
}
|
|
58
65
|
function handleDrag(event) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (claimCaret)
|
|
64
|
-
claimCaret();
|
|
66
|
+
event?.preventDefault();
|
|
67
|
+
dragging = true;
|
|
68
|
+
dragFeedback = "Drop to upload\u2026";
|
|
69
|
+
if (claimCaret) claimCaret();
|
|
65
70
|
}
|
|
66
71
|
function handleDragLeave(event) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
dragFeedback = undefined;
|
|
72
|
+
if (event.target !== event.currentTarget) return;
|
|
73
|
+
event?.preventDefault();
|
|
74
|
+
dragging = false;
|
|
75
|
+
dragFeedback = void 0;
|
|
72
76
|
}
|
|
73
77
|
function handleLoad() {
|
|
74
|
-
|
|
78
|
+
imageError = false;
|
|
75
79
|
}
|
|
76
80
|
function handleError() {
|
|
77
|
-
|
|
81
|
+
imageError = true;
|
|
78
82
|
}
|
|
79
83
|
function handleClick() {
|
|
80
|
-
|
|
81
|
-
claimCaret();
|
|
84
|
+
if (claimCaret) claimCaret();
|
|
82
85
|
}
|
|
83
86
|
</script>
|
|
84
87
|
|
|
@@ -101,15 +104,18 @@ function handleClick() {
|
|
|
101
104
|
class={`bookish-figure-unspecified ${
|
|
102
105
|
dragging ? 'bookish-figure-dragging' : ''
|
|
103
106
|
}`}
|
|
104
|
-
|
|
107
|
+
onclick={(event) => {
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
handleClick();
|
|
110
|
+
}}
|
|
105
111
|
tabindex="0"
|
|
106
|
-
|
|
112
|
+
onkeydown={(event) =>
|
|
107
113
|
event.key === ' ' || event.key === 'Enter'
|
|
108
114
|
? handleClick()
|
|
109
115
|
: undefined}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
116
|
+
ondrop={handleDrop}
|
|
117
|
+
ondragover={handleDrag}
|
|
118
|
+
ondragleave={handleDragLeave}
|
|
113
119
|
>{dragFeedback !== undefined
|
|
114
120
|
? dragFeedback
|
|
115
121
|
: placeholder.length > 0
|
|
@@ -128,7 +134,7 @@ function handleClick() {
|
|
|
128
134
|
frameBorder="0"
|
|
129
135
|
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
|
130
136
|
allowFullScreen
|
|
131
|
-
|
|
137
|
+
></iframe>
|
|
132
138
|
</article>
|
|
133
139
|
{:else}
|
|
134
140
|
<img
|
|
@@ -141,8 +147,8 @@ function handleClick() {
|
|
|
141
147
|
? '(min-width: 1024px) 1024px, 320px'
|
|
142
148
|
: undefined}
|
|
143
149
|
alt={description}
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
onload={handleLoad}
|
|
151
|
+
onerror={handleError}
|
|
146
152
|
/>
|
|
147
153
|
{/if}
|
|
148
154
|
</Figure>
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type EmbedNode from '../../models/chapter/EmbedNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
imageOnly?: boolean;
|
|
9
|
-
};
|
|
10
|
-
events: {
|
|
11
|
-
[evt: string]: CustomEvent<any>;
|
|
12
|
-
};
|
|
13
|
-
slots: {};
|
|
14
|
-
exports?: {} | undefined;
|
|
15
|
-
bindings?: string | undefined;
|
|
16
|
-
};
|
|
17
|
-
export type EmbedProps = typeof __propDef.props;
|
|
18
|
-
export type EmbedEvents = typeof __propDef.events;
|
|
19
|
-
export type EmbedSlots = typeof __propDef.slots;
|
|
20
|
-
export default class Embed extends SvelteComponent<EmbedProps, EmbedEvents, EmbedSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: EmbedNode;
|
|
4
|
+
editable?: boolean;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
imageOnly?: boolean;
|
|
21
7
|
}
|
|
22
|
-
|
|
8
|
+
declare const Embed: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type Embed = ReturnType<typeof Embed>;
|
|
10
|
+
export default Embed;
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type ErrorNode from '../../models/chapter/ErrorNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
node: ErrorNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type ErrorMessageProps = typeof __propDef.props;
|
|
15
|
-
export type ErrorMessageEvents = typeof __propDef.events;
|
|
16
|
-
export type ErrorMessageSlots = typeof __propDef.slots;
|
|
17
|
-
export default class ErrorMessage extends SvelteComponent<ErrorMessageProps, ErrorMessageEvents, ErrorMessageSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: ErrorNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const ErrorMessage: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type ErrorMessage = ReturnType<typeof ErrorMessage>;
|
|
7
|
+
export default ErrorMessage;
|
|
@@ -1,48 +1,41 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
<script lang="ts">import Format from "./Format.svelte";
|
|
2
|
+
import Positioned from "./Positioned.svelte";
|
|
3
|
+
import { getCaret, isChapterEditable } from "../page/Contexts";
|
|
4
|
+
let {
|
|
5
|
+
node,
|
|
6
|
+
caption,
|
|
7
|
+
credit = void 0,
|
|
8
|
+
focusable = true,
|
|
9
|
+
children
|
|
10
|
+
} = $props();
|
|
10
11
|
let editable = isChapterEditable();
|
|
11
12
|
let caret = getCaret();
|
|
12
|
-
|
|
13
|
+
let selected = $derived($caret?.range?.start.node === node);
|
|
13
14
|
function focusFigure() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// } else {
|
|
22
|
-
const firstCaret = node.getFirstCaret();
|
|
23
|
-
if (firstCaret)
|
|
24
|
-
$caret.setCaret({
|
|
25
|
-
start: firstCaret,
|
|
26
|
-
end: firstCaret,
|
|
27
|
-
});
|
|
28
|
-
// }
|
|
15
|
+
if (!editable || $caret === void 0) return;
|
|
16
|
+
const firstCaret = node.getFirstCaret();
|
|
17
|
+
if (firstCaret)
|
|
18
|
+
$caret.setCaret({
|
|
19
|
+
start: firstCaret,
|
|
20
|
+
end: firstCaret
|
|
21
|
+
});
|
|
29
22
|
}
|
|
30
23
|
</script>
|
|
31
24
|
|
|
32
25
|
<Positioned position={node.getPosition()}>
|
|
33
26
|
<figure class="bookish-figure" data-nodeid={node.nodeID}>
|
|
34
|
-
<!-- svelte-ignore
|
|
27
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
35
28
|
<div
|
|
36
29
|
class:selected
|
|
37
30
|
role={focusable ? 'button' : undefined}
|
|
38
31
|
tabindex={focusable ? 0 : undefined}
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
onmousedown={focusable ? focusFigure : null}
|
|
33
|
+
onkeydown={(event) =>
|
|
41
34
|
event.key === ' ' || event.key === 'Enter'
|
|
42
35
|
? focusFigure()
|
|
43
36
|
: null}
|
|
44
37
|
>
|
|
45
|
-
|
|
38
|
+
{@render children?.()}
|
|
46
39
|
</div>
|
|
47
40
|
{#if caption !== undefined}
|
|
48
41
|
<figcaption class="caption">
|
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type TableNode from '../../models/chapter/TableNode';
|
|
3
2
|
import type EmbedNode from '../../models/chapter/EmbedNode';
|
|
4
3
|
import type CodeNode from '../../models/chapter/CodeNode';
|
|
5
4
|
import type FormatNode from '../../models/chapter/FormatNode';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
events: {
|
|
14
|
-
[evt: string]: CustomEvent<any>;
|
|
15
|
-
};
|
|
16
|
-
slots: {
|
|
17
|
-
default: {};
|
|
18
|
-
};
|
|
19
|
-
exports?: {} | undefined;
|
|
20
|
-
bindings?: string | undefined;
|
|
21
|
-
};
|
|
22
|
-
export type FigureProps = typeof __propDef.props;
|
|
23
|
-
export type FigureEvents = typeof __propDef.events;
|
|
24
|
-
export type FigureSlots = typeof __propDef.slots;
|
|
25
|
-
export default class Figure extends SvelteComponent<FigureProps, FigureEvents, FigureSlots> {
|
|
5
|
+
interface Props {
|
|
6
|
+
node: TableNode | EmbedNode | CodeNode;
|
|
7
|
+
caption: FormatNode | undefined;
|
|
8
|
+
credit?: FormatNode | undefined;
|
|
9
|
+
focusable?: boolean;
|
|
10
|
+
children?: import('svelte').Snippet;
|
|
26
11
|
}
|
|
27
|
-
|
|
12
|
+
declare const Figure: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type Figure = ReturnType<typeof Figure>;
|
|
14
|
+
export default Figure;
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
<script lang="ts">import Atom from "./Atom.svelte";
|
|
2
|
+
import Marginal from "./Marginal.svelte";
|
|
3
|
+
import Format from "./Format.svelte";
|
|
4
|
+
import {
|
|
5
|
+
getChapter,
|
|
6
|
+
getEdition,
|
|
7
|
+
getCaret,
|
|
8
|
+
getRoot
|
|
9
|
+
} from "../page/Contexts";
|
|
10
|
+
let { node } = $props();
|
|
11
|
+
let meta = $derived(node.getMeta());
|
|
10
12
|
let caret = getCaret();
|
|
11
13
|
let chapter = getChapter();
|
|
12
14
|
let edition = getEdition();
|
|
13
15
|
let root = getRoot();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
let number = $derived($root.getFootnotes().indexOf(node));
|
|
17
|
+
let letter = $derived(
|
|
18
|
+
number === void 0 ? void 0 : $edition?.getFootnoteSymbol(number)
|
|
19
|
+
);
|
|
20
|
+
let focused = $derived(
|
|
21
|
+
$caret && $caret.range && $caret.range.start.node.hasAncestor($root, node)
|
|
22
|
+
);
|
|
23
|
+
$effect(() => {
|
|
24
|
+
void meta;
|
|
25
|
+
void number;
|
|
26
|
+
void letter;
|
|
27
|
+
void focused;
|
|
28
|
+
$chapter?.requestLayout();
|
|
29
|
+
});
|
|
24
30
|
</script>
|
|
25
31
|
|
|
26
32
|
<Atom {node}>
|
|
@@ -33,19 +39,21 @@ afterUpdate(() => $chapter?.layoutMarginals());
|
|
|
33
39
|
<!-- We prevent default on the span to prevent mouse events from bubbling up to the footnote symbol. This is key for two reasons:
|
|
34
40
|
1) clicks on the footnote select the footnote atom node itself
|
|
35
41
|
2) we want to be able to click on footnote text and we can't do that if the footnote sets the caret to the atom after clicks. -->
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
{#snippet interactor()}
|
|
43
|
+
<sup class="bookish-footnote-symbol">{letter}</sup>
|
|
44
|
+
{/snippet}
|
|
45
|
+
{#snippet content()}
|
|
46
|
+
<span
|
|
47
|
+
class={`bookish-footnote ${
|
|
48
|
+
focused ? 'bookish-footnote-focused' : ''
|
|
49
|
+
}`}
|
|
50
|
+
>
|
|
51
|
+
<sup class="bookish-footnote-symbol">{letter}</sup><Format
|
|
52
|
+
node={meta}
|
|
53
|
+
placeholder="footnote"
|
|
54
|
+
/></span
|
|
55
|
+
>
|
|
56
|
+
{/snippet}
|
|
49
57
|
</Marginal>
|
|
50
58
|
</span>
|
|
51
59
|
</Atom>
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type FootnoteNode from '../../models/chapter/FootnoteNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
node: FootnoteNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type FootnoteProps = typeof __propDef.props;
|
|
15
|
-
export type FootnoteEvents = typeof __propDef.events;
|
|
16
|
-
export type FootnoteSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Footnote extends SvelteComponent<FootnoteProps, FootnoteEvents, FootnoteSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
node: FootnoteNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const Footnote: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Footnote = ReturnType<typeof Footnote>;
|
|
7
|
+
export default Footnote;
|
|
@@ -1,44 +1,29 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
$: format = node.getFormat();
|
|
28
|
-
$: tag =
|
|
29
|
-
format === '*'
|
|
30
|
-
? 'strong'
|
|
31
|
-
: format === '_'
|
|
32
|
-
? 'em'
|
|
33
|
-
: format === '^'
|
|
34
|
-
? 'sup'
|
|
35
|
-
: format === 'v'
|
|
36
|
-
? 'sub'
|
|
37
|
-
: 'span';
|
|
38
|
-
$: showPlaceholder =
|
|
39
|
-
node.isEmptyText() &&
|
|
40
|
-
placeholder !== undefined &&
|
|
41
|
-
(isChapterEditable() || isEditionEditable());
|
|
1
|
+
<script lang="ts">import FormatNode from "../../models/chapter/FormatNode";
|
|
2
|
+
import CitationsNode from "../../models/chapter/CitationsNode";
|
|
3
|
+
import CommentNode from "../../models/chapter/CommentNode";
|
|
4
|
+
import DefinitionNode from "../../models/chapter/DefinitionNode";
|
|
5
|
+
import FootnoteNode from "../../models/chapter/FootnoteNode";
|
|
6
|
+
import InlineCodeNode from "../../models/chapter/InlineCodeNode";
|
|
7
|
+
import LabelNode from "../../models/chapter/LabelNode";
|
|
8
|
+
import LinkNode from "../../models/chapter/LinkNode";
|
|
9
|
+
import TextNode from "../../models/chapter/TextNode";
|
|
10
|
+
import Problem from "./Problem.svelte";
|
|
11
|
+
import Citations from "./Citations.svelte";
|
|
12
|
+
import Definition from "./Definition.svelte";
|
|
13
|
+
import Footnote from "./Footnote.svelte";
|
|
14
|
+
import InlineCode from "./InlineCode.svelte";
|
|
15
|
+
import Label from "./Label.svelte";
|
|
16
|
+
import Link from "./Link.svelte";
|
|
17
|
+
import Comment from "./Comment.svelte";
|
|
18
|
+
import Text from "./Text.svelte";
|
|
19
|
+
import Format from "./Format.svelte";
|
|
20
|
+
import { isChapterEditable, isEditionEditable } from "../page/Contexts";
|
|
21
|
+
import LineBreakNode from "../../models/chapter/LineBreakNode";
|
|
22
|
+
import LineBreak from "./LineBreak.svelte";
|
|
23
|
+
let { node, placeholder = void 0 } = $props();
|
|
24
|
+
let format = $derived(node.getFormat());
|
|
25
|
+
let tag = $derived(format === "*" ? "strong" : format === "_" ? "em" : format === "^" ? "sup" : format === "v" ? "sub" : "span");
|
|
26
|
+
let showPlaceholder = $derived(node.isEmptyText() && placeholder !== void 0 && (isChapterEditable() || isEditionEditable()));
|
|
42
27
|
</script>
|
|
43
28
|
|
|
44
29
|
<svelte:element
|
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import FormatNode from '../../models/chapter/FormatNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {};
|
|
12
|
-
exports?: {} | undefined;
|
|
13
|
-
bindings?: string | undefined;
|
|
14
|
-
};
|
|
15
|
-
export type FormatProps = typeof __propDef.props;
|
|
16
|
-
export type FormatEvents = typeof __propDef.events;
|
|
17
|
-
export type FormatSlots = typeof __propDef.slots;
|
|
18
|
-
export default class Format extends SvelteComponent<FormatProps, FormatEvents, FormatSlots> {
|
|
2
|
+
import Format from './Format.svelte';
|
|
3
|
+
interface Props {
|
|
4
|
+
node: FormatNode;
|
|
5
|
+
placeholder?: string | undefined;
|
|
19
6
|
}
|
|
20
|
-
|
|
7
|
+
declare const Format: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type Format = ReturnType<typeof Format>;
|
|
9
|
+
export default Format;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import Text from './Text.svelte';
|
|
6
|
-
export let node;
|
|
1
|
+
<script lang="ts">import { isChapterEditable } from "../page/Contexts";
|
|
2
|
+
import Code from "./Code.svelte";
|
|
3
|
+
import Text from "./Text.svelte";
|
|
4
|
+
let { node } = $props();
|
|
7
5
|
let editable = isChapterEditable();
|
|
8
6
|
</script>
|
|
9
7
|
|
|
@@ -17,6 +15,7 @@ let editable = isChapterEditable();
|
|
|
17
15
|
editable={false}
|
|
18
16
|
inline={true}
|
|
19
17
|
language={node.getMeta()}
|
|
20
|
-
nodeID={node.getText().nodeID}
|
|
21
|
-
|
|
18
|
+
nodeID={node.getText().nodeID}
|
|
19
|
+
code={node.getText().getText()}
|
|
20
|
+
/>
|
|
22
21
|
{/if}
|