diff --git a/src/components/editor/extensions/nostr-paste-handler.ts b/src/components/editor/extensions/nostr-paste-handler.ts index 6aeefd3..08d6986 100644 --- a/src/components/editor/extensions/nostr-paste-handler.ts +++ b/src/components/editor/extensions/nostr-paste-handler.ts @@ -1,5 +1,5 @@ import { Extension } from "@tiptap/core"; -import { Plugin, PluginKey } from "@tiptap/pm/state"; +import { Plugin, PluginKey, TextSelection } from "@tiptap/pm/state"; import { nip19 } from "nostr-tools"; import eventStore from "@/services/event-store"; import { getProfileContent } from "applesauce-core/helpers"; @@ -152,11 +152,16 @@ export const NostrPasteHandler = Extension.create({ const { tr } = view.state; const { from } = view.state.selection; - // Insert content - nodes.forEach((node, index) => { - tr.insert(from + index, node); + // Insert content and track position + let insertPos = from; + nodes.forEach((node) => { + tr.insert(insertPos, node); + insertPos += node.nodeSize; }); + // Move cursor to end of inserted content + tr.setSelection(TextSelection.near(tr.doc.resolve(insertPos))); + view.dispatch(tr); return true; // Prevent default paste } diff --git a/src/components/editor/node-views/NostrEventPreviewRich.tsx b/src/components/editor/node-views/NostrEventPreviewRich.tsx index 136ae3e..b97e22a 100644 --- a/src/components/editor/node-views/NostrEventPreviewRich.tsx +++ b/src/components/editor/node-views/NostrEventPreviewRich.tsx @@ -1,4 +1,5 @@ import { NodeViewWrapper, type ReactNodeViewProps } from "@tiptap/react"; +import { X } from "lucide-react"; import { useNostrEvent } from "@/hooks/useNostrEvent"; import { KindRenderer } from "@/components/nostr/kinds"; import type { EventPointer, AddressPointer } from "nostr-tools/nip19"; @@ -9,7 +10,10 @@ import { EventCardSkeleton } from "@/components/ui/skeleton"; * * Uses the feed KindRenderer to show event content inline */ -export function NostrEventPreviewRich({ node }: ReactNodeViewProps) { +export function NostrEventPreviewRich({ + node, + deleteNode, +}: ReactNodeViewProps) { const { type, data } = node.attrs as { type: "note" | "nevent" | "naddr"; data: any; @@ -40,7 +44,7 @@ export function NostrEventPreviewRich({ node }: ReactNodeViewProps) { const event = useNostrEvent(pointer || undefined); return ( - +
{!event ? ( @@ -48,6 +52,15 @@ export function NostrEventPreviewRich({ node }: ReactNodeViewProps) { )}
+ {deleteNode && ( + + )}
); }