jedmund-svelte/src/lib/components/edra/extensions/url-embed/UrlEmbedPlaceholder.ts
Justin Edmund 93795577cd fix: complete frontend component any type cleanup
- replace any with Prisma types (Post, Project, Album, Media)
- use Component type for Svelte component parameters
- use Snippet type for Svelte 5 render slots
- use Record<string, unknown> for dynamic objects
- add proper type guards for error handling
- fix editor extension types with proper generics
- all frontend components now have zero any type errors
2025-11-23 05:50:22 -08:00

36 lines
665 B
TypeScript

import { mergeAttributes, Node } from '@tiptap/core'
import { SvelteNodeViewRenderer } from 'svelte-tiptap'
import type { Component } from 'svelte'
export const UrlEmbedPlaceholder = (component: Component) =>
Node.create({
name: 'urlEmbedPlaceholder',
group: 'block',
atom: true,
addAttributes() {
return {
url: {
default: null
}
}
},
parseHTML() {
return [
{
tag: 'div[data-url-embed-placeholder]'
}
]
},
renderHTML({ HTMLAttributes }) {
return ['div', mergeAttributes({ 'data-url-embed-placeholder': '' }, HTMLAttributes)]
},
addNodeView() {
return SvelteNodeViewRenderer(component)
}
})