bookish-press 0.4.1 → 0.4.21
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 +3 -1
- package/components/Auth.svelte +19 -14
- package/components/Auth.svelte.d.ts +4 -4
- package/components/Authentication.d.ts +2 -2
- package/components/BookPreview.svelte +77 -59
- package/components/BookPreview.svelte.d.ts +5 -5
- package/components/External.svelte +1 -1
- package/components/External.svelte.d.ts +3 -3
- package/components/Link.svelte +49 -3
- package/components/Link.svelte.d.ts +3 -4
- package/components/app/BookList.svelte +19 -0
- package/components/app/BookList.svelte.d.ts +18 -0
- package/components/app/Button.svelte +49 -0
- package/components/app/Button.svelte.d.ts +22 -0
- package/components/app/Feedback.svelte +45 -0
- package/components/app/Feedback.svelte.d.ts +18 -0
- package/components/app/Head.svelte +12 -0
- package/components/app/Head.svelte.d.ts +27 -0
- package/components/app/Large.svelte +8 -0
- package/components/app/Large.svelte.d.ts +27 -0
- package/components/app/Lead.svelte +12 -0
- package/components/app/Lead.svelte.d.ts +27 -0
- package/components/app/Link.svelte +24 -0
- package/components/app/Link.svelte.d.ts +20 -0
- package/components/app/Options.svelte +24 -0
- package/components/app/Options.svelte.d.ts +19 -0
- package/components/app/Paragraph.svelte +19 -0
- package/components/app/Paragraph.svelte.d.ts +18 -0
- package/components/app/Table.svelte +32 -0
- package/components/app/Table.svelte.d.ts +27 -0
- package/components/app/TextInput.svelte +37 -0
- package/components/app/TextInput.svelte.d.ts +22 -0
- package/components/app/Writing.svelte +13 -0
- package/components/app/Writing.svelte.d.ts +27 -0
- package/components/chapter/Atom.svelte +20 -6
- package/components/chapter/Atom.svelte.d.ts +3 -3
- package/components/chapter/Block.svelte +23 -20
- package/components/chapter/Block.svelte.d.ts +4 -4
- package/components/chapter/Callout.svelte +38 -7
- package/components/chapter/Callout.svelte.d.ts +4 -4
- package/components/chapter/CaptionedCode.svelte +66 -23
- package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
- package/components/chapter/ChapterBody.svelte +61 -9
- package/components/chapter/ChapterBody.svelte.d.ts +4 -4
- package/components/chapter/Citations.svelte +86 -20
- package/components/chapter/Citations.svelte.d.ts +4 -4
- package/components/chapter/Code.svelte +152 -21
- package/components/chapter/Code.svelte.d.ts +3 -3
- package/components/chapter/Comment.svelte +38 -16
- package/components/chapter/Comment.svelte.d.ts +3 -3
- package/components/chapter/Definition.svelte +52 -18
- package/components/chapter/Definition.svelte.d.ts +5 -8
- package/components/chapter/Embed.svelte +154 -66
- package/components/chapter/Embed.svelte.d.ts +5 -4
- package/components/chapter/ErrorMessage.svelte +7 -2
- package/components/chapter/ErrorMessage.svelte.d.ts +4 -4
- package/components/chapter/ExtendedPrism.d.ts +2 -0
- package/components/chapter/ExtendedPrism.js +69 -0
- package/components/chapter/Figure.svelte +90 -0
- package/components/chapter/Figure.svelte.d.ts +24 -0
- package/components/chapter/Footnote.svelte +75 -12
- package/components/chapter/Footnote.svelte.d.ts +4 -4
- package/components/chapter/Format.svelte +60 -37
- package/components/chapter/Format.svelte.d.ts +4 -4
- package/components/chapter/InlineCode.svelte +15 -5
- package/components/chapter/InlineCode.svelte.d.ts +4 -4
- package/components/chapter/Label.svelte +37 -8
- package/components/chapter/Label.svelte.d.ts +4 -4
- package/components/chapter/Link.svelte +23 -18
- package/components/chapter/Link.svelte.d.ts +4 -4
- package/components/chapter/List.svelte +75 -8
- package/components/chapter/List.svelte.d.ts +4 -4
- package/components/chapter/Marginal.svelte +169 -27
- package/components/chapter/Marginal.svelte.d.ts +6 -3
- package/components/chapter/Paragraph.svelte +74 -6
- package/components/chapter/Paragraph.svelte.d.ts +4 -4
- package/components/chapter/Positioned.svelte +33 -0
- package/components/chapter/Positioned.svelte.d.ts +19 -0
- package/components/chapter/Problem.svelte +15 -0
- package/components/chapter/Problem.svelte.d.ts +27 -0
- package/components/chapter/Python.svelte +68 -21
- package/components/chapter/Python.svelte.d.ts +4 -4
- package/components/chapter/Quote.svelte +64 -11
- package/components/chapter/Quote.svelte.d.ts +4 -4
- package/components/chapter/Rule.svelte +12 -1
- package/components/chapter/Rule.svelte.d.ts +4 -4
- package/components/chapter/Table.svelte +36 -25
- package/components/chapter/Table.svelte.d.ts +4 -4
- package/components/chapter/Text.svelte +61 -36
- package/components/chapter/Text.svelte.d.ts +5 -4
- package/components/editor/BookishEditor.svelte +343 -237
- package/components/editor/BookishEditor.svelte.d.ts +5 -5
- package/components/editor/CalloutEditor.svelte +5 -5
- package/components/editor/CalloutEditor.svelte.d.ts +4 -4
- package/components/editor/CaptionedCodeEditor.svelte +16 -12
- package/components/editor/CaptionedCodeEditor.svelte.d.ts +4 -4
- package/components/editor/CaretContext.d.ts +48 -16
- package/components/editor/CaretState.d.ts +16 -44
- package/components/editor/CaretUtilities.d.ts +2 -2
- package/components/editor/CaretView.svelte +80 -0
- package/components/editor/CaretView.svelte.d.ts +24 -0
- package/components/editor/CitationsEditor.svelte +36 -25
- package/components/editor/CitationsEditor.svelte.d.ts +4 -4
- package/components/editor/Clipboard.d.ts +2 -2
- package/components/editor/Command.d.ts +13 -12
- package/components/editor/Commands.d.ts +1 -1
- package/components/editor/Commands.js +1114 -571
- package/components/editor/ConfirmButton.svelte +18 -12
- package/components/editor/ConfirmButton.svelte.d.ts +5 -4
- package/components/editor/DefinitionEditor.svelte +29 -21
- package/components/editor/DefinitionEditor.svelte.d.ts +4 -4
- package/components/editor/EmbedEditor.svelte +93 -43
- package/components/editor/EmbedEditor.svelte.d.ts +3 -3
- package/components/editor/Icon.svelte +17 -0
- package/components/editor/Icon.svelte.d.ts +16 -0
- package/components/editor/ImageChooser.svelte +53 -34
- package/components/editor/ImageChooser.svelte.d.ts +3 -3
- package/components/editor/InlineCodeEditor.svelte +7 -4
- package/components/editor/InlineCodeEditor.svelte.d.ts +4 -4
- package/components/editor/LabelEditor.svelte +20 -11
- package/components/editor/LabelEditor.svelte.d.ts +4 -4
- package/components/editor/LanguageEditor.svelte +10 -7
- package/components/editor/LanguageEditor.svelte.d.ts +3 -3
- package/components/editor/LinkEditor.svelte +64 -39
- package/components/editor/LinkEditor.svelte.d.ts +4 -4
- package/components/editor/Note.svelte +3 -3
- package/components/editor/Note.svelte.d.ts +6 -2
- package/components/editor/PositionEditor.svelte +9 -6
- package/components/editor/PositionEditor.svelte.d.ts +4 -4
- package/components/editor/QuoteEditor.svelte +7 -2
- package/components/editor/QuoteEditor.svelte.d.ts +4 -4
- package/components/editor/Switch.svelte +55 -28
- package/components/editor/Switch.svelte.d.ts +4 -4
- package/components/editor/TableEditor.svelte +10 -0
- package/components/editor/TableEditor.svelte.d.ts +17 -0
- package/components/editor/TextEditor.svelte +83 -45
- package/components/editor/TextEditor.svelte.d.ts +5 -4
- package/components/editor/Toggle.svelte +11 -8
- package/components/editor/Toggle.svelte.d.ts +4 -4
- package/components/editor/Toolbar.svelte +192 -144
- package/components/editor/Toolbar.svelte.d.ts +5 -8
- package/components/editor/ToolbarGroup.svelte +18 -23
- package/components/editor/ToolbarGroup.svelte.d.ts +3 -4
- package/components/editor/ToolbarSpacer.svelte +8 -1
- package/components/editor/ToolbarSpacer.svelte.d.ts +6 -2
- package/components/editor/URLEditor.svelte +6 -8
- package/components/editor/URLEditor.svelte.d.ts +3 -3
- package/components/editor/UndoState.d.ts +3 -3
- package/components/editor/icons/annotate.svg +1 -0
- package/components/editor/icons/block.svg +1 -0
- package/components/editor/icons/bold.svg +1 -0
- package/components/editor/icons/bullets.svg +1 -0
- package/components/editor/icons/callout.svg +1 -0
- package/components/editor/icons/citation.svg +8 -0
- package/components/editor/icons/clear.svg +1 -0
- package/components/editor/icons/clipboard.svg +1 -0
- package/components/editor/icons/code.svg +1 -0
- package/components/editor/icons/columnafter.svg +1 -0
- package/components/editor/icons/columnbefore.svg +1 -0
- package/components/editor/icons/comment.svg +1 -0
- package/components/editor/icons/copy.svg +1 -0
- package/components/editor/icons/cut.svg +1 -0
- package/components/editor/icons/define.svg +7 -0
- package/components/editor/icons/deletecolumn.svg +1 -0
- package/components/editor/icons/deleterow.svg +1 -0
- package/components/editor/icons/footnote.svg +8 -0
- package/components/editor/icons/header1.svg +7 -0
- package/components/editor/icons/header2.svg +7 -0
- package/components/editor/icons/header3.svg +7 -0
- package/components/editor/icons/home.svg +1 -0
- package/components/editor/icons/indent.svg +1 -0
- package/components/editor/icons/italic.svg +1 -0
- package/components/editor/icons/label.svg +1 -0
- package/components/editor/icons/left.svg +1 -0
- package/components/editor/icons/level.svg +1 -0
- package/components/editor/icons/link.svg +1 -0
- package/components/editor/icons/list.svg +1 -0
- package/components/editor/icons/media.svg +1 -0
- package/components/editor/icons/middle.svg +1 -0
- package/components/editor/icons/numbers.svg +10 -0
- package/components/editor/icons/paragraph.svg +1 -0
- package/components/editor/icons/paste.svg +10 -0
- package/components/editor/icons/quote.svg +1 -0
- package/components/editor/icons/redo.svg +1 -0
- package/components/editor/icons/right.svg +1 -0
- package/components/editor/icons/rowabove.svg +1 -0
- package/components/editor/icons/rowbelow.svg +1 -0
- package/components/editor/icons/rule.svg +1 -0
- package/components/editor/icons/sub.svg +1 -0
- package/components/editor/icons/super.svg +1 -0
- package/components/editor/icons/table.svg +1 -0
- package/components/editor/icons/text.svg +1 -0
- package/components/editor/icons/time.svg +1 -0
- package/components/editor/icons/undo.svg +1 -0
- package/components/editor/icons/unindent.svg +1 -0
- package/components/editor/icons/unlink.svg +1 -0
- package/components/page/Acknowledgements.svelte +31 -22
- package/components/page/Acknowledgements.svelte.d.ts +4 -4
- package/components/page/Authors.svelte +34 -14
- package/components/page/Authors.svelte.d.ts +6 -6
- package/components/page/BulkReferenceEditor.svelte +53 -22
- package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
- package/components/page/Chapter.svelte +196 -141
- package/components/page/Chapter.svelte.d.ts +3 -3
- package/components/page/ChapterContext.d.ts +4 -4
- package/components/page/ChapterNumber.svelte +9 -0
- package/components/page/ChapterNumber.svelte.d.ts +27 -0
- package/components/page/ChapterTitle.svelte +16 -0
- package/components/page/ChapterTitle.svelte.d.ts +18 -0
- package/components/page/Contexts.d.ts +31 -20
- package/components/page/Contexts.js +47 -17
- package/components/page/DefinitionView.svelte +115 -86
- package/components/page/DefinitionView.svelte.d.ts +3 -3
- package/components/page/Description.svelte +27 -18
- package/components/page/Description.svelte.d.ts +4 -4
- package/components/page/Edition.svelte +127 -75
- package/components/page/Edition.svelte.d.ts +4 -4
- package/components/page/Editions.svelte +158 -0
- package/components/page/Editions.svelte.d.ts +14 -0
- package/components/page/Glossary.svelte +57 -48
- package/components/page/Glossary.svelte.d.ts +4 -4
- package/components/page/Header.svelte +129 -44
- package/components/page/Header.svelte.d.ts +6 -6
- package/components/page/Index.svelte +114 -80
- package/components/page/Index.svelte.d.ts +4 -4
- package/components/page/Instructions.svelte +18 -16
- package/components/page/Instructions.svelte.d.ts +4 -4
- package/components/page/License.svelte +29 -21
- package/components/page/License.svelte.d.ts +4 -4
- package/components/page/Loading.svelte +102 -12
- package/components/page/Loading.svelte.d.ts +6 -2
- package/components/page/Media.svelte +77 -51
- package/components/page/Media.svelte.d.ts +4 -4
- package/components/page/MediaPreview.svelte +26 -8
- package/components/page/MediaPreview.svelte.d.ts +3 -3
- package/components/page/Muted.svelte +10 -0
- package/components/page/Muted.svelte.d.ts +27 -0
- package/components/page/Outline.svelte +279 -59
- package/components/page/Outline.svelte.d.ts +3 -3
- package/components/page/Page.svelte +40 -9
- package/components/page/Page.svelte.d.ts +3 -3
- package/components/page/PageHeader.svelte +14 -0
- package/components/page/PageHeader.svelte.d.ts +18 -0
- package/components/page/PageParagraph.svelte +18 -0
- package/components/page/PageParagraph.svelte.d.ts +27 -0
- package/components/page/PossibleChapter.svelte +7 -7
- package/components/page/PossibleChapter.svelte.d.ts +4 -4
- package/components/page/PossibleReference.svelte +6 -11
- package/components/page/PossibleReference.svelte.d.ts +6 -7
- package/components/page/Print.svelte +27 -3
- package/components/page/Print.svelte.d.ts +4 -4
- package/components/page/Reference.svelte +256 -113
- package/components/page/Reference.svelte.d.ts +5 -5
- package/components/page/References.svelte +39 -47
- package/components/page/References.svelte.d.ts +4 -4
- package/components/page/Rows.svelte +54 -0
- package/components/page/Rows.svelte.d.ts +27 -0
- package/components/page/Search.svelte +86 -63
- package/components/page/Search.svelte.d.ts +4 -4
- package/components/page/Status.svelte +43 -35
- package/components/page/Status.svelte.d.ts +4 -9
- package/components/page/SubdomainEditor.svelte +40 -27
- package/components/page/SubdomainEditor.svelte.d.ts +4 -4
- package/components/page/TableOfContents.svelte +225 -190
- package/components/page/TableOfContents.svelte.d.ts +4 -4
- package/components/page/TableOfContentsImage.svelte +8 -8
- package/components/page/TableOfContentsImage.svelte.d.ts +3 -3
- package/components/page/TableOfContentsRow.svelte +96 -33
- package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
- package/components/page/ThemeEditor.svelte +174 -39
- package/components/page/ThemeEditor.svelte.d.ts +4 -4
- package/components/page/ThemeEditorPreview.svelte +35 -23
- package/components/page/ThemeEditorPreview.svelte.d.ts +5 -5
- package/components/page/ThemeSetEditor.svelte +15 -13
- package/components/page/ThemeSetEditor.svelte.d.ts +4 -4
- package/components/page/ThemeVariableEditor.svelte +24 -15
- package/components/page/ThemeVariableEditor.svelte.d.ts +3 -3
- package/components/page/Title.svelte +12 -0
- package/components/page/Title.svelte.d.ts +27 -0
- package/components/page/Unknown.svelte +25 -21
- package/components/page/Unknown.svelte.d.ts +4 -4
- package/components/page/margins.js +50 -33
- package/index.d.ts +14 -0
- package/index.js +14 -0
- package/models/CRUD.d.ts +17 -0
- package/models/CRUD.js +207 -0
- package/models/Firebase.d.ts +1 -0
- package/models/Firebase.js +21 -15
- package/models/book/Book.d.ts +26 -30
- package/models/book/Book.js +120 -113
- package/models/book/BookMedia.d.ts +3 -3
- package/models/book/BookMedia.js +22 -16
- package/models/book/BookSaveStatus.d.ts +7 -0
- package/models/book/BookSaveStatus.js +8 -0
- package/models/book/Chapter.d.ts +46 -39
- package/models/book/Chapter.js +180 -198
- package/models/book/ChapterID.js +7 -7
- package/models/book/Definition.d.ts +1 -1
- package/models/book/Edition.d.ts +62 -60
- package/models/book/Edition.js +385 -303
- package/models/book/Reference.d.ts +24 -0
- package/models/book/Reference.js +78 -0
- package/models/book/Schema.d.ts +169 -0
- package/models/book/Schema.js +114 -0
- package/models/book/Theme.d.ts +44 -37
- package/models/book/Theme.js +452 -52
- package/models/book/ThemeColors.d.ts +1 -1
- package/models/book/Words.d.ts +2 -0
- package/models/book/Words.js +110 -0
- package/models/chapter/AtomNode.d.ts +4 -4
- package/models/chapter/AtomNode.js +20 -13
- package/models/chapter/BlockNode.d.ts +9 -10
- package/models/chapter/BlockNode.js +32 -13
- package/models/chapter/BlocksNode.d.ts +10 -10
- package/models/chapter/BlocksNode.js +315 -120
- package/models/chapter/BlocksNode.test.js +494 -228
- package/models/chapter/Bookkeeping.d.ts +1 -1
- package/models/chapter/CalloutNode.d.ts +3 -3
- package/models/chapter/CalloutNode.js +34 -12
- package/models/chapter/Caret.d.ts +9 -7
- package/models/chapter/Caret.js +11 -6
- package/models/chapter/ChapterNode.d.ts +11 -11
- package/models/chapter/ChapterNode.js +70 -33
- package/models/chapter/CitationsNode.d.ts +3 -3
- package/models/chapter/CitationsNode.js +31 -12
- package/models/chapter/CodeNode.d.ts +11 -6
- package/models/chapter/CodeNode.js +143 -34
- package/models/chapter/CommentNode.d.ts +5 -5
- package/models/chapter/CommentNode.js +29 -13
- package/models/chapter/DefinitionNode.d.ts +2 -2
- package/models/chapter/DefinitionNode.js +15 -7
- package/models/chapter/Edit.d.ts +3 -3
- package/models/chapter/EmbedNode.d.ts +9 -5
- package/models/chapter/EmbedNode.js +108 -35
- package/models/chapter/ErrorNode.d.ts +2 -2
- package/models/chapter/ErrorNode.js +34 -12
- package/models/chapter/FootnoteNode.d.ts +5 -5
- package/models/chapter/FootnoteNode.js +34 -16
- package/models/chapter/FormatNode.d.ts +10 -10
- package/models/chapter/FormatNode.js +237 -106
- package/models/chapter/FormatNode.test.js +87 -45
- package/models/chapter/InlineCodeNode.d.ts +2 -2
- package/models/chapter/InlineCodeNode.js +22 -9
- package/models/chapter/LabelNode.d.ts +4 -4
- package/models/chapter/LabelNode.js +31 -13
- package/models/chapter/LinkNode.d.ts +2 -2
- package/models/chapter/LinkNode.js +21 -9
- package/models/chapter/ListNode.d.ts +8 -8
- package/models/chapter/ListNode.js +99 -38
- package/models/chapter/ListNode.test.js +29 -24
- package/models/chapter/MetadataNode.d.ts +3 -3
- package/models/chapter/MetadataNode.js +13 -5
- package/models/chapter/Node.d.ts +5 -3
- package/models/chapter/Node.js +76 -29
- package/models/chapter/Node.test.js +20 -18
- package/models/chapter/ParagraphNode.d.ts +6 -6
- package/models/chapter/ParagraphNode.js +84 -29
- package/models/chapter/ParagraphNode.test.js +22 -13
- package/models/chapter/Parser.d.ts +25 -25
- package/models/chapter/Parser.js +201 -189
- package/models/chapter/Parser.test.js +16 -16
- package/models/chapter/Position.d.ts +1 -1
- package/models/chapter/QuoteNode.d.ts +6 -6
- package/models/chapter/QuoteNode.js +61 -23
- package/models/chapter/RootNode.d.ts +4 -4
- package/models/chapter/RuleNode.d.ts +2 -2
- package/models/chapter/RuleNode.js +31 -11
- package/models/chapter/TableNode.d.ts +8 -6
- package/models/chapter/TableNode.js +89 -34
- package/models/chapter/TableNode.test.js +22 -24
- package/models/chapter/TextNode.d.ts +6 -6
- package/models/chapter/TextNode.js +72 -32
- package/models/chapter/TextNode.test.js +4 -4
- package/models/loadEdition.d.ts +1 -1
- package/models/loadEdition.js +10 -6
- package/package.json +104 -25
- package/util/getSubdomain.js +8 -6
- package/util/isMobile.js +1 -1
- package/util/mineReference.d.ts +3 -2
- package/util/mineReference.js +67 -29
- package/util/scrollToEyeLevel.js +6 -1
- package/components/chapter/renderPosition.d.ts +0 -3
- package/components/chapter/renderPosition.js +0 -4
- package/components/editor/ToolbarIcon.svelte +0 -22
- package/components/editor/ToolbarIcon.svelte.d.ts +0 -16
- package/components/page/Alert.svelte +0 -11
- package/components/page/Alert.svelte.d.ts +0 -23
- package/components/page/Revisions.svelte +0 -124
- package/components/page/Revisions.svelte.d.ts +0 -14
- package/models/BookLoader.d.ts +0 -2
- package/models/BookLoader.js +0 -67
- package/models/Firestore.d.ts +0 -22
- package/models/Firestore.js +0 -194
- package/models/chapter/ReferenceNode.d.ts +0 -29
- package/models/chapter/ReferenceNode.js +0 -48
|
@@ -1,28 +1,44 @@
|
|
|
1
|
-
import AtomNode from
|
|
2
|
-
import FormatNode from
|
|
1
|
+
import AtomNode from './AtomNode';
|
|
2
|
+
import FormatNode from './FormatNode';
|
|
3
3
|
export default class CommentNode extends AtomNode {
|
|
4
4
|
constructor(comment) {
|
|
5
5
|
super(comment.withTextIfEmpty());
|
|
6
6
|
}
|
|
7
|
-
getType() {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
getType() {
|
|
8
|
+
return 'comment';
|
|
9
|
+
}
|
|
10
|
+
toText() {
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
toHTML() {
|
|
14
|
+
return `(${this.getMeta().toHTML()})`;
|
|
15
|
+
}
|
|
16
|
+
getDefaultCaret() {
|
|
17
|
+
return this.getMeta().getFirstCaret();
|
|
18
|
+
}
|
|
11
19
|
toBookdown(format) {
|
|
12
20
|
const previousText = format?.getPreviousTextOrAtom(this)?.toBookdown();
|
|
13
21
|
// Insert a space before the % if there isn't one before this.
|
|
14
|
-
return `${previousText?.endsWith(
|
|
22
|
+
return `${previousText?.endsWith(' ') ? '' : ' '}%${this.getMeta().toBookdown()}%`;
|
|
23
|
+
}
|
|
24
|
+
copy() {
|
|
25
|
+
return new CommentNode(this.getMeta().copy());
|
|
15
26
|
}
|
|
16
|
-
copy() { return new CommentNode(this.getMeta().copy()); }
|
|
17
27
|
withChildReplaced(node, replacement) {
|
|
18
|
-
return node instanceof FormatNode &&
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
return node instanceof FormatNode &&
|
|
29
|
+
replacement instanceof FormatNode &&
|
|
30
|
+
node === this.getMeta()
|
|
31
|
+
? new CommentNode(replacement)
|
|
32
|
+
: undefined;
|
|
21
33
|
}
|
|
22
34
|
getParentOf(node) {
|
|
23
|
-
return node === this.getMeta()
|
|
35
|
+
return node === this.getMeta()
|
|
36
|
+
? this
|
|
37
|
+
: this.getMeta().getParentOf(node);
|
|
38
|
+
}
|
|
39
|
+
withMeta(comment) {
|
|
40
|
+
return new CommentNode(comment);
|
|
24
41
|
}
|
|
25
|
-
withMeta(comment) { return new CommentNode(comment); }
|
|
26
42
|
withContentInRange(range) {
|
|
27
43
|
const newFormat = this.getMeta().withContentInRange(range);
|
|
28
44
|
if (newFormat === undefined)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import MetadataNode from
|
|
2
|
-
import TextNode from
|
|
1
|
+
import MetadataNode from './MetadataNode';
|
|
2
|
+
import TextNode from './TextNode';
|
|
3
3
|
export default class DefinitionNode extends MetadataNode<string> {
|
|
4
4
|
constructor(phrase?: TextNode, glossaryID?: string);
|
|
5
5
|
getType(): string;
|
|
@@ -1,20 +1,28 @@
|
|
|
1
|
-
import MetadataNode from
|
|
2
|
-
import TextNode from
|
|
1
|
+
import MetadataNode from './MetadataNode';
|
|
2
|
+
import TextNode from './TextNode';
|
|
3
3
|
export default class DefinitionNode extends MetadataNode {
|
|
4
|
-
constructor(phrase, glossaryID =
|
|
4
|
+
constructor(phrase, glossaryID = '') {
|
|
5
5
|
super(phrase === undefined ? new TextNode() : phrase, glossaryID);
|
|
6
6
|
}
|
|
7
|
-
getType() {
|
|
7
|
+
getType() {
|
|
8
|
+
return 'definition';
|
|
9
|
+
}
|
|
8
10
|
toText() {
|
|
9
11
|
return this.getText().toText();
|
|
10
12
|
}
|
|
11
|
-
toHTML() {
|
|
13
|
+
toHTML() {
|
|
14
|
+
return `${this.getText().toHTML()}`;
|
|
15
|
+
}
|
|
12
16
|
toBookdown() {
|
|
13
17
|
return `~${this.getText().toBookdown()}~${this.getMeta()}`;
|
|
14
18
|
}
|
|
15
19
|
copy() {
|
|
16
20
|
return new DefinitionNode(this.getText(), this.getMeta());
|
|
17
21
|
}
|
|
18
|
-
withMeta(meta) {
|
|
19
|
-
|
|
22
|
+
withMeta(meta) {
|
|
23
|
+
return new DefinitionNode(this.getText(), meta);
|
|
24
|
+
}
|
|
25
|
+
withText(text) {
|
|
26
|
+
return new DefinitionNode(text, this.getMeta());
|
|
27
|
+
}
|
|
20
28
|
}
|
package/models/chapter/Edit.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type Node from
|
|
2
|
-
import type Position from
|
|
3
|
-
import FormatNode from
|
|
4
|
-
import BlockNode from
|
|
5
|
-
import type { CaretRange } from
|
|
1
|
+
import type Node from './Node';
|
|
2
|
+
import type Position from './Position';
|
|
3
|
+
import FormatNode from './FormatNode';
|
|
4
|
+
import BlockNode from './BlockNode';
|
|
5
|
+
import type { CaretRange } from './Caret';
|
|
6
|
+
import type RootNode from './RootNode';
|
|
7
|
+
import type Caret from './Caret';
|
|
6
8
|
export default class EmbedNode extends BlockNode {
|
|
7
9
|
#private;
|
|
8
10
|
constructor(url: string, description: string, caption?: FormatNode, credit?: FormatNode, position?: Position);
|
|
@@ -37,4 +39,6 @@ export default class EmbedNode extends BlockNode {
|
|
|
37
39
|
withCredit(credit: FormatNode): EmbedNode;
|
|
38
40
|
withPosition(position: Position): EmbedNode;
|
|
39
41
|
withContentInRange(range: CaretRange): this | undefined;
|
|
42
|
+
nextWord(): Caret;
|
|
43
|
+
previousWord(root: RootNode): Caret;
|
|
40
44
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import FormatNode from
|
|
2
|
-
import TextNode from
|
|
3
|
-
import BlockNode from
|
|
1
|
+
import FormatNode from './FormatNode';
|
|
2
|
+
import TextNode from './TextNode';
|
|
3
|
+
import BlockNode from './BlockNode';
|
|
4
4
|
// This is what we use to encode URLs in the URL field of the embed node.
|
|
5
|
-
const URL_SEPARATOR =
|
|
5
|
+
const URL_SEPARATOR = '*';
|
|
6
6
|
export default class EmbedNode extends BlockNode {
|
|
7
7
|
/**
|
|
8
8
|
* The URL is actually a list of up to two URLs. The first is a full-size image URL, the second is a smaller image.
|
|
@@ -13,26 +13,61 @@ export default class EmbedNode extends BlockNode {
|
|
|
13
13
|
#caption;
|
|
14
14
|
#credit;
|
|
15
15
|
#position;
|
|
16
|
-
constructor(url, description, caption, credit, position =
|
|
16
|
+
constructor(url, description, caption, credit, position = '|') {
|
|
17
17
|
super();
|
|
18
18
|
this.#urls = url;
|
|
19
19
|
this.#description = description;
|
|
20
|
-
this.#caption =
|
|
21
|
-
|
|
20
|
+
this.#caption =
|
|
21
|
+
caption === undefined
|
|
22
|
+
? new FormatNode('', [new TextNode()])
|
|
23
|
+
: caption.withTextIfEmpty();
|
|
24
|
+
this.#credit =
|
|
25
|
+
credit == undefined
|
|
26
|
+
? new FormatNode('', [new TextNode()])
|
|
27
|
+
: credit.withTextIfEmpty();
|
|
22
28
|
this.#position = position;
|
|
23
29
|
}
|
|
24
|
-
getType() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
getType() {
|
|
31
|
+
return 'embed';
|
|
32
|
+
}
|
|
33
|
+
getURL() {
|
|
34
|
+
return this.#urls.split(URL_SEPARATOR)[0];
|
|
35
|
+
}
|
|
36
|
+
getSmallURL() {
|
|
37
|
+
return this.isLocal()
|
|
38
|
+
? 'images/small/' + this.getURL()
|
|
39
|
+
: this.hasSmallURL()
|
|
40
|
+
? this.#urls.split(URL_SEPARATOR)[1]
|
|
41
|
+
: this.getURL();
|
|
42
|
+
}
|
|
43
|
+
hasSmallURL() {
|
|
44
|
+
return (this.#urls.split(URL_SEPARATOR).length > 1 &&
|
|
45
|
+
this.#urls.split(URL_SEPARATOR)[1].trim().length > 0);
|
|
46
|
+
}
|
|
47
|
+
isHosted() {
|
|
48
|
+
return this.#urls.includes('bookish');
|
|
49
|
+
}
|
|
50
|
+
isLocal() {
|
|
51
|
+
return this.#urls.length > 0 && !this.#urls.startsWith('http');
|
|
52
|
+
}
|
|
53
|
+
getDescription() {
|
|
54
|
+
return this.#description;
|
|
55
|
+
}
|
|
56
|
+
getCaption() {
|
|
57
|
+
return this.#caption;
|
|
58
|
+
}
|
|
59
|
+
getCredit() {
|
|
60
|
+
return this.#credit;
|
|
61
|
+
}
|
|
62
|
+
getPosition() {
|
|
63
|
+
return this.#position;
|
|
64
|
+
}
|
|
65
|
+
getFormats() {
|
|
66
|
+
return [this.#caption, this.#credit];
|
|
67
|
+
}
|
|
68
|
+
getChildren() {
|
|
69
|
+
return [this.#caption, this.#credit];
|
|
70
|
+
}
|
|
36
71
|
getParentOf(node) {
|
|
37
72
|
if (node === this.#caption || node === this.#credit)
|
|
38
73
|
return this;
|
|
@@ -43,8 +78,12 @@ export default class EmbedNode extends BlockNode {
|
|
|
43
78
|
if (creditParent)
|
|
44
79
|
return creditParent;
|
|
45
80
|
}
|
|
46
|
-
toText() {
|
|
47
|
-
|
|
81
|
+
toText() {
|
|
82
|
+
return this.#caption.toText();
|
|
83
|
+
}
|
|
84
|
+
toHTML() {
|
|
85
|
+
return `<img src="${this.getURL()}" alt="${this.getDescription()}" />`;
|
|
86
|
+
}
|
|
48
87
|
toBookdown() {
|
|
49
88
|
return `|${this.#urls}|${this.#description}|${this.#caption.toBookdown()}|${this.#credit.toBookdown()}|`;
|
|
50
89
|
}
|
|
@@ -53,37 +92,71 @@ export default class EmbedNode extends BlockNode {
|
|
|
53
92
|
url: this.#urls,
|
|
54
93
|
alt: this.#description,
|
|
55
94
|
caption: this.#caption.toText(),
|
|
56
|
-
credit: this.#credit.toText()
|
|
95
|
+
credit: this.#credit.toText(),
|
|
57
96
|
};
|
|
58
97
|
}
|
|
59
98
|
copy() {
|
|
60
99
|
return new EmbedNode(this.#urls, this.#description, this.#caption.copy(), this.#credit.copy(), this.#position);
|
|
61
100
|
}
|
|
62
101
|
withChildReplaced(node, replacement) {
|
|
63
|
-
const newCaption =
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
102
|
+
const newCaption = node === this.#caption &&
|
|
103
|
+
(replacement === undefined || replacement instanceof FormatNode)
|
|
104
|
+
? replacement
|
|
105
|
+
: this.#caption;
|
|
106
|
+
const newCredit = node === this.#credit &&
|
|
107
|
+
(replacement === undefined || replacement instanceof FormatNode)
|
|
108
|
+
? replacement
|
|
109
|
+
: this.#credit;
|
|
110
|
+
return newCaption || newCredit
|
|
111
|
+
? new EmbedNode(this.#urls, this.#description, newCaption, newCredit, this.#position)
|
|
112
|
+
: undefined;
|
|
68
113
|
}
|
|
69
114
|
withURL(url) {
|
|
70
115
|
// If the URL is a YouTube URL, convert to an embed URL, since a raw YouTube URL is never valid for embedding.
|
|
71
|
-
if (url.includes(
|
|
116
|
+
if (url.includes('www.youtube.com/watch?v='))
|
|
72
117
|
url = url.replace('/watch?v=', '/embed/');
|
|
73
118
|
return new EmbedNode(url, this.#description, this.#caption, this.#credit, this.#position);
|
|
74
119
|
}
|
|
75
|
-
withURLs(url, thumbnail) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
120
|
+
withURLs(url, thumbnail) {
|
|
121
|
+
return new EmbedNode(url + URL_SEPARATOR + thumbnail, this.#description, this.#caption, this.#credit, this.#position);
|
|
122
|
+
}
|
|
123
|
+
withDescription(description) {
|
|
124
|
+
return new EmbedNode(this.#urls, description, this.#caption, this.#credit, this.#position);
|
|
125
|
+
}
|
|
126
|
+
withCaption(caption) {
|
|
127
|
+
return new EmbedNode(this.#urls, this.#description, caption, this.#credit, this.#position);
|
|
128
|
+
}
|
|
129
|
+
withCredit(credit) {
|
|
130
|
+
return new EmbedNode(this.#urls, this.#description, this.#caption, credit, this.#position);
|
|
131
|
+
}
|
|
132
|
+
withPosition(position) {
|
|
133
|
+
return new EmbedNode(this.#urls, this.#description, this.#caption, this.#credit, position);
|
|
134
|
+
}
|
|
80
135
|
withContentInRange(range) {
|
|
81
136
|
if (!this.contains(range.start.node) && !this.contains(range.end.node))
|
|
82
137
|
return this.copy();
|
|
83
|
-
const newCredit = this.#
|
|
84
|
-
|
|
138
|
+
const newCredit = this.#credit.contains(range.end.node) ||
|
|
139
|
+
this.#credit.contains(range.start.node)
|
|
140
|
+
? this.#credit.withContentInRange(range)
|
|
141
|
+
: new FormatNode('', [new TextNode()]);
|
|
142
|
+
const newCaption = this.#caption.contains(range.start.node) ||
|
|
143
|
+
this.#caption.contains(range.end.node)
|
|
144
|
+
? this.#caption.withContentInRange(range)
|
|
145
|
+
: new FormatNode('', [new TextNode()]);
|
|
85
146
|
if (newCaption === undefined || newCredit === undefined)
|
|
86
147
|
return;
|
|
87
148
|
return new EmbedNode(this.#urls, this.#description, newCaption, newCredit, this.#position);
|
|
88
149
|
}
|
|
150
|
+
nextWord() {
|
|
151
|
+
return this.#caption.getFirstCaret();
|
|
152
|
+
}
|
|
153
|
+
previousWord(root) {
|
|
154
|
+
const previous = root.getPreviousTextOrAtom(this.#caption.getFirstTextNode());
|
|
155
|
+
return previous
|
|
156
|
+
? {
|
|
157
|
+
node: previous,
|
|
158
|
+
index: previous instanceof TextNode ? previous.getLength() : 0,
|
|
159
|
+
}
|
|
160
|
+
: { node: this, index: 0 };
|
|
161
|
+
}
|
|
89
162
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import BlockNode from
|
|
1
|
+
import BlockNode from './BlockNode';
|
|
2
2
|
export default class ErrorNode extends BlockNode {
|
|
3
3
|
#text;
|
|
4
4
|
#error;
|
|
@@ -7,15 +7,37 @@ export default class ErrorNode extends BlockNode {
|
|
|
7
7
|
this.#text = text;
|
|
8
8
|
this.#error = error;
|
|
9
9
|
}
|
|
10
|
-
getType() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
getType() {
|
|
11
|
+
return 'error';
|
|
12
|
+
}
|
|
13
|
+
getError() {
|
|
14
|
+
return this.#error;
|
|
15
|
+
}
|
|
16
|
+
getFormats() {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
toText() {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
toBookdown() {
|
|
23
|
+
return this.#text ?? '';
|
|
24
|
+
}
|
|
25
|
+
toHTML() {
|
|
26
|
+
return this.#text ?? '';
|
|
27
|
+
}
|
|
28
|
+
getChildren() {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
getParentOf() {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
copy() {
|
|
35
|
+
return new ErrorNode(this.#text, this.#error);
|
|
36
|
+
}
|
|
37
|
+
withChildReplaced() {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
withContentInRange() {
|
|
41
|
+
return this.copy();
|
|
42
|
+
}
|
|
21
43
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import FormatNode from
|
|
2
|
-
import AtomNode from
|
|
3
|
-
import type Node from
|
|
4
|
-
import type Caret from
|
|
5
|
-
import type { CaretRange } from
|
|
1
|
+
import FormatNode from './FormatNode';
|
|
2
|
+
import AtomNode from './AtomNode';
|
|
3
|
+
import type Node from './Node';
|
|
4
|
+
import type Caret from './Caret';
|
|
5
|
+
import type { CaretRange } from './Caret';
|
|
6
6
|
export default class FootnoteNode extends AtomNode<FormatNode> {
|
|
7
7
|
constructor(content?: FormatNode);
|
|
8
8
|
getType(): string;
|
|
@@ -1,25 +1,43 @@
|
|
|
1
|
-
import FormatNode from
|
|
2
|
-
import AtomNode from
|
|
3
|
-
import TextNode from
|
|
1
|
+
import FormatNode from './FormatNode';
|
|
2
|
+
import AtomNode from './AtomNode';
|
|
3
|
+
import TextNode from './TextNode';
|
|
4
4
|
export default class FootnoteNode extends AtomNode {
|
|
5
5
|
constructor(content) {
|
|
6
|
-
super(content === undefined
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
super(content === undefined
|
|
7
|
+
? new FormatNode('', [new TextNode()])
|
|
8
|
+
: content.withTextIfEmpty());
|
|
9
|
+
}
|
|
10
|
+
getType() {
|
|
11
|
+
return 'footnote';
|
|
12
|
+
}
|
|
13
|
+
getDefaultCaret() {
|
|
14
|
+
return this.getMeta().getFirstCaret();
|
|
15
|
+
}
|
|
16
|
+
toText() {
|
|
17
|
+
return this.getMeta().toText();
|
|
18
|
+
}
|
|
19
|
+
toBookdown() {
|
|
20
|
+
return `{${this.getMeta().toBookdown()}}`;
|
|
21
|
+
}
|
|
22
|
+
toHTML() {
|
|
23
|
+
return `(${this.getMeta().toHTML()})`;
|
|
24
|
+
}
|
|
25
|
+
copy() {
|
|
26
|
+
return new FootnoteNode(this.getMeta().copy());
|
|
27
|
+
}
|
|
14
28
|
getParentOf(node) {
|
|
15
|
-
return node === this.getMeta()
|
|
29
|
+
return node === this.getMeta()
|
|
30
|
+
? this
|
|
31
|
+
: this.getMeta().getParentOf(node);
|
|
16
32
|
}
|
|
17
33
|
withChildReplaced(node, replacement) {
|
|
18
|
-
return node === this.getMeta() && replacement !== undefined
|
|
19
|
-
new FootnoteNode(replacement)
|
|
20
|
-
undefined;
|
|
34
|
+
return node === this.getMeta() && replacement !== undefined
|
|
35
|
+
? new FootnoteNode(replacement)
|
|
36
|
+
: undefined;
|
|
37
|
+
}
|
|
38
|
+
withMeta(footnote) {
|
|
39
|
+
return new FootnoteNode(footnote);
|
|
21
40
|
}
|
|
22
|
-
withMeta(footnote) { return new FootnoteNode(footnote); }
|
|
23
41
|
withContentInRange(range) {
|
|
24
42
|
const newFormat = this.getMeta().withContentInRange(range);
|
|
25
43
|
if (newFormat === undefined)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import Node from
|
|
2
|
-
import type ErrorNode from
|
|
3
|
-
import TextNode from
|
|
4
|
-
import type Caret from
|
|
5
|
-
import { type CaretRange } from
|
|
6
|
-
import MetadataNode from
|
|
7
|
-
import AtomNode from
|
|
8
|
-
import type Edit from
|
|
9
|
-
export
|
|
10
|
-
export
|
|
1
|
+
import Node from './Node';
|
|
2
|
+
import type ErrorNode from './ErrorNode';
|
|
3
|
+
import TextNode from './TextNode';
|
|
4
|
+
import type Caret from './Caret';
|
|
5
|
+
import { type CaretRange } from './Caret';
|
|
6
|
+
import MetadataNode from './MetadataNode';
|
|
7
|
+
import AtomNode from './AtomNode';
|
|
8
|
+
import type Edit from './Edit';
|
|
9
|
+
export type Format = '' | '*' | '_' | '^' | 'v';
|
|
10
|
+
export type FormatNodeSegmentType = FormatNode | TextNode | ErrorNode | MetadataNode<any> | AtomNode<any>;
|
|
11
11
|
export default class FormatNode extends Node {
|
|
12
12
|
#private;
|
|
13
13
|
constructor(format: Format, segments: FormatNodeSegmentType[]);
|