bookish-press 0.4.0 → 0.4.3
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 +27 -24
- package/components/Auth.svelte.d.ts +4 -4
- package/components/Authentication.d.ts +2 -2
- package/components/BookPreview.svelte +75 -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 +47 -0
- package/components/app/Feedback.svelte.d.ts +18 -0
- package/components/app/Head.svelte +15 -0
- package/components/app/Head.svelte.d.ts +18 -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 +20 -0
- package/components/app/Paragraph.svelte.d.ts +18 -0
- package/components/app/Section.svelte +12 -0
- package/components/app/Section.svelte.d.ts +27 -0
- package/components/app/Table.svelte +32 -0
- package/components/app/Table.svelte.d.ts +27 -0
- package/components/app/TextInput.svelte +38 -0
- package/components/app/TextInput.svelte.d.ts +22 -0
- package/components/chapter/Atom.svelte +20 -6
- package/components/chapter/Atom.svelte.d.ts +3 -3
- package/components/chapter/Block.svelte +26 -21
- 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 +67 -24
- package/components/chapter/CaptionedCode.svelte.d.ts +4 -4
- package/components/chapter/ChapterBody.svelte +62 -9
- package/components/chapter/ChapterBody.svelte.d.ts +5 -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 +39 -17
- 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 +155 -67
- package/components/chapter/Embed.svelte.d.ts +6 -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 +63 -38
- package/components/chapter/Format.svelte.d.ts +5 -4
- package/components/chapter/InlineCode.svelte +16 -6
- package/components/chapter/InlineCode.svelte.d.ts +4 -4
- package/components/chapter/Label.svelte +38 -9
- package/components/chapter/Label.svelte.d.ts +4 -4
- package/components/chapter/Link.svelte +24 -19
- 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 +79 -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 +373 -244
- package/components/editor/BookishEditor.svelte.d.ts +9 -6
- 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 +82 -0
- package/components/editor/CaretView.svelte.d.ts +25 -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 +4 -3
- package/components/editor/Note.svelte.d.ts +6 -2
- package/components/editor/Permissions.svelte +95 -0
- package/components/editor/Permissions.svelte.d.ts +20 -0
- 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 +191 -144
- package/components/editor/Toolbar.svelte.d.ts +5 -8
- package/components/editor/ToolbarGroup.svelte +17 -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 +35 -24
- package/components/page/Acknowledgements.svelte.d.ts +4 -4
- package/components/page/Authors.svelte +34 -17
- package/components/page/Authors.svelte.d.ts +7 -6
- package/components/page/BookLoader.svelte +59 -0
- package/components/page/BookLoader.svelte.d.ts +16 -0
- package/components/page/BulkReferenceEditor.svelte +54 -23
- package/components/page/BulkReferenceEditor.svelte.d.ts +4 -4
- package/components/page/Chapter.svelte +234 -143
- 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 +42 -22
- package/components/page/Contexts.js +129 -17
- package/components/page/DefinitionView.svelte +129 -90
- package/components/page/DefinitionView.svelte.d.ts +3 -3
- package/components/page/Description.svelte +31 -19
- package/components/page/Description.svelte.d.ts +4 -4
- package/components/page/Edition.svelte +135 -80
- package/components/page/Edition.svelte.d.ts +5 -6
- package/components/page/EditionLoader.svelte +99 -0
- package/components/page/EditionLoader.svelte.d.ts +18 -0
- package/components/page/Editions.svelte +106 -0
- package/components/page/Editions.svelte.d.ts +14 -0
- package/components/page/Glossary.svelte +65 -49
- package/components/page/Glossary.svelte.d.ts +4 -4
- package/components/page/Header.svelte +143 -56
- package/components/page/Header.svelte.d.ts +8 -6
- package/components/page/Index.svelte +116 -80
- package/components/page/Index.svelte.d.ts +4 -4
- package/components/page/Instructions.svelte +18 -17
- package/components/page/Instructions.svelte.d.ts +6 -4
- package/components/page/License.svelte +39 -23
- 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 +81 -53
- 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/Publish.svelte +134 -0
- package/components/page/Publish.svelte.d.ts +14 -0
- package/components/page/Reference.svelte +259 -117
- package/components/page/Reference.svelte.d.ts +5 -5
- package/components/page/References.svelte +45 -48
- 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 +88 -63
- package/components/page/Search.svelte.d.ts +4 -4
- package/components/page/Status.svelte +46 -39
- package/components/page/Status.svelte.d.ts +4 -9
- package/components/page/SubdomainEditor.svelte +41 -27
- package/components/page/SubdomainEditor.svelte.d.ts +4 -4
- package/components/page/TableOfContents.svelte +264 -191
- 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 +97 -34
- package/components/page/TableOfContentsRow.svelte.d.ts +4 -4
- package/components/page/ThemeEditor.svelte +177 -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 +28 -21
- package/components/page/Unknown.svelte.d.ts +4 -4
- package/components/page/margins.js +50 -33
- package/index.d.ts +13 -0
- package/index.js +14 -0
- package/models/CRUD.d.ts +27 -0
- package/models/CRUD.js +262 -0
- package/models/Firebase.d.ts +1 -0
- package/models/Firebase.js +26 -16
- package/models/book/Book.d.ts +40 -39
- package/models/book/Book.js +121 -121
- 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 +50 -39
- package/models/book/Chapter.js +189 -198
- package/models/book/ChapterID.js +7 -7
- package/models/book/Definition.d.ts +1 -1
- package/models/book/Edition.d.ts +87 -61
- package/models/book/Edition.js +460 -309
- package/models/book/Reference.d.ts +24 -0
- package/models/book/Reference.js +78 -0
- package/models/book/Schema.d.ts +168 -0
- package/models/book/Schema.js +115 -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 +27 -27
- package/models/chapter/Parser.js +220 -206
- 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/package.json +108 -26
- 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
- package/models/loadEdition.d.ts +0 -5
- package/models/loadEdition.js +0 -16
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} ChapterNumberProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} ChapterNumberEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} ChapterNumberSlots */
|
|
4
|
+
export default class ChapterNumber extends SvelteComponentTyped<{
|
|
5
|
+
[x: string]: never;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {
|
|
9
|
+
default: {};
|
|
10
|
+
}> {
|
|
11
|
+
}
|
|
12
|
+
export type ChapterNumberProps = typeof __propDef.props;
|
|
13
|
+
export type ChapterNumberEvents = typeof __propDef.events;
|
|
14
|
+
export type ChapterNumberSlots = typeof __propDef.slots;
|
|
15
|
+
import { SvelteComponentTyped } from "svelte";
|
|
16
|
+
declare const __propDef: {
|
|
17
|
+
props: {
|
|
18
|
+
[x: string]: never;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {
|
|
24
|
+
default: {};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script>import Link from '../Link.svelte';
|
|
2
|
+
export let link = undefined;
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
{#if link}
|
|
6
|
+
<Link to={link}><h3> <slot /></h3></Link>
|
|
7
|
+
{:else}
|
|
8
|
+
<h3><slot /></h3>
|
|
9
|
+
{/if}
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
h3 {
|
|
13
|
+
font-family: var(--bookish-header-font-family);
|
|
14
|
+
margin: 0;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
link?: string | undefined;
|
|
5
|
+
};
|
|
6
|
+
events: {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
};
|
|
9
|
+
slots: {
|
|
10
|
+
default: {};
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export type ChapterTitleProps = typeof __propDef.props;
|
|
14
|
+
export type ChapterTitleEvents = typeof __propDef.events;
|
|
15
|
+
export type ChapterTitleSlots = typeof __propDef.slots;
|
|
16
|
+
export default class ChapterTitle extends SvelteComponentTyped<ChapterTitleProps, ChapterTitleEvents, ChapterTitleSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -1,27 +1,47 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type Book from
|
|
3
|
-
import type
|
|
4
|
-
import type
|
|
5
|
-
import type
|
|
6
|
-
import type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export
|
|
11
|
-
export declare const EDITION: unique symbol;
|
|
12
|
-
export declare function getEdition(): EditionStore;
|
|
13
|
-
export declare type CaretStore = Writable<CaretContext>;
|
|
14
|
-
export declare const CARET: unique symbol;
|
|
15
|
-
export declare function getCaret(): CaretStore;
|
|
16
|
-
export declare type DarkModeStore = Writable<boolean>;
|
|
1
|
+
import { type Writable } from 'svelte/store';
|
|
2
|
+
import type Book from '../../models/book/Book';
|
|
3
|
+
import type Chapter from '../../models/book/Chapter';
|
|
4
|
+
import type BookSaveStatus from '../../models/book/BookSaveStatus';
|
|
5
|
+
import type Edition from '../../models/book/Edition';
|
|
6
|
+
import type Authentication from '../Authentication';
|
|
7
|
+
import type CaretState from '../editor/CaretState';
|
|
8
|
+
import type ChapterContext from './ChapterContext';
|
|
9
|
+
import type { DocumentReference } from 'firebase/firestore';
|
|
10
|
+
export type DarkModeStore = Writable<boolean>;
|
|
17
11
|
export declare const DARK_MODE: unique symbol;
|
|
18
12
|
export declare function getDarkMode(): DarkModeStore;
|
|
19
|
-
export
|
|
13
|
+
export type UserStore = Writable<Authentication | undefined>;
|
|
14
|
+
export declare const USER: unique symbol;
|
|
15
|
+
export declare function getUser(): UserStore;
|
|
16
|
+
export type BookStore = Writable<Book | undefined>;
|
|
17
|
+
export declare const BOOK: unique symbol;
|
|
18
|
+
export declare function getBook(): BookStore;
|
|
19
|
+
export type EditionStore = Writable<Edition | undefined>;
|
|
20
|
+
export declare const EDITION: unique symbol;
|
|
21
|
+
export declare function getEdition(): EditionStore;
|
|
22
|
+
export type ChapterText = [DocumentReference, string][];
|
|
23
|
+
export type ChapterTextStore = Writable<ChapterText | undefined>;
|
|
24
|
+
export declare const CHAPTERTEXT: unique symbol;
|
|
25
|
+
export declare function getChapterText(): ChapterTextStore;
|
|
26
|
+
export type ChapterStore = Writable<ChapterContext>;
|
|
20
27
|
export declare const CHAPTER: unique symbol;
|
|
21
28
|
export declare function getChapter(): ChapterStore;
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Update the edition that contains the chapter, then update the
|
|
31
|
+
* global edition store with the new edition, propogating the changes everywhere.
|
|
32
|
+
*/
|
|
33
|
+
export declare function setChapter(store: EditionStore, previous: Chapter, chapter: Chapter): void;
|
|
34
|
+
export declare function isChapterEditable(): boolean;
|
|
35
|
+
export declare function isEditionEditable(): boolean;
|
|
36
|
+
export declare function isEditionPartiallyEditable(): boolean;
|
|
37
|
+
export declare function isBookEditable(): boolean;
|
|
24
38
|
export declare const BASE: unique symbol;
|
|
25
|
-
export
|
|
26
|
-
export declare
|
|
27
|
-
export declare
|
|
39
|
+
export type BaseStore = Writable<string>;
|
|
40
|
+
export declare function getBase(): BaseStore;
|
|
41
|
+
export declare const CARET: unique symbol;
|
|
42
|
+
export declare function getCaret(): Writable<CaretState | undefined>;
|
|
43
|
+
export declare const STATUS: unique symbol;
|
|
44
|
+
export type StatusStore = Writable<BookSaveStatus>;
|
|
45
|
+
export declare function getStatus(): StatusStore;
|
|
46
|
+
export declare function lease(authStore: UserStore, editionStore: EditionStore, contentID: string, lock: boolean): Promise<boolean>;
|
|
47
|
+
export declare function getLeasee(authStore: UserStore, editionStore: EditionStore, contentID: string): string | boolean;
|
|
@@ -2,20 +2,132 @@
|
|
|
2
2
|
// to avoid key collisions and prevent typos. This is partly
|
|
3
3
|
// future-proofing, but also because getContext<Type>() isn't type safe,
|
|
4
4
|
// as the resulting value is coerced to Type even if it's not that value.
|
|
5
|
-
import { getContext } from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export
|
|
5
|
+
import { getContext } from 'svelte';
|
|
6
|
+
import { get } from 'svelte/store';
|
|
7
|
+
import { page } from '$app/stores';
|
|
8
|
+
import { updateLock } from '../../models/CRUD';
|
|
9
|
+
export const DARK_MODE = Symbol('dark');
|
|
10
|
+
export function getDarkMode() {
|
|
11
|
+
return getContext(DARK_MODE);
|
|
12
|
+
}
|
|
13
|
+
export const USER = Symbol('user');
|
|
14
|
+
export function getUser() {
|
|
15
|
+
return getContext(USER);
|
|
16
|
+
}
|
|
17
|
+
export const BOOK = Symbol('book');
|
|
18
|
+
export function getBook() {
|
|
19
|
+
return getContext(BOOK);
|
|
20
|
+
}
|
|
21
|
+
export const EDITION = Symbol('edition');
|
|
22
|
+
export function getEdition() {
|
|
23
|
+
return getContext(EDITION);
|
|
24
|
+
}
|
|
25
|
+
export const CHAPTERTEXT = Symbol('chaptertext');
|
|
26
|
+
export function getChapterText() {
|
|
27
|
+
return getContext(CHAPTERTEXT);
|
|
28
|
+
}
|
|
29
|
+
export const CHAPTER = Symbol('chapter');
|
|
30
|
+
export function getChapter() {
|
|
31
|
+
return getContext(CHAPTER);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Update the edition that contains the chapter, then update the
|
|
35
|
+
* global edition store with the new edition, propogating the changes everywhere.
|
|
36
|
+
*/
|
|
37
|
+
export function setChapter(store, previous, chapter) {
|
|
38
|
+
const edition = get(store);
|
|
39
|
+
if (edition)
|
|
40
|
+
store.set(edition.withRevisedChapter(previous, chapter));
|
|
41
|
+
}
|
|
42
|
+
export function isChapterEditable() {
|
|
43
|
+
if (!get(page).route.id?.startsWith('/write'))
|
|
44
|
+
return false;
|
|
45
|
+
const auth = get(getUser());
|
|
46
|
+
const chapter = get(getChapter());
|
|
47
|
+
const edition = get(getEdition());
|
|
48
|
+
const book = get(getBook());
|
|
49
|
+
return (chapter !== undefined &&
|
|
50
|
+
edition !== undefined &&
|
|
51
|
+
book !== undefined &&
|
|
52
|
+
auth !== undefined &&
|
|
53
|
+
auth.user !== null &&
|
|
54
|
+
(chapter.chapter.isEditor(auth.user.uid) ||
|
|
55
|
+
edition.isEditor(auth.user.uid) ||
|
|
56
|
+
book.isEditor(auth.user.uid)));
|
|
57
|
+
}
|
|
58
|
+
export function isEditionEditable() {
|
|
59
|
+
if (!get(page).route.id?.startsWith('/write'))
|
|
60
|
+
return false;
|
|
61
|
+
const auth = get(getUser());
|
|
62
|
+
const edition = get(getEdition());
|
|
63
|
+
const book = get(getBook());
|
|
64
|
+
return (edition !== undefined &&
|
|
65
|
+
book !== undefined &&
|
|
66
|
+
auth !== undefined &&
|
|
67
|
+
auth.user !== null &&
|
|
68
|
+
(edition.isEditor(auth.user.uid) || book.isEditor(auth.user.uid)));
|
|
69
|
+
}
|
|
70
|
+
export function isEditionPartiallyEditable() {
|
|
71
|
+
if (!get(page).route.id?.startsWith('/write'))
|
|
72
|
+
return false;
|
|
73
|
+
const auth = get(getUser());
|
|
74
|
+
const edition = get(getEdition());
|
|
75
|
+
return (edition !== undefined &&
|
|
76
|
+
auth !== undefined &&
|
|
77
|
+
auth.user !== null &&
|
|
78
|
+
edition.isChapterEditor(auth.user.uid));
|
|
79
|
+
}
|
|
80
|
+
export function isBookEditable() {
|
|
81
|
+
if (!get(page).route.id?.startsWith('/write'))
|
|
82
|
+
return false;
|
|
83
|
+
const auth = get(getUser());
|
|
84
|
+
const book = get(getBook());
|
|
85
|
+
return (book !== undefined &&
|
|
86
|
+
auth !== undefined &&
|
|
87
|
+
auth.user !== null &&
|
|
88
|
+
book.isEditor(auth.user.uid));
|
|
89
|
+
}
|
|
90
|
+
export const BASE = Symbol('base');
|
|
91
|
+
export function getBase() {
|
|
92
|
+
return getContext(BASE);
|
|
93
|
+
}
|
|
94
|
+
export const CARET = Symbol('caret');
|
|
95
|
+
export function getCaret() {
|
|
96
|
+
return getContext(CARET);
|
|
97
|
+
}
|
|
98
|
+
export const STATUS = Symbol('status');
|
|
99
|
+
export function getStatus() {
|
|
100
|
+
return getContext(STATUS);
|
|
101
|
+
}
|
|
102
|
+
export async function lease(authStore, editionStore, contentID, lock) {
|
|
103
|
+
const edition = get(editionStore);
|
|
104
|
+
const auth = get(authStore);
|
|
105
|
+
if (edition && auth && auth.user) {
|
|
106
|
+
await updateLock(edition, auth.user.uid, contentID, lock);
|
|
107
|
+
const latestEdition = get(editionStore);
|
|
108
|
+
const latestAuth = get(authStore);
|
|
109
|
+
if (latestEdition && latestAuth && latestAuth.user) {
|
|
110
|
+
editionStore.set(latestEdition.withLock(latestAuth.user.uid, contentID, lock));
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
else
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
else
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
export function getLeasee(authStore, editionStore, contentID) {
|
|
120
|
+
const edition = get(editionStore);
|
|
121
|
+
const auth = get(authStore);
|
|
122
|
+
if (edition !== undefined && auth !== undefined && auth.user !== null) {
|
|
123
|
+
const leasee = edition.getLeasee(contentID);
|
|
124
|
+
if (leasee === undefined)
|
|
125
|
+
return false;
|
|
126
|
+
else if (leasee === auth.user.uid)
|
|
127
|
+
return true;
|
|
128
|
+
else
|
|
129
|
+
return leasee;
|
|
130
|
+
}
|
|
131
|
+
else
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
@@ -5,17 +5,19 @@ import BookishEditor from '../editor/BookishEditor.svelte';
|
|
|
5
5
|
import Format from '../chapter/Format.svelte';
|
|
6
6
|
import Note from '../editor/Note.svelte';
|
|
7
7
|
import { afterUpdate } from 'svelte';
|
|
8
|
-
import { getEdition,
|
|
8
|
+
import { getUser, getEdition, getLeasee, isChapterEditable, lease, } from './Contexts';
|
|
9
|
+
import Button from '../app/Button.svelte';
|
|
9
10
|
export let id;
|
|
10
11
|
export let definition;
|
|
12
|
+
let auth = getUser();
|
|
11
13
|
let edition = getEdition();
|
|
12
|
-
let editable =
|
|
14
|
+
let editable = isChapterEditable();
|
|
13
15
|
// Focus after adding a new synonym.
|
|
14
16
|
let newSynonym = false;
|
|
15
17
|
let synonymsEditor = null;
|
|
16
18
|
afterUpdate(() => {
|
|
17
19
|
if (newSynonym && synonymsEditor) {
|
|
18
|
-
const editors = synonymsEditor.querySelectorAll(
|
|
20
|
+
const editors = synonymsEditor.querySelectorAll('input');
|
|
19
21
|
if (editors.length > 0) {
|
|
20
22
|
const last = editors[editors.length - 1];
|
|
21
23
|
if (last instanceof HTMLElement)
|
|
@@ -24,106 +26,143 @@ afterUpdate(() => {
|
|
|
24
26
|
newSynonym = false;
|
|
25
27
|
}
|
|
26
28
|
});
|
|
27
|
-
$: format = Parser.parseFormat(undefined, definition.definition).withTextIfEmpty();
|
|
28
29
|
function addSynonym() {
|
|
29
|
-
if ($edition
|
|
30
|
-
$edition.
|
|
30
|
+
if ($edition) {
|
|
31
|
+
edition.set($edition.withEditedDefinition(id, {
|
|
31
32
|
phrase: definition.phrase,
|
|
32
33
|
definition: definition.definition,
|
|
33
|
-
synonyms: [...definition.synonyms,
|
|
34
|
-
});
|
|
34
|
+
synonyms: [...(definition.synonyms ?? []), ''],
|
|
35
|
+
}));
|
|
35
36
|
}
|
|
36
37
|
newSynonym = true;
|
|
37
38
|
}
|
|
38
39
|
$: syns = definition.synonyms || [];
|
|
39
40
|
</script>
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
<
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
commandLabel="x"
|
|
46
|
-
confirmLabel="Confirm"
|
|
47
|
-
command={() => $edition.removeDefinition(id)}
|
|
48
|
-
/>
|
|
49
|
-
{/if}
|
|
50
|
-
{#if editable && edition }
|
|
51
|
-
<strong>
|
|
42
|
+
{#if $edition}
|
|
43
|
+
<section class="definition">
|
|
44
|
+
<dt>
|
|
45
|
+
{#if editable}
|
|
52
46
|
<TextEditor
|
|
53
|
-
|
|
54
|
-
label={'Glossary phrase editor.'}
|
|
55
|
-
placeholder="
|
|
56
|
-
valid={
|
|
57
|
-
if(text.length === 0) return "
|
|
47
|
+
text={definition.phrase}
|
|
48
|
+
label={'Glossary phrase editor.'}
|
|
49
|
+
placeholder="phrase"
|
|
50
|
+
valid={(text) => {
|
|
51
|
+
if (text.length === 0) return "phrase can't be empty";
|
|
58
52
|
}}
|
|
59
|
-
save={text =>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
save={(text) =>
|
|
54
|
+
$edition
|
|
55
|
+
? edition.set(
|
|
56
|
+
$edition.withEditedDefinition(id, {
|
|
57
|
+
phrase: text,
|
|
58
|
+
definition: definition.definition,
|
|
59
|
+
synonyms: definition.synonyms,
|
|
60
|
+
})
|
|
61
|
+
)
|
|
62
|
+
: undefined}
|
|
64
63
|
/>
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
64
|
+
{:else if definition.phrase}{definition.phrase}{:else}<em
|
|
65
|
+
>—</em
|
|
66
|
+
>{/if}
|
|
67
|
+
{#if editable}
|
|
68
|
+
<ConfirmButton
|
|
69
|
+
tooltip="delete entry {definition.phrase}"
|
|
70
|
+
commandLabel="- definition"
|
|
71
|
+
confirmLabel="confirm"
|
|
72
|
+
command={() =>
|
|
73
|
+
$edition
|
|
74
|
+
? edition.set($edition.withoutDefinition(id))
|
|
75
|
+
: undefined}
|
|
76
|
+
/>
|
|
77
|
+
{/if}
|
|
78
|
+
</dt>
|
|
79
|
+
|
|
80
|
+
<dd class="term">
|
|
81
|
+
{#if editable && edition}
|
|
82
|
+
<BookishEditor
|
|
83
|
+
text={definition.definition}
|
|
84
|
+
parser={(text) =>
|
|
85
|
+
Parser.parseFormat(undefined, text).withTextIfEmpty()}
|
|
86
|
+
save={(node) =>
|
|
87
|
+
$edition
|
|
88
|
+
? edition.set(
|
|
89
|
+
$edition.withEditedDefinition(id, {
|
|
90
|
+
phrase: definition.phrase,
|
|
91
|
+
definition: node.toBookdown(),
|
|
92
|
+
synonyms: definition.synonyms,
|
|
93
|
+
})
|
|
94
|
+
)
|
|
95
|
+
: undefined}
|
|
96
|
+
chapter={false}
|
|
97
|
+
component={Format}
|
|
98
|
+
placeholder="definition"
|
|
99
|
+
leasee={getLeasee(auth, edition, `definition-${id}`)}
|
|
100
|
+
lease={(lock) =>
|
|
101
|
+
lease(auth, edition, `definition-${id}`, lock)}
|
|
102
|
+
/>
|
|
103
|
+
{:else if definition.definition === ''}
|
|
85
104
|
<em>Definition</em>
|
|
86
105
|
{:else}
|
|
87
|
-
<Format
|
|
106
|
+
<Format
|
|
107
|
+
node={Parser.parseFormat(
|
|
108
|
+
undefined,
|
|
109
|
+
definition.definition
|
|
110
|
+
).withTextIfEmpty()}
|
|
111
|
+
/>
|
|
88
112
|
{/if}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
113
|
+
{#if edition && editable}
|
|
114
|
+
<span bind:this={synonymsEditor}>
|
|
115
|
+
{#if syns.length === 0}
|
|
116
|
+
<Note>no synonyms</Note>
|
|
117
|
+
{:else}
|
|
118
|
+
{#each syns as syn, index}
|
|
119
|
+
<Note>
|
|
120
|
+
<TextEditor
|
|
121
|
+
text={syn}
|
|
122
|
+
label={'Synonym editor.'}
|
|
123
|
+
placeholder="synonym"
|
|
124
|
+
valid={() => undefined}
|
|
125
|
+
save={(text) => {
|
|
126
|
+
const newSyns = [...syns];
|
|
127
|
+
// Remove the synonym if it's empty but wasn't before
|
|
128
|
+
if (syn.length > 0 && text.length === 0)
|
|
129
|
+
newSyns.splice(index, 1);
|
|
130
|
+
else newSyns[index] = text;
|
|
131
|
+
if ($edition)
|
|
132
|
+
edition.set(
|
|
133
|
+
$edition.withEditedDefinition(
|
|
134
|
+
id,
|
|
135
|
+
{
|
|
136
|
+
phrase: definition.phrase,
|
|
137
|
+
definition:
|
|
138
|
+
definition.definition,
|
|
139
|
+
synonyms: newSyns,
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
);
|
|
143
|
+
}}
|
|
144
|
+
/>
|
|
145
|
+
</Note>
|
|
146
|
+
{#if syns.length > 1 && index < syns.length - 1}, {/if}
|
|
147
|
+
{/each}
|
|
148
|
+
{/if}
|
|
149
|
+
</span> <Button tooltip="add synonym" command={addSynonym}
|
|
150
|
+
>+ synonym</Button
|
|
151
|
+
>
|
|
152
|
+
{:else if definition.synonyms !== undefined && definition.synonyms.length > 0}
|
|
153
|
+
<Note>{definition.synonyms.join(', ')}</Note>
|
|
126
154
|
{/if}
|
|
127
|
-
|
|
128
|
-
</
|
|
129
|
-
|
|
155
|
+
</dd>
|
|
156
|
+
</section>
|
|
157
|
+
{/if}
|
|
158
|
+
|
|
159
|
+
<style>
|
|
160
|
+
dd {
|
|
161
|
+
margin: 0;
|
|
162
|
+
margin-top: var(--bookish-paragraph-spacing);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
dt {
|
|
166
|
+
font-weight: bold;
|
|
167
|
+
}
|
|
168
|
+
</style>
|
|
@@ -10,9 +10,9 @@ declare const __propDef: {
|
|
|
10
10
|
};
|
|
11
11
|
slots: {};
|
|
12
12
|
};
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
13
|
+
export type DefinitionViewProps = typeof __propDef.props;
|
|
14
|
+
export type DefinitionViewEvents = typeof __propDef.events;
|
|
15
|
+
export type DefinitionViewSlots = typeof __propDef.slots;
|
|
16
16
|
export default class DefinitionView extends SvelteComponentTyped<DefinitionViewProps, DefinitionViewEvents, DefinitionViewSlots> {
|
|
17
17
|
}
|
|
18
18
|
export {};
|
|
@@ -1,22 +1,34 @@
|
|
|
1
|
-
<script>import Parser from
|
|
2
|
-
import ChapterBody from
|
|
3
|
-
import BookishEditor from
|
|
4
|
-
import { getEdition,
|
|
5
|
-
let
|
|
1
|
+
<script>import Parser from '../../models/chapter/Parser';
|
|
2
|
+
import ChapterBody from '../chapter/ChapterBody.svelte';
|
|
3
|
+
import BookishEditor from '../editor/BookishEditor.svelte';
|
|
4
|
+
import { getUser, getEdition, getLeasee, isEditionEditable, lease, } from './Contexts';
|
|
5
|
+
let auth = getUser();
|
|
6
|
+
let editable = isEditionEditable();
|
|
6
7
|
let edition = getEdition();
|
|
7
|
-
$: descriptionNode = Parser.parseChapter($edition, $edition.getDescription());
|
|
8
8
|
</script>
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
{#if $edition}
|
|
11
|
+
<section class="bookish-description">
|
|
12
|
+
{#if editable}
|
|
13
|
+
<BookishEditor
|
|
14
|
+
text={$edition.getDescription()}
|
|
15
|
+
parser={(text) => Parser.parseChapter($edition, text)}
|
|
16
|
+
save={(node) =>
|
|
17
|
+
$edition
|
|
18
|
+
? edition.set(
|
|
19
|
+
$edition?.setDescription(node.toBookdown())
|
|
20
|
+
)
|
|
21
|
+
: undefined}
|
|
22
|
+
chapter={false}
|
|
23
|
+
component={ChapterBody}
|
|
24
|
+
placeholder="book description"
|
|
25
|
+
leasee={getLeasee(auth, edition, `description`)}
|
|
26
|
+
lease={(lock) => lease(auth, edition, `description`, lock)}
|
|
27
|
+
/>
|
|
28
|
+
{:else}
|
|
29
|
+
<ChapterBody
|
|
30
|
+
node={Parser.parseChapter($edition, $edition.getDescription())}
|
|
31
|
+
/>
|
|
32
|
+
{/if}
|
|
33
|
+
</section>
|
|
34
|
+
{/if}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
|
-
props:
|
|
3
|
+
props: Record<string, never>;
|
|
4
4
|
events: {
|
|
5
5
|
[evt: string]: CustomEvent<any>;
|
|
6
6
|
};
|
|
7
7
|
slots: {};
|
|
8
8
|
};
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
9
|
+
export type DescriptionProps = typeof __propDef.props;
|
|
10
|
+
export type DescriptionEvents = typeof __propDef.events;
|
|
11
|
+
export type DescriptionSlots = typeof __propDef.slots;
|
|
12
12
|
export default class Description extends SvelteComponentTyped<DescriptionProps, DescriptionEvents, DescriptionSlots> {
|
|
13
13
|
}
|
|
14
14
|
export {};
|