bookish-press 0.7.4 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/components/Auth.svelte +29 -39
- package/dist/components/Auth.svelte.d.ts +5 -17
- package/dist/components/BookPreview.svelte +14 -20
- package/dist/components/BookPreview.svelte.d.ts +6 -18
- package/dist/components/Link.svelte +19 -30
- package/dist/components/Link.svelte.d.ts +7 -20
- package/dist/components/app/BookList.svelte +2 -3
- package/dist/components/app/BookList.svelte.d.ts +6 -18
- package/dist/components/app/Button.svelte +12 -8
- package/dist/components/app/Button.svelte.d.ts +10 -23
- package/dist/components/app/Feedback.svelte +4 -4
- package/dist/components/app/Feedback.svelte.d.ts +6 -19
- package/dist/components/app/Head.svelte +2 -2
- package/dist/components/app/Head.svelte.d.ts +6 -19
- package/dist/components/app/Large.svelte +4 -1
- package/dist/components/app/Large.svelte.d.ts +5 -28
- package/dist/components/app/Lead.svelte +4 -1
- package/dist/components/app/Lead.svelte.d.ts +5 -28
- package/dist/components/app/Link.svelte +12 -9
- package/dist/components/app/Link.svelte.d.ts +9 -22
- package/dist/components/app/Options.svelte +8 -6
- package/dist/components/app/Options.svelte.d.ts +8 -20
- package/dist/components/app/Paragraph.svelte +2 -2
- package/dist/components/app/Paragraph.svelte.d.ts +6 -19
- package/dist/components/app/Section.svelte +4 -1
- package/dist/components/app/Section.svelte.d.ts +5 -28
- package/dist/components/app/Table.svelte +4 -1
- package/dist/components/app/Table.svelte.d.ts +5 -28
- package/dist/components/app/TextInput.svelte +10 -8
- package/dist/components/app/TextInput.svelte.d.ts +12 -23
- package/dist/components/chapter/Atom.svelte +4 -7
- package/dist/components/chapter/Atom.svelte.d.ts +6 -19
- package/dist/components/chapter/Block.svelte +21 -23
- package/dist/components/chapter/Block.svelte.d.ts +5 -17
- package/dist/components/chapter/Callout.svelte +3 -5
- package/dist/components/chapter/Callout.svelte.d.ts +5 -17
- package/dist/components/chapter/CaptionedCode.svelte +12 -14
- package/dist/components/chapter/CaptionedCode.svelte.d.ts +5 -17
- package/dist/components/chapter/ChapterBody.svelte +14 -17
- package/dist/components/chapter/ChapterBody.svelte.d.ts +7 -19
- package/dist/components/chapter/ChapterBody.test.d.ts +1 -0
- package/dist/components/chapter/ChapterBody.test.js +85 -0
- package/dist/components/chapter/Citations.svelte +39 -45
- package/dist/components/chapter/Citations.svelte.d.ts +5 -17
- package/dist/components/chapter/Code.svelte +158 -155
- package/dist/components/chapter/Code.svelte.d.ts +10 -23
- package/dist/components/chapter/Comment.svelte +30 -23
- package/dist/components/chapter/Comment.svelte.d.ts +5 -17
- package/dist/components/chapter/Definition.svelte +36 -34
- package/dist/components/chapter/Definition.svelte.d.ts +5 -17
- package/dist/components/chapter/Embed.svelte +78 -72
- package/dist/components/chapter/Embed.svelte.d.ts +8 -20
- package/dist/components/chapter/ErrorMessage.svelte +2 -4
- package/dist/components/chapter/ErrorMessage.svelte.d.ts +5 -17
- package/dist/components/chapter/Figure.svelte +22 -29
- package/dist/components/chapter/Figure.svelte.d.ts +9 -22
- package/dist/components/chapter/Footnote.svelte +40 -32
- package/dist/components/chapter/Footnote.svelte.d.ts +5 -17
- package/dist/components/chapter/Format.svelte +26 -41
- package/dist/components/chapter/Format.svelte.d.ts +7 -18
- package/dist/components/chapter/InlineCode.svelte +7 -8
- package/dist/components/chapter/InlineCode.svelte.d.ts +5 -17
- package/dist/components/chapter/Label.svelte +5 -11
- package/dist/components/chapter/Label.svelte.d.ts +5 -17
- package/dist/components/chapter/LineBreak.svelte +1 -3
- package/dist/components/chapter/LineBreak.svelte.d.ts +5 -17
- package/dist/components/chapter/Link.svelte +17 -23
- package/dist/components/chapter/Link.svelte.d.ts +5 -17
- package/dist/components/chapter/List.svelte +9 -9
- package/dist/components/chapter/List.svelte.d.ts +6 -17
- package/dist/components/chapter/Marginal.svelte +59 -60
- package/dist/components/chapter/Marginal.svelte.d.ts +10 -22
- package/dist/components/chapter/Paragraph.svelte +8 -23
- package/dist/components/chapter/Paragraph.svelte.d.ts +6 -18
- package/dist/components/chapter/Positioned.svelte +2 -4
- package/dist/components/chapter/Positioned.svelte.d.ts +6 -19
- package/dist/components/chapter/Problem.svelte +3 -2
- package/dist/components/chapter/Problem.svelte.d.ts +5 -28
- package/dist/components/chapter/Python.svelte +45 -58
- package/dist/components/chapter/Python.svelte.d.ts +6 -18
- package/dist/components/chapter/Quote.svelte +5 -7
- package/dist/components/chapter/Quote.svelte.d.ts +5 -17
- package/dist/components/chapter/Rule.svelte +1 -3
- package/dist/components/chapter/Rule.svelte.d.ts +5 -17
- package/dist/components/chapter/Table.svelte +6 -8
- package/dist/components/chapter/Table.svelte.d.ts +5 -17
- package/dist/components/chapter/Text.svelte +54 -69
- package/dist/components/chapter/Text.svelte.d.ts +6 -18
- package/dist/components/controls/DarkToggle.svelte +7 -8
- package/dist/components/controls/DarkToggle.svelte.d.ts +6 -18
- package/dist/components/editor/BookishEditor.svelte +583 -761
- package/dist/components/editor/BookishEditor.svelte.d.ts +14 -26
- package/dist/components/editor/CalloutEditor.svelte +3 -3
- package/dist/components/editor/CalloutEditor.svelte.d.ts +5 -17
- package/dist/components/editor/CaptionedCodeEditor.svelte +5 -5
- package/dist/components/editor/CaptionedCodeEditor.svelte.d.ts +5 -17
- package/dist/components/editor/CaretView.svelte +23 -25
- package/dist/components/editor/CaretView.svelte.d.ts +15 -27
- package/dist/components/editor/CitationsEditor.svelte +25 -28
- package/dist/components/editor/CitationsEditor.svelte.d.ts +5 -17
- package/dist/components/editor/ConfirmButton.svelte +9 -6
- package/dist/components/editor/ConfirmButton.svelte.d.ts +8 -21
- package/dist/components/editor/DefinitionEditor.svelte +11 -15
- package/dist/components/editor/DefinitionEditor.svelte.d.ts +5 -17
- package/dist/components/editor/EmbedEditor.svelte +43 -44
- package/dist/components/editor/EmbedEditor.svelte.d.ts +5 -17
- package/dist/components/editor/Icon.svelte +1 -1
- package/dist/components/editor/Icon.svelte.d.ts +5 -17
- package/dist/components/editor/ImageChooser.svelte +15 -18
- package/dist/components/editor/ImageChooser.svelte.d.ts +6 -18
- package/dist/components/editor/ImageThumbnail.svelte +29 -24
- package/dist/components/editor/ImageThumbnail.svelte.d.ts +7 -19
- package/dist/components/editor/InlineCodeEditor.svelte +3 -3
- package/dist/components/editor/InlineCodeEditor.svelte.d.ts +5 -17
- package/dist/components/editor/LabelEditor.svelte +5 -6
- package/dist/components/editor/LabelEditor.svelte.d.ts +5 -17
- package/dist/components/editor/LanguageEditor.svelte +4 -5
- package/dist/components/editor/LanguageEditor.svelte.d.ts +6 -18
- package/dist/components/editor/LinkEditor.svelte +52 -68
- package/dist/components/editor/LinkEditor.svelte.d.ts +5 -17
- package/dist/components/editor/Note.svelte +4 -1
- package/dist/components/editor/Note.svelte.d.ts +5 -28
- package/dist/components/editor/Permissions.svelte +36 -34
- package/dist/components/editor/Permissions.svelte.d.ts +9 -21
- package/dist/components/editor/PositionEditor.svelte +6 -7
- package/dist/components/editor/PositionEditor.svelte.d.ts +6 -18
- package/dist/components/editor/QuoteEditor.svelte +3 -3
- package/dist/components/editor/QuoteEditor.svelte.d.ts +5 -17
- package/dist/components/editor/Switch.svelte +16 -11
- package/dist/components/editor/Switch.svelte.d.ts +9 -21
- package/dist/components/editor/TableEditor.svelte +3 -3
- package/dist/components/editor/TableEditor.svelte.d.ts +5 -17
- package/dist/components/editor/TextEditor.svelte +74 -87
- package/dist/components/editor/TextEditor.svelte.d.ts +13 -25
- package/dist/components/editor/Toggle.svelte +18 -21
- package/dist/components/editor/Toggle.svelte.d.ts +7 -20
- package/dist/components/editor/Toolbar.svelte +140 -145
- package/dist/components/editor/Toolbar.svelte.d.ts +5 -17
- package/dist/components/editor/ToolbarGroup.svelte +4 -4
- package/dist/components/editor/ToolbarGroup.svelte.d.ts +6 -19
- package/dist/components/editor/ToolbarSpacer.svelte +1 -1
- package/dist/components/editor/ToolbarSpacer.svelte.d.ts +22 -21
- package/dist/components/editor/URLEditor.svelte +3 -5
- package/dist/components/editor/URLEditor.svelte.d.ts +7 -19
- package/dist/components/page/Acknowledgements.svelte +14 -8
- package/dist/components/page/Acknowledgements.svelte.d.ts +3 -16
- package/dist/components/page/Analytics.svelte +2 -3
- package/dist/components/page/Analytics.svelte.d.ts +6 -17
- package/dist/components/page/Authors.svelte +29 -29
- package/dist/components/page/Authors.svelte.d.ts +11 -23
- package/dist/components/page/BookLoader.svelte +47 -43
- package/dist/components/page/BookLoader.svelte.d.ts +5 -17
- package/dist/components/page/BulkReferenceEditor.svelte +43 -26
- package/dist/components/page/BulkReferenceEditor.svelte.d.ts +3 -16
- package/dist/components/page/Chapter.svelte +224 -249
- package/dist/components/page/Chapter.svelte.d.ts +6 -18
- package/dist/components/page/ChapterContext.d.ts +3 -1
- package/dist/components/page/ChapterNumber.svelte +4 -1
- package/dist/components/page/ChapterNumber.svelte.d.ts +5 -28
- package/dist/components/page/ChapterTitle.svelte +4 -4
- package/dist/components/page/ChapterTitle.svelte.d.ts +6 -19
- package/dist/components/page/Contexts.js +2 -2
- package/dist/components/page/DefinitionView.svelte +51 -44
- package/dist/components/page/DefinitionView.svelte.d.ts +6 -18
- package/dist/components/page/Description.svelte +10 -4
- package/dist/components/page/Description.svelte.d.ts +16 -14
- package/dist/components/page/EditableHeader.svelte +4 -6
- package/dist/components/page/EditableHeader.svelte.d.ts +7 -18
- package/dist/components/page/Edition.svelte +57 -71
- package/dist/components/page/Edition.svelte.d.ts +7 -20
- package/dist/components/page/EditionLoader.svelte +119 -82
- package/dist/components/page/EditionLoader.svelte.d.ts +6 -19
- package/dist/components/page/Editions.svelte +26 -31
- package/dist/components/page/Editions.svelte.d.ts +5 -17
- package/dist/components/page/Glossary.svelte +31 -35
- package/dist/components/page/Glossary.svelte.d.ts +3 -16
- package/dist/components/page/Header.svelte +43 -49
- package/dist/components/page/Header.svelte.d.ts +19 -30
- package/dist/components/page/Index.svelte +46 -46
- package/dist/components/page/Index.svelte.d.ts +3 -16
- package/dist/components/page/Instructions.svelte +2 -2
- package/dist/components/page/Instructions.svelte.d.ts +6 -19
- package/dist/components/page/License.svelte +13 -7
- package/dist/components/page/License.svelte.d.ts +16 -14
- package/dist/components/page/Loading.svelte +9 -9
- package/dist/components/page/Loading.svelte.d.ts +22 -21
- package/dist/components/page/Media.svelte +36 -27
- package/dist/components/page/Media.svelte.d.ts +3 -16
- package/dist/components/page/MediaPreview.svelte +22 -19
- package/dist/components/page/MediaPreview.svelte.d.ts +8 -21
- package/dist/components/page/Muted.svelte +4 -1
- package/dist/components/page/Muted.svelte.d.ts +5 -28
- package/dist/components/page/Outline.svelte +75 -97
- package/dist/components/page/Outline.svelte.d.ts +8 -20
- package/dist/components/page/Page.svelte +23 -33
- package/dist/components/page/Page.svelte.d.ts +7 -20
- package/dist/components/page/PageHeader.svelte +2 -2
- package/dist/components/page/PageHeader.svelte.d.ts +6 -19
- package/dist/components/page/PageParagraph.svelte +4 -1
- package/dist/components/page/PageParagraph.svelte.d.ts +5 -28
- package/dist/components/page/PossibleChapter.svelte +7 -7
- package/dist/components/page/PossibleChapter.svelte.d.ts +3 -16
- package/dist/components/page/PossibleReference.svelte +4 -5
- package/dist/components/page/PossibleReference.svelte.d.ts +6 -18
- package/dist/components/page/Print.svelte +11 -12
- package/dist/components/page/Print.svelte.d.ts +3 -16
- package/dist/components/page/Publish.svelte +47 -47
- package/dist/components/page/Publish.svelte.d.ts +3 -16
- package/dist/components/page/Reference.svelte +24 -35
- package/dist/components/page/Reference.svelte.d.ts +6 -18
- package/dist/components/page/References.svelte +21 -22
- package/dist/components/page/References.svelte.d.ts +3 -16
- package/dist/components/page/Rows.svelte +4 -1
- package/dist/components/page/Rows.svelte.d.ts +5 -28
- package/dist/components/page/Search.svelte +58 -60
- package/dist/components/page/Search.svelte.d.ts +3 -16
- package/dist/components/page/Status.svelte +2 -2
- package/dist/components/page/Status.svelte.d.ts +16 -14
- package/dist/components/page/SubdomainEditor.svelte +11 -11
- package/dist/components/page/SubdomainEditor.svelte.d.ts +16 -14
- package/dist/components/page/TableOfContents.svelte +143 -125
- package/dist/components/page/TableOfContents.svelte.d.ts +3 -16
- package/dist/components/page/TableOfContentsImage.svelte +6 -7
- package/dist/components/page/TableOfContentsImage.svelte.d.ts +6 -18
- package/dist/components/page/TableOfContentsRow.svelte +32 -32
- package/dist/components/page/TableOfContentsRow.svelte.d.ts +10 -22
- package/dist/components/page/ThemeEditor.svelte +35 -28
- package/dist/components/page/ThemeEditor.svelte.d.ts +3 -16
- package/dist/components/page/ThemeEditorPreview.svelte +11 -13
- package/dist/components/page/ThemeEditorPreview.svelte.d.ts +5 -17
- package/dist/components/page/ThemeSetEditor.svelte +4 -6
- package/dist/components/page/ThemeSetEditor.svelte.d.ts +7 -19
- package/dist/components/page/ThemeVariableEditor.svelte +9 -11
- package/dist/components/page/ThemeVariableEditor.svelte.d.ts +7 -19
- package/dist/components/page/Title.svelte +4 -1
- package/dist/components/page/Title.svelte.d.ts +5 -28
- package/dist/components/page/Unknown.svelte +11 -8
- package/dist/components/page/Unknown.svelte.d.ts +5 -17
- package/dist/models/Firebase.js +18 -4
- package/dist/models/book/Book.js +2 -1
- package/dist/models/book/BookMedia.js +1 -2
- package/dist/models/book/Chapter.js +3 -2
- package/dist/models/book/Edition.d.ts +1 -1
- package/dist/models/book/Edition.js +5 -1
- package/dist/models/chapter/BlocksNode.js +3 -1
- package/dist/models/chapter/BlocksNode.test.js +5 -1
- package/dist/models/chapter/Node.test.js +2 -2
- package/package.json +34 -22
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type QuoteNode from '../../models/chapter/QuoteNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
quote: QuoteNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type QuoteEditorProps = typeof __propDef.props;
|
|
15
|
-
export type QuoteEditorEvents = typeof __propDef.events;
|
|
16
|
-
export type QuoteEditorSlots = typeof __propDef.slots;
|
|
17
|
-
export default class QuoteEditor extends SvelteComponent<QuoteEditorProps, QuoteEditorEvents, QuoteEditorSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
quote: QuoteNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const QuoteEditor: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type QuoteEditor = ReturnType<typeof QuoteEditor>;
|
|
7
|
+
export default QuoteEditor;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
<script>import Icon from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
<script lang="ts">import Icon from "./Icon.svelte";
|
|
2
|
+
let {
|
|
3
|
+
options,
|
|
4
|
+
icons = void 0,
|
|
5
|
+
value,
|
|
6
|
+
enabled = void 0,
|
|
7
|
+
edit
|
|
8
|
+
} = $props();
|
|
7
9
|
function handleClick(event) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const newValue = event.currentTarget.dataset.value;
|
|
11
|
+
if (newValue && options.includes(newValue)) {
|
|
12
|
+
edit(newValue);
|
|
13
|
+
}
|
|
12
14
|
}
|
|
13
15
|
</script>
|
|
14
16
|
|
|
@@ -18,7 +20,10 @@ function handleClick(event) {
|
|
|
18
20
|
class={`option ${value === option ? 'selected' : ''}`}
|
|
19
21
|
data-value={option}
|
|
20
22
|
disabled={enabled === false}
|
|
21
|
-
|
|
23
|
+
onclick={(event) => {
|
|
24
|
+
event.stopPropagation();
|
|
25
|
+
handleClick(event);
|
|
26
|
+
}}
|
|
22
27
|
>
|
|
23
28
|
{#if icons && option in icons}
|
|
24
29
|
<Icon icon={icons[option]} />
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
enabled?: boolean | undefined;
|
|
8
|
-
edit: (newValue: string) => void;
|
|
9
|
-
};
|
|
10
|
-
events: {
|
|
11
|
-
[evt: string]: CustomEvent<any>;
|
|
12
|
-
};
|
|
13
|
-
slots: {};
|
|
14
|
-
exports?: {} | undefined;
|
|
15
|
-
bindings?: string | undefined;
|
|
16
|
-
};
|
|
17
|
-
export type SwitchProps = typeof __propDef.props;
|
|
18
|
-
export type SwitchEvents = typeof __propDef.events;
|
|
19
|
-
export type SwitchSlots = typeof __propDef.slots;
|
|
20
|
-
export default class Switch extends SvelteComponent<SwitchProps, SwitchEvents, SwitchSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
options: string[];
|
|
3
|
+
icons?: Record<string, string> | undefined;
|
|
4
|
+
value: string;
|
|
5
|
+
enabled?: boolean | undefined;
|
|
6
|
+
edit: (newValue: string) => void;
|
|
21
7
|
}
|
|
22
|
-
|
|
8
|
+
declare const Switch: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type Switch = ReturnType<typeof Switch>;
|
|
10
|
+
export default Switch;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<script>import { getCaret } from
|
|
2
|
-
import PositionEditor from
|
|
3
|
-
|
|
1
|
+
<script lang="ts">import { getCaret } from "../page/Contexts";
|
|
2
|
+
import PositionEditor from "./PositionEditor.svelte";
|
|
3
|
+
let { table } = $props();
|
|
4
4
|
let caret = getCaret();
|
|
5
5
|
</script>
|
|
6
6
|
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
1
|
import type TableNode from '../../models/chapter/TableNode';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
table: TableNode;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {};
|
|
11
|
-
exports?: {} | undefined;
|
|
12
|
-
bindings?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
export type TableEditorProps = typeof __propDef.props;
|
|
15
|
-
export type TableEditorEvents = typeof __propDef.events;
|
|
16
|
-
export type TableEditorSlots = typeof __propDef.slots;
|
|
17
|
-
export default class TableEditor extends SvelteComponent<TableEditorProps, TableEditorEvents, TableEditorSlots> {
|
|
2
|
+
interface Props {
|
|
3
|
+
table: TableNode;
|
|
18
4
|
}
|
|
19
|
-
|
|
5
|
+
declare const TableEditor: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type TableEditor = ReturnType<typeof TableEditor>;
|
|
7
|
+
export default TableEditor;
|
|
@@ -1,98 +1,85 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (sizer) {
|
|
22
|
-
// Set the invisible sizer to the text to set the container's width.
|
|
23
|
-
// The browser strips trailing spaces, causing jitter after a space, so we replace
|
|
24
|
-
// them with non-breaking spaces.
|
|
25
|
-
const sizedText = showPlaceholder()
|
|
26
|
-
? placeholder
|
|
27
|
-
: text.replace(/\s$/g, '\u00a0');
|
|
28
|
-
// Clip the text to prevent this editor from getting too long when editing. If it goes past one line,
|
|
29
|
-
// the measurements and layout are way off.
|
|
30
|
-
const trimmedText = width !== undefined &&
|
|
31
|
-
(clip === true || status === Status.Editing)
|
|
32
|
-
? sizedText.substring(0, width) + '…'
|
|
33
|
-
: sizedText;
|
|
34
|
-
sizer.innerHTML = trimmedText;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// When status changes, focus or blur.
|
|
38
|
-
$: {
|
|
39
|
-
if (field) {
|
|
40
|
-
if (status === Status.Editing) {
|
|
41
|
-
field.focus();
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
field.blur();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// When text changes, save, unless we only save on exit.
|
|
49
|
-
$: {
|
|
50
|
-
if (!saveOnExit)
|
|
51
|
-
saveText(text);
|
|
52
|
-
}
|
|
1
|
+
<script lang="ts">import { untrack } from "svelte";
|
|
2
|
+
var Status = /* @__PURE__ */ ((Status2) => {
|
|
3
|
+
Status2[Status2["Viewing"] = 0] = "Viewing";
|
|
4
|
+
Status2[Status2["Editing"] = 1] = "Editing";
|
|
5
|
+
return Status2;
|
|
6
|
+
})(Status || {});
|
|
7
|
+
let {
|
|
8
|
+
text = $bindable(),
|
|
9
|
+
label,
|
|
10
|
+
placeholder,
|
|
11
|
+
valid,
|
|
12
|
+
save,
|
|
13
|
+
saveOnExit = false,
|
|
14
|
+
width = void 0,
|
|
15
|
+
clip = false,
|
|
16
|
+
move = void 0
|
|
17
|
+
} = $props();
|
|
18
|
+
let status = $state(0 /* Viewing */);
|
|
19
|
+
let field = $state(null);
|
|
20
|
+
let sizer = $state(null);
|
|
53
21
|
function showPlaceholder() {
|
|
54
|
-
|
|
22
|
+
return text === "";
|
|
55
23
|
}
|
|
56
24
|
function startEditing() {
|
|
57
|
-
|
|
25
|
+
status = 1 /* Editing */;
|
|
58
26
|
}
|
|
59
27
|
function stopEditing() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
saveText(text);
|
|
28
|
+
status = 0 /* Viewing */;
|
|
29
|
+
if (saveOnExit) saveText(text);
|
|
63
30
|
}
|
|
64
31
|
function edit() {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
32
|
+
if (field) {
|
|
33
|
+
text = field.value;
|
|
34
|
+
if (saveOnExit === false) saveText(text);
|
|
35
|
+
}
|
|
70
36
|
}
|
|
71
37
|
function saveText(newText) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
38
|
+
if (validate(newText) === void 0) {
|
|
39
|
+
const revisedText = save(newText);
|
|
40
|
+
if (typeof revisedText === "string") {
|
|
41
|
+
text = revisedText;
|
|
42
|
+
}
|
|
43
|
+
if (revisedText instanceof Promise)
|
|
44
|
+
revisedText.catch((err) => error = err.message);
|
|
45
|
+
}
|
|
80
46
|
}
|
|
81
47
|
function validate(value) {
|
|
82
|
-
|
|
48
|
+
return valid(value);
|
|
83
49
|
}
|
|
84
50
|
function handleKeyPress(event) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
move(field, 1);
|
|
94
|
-
}
|
|
51
|
+
if (event.key === "Enter") status = 0 /* Viewing */;
|
|
52
|
+
else if (event.key === "ArrowUp" && move && field) {
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
move(field, -1);
|
|
55
|
+
} else if (event.key === "ArrowDown" && move && field) {
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
move(field, 1);
|
|
58
|
+
}
|
|
95
59
|
}
|
|
60
|
+
let error = $derived(valid(text));
|
|
61
|
+
$effect(() => {
|
|
62
|
+
if (sizer) {
|
|
63
|
+
const sizedText = showPlaceholder() ? placeholder : text.replace(/\s$/g, "\xA0");
|
|
64
|
+
const trimmedText = width !== void 0 && (clip === true || status === 1 /* Editing */) ? sizedText.substring(0, width) + "\u2026" : sizedText;
|
|
65
|
+
sizer.innerHTML = trimmedText;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
$effect(() => {
|
|
69
|
+
if (field) {
|
|
70
|
+
if (status === 1 /* Editing */) {
|
|
71
|
+
field.focus();
|
|
72
|
+
} else {
|
|
73
|
+
field.blur();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
$effect(() => {
|
|
78
|
+
void text;
|
|
79
|
+
untrack(() => {
|
|
80
|
+
if (!saveOnExit) saveText(text);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
96
83
|
</script>
|
|
97
84
|
|
|
98
85
|
<span
|
|
@@ -104,8 +91,8 @@ function handleKeyPress(event) {
|
|
|
104
91
|
class={`sizer ${error ? 'error' : ''}`}
|
|
105
92
|
aria-hidden={true}
|
|
106
93
|
bind:this={sizer}
|
|
107
|
-
|
|
108
|
-
|
|
94
|
+
onclick={startEditing}
|
|
95
|
+
></span>
|
|
109
96
|
<input
|
|
110
97
|
type="text"
|
|
111
98
|
bind:this={field}
|
|
@@ -115,10 +102,10 @@ function handleKeyPress(event) {
|
|
|
115
102
|
aria-label={label}
|
|
116
103
|
aria-placeholder={label}
|
|
117
104
|
{placeholder}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
105
|
+
onchange={edit}
|
|
106
|
+
onkeydown={handleKeyPress}
|
|
107
|
+
onblur={stopEditing}
|
|
108
|
+
onfocus={startEditing}
|
|
122
109
|
/>
|
|
123
110
|
{#if error && status === Status.Editing}
|
|
124
111
|
<span
|
|
@@ -1,26 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
clip?: boolean;
|
|
12
|
-
move?: ((el: HTMLElement, direction: -1 | 1) => void) | undefined;
|
|
13
|
-
};
|
|
14
|
-
events: {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
};
|
|
17
|
-
slots: {};
|
|
18
|
-
exports?: {} | undefined;
|
|
19
|
-
bindings?: string | undefined;
|
|
20
|
-
};
|
|
21
|
-
export type TextEditorProps = typeof __propDef.props;
|
|
22
|
-
export type TextEditorEvents = typeof __propDef.events;
|
|
23
|
-
export type TextEditorSlots = typeof __propDef.slots;
|
|
24
|
-
export default class TextEditor extends SvelteComponent<TextEditorProps, TextEditorEvents, TextEditorSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
text: string;
|
|
3
|
+
label: string;
|
|
4
|
+
placeholder: string;
|
|
5
|
+
valid: (text: string) => string | undefined;
|
|
6
|
+
save: (text: string) => Promise<void> | undefined | void | string;
|
|
7
|
+
saveOnExit?: boolean;
|
|
8
|
+
width?: number | undefined;
|
|
9
|
+
clip?: boolean;
|
|
10
|
+
move?: ((el: HTMLElement, direction: -1 | 1) => void) | undefined;
|
|
25
11
|
}
|
|
26
|
-
|
|
12
|
+
declare const TextEditor: import("svelte").Component<Props, {}, "text">;
|
|
13
|
+
type TextEditor = ReturnType<typeof TextEditor>;
|
|
14
|
+
export default TextEditor;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
<script>var Status
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
})(Status ||
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let saving = Status.Viewing;
|
|
1
|
+
<script lang="ts">var Status = /* @__PURE__ */ ((Status2) => {
|
|
2
|
+
Status2[Status2["Viewing"] = 0] = "Viewing";
|
|
3
|
+
Status2[Status2["Saving"] = 1] = "Saving";
|
|
4
|
+
Status2[Status2["Error"] = 2] = "Error";
|
|
5
|
+
return Status2;
|
|
6
|
+
})(Status || {});
|
|
7
|
+
let { on, save, children } = $props();
|
|
8
|
+
let saving = $state(0 /* Viewing */);
|
|
10
9
|
function toggle() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
.then(() => (saving = Status.Viewing))
|
|
19
|
-
.catch(() => (saving = Status.Error));
|
|
10
|
+
saving = 1 /* Saving */;
|
|
11
|
+
const promise = save(!on);
|
|
12
|
+
if (promise === void 0) {
|
|
13
|
+
saving = 0 /* Viewing */;
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
promise.then(() => saving = 0 /* Viewing */).catch(() => saving = 2 /* Error */);
|
|
20
17
|
}
|
|
21
18
|
</script>
|
|
22
19
|
|
|
@@ -27,11 +24,11 @@ function toggle() {
|
|
|
27
24
|
tabindex="0"
|
|
28
25
|
role="switch"
|
|
29
26
|
aria-checked={on}
|
|
30
|
-
|
|
27
|
+
onkeydown={(event) =>
|
|
31
28
|
event.key === 'Enter' || event.key === 'Space' ? toggle() : undefined}
|
|
32
|
-
|
|
29
|
+
onclick={toggle}
|
|
33
30
|
>
|
|
34
|
-
|
|
31
|
+
{@render children?.()}
|
|
35
32
|
</div>
|
|
36
33
|
|
|
37
34
|
<style>
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
save: (set: boolean) => Promise<void> | void;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
};
|
|
10
|
-
slots: {
|
|
11
|
-
default: {};
|
|
12
|
-
};
|
|
13
|
-
exports?: {} | undefined;
|
|
14
|
-
bindings?: string | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type ToggleProps = typeof __propDef.props;
|
|
17
|
-
export type ToggleEvents = typeof __propDef.events;
|
|
18
|
-
export type ToggleSlots = typeof __propDef.slots;
|
|
19
|
-
export default class Toggle extends SvelteComponent<ToggleProps, ToggleEvents, ToggleSlots> {
|
|
1
|
+
interface Props {
|
|
2
|
+
on: boolean;
|
|
3
|
+
save: (set: boolean) => Promise<void> | void;
|
|
4
|
+
children?: import('svelte').Snippet;
|
|
20
5
|
}
|
|
21
|
-
|
|
6
|
+
declare const Toggle: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type Toggle = ReturnType<typeof Toggle>;
|
|
8
|
+
export default Toggle;
|