@yoopta/embed 6.0.0-beta.14 → 6.0.0-beta.16
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EAEb,UAAU,EACX,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EAEb,UAAU,EACX,MAAM,UAAU,CAAC;AAQlB,KAAK,mBAAmB,GAAG;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpC,CAAC;AAEF,KAAK,kBAAkB,GAAG,mBAAmB,GAAG;IAC9C,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kBAAkB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,YAAY,CAAC;IAChG,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IAChF,kBAAkB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,yBAAyB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtG,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC7F,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,gBAAgB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClF,eAAe,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,iBAgJ3B,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { EmbedAspectRatio, EmbedProvider, EmbedProviderType, ProviderConfig } from '../types';
|
|
2
2
|
export declare const PROVIDER_CONFIGS: ProviderConfig[];
|
|
3
|
-
/**
|
|
4
|
-
* Get provider config by type
|
|
5
|
-
*/
|
|
6
3
|
export declare function getProviderConfig(type: EmbedProviderType): ProviderConfig | undefined;
|
|
7
4
|
/**
|
|
8
5
|
* Detect provider type from URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/utils/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/utils/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEnG,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA8N5C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,GAAG,SAAS,CAErF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAY7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgC/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,CAGhF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,iBAAiB,EACvB,QAAQ,GAAE,MAAY,GACrB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAMnC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAKnF;AACD,eAAO,MAAM,WAAW,uBAAiB,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAOnF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yoopta/embed",
|
|
3
|
-
"version": "6.0.0-beta.
|
|
3
|
+
"version": "6.0.0-beta.16",
|
|
4
4
|
"description": "Embed plugin for Yoopta Editor",
|
|
5
5
|
"author": "Darginec05 <devopsbanda@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/Darginec05/Yoopta-Editor#readme",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/Darginec05/Yoopta-Editor/issues"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "f4a1323d6295faf4d2e6f72ec87d27a759cf3b3f"
|
|
39
39
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/providers.ts","../src/utils/oembed.ts","../src/commands/index.ts","../src/plugin/embed-plugin.tsx","../src/hooks/useEmbedUrl.ts","../src/index.ts"],"sourcesContent":["import type { EmbedAspectRatio, EmbedProvider, EmbedProviderType, ProviderConfig } from '../types';\n\n// ============================================================================\n// Provider Configurations\n// ============================================================================\n\nexport const PROVIDER_CONFIGS: ProviderConfig[] = [\n // YouTube\n {\n type: 'youtube',\n name: 'YouTube',\n patterns: [\n /(?:youtube\\.com\\/(?:watch\\?v=|embed\\/|v\\/)|youtu\\.be\\/)([a-zA-Z0-9_-]{11})/,\n /youtube\\.com\\/shorts\\/([a-zA-Z0-9_-]{11})/,\n ],\n extractId: (url: string) => {\n for (const pattern of PROVIDER_CONFIGS[0].patterns) {\n const match = url.match(pattern);\n if (match?.[1]) return match[1];\n }\n return null;\n },\n buildEmbedUrl: (id: string) => `https://www.youtube.com/embed/${id}`,\n aspectRatio: { width: 16, height: 9 },\n oEmbedUrl: (url: string) => `https://www.youtube.com/oembed?url=${encodeURIComponent(url)}&format=json`,\n },\n\n // Vimeo\n {\n type: 'vimeo',\n name: 'Vimeo',\n patterns: [/vimeo\\.com\\/(\\d+)/, /player\\.vimeo\\.com\\/video\\/(\\d+)/],\n extractId: (url: string) => {\n for (const pattern of PROVIDER_CONFIGS[1].patterns) {\n const match = url.match(pattern);\n if (match?.[1]) return match[1];\n }\n return null;\n },\n buildEmbedUrl: (id: string) => `https://player.vimeo.com/video/${id}`,\n aspectRatio: { width: 16, height: 9 },\n oEmbedUrl: (url: string) => `https://vimeo.com/api/oembed.json?url=${encodeURIComponent(url)}`,\n },\n\n // Dailymotion\n {\n type: 'dailymotion',\n name: 'Dailymotion',\n patterns: [\n /dailymotion\\.com\\/video\\/([a-zA-Z0-9]+)/,\n /dailymotion\\.com\\/embed\\/video\\/([a-zA-Z0-9]+)/,\n /dai\\.ly\\/([a-zA-Z0-9]+)/,\n ],\n extractId: (url: string) => {\n for (const pattern of PROVIDER_CONFIGS[2].patterns) {\n const match = url.match(pattern);\n if (match?.[1]) return match[1];\n }\n return null;\n },\n buildEmbedUrl: (id: string) => `https://www.dailymotion.com/embed/video/${id}`,\n aspectRatio: { width: 16, height: 9 },\n oEmbedUrl: (url: string) => `https://www.dailymotion.com/services/oembed?url=${encodeURIComponent(url)}&format=json`,\n },\n\n // Loom\n {\n type: 'loom',\n name: 'Loom',\n patterns: [/loom\\.com\\/share\\/([a-zA-Z0-9]+)/, /loom\\.com\\/embed\\/([a-zA-Z0-9]+)/],\n extractId: (url: string) => {\n for (const pattern of PROVIDER_CONFIGS[3].patterns) {\n const match = url.match(pattern);\n if (match?.[1]) return match[1];\n }\n return null;\n },\n buildEmbedUrl: (id: string) =>\n `https://www.loom.com/embed/${id}?hide_owner=true&hide_share=true&hide_title=true&hideEmbedTopBar=true`,\n aspectRatio: { width: 16, height: 9 },\n },\n\n // Wistia\n {\n type: 'wistia',\n name: 'Wistia',\n patterns: [\n /wistia\\.(?:com|net)\\/embed\\/iframe\\/([a-zA-Z0-9]+)/,\n /wistia\\.com\\/medias\\/([a-zA-Z0-9]+)/,\n ],\n extractId: (url: string) => {\n for (const pattern of PROVIDER_CONFIGS[4].patterns) {\n const match = url.match(pattern);\n if (match?.[1]) return match[1];\n }\n return null;\n },\n buildEmbedUrl: (id: string) => `https://fast.wistia.net/embed/iframe/${id}?videoFoam=false`,\n aspectRatio: { width: 16, height: 9 },\n },\n\n // Twitter/X\n {\n type: 'twitter',\n name: 'Twitter',\n patterns: [\n /(?:twitter\\.com|x\\.com)\\/\\w+\\/status\\/(\\d+)/,\n ],\n extractId: (url: string) => {\n const match = url.match(/\\/status\\/(\\d+)/);\n return match?.[1] ?? null;\n },\n buildEmbedUrl: (id: string) =>\n `https://platform.twitter.com/embed/Tweet.html?id=${id}&theme=light`,\n aspectRatio: { width: 550, height: 600 }, // Twitter has variable height\n },\n\n // Instagram\n {\n type: 'instagram',\n name: 'Instagram',\n patterns: [\n /instagram\\.com\\/(?:p|reel|tv)\\/([a-zA-Z0-9_-]+)/,\n ],\n extractId: (url: string) => {\n const match = url.match(/instagram\\.com\\/(?:p|reel|tv)\\/([a-zA-Z0-9_-]+)/);\n return match?.[1] ?? null;\n },\n buildEmbedUrl: (id: string) => `https://www.instagram.com/p/${id}/embed`,\n aspectRatio: { width: 1, height: 1 }, // Square for Instagram\n },\n\n // Figma\n {\n type: 'figma',\n name: 'Figma',\n patterns: [\n /figma\\.com\\/(file|proto|design)\\/([a-zA-Z0-9]+)/,\n ],\n extractId: (url: string) => url,\n buildEmbedUrl: (_id: string, url: string) =>\n `https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(url)}`,\n aspectRatio: { width: 16, height: 9 },\n },\n\n // CodePen\n {\n type: 'codepen',\n name: 'CodePen',\n patterns: [\n /codepen\\.io\\/([a-zA-Z0-9_-]+)\\/(?:pen|full|details|debug)\\/([a-zA-Z0-9]+)/,\n ],\n extractId: (url: string) => {\n const match = url.match(/codepen\\.io\\/([a-zA-Z0-9_-]+)\\/(?:pen|full|details|debug)\\/([a-zA-Z0-9]+)/);\n if (match) return `${match[1]}/${match[2]}`;\n return null;\n },\n buildEmbedUrl: (id: string) => {\n const [user, penId] = id.split('/');\n return `https://codepen.io/${user}/embed/${penId}?default-tab=result&theme-id=dark`;\n },\n aspectRatio: { width: 16, height: 9 },\n },\n\n // CodeSandbox\n {\n type: 'codesandbox',\n name: 'CodeSandbox',\n patterns: [\n /codesandbox\\.io\\/(?:s|embed)\\/([a-zA-Z0-9-]+)/,\n ],\n extractId: (url: string) => {\n const match = url.match(/codesandbox\\.io\\/(?:s|embed)\\/([a-zA-Z0-9-]+)/);\n return match?.[1] ?? null;\n },\n buildEmbedUrl: (id: string) =>\n `https://codesandbox.io/embed/${id}?fontsize=14&hidenavigation=1&theme=dark`,\n aspectRatio: { width: 16, height: 9 },\n },\n\n // Spotify\n {\n type: 'spotify',\n name: 'Spotify',\n patterns: [\n /open\\.spotify\\.com\\/(track|album|playlist|episode|show)\\/([a-zA-Z0-9]+)/,\n ],\n extractId: (url: string) => {\n const match = url.match(/open\\.spotify\\.com\\/(track|album|playlist|episode|show)\\/([a-zA-Z0-9]+)/);\n if (match) return `${match[1]}/${match[2]}`;\n return null;\n },\n buildEmbedUrl: (id: string) => `https://open.spotify.com/embed/${id}`,\n aspectRatio: { width: 300, height: 380 }, // Spotify player is more square\n },\n\n // SoundCloud\n {\n type: 'soundcloud',\n name: 'SoundCloud',\n patterns: [\n /soundcloud\\.com\\/([a-zA-Z0-9_-]+)\\/([a-zA-Z0-9_-]+)/,\n ],\n extractId: (url: string) => url,\n buildEmbedUrl: (_id: string, url: string) =>\n `https://w.soundcloud.com/player/?url=${encodeURIComponent(url)}&color=%23ff5500&auto_play=false&hide_related=true&show_comments=false&show_user=true&show_reposts=false&show_teaser=false`,\n aspectRatio: { width: 100, height: 166 }, // SoundCloud is tall and narrow\n },\n\n // Google Maps\n {\n type: 'google-maps',\n name: 'Google Maps',\n patterns: [\n /google\\.com\\/maps\\/embed/,\n /google\\.com\\/maps\\/place/,\n /google\\.com\\/maps\\/@/,\n /maps\\.google\\.com/,\n ],\n extractId: (url: string) => url,\n buildEmbedUrl: (_id: string, url: string) => {\n // If it's already an embed URL, return as is\n if (url.includes('/maps/embed')) return url;\n // Otherwise, try to convert to embed format\n return `https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d0!2d0!3d0!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s${encodeURIComponent(url)}!5e0!3m2!1sen!2sus!4v0`;\n },\n aspectRatio: { width: 16, height: 9 },\n },\n];\n\n// ============================================================================\n// Provider Detection & Parsing\n// ============================================================================\n\n/**\n * Get provider config by type\n */\nexport function getProviderConfig(type: EmbedProviderType): ProviderConfig | undefined {\n return PROVIDER_CONFIGS.find((config) => config.type === type);\n}\n\n/**\n * Detect provider type from URL\n */\nexport function detectProvider(url: string): EmbedProviderType {\n const normalizedUrl = url.toLowerCase().trim();\n\n for (const config of PROVIDER_CONFIGS) {\n for (const pattern of config.patterns) {\n if (pattern.test(normalizedUrl)) {\n return config.type;\n }\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Check if URL is a valid embed URL\n */\nexport function isEmbedUrl(url: string): boolean {\n return detectProvider(url) !== 'unknown';\n}\n\n/**\n * Parse URL and extract provider info\n */\nexport function parseEmbedUrl(url: string): EmbedProvider | null {\n if (!url) return null;\n\n try {\n const providerType = detectProvider(url);\n\n if (providerType === 'unknown') {\n return {\n type: 'unknown',\n id: url,\n url,\n embedUrl: url,\n };\n }\n\n const config = getProviderConfig(providerType);\n if (!config) return null;\n\n const id = config.extractId(url);\n if (!id) return null;\n\n const embedUrl = config.buildEmbedUrl(id, url);\n\n return {\n type: providerType,\n id,\n url,\n embedUrl,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Get aspect ratio for provider\n */\nexport function getProviderAspectRatio(type: EmbedProviderType): EmbedAspectRatio {\n const config = getProviderConfig(type);\n return config?.aspectRatio ?? { width: 16, height: 9 };\n}\n\n/**\n * Calculate dimensions based on aspect ratio and max width\n */\nexport function calculateEmbedDimensions(\n type: EmbedProviderType,\n maxWidth: number = 650,\n): { width: number; height: number } {\n const aspectRatio = getProviderAspectRatio(type);\n const width = maxWidth;\n const height = Math.round((maxWidth * aspectRatio.height) / aspectRatio.width);\n\n return { width, height };\n}\n\n/**\n * Get oEmbed URL for provider\n */\nexport function getOEmbedUrl(url: string): string | null {\n const providerType = detectProvider(url);\n const config = getProviderConfig(providerType);\n\n if (!config?.oEmbedUrl) return null;\n\n return config.oEmbedUrl(url);\n}\n\n/**\n * Get list of supported providers for display\n */\nexport function getSupportedProviders(): { type: EmbedProviderType; name: string }[] {\n return PROVIDER_CONFIGS.map((config) => ({\n type: config.type,\n name: config.name,\n }));\n}\n\n// ============================================================================\n// Legacy exports (for backward compatibility)\n// ============================================================================\n\nexport const getProvider = detectProvider;\n\nexport const ProviderGetters: Record<EmbedProviderType, (url: string) => string | null> =\n PROVIDER_CONFIGS.reduce<Record<EmbedProviderType, (url: string) => string | null>>(\n (result, config) => ({\n ...result,\n [config.type]: config.extractId,\n }),\n {} as Record<EmbedProviderType, (url: string) => string | null>,\n );\n","import type { EmbedProviderMeta, OEmbedResponse } from '../types';\nimport { getOEmbedUrl } from './providers';\n\n/**\n * Fetch oEmbed data for a URL\n * Note: This requires CORS support or a proxy for most providers\n */\nexport async function fetchOEmbed(url: string): Promise<OEmbedResponse | null> {\n const oEmbedUrl = getOEmbedUrl(url);\n\n if (!oEmbedUrl) {\n return null;\n }\n\n try {\n const response = await fetch(oEmbedUrl);\n\n if (!response.ok) {\n return null;\n }\n\n const data: OEmbedResponse = await response.json();\n return data;\n } catch {\n // oEmbed often fails due to CORS, this is expected\n return null;\n }\n}\n\n/**\n * Extract provider metadata from oEmbed response\n */\nexport function extractProviderMeta(oembedData: OEmbedResponse | null): EmbedProviderMeta | undefined {\n if (!oembedData) return undefined;\n\n return {\n title: oembedData.title,\n description: undefined, // oEmbed doesn't usually include description\n thumbnailUrl: oembedData.thumbnail_url,\n authorName: oembedData.author_name,\n authorUrl: oembedData.author_url,\n };\n}\n\n/**\n * Fetch oEmbed data via a proxy (for production use)\n * You can implement your own proxy endpoint\n */\nexport async function fetchOEmbedViaProxy(\n url: string,\n proxyUrl: string,\n): Promise<OEmbedResponse | null> {\n try {\n const response = await fetch(`${proxyUrl}?url=${encodeURIComponent(url)}`);\n\n if (!response.ok) {\n return null;\n }\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\n","import type { YooEditor, YooptaPathIndex } from '@yoopta/editor';\nimport { Blocks, Elements, buildBlockData, generateId } from '@yoopta/editor';\n\nimport type {\n EmbedElement,\n EmbedElementProps,\n EmbedProvider,\n EmbedProviderMeta,\n EmbedSizes,\n} from '../types';\nimport {\n calculateEmbedDimensions,\n isEmbedUrl,\n parseEmbedUrl,\n} from '../utils/providers';\nimport { extractProviderMeta, fetchOEmbed } from '../utils/oembed';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype EmbedElementOptions = {\n props?: Partial<EmbedElementProps>;\n};\n\ntype InsertEmbedOptions = EmbedElementOptions & {\n at?: YooptaPathIndex;\n focus?: boolean;\n};\n\ntype InsertEmbedFromUrlOptions = {\n url: string;\n at?: YooptaPathIndex;\n focus?: boolean;\n fetchMeta?: boolean;\n maxWidth?: number;\n};\n\ntype UpdateEmbedUrlOptions = {\n blockId: string;\n url: string;\n fetchMeta?: boolean;\n maxWidth?: number;\n};\n\n// ============================================================================\n// Commands Type\n// ============================================================================\n\nexport type EmbedCommandsType = {\n buildEmbedElements: (editor: YooEditor, options?: Partial<EmbedElementOptions>) => EmbedElement;\n insertEmbed: (editor: YooEditor, options?: Partial<InsertEmbedOptions>) => void;\n insertEmbedFromUrl: (editor: YooEditor, options: InsertEmbedFromUrlOptions) => Promise<string | null>;\n deleteEmbed: (editor: YooEditor, blockId: string) => void;\n updateEmbed: (editor: YooEditor, blockId: string, props: Partial<EmbedElementProps>) => void;\n updateEmbedUrl: (editor: YooEditor, options: UpdateEmbedUrlOptions) => Promise<void>;\n updateEmbedSizes: (editor: YooEditor, blockId: string, sizes: EmbedSizes) => void;\n isValidEmbedUrl: (editor: YooEditor, url: string) => boolean;\n parseUrl: (editor: YooEditor, url: string) => EmbedProvider | null;\n};\n\n// ============================================================================\n// Commands Implementation\n// ============================================================================\n\nexport const EmbedCommands: EmbedCommandsType = {\n /**\n * Build embed element with default or custom props\n */\n buildEmbedElements: (editor: YooEditor, options = {}): EmbedElement => {\n const defaultSizes = { width: 650, height: 400 };\n\n const embedProps: EmbedElementProps = {\n provider: options.props?.provider ?? null,\n sizes: options.props?.sizes ?? defaultSizes,\n nodeType: 'void',\n };\n\n return {\n id: generateId(),\n type: 'embed',\n children: [{ text: '' }],\n props: embedProps,\n };\n },\n\n /**\n * Insert embed block with optional props\n */\n insertEmbed: (editor: YooEditor, options = {}): void => {\n const { at, focus, props } = options;\n const embed = EmbedCommands.buildEmbedElements(editor, { props });\n\n const block = buildBlockData({\n value: [embed],\n type: 'Embed',\n meta: { align: 'center', depth: 0 },\n });\n\n Blocks.insertBlock(editor, block.type, { focus, at, blockData: block });\n },\n\n /**\n * Insert embed from URL with automatic provider detection\n */\n insertEmbedFromUrl: async (\n editor: YooEditor,\n options: InsertEmbedFromUrlOptions,\n ): Promise<string | null> => {\n const { url, at, focus, fetchMeta = false, maxWidth = 650 } = options;\n\n // Parse the URL\n const provider = parseEmbedUrl(url);\n if (!provider) {\n console.warn('[Embed] Could not parse URL:', url);\n return null;\n }\n\n // Calculate dimensions based on provider aspect ratio\n const sizes = calculateEmbedDimensions(provider.type, maxWidth);\n\n // Optionally fetch oEmbed metadata\n let meta: EmbedProviderMeta | undefined;\n if (fetchMeta) {\n try {\n const oembedData = await fetchOEmbed(url);\n meta = extractProviderMeta(oembedData);\n } catch {\n // Silently fail - metadata is optional\n }\n }\n\n const providerWithMeta: EmbedProvider = {\n ...provider,\n meta,\n };\n\n // Build and insert the embed\n const embed = EmbedCommands.buildEmbedElements(editor, {\n props: {\n provider: providerWithMeta,\n sizes,\n },\n });\n\n const block = buildBlockData({\n value: [embed],\n type: 'Embed',\n meta: { align: 'center', depth: 0 },\n });\n\n Blocks.insertBlock(editor, block.type, { focus, at, blockData: block });\n\n return block.id;\n },\n\n /**\n * Delete embed block\n */\n deleteEmbed: (editor: YooEditor, blockId: string): void => {\n Blocks.deleteBlock(editor, { blockId });\n },\n\n /**\n * Update embed element props\n */\n updateEmbed: (editor: YooEditor, blockId: string, props: Partial<EmbedElementProps>): void => {\n Elements.updateElement(editor, { blockId, type: 'embed', props });\n },\n\n /**\n * Update embed URL (re-parses and updates provider)\n */\n updateEmbedUrl: async (editor: YooEditor, options: UpdateEmbedUrlOptions): Promise<void> => {\n const { blockId, url, fetchMeta = false, maxWidth = 650 } = options;\n\n const provider = parseEmbedUrl(url);\n if (!provider) {\n console.warn('[Embed] Could not parse URL:', url);\n return;\n }\n\n const sizes = calculateEmbedDimensions(provider.type, maxWidth);\n\n let meta: EmbedProviderMeta | undefined;\n if (fetchMeta) {\n try {\n const oembedData = await fetchOEmbed(url);\n meta = extractProviderMeta(oembedData);\n } catch {\n // Silently fail\n }\n }\n\n const providerWithMeta: EmbedProvider = {\n ...provider,\n meta,\n };\n\n EmbedCommands.updateEmbed(editor, blockId, {\n provider: providerWithMeta,\n sizes,\n });\n },\n\n /**\n * Update embed sizes only\n */\n updateEmbedSizes: (editor: YooEditor, blockId: string, sizes: EmbedSizes): void => {\n EmbedCommands.updateEmbed(editor, blockId, { sizes });\n },\n\n /**\n * Check if URL is a valid embed URL\n */\n isValidEmbedUrl: (_editor: YooEditor, url: string): boolean => {\n return isEmbedUrl(url);\n },\n\n /**\n * Parse URL and return provider info (utility)\n */\n parseUrl: (_editor: YooEditor, url: string): EmbedProvider | null => {\n return parseEmbedUrl(url);\n },\n};\n","import { YooptaPlugin, generateId } from '@yoopta/editor';\n\nimport { EmbedCommands } from '../commands';\nimport type { EmbedElementMap, EmbedElementProps, EmbedPluginOptions } from '../types';\nimport { parseEmbedUrl } from '../utils/providers';\n\nconst ALIGNS_TO_JUSTIFY: Record<string, string> = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n};\n\nconst DEFAULT_EMBED_PROPS: EmbedElementProps = {\n provider: null,\n sizes: { width: 650, height: 400 },\n nodeType: 'void',\n};\n\nconst Embed = new YooptaPlugin<EmbedElementMap, EmbedPluginOptions>({\n type: 'Embed',\n elements: (\n <embed\n render={(props) => <div contentEditable={false} {...props.attributes}>\n <iframe\n title={props.element.props.provider?.type}\n src={props.element.props.provider?.embedUrl}\n width={props.element.props.sizes.width}\n height={props.element.props.sizes.height}\n allowFullScreen\n frameBorder={0}\n />\n {props.children}\n </div>}\n props={DEFAULT_EMBED_PROPS}\n nodeType=\"void\"\n />\n ),\n options: {\n display: {\n title: 'Embed',\n description: 'Embed videos, maps, code, and more',\n },\n shortcuts: ['embed', 'youtube', 'vimeo', 'twitter', 'instagram', 'figma', 'codepen', 'spotify'],\n maxWidth: 650,\n },\n commands: EmbedCommands,\n parsers: {\n html: {\n deserialize: {\n nodeNames: ['IFRAME', 'DIV'],\n parse: (el) => {\n // Handle IFRAME elements\n if (el.nodeName === 'IFRAME') {\n const src = el.getAttribute('src');\n if (!src) return;\n\n const provider = parseEmbedUrl(src);\n if (!provider) return;\n\n const width = parseInt(el.getAttribute('width') ?? '650', 10);\n const height = parseInt(el.getAttribute('height') ?? '400', 10);\n\n return {\n id: generateId(),\n type: 'embed',\n children: [{ text: '' }],\n props: {\n provider,\n sizes: { width, height },\n nodeType: 'void',\n } as EmbedElementProps,\n };\n }\n\n // Handle DIV with data-yoopta-embed attribute\n if (el.nodeName === 'DIV' && el.hasAttribute('data-yoopta-embed')) {\n const iframe = el.querySelector('iframe');\n if (!iframe) return;\n\n const src = iframe.getAttribute('src');\n if (!src) return;\n\n const provider = parseEmbedUrl(src);\n if (!provider) return;\n\n const width = parseInt(iframe.getAttribute('width') ?? '650', 10);\n const height = parseInt(iframe.getAttribute('height') ?? '400', 10);\n\n return {\n id: generateId(),\n type: 'embed',\n children: [{ text: '' }],\n props: {\n provider,\n sizes: { width, height },\n nodeType: 'void',\n } as EmbedElementProps,\n };\n }\n },\n },\n serialize: (element, _text, blockMeta) => {\n const { align = 'center', depth = 0 } = blockMeta ?? {};\n const justify = ALIGNS_TO_JUSTIFY[align] ?? 'center';\n const { provider, sizes } = element.props as EmbedElementProps;\n\n if (!provider) {\n return `<div data-meta-align=\"${align}\" data-meta-depth=\"${depth}\" style=\"margin-left: ${depth * 20}px;\"><!-- Empty embed --></div>`;\n }\n\n return `<div data-yoopta-embed data-provider=\"${provider.type}\" data-meta-align=\"${align}\" data-meta-depth=\"${depth}\" style=\"margin-left: ${depth * 20}px; display: flex; width: 100%; justify-content: ${justify};\">\n <iframe src=\"${provider.embedUrl}\" width=\"${sizes.width}\" height=\"${sizes.height}\" frameborder=\"0\" allowfullscreen></iframe>\n </div>`;\n },\n },\n markdown: {\n serialize: (element) => {\n const { provider } = element.props as EmbedElementProps;\n if (!provider) return '';\n\n // Markdown doesn't support embeds natively, output as link\n return `[${provider.meta?.title ?? provider.type}](${provider.url})\\n`;\n },\n },\n email: {\n serialize: (element, _text, blockMeta) => {\n const { align = 'center', depth = 0 } = blockMeta ?? {};\n const justify = ALIGNS_TO_JUSTIFY[align] ?? 'center';\n const { provider, sizes } = element.props as EmbedElementProps;\n\n if (!provider) return '';\n\n // Email clients don't support iframes, show link with thumbnail if available\n const thumbnailHtml = provider.meta?.thumbnailUrl\n ? `<img src=\"${provider.meta.thumbnailUrl}\" width=\"${sizes.width}\" height=\"${sizes.height}\" alt=\"${provider.meta?.title ?? 'Embedded content'}\" style=\"border-radius: 8px; max-width: 100%;\" />`\n : `<div style=\"width: ${sizes.width}px; height: ${sizes.height}px; background: #f0f0f0; border-radius: 8px; display: flex; align-items: center; justify-content: center;\">\n <span style=\"color: #666;\">Click to view ${provider.type} content</span>\n </div>`;\n\n return `\n <table style=\"width: 100%;\">\n <tbody>\n <tr>\n <td style=\"margin-left: ${depth * 20}px; display: flex; justify-content: ${justify}; padding: 1rem 0;\">\n <a href=\"${provider.url}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"text-decoration: none;\">\n ${thumbnailHtml}\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n `;\n },\n },\n },\n});\n\nexport { Embed };\n","import { useCallback, useState } from 'react';\n\nimport type { EmbedProvider, EmbedProviderMeta, EmbedSizes } from '../types';\nimport { extractProviderMeta, fetchOEmbed } from '../utils/oembed';\nimport { calculateEmbedDimensions, isEmbedUrl, parseEmbedUrl } from '../utils/providers';\n\nexport type UseEmbedUrlState = {\n url: string;\n provider: EmbedProvider | null;\n sizes: EmbedSizes;\n isValid: boolean;\n isLoading: boolean;\n error: string | null;\n};\n\nexport type UseEmbedUrlActions = {\n setUrl: (url: string) => void;\n parseUrl: (url: string) => EmbedProvider | null;\n fetchMeta: () => Promise<EmbedProviderMeta | undefined>;\n reset: () => void;\n};\n\nexport type UseEmbedUrlReturn = UseEmbedUrlState & UseEmbedUrlActions;\n\nconst DEFAULT_STATE: UseEmbedUrlState = {\n url: '',\n provider: null,\n sizes: { width: 650, height: 400 },\n isValid: false,\n isLoading: false,\n error: null,\n};\n\nexport function useEmbedUrl(maxWidth: number = 650): UseEmbedUrlReturn {\n const [state, setState] = useState<UseEmbedUrlState>(DEFAULT_STATE);\n\n const setUrl = useCallback(\n (url: string) => {\n const trimmedUrl = url.trim();\n\n if (!trimmedUrl) {\n setState(DEFAULT_STATE);\n return;\n }\n\n const isValid = isEmbedUrl(trimmedUrl);\n const provider = parseEmbedUrl(trimmedUrl);\n\n let sizes = { width: maxWidth, height: 400 };\n if (provider) {\n sizes = calculateEmbedDimensions(provider.type, maxWidth);\n }\n\n setState({\n url: trimmedUrl,\n provider,\n sizes,\n isValid,\n isLoading: false,\n error: isValid ? null : 'Unsupported URL format',\n });\n },\n [maxWidth],\n );\n\n const parseUrl = useCallback((url: string): EmbedProvider | null => {\n return parseEmbedUrl(url);\n }, []);\n\n const fetchMeta = useCallback(async (): Promise<EmbedProviderMeta | undefined> => {\n if (!state.url || !state.isValid) {\n return undefined;\n }\n\n setState((prev) => ({ ...prev, isLoading: true, error: null }));\n\n try {\n const oembedData = await fetchOEmbed(state.url);\n const meta = extractProviderMeta(oembedData);\n\n if (meta && state.provider) {\n setState((prev) => ({\n ...prev,\n provider: prev.provider ? { ...prev.provider, meta } : null,\n isLoading: false,\n }));\n } else {\n setState((prev) => ({ ...prev, isLoading: false }));\n }\n\n return meta;\n } catch (error) {\n setState((prev) => ({\n ...prev,\n isLoading: false,\n error: 'Failed to fetch metadata',\n }));\n return undefined;\n }\n }, [state.url, state.isValid, state.provider]);\n\n const reset = useCallback(() => {\n setState(DEFAULT_STATE);\n }, []);\n\n return {\n ...state,\n setUrl,\n parseUrl,\n fetchMeta,\n reset,\n };\n}\n\n","// Plugin\nimport { Embed } from './plugin/embed-plugin';\n\n// Commands\nexport { EmbedCommands } from './commands';\nexport type { EmbedCommandsType } from './commands';\n\n// Types\nexport type {\n EmbedAspectRatio,\n EmbedElement,\n EmbedElementMap,\n EmbedElementProps,\n EmbedPluginElements,\n EmbedPluginOptions,\n EmbedProvider,\n EmbedProviderMeta,\n EmbedProviderRenderProps,\n EmbedProviderType,\n EmbedSizes,\n OEmbedResponse,\n ProviderConfig,\n} from './types';\n\n// Hooks\nexport { useEmbedUrl } from './hooks/useEmbedUrl';\nexport type { UseEmbedUrlReturn, UseEmbedUrlState, UseEmbedUrlActions } from './hooks/useEmbedUrl';\n\n// Utils\nexport {\n calculateEmbedDimensions,\n detectProvider,\n getOEmbedUrl,\n getProviderAspectRatio,\n getProviderConfig,\n getSupportedProviders,\n isEmbedUrl,\n parseEmbedUrl,\n PROVIDER_CONFIGS,\n} from './utils/providers';\n\nexport {\n extractProviderMeta,\n fetchOEmbed,\n fetchOEmbedViaProxy,\n} from './utils/oembed';\n\n// Default export\nexport default Embed;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|