bookish-press 0.4.47 → 0.4.49
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/components/Auth.svelte +55 -0
- package/components/Auth.svelte.d.ts +16 -0
- package/{src/lib/components/Authentication.ts → components/Authentication.d.ts} +0 -2
- package/components/Authentication.js +1 -0
- package/{src/lib/components → components}/BookPreview.svelte +22 -27
- package/components/BookPreview.svelte.d.ts +18 -0
- package/{src/lib/components → components}/External.svelte +1 -2
- package/components/External.svelte.d.ts +18 -0
- package/components/Link.svelte +51 -0
- package/components/Link.svelte.d.ts +18 -0
- package/{src/lib/components → components}/app/BookList.svelte +3 -6
- package/components/app/BookList.svelte.d.ts +18 -0
- package/{src/lib/components → components}/app/Button.svelte +4 -5
- package/components/app/Button.svelte.d.ts +22 -0
- package/{src/lib/components → components}/app/Feedback.svelte +7 -11
- package/components/app/Feedback.svelte.d.ts +18 -0
- package/{src/lib/components → components}/app/Head.svelte +1 -2
- package/components/app/Head.svelte.d.ts +18 -0
- package/{src/lib/components → components}/app/Large.svelte +0 -0
- package/components/app/Large.svelte.d.ts +27 -0
- package/{src/lib/components → components}/app/Lead.svelte +0 -0
- package/components/app/Lead.svelte.d.ts +27 -0
- package/{src/lib/components → components}/app/Link.svelte +3 -4
- package/components/app/Link.svelte.d.ts +20 -0
- package/{src/lib/components → components}/app/Options.svelte +4 -5
- package/components/app/Options.svelte.d.ts +19 -0
- package/{src/lib/components → components}/app/Paragraph.svelte +1 -2
- package/components/app/Paragraph.svelte.d.ts +18 -0
- package/{src/lib/components → components}/app/Section.svelte +0 -0
- package/components/app/Section.svelte.d.ts +27 -0
- package/{src/lib/components → components}/app/Table.svelte +0 -0
- package/components/app/Table.svelte.d.ts +27 -0
- package/{src/lib/components → components}/app/TextInput.svelte +9 -12
- package/components/app/TextInput.svelte.d.ts +22 -0
- package/{src/lib/components → components}/chapter/Atom.svelte +12 -18
- package/components/chapter/Atom.svelte.d.ts +19 -0
- package/components/chapter/Block.svelte +37 -0
- package/components/chapter/Block.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Callout.svelte +3 -6
- package/components/chapter/Callout.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/CaptionedCode.svelte +13 -21
- package/components/chapter/CaptionedCode.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/ChapterBody.svelte +9 -13
- package/components/chapter/ChapterBody.svelte.d.ts +19 -0
- package/{src/lib/components → components}/chapter/Citations.svelte +33 -34
- package/components/chapter/Citations.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Code.svelte +60 -64
- package/components/chapter/Code.svelte.d.ts +22 -0
- package/{src/lib/components → components}/chapter/Comment.svelte +18 -30
- package/components/chapter/Comment.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Definition.svelte +17 -23
- package/components/chapter/Definition.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Embed.svelte +77 -97
- package/components/chapter/Embed.svelte.d.ts +20 -0
- package/components/chapter/ErrorMessage.svelte +9 -0
- package/components/chapter/ErrorMessage.svelte.d.ts +17 -0
- package/components/chapter/ExtendedPrism.d.ts +2 -0
- package/{src/lib/components → components}/chapter/ExtendedPrism.js +0 -0
- package/{src/lib/components → components}/chapter/Figure.svelte +26 -34
- package/components/chapter/Figure.svelte.d.ts +24 -0
- package/{src/lib/components → components}/chapter/Footnote.svelte +20 -32
- package/components/chapter/Footnote.svelte.d.ts +19 -0
- package/{src/lib/components → components}/chapter/Format.svelte +34 -39
- package/components/chapter/Format.svelte.d.ts +19 -0
- package/{src/lib/components → components}/chapter/InlineCode.svelte +5 -9
- package/components/chapter/InlineCode.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Label.svelte +14 -23
- package/components/chapter/Label.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Link.svelte +21 -27
- package/components/chapter/Link.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/List.svelte +3 -5
- package/components/chapter/List.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Marginal.svelte +41 -54
- package/components/chapter/Marginal.svelte.d.ts +22 -0
- package/{src/lib/components → components}/chapter/Paragraph.svelte +20 -25
- package/components/chapter/Paragraph.svelte.d.ts +18 -0
- package/{src/lib/components → components}/chapter/Positioned.svelte +1 -4
- package/components/chapter/Positioned.svelte.d.ts +19 -0
- package/{src/lib/components → components}/chapter/Problem.svelte +0 -0
- package/components/chapter/Problem.svelte.d.ts +27 -0
- package/components/chapter/Python.svelte +128 -0
- package/components/chapter/Python.svelte.d.ts +18 -0
- package/{src/lib/components → components}/chapter/Quote.svelte +19 -13
- package/components/chapter/Quote.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Rule.svelte +1 -4
- package/components/chapter/Rule.svelte.d.ts +17 -0
- package/{src/lib/components → components}/chapter/Table.svelte +7 -11
- package/components/chapter/Table.svelte.d.ts +17 -0
- package/components/chapter/Text.svelte +87 -0
- package/components/chapter/Text.svelte.d.ts +18 -0
- package/components/editor/BookishEditor.svelte +884 -0
- package/components/editor/BookishEditor.svelte.d.ts +25 -0
- package/components/editor/CalloutEditor.svelte +10 -0
- package/components/editor/CalloutEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/CaptionedCodeEditor.svelte +6 -10
- package/components/editor/CaptionedCodeEditor.svelte.d.ts +17 -0
- package/components/editor/CaretContext.d.ts +50 -0
- package/components/editor/CaretContext.js +1 -0
- package/{src/lib/components/editor/CaretState.ts → components/editor/CaretState.d.ts} +7 -6
- package/components/editor/CaretState.js +1 -0
- package/{src/lib/components/editor/CaretUtilities.ts → components/editor/CaretUtilities.d.ts} +0 -1
- package/components/editor/CaretUtilities.js +1 -0
- package/{src/lib/components → components}/editor/CaretView.svelte +20 -25
- package/components/editor/CaretView.svelte.d.ts +25 -0
- package/components/editor/CitationsEditor.svelte +53 -0
- package/components/editor/CitationsEditor.svelte.d.ts +17 -0
- package/{src/lib/components/editor/Clipboard.ts → components/editor/Clipboard.d.ts} +1 -2
- package/components/editor/Clipboard.js +1 -0
- package/{src/lib/components/editor/Command.ts → components/editor/Command.d.ts} +2 -8
- package/components/editor/Command.js +1 -0
- package/components/editor/Commands.d.ts +3 -0
- package/{src/lib/components/editor/Commands.ts → components/editor/Commands.js} +315 -730
- package/components/editor/ConfirmButton.svelte +49 -0
- package/components/editor/ConfirmButton.svelte.d.ts +19 -0
- package/components/editor/DefinitionEditor.svelte +36 -0
- package/components/editor/DefinitionEditor.svelte.d.ts +17 -0
- package/components/editor/EmbedEditor.svelte +137 -0
- package/components/editor/EmbedEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/Icon.svelte +1 -2
- package/components/editor/Icon.svelte.d.ts +16 -0
- package/{src/lib/components → components}/editor/ImageChooser.svelte +19 -24
- package/components/editor/ImageChooser.svelte.d.ts +18 -0
- package/components/editor/InlineCodeEditor.svelte +12 -0
- package/components/editor/InlineCodeEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/LabelEditor.svelte +9 -14
- package/components/editor/LabelEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/LanguageEditor.svelte +5 -8
- package/components/editor/LanguageEditor.svelte.d.ts +17 -0
- package/components/editor/LinkEditor.svelte +100 -0
- package/components/editor/LinkEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/Note.svelte +0 -0
- package/components/editor/Note.svelte.d.ts +27 -0
- package/{src/lib/components → components}/editor/Permissions.svelte +36 -43
- package/components/editor/Permissions.svelte.d.ts +20 -0
- package/components/editor/PositionEditor.svelte +17 -0
- package/components/editor/PositionEditor.svelte.d.ts +18 -0
- package/components/editor/QuoteEditor.svelte +10 -0
- package/components/editor/QuoteEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/Switch.svelte +11 -14
- package/components/editor/Switch.svelte.d.ts +20 -0
- package/components/editor/TableEditor.svelte +10 -0
- package/components/editor/TableEditor.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/TextEditor.svelte +89 -101
- package/components/editor/TextEditor.svelte.d.ts +24 -0
- package/components/editor/Toggle.svelte +41 -0
- package/components/editor/Toggle.svelte.d.ts +19 -0
- package/components/editor/Toolbar.svelte +249 -0
- package/components/editor/Toolbar.svelte.d.ts +17 -0
- package/{src/lib/components → components}/editor/ToolbarGroup.svelte +3 -5
- package/components/editor/ToolbarGroup.svelte.d.ts +18 -0
- package/{src/lib/components → components}/editor/ToolbarSpacer.svelte +0 -0
- package/components/editor/ToolbarSpacer.svelte.d.ts +23 -0
- package/components/editor/URLEditor.svelte +13 -0
- package/components/editor/URLEditor.svelte.d.ts +18 -0
- package/{src/lib/components/editor/UndoState.ts → components/editor/UndoState.d.ts} +2 -3
- package/components/editor/UndoState.js +1 -0
- package/{src/lib/components → components}/editor/icons/annotate.svg +0 -0
- package/{src/lib/components → components}/editor/icons/block.svg +0 -0
- package/{src/lib/components → components}/editor/icons/bold.svg +0 -0
- package/{src/lib/components → components}/editor/icons/bullets.svg +0 -0
- package/{src/lib/components → components}/editor/icons/callout.svg +0 -0
- package/{src/lib/components → components}/editor/icons/citation.svg +0 -0
- package/{src/lib/components → components}/editor/icons/clear.svg +0 -0
- package/{src/lib/components → components}/editor/icons/clipboard.svg +0 -0
- package/{src/lib/components → components}/editor/icons/code.svg +0 -0
- package/{src/lib/components → components}/editor/icons/columnafter.svg +0 -0
- package/{src/lib/components → components}/editor/icons/columnbefore.svg +0 -0
- package/{src/lib/components → components}/editor/icons/comment.svg +0 -0
- package/{src/lib/components → components}/editor/icons/copy.svg +0 -0
- package/{src/lib/components → components}/editor/icons/cut.svg +0 -0
- package/{src/lib/components → components}/editor/icons/define.svg +0 -0
- package/{src/lib/components → components}/editor/icons/deletecolumn.svg +0 -0
- package/{src/lib/components → components}/editor/icons/deleterow.svg +0 -0
- package/{src/lib/components → components}/editor/icons/footnote.svg +0 -0
- package/{src/lib/components → components}/editor/icons/header1.svg +0 -0
- package/{src/lib/components → components}/editor/icons/header2.svg +0 -0
- package/{src/lib/components → components}/editor/icons/header3.svg +0 -0
- package/{src/lib/components → components}/editor/icons/home.svg +0 -0
- package/{src/lib/components → components}/editor/icons/indent.svg +0 -0
- package/{src/lib/components → components}/editor/icons/italic.svg +0 -0
- package/{src/lib/components → components}/editor/icons/label.svg +0 -0
- package/{src/lib/components → components}/editor/icons/left.svg +0 -0
- package/{src/lib/components → components}/editor/icons/level.svg +0 -0
- package/{src/lib/components → components}/editor/icons/link.svg +0 -0
- package/{src/lib/components → components}/editor/icons/list.svg +0 -0
- package/{src/lib/components → components}/editor/icons/media.svg +0 -0
- package/{src/lib/components → components}/editor/icons/middle.svg +0 -0
- package/{src/lib/components → components}/editor/icons/numbers.svg +0 -0
- package/{src/lib/components → components}/editor/icons/paragraph.svg +0 -0
- package/{src/lib/components → components}/editor/icons/paste.svg +0 -0
- package/{src/lib/components → components}/editor/icons/quote.svg +0 -0
- package/{src/lib/components → components}/editor/icons/redo.svg +0 -0
- package/{src/lib/components → components}/editor/icons/right.svg +0 -0
- package/{src/lib/components → components}/editor/icons/rowabove.svg +0 -0
- package/{src/lib/components → components}/editor/icons/rowbelow.svg +0 -0
- package/{src/lib/components → components}/editor/icons/rule.svg +0 -0
- package/{src/lib/components → components}/editor/icons/sub.svg +0 -0
- package/{src/lib/components → components}/editor/icons/super.svg +0 -0
- package/{src/lib/components → components}/editor/icons/table.svg +0 -0
- package/{src/lib/components → components}/editor/icons/text.svg +0 -0
- package/{src/lib/components → components}/editor/icons/time.svg +0 -0
- package/{src/lib/components → components}/editor/icons/undo.svg +0 -0
- package/{src/lib/components → components}/editor/icons/unindent.svg +0 -0
- package/{src/lib/components → components}/editor/icons/unlink.svg +0 -0
- package/{src/lib/components → components}/page/Acknowledgements.svelte +10 -19
- package/components/page/Acknowledgements.svelte.d.ts +14 -0
- package/components/page/Authors.svelte +85 -0
- package/components/page/Authors.svelte.d.ts +21 -0
- package/components/page/BookLoader.svelte +59 -0
- package/components/page/BookLoader.svelte.d.ts +16 -0
- package/components/page/BulkReferenceEditor.svelte +63 -0
- package/components/page/BulkReferenceEditor.svelte.d.ts +14 -0
- package/components/page/Chapter.svelte +393 -0
- package/components/page/Chapter.svelte.d.ts +18 -0
- package/components/page/ChapterContext.d.ts +10 -0
- package/components/page/ChapterContext.js +1 -0
- package/{src/lib/components → components}/page/ChapterNumber.svelte +0 -0
- package/components/page/ChapterNumber.svelte.d.ts +27 -0
- package/{src/lib/components → components}/page/ChapterTitle.svelte +2 -4
- package/components/page/ChapterTitle.svelte.d.ts +18 -0
- package/components/page/Contexts.d.ts +47 -0
- package/components/page/Contexts.js +133 -0
- package/{src/lib/components → components}/page/DefinitionView.svelte +38 -53
- package/components/page/DefinitionView.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/Description.svelte +7 -15
- package/components/page/Description.svelte.d.ts +14 -0
- package/components/page/Edition.svelte +161 -0
- package/components/page/Edition.svelte.d.ts +20 -0
- package/components/page/EditionLoader.svelte +99 -0
- package/components/page/EditionLoader.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/Editions.svelte +18 -22
- package/components/page/Editions.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Glossary.svelte +28 -33
- package/components/page/Glossary.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Header.svelte +52 -59
- package/components/page/Header.svelte.d.ts +29 -0
- package/{src/lib/components → components}/page/Index.svelte +47 -50
- package/components/page/Index.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Instructions.svelte +1 -2
- package/components/page/Instructions.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/License.svelte +9 -17
- package/components/page/License.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Loading.svelte +0 -0
- package/components/page/Loading.svelte.d.ts +23 -0
- package/{src/lib/components → components}/page/Media.svelte +27 -44
- package/components/page/Media.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/MediaPreview.svelte +2 -3
- package/components/page/MediaPreview.svelte.d.ts +19 -0
- package/{src/lib/components → components}/page/Muted.svelte +0 -0
- package/components/page/Muted.svelte.d.ts +27 -0
- package/{src/lib/components → components}/page/Outline.svelte +110 -140
- package/components/page/Outline.svelte.d.ts +19 -0
- package/components/page/Page.svelte +84 -0
- package/components/page/Page.svelte.d.ts +19 -0
- package/{src/lib/components → components}/page/PageHeader.svelte +1 -2
- package/components/page/PageHeader.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/PageParagraph.svelte +0 -0
- package/components/page/PageParagraph.svelte.d.ts +27 -0
- package/components/page/PossibleChapter.svelte +14 -0
- package/components/page/PossibleChapter.svelte.d.ts +14 -0
- package/components/page/PossibleReference.svelte +11 -0
- package/components/page/PossibleReference.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/Print.svelte +3 -5
- package/components/page/Print.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Publish.svelte +52 -59
- package/components/page/Publish.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Reference.svelte +30 -39
- package/components/page/Reference.svelte.d.ts +17 -0
- package/{src/lib/components → components}/page/References.svelte +14 -18
- package/components/page/References.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Rows.svelte +0 -0
- package/components/page/Rows.svelte.d.ts +27 -0
- package/components/page/Search.svelte +133 -0
- package/components/page/Search.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/Status.svelte +3 -5
- package/components/page/Status.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/SubdomainEditor.svelte +13 -16
- package/components/page/SubdomainEditor.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/TableOfContents.svelte +68 -79
- package/components/page/TableOfContents.svelte.d.ts +14 -0
- package/components/page/TableOfContentsImage.svelte +18 -0
- package/components/page/TableOfContentsImage.svelte.d.ts +16 -0
- package/{src/lib/components → components}/page/TableOfContentsRow.svelte +24 -34
- package/components/page/TableOfContentsRow.svelte.d.ts +24 -0
- package/{src/lib/components → components}/page/ThemeEditor.svelte +33 -44
- package/components/page/ThemeEditor.svelte.d.ts +14 -0
- package/{src/lib/components → components}/page/ThemeEditorPreview.svelte +12 -21
- package/components/page/ThemeEditorPreview.svelte.d.ts +17 -0
- package/components/page/ThemeSetEditor.svelte +19 -0
- package/components/page/ThemeSetEditor.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/ThemeVariableEditor.svelte +14 -18
- package/components/page/ThemeVariableEditor.svelte.d.ts +18 -0
- package/{src/lib/components → components}/page/Title.svelte +0 -0
- package/components/page/Title.svelte.d.ts +27 -0
- package/{src/lib/components → components}/page/Unknown.svelte +8 -10
- package/components/page/Unknown.svelte.d.ts +16 -0
- package/components/page/margins.d.ts +2 -0
- package/{src/lib/components/page/margins.ts → components/page/margins.js} +46 -79
- package/index.d.ts +15 -0
- package/{src/lib/index.js → index.js} +0 -0
- package/models/CRUD.d.ts +27 -0
- package/models/CRUD.js +262 -0
- package/models/Firebase.d.ts +5 -0
- package/{src/lib/models/Firebase.ts → models/Firebase.js} +16 -26
- package/models/book/Book.d.ts +61 -0
- package/models/book/Book.js +135 -0
- package/models/book/BookMedia.d.ts +23 -0
- package/models/book/BookMedia.js +108 -0
- package/models/book/BookSaveStatus.d.ts +7 -0
- package/models/book/BookSaveStatus.js +8 -0
- package/models/book/Chapter.d.ts +81 -0
- package/models/book/Chapter.js +212 -0
- package/models/book/ChapterID.d.ts +10 -0
- package/{src/lib/models/book/ChapterID.ts → models/book/ChapterID.js} +0 -1
- package/models/book/Definition.d.ts +6 -0
- package/models/book/Definition.js +1 -0
- package/models/book/Edition.d.ts +139 -0
- package/models/book/Edition.js +620 -0
- package/models/book/Reference.d.ts +24 -0
- package/models/book/Reference.js +78 -0
- package/models/book/Schema.d.ts +174 -0
- package/{src/lib/models/book/Schema.ts → models/book/Schema.js} +0 -1
- package/models/book/Theme.d.ts +113 -0
- package/{src/lib/models/book/Theme.ts → models/book/Theme.js} +6 -110
- package/{src/lib/models/book/ThemeColors.ts → models/book/ThemeColors.d.ts} +0 -6
- package/models/book/ThemeColors.js +1 -0
- package/models/book/Words.d.ts +2 -0
- package/{src/lib/models/book/Words.ts → models/book/Words.js} +0 -1
- package/models/chapter/AtomNode.d.ts +18 -0
- package/{src/lib/models/chapter/AtomNode.ts → models/chapter/AtomNode.js} +10 -30
- package/models/chapter/BlockNode.d.ts +20 -0
- package/{src/lib/models/chapter/BlockNode.ts → models/chapter/BlockNode.js} +47 -80
- package/models/chapter/BlocksNode.d.ts +50 -0
- package/{src/lib/models/chapter/BlocksNode.ts → models/chapter/BlocksNode.js} +359 -571
- package/models/chapter/BlocksNode.test.d.ts +1 -0
- package/models/chapter/BlocksNode.test.js +568 -0
- package/{src/lib/models/chapter/Bookkeeping.ts → models/chapter/Bookkeeping.d.ts} +0 -0
- package/models/chapter/Bookkeeping.js +1 -0
- package/models/chapter/CalloutNode.d.ts +17 -0
- package/models/chapter/CalloutNode.js +58 -0
- package/models/chapter/Caret.d.ts +23 -0
- package/{src/lib/models/chapter/Caret.ts → models/chapter/Caret.js} +26 -50
- package/models/chapter/ChapterNode.d.ts +34 -0
- package/models/chapter/ChapterNode.js +117 -0
- package/models/chapter/CitationsNode.d.ts +16 -0
- package/{src/lib/models/chapter/CitationsNode.ts → models/chapter/CitationsNode.js} +10 -17
- package/models/chapter/CodeNode.d.ts +35 -0
- package/{src/lib/models/chapter/CodeNode.ts → models/chapter/CodeNode.js} +62 -125
- package/models/chapter/CommentNode.d.ts +18 -0
- package/models/chapter/CommentNode.js +48 -0
- package/models/chapter/DefinitionNode.d.ts +12 -0
- package/{src/lib/models/chapter/DefinitionNode.ts → models/chapter/DefinitionNode.js} +8 -14
- package/models/chapter/Edit.d.ts +7 -0
- package/models/chapter/Edit.js +1 -0
- package/models/chapter/EmbedNode.d.ts +45 -0
- package/models/chapter/EmbedNode.js +168 -0
- package/models/chapter/ErrorNode.d.ts +17 -0
- package/{src/lib/models/chapter/ErrorNode.ts → models/chapter/ErrorNode.js} +8 -15
- package/models/chapter/FootnoteNode.d.ts +18 -0
- package/models/chapter/FootnoteNode.js +47 -0
- package/models/chapter/FormatNode.d.ts +60 -0
- package/{src/lib/models/chapter/FormatNode.ts → models/chapter/FormatNode.js} +262 -443
- package/models/chapter/FormatNode.test.d.ts +1 -0
- package/models/chapter/FormatNode.test.js +96 -0
- package/models/chapter/InlineCodeNode.d.ts +12 -0
- package/{src/lib/models/chapter/InlineCodeNode.ts → models/chapter/InlineCodeNode.js} +9 -17
- package/models/chapter/LabelNode.d.ts +17 -0
- package/{src/lib/models/chapter/LabelNode.ts → models/chapter/LabelNode.js} +10 -26
- package/models/chapter/LinkNode.d.ts +12 -0
- package/{src/lib/models/chapter/LinkNode.ts → models/chapter/LinkNode.js} +7 -12
- package/models/chapter/ListNode.d.ts +51 -0
- package/{src/lib/models/chapter/ListNode.ts → models/chapter/ListNode.js} +200 -277
- package/models/chapter/ListNode.test.d.ts +1 -0
- package/{src/lib/models/chapter/ListNode.test.ts → models/chapter/ListNode.test.js} +20 -57
- package/models/chapter/MetadataNode.d.ts +17 -0
- package/models/chapter/MetadataNode.js +32 -0
- package/models/chapter/Node.d.ts +38 -0
- package/{src/lib/models/chapter/Node.ts → models/chapter/Node.js} +71 -155
- package/models/chapter/Node.test.d.ts +1 -0
- package/{src/lib/models → models}/chapter/Node.test.js +0 -0
- package/models/chapter/ParagraphNode.d.ts +33 -0
- package/{src/lib/models/chapter/ParagraphNode.ts → models/chapter/ParagraphNode.js} +58 -95
- package/models/chapter/ParagraphNode.test.d.ts +1 -0
- package/models/chapter/ParagraphNode.test.js +30 -0
- package/models/chapter/Parser.d.ts +75 -0
- package/{src/lib/models/chapter/Parser.ts → models/chapter/Parser.js} +184 -369
- package/models/chapter/Parser.test.d.ts +1 -0
- package/{src/lib/models/chapter/Parser.test.ts → models/chapter/Parser.test.js} +0 -7
- package/{src/lib/models/chapter/Position.ts → models/chapter/Position.d.ts} +0 -0
- package/models/chapter/Position.js +1 -0
- package/models/chapter/QuoteNode.d.ts +25 -0
- package/models/chapter/QuoteNode.js +99 -0
- package/{src/lib/models/chapter/RootNode.ts → models/chapter/RootNode.d.ts} +0 -2
- package/models/chapter/RootNode.js +1 -0
- package/models/chapter/RuleNode.d.ts +15 -0
- package/{src/lib/models/chapter/RuleNode.ts → models/chapter/RuleNode.js} +6 -9
- package/models/chapter/TableNode.d.ts +37 -0
- package/{src/lib/models/chapter/TableNode.ts → models/chapter/TableNode.js} +82 -141
- package/models/chapter/TableNode.test.d.ts +1 -0
- package/{src/lib/models/chapter/TableNode.test.ts → models/chapter/TableNode.test.js} +10 -27
- package/models/chapter/TextNode.d.ts +36 -0
- package/{src/lib/models/chapter/TextNode.ts → models/chapter/TextNode.js} +65 -117
- package/models/chapter/TextNode.test.d.ts +1 -0
- package/{src/lib/models/chapter/TextNode.test.ts → models/chapter/TextNode.test.js} +0 -2
- package/package.json +270 -53
- package/util/getSubdomain.d.ts +3 -0
- package/{src/lib/util/getSubdomain.ts → util/getSubdomain.js} +8 -14
- package/util/isMobile.d.ts +2 -0
- package/{src/lib/util/isMobile.ts → util/isMobile.js} +0 -1
- package/util/mineReference.d.ts +4 -0
- package/{src/lib/util/mineReference.ts → util/mineReference.js} +25 -45
- package/util/scrollToEyeLevel.d.ts +2 -0
- package/{src/lib/util/scrollToEyeLevel.ts → util/scrollToEyeLevel.js} +2 -4
- package/.env.example +0 -8
- package/.firebaserc +0 -8
- package/.prettierignore +0 -8
- package/.prettierrc.json +0 -5
- package/_update-notifier-last-checked +0 -0
- package/firebase.json +0 -46
- package/firestore.indexes.json +0 -4
- package/firestore.rules +0 -59
- package/functions/.eslintrc.js +0 -28
- package/functions/package-lock.json +0 -12595
- package/functions/package.json +0 -43
- package/functions/src/index.ts +0 -345
- package/functions/tsconfig.dev.json +0 -3
- package/functions/tsconfig.json +0 -15
- package/scripts/claims.cjs +0 -99
- package/src/app.d.ts +0 -9
- package/src/app.html +0 -24
- package/src/lib/components/Auth.svelte +0 -65
- package/src/lib/components/Link.svelte +0 -58
- package/src/lib/components/chapter/Block.svelte +0 -42
- package/src/lib/components/chapter/ErrorMessage.svelte +0 -12
- package/src/lib/components/chapter/Python.svelte +0 -144
- package/src/lib/components/chapter/Text.svelte +0 -109
- package/src/lib/components/editor/BookishEditor.svelte +0 -1101
- package/src/lib/components/editor/CalloutEditor.svelte +0 -14
- package/src/lib/components/editor/CaretContext.ts +0 -55
- package/src/lib/components/editor/CitationsEditor.svelte +0 -64
- package/src/lib/components/editor/ConfirmButton.svelte +0 -51
- package/src/lib/components/editor/DefinitionEditor.svelte +0 -44
- package/src/lib/components/editor/EmbedEditor.svelte +0 -152
- package/src/lib/components/editor/InlineCodeEditor.svelte +0 -16
- package/src/lib/components/editor/LinkEditor.svelte +0 -110
- package/src/lib/components/editor/PositionEditor.svelte +0 -21
- package/src/lib/components/editor/QuoteEditor.svelte +0 -14
- package/src/lib/components/editor/TableEditor.svelte +0 -14
- package/src/lib/components/editor/Toggle.svelte +0 -47
- package/src/lib/components/editor/Toolbar.svelte +0 -297
- package/src/lib/components/editor/URLEditor.svelte +0 -15
- package/src/lib/components/page/Authors.svelte +0 -92
- package/src/lib/components/page/BookLoader.svelte +0 -77
- package/src/lib/components/page/BulkReferenceEditor.svelte +0 -86
- package/src/lib/components/page/Chapter.svelte +0 -449
- package/src/lib/components/page/ChapterContext.ts +0 -13
- package/src/lib/components/page/Contexts.ts +0 -176
- package/src/lib/components/page/Edition.svelte +0 -189
- package/src/lib/components/page/EditionLoader.svelte +0 -123
- package/src/lib/components/page/Page.svelte +0 -94
- package/src/lib/components/page/PossibleChapter.svelte +0 -16
- package/src/lib/components/page/PossibleReference.svelte +0 -14
- package/src/lib/components/page/Search.svelte +0 -153
- package/src/lib/components/page/TableOfContentsImage.svelte +0 -22
- package/src/lib/components/page/ThemeSetEditor.svelte +0 -21
- package/src/lib/models/CRUD.ts +0 -469
- package/src/lib/models/book/Book.ts +0 -283
- package/src/lib/models/book/BookMedia.ts +0 -182
- package/src/lib/models/book/BookSaveStatus.ts +0 -8
- package/src/lib/models/book/Chapter.ts +0 -462
- package/src/lib/models/book/Definition.ts +0 -2
- package/src/lib/models/book/Edition.ts +0 -1216
- package/src/lib/models/book/Reference.ts +0 -171
- package/src/lib/models/chapter/BlocksNode.test.ts +0 -867
- package/src/lib/models/chapter/CalloutNode.ts +0 -79
- package/src/lib/models/chapter/ChapterNode.ts +0 -169
- package/src/lib/models/chapter/CommentNode.ts +0 -61
- package/src/lib/models/chapter/Edit.ts +0 -6
- package/src/lib/models/chapter/EmbedNode.ts +0 -257
- package/src/lib/models/chapter/FootnoteNode.ts +0 -59
- package/src/lib/models/chapter/FormatNode.test.ts +0 -137
- package/src/lib/models/chapter/MetadataNode.ts +0 -44
- package/src/lib/models/chapter/ParagraphNode.test.ts +0 -54
- package/src/lib/models/chapter/QuoteNode.ts +0 -135
- package/src/params/edition.ts +0 -3
- package/src/routes/+error.svelte +0 -12
- package/src/routes/+layout.svelte +0 -241
- package/src/routes/+page.svelte +0 -43
- package/src/routes/Footer.svelte +0 -0
- package/src/routes/Header.svelte +0 -112
- package/src/routes/[bookid]/+layout.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/+error.svelte +0 -14
- package/src/routes/[bookid]/[[editionid=edition]]/+layout.svelte +0 -7
- package/src/routes/[bookid]/[[editionid=edition]]/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/glossary/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/media/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/print/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/references/+page.svelte +0 -5
- package/src/routes/[bookid]/[[editionid=edition]]/search/+page.svelte +0 -5
- package/src/routes/[bookid]/editions/+page.svelte +0 -20
- package/src/routes/about/+page.svelte +0 -102
- package/src/routes/confirm/+page.svelte +0 -62
- package/src/routes/email/+page.svelte +0 -99
- package/src/routes/login/+page.svelte +0 -66
- package/src/routes/read/+page.svelte +0 -38
- package/src/routes/write/+error.svelte +0 -10
- package/src/routes/write/+layout.svelte +0 -11
- package/src/routes/write/+page.svelte +0 -114
- package/src/routes/write/[bookid]/+layout.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/+layout.svelte +0 -7
- package/src/routes/write/[bookid]/[[editionid=edition]]/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/[chapterid]/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/glossary/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/index/[[letter]]/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/media/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/print/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/references/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/search/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/theme/+page.svelte +0 -5
- package/src/routes/write/[bookid]/[[editionid=edition]]/unknown/+page.svelte +0 -5
- package/src/routes/write/[bookid]/editions/+page.svelte +0 -20
- package/src/vite-env.d.ts +0 -1
- 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 +0 -9
- package/svelte.config.js +0 -19
- package/tsconfig.json +0 -18
- package/tsconfig.node.json +0 -9
- package/vite.config.ts +0 -8
- package/vite.reader.config.ts +0 -32
package/src/routes/Header.svelte
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Link from '$lib/components/app/Link.svelte';
|
|
3
|
-
import {
|
|
4
|
-
getUser,
|
|
5
|
-
getBook,
|
|
6
|
-
getEdition,
|
|
7
|
-
} from '$lib/components/page/Contexts';
|
|
8
|
-
import { getCaret } from '$lib/components/page/Contexts';
|
|
9
|
-
import Toolbar from '$lib/components/editor/Toolbar.svelte';
|
|
10
|
-
import Status from '$lib/components/page/Status.svelte';
|
|
11
|
-
import HomeIcon from '$lib/components/editor/icons/home.svg?raw';
|
|
12
|
-
import Icon from '$lib/components/editor/Icon.svelte';
|
|
13
|
-
import { page } from '$app/stores';
|
|
14
|
-
|
|
15
|
-
let auth = getUser();
|
|
16
|
-
|
|
17
|
-
let caret = getCaret();
|
|
18
|
-
$: edition = getEdition();
|
|
19
|
-
$: book = getBook();
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<section class="header">
|
|
23
|
-
<nav class="navigation">
|
|
24
|
-
<Link to="/" title="Home"><Icon icon={HomeIcon} /></Link>
|
|
25
|
-
{#if $book && $edition}
|
|
26
|
-
<span class="elided"
|
|
27
|
-
><Link
|
|
28
|
-
to={`${
|
|
29
|
-
$page.route.id?.startsWith('/write') ? '/write' : ''
|
|
30
|
-
}/${$book.ref.id}`}>{$book.getTitle()}</Link
|
|
31
|
-
></span
|
|
32
|
-
>
|
|
33
|
-
{#if $page.route.id?.includes('/[bookid]/editions')}
|
|
34
|
-
<span>– Editions</span>
|
|
35
|
-
{/if}
|
|
36
|
-
<span
|
|
37
|
-
>– <Link
|
|
38
|
-
to={`${
|
|
39
|
-
$page.route.id?.startsWith('/write') ? '/write' : ''
|
|
40
|
-
}/${$book.ref.id}/editions`}
|
|
41
|
-
>{$edition.getEditionLabel()} edition</Link
|
|
42
|
-
></span
|
|
43
|
-
>
|
|
44
|
-
<span class="status">
|
|
45
|
-
{#if $auth?.user && $auth.user.email}
|
|
46
|
-
<Link to="/email">{$auth.user.email}</Link>
|
|
47
|
-
{:else}
|
|
48
|
-
<Link to="/login">Login</Link>
|
|
49
|
-
{/if}
|
|
50
|
-
<Status />
|
|
51
|
-
</span>
|
|
52
|
-
{:else}
|
|
53
|
-
<Link to="/read">Read</Link>
|
|
54
|
-
<Link to="/write">Write</Link>
|
|
55
|
-
<Link to="/about">About</Link>
|
|
56
|
-
<small>
|
|
57
|
-
{#if $auth?.user && $auth.user.email}
|
|
58
|
-
<Link to="/email">{$auth.user.email}</Link>
|
|
59
|
-
{:else}
|
|
60
|
-
<Link to="/login">Login</Link>
|
|
61
|
-
{/if}
|
|
62
|
-
</small>
|
|
63
|
-
{/if}
|
|
64
|
-
</nav>
|
|
65
|
-
{#if $caret}
|
|
66
|
-
<Toolbar caret={$caret} />
|
|
67
|
-
{/if}
|
|
68
|
-
</section>
|
|
69
|
-
|
|
70
|
-
<style>
|
|
71
|
-
.header {
|
|
72
|
-
width: 100%;
|
|
73
|
-
box-sizing: border-box;
|
|
74
|
-
text-align: center;
|
|
75
|
-
position: sticky;
|
|
76
|
-
top: 0;
|
|
77
|
-
z-index: 3;
|
|
78
|
-
padding: var(--app-chrome-padding);
|
|
79
|
-
background-color: var(--app-background-color);
|
|
80
|
-
border-bottom: var(--app-chrome-border-size) solid
|
|
81
|
-
var(--app-border-color);
|
|
82
|
-
display: flex;
|
|
83
|
-
flex-direction: column;
|
|
84
|
-
gap: var(--app-chrome-padding);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.navigation {
|
|
88
|
-
display: flex;
|
|
89
|
-
flex-direction: row;
|
|
90
|
-
justify-content: center;
|
|
91
|
-
gap: var(--app-chrome-padding);
|
|
92
|
-
text-overflow: ellipsis;
|
|
93
|
-
align-items: baseline;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.status {
|
|
97
|
-
/* This puts the saved status in the top right and pushes everything else left. */
|
|
98
|
-
margin-left: auto;
|
|
99
|
-
font-size: 90%;
|
|
100
|
-
display: flex;
|
|
101
|
-
flex-direction: row;
|
|
102
|
-
flex-wrap: nowrap;
|
|
103
|
-
gap: var(--app-chrome-padding);
|
|
104
|
-
align-items: baseline;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.elided {
|
|
108
|
-
overflow-x: clip;
|
|
109
|
-
white-space: nowrap;
|
|
110
|
-
text-overflow: ellipsis;
|
|
111
|
-
}
|
|
112
|
-
</style>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Feeback from '$lib/components/app/Feedback.svelte';
|
|
3
|
-
import Link from '$lib/components/app/Link.svelte';
|
|
4
|
-
import Large from '$lib/components/app/Large.svelte';
|
|
5
|
-
import Lead from '$lib/components/app/Lead.svelte';
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<Lead><Large>Oops</Large>...</Lead>
|
|
9
|
-
|
|
10
|
-
<Feeback error>
|
|
11
|
-
This book doesn't exist. Want to go to your <Link to="/write"
|
|
12
|
-
>dashboard</Link
|
|
13
|
-
>?
|
|
14
|
-
</Feeback>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Editions from '$lib/components/page/Editions.svelte';
|
|
3
|
-
import { getBook } from '$lib/components/page/Contexts';
|
|
4
|
-
import Feedback from '$lib/components/app/Feedback.svelte';
|
|
5
|
-
import Section from '$lib/components/app/Section.svelte';
|
|
6
|
-
import Lead from '$lib/components/app/Lead.svelte';
|
|
7
|
-
import Large from '$lib/components/app/Large.svelte';
|
|
8
|
-
|
|
9
|
-
let book = getBook();
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
{#if $book}
|
|
13
|
-
<Section>
|
|
14
|
-
<Lead><Large>Editions</Large><br />{$book.title}</Lead>
|
|
15
|
-
|
|
16
|
-
<Editions />
|
|
17
|
-
</Section>
|
|
18
|
-
{:else}
|
|
19
|
-
<Feedback error>This book couldn't be found.</Feedback>
|
|
20
|
-
{/if}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Lead from '$lib/components/app/Lead.svelte';
|
|
3
|
-
import Large from '$lib/components/app/Large.svelte';
|
|
4
|
-
import Paragraph from '$lib/components/app/Paragraph.svelte';
|
|
5
|
-
import Link from '$lib/components/app/Link.svelte';
|
|
6
|
-
import Section from '$lib/components/app/Section.svelte';
|
|
7
|
-
import Head from '$lib/components/app/Head.svelte';
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<Section>
|
|
11
|
-
<Lead><Large>About</Large> Bookish.</Lead>
|
|
12
|
-
|
|
13
|
-
<Paragraph>
|
|
14
|
-
Bookish is built and maintained by <Link to="http://amyjko.com"
|
|
15
|
-
>Amy J. Ko</Link
|
|
16
|
-
>, a Professor at the <Link to="https://www.washington.edu/"
|
|
17
|
-
>University of Washington</Link
|
|
18
|
-
>
|
|
19
|
-
<Link to="https://ischool.uw.edu">Information School</Link>. She
|
|
20
|
-
originally built Bookish to write web-based books to support her
|
|
21
|
-
teaching. She decided to build a platform to make editing and
|
|
22
|
-
maintaining books easier for both herself and others. She works on it as
|
|
23
|
-
a side project and continues to use it extensively in her classes.
|
|
24
|
-
</Paragraph>
|
|
25
|
-
|
|
26
|
-
<Head id="beta">Beta</Head>
|
|
27
|
-
|
|
28
|
-
<Paragraph
|
|
29
|
-
>Bookish is currently in <em>beta</em>. That means there are likely to
|
|
30
|
-
be defects, including those that result in loss of content. We'll remove
|
|
31
|
-
this label when we're confident that the platform can reliably serve
|
|
32
|
-
both readers and writers. See our <Link
|
|
33
|
-
to="https://github.com/amyjko/bookish/issues?q=is%3Aissue+is%3Aopen+label%3Adefect"
|
|
34
|
-
>list of defects</Link
|
|
35
|
-
> to check our progress (and help, if you are able).</Paragraph
|
|
36
|
-
>
|
|
37
|
-
|
|
38
|
-
<Head id="costs">Costs</Head>
|
|
39
|
-
|
|
40
|
-
<Paragraph>
|
|
41
|
-
Using Bookish to write books will always be free. However, hosting is
|
|
42
|
-
not free and particularly widely read books can incur costs that Amy
|
|
43
|
-
can't pay alone. She is considering models for covering bandwidth costs
|
|
44
|
-
from reading such per-book fees or donations. If you have ideas, <Link
|
|
45
|
-
to="https://github.com/amyjko/bookish/issues/251"
|
|
46
|
-
>join the discussion</Link
|
|
47
|
-
>.
|
|
48
|
-
</Paragraph>
|
|
49
|
-
|
|
50
|
-
<Head id="vision">Vision</Head>
|
|
51
|
-
|
|
52
|
-
<Paragraph>
|
|
53
|
-
As with any publisher, Bookish as an editorial policy and philosophy.
|
|
54
|
-
Much like university publishers (e.g., <Link
|
|
55
|
-
to="https://mitpress.mit.edu/about/">MIT Press</Link
|
|
56
|
-
>), Amy views the mission of Bookish as <em>scholarly</em>: books on the
|
|
57
|
-
platform should advance knowledge, educate the public, and be informed
|
|
58
|
-
by other scholarly work. However, Bookish is particularly interested in
|
|
59
|
-
works that advance progress toward a society that
|
|
60
|
-
<em
|
|
61
|
-
>radically embraces the beautiful diversity of humanity and nature
|
|
62
|
-
and seeks to dismantle systems and ideas that get in the way.</em
|
|
63
|
-
> While this definitely includes works broadly explicitly about social justice
|
|
64
|
-
toopics such as diversity, equality, equity, inclusion, justice, accessibility,
|
|
65
|
-
sustainability, indigienous sovereignty, it also includes works that discuss
|
|
66
|
-
more strictly technical ideas in sociotechnical ways.
|
|
67
|
-
</Paragraph>
|
|
68
|
-
|
|
69
|
-
<Head id="editing">Editing</Head>
|
|
70
|
-
|
|
71
|
-
<Paragraph
|
|
72
|
-
>For now, anyone can create an account and write books, but publishing
|
|
73
|
-
rights are <strong>invitation only</strong>. <Link
|
|
74
|
-
to="mailto:amy@amyjko.com">Write Amy</Link
|
|
75
|
-
> to arrange a time to discuss your your vision, to ensure it aligns with
|
|
76
|
-
our editioral mission. Amy retains the right to revoke publishing rights
|
|
77
|
-
and unpublish books that do not align with the vision above; publishing on
|
|
78
|
-
the platform is a privilege, not a right.</Paragraph
|
|
79
|
-
>
|
|
80
|
-
|
|
81
|
-
<Paragraph>
|
|
82
|
-
That said, if your vision does not align with ours, you can still use
|
|
83
|
-
Bookish to write your book and export a version for hosting elsewhere.
|
|
84
|
-
You could even use the Bookish source to host your own press with a
|
|
85
|
-
different editorial vision.
|
|
86
|
-
</Paragraph>
|
|
87
|
-
|
|
88
|
-
<Head id="feedback">Feedback</Head>
|
|
89
|
-
|
|
90
|
-
<Paragraph>
|
|
91
|
-
Do you have feedback or want to contribute to the plaform? The project
|
|
92
|
-
is free and open source <Link to="https://github.com/amyjko/bookish"
|
|
93
|
-
>on GitHub</Link
|
|
94
|
-
>. Write <Link to="mailto:ajko@uw.edu">Amy</Link> if you'd like to collaborate,
|
|
95
|
-
or <Link to="https://github.com/amyjko/bookish/issues"
|
|
96
|
-
>submit an issue</Link
|
|
97
|
-
> or <Link to="https://github.com/amyjko/bookish/pulls"
|
|
98
|
-
>pull request</Link
|
|
99
|
-
> directly. Note that this is not a full-time project for Amy, so it will
|
|
100
|
-
progress will be leisurely; defects take priority over new features.
|
|
101
|
-
</Paragraph>
|
|
102
|
-
</Section>
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { isSignInWithEmailLink, signInWithEmailLink } from 'firebase/auth';
|
|
3
|
-
import { onMount } from 'svelte';
|
|
4
|
-
import { auth } from '$lib/models/Firebase';
|
|
5
|
-
import Link from '$lib/components/Link.svelte';
|
|
6
|
-
import { goto } from '$app/navigation';
|
|
7
|
-
import Feedback from '$lib/components/app/Feedback.svelte';
|
|
8
|
-
import Lead from '$lib/components/app/Lead.svelte';
|
|
9
|
-
import Large from '$lib/components/app/Large.svelte';
|
|
10
|
-
|
|
11
|
-
let error: string | undefined = undefined;
|
|
12
|
-
|
|
13
|
-
const messages: Record<string, string> = {
|
|
14
|
-
'auth/id-token-expired': 'This link expired.',
|
|
15
|
-
'auth/id-token-revoked': "This link isn't valid anymore.",
|
|
16
|
-
'auth/insufficient-permission':
|
|
17
|
-
"This email doesn't have permission to create an account.",
|
|
18
|
-
'auth/internal-error': "There's a problem at Google.",
|
|
19
|
-
'auth/invalid-argument': "This link isn't valid.",
|
|
20
|
-
'auth/invalid-email': "This wasn't a valid email.",
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
onMount(() => {
|
|
24
|
-
if (auth && isSignInWithEmailLink(auth, window.location.href)) {
|
|
25
|
-
// If this is on the same device and browser, then the email should be in local storage.
|
|
26
|
-
let email = window.localStorage.getItem('email');
|
|
27
|
-
|
|
28
|
-
// If not, ask the user to confirm it.
|
|
29
|
-
if (!email)
|
|
30
|
-
email = window.prompt(
|
|
31
|
-
'It appears you opened your login link on a different device or browser. Can you confirm your email?'
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
// If there's an email, try signing in.
|
|
35
|
-
if (email)
|
|
36
|
-
signInWithEmailLink(auth, email, window.location.href)
|
|
37
|
-
.then(() => {
|
|
38
|
-
// Clear email from storage now that the user is logged in.
|
|
39
|
-
window.localStorage.removeItem('email');
|
|
40
|
-
|
|
41
|
-
// Navigate to the home page.
|
|
42
|
-
goto('/write');
|
|
43
|
-
})
|
|
44
|
-
.catch((err: { code: string }) => {
|
|
45
|
-
error =
|
|
46
|
-
messages[err.code] ??
|
|
47
|
-
'There was a problem logging you in.';
|
|
48
|
-
});
|
|
49
|
-
// Otherwise, give some feedback.
|
|
50
|
-
else error = "Can't log in without an email address.";
|
|
51
|
-
}
|
|
52
|
-
// GIve some feedback if the email link isn't valid.
|
|
53
|
-
else error = "This isn't a valid login link.";
|
|
54
|
-
});
|
|
55
|
-
</script>
|
|
56
|
-
|
|
57
|
-
<Lead><Large>Logging</Large> in…</Lead>
|
|
58
|
-
{#if error}
|
|
59
|
-
<Feedback error>{error} <Link to="/login">Try again?</Link></Feedback>
|
|
60
|
-
{:else}
|
|
61
|
-
<Feedback>Redirecting...</Feedback>
|
|
62
|
-
{/if}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { updateEmail } from 'firebase/auth';
|
|
3
|
-
import { getUser } from '../../lib/components/page/Contexts';
|
|
4
|
-
import Feedback from '$lib/components/app/Feedback.svelte';
|
|
5
|
-
import Button from '../../lib/components/app/Button.svelte';
|
|
6
|
-
import Lead from '../../lib/components/app/Lead.svelte';
|
|
7
|
-
import Large from '../../lib/components/app/Large.svelte';
|
|
8
|
-
import Paragraph from '../../lib/components/app/Paragraph.svelte';
|
|
9
|
-
import TextInput from '../../lib/components/app/TextInput.svelte';
|
|
10
|
-
import { goto } from '$app/navigation';
|
|
11
|
-
|
|
12
|
-
let email: string;
|
|
13
|
-
let auth = getUser();
|
|
14
|
-
|
|
15
|
-
let loading = false;
|
|
16
|
-
let feedback = '';
|
|
17
|
-
let error = '';
|
|
18
|
-
let changed = false;
|
|
19
|
-
|
|
20
|
-
const errors: Record<string, string> = {
|
|
21
|
-
'auth/invalid-mail': "This wasn't a valid email.",
|
|
22
|
-
'auth/email-already-in-use':
|
|
23
|
-
'This email is already associated with an account.',
|
|
24
|
-
'auto/requires-recent-login':
|
|
25
|
-
"You haven't logged in recently enough. Log out, log in again, then try again.",
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
async function handleSubmit() {
|
|
29
|
-
if ($auth === undefined) return;
|
|
30
|
-
|
|
31
|
-
// Enter loading state, try to login and wait for it to complete, and then leave loading state.
|
|
32
|
-
if ($auth.user !== null && email) {
|
|
33
|
-
// Give some feedback when loading.
|
|
34
|
-
loading = true;
|
|
35
|
-
const previousEmail = $auth.user.email;
|
|
36
|
-
feedback = `Sending email update confirmation to ${previousEmail}...`;
|
|
37
|
-
updateEmail($auth.user, email)
|
|
38
|
-
.then(() => {
|
|
39
|
-
feedback = `Check your original email address, ${previousEmail}, for a confirmation link.`;
|
|
40
|
-
changed = true;
|
|
41
|
-
})
|
|
42
|
-
.catch((error: any) => {
|
|
43
|
-
if (typeof error.code === 'string')
|
|
44
|
-
error =
|
|
45
|
-
errors[error.code] ??
|
|
46
|
-
"Couldn't update email for an unknown reason.";
|
|
47
|
-
})
|
|
48
|
-
.finally(() => {
|
|
49
|
-
loading = false;
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Ask the auth context to logout, and provided an error if it fails.
|
|
55
|
-
function handleLogout() {
|
|
56
|
-
$auth?.logout();
|
|
57
|
-
goto('/login');
|
|
58
|
-
}
|
|
59
|
-
</script>
|
|
60
|
-
|
|
61
|
-
<Lead><Large>You</Large>.</Lead>
|
|
62
|
-
|
|
63
|
-
<Paragraph>
|
|
64
|
-
To change your login email, type your new email address below.
|
|
65
|
-
</Paragraph>
|
|
66
|
-
|
|
67
|
-
<Paragraph>
|
|
68
|
-
<form on:submit|preventDefault={handleSubmit}>
|
|
69
|
-
<TextInput
|
|
70
|
-
autocomplete="username"
|
|
71
|
-
type="email"
|
|
72
|
-
placeholder="email"
|
|
73
|
-
bind:text={email}
|
|
74
|
-
disabled={loading}
|
|
75
|
-
/>
|
|
76
|
-
<Button
|
|
77
|
-
tooltip="submit new email address"
|
|
78
|
-
command={handleSubmit}
|
|
79
|
-
type="submit"
|
|
80
|
-
disabled={loading ||
|
|
81
|
-
email == undefined ||
|
|
82
|
-
email.length === 0 ||
|
|
83
|
-
changed}>update email</Button
|
|
84
|
-
>
|
|
85
|
-
</form>
|
|
86
|
-
</Paragraph>
|
|
87
|
-
|
|
88
|
-
<Paragraph>
|
|
89
|
-
Or, <Button tooltip="logout of your account" command={handleLogout}
|
|
90
|
-
>logout</Button
|
|
91
|
-
>
|
|
92
|
-
</Paragraph>
|
|
93
|
-
|
|
94
|
-
{#if feedback}
|
|
95
|
-
<Feedback>{feedback}</Feedback>
|
|
96
|
-
{/if}
|
|
97
|
-
{#if error}
|
|
98
|
-
<Feedback error>{error}</Feedback>
|
|
99
|
-
{/if}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { getUser } from '$lib/components/page/Contexts';
|
|
3
|
-
import Feedback from '$lib/components/app/Feedback.svelte';
|
|
4
|
-
import Lead from '$lib/components/app/Lead.svelte';
|
|
5
|
-
import Large from '$lib/components/app/Large.svelte';
|
|
6
|
-
import Paragraph from '$lib/components/app/Paragraph.svelte';
|
|
7
|
-
import TextInput from '$lib/components/app/TextInput.svelte';
|
|
8
|
-
import Button from '$lib/components/app/Button.svelte';
|
|
9
|
-
|
|
10
|
-
let auth = getUser();
|
|
11
|
-
|
|
12
|
-
let email: string = '';
|
|
13
|
-
let loading = false;
|
|
14
|
-
let feedback = '';
|
|
15
|
-
let error = '';
|
|
16
|
-
|
|
17
|
-
async function handleSubmit() {
|
|
18
|
-
if ($auth === undefined) return;
|
|
19
|
-
// Enter loading state, try to login and wait for it to complete, and then leave loading state.
|
|
20
|
-
try {
|
|
21
|
-
// Give some feedback when loading.
|
|
22
|
-
feedback = 'Logging in...';
|
|
23
|
-
loading = true;
|
|
24
|
-
await $auth.login(email);
|
|
25
|
-
feedback = 'Check your email for a login link.';
|
|
26
|
-
} catch (err) {
|
|
27
|
-
feedback = '';
|
|
28
|
-
error = "Couldn't connect to the server.";
|
|
29
|
-
} finally {
|
|
30
|
-
loading = false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
</script>
|
|
34
|
-
|
|
35
|
-
<Lead><Large>Login</Large> to write.</Lead>
|
|
36
|
-
|
|
37
|
-
<Paragraph>
|
|
38
|
-
We'll send you an email each time to login, no password required.
|
|
39
|
-
</Paragraph>
|
|
40
|
-
|
|
41
|
-
<form on:submit|preventDefault={handleSubmit}>
|
|
42
|
-
<TextInput
|
|
43
|
-
bind:text={email}
|
|
44
|
-
autocomplete="username"
|
|
45
|
-
type="email"
|
|
46
|
-
placeholder="email"
|
|
47
|
-
disabled={auth === undefined || loading}
|
|
48
|
-
/>
|
|
49
|
-
<Button
|
|
50
|
-
tooltip="login into your account"
|
|
51
|
-
command={handleSubmit}
|
|
52
|
-
type="submit"
|
|
53
|
-
disabled={auth === undefined ||
|
|
54
|
-
loading ||
|
|
55
|
-
!/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(email)}
|
|
56
|
-
>
|
|
57
|
-
login
|
|
58
|
-
</Button>
|
|
59
|
-
</form>
|
|
60
|
-
|
|
61
|
-
{#if feedback}
|
|
62
|
-
<Feedback>{feedback}</Feedback>
|
|
63
|
-
{/if}
|
|
64
|
-
{#if error}
|
|
65
|
-
<Feedback error>{error}</Feedback>
|
|
66
|
-
{/if}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { listenToPublishedBooks } from '$lib/models/CRUD';
|
|
3
|
-
import type Book from '$lib/models/book/Book';
|
|
4
|
-
import { onMount } from 'svelte';
|
|
5
|
-
import Feedback from '$lib/components/app/Feedback.svelte';
|
|
6
|
-
import Lead from '$lib/components/app/Lead.svelte';
|
|
7
|
-
import Paragraph from '$lib/components/app/Paragraph.svelte';
|
|
8
|
-
import Large from '$lib/components/app/Large.svelte';
|
|
9
|
-
import BookList from '$lib/components/app/BookList.svelte';
|
|
10
|
-
|
|
11
|
-
let books: Book[] | undefined = undefined;
|
|
12
|
-
let error: string | undefined = undefined;
|
|
13
|
-
|
|
14
|
-
function updateBooks(latestBooks: Book[]) {
|
|
15
|
-
books = latestBooks;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// Get the books when the component loads, stop listening on unmount.
|
|
19
|
-
onMount(() => {
|
|
20
|
-
try {
|
|
21
|
-
return listenToPublishedBooks(updateBooks);
|
|
22
|
-
} catch (err) {
|
|
23
|
-
error = '' + err;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
<Lead><Large>Read</Large> something.</Lead>
|
|
29
|
-
|
|
30
|
-
{#if error !== undefined}
|
|
31
|
-
<Feedback error>{error}</Feedback>
|
|
32
|
-
{:else if books === undefined}
|
|
33
|
-
<Feedback>Loading books...</Feedback>
|
|
34
|
-
{:else if books.length === 0}
|
|
35
|
-
<Paragraph>There are no published books.</Paragraph>
|
|
36
|
-
{:else}
|
|
37
|
-
<BookList {books} write={false} />
|
|
38
|
-
{/if}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { goto } from '$app/navigation';
|
|
3
|
-
import { getUser } from '$lib/components/page/Contexts';
|
|
4
|
-
|
|
5
|
-
let auth = getUser();
|
|
6
|
-
|
|
7
|
-
// Redirect to the login page if not authenticated.
|
|
8
|
-
if ($auth === undefined || $auth.user === null) goto('/login');
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<slot />
|