bookish-press 0.4.45 → 0.4.47
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/.env.example +8 -0
- package/.firebaserc +8 -0
- package/.prettierignore +8 -0
- package/.prettierrc.json +5 -0
- package/_update-notifier-last-checked +0 -0
- package/firebase.json +46 -0
- package/firestore.indexes.json +4 -0
- package/firestore.rules +59 -0
- package/functions/.eslintrc.js +28 -0
- package/functions/package-lock.json +12595 -0
- package/functions/package.json +43 -0
- package/functions/src/index.ts +345 -0
- package/functions/tsconfig.dev.json +3 -0
- package/functions/tsconfig.json +15 -0
- package/package.json +53 -270
- package/scripts/claims.cjs +99 -0
- package/src/app.d.ts +9 -0
- package/src/app.html +24 -0
- package/src/lib/components/Auth.svelte +65 -0
- package/{components/Authentication.d.ts → src/lib/components/Authentication.ts} +2 -0
- package/{components → src/lib/components}/BookPreview.svelte +27 -22
- package/{components → src/lib/components}/External.svelte +2 -1
- package/src/lib/components/Link.svelte +58 -0
- package/{components → src/lib/components}/app/BookList.svelte +6 -3
- package/{components → src/lib/components}/app/Button.svelte +5 -4
- package/{components → src/lib/components}/app/Feedback.svelte +11 -7
- package/{components → src/lib/components}/app/Head.svelte +2 -1
- package/{components → src/lib/components}/app/Large.svelte +0 -0
- package/{components → src/lib/components}/app/Lead.svelte +0 -0
- package/{components → src/lib/components}/app/Link.svelte +4 -3
- package/{components → src/lib/components}/app/Options.svelte +5 -4
- package/{components → src/lib/components}/app/Paragraph.svelte +2 -1
- package/{components → src/lib/components}/app/Section.svelte +0 -0
- package/{components → src/lib/components}/app/Table.svelte +0 -0
- package/{components → src/lib/components}/app/TextInput.svelte +12 -9
- package/{components → src/lib/components}/chapter/Atom.svelte +18 -12
- package/src/lib/components/chapter/Block.svelte +42 -0
- package/{components → src/lib/components}/chapter/Callout.svelte +6 -3
- package/{components → src/lib/components}/chapter/CaptionedCode.svelte +21 -13
- package/{components → src/lib/components}/chapter/ChapterBody.svelte +13 -9
- package/{components → src/lib/components}/chapter/Citations.svelte +34 -33
- package/{components → src/lib/components}/chapter/Code.svelte +63 -58
- package/{components → src/lib/components}/chapter/Comment.svelte +30 -18
- package/{components → src/lib/components}/chapter/Definition.svelte +23 -17
- package/{components → src/lib/components}/chapter/Embed.svelte +97 -77
- package/src/lib/components/chapter/ErrorMessage.svelte +12 -0
- package/{components → src/lib/components}/chapter/ExtendedPrism.js +0 -0
- package/{components → src/lib/components}/chapter/Figure.svelte +34 -26
- package/{components → src/lib/components}/chapter/Footnote.svelte +32 -20
- package/{components → src/lib/components}/chapter/Format.svelte +39 -34
- package/{components → src/lib/components}/chapter/InlineCode.svelte +9 -5
- package/{components → src/lib/components}/chapter/Label.svelte +23 -14
- package/{components → src/lib/components}/chapter/Link.svelte +27 -21
- package/{components → src/lib/components}/chapter/List.svelte +5 -3
- package/{components → src/lib/components}/chapter/Marginal.svelte +54 -41
- package/{components → src/lib/components}/chapter/Paragraph.svelte +25 -20
- package/{components → src/lib/components}/chapter/Positioned.svelte +4 -1
- package/{components → src/lib/components}/chapter/Problem.svelte +0 -0
- package/src/lib/components/chapter/Python.svelte +144 -0
- package/{components → src/lib/components}/chapter/Quote.svelte +9 -5
- package/{components → src/lib/components}/chapter/Rule.svelte +4 -1
- package/{components → src/lib/components}/chapter/Table.svelte +11 -7
- package/src/lib/components/chapter/Text.svelte +109 -0
- package/src/lib/components/editor/BookishEditor.svelte +1101 -0
- package/src/lib/components/editor/CalloutEditor.svelte +14 -0
- package/{components → src/lib/components}/editor/CaptionedCodeEditor.svelte +10 -6
- package/src/lib/components/editor/CaretContext.ts +55 -0
- package/{components/editor/CaretState.d.ts → src/lib/components/editor/CaretState.ts} +6 -7
- package/{components/editor/CaretUtilities.d.ts → src/lib/components/editor/CaretUtilities.ts} +1 -0
- package/{components → src/lib/components}/editor/CaretView.svelte +25 -20
- package/src/lib/components/editor/CitationsEditor.svelte +64 -0
- package/{components/editor/Clipboard.d.ts → src/lib/components/editor/Clipboard.ts} +2 -1
- package/{components/editor/Command.d.ts → src/lib/components/editor/Command.ts} +8 -2
- package/{components/editor/Commands.js → src/lib/components/editor/Commands.ts} +730 -315
- package/src/lib/components/editor/ConfirmButton.svelte +51 -0
- package/src/lib/components/editor/DefinitionEditor.svelte +44 -0
- package/src/lib/components/editor/EmbedEditor.svelte +152 -0
- package/{components → src/lib/components}/editor/Icon.svelte +2 -1
- package/{components → src/lib/components}/editor/ImageChooser.svelte +24 -19
- package/src/lib/components/editor/InlineCodeEditor.svelte +16 -0
- package/{components → src/lib/components}/editor/LabelEditor.svelte +14 -9
- package/{components → src/lib/components}/editor/LanguageEditor.svelte +8 -5
- package/src/lib/components/editor/LinkEditor.svelte +110 -0
- package/{components → src/lib/components}/editor/Note.svelte +0 -0
- package/{components → src/lib/components}/editor/Permissions.svelte +43 -36
- package/src/lib/components/editor/PositionEditor.svelte +21 -0
- package/src/lib/components/editor/QuoteEditor.svelte +14 -0
- package/{components → src/lib/components}/editor/Switch.svelte +14 -11
- package/src/lib/components/editor/TableEditor.svelte +14 -0
- package/{components → src/lib/components}/editor/TextEditor.svelte +101 -89
- package/src/lib/components/editor/Toggle.svelte +47 -0
- package/src/lib/components/editor/Toolbar.svelte +297 -0
- package/{components → src/lib/components}/editor/ToolbarGroup.svelte +5 -3
- package/{components → src/lib/components}/editor/ToolbarSpacer.svelte +0 -0
- package/src/lib/components/editor/URLEditor.svelte +15 -0
- package/{components/editor/UndoState.d.ts → src/lib/components/editor/UndoState.ts} +3 -2
- package/{components → src/lib/components}/editor/icons/annotate.svg +0 -0
- package/{components → src/lib/components}/editor/icons/block.svg +0 -0
- package/{components → src/lib/components}/editor/icons/bold.svg +0 -0
- package/{components → src/lib/components}/editor/icons/bullets.svg +0 -0
- package/{components → src/lib/components}/editor/icons/callout.svg +0 -0
- package/{components → src/lib/components}/editor/icons/citation.svg +0 -0
- package/{components → src/lib/components}/editor/icons/clear.svg +0 -0
- package/{components → src/lib/components}/editor/icons/clipboard.svg +0 -0
- package/{components → src/lib/components}/editor/icons/code.svg +0 -0
- package/{components → src/lib/components}/editor/icons/columnafter.svg +0 -0
- package/{components → src/lib/components}/editor/icons/columnbefore.svg +0 -0
- package/{components → src/lib/components}/editor/icons/comment.svg +0 -0
- package/{components → src/lib/components}/editor/icons/copy.svg +0 -0
- package/{components → src/lib/components}/editor/icons/cut.svg +0 -0
- package/{components → src/lib/components}/editor/icons/define.svg +0 -0
- package/{components → src/lib/components}/editor/icons/deletecolumn.svg +0 -0
- package/{components → src/lib/components}/editor/icons/deleterow.svg +0 -0
- package/{components → src/lib/components}/editor/icons/footnote.svg +0 -0
- package/{components → src/lib/components}/editor/icons/header1.svg +0 -0
- package/{components → src/lib/components}/editor/icons/header2.svg +0 -0
- package/{components → src/lib/components}/editor/icons/header3.svg +0 -0
- package/{components → src/lib/components}/editor/icons/home.svg +0 -0
- package/{components → src/lib/components}/editor/icons/indent.svg +0 -0
- package/{components → src/lib/components}/editor/icons/italic.svg +0 -0
- package/{components → src/lib/components}/editor/icons/label.svg +0 -0
- package/{components → src/lib/components}/editor/icons/left.svg +0 -0
- package/{components → src/lib/components}/editor/icons/level.svg +0 -0
- package/{components → src/lib/components}/editor/icons/link.svg +0 -0
- package/{components → src/lib/components}/editor/icons/list.svg +0 -0
- package/{components → src/lib/components}/editor/icons/media.svg +0 -0
- package/{components → src/lib/components}/editor/icons/middle.svg +0 -0
- package/{components → src/lib/components}/editor/icons/numbers.svg +0 -0
- package/{components → src/lib/components}/editor/icons/paragraph.svg +0 -0
- package/{components → src/lib/components}/editor/icons/paste.svg +0 -0
- package/{components → src/lib/components}/editor/icons/quote.svg +0 -0
- package/{components → src/lib/components}/editor/icons/redo.svg +0 -0
- package/{components → src/lib/components}/editor/icons/right.svg +0 -0
- package/{components → src/lib/components}/editor/icons/rowabove.svg +0 -0
- package/{components → src/lib/components}/editor/icons/rowbelow.svg +0 -0
- package/{components → src/lib/components}/editor/icons/rule.svg +0 -0
- package/{components → src/lib/components}/editor/icons/sub.svg +0 -0
- package/{components → src/lib/components}/editor/icons/super.svg +0 -0
- package/{components → src/lib/components}/editor/icons/table.svg +0 -0
- package/{components → src/lib/components}/editor/icons/text.svg +0 -0
- package/{components → src/lib/components}/editor/icons/time.svg +0 -0
- package/{components → src/lib/components}/editor/icons/undo.svg +0 -0
- package/{components → src/lib/components}/editor/icons/unindent.svg +0 -0
- package/{components → src/lib/components}/editor/icons/unlink.svg +0 -0
- package/{components → src/lib/components}/page/Acknowledgements.svelte +19 -10
- package/src/lib/components/page/Authors.svelte +92 -0
- package/src/lib/components/page/BookLoader.svelte +77 -0
- package/src/lib/components/page/BulkReferenceEditor.svelte +86 -0
- package/src/lib/components/page/Chapter.svelte +449 -0
- package/src/lib/components/page/ChapterContext.ts +13 -0
- package/{components → src/lib/components}/page/ChapterNumber.svelte +0 -0
- package/{components → src/lib/components}/page/ChapterTitle.svelte +4 -2
- package/src/lib/components/page/Contexts.ts +176 -0
- package/{components → src/lib/components}/page/DefinitionView.svelte +52 -37
- package/{components → src/lib/components}/page/Description.svelte +15 -7
- package/src/lib/components/page/Edition.svelte +189 -0
- package/src/lib/components/page/EditionLoader.svelte +123 -0
- package/{components → src/lib/components}/page/Editions.svelte +22 -18
- package/{components → src/lib/components}/page/Glossary.svelte +33 -28
- package/{components → src/lib/components}/page/Header.svelte +59 -52
- package/{components → src/lib/components}/page/Index.svelte +48 -41
- package/{components → src/lib/components}/page/Instructions.svelte +2 -1
- package/{components → src/lib/components}/page/License.svelte +17 -9
- package/{components → src/lib/components}/page/Loading.svelte +0 -0
- package/{components → src/lib/components}/page/Media.svelte +44 -27
- package/{components → src/lib/components}/page/MediaPreview.svelte +3 -2
- package/{components → src/lib/components}/page/Muted.svelte +0 -0
- package/{components → src/lib/components}/page/Outline.svelte +140 -110
- package/src/lib/components/page/Page.svelte +94 -0
- package/{components → src/lib/components}/page/PageHeader.svelte +2 -1
- package/{components → src/lib/components}/page/PageParagraph.svelte +0 -0
- package/src/lib/components/page/PossibleChapter.svelte +16 -0
- package/src/lib/components/page/PossibleReference.svelte +14 -0
- package/{components → src/lib/components}/page/Print.svelte +5 -3
- package/{components → src/lib/components}/page/Publish.svelte +59 -52
- package/{components → src/lib/components}/page/Reference.svelte +39 -30
- package/{components → src/lib/components}/page/References.svelte +18 -14
- package/{components → src/lib/components}/page/Rows.svelte +0 -0
- package/src/lib/components/page/Search.svelte +153 -0
- package/{components → src/lib/components}/page/Status.svelte +5 -3
- package/{components → src/lib/components}/page/SubdomainEditor.svelte +16 -13
- package/{components → src/lib/components}/page/TableOfContents.svelte +79 -68
- package/src/lib/components/page/TableOfContentsImage.svelte +22 -0
- package/{components → src/lib/components}/page/TableOfContentsRow.svelte +34 -24
- package/{components → src/lib/components}/page/ThemeEditor.svelte +44 -33
- package/{components → src/lib/components}/page/ThemeEditorPreview.svelte +21 -12
- package/src/lib/components/page/ThemeSetEditor.svelte +21 -0
- package/{components → src/lib/components}/page/ThemeVariableEditor.svelte +18 -14
- package/{components → src/lib/components}/page/Title.svelte +0 -0
- package/{components → src/lib/components}/page/Unknown.svelte +10 -8
- package/{components/page/margins.js → src/lib/components/page/margins.ts} +79 -46
- package/{index.js → src/lib/index.js} +0 -0
- package/src/lib/models/CRUD.ts +469 -0
- package/{models/Firebase.js → src/lib/models/Firebase.ts} +26 -16
- package/src/lib/models/book/Book.ts +283 -0
- package/src/lib/models/book/BookMedia.ts +182 -0
- package/src/lib/models/book/BookSaveStatus.ts +8 -0
- package/src/lib/models/book/Chapter.ts +462 -0
- package/{models/book/ChapterID.js → src/lib/models/book/ChapterID.ts} +1 -0
- package/src/lib/models/book/Definition.ts +2 -0
- package/src/lib/models/book/Edition.ts +1216 -0
- package/src/lib/models/book/Reference.ts +171 -0
- package/{models/book/Schema.js → src/lib/models/book/Schema.ts} +1 -0
- package/{models/book/Theme.js → src/lib/models/book/Theme.ts} +111 -6
- package/{models/book/ThemeColors.d.ts → src/lib/models/book/ThemeColors.ts} +6 -0
- package/{models/book/Words.js → src/lib/models/book/Words.ts} +1 -0
- package/{models/chapter/AtomNode.js → src/lib/models/chapter/AtomNode.ts} +30 -10
- package/{models/chapter/BlockNode.js → src/lib/models/chapter/BlockNode.ts} +80 -47
- package/src/lib/models/chapter/BlocksNode.test.ts +867 -0
- package/{models/chapter/BlocksNode.js → src/lib/models/chapter/BlocksNode.ts} +571 -359
- package/{models/chapter/Bookkeeping.d.ts → src/lib/models/chapter/Bookkeeping.ts} +0 -0
- package/src/lib/models/chapter/CalloutNode.ts +79 -0
- package/{models/chapter/Caret.js → src/lib/models/chapter/Caret.ts} +50 -26
- package/src/lib/models/chapter/ChapterNode.ts +169 -0
- package/{models/chapter/CitationsNode.js → src/lib/models/chapter/CitationsNode.ts} +17 -10
- package/{models/chapter/CodeNode.js → src/lib/models/chapter/CodeNode.ts} +125 -62
- package/src/lib/models/chapter/CommentNode.ts +61 -0
- package/{models/chapter/DefinitionNode.js → src/lib/models/chapter/DefinitionNode.ts} +14 -8
- package/src/lib/models/chapter/Edit.ts +6 -0
- package/src/lib/models/chapter/EmbedNode.ts +257 -0
- package/{models/chapter/ErrorNode.js → src/lib/models/chapter/ErrorNode.ts} +15 -8
- package/src/lib/models/chapter/FootnoteNode.ts +59 -0
- package/src/lib/models/chapter/FormatNode.test.ts +137 -0
- package/{models/chapter/FormatNode.js → src/lib/models/chapter/FormatNode.ts} +443 -262
- package/{models/chapter/InlineCodeNode.js → src/lib/models/chapter/InlineCodeNode.ts} +17 -9
- package/{models/chapter/LabelNode.js → src/lib/models/chapter/LabelNode.ts} +26 -10
- package/{models/chapter/LinkNode.js → src/lib/models/chapter/LinkNode.ts} +12 -7
- package/{models/chapter/ListNode.test.js → src/lib/models/chapter/ListNode.test.ts} +57 -20
- package/{models/chapter/ListNode.js → src/lib/models/chapter/ListNode.ts} +277 -200
- package/src/lib/models/chapter/MetadataNode.ts +44 -0
- package/{models → src/lib/models}/chapter/Node.test.js +0 -0
- package/{models/chapter/Node.js → src/lib/models/chapter/Node.ts} +155 -71
- package/src/lib/models/chapter/ParagraphNode.test.ts +54 -0
- package/{models/chapter/ParagraphNode.js → src/lib/models/chapter/ParagraphNode.ts} +95 -58
- package/{models/chapter/Parser.test.js → src/lib/models/chapter/Parser.test.ts} +7 -0
- package/{models/chapter/Parser.js → src/lib/models/chapter/Parser.ts} +369 -184
- package/{models/chapter/Position.d.ts → src/lib/models/chapter/Position.ts} +0 -0
- package/src/lib/models/chapter/QuoteNode.ts +135 -0
- package/{models/chapter/RootNode.d.ts → src/lib/models/chapter/RootNode.ts} +2 -0
- package/{models/chapter/RuleNode.js → src/lib/models/chapter/RuleNode.ts} +9 -6
- package/{models/chapter/TableNode.test.js → src/lib/models/chapter/TableNode.test.ts} +27 -10
- package/{models/chapter/TableNode.js → src/lib/models/chapter/TableNode.ts} +141 -82
- package/{models/chapter/TextNode.test.js → src/lib/models/chapter/TextNode.test.ts} +2 -0
- package/{models/chapter/TextNode.js → src/lib/models/chapter/TextNode.ts} +117 -65
- package/{util/getSubdomain.js → src/lib/util/getSubdomain.ts} +14 -8
- package/{util/isMobile.js → src/lib/util/isMobile.ts} +1 -0
- package/{util/mineReference.js → src/lib/util/mineReference.ts} +45 -25
- package/{util/scrollToEyeLevel.js → src/lib/util/scrollToEyeLevel.ts} +4 -2
- package/src/params/edition.ts +3 -0
- package/src/routes/+error.svelte +12 -0
- package/src/routes/+layout.svelte +241 -0
- package/src/routes/+page.svelte +43 -0
- package/src/routes/Footer.svelte +0 -0
- package/src/routes/Header.svelte +112 -0
- package/src/routes/[bookid]/+layout.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/+error.svelte +14 -0
- package/src/routes/[bookid]/[[editionid=edition]]/+layout.svelte +7 -0
- package/src/routes/[bookid]/[[editionid=edition]]/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/glossary/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/media/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/print/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/references/+page.svelte +5 -0
- package/src/routes/[bookid]/[[editionid=edition]]/search/+page.svelte +5 -0
- package/src/routes/[bookid]/editions/+page.svelte +20 -0
- package/src/routes/about/+page.svelte +102 -0
- package/src/routes/confirm/+page.svelte +62 -0
- package/src/routes/email/+page.svelte +99 -0
- package/src/routes/login/+page.svelte +66 -0
- package/src/routes/read/+page.svelte +38 -0
- package/src/routes/write/+error.svelte +10 -0
- package/src/routes/write/+layout.svelte +11 -0
- package/src/routes/write/+page.svelte +114 -0
- package/src/routes/write/[bookid]/+layout.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/+layout.svelte +7 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/glossary/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/media/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/print/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/references/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/search/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/theme/+page.svelte +5 -0
- package/src/routes/write/[bookid]/[[editionid=edition]]/unknown/+page.svelte +5 -0
- package/src/routes/write/[bookid]/editions/+page.svelte +20 -0
- package/src/vite-env.d.ts +1 -0
- package/static/icons/favicon.png +0 -0
- package/static/icons/icon.png +0 -0
- package/static/icons/ios-icon.png +0 -0
- package/storage.rules +9 -0
- package/svelte.config.js +19 -0
- package/tsconfig.json +18 -0
- package/tsconfig.node.json +9 -0
- package/vite.config.ts +8 -0
- package/vite.reader.config.ts +32 -0
- package/components/Auth.svelte +0 -55
- package/components/Auth.svelte.d.ts +0 -16
- package/components/Authentication.js +0 -1
- package/components/BookPreview.svelte.d.ts +0 -18
- package/components/External.svelte.d.ts +0 -18
- package/components/Link.svelte +0 -51
- package/components/Link.svelte.d.ts +0 -18
- package/components/app/BookList.svelte.d.ts +0 -18
- package/components/app/Button.svelte.d.ts +0 -22
- package/components/app/Feedback.svelte.d.ts +0 -18
- package/components/app/Head.svelte.d.ts +0 -18
- package/components/app/Large.svelte.d.ts +0 -27
- package/components/app/Lead.svelte.d.ts +0 -27
- package/components/app/Link.svelte.d.ts +0 -20
- package/components/app/Options.svelte.d.ts +0 -19
- package/components/app/Paragraph.svelte.d.ts +0 -18
- package/components/app/Section.svelte.d.ts +0 -27
- package/components/app/Table.svelte.d.ts +0 -27
- package/components/app/TextInput.svelte.d.ts +0 -22
- package/components/chapter/Atom.svelte.d.ts +0 -19
- package/components/chapter/Block.svelte +0 -37
- package/components/chapter/Block.svelte.d.ts +0 -17
- package/components/chapter/Callout.svelte.d.ts +0 -17
- package/components/chapter/CaptionedCode.svelte.d.ts +0 -17
- package/components/chapter/ChapterBody.svelte.d.ts +0 -19
- package/components/chapter/Citations.svelte.d.ts +0 -17
- package/components/chapter/Code.svelte.d.ts +0 -22
- package/components/chapter/Comment.svelte.d.ts +0 -17
- package/components/chapter/Definition.svelte.d.ts +0 -17
- package/components/chapter/Embed.svelte.d.ts +0 -20
- package/components/chapter/ErrorMessage.svelte +0 -9
- package/components/chapter/ErrorMessage.svelte.d.ts +0 -17
- package/components/chapter/ExtendedPrism.d.ts +0 -2
- package/components/chapter/Figure.svelte.d.ts +0 -24
- package/components/chapter/Footnote.svelte.d.ts +0 -19
- package/components/chapter/Format.svelte.d.ts +0 -19
- package/components/chapter/InlineCode.svelte.d.ts +0 -17
- package/components/chapter/Label.svelte.d.ts +0 -17
- package/components/chapter/Link.svelte.d.ts +0 -17
- package/components/chapter/List.svelte.d.ts +0 -17
- package/components/chapter/Marginal.svelte.d.ts +0 -22
- package/components/chapter/Paragraph.svelte.d.ts +0 -18
- package/components/chapter/Positioned.svelte.d.ts +0 -19
- package/components/chapter/Problem.svelte.d.ts +0 -27
- package/components/chapter/Python.svelte +0 -128
- package/components/chapter/Python.svelte.d.ts +0 -18
- package/components/chapter/Quote.svelte.d.ts +0 -17
- package/components/chapter/Rule.svelte.d.ts +0 -17
- package/components/chapter/Table.svelte.d.ts +0 -17
- package/components/chapter/Text.svelte +0 -87
- package/components/chapter/Text.svelte.d.ts +0 -18
- package/components/editor/BookishEditor.svelte +0 -884
- package/components/editor/BookishEditor.svelte.d.ts +0 -25
- package/components/editor/CalloutEditor.svelte +0 -10
- package/components/editor/CalloutEditor.svelte.d.ts +0 -17
- package/components/editor/CaptionedCodeEditor.svelte.d.ts +0 -17
- package/components/editor/CaretContext.d.ts +0 -50
- package/components/editor/CaretContext.js +0 -1
- package/components/editor/CaretState.js +0 -1
- package/components/editor/CaretUtilities.js +0 -1
- package/components/editor/CaretView.svelte.d.ts +0 -25
- package/components/editor/CitationsEditor.svelte +0 -53
- package/components/editor/CitationsEditor.svelte.d.ts +0 -17
- package/components/editor/Clipboard.js +0 -1
- package/components/editor/Command.js +0 -1
- package/components/editor/Commands.d.ts +0 -3
- package/components/editor/ConfirmButton.svelte +0 -49
- package/components/editor/ConfirmButton.svelte.d.ts +0 -19
- package/components/editor/DefinitionEditor.svelte +0 -36
- package/components/editor/DefinitionEditor.svelte.d.ts +0 -17
- package/components/editor/EmbedEditor.svelte +0 -137
- package/components/editor/EmbedEditor.svelte.d.ts +0 -17
- package/components/editor/Icon.svelte.d.ts +0 -16
- package/components/editor/ImageChooser.svelte.d.ts +0 -18
- package/components/editor/InlineCodeEditor.svelte +0 -12
- package/components/editor/InlineCodeEditor.svelte.d.ts +0 -17
- package/components/editor/LabelEditor.svelte.d.ts +0 -17
- package/components/editor/LanguageEditor.svelte.d.ts +0 -17
- package/components/editor/LinkEditor.svelte +0 -100
- package/components/editor/LinkEditor.svelte.d.ts +0 -17
- package/components/editor/Note.svelte.d.ts +0 -27
- package/components/editor/Permissions.svelte.d.ts +0 -20
- package/components/editor/PositionEditor.svelte +0 -17
- package/components/editor/PositionEditor.svelte.d.ts +0 -18
- package/components/editor/QuoteEditor.svelte +0 -10
- package/components/editor/QuoteEditor.svelte.d.ts +0 -17
- package/components/editor/Switch.svelte.d.ts +0 -20
- package/components/editor/TableEditor.svelte +0 -10
- package/components/editor/TableEditor.svelte.d.ts +0 -17
- package/components/editor/TextEditor.svelte.d.ts +0 -24
- package/components/editor/Toggle.svelte +0 -41
- package/components/editor/Toggle.svelte.d.ts +0 -19
- package/components/editor/Toolbar.svelte +0 -249
- package/components/editor/Toolbar.svelte.d.ts +0 -17
- package/components/editor/ToolbarGroup.svelte.d.ts +0 -18
- package/components/editor/ToolbarSpacer.svelte.d.ts +0 -23
- package/components/editor/URLEditor.svelte +0 -13
- package/components/editor/URLEditor.svelte.d.ts +0 -18
- package/components/editor/UndoState.js +0 -1
- package/components/page/Acknowledgements.svelte.d.ts +0 -14
- package/components/page/Authors.svelte +0 -85
- package/components/page/Authors.svelte.d.ts +0 -21
- package/components/page/BookLoader.svelte +0 -59
- package/components/page/BookLoader.svelte.d.ts +0 -16
- package/components/page/BulkReferenceEditor.svelte +0 -63
- package/components/page/BulkReferenceEditor.svelte.d.ts +0 -14
- package/components/page/Chapter.svelte +0 -392
- package/components/page/Chapter.svelte.d.ts +0 -18
- package/components/page/ChapterContext.d.ts +0 -10
- package/components/page/ChapterContext.js +0 -1
- package/components/page/ChapterNumber.svelte.d.ts +0 -27
- package/components/page/ChapterTitle.svelte.d.ts +0 -18
- package/components/page/Contexts.d.ts +0 -47
- package/components/page/Contexts.js +0 -133
- package/components/page/DefinitionView.svelte.d.ts +0 -18
- package/components/page/Description.svelte.d.ts +0 -14
- package/components/page/Edition.svelte +0 -161
- package/components/page/Edition.svelte.d.ts +0 -20
- package/components/page/EditionLoader.svelte +0 -99
- package/components/page/EditionLoader.svelte.d.ts +0 -18
- package/components/page/Editions.svelte.d.ts +0 -14
- package/components/page/Glossary.svelte.d.ts +0 -14
- package/components/page/Header.svelte.d.ts +0 -29
- package/components/page/Index.svelte.d.ts +0 -14
- package/components/page/Instructions.svelte.d.ts +0 -18
- package/components/page/License.svelte.d.ts +0 -14
- package/components/page/Loading.svelte.d.ts +0 -23
- package/components/page/Media.svelte.d.ts +0 -14
- package/components/page/MediaPreview.svelte.d.ts +0 -19
- package/components/page/Muted.svelte.d.ts +0 -27
- package/components/page/Outline.svelte.d.ts +0 -19
- package/components/page/Page.svelte +0 -84
- package/components/page/Page.svelte.d.ts +0 -19
- package/components/page/PageHeader.svelte.d.ts +0 -18
- package/components/page/PageParagraph.svelte.d.ts +0 -27
- package/components/page/PossibleChapter.svelte +0 -14
- package/components/page/PossibleChapter.svelte.d.ts +0 -14
- package/components/page/PossibleReference.svelte +0 -11
- package/components/page/PossibleReference.svelte.d.ts +0 -18
- package/components/page/Print.svelte.d.ts +0 -14
- package/components/page/Publish.svelte.d.ts +0 -14
- package/components/page/Reference.svelte.d.ts +0 -17
- package/components/page/References.svelte.d.ts +0 -14
- package/components/page/Rows.svelte.d.ts +0 -27
- package/components/page/Search.svelte +0 -133
- package/components/page/Search.svelte.d.ts +0 -14
- package/components/page/Status.svelte.d.ts +0 -14
- package/components/page/SubdomainEditor.svelte.d.ts +0 -14
- package/components/page/TableOfContents.svelte.d.ts +0 -14
- package/components/page/TableOfContentsImage.svelte +0 -18
- package/components/page/TableOfContentsImage.svelte.d.ts +0 -16
- package/components/page/TableOfContentsRow.svelte.d.ts +0 -24
- package/components/page/ThemeEditor.svelte.d.ts +0 -14
- package/components/page/ThemeEditorPreview.svelte.d.ts +0 -17
- package/components/page/ThemeSetEditor.svelte +0 -19
- package/components/page/ThemeSetEditor.svelte.d.ts +0 -18
- package/components/page/ThemeVariableEditor.svelte.d.ts +0 -18
- package/components/page/Title.svelte.d.ts +0 -27
- package/components/page/Unknown.svelte.d.ts +0 -16
- package/components/page/margins.d.ts +0 -2
- package/index.d.ts +0 -15
- package/models/CRUD.d.ts +0 -27
- package/models/CRUD.js +0 -262
- package/models/Firebase.d.ts +0 -5
- package/models/book/Book.d.ts +0 -61
- package/models/book/Book.js +0 -135
- package/models/book/BookMedia.d.ts +0 -23
- package/models/book/BookMedia.js +0 -108
- package/models/book/BookSaveStatus.d.ts +0 -7
- package/models/book/BookSaveStatus.js +0 -8
- package/models/book/Chapter.d.ts +0 -81
- package/models/book/Chapter.js +0 -212
- package/models/book/ChapterID.d.ts +0 -10
- package/models/book/Definition.d.ts +0 -6
- package/models/book/Definition.js +0 -1
- package/models/book/Edition.d.ts +0 -139
- package/models/book/Edition.js +0 -620
- package/models/book/Reference.d.ts +0 -24
- package/models/book/Reference.js +0 -78
- package/models/book/Schema.d.ts +0 -174
- package/models/book/Theme.d.ts +0 -113
- package/models/book/ThemeColors.js +0 -1
- package/models/book/Words.d.ts +0 -2
- package/models/chapter/AtomNode.d.ts +0 -18
- package/models/chapter/BlockNode.d.ts +0 -20
- package/models/chapter/BlocksNode.d.ts +0 -50
- package/models/chapter/BlocksNode.test.d.ts +0 -1
- package/models/chapter/BlocksNode.test.js +0 -568
- package/models/chapter/Bookkeeping.js +0 -1
- package/models/chapter/CalloutNode.d.ts +0 -17
- package/models/chapter/CalloutNode.js +0 -58
- package/models/chapter/Caret.d.ts +0 -23
- package/models/chapter/ChapterNode.d.ts +0 -34
- package/models/chapter/ChapterNode.js +0 -117
- package/models/chapter/CitationsNode.d.ts +0 -16
- package/models/chapter/CodeNode.d.ts +0 -35
- package/models/chapter/CommentNode.d.ts +0 -18
- package/models/chapter/CommentNode.js +0 -48
- package/models/chapter/DefinitionNode.d.ts +0 -12
- package/models/chapter/Edit.d.ts +0 -7
- package/models/chapter/Edit.js +0 -1
- package/models/chapter/EmbedNode.d.ts +0 -45
- package/models/chapter/EmbedNode.js +0 -168
- package/models/chapter/ErrorNode.d.ts +0 -17
- package/models/chapter/FootnoteNode.d.ts +0 -18
- package/models/chapter/FootnoteNode.js +0 -47
- package/models/chapter/FormatNode.d.ts +0 -60
- package/models/chapter/FormatNode.test.d.ts +0 -1
- package/models/chapter/FormatNode.test.js +0 -96
- package/models/chapter/InlineCodeNode.d.ts +0 -12
- package/models/chapter/LabelNode.d.ts +0 -17
- package/models/chapter/LinkNode.d.ts +0 -12
- package/models/chapter/ListNode.d.ts +0 -51
- package/models/chapter/ListNode.test.d.ts +0 -1
- package/models/chapter/MetadataNode.d.ts +0 -17
- package/models/chapter/MetadataNode.js +0 -32
- package/models/chapter/Node.d.ts +0 -38
- package/models/chapter/Node.test.d.ts +0 -1
- package/models/chapter/ParagraphNode.d.ts +0 -33
- package/models/chapter/ParagraphNode.test.d.ts +0 -1
- package/models/chapter/ParagraphNode.test.js +0 -30
- package/models/chapter/Parser.d.ts +0 -75
- package/models/chapter/Parser.test.d.ts +0 -1
- package/models/chapter/Position.js +0 -1
- package/models/chapter/QuoteNode.d.ts +0 -25
- package/models/chapter/QuoteNode.js +0 -99
- package/models/chapter/RootNode.js +0 -1
- package/models/chapter/RuleNode.d.ts +0 -15
- package/models/chapter/TableNode.d.ts +0 -37
- package/models/chapter/TableNode.test.d.ts +0 -1
- package/models/chapter/TextNode.d.ts +0 -36
- package/models/chapter/TextNode.test.d.ts +0 -1
- package/util/getSubdomain.d.ts +0 -3
- package/util/isMobile.d.ts +0 -2
- package/util/mineReference.d.ts +0 -4
- package/util/scrollToEyeLevel.d.ts +0 -2
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
<script>import URLEditor from './URLEditor.svelte';
|
|
2
|
-
import { getChapter, getEdition } from '../page/Contexts';
|
|
3
|
-
import Icon from './Icon.svelte';
|
|
4
|
-
import Button from '../app/Button.svelte';
|
|
5
|
-
import UnlinkIcon from './icons/unlink.svg?raw';
|
|
6
|
-
import Options from '../app/Options.svelte';
|
|
7
|
-
import { getCaret } from '../page/Contexts';
|
|
8
|
-
export let link;
|
|
9
|
-
let caret = getCaret();
|
|
10
|
-
let edition = getEdition();
|
|
11
|
-
let chapter = getChapter();
|
|
12
|
-
$: url = link.getMeta();
|
|
13
|
-
function saveEdit(value) {
|
|
14
|
-
$caret?.edit(link, link.withMeta(value));
|
|
15
|
-
}
|
|
16
|
-
function isValidURL(url) {
|
|
17
|
-
// Is it a valid URL?
|
|
18
|
-
try {
|
|
19
|
-
let test = new URL(url);
|
|
20
|
-
if (test.protocol === 'http:' || test.protocol === 'https:')
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
catch (_) { }
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
function validate(urlOrChapter) {
|
|
27
|
-
if (urlOrChapter.length === 0)
|
|
28
|
-
return "link URL can't be empty";
|
|
29
|
-
if ($edition === undefined)
|
|
30
|
-
return;
|
|
31
|
-
if (isValidURL(urlOrChapter))
|
|
32
|
-
return;
|
|
33
|
-
// If not, is it a valid chapterID?
|
|
34
|
-
if ($edition.hasChapter(urlOrChapter))
|
|
35
|
-
return;
|
|
36
|
-
// If not, is it a valid chapterID:label?
|
|
37
|
-
const [chapterID, labelID] = urlOrChapter.split(':');
|
|
38
|
-
if (chapterID === undefined || labelID === undefined)
|
|
39
|
-
return;
|
|
40
|
-
// The chapter ID is optional; if it's missing, it refers to this chapter.
|
|
41
|
-
const correspondingChapter = chapterID === '' && $chapter
|
|
42
|
-
? $chapter.chapter.getAST($edition)
|
|
43
|
-
: $edition?.getChapter(chapterID)?.getAST($edition);
|
|
44
|
-
if (correspondingChapter === undefined)
|
|
45
|
-
return 'Not a valid URL or chapter.';
|
|
46
|
-
if (!correspondingChapter.hasLabel(labelID))
|
|
47
|
-
return 'Not a valid chapter label.';
|
|
48
|
-
}
|
|
49
|
-
let options = [];
|
|
50
|
-
$: {
|
|
51
|
-
options = [];
|
|
52
|
-
// Add an empty option.
|
|
53
|
-
options.push(['External link', url.startsWith('http') ? url : '']);
|
|
54
|
-
// Add an option for each chapter and it's labels.
|
|
55
|
-
if ($edition) {
|
|
56
|
-
for (const chap of $edition?.getChapters() ?? []) {
|
|
57
|
-
options.push([`Chapter: ${chap.getTitle()}`, chap.getID()]);
|
|
58
|
-
for (const label of chap.getAST($edition)?.getLabels() ?? [])
|
|
59
|
-
options.push([
|
|
60
|
-
chap.getTitle() + ': ' + label.getMeta(),
|
|
61
|
-
`${chap.getID()}:${label.getMeta()}`,
|
|
62
|
-
]);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
</script>
|
|
67
|
-
|
|
68
|
-
<span>
|
|
69
|
-
<Button
|
|
70
|
-
tooltip="remove link"
|
|
71
|
-
command={() => {
|
|
72
|
-
if ($caret?.context?.format) {
|
|
73
|
-
const newFormat = $caret.context.format.withSegmentReplaced(
|
|
74
|
-
link,
|
|
75
|
-
link.getText()
|
|
76
|
-
);
|
|
77
|
-
if (newFormat) $caret.edit($caret.context.format, newFormat);
|
|
78
|
-
}
|
|
79
|
-
}}
|
|
80
|
-
>
|
|
81
|
-
<Icon icon={UnlinkIcon} />
|
|
82
|
-
</Button>
|
|
83
|
-
<Options
|
|
84
|
-
{options}
|
|
85
|
-
changed={(value) => {
|
|
86
|
-
saveEdit(value);
|
|
87
|
-
url = value;
|
|
88
|
-
}}
|
|
89
|
-
value={url}
|
|
90
|
-
label="link type"
|
|
91
|
-
/>
|
|
92
|
-
<URLEditor
|
|
93
|
-
{url}
|
|
94
|
-
validator={validate}
|
|
95
|
-
edit={(url) => {
|
|
96
|
-
saveEdit(url);
|
|
97
|
-
return undefined;
|
|
98
|
-
}}
|
|
99
|
-
/>
|
|
100
|
-
</span>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type LinkNode from '../../models/chapter/LinkNode';
|
|
3
|
-
declare const __propDef: {
|
|
4
|
-
props: {
|
|
5
|
-
link: LinkNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type LinkEditorProps = typeof __propDef.props;
|
|
13
|
-
export type LinkEditorEvents = typeof __propDef.events;
|
|
14
|
-
export type LinkEditorSlots = typeof __propDef.slots;
|
|
15
|
-
export default class LinkEditor extends SvelteComponentTyped<LinkEditorProps, LinkEditorEvents, LinkEditorSlots> {
|
|
16
|
-
}
|
|
17
|
-
export {};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} NoteProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} NoteEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} NoteSlots */
|
|
4
|
-
export default class Note extends SvelteComponentTyped<{
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {
|
|
9
|
-
default: {};
|
|
10
|
-
}> {
|
|
11
|
-
}
|
|
12
|
-
export type NoteProps = typeof __propDef.props;
|
|
13
|
-
export type NoteEvents = typeof __propDef.events;
|
|
14
|
-
export type NoteSlots = 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 {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
declare const __propDef: {
|
|
3
|
-
props: {
|
|
4
|
-
uids: string[];
|
|
5
|
-
inheriteduids: string[];
|
|
6
|
-
writable: boolean;
|
|
7
|
-
atleastone: boolean;
|
|
8
|
-
change: (uids: string[]) => void;
|
|
9
|
-
};
|
|
10
|
-
events: {
|
|
11
|
-
[evt: string]: CustomEvent<any>;
|
|
12
|
-
};
|
|
13
|
-
slots: {};
|
|
14
|
-
};
|
|
15
|
-
export type PermissionsProps = typeof __propDef.props;
|
|
16
|
-
export type PermissionsEvents = typeof __propDef.events;
|
|
17
|
-
export type PermissionsSlots = typeof __propDef.slots;
|
|
18
|
-
export default class Permissions extends SvelteComponentTyped<PermissionsProps, PermissionsEvents, PermissionsSlots> {
|
|
19
|
-
}
|
|
20
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<script>import Switch from './Switch.svelte';
|
|
2
|
-
import LeftIcon from './icons/left.svg?raw';
|
|
3
|
-
import MiddleIcon from './icons/middle.svg?raw';
|
|
4
|
-
import RightIcon from './icons/right.svg?raw';
|
|
5
|
-
export let value;
|
|
6
|
-
export let edit;
|
|
7
|
-
function editAsString(newValue) {
|
|
8
|
-
edit(newValue);
|
|
9
|
-
}
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<Switch
|
|
13
|
-
options={['<', '|', '>']}
|
|
14
|
-
icons={{ '<': LeftIcon, '|': MiddleIcon, '>': RightIcon }}
|
|
15
|
-
{value}
|
|
16
|
-
edit={editAsString}
|
|
17
|
-
/>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type Position from '../../models/chapter/Position';
|
|
3
|
-
declare const __propDef: {
|
|
4
|
-
props: {
|
|
5
|
-
value: string;
|
|
6
|
-
edit: (newValue: Position) => void;
|
|
7
|
-
};
|
|
8
|
-
events: {
|
|
9
|
-
[evt: string]: CustomEvent<any>;
|
|
10
|
-
};
|
|
11
|
-
slots: {};
|
|
12
|
-
};
|
|
13
|
-
export type PositionEditorProps = typeof __propDef.props;
|
|
14
|
-
export type PositionEditorEvents = typeof __propDef.events;
|
|
15
|
-
export type PositionEditorSlots = typeof __propDef.slots;
|
|
16
|
-
export default class PositionEditor extends SvelteComponentTyped<PositionEditorProps, PositionEditorEvents, PositionEditorSlots> {
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<script>import { getCaret } from '../page/Contexts';
|
|
2
|
-
import PositionEditor from './PositionEditor.svelte';
|
|
3
|
-
export let quote;
|
|
4
|
-
let caret = getCaret();
|
|
5
|
-
</script>
|
|
6
|
-
|
|
7
|
-
<PositionEditor
|
|
8
|
-
value={quote.getPosition()}
|
|
9
|
-
edit={(position) => $caret?.edit(quote, quote.withPosition(position))}
|
|
10
|
-
/>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type QuoteNode from '../../models/chapter/QuoteNode';
|
|
3
|
-
declare const __propDef: {
|
|
4
|
-
props: {
|
|
5
|
-
quote: QuoteNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type QuoteEditorProps = typeof __propDef.props;
|
|
13
|
-
export type QuoteEditorEvents = typeof __propDef.events;
|
|
14
|
-
export type QuoteEditorSlots = typeof __propDef.slots;
|
|
15
|
-
export default class QuoteEditor extends SvelteComponentTyped<QuoteEditorProps, QuoteEditorEvents, QuoteEditorSlots> {
|
|
16
|
-
}
|
|
17
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
declare const __propDef: {
|
|
3
|
-
props: {
|
|
4
|
-
options: string[];
|
|
5
|
-
icons?: Record<string, string> | undefined;
|
|
6
|
-
value: string;
|
|
7
|
-
enabled?: boolean | undefined;
|
|
8
|
-
edit: (newValue: string) => void;
|
|
9
|
-
};
|
|
10
|
-
events: {
|
|
11
|
-
[evt: string]: CustomEvent<any>;
|
|
12
|
-
};
|
|
13
|
-
slots: {};
|
|
14
|
-
};
|
|
15
|
-
export type SwitchProps = typeof __propDef.props;
|
|
16
|
-
export type SwitchEvents = typeof __propDef.events;
|
|
17
|
-
export type SwitchSlots = typeof __propDef.slots;
|
|
18
|
-
export default class Switch extends SvelteComponentTyped<SwitchProps, SwitchEvents, SwitchSlots> {
|
|
19
|
-
}
|
|
20
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<script>import { getCaret } from '../page/Contexts';
|
|
2
|
-
import PositionEditor from './PositionEditor.svelte';
|
|
3
|
-
export let table;
|
|
4
|
-
let caret = getCaret();
|
|
5
|
-
</script>
|
|
6
|
-
|
|
7
|
-
<PositionEditor
|
|
8
|
-
value={table.getPosition()}
|
|
9
|
-
edit={(position) => $caret?.edit(table, table.withPosition(position))}
|
|
10
|
-
/>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type TableNode from '../../models/chapter/TableNode';
|
|
3
|
-
declare const __propDef: {
|
|
4
|
-
props: {
|
|
5
|
-
table: TableNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type TableEditorProps = typeof __propDef.props;
|
|
13
|
-
export type TableEditorEvents = typeof __propDef.events;
|
|
14
|
-
export type TableEditorSlots = typeof __propDef.slots;
|
|
15
|
-
export default class TableEditor extends SvelteComponentTyped<TableEditorProps, TableEditorEvents, TableEditorSlots> {
|
|
16
|
-
}
|
|
17
|
-
export {};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
declare const __propDef: {
|
|
3
|
-
props: {
|
|
4
|
-
text: string;
|
|
5
|
-
label: string;
|
|
6
|
-
placeholder: string;
|
|
7
|
-
valid: (text: string) => string | undefined;
|
|
8
|
-
save: (text: string) => Promise<void> | undefined | void | string;
|
|
9
|
-
saveOnExit?: boolean | undefined;
|
|
10
|
-
width?: number | undefined;
|
|
11
|
-
clip?: boolean | undefined;
|
|
12
|
-
move?: ((el: HTMLElement, direction: -1 | 1) => void) | undefined;
|
|
13
|
-
};
|
|
14
|
-
events: {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
};
|
|
17
|
-
slots: {};
|
|
18
|
-
};
|
|
19
|
-
export type TextEditorProps = typeof __propDef.props;
|
|
20
|
-
export type TextEditorEvents = typeof __propDef.events;
|
|
21
|
-
export type TextEditorSlots = typeof __propDef.slots;
|
|
22
|
-
export default class TextEditor extends SvelteComponentTyped<TextEditorProps, TextEditorEvents, TextEditorSlots> {
|
|
23
|
-
}
|
|
24
|
-
export {};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<script>var Status;
|
|
2
|
-
(function (Status) {
|
|
3
|
-
Status[Status["Viewing"] = 0] = "Viewing";
|
|
4
|
-
Status[Status["Saving"] = 1] = "Saving";
|
|
5
|
-
Status[Status["Error"] = 2] = "Error";
|
|
6
|
-
})(Status || (Status = {}));
|
|
7
|
-
export let on;
|
|
8
|
-
export let save;
|
|
9
|
-
let saving = Status.Viewing;
|
|
10
|
-
function toggle() {
|
|
11
|
-
saving = Status.Saving;
|
|
12
|
-
const promise = save(!on);
|
|
13
|
-
if (promise === undefined) {
|
|
14
|
-
saving = Status.Viewing;
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
promise
|
|
18
|
-
.then(() => (saving = Status.Viewing))
|
|
19
|
-
.catch(() => (saving = Status.Error));
|
|
20
|
-
}
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<div
|
|
24
|
-
class={`bookish-app-interactive ${
|
|
25
|
-
saving === Status.Saving ? ' bookish-text-editor-saving' : ''
|
|
26
|
-
} ${saving === Status.Error ? ' bookish-text-editor-error' : ''}`}
|
|
27
|
-
tabIndex="0"
|
|
28
|
-
role="switch"
|
|
29
|
-
aria-checked={on}
|
|
30
|
-
on:keydown={(event) =>
|
|
31
|
-
event.key === 'Enter' || event.key === 'Space' ? toggle() : undefined}
|
|
32
|
-
on:click={toggle}
|
|
33
|
-
>
|
|
34
|
-
<slot />
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<style>
|
|
38
|
-
.bookish-app-interactive {
|
|
39
|
-
cursor: pointer;
|
|
40
|
-
}
|
|
41
|
-
</style>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
declare const __propDef: {
|
|
3
|
-
props: {
|
|
4
|
-
on: boolean;
|
|
5
|
-
save: (set: boolean) => Promise<void> | void;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {
|
|
11
|
-
default: {};
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
export type ToggleProps = typeof __propDef.props;
|
|
15
|
-
export type ToggleEvents = typeof __propDef.events;
|
|
16
|
-
export type ToggleSlots = typeof __propDef.slots;
|
|
17
|
-
export default class Toggle extends SvelteComponentTyped<ToggleProps, ToggleEvents, ToggleSlots> {
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
<script>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
|
-
const keyLabels = {
|
|
45
|
-
Digit0: '0',
|
|
46
|
-
Digit1: '1',
|
|
47
|
-
Digit2: '2',
|
|
48
|
-
Digit3: '3',
|
|
49
|
-
ArrowDown: '↓',
|
|
50
|
-
ArrowUp: '↑',
|
|
51
|
-
ArrowLeft: '←',
|
|
52
|
-
ArrowRight: '→',
|
|
53
|
-
Backspace: '\u232B',
|
|
54
|
-
};
|
|
55
|
-
const categoryOrder = {
|
|
56
|
-
navigation: 1,
|
|
57
|
-
selection: 2,
|
|
58
|
-
text: 3,
|
|
59
|
-
clipboard: 4,
|
|
60
|
-
annotation: 5,
|
|
61
|
-
paragraph: 6,
|
|
62
|
-
level: 7,
|
|
63
|
-
list: 8,
|
|
64
|
-
table: 9,
|
|
65
|
-
block: 10,
|
|
66
|
-
};
|
|
67
|
-
const categoryIcons = {
|
|
68
|
-
text: TextIcon,
|
|
69
|
-
clipboard: ClipboardIcon,
|
|
70
|
-
annotation: AnnotateIcon,
|
|
71
|
-
level: LevelIcon,
|
|
72
|
-
block: BlockIcon,
|
|
73
|
-
list: ListIcon,
|
|
74
|
-
table: TableIcon,
|
|
75
|
-
history: TimeIcon,
|
|
76
|
-
};
|
|
77
|
-
export let caret;
|
|
78
|
-
$: context = caret.context;
|
|
79
|
-
$: chapter = context?.root;
|
|
80
|
-
let element = null;
|
|
81
|
-
let categories = undefined;
|
|
82
|
-
let commandsByCategory = {};
|
|
83
|
-
let metaNode = undefined;
|
|
84
|
-
let calloutNode = undefined;
|
|
85
|
-
let quoteNode = undefined;
|
|
86
|
-
let embedNode = undefined;
|
|
87
|
-
let tableNode = undefined;
|
|
88
|
-
function getShortcutDescription(command) {
|
|
89
|
-
const macOS = navigator.userAgent.indexOf('Mac') >= 0;
|
|
90
|
-
const controlSymbol = macOS ? '\u2318' : 'Ctrl+';
|
|
91
|
-
const altSymbol = macOS ? '\u2325' : 'Alt+';
|
|
92
|
-
const key = command.key
|
|
93
|
-
? Array.isArray(command.key)
|
|
94
|
-
? command.key.join('/')
|
|
95
|
-
: command.key
|
|
96
|
-
: command.code
|
|
97
|
-
? command.code
|
|
98
|
-
: 'any';
|
|
99
|
-
const keyLabel = (typeof key === 'string'
|
|
100
|
-
? key in keyLabels
|
|
101
|
-
? keyLabels[key]
|
|
102
|
-
: key
|
|
103
|
-
: '—').toLocaleUpperCase();
|
|
104
|
-
return `${command.control ? controlSymbol : ''}${command.alt ? altSymbol : ''}${command.shift ? '\u21E7' : ''}${keyLabel}`;
|
|
105
|
-
}
|
|
106
|
-
// Update the above when the dependencies below change.
|
|
107
|
-
$: {
|
|
108
|
-
if (context !== undefined && chapter) {
|
|
109
|
-
// Filter the commands by those interactive with a mouse and active.
|
|
110
|
-
const visible = commands.filter((command) => command.visible === true ||
|
|
111
|
-
(context &&
|
|
112
|
-
command.visible instanceof Function &&
|
|
113
|
-
command.visible(context)));
|
|
114
|
-
// Extract the active categories and sort them
|
|
115
|
-
categories = Array.from(new Set(commands.map((command) => command.category))).sort((a, b) => a in categoryOrder && b in categoryOrder
|
|
116
|
-
? categoryOrder[a] - categoryOrder[b]
|
|
117
|
-
: 0);
|
|
118
|
-
// Make a list for each category of commands
|
|
119
|
-
commandsByCategory = {};
|
|
120
|
-
categories.forEach((cat) => {
|
|
121
|
-
if (commandsByCategory)
|
|
122
|
-
commandsByCategory[cat] = visible.filter((command) => command.category === cat);
|
|
123
|
-
});
|
|
124
|
-
const caretNode = context.start.node;
|
|
125
|
-
metaNode =
|
|
126
|
-
caretNode instanceof AtomNode
|
|
127
|
-
? caretNode
|
|
128
|
-
: caretNode instanceof TextNode
|
|
129
|
-
? caretNode.getParent(chapter)
|
|
130
|
-
: undefined;
|
|
131
|
-
calloutNode = caretNode.getClosestParentMatching(chapter, (p) => p instanceof CalloutNode);
|
|
132
|
-
quoteNode = caretNode.getClosestParentMatching(chapter, (p) => p instanceof QuoteNode);
|
|
133
|
-
embedNode =
|
|
134
|
-
caretNode instanceof EmbedNode
|
|
135
|
-
? caretNode
|
|
136
|
-
: caretNode.getClosestParentMatching(chapter, (p) => p instanceof EmbedNode);
|
|
137
|
-
tableNode = caretNode.getClosestParentMatching(chapter, (p) => p instanceof TableNode);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
function handleKeyPress(event) {
|
|
141
|
-
// Return focus to the editor if someone presses an unhandled enter
|
|
142
|
-
if ((event.key === 'Escape' || event.key === 'Enter') && element) {
|
|
143
|
-
const editor = element.closest('.bookish-editor');
|
|
144
|
-
if (editor instanceof HTMLElement) {
|
|
145
|
-
event.stopPropagation();
|
|
146
|
-
editor.focus();
|
|
147
|
-
}
|
|
148
|
-
return true;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
</script>
|
|
152
|
-
|
|
153
|
-
{#if chapter}
|
|
154
|
-
<section
|
|
155
|
-
class="bookish-editor-toolbar"
|
|
156
|
-
bind:this={element}
|
|
157
|
-
on:keypress={handleKeyPress}
|
|
158
|
-
on:keydown={handleKeyPress}
|
|
159
|
-
on:mousedown|stopPropagation={() => element?.focus()}
|
|
160
|
-
tabIndex="0"
|
|
161
|
-
transition:slide={{ duration: 200 }}
|
|
162
|
-
>
|
|
163
|
-
{#if context && categories}
|
|
164
|
-
{#each categories as cat}
|
|
165
|
-
{#if commandsByCategory[cat].length > 0}
|
|
166
|
-
<ToolbarGroup
|
|
167
|
-
icon={cat in categoryIcons
|
|
168
|
-
? categoryIcons[cat]
|
|
169
|
-
: cat.charAt(0).toUpperCase() + cat.slice(1)}
|
|
170
|
-
>
|
|
171
|
-
{#each commandsByCategory[cat] as command}
|
|
172
|
-
<Button
|
|
173
|
-
disabled={command.active === false ||
|
|
174
|
-
(command.active instanceof Function &&
|
|
175
|
-
command.active.call(
|
|
176
|
-
undefined,
|
|
177
|
-
context
|
|
178
|
-
) === false)}
|
|
179
|
-
tooltip={command.description +
|
|
180
|
-
' ' +
|
|
181
|
-
getShortcutDescription(command)}
|
|
182
|
-
tabIndex="0"
|
|
183
|
-
command={() =>
|
|
184
|
-
caret?.executor.call(
|
|
185
|
-
undefined,
|
|
186
|
-
command,
|
|
187
|
-
''
|
|
188
|
-
)}
|
|
189
|
-
>
|
|
190
|
-
<Icon icon={command.icon} />
|
|
191
|
-
</Button>
|
|
192
|
-
{/each}
|
|
193
|
-
{#if cat === 'table' && tableNode}
|
|
194
|
-
<TableEditor table={tableNode} />
|
|
195
|
-
{/if}
|
|
196
|
-
</ToolbarGroup>
|
|
197
|
-
{/if}
|
|
198
|
-
{/each}
|
|
199
|
-
{/if}
|
|
200
|
-
{#if metaNode instanceof LinkNode}<ToolbarGroup icon={LinkIcon}
|
|
201
|
-
><LinkEditor link={metaNode} /></ToolbarGroup
|
|
202
|
-
>
|
|
203
|
-
{:else if metaNode instanceof LabelNode}<ToolbarGroup icon={LabelIcon}
|
|
204
|
-
><LabelEditor label={metaNode} /></ToolbarGroup
|
|
205
|
-
>
|
|
206
|
-
{:else if metaNode instanceof InlineCodeNode}<ToolbarGroup
|
|
207
|
-
icon={CodeIcon}
|
|
208
|
-
><InlineCodeEditor code={metaNode} /></ToolbarGroup
|
|
209
|
-
>
|
|
210
|
-
{:else if metaNode instanceof CitationsNode}<ToolbarGroup
|
|
211
|
-
icon={CitationIcon}
|
|
212
|
-
><CitationsEditor citations={metaNode} /></ToolbarGroup
|
|
213
|
-
>
|
|
214
|
-
{:else if metaNode instanceof DefinitionNode}<ToolbarGroup
|
|
215
|
-
icon={DefineIcon}
|
|
216
|
-
><DefinitionEditor definition={metaNode} /></ToolbarGroup
|
|
217
|
-
>
|
|
218
|
-
{:else if metaNode instanceof CodeNode && context}<ToolbarGroup
|
|
219
|
-
icon={CodeIcon}
|
|
220
|
-
><CaptionedCodeEditor code={metaNode} /></ToolbarGroup
|
|
221
|
-
>
|
|
222
|
-
{:else if calloutNode}<ToolbarGroup icon={CalloutIcon}
|
|
223
|
-
><CalloutEditor callout={calloutNode} /></ToolbarGroup
|
|
224
|
-
>
|
|
225
|
-
{:else if quoteNode}<ToolbarGroup icon={QuoteIcon}
|
|
226
|
-
><QuoteEditor quote={quoteNode} /></ToolbarGroup
|
|
227
|
-
>
|
|
228
|
-
{:else if embedNode}<ToolbarGroup icon={MediaIcon}
|
|
229
|
-
><EmbedEditor embed={embedNode} /></ToolbarGroup
|
|
230
|
-
>
|
|
231
|
-
{/if}
|
|
232
|
-
</section>
|
|
233
|
-
{/if}
|
|
234
|
-
|
|
235
|
-
<style>
|
|
236
|
-
.bookish-editor-toolbar {
|
|
237
|
-
display: flex;
|
|
238
|
-
flex-direction: row;
|
|
239
|
-
flex-wrap: wrap;
|
|
240
|
-
align-items: baseline;
|
|
241
|
-
background: var(--bookish-background-color);
|
|
242
|
-
font-family: var(--app-font);
|
|
243
|
-
font-size: var(--app-chrome-font-size);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.bookish-editor-toolbar:focus {
|
|
247
|
-
outline: 2px solid var(--app-interactive-color);
|
|
248
|
-
}
|
|
249
|
-
</style>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import type CaretState from './CaretState';
|
|
3
|
-
declare const __propDef: {
|
|
4
|
-
props: {
|
|
5
|
-
caret: CaretState;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
};
|
|
12
|
-
export type ToolbarProps = typeof __propDef.props;
|
|
13
|
-
export type ToolbarEvents = typeof __propDef.events;
|
|
14
|
-
export type ToolbarSlots = typeof __propDef.slots;
|
|
15
|
-
export default class Toolbar extends SvelteComponentTyped<ToolbarProps, ToolbarEvents, ToolbarSlots> {
|
|
16
|
-
}
|
|
17
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
declare const __propDef: {
|
|
3
|
-
props: {
|
|
4
|
-
icon: string;
|
|
5
|
-
};
|
|
6
|
-
events: {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
};
|
|
9
|
-
slots: {
|
|
10
|
-
default: {};
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export type ToolbarGroupProps = typeof __propDef.props;
|
|
14
|
-
export type ToolbarGroupEvents = typeof __propDef.events;
|
|
15
|
-
export type ToolbarGroupSlots = typeof __propDef.slots;
|
|
16
|
-
export default class ToolbarGroup extends SvelteComponentTyped<ToolbarGroupProps, ToolbarGroupEvents, ToolbarGroupSlots> {
|
|
17
|
-
}
|
|
18
|
-
export {};
|