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,153 +1,146 @@
|
|
|
1
|
-
<script>import commands from
|
|
2
|
-
import TextNode from
|
|
3
|
-
import AtomNode from
|
|
4
|
-
import LinkNode from
|
|
5
|
-
import LabelNode from
|
|
6
|
-
import InlineCodeNode from
|
|
7
|
-
import CitationsNode from
|
|
8
|
-
import DefinitionNode from
|
|
9
|
-
import CodeNode from
|
|
10
|
-
import CalloutNode from
|
|
11
|
-
import EmbedNode from
|
|
12
|
-
import QuoteNode from
|
|
13
|
-
import LabelEditor from
|
|
14
|
-
import InlineCodeEditor from
|
|
15
|
-
import CitationsEditor from
|
|
16
|
-
import LinkEditor from
|
|
17
|
-
import DefinitionEditor from
|
|
18
|
-
import CaptionedCodeEditor from
|
|
19
|
-
import CalloutEditor from
|
|
20
|
-
import QuoteEditor from
|
|
21
|
-
import EmbedEditor from
|
|
22
|
-
import TableEditor from
|
|
23
|
-
import ToolbarGroup from
|
|
24
|
-
import Icon from
|
|
25
|
-
import Button from
|
|
26
|
-
import AnnotateIcon from
|
|
27
|
-
import BlockIcon from
|
|
28
|
-
import ClipboardIcon from
|
|
29
|
-
import LevelIcon from
|
|
30
|
-
import ListIcon from
|
|
31
|
-
import TextIcon from
|
|
32
|
-
import TimeIcon from
|
|
33
|
-
import TableIcon from
|
|
34
|
-
import LinkIcon from
|
|
35
|
-
import LabelIcon from
|
|
36
|
-
import CitationIcon from
|
|
37
|
-
import DefineIcon from
|
|
38
|
-
import CodeIcon from
|
|
39
|
-
import CalloutIcon from
|
|
40
|
-
import QuoteIcon from
|
|
41
|
-
import MediaIcon from
|
|
42
|
-
import TableNode from
|
|
43
|
-
import { slide } from
|
|
44
|
-
import Note from
|
|
1
|
+
<script lang="ts">import commands from "./Commands";
|
|
2
|
+
import TextNode from "../../models/chapter/TextNode";
|
|
3
|
+
import AtomNode from "../../models/chapter/AtomNode";
|
|
4
|
+
import LinkNode from "../../models/chapter/LinkNode";
|
|
5
|
+
import LabelNode from "../../models/chapter/LabelNode";
|
|
6
|
+
import InlineCodeNode from "../../models/chapter/InlineCodeNode";
|
|
7
|
+
import CitationsNode from "../../models/chapter/CitationsNode";
|
|
8
|
+
import DefinitionNode from "../../models/chapter/DefinitionNode";
|
|
9
|
+
import CodeNode from "../../models/chapter/CodeNode";
|
|
10
|
+
import CalloutNode from "../../models/chapter/CalloutNode";
|
|
11
|
+
import EmbedNode from "../../models/chapter/EmbedNode";
|
|
12
|
+
import QuoteNode from "../../models/chapter/QuoteNode";
|
|
13
|
+
import LabelEditor from "./LabelEditor.svelte";
|
|
14
|
+
import InlineCodeEditor from "./InlineCodeEditor.svelte";
|
|
15
|
+
import CitationsEditor from "./CitationsEditor.svelte";
|
|
16
|
+
import LinkEditor from "./LinkEditor.svelte";
|
|
17
|
+
import DefinitionEditor from "./DefinitionEditor.svelte";
|
|
18
|
+
import CaptionedCodeEditor from "./CaptionedCodeEditor.svelte";
|
|
19
|
+
import CalloutEditor from "./CalloutEditor.svelte";
|
|
20
|
+
import QuoteEditor from "./QuoteEditor.svelte";
|
|
21
|
+
import EmbedEditor from "./EmbedEditor.svelte";
|
|
22
|
+
import TableEditor from "./TableEditor.svelte";
|
|
23
|
+
import ToolbarGroup from "./ToolbarGroup.svelte";
|
|
24
|
+
import Icon from "./Icon.svelte";
|
|
25
|
+
import Button from "../app/Button.svelte";
|
|
26
|
+
import AnnotateIcon from "./icons/annotate.svg?raw";
|
|
27
|
+
import BlockIcon from "./icons/block.svg?raw";
|
|
28
|
+
import ClipboardIcon from "./icons/clipboard.svg?raw";
|
|
29
|
+
import LevelIcon from "./icons/level.svg?raw";
|
|
30
|
+
import ListIcon from "./icons/list.svg?raw";
|
|
31
|
+
import TextIcon from "./icons/text.svg?raw";
|
|
32
|
+
import TimeIcon from "./icons/time.svg?raw";
|
|
33
|
+
import TableIcon from "./icons/table.svg?raw";
|
|
34
|
+
import LinkIcon from "./icons/link.svg?raw";
|
|
35
|
+
import LabelIcon from "./icons/label.svg?raw";
|
|
36
|
+
import CitationIcon from "./icons/citation.svg?raw";
|
|
37
|
+
import DefineIcon from "./icons/define.svg?raw";
|
|
38
|
+
import CodeIcon from "./icons/code.svg?raw";
|
|
39
|
+
import CalloutIcon from "./icons/callout.svg?raw";
|
|
40
|
+
import QuoteIcon from "./icons/quote.svg?raw";
|
|
41
|
+
import MediaIcon from "./icons/media.svg?raw";
|
|
42
|
+
import TableNode from "../../models/chapter/TableNode";
|
|
43
|
+
import { slide } from "svelte/transition";
|
|
44
|
+
import Note from "./Note.svelte";
|
|
45
45
|
const keyLabels = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
Digit0: "0",
|
|
47
|
+
Digit1: "1",
|
|
48
|
+
Digit2: "2",
|
|
49
|
+
Digit3: "3",
|
|
50
|
+
ArrowDown: "\u2193",
|
|
51
|
+
ArrowUp: "\u2191",
|
|
52
|
+
ArrowLeft: "\u2190",
|
|
53
|
+
ArrowRight: "\u2192",
|
|
54
|
+
Backspace: "\u232B"
|
|
55
55
|
};
|
|
56
56
|
const categoryOrder = {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
navigation: 1,
|
|
58
|
+
selection: 2,
|
|
59
|
+
text: 3,
|
|
60
|
+
history: 4,
|
|
61
|
+
clipboard: 5,
|
|
62
|
+
annotation: 6,
|
|
63
|
+
level: 8,
|
|
64
|
+
list: 9,
|
|
65
|
+
table: 10,
|
|
66
|
+
block: 11
|
|
67
67
|
};
|
|
68
68
|
const categoryIcons = {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
69
|
+
text: TextIcon,
|
|
70
|
+
clipboard: ClipboardIcon,
|
|
71
|
+
annotation: AnnotateIcon,
|
|
72
|
+
level: LevelIcon,
|
|
73
|
+
block: BlockIcon,
|
|
74
|
+
list: ListIcon,
|
|
75
|
+
table: TableIcon,
|
|
76
|
+
history: TimeIcon
|
|
77
77
|
};
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
let element = null;
|
|
82
|
-
let categories =
|
|
83
|
-
let commandsByCategory = {};
|
|
84
|
-
let metaNode =
|
|
85
|
-
let calloutNode =
|
|
86
|
-
let quoteNode =
|
|
87
|
-
let embedNode =
|
|
88
|
-
let tableNode =
|
|
78
|
+
let { caret } = $props();
|
|
79
|
+
let context = $derived(caret?.context);
|
|
80
|
+
let root = $derived(context?.root);
|
|
81
|
+
let element = $state(null);
|
|
82
|
+
let categories = $state(void 0);
|
|
83
|
+
let commandsByCategory = $state({});
|
|
84
|
+
let metaNode = $state(void 0);
|
|
85
|
+
let calloutNode = $state(void 0);
|
|
86
|
+
let quoteNode = $state(void 0);
|
|
87
|
+
let embedNode = $state(void 0);
|
|
88
|
+
let tableNode = $state(void 0);
|
|
89
89
|
function getShortcutDescription(command) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
: command.key
|
|
97
|
-
: command.code
|
|
98
|
-
? command.code
|
|
99
|
-
: 'any';
|
|
100
|
-
const keyLabel = (typeof key === 'string'
|
|
101
|
-
? key in keyLabels
|
|
102
|
-
? keyLabels[key]
|
|
103
|
-
: key
|
|
104
|
-
: '—').toLocaleUpperCase();
|
|
105
|
-
return `${command.control ? controlSymbol : ''}${command.alt ? altSymbol : ''}${command.shift ? '\u21E7' : ''}${keyLabel}`;
|
|
106
|
-
}
|
|
107
|
-
// Update the above when the dependencies below change.
|
|
108
|
-
$: {
|
|
109
|
-
if (context !== undefined && root) {
|
|
110
|
-
// Filter the commands by those interactive with a mouse and active.
|
|
111
|
-
const visible = commands.filter((command) => command.visible === true ||
|
|
112
|
-
(context &&
|
|
113
|
-
command.visible instanceof Function &&
|
|
114
|
-
command.visible(context)));
|
|
115
|
-
// Extract the active categories and sort them
|
|
116
|
-
categories = Array.from(new Set(commands.map((command) => command.category))).sort((a, b) => a in categoryOrder && b in categoryOrder
|
|
117
|
-
? categoryOrder[a] - categoryOrder[b]
|
|
118
|
-
: 0);
|
|
119
|
-
// Make a list for each category of commands
|
|
120
|
-
commandsByCategory = {};
|
|
121
|
-
categories.forEach((cat) => {
|
|
122
|
-
if (commandsByCategory)
|
|
123
|
-
commandsByCategory[cat] = visible.filter((command) => command.category === cat);
|
|
124
|
-
});
|
|
125
|
-
const caretNode = context.start.node;
|
|
126
|
-
metaNode =
|
|
127
|
-
caretNode instanceof AtomNode
|
|
128
|
-
? caretNode
|
|
129
|
-
: caretNode instanceof TextNode
|
|
130
|
-
? caretNode.getParent(root)
|
|
131
|
-
: undefined;
|
|
132
|
-
calloutNode = caretNode.getClosestParentMatching(root, (p) => p instanceof CalloutNode);
|
|
133
|
-
quoteNode = caretNode.getClosestParentMatching(root, (p) => p instanceof QuoteNode);
|
|
134
|
-
embedNode =
|
|
135
|
-
caretNode instanceof EmbedNode
|
|
136
|
-
? caretNode
|
|
137
|
-
: caretNode.getClosestParentMatching(root, (p) => p instanceof EmbedNode);
|
|
138
|
-
tableNode = caretNode.getClosestParentMatching(root, (p) => p instanceof TableNode);
|
|
139
|
-
}
|
|
90
|
+
const macOS = navigator.userAgent.indexOf("Mac") >= 0;
|
|
91
|
+
const controlSymbol = macOS ? "\u2318" : "Ctrl+";
|
|
92
|
+
const altSymbol = macOS ? "\u2325" : "Alt+";
|
|
93
|
+
const key = command.key ? Array.isArray(command.key) ? command.key.join("/") : command.key : command.code ? command.code : "any";
|
|
94
|
+
const keyLabel = (typeof key === "string" ? key in keyLabels ? keyLabels[key] : key : "\u2014").toLocaleUpperCase();
|
|
95
|
+
return `${command.control ? controlSymbol : ""}${command.alt ? altSymbol : ""}${command.shift ? "\u21E7" : ""}${keyLabel}`;
|
|
140
96
|
}
|
|
97
|
+
$effect.pre(() => {
|
|
98
|
+
if (context !== void 0 && root) {
|
|
99
|
+
const visible = commands.filter(
|
|
100
|
+
(command) => command.visible === true || context && command.visible instanceof Function && command.visible(context)
|
|
101
|
+
);
|
|
102
|
+
const newCategories = Array.from(
|
|
103
|
+
new Set(commands.map((command) => command.category))
|
|
104
|
+
).sort(
|
|
105
|
+
(a, b) => a in categoryOrder && b in categoryOrder ? categoryOrder[a] - categoryOrder[b] : 0
|
|
106
|
+
);
|
|
107
|
+
const byCategory = {};
|
|
108
|
+
newCategories.forEach((cat) => {
|
|
109
|
+
byCategory[cat] = visible.filter(
|
|
110
|
+
(command) => command.category === cat
|
|
111
|
+
);
|
|
112
|
+
});
|
|
113
|
+
const caretNode = context.start.node;
|
|
114
|
+
categories = newCategories;
|
|
115
|
+
commandsByCategory = byCategory;
|
|
116
|
+
metaNode = caretNode instanceof AtomNode ? caretNode : caretNode instanceof TextNode ? caretNode.getParent(root) : void 0;
|
|
117
|
+
calloutNode = caretNode.getClosestParentMatching(
|
|
118
|
+
root,
|
|
119
|
+
(p) => p instanceof CalloutNode
|
|
120
|
+
);
|
|
121
|
+
quoteNode = caretNode.getClosestParentMatching(
|
|
122
|
+
root,
|
|
123
|
+
(p) => p instanceof QuoteNode
|
|
124
|
+
);
|
|
125
|
+
embedNode = caretNode instanceof EmbedNode ? caretNode : caretNode.getClosestParentMatching(
|
|
126
|
+
root,
|
|
127
|
+
(p) => p instanceof EmbedNode
|
|
128
|
+
);
|
|
129
|
+
tableNode = caretNode.getClosestParentMatching(
|
|
130
|
+
root,
|
|
131
|
+
(p) => p instanceof TableNode
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
141
135
|
function handleKeyPress(event) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
editor.focus();
|
|
148
|
-
}
|
|
149
|
-
return true;
|
|
136
|
+
if ((event.key === "Escape" || event.key === "Enter") && element) {
|
|
137
|
+
const editor = element.closest(".bookish-editor");
|
|
138
|
+
if (editor instanceof HTMLElement) {
|
|
139
|
+
event.stopPropagation();
|
|
140
|
+
editor.focus();
|
|
150
141
|
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
151
144
|
}
|
|
152
145
|
</script>
|
|
153
146
|
|
|
@@ -155,9 +148,12 @@ function handleKeyPress(event) {
|
|
|
155
148
|
class="bookish-editor-toolbar"
|
|
156
149
|
bind:this={element}
|
|
157
150
|
role="button"
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
151
|
+
onkeypress={handleKeyPress}
|
|
152
|
+
onkeydown={handleKeyPress}
|
|
153
|
+
onpointerdown={(event) => {
|
|
154
|
+
event.stopPropagation();
|
|
155
|
+
element?.focus();
|
|
156
|
+
}}
|
|
161
157
|
tabindex="0"
|
|
162
158
|
transition:slide={{ duration: 200 }}
|
|
163
159
|
>
|
|
@@ -185,7 +181,6 @@ function handleKeyPress(event) {
|
|
|
185
181
|
tooltip={command.description +
|
|
186
182
|
' ' +
|
|
187
183
|
getShortcutDescription(command)}
|
|
188
|
-
tabIndex="0"
|
|
189
184
|
command={() => caret?.executor(command, '', '')}
|
|
190
185
|
>
|
|
191
186
|
<Icon icon={command.icon} />
|
|
@@ -226,7 +221,7 @@ function handleKeyPress(event) {
|
|
|
226
221
|
{:else if quoteNode}<ToolbarGroup icon={QuoteIcon}
|
|
227
222
|
><QuoteEditor quote={quoteNode} /></ToolbarGroup
|
|
228
223
|
>
|
|
229
|
-
{:else if embedNode}<div class="break"
|
|
224
|
+
{:else if embedNode}<div class="break"></div>
|
|
230
225
|
<ToolbarGroup icon={MediaIcon}>
|
|
231
226
|
<EmbedEditor embed={embedNode} />
|
|
232
227
|
</ToolbarGroup>
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type CaretState from './CaretState';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
caret: CaretState | undefined;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type ToolbarProps = typeof __propDef.props;
|
|
15
|
-
export type ToolbarEvents = typeof __propDef.events;
|
|
16
|
-
export type ToolbarSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Toolbar extends SvelteComponent<ToolbarProps, ToolbarEvents, ToolbarSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
caret: CaretState | undefined;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const Toolbar: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Toolbar = ReturnType<typeof Toolbar>;
|
|
7
|
+
export default Toolbar;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<script>import Icon from
|
|
2
|
-
import ToolbarSpacer from
|
|
3
|
-
|
|
1
|
+
<script lang="ts">import Icon from "./Icon.svelte";
|
|
2
|
+
import ToolbarSpacer from "./ToolbarSpacer.svelte";
|
|
3
|
+
let { icon, children } = $props();
|
|
4
4
|
</script>
|
|
5
5
|
|
|
6
6
|
<div class="toolbar-group">
|
|
7
|
-
<Icon {icon} /><ToolbarSpacer
|
|
7
|
+
<Icon {icon} /><ToolbarSpacer />{@render children?.()}
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
10
|
<style>
|
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
icon: string;
|
|
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 ToolbarGroupProps = typeof __propDef.props;
|
|
16
|
-
export type ToolbarGroupEvents = typeof __propDef.events;
|
|
17
|
-
export type ToolbarGroupSlots = typeof __propDef.slots;
|
|
18
|
-
export default class ToolbarGroup extends SvelteComponent<ToolbarGroupProps, ToolbarGroupEvents, ToolbarGroupSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
icon: string;
|
|
3
|
+
children?: import('svelte').Snippet;
|
|
19
4
|
}
|
|
20
|
-
|
|
5
|
+
declare const ToolbarGroup: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type ToolbarGroup = ReturnType<typeof ToolbarGroup>;
|
|
7
|
+
export default ToolbarGroup;
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** @typedef {typeof __propDef.slots} ToolbarSpacerSlots */
|
|
4
|
-
export default class ToolbarSpacer extends SvelteComponent<{
|
|
1
|
+
export default ToolbarSpacer;
|
|
2
|
+
type ToolbarSpacer = SvelteComponent<{
|
|
5
3
|
[x: string]: never;
|
|
6
4
|
}, {
|
|
7
5
|
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
|
|
10
|
-
export type ToolbarSpacerProps = typeof __propDef.props;
|
|
11
|
-
export type ToolbarSpacerEvents = typeof __propDef.events;
|
|
12
|
-
export type ToolbarSpacerSlots = 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 ToolbarSpacer: $$__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,8 +1,6 @@
|
|
|
1
|
-
<script>import TextEditor from
|
|
2
|
-
import Link from
|
|
3
|
-
|
|
4
|
-
export let validator;
|
|
5
|
-
export let edit;
|
|
1
|
+
<script lang="ts">import TextEditor from "./TextEditor.svelte";
|
|
2
|
+
import Link from "../app/Link.svelte";
|
|
3
|
+
let { url, validator, edit } = $props();
|
|
6
4
|
</script>
|
|
7
5
|
|
|
8
6
|
<TextEditor
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
validator: (text: string) => undefined | string;
|
|
6
|
-
edit: (newURL: string) => string | undefined;
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {};
|
|
12
|
-
exports?: {} | undefined;
|
|
13
|
-
bindings?: string | undefined;
|
|
14
|
-
};
|
|
15
|
-
export type UrlEditorProps = typeof __propDef.props;
|
|
16
|
-
export type UrlEditorEvents = typeof __propDef.events;
|
|
17
|
-
export type UrlEditorSlots = typeof __propDef.slots;
|
|
18
|
-
export default class UrlEditor extends SvelteComponent<UrlEditorProps, UrlEditorEvents, UrlEditorSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
url: string;
|
|
3
|
+
validator: (text: string) => undefined | string;
|
|
4
|
+
edit: (newURL: string) => string | undefined;
|
|
19
5
|
}
|
|
20
|
-
|
|
6
|
+
declare const URLEditor: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type URLEditor = ReturnType<typeof URLEditor>;
|
|
8
|
+
export default URLEditor;
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
<script>import Parser from
|
|
2
|
-
import ChapterBody from
|
|
3
|
-
import BookishEditor from
|
|
4
|
-
import Instructions from
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
<script lang="ts">import Parser from "../../models/chapter/Parser";
|
|
2
|
+
import ChapterBody from "../chapter/ChapterBody.svelte";
|
|
3
|
+
import BookishEditor from "../editor/BookishEditor.svelte";
|
|
4
|
+
import Instructions from "./Instructions.svelte";
|
|
5
|
+
import {
|
|
6
|
+
getUser,
|
|
7
|
+
getEdition,
|
|
8
|
+
getLeasee,
|
|
9
|
+
isEditionEditable,
|
|
10
|
+
lease
|
|
11
|
+
} from "./Contexts";
|
|
12
|
+
import PageHeader from "./PageHeader.svelte";
|
|
13
|
+
import EditableHeader from "./EditableHeader.svelte";
|
|
8
14
|
let auth = getUser();
|
|
9
15
|
let edition = getEdition();
|
|
10
16
|
let editable = isEditionEditable();
|
|
11
|
-
|
|
17
|
+
let acknowledgements = $derived($edition?.getAcknowledgements());
|
|
12
18
|
</script>
|
|
13
19
|
|
|
14
20
|
<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 AcknowledgementsProps = typeof __propDef.props;
|
|
12
|
-
export type AcknowledgementsEvents = typeof __propDef.events;
|
|
13
|
-
export type AcknowledgementsSlots = typeof __propDef.slots;
|
|
14
|
-
export default class Acknowledgements extends SvelteComponent<AcknowledgementsProps, AcknowledgementsEvents, AcknowledgementsSlots> {
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
1
|
+
declare const Acknowledgements: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type Acknowledgements = ReturnType<typeof Acknowledgements>;
|
|
3
|
+
export default Acknowledgements;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
$: id = gtagid ?? 'G-BGFDV229BN';
|
|
1
|
+
<script lang="ts">let { gtagid = null } = $props();
|
|
2
|
+
let id = $derived(gtagid ?? "G-BGFDV229BN");
|
|
4
3
|
</script>
|
|
5
4
|
|
|
6
5
|
<svelte:head>
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/** By default, we use the Bookish.press Google Analytics tag */ gtagid?: string | null;
|
|
5
|
-
};
|
|
6
|
-
events: {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
};
|
|
9
|
-
slots: {};
|
|
10
|
-
exports?: {} | undefined;
|
|
11
|
-
bindings?: string | undefined;
|
|
12
|
-
};
|
|
13
|
-
export type AnalyticsProps = typeof __propDef.props;
|
|
14
|
-
export type AnalyticsEvents = typeof __propDef.events;
|
|
15
|
-
export type AnalyticsSlots = typeof __propDef.slots;
|
|
16
|
-
export default class Analytics extends SvelteComponent<AnalyticsProps, AnalyticsEvents, AnalyticsSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
/** By default, we use the Bookish.press Google Analytics tag */
|
|
3
|
+
gtagid?: string | null;
|
|
17
4
|
}
|
|
18
|
-
|
|
5
|
+
declare const Analytics: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type Analytics = ReturnType<typeof Analytics>;
|
|
7
|
+
export default Analytics;
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
<script>import Parser from
|
|
2
|
-
import TextEditor from
|
|
3
|
-
import Format from
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
<script lang="ts">import Parser from "../../models/chapter/Parser";
|
|
2
|
+
import TextEditor from "../editor/TextEditor.svelte";
|
|
3
|
+
import Format from "../chapter/Format.svelte";
|
|
4
|
+
import { getEdition, getLeasee, getUser, lease } from "./Contexts";
|
|
5
|
+
import Note from "../editor/Note.svelte";
|
|
6
|
+
import Button from "../app/Button.svelte";
|
|
7
|
+
import { tick } from "svelte";
|
|
8
|
+
import BookishEditor from "../editor/BookishEditor.svelte";
|
|
9
|
+
import { auth } from "../../models/Firebase";
|
|
10
|
+
let {
|
|
11
|
+
editable,
|
|
12
|
+
authors,
|
|
13
|
+
inheritedAuthors = void 0,
|
|
14
|
+
add,
|
|
15
|
+
edit,
|
|
16
|
+
remove,
|
|
17
|
+
editors = false
|
|
18
|
+
} = $props();
|
|
18
19
|
let edition = getEdition();
|
|
19
|
-
let authorList = null;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
let authorList = $state(null);
|
|
21
|
+
let showInherited = $derived(authors.length === 0 && inheritedAuthors !== void 0);
|
|
22
|
+
let authorsToShow = $derived(showInherited ? inheritedAuthors : authors);
|
|
22
23
|
async function addAuthor() {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
lastAuthor.focus();
|
|
31
|
-
}
|
|
24
|
+
add();
|
|
25
|
+
await tick();
|
|
26
|
+
if (authors.length > 0 && authorList) {
|
|
27
|
+
const editors2 = authorList.querySelectorAll("input");
|
|
28
|
+
if (editors2.length > 0) {
|
|
29
|
+
const lastAuthor = editors2[editors2.length - 1];
|
|
30
|
+
if (lastAuthor instanceof HTMLElement) lastAuthor.focus();
|
|
32
31
|
}
|
|
32
|
+
}
|
|
33
33
|
}
|
|
34
34
|
</script>
|
|
35
35
|
|