diff --git a/src/components/Modal.svelte b/src/components/Modal.svelte new file mode 100644 index 0000000..6586344 --- /dev/null +++ b/src/components/Modal.svelte @@ -0,0 +1,137 @@ + + + + + diff --git a/src/components/PagePicker.svelte b/src/components/PagePicker.svelte new file mode 100644 index 0000000..ea57faa --- /dev/null +++ b/src/components/PagePicker.svelte @@ -0,0 +1,64 @@ + + + + diff --git a/src/editor/BubbleMenu.svelte b/src/editor/BubbleMenu.svelte index 30c4230..f76e412 100644 --- a/src/editor/BubbleMenu.svelte +++ b/src/editor/BubbleMenu.svelte @@ -21,9 +21,13 @@ import SimpleMarkItem from "./bubblemenu/SimpleMarkItem.svelte"; import { nanoid } from "nanoid"; import Button from "./bubblemenu/Button.svelte"; + import Modal from "../components/Modal.svelte"; + import PagePicker from "../components/PagePicker.svelte"; + import type { WorldY } from "../lib/doc"; export let view: EditorView; export let state: EditorState; + export let worldY: WorldY; let changingProp: | false @@ -83,11 +87,17 @@ runCommand(updateMark(view.state.schema.marks.link, { href: url })); } - function createInternalLink() { - const pageId = nanoid(); - runCommand( - updateMark(view.state.schema.marks.internal_link, { id: pageId }) - ); + let makingInternalLink = false; + function startMakingInternalLink() { + if (markIsActive(state, view.state.schema.marks.internal_link)) { + runCommand(removeMark(view.state.schema.marks.internal_link)); + } else { + makingInternalLink = true; + } + } + function makeInternalLink(id: string) { + runCommand(updateMark(view.state.schema.marks.internal_link, { id })); + makingInternalLink = false; } const svgStyle = "width: 100%; height: 100%"; @@ -117,6 +127,13 @@ transform: scale(${1 / viewport.scale}); }); +{#if makingInternalLink} + (makingInternalLink = false)}> + Elegir página + + +{/if} +