your personal website on atproto - mirror blento.app
at map 35 lines 971 B view raw
1import { validateLink } from '$lib/helper'; 2import type { CardDefinition } from '../types'; 3import EditingLinkCard from './EditingLinkCard.svelte'; 4import LinkCard from './LinkCard.svelte'; 5import LinkCardSettings from './LinkCardSettings.svelte'; 6 7export const LinkCardDefinition = { 8 type: 'link', 9 contentComponent: LinkCard, 10 editingContentComponent: EditingLinkCard, 11 createNew: (card) => { 12 card.cardData.hasFetched = false; 13 }, 14 settingsComponent: LinkCardSettings, 15 16 name: 'Link Card', 17 canChange: (item) => Boolean(validateLink(item.cardData?.href)), 18 change: (item) => { 19 const href = validateLink(item.cardData?.href); 20 if (!href) return item; 21 22 item.cardData = { 23 ...item.cardData, 24 hasFetched: false 25 }; 26 return item; 27 }, 28 onUrlHandler: (url, item) => { 29 item.cardData.href = url; 30 item.cardData.domain = new URL(url).hostname; 31 item.cardData.hasFetched = false; 32 return item; 33 }, 34 urlHandlerPriority: 0 35} as CardDefinition & { type: 'link' };