@rtif-sdk/web 1.0.0 → 1.3.0

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.
Files changed (70) hide show
  1. package/dist/block-drag-handler.d.ts +5 -0
  2. package/dist/block-drag-handler.d.ts.map +1 -1
  3. package/dist/block-drag-handler.js +32 -3
  4. package/dist/block-drag-handler.js.map +1 -1
  5. package/dist/block-renderer.d.ts +12 -6
  6. package/dist/block-renderer.d.ts.map +1 -1
  7. package/dist/block-renderer.js +98 -9
  8. package/dist/block-renderer.js.map +1 -1
  9. package/dist/block-type-dropdown.d.ts +78 -0
  10. package/dist/block-type-dropdown.d.ts.map +1 -0
  11. package/dist/block-type-dropdown.js +276 -0
  12. package/dist/block-type-dropdown.js.map +1 -0
  13. package/dist/color-picker.d.ts +91 -0
  14. package/dist/color-picker.d.ts.map +1 -0
  15. package/dist/color-picker.js +346 -0
  16. package/dist/color-picker.js.map +1 -0
  17. package/dist/content-handlers.d.ts +7 -8
  18. package/dist/content-handlers.d.ts.map +1 -1
  19. package/dist/content-handlers.js +122 -93
  20. package/dist/content-handlers.js.map +1 -1
  21. package/dist/editor.d.ts.map +1 -1
  22. package/dist/editor.js +224 -15
  23. package/dist/editor.js.map +1 -1
  24. package/dist/embed-utils.d.ts +148 -0
  25. package/dist/embed-utils.d.ts.map +1 -0
  26. package/dist/embed-utils.js +197 -0
  27. package/dist/embed-utils.js.map +1 -0
  28. package/dist/font-family-picker.d.ts +105 -0
  29. package/dist/font-family-picker.d.ts.map +1 -0
  30. package/dist/font-family-picker.js +314 -0
  31. package/dist/font-family-picker.js.map +1 -0
  32. package/dist/font-size-picker.d.ts +82 -0
  33. package/dist/font-size-picker.d.ts.map +1 -0
  34. package/dist/font-size-picker.js +290 -0
  35. package/dist/font-size-picker.js.map +1 -0
  36. package/dist/index.d.ts +18 -4
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +30 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/plugins/index.d.ts +2 -1
  41. package/dist/plugins/index.d.ts.map +1 -1
  42. package/dist/plugins/index.js +1 -1
  43. package/dist/plugins/index.js.map +1 -1
  44. package/dist/plugins/link-plugin.d.ts +4 -0
  45. package/dist/plugins/link-plugin.d.ts.map +1 -1
  46. package/dist/plugins/link-plugin.js +17 -0
  47. package/dist/plugins/link-plugin.js.map +1 -1
  48. package/dist/plugins/mark-utils.d.ts +31 -0
  49. package/dist/plugins/mark-utils.d.ts.map +1 -1
  50. package/dist/plugins/mark-utils.js +46 -0
  51. package/dist/plugins/mark-utils.js.map +1 -1
  52. package/dist/renderer.d.ts +31 -2
  53. package/dist/renderer.d.ts.map +1 -1
  54. package/dist/renderer.js +131 -55
  55. package/dist/renderer.js.map +1 -1
  56. package/dist/selection-sync.d.ts +2 -26
  57. package/dist/selection-sync.d.ts.map +1 -1
  58. package/dist/selection-sync.js +49 -13
  59. package/dist/selection-sync.js.map +1 -1
  60. package/dist/spatial-index.d.ts +203 -0
  61. package/dist/spatial-index.d.ts.map +1 -0
  62. package/dist/spatial-index.js +211 -0
  63. package/dist/spatial-index.js.map +1 -0
  64. package/dist/types.d.ts +93 -0
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/virtual-viewport.d.ts +241 -0
  67. package/dist/virtual-viewport.d.ts.map +1 -0
  68. package/dist/virtual-viewport.js +584 -0
  69. package/dist/virtual-viewport.js.map +1 -0
  70. package/package.json +17 -5
package/dist/editor.js CHANGED
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { resolve } from '@rtif-sdk/core';
13
13
  import { renderInitial, reconcile } from './renderer.js';
14
+ import { createVirtualViewport } from './virtual-viewport.js';
14
15
  import { buildBlockOffsetCache, domPointToRtifOffset, readDomSelection, setDomSelection, isSuppressed, resetSuppression, } from './selection-sync.js';
15
16
  import { InputBridge } from './input-bridge.js';
16
17
  import { CompositionHandler } from './composition.js';
@@ -35,6 +36,9 @@ import { createCursorRectAPI } from './cursor-rect.js';
35
36
  import { createTriggerManager } from './trigger-manager.js';
36
37
  import { findContiguousMarkRange, adjustOffsetAroundAtomicMarks, adjustOffsetAroundAtomicBlocks } from './plugins/mark-utils.js';
37
38
  import { installWebPlugins } from './plugin-kit.js';
39
+ import { createLinkPopover } from './link-popover.js';
40
+ import { LinkCommands } from './plugins/link-plugin.js';
41
+ import { createPerfInstrumentation } from './perf.js';
38
42
  // ---------------------------------------------------------------------------
39
43
  // Factory
40
44
  // ---------------------------------------------------------------------------
@@ -72,6 +76,14 @@ export function createWebEditor(config) {
72
76
  const autoFocus = config.autoFocus ?? false;
73
77
  let destroyed = false;
74
78
  // -------------------------------------------------------------------
79
+ // Performance instrumentation
80
+ // -------------------------------------------------------------------
81
+ const perfEnabled = config.perf != null && config.perf !== false;
82
+ const perfInstrumentation = perfEnabled ? createPerfInstrumentation() : null;
83
+ if (perfInstrumentation && typeof config.perf === 'object') {
84
+ perfInstrumentation.setObserver(config.perf);
85
+ }
86
+ // -------------------------------------------------------------------
75
87
  // Set up the contenteditable root
76
88
  // -------------------------------------------------------------------
77
89
  root.setAttribute('contenteditable', readOnly ? 'false' : 'true');
@@ -108,9 +120,30 @@ export function createWebEditor(config) {
108
120
  installWebPlugins(config.webPlugins, engine, markRenderers, blockRenderers);
109
121
  }
110
122
  // -------------------------------------------------------------------
123
+ // Virtualization config
124
+ // -------------------------------------------------------------------
125
+ const virtConfig = normalizeVirtualizeConfig(config.virtualize);
126
+ const shouldVirtualize = virtConfig !== null &&
127
+ engine.state.doc.blocks.length >= (virtConfig.threshold ?? 100);
128
+ // -------------------------------------------------------------------
111
129
  // Initial render
112
130
  // -------------------------------------------------------------------
113
- renderInitial(root, engine.state.doc, markRenderers, blockRenderers);
131
+ // Persistent blockId → DOM element Map for O(1) lookups in reconcile + selection sync
132
+ const blockElementMap = new Map();
133
+ let viewport = null;
134
+ if (shouldVirtualize && virtConfig) {
135
+ viewport = createVirtualViewport({
136
+ root,
137
+ bufferSize: virtConfig.bufferSize,
138
+ estimatedBlockHeight: virtConfig.estimatedBlockHeight,
139
+ blockTypeHeights: virtConfig.blockTypeHeights,
140
+ scrollContainer: virtConfig.scrollContainer,
141
+ }, engine.state.doc);
142
+ viewport.renderInitial(engine.state.doc, markRenderers, blockRenderers, blockElementMap);
143
+ }
144
+ else {
145
+ renderInitial(root, engine.state.doc, markRenderers, blockRenderers, blockElementMap);
146
+ }
114
147
  // -------------------------------------------------------------------
115
148
  // Command bus
116
149
  // -------------------------------------------------------------------
@@ -188,7 +221,7 @@ export function createWebEditor(config) {
188
221
  const contentPipeline = createContentPipeline();
189
222
  // Register built-in handlers (priority: RTIF JSON -80, image -85, HTML -90,
190
223
  // URL -95, plain text -100, file drop -105)
191
- contentPipeline.register(createRtifPasteHandler(() => generateId()));
224
+ contentPipeline.register(createRtifPasteHandler());
192
225
  contentPipeline.register(createImageContentHandler());
193
226
  contentPipeline.register(createHtmlPasteHandler());
194
227
  contentPipeline.register(createUrlContentHandler());
@@ -218,6 +251,7 @@ export function createWebEditor(config) {
218
251
  getDoc: () => engine.state.doc,
219
252
  dispatch: (ops) => engine.dispatch(ops),
220
253
  isReadOnly: () => readOnly,
254
+ getBlockElementMap: () => blockElementMap,
221
255
  });
222
256
  // -------------------------------------------------------------------
223
257
  // Paste handler (via content pipeline)
@@ -258,7 +292,7 @@ export function createWebEditor(config) {
258
292
  }
259
293
  else {
260
294
  // Find nearest block for between-blocks indicator
261
- const blockEl = findNearestBlock(root, e.clientY);
295
+ const blockEl = findNearestBlock(root, e.clientY, engine.state.doc, blockElementMap);
262
296
  if (blockEl) {
263
297
  const blockRect = blockEl.getBoundingClientRect();
264
298
  const midY = blockRect.top + blockRect.height / 2;
@@ -310,7 +344,7 @@ export function createWebEditor(config) {
310
344
  // Programmatic selection change (Cmd+A, Cmd+Home/End):
311
345
  // update engine state AND sync to DOM.
312
346
  engine.setSelection(sel);
313
- setDomSelection(root, engine.state.doc, sel);
347
+ setDomSelection(root, engine.state.doc, sel, blockElementMap);
314
348
  },
315
349
  isMac: () => isMac(),
316
350
  });
@@ -349,6 +383,11 @@ export function createWebEditor(config) {
349
383
  return;
350
384
  if (compositionHandler.isComposing())
351
385
  return;
386
+ // Early containment check: skip if selection is outside this editor
387
+ const domSel = document.getSelection();
388
+ if (!domSel || !domSel.focusNode || !root.contains(domSel.focusNode)) {
389
+ return;
390
+ }
352
391
  const cache = buildBlockOffsetCache(engine.state.doc);
353
392
  const sel = readDomSelection(root, cache);
354
393
  if (sel === null)
@@ -358,7 +397,7 @@ export function createWebEditor(config) {
358
397
  if (adjustedSel !== sel) {
359
398
  // Selection was adjusted — update engine AND re-sync DOM
360
399
  engine.setSelection(adjustedSel);
361
- setDomSelection(root, engine.state.doc, adjustedSel);
400
+ setDomSelection(root, engine.state.doc, adjustedSel, blockElementMap);
362
401
  return;
363
402
  }
364
403
  // Adjust offsets that land inside atomic blocks (HR, image, embed)
@@ -378,7 +417,7 @@ export function createWebEditor(config) {
378
417
  focus: { offset: adjFocus },
379
418
  };
380
419
  engine.setSelection(blockAdjustedSel);
381
- setDomSelection(root, engine.state.doc, blockAdjustedSel);
420
+ setDomSelection(root, engine.state.doc, blockAdjustedSel, blockElementMap);
382
421
  return;
383
422
  }
384
423
  // Update engine selection without triggering a dispatch
@@ -423,19 +462,63 @@ export function createWebEditor(config) {
423
462
  // -------------------------------------------------------------------
424
463
  // Engine onChange — reconcile DOM and sync selection
425
464
  // -------------------------------------------------------------------
426
- const unsubscribeOnChange = engine.onChange((state) => {
427
- if (destroyed)
428
- return;
465
+ // Batched reconciliation: when multiple onChange events fire in the same
466
+ // synchronous turn (e.g., from plugin afterApply → engine.dispatch), only
467
+ // the final state is reconciled. The first onChange in a synchronous turn
468
+ // is applied immediately; subsequent ones replace `pendingState` and a
469
+ // microtask flushes the final state.
470
+ let pendingState = null;
471
+ let isReconciling = false;
472
+ const doReconcile = (state) => {
473
+ perfInstrumentation?.markReconcileStart();
429
474
  const composingBlockId = compositionHandler.getComposingBlockId();
430
- reconcile(root, prevDoc, state.doc, composingBlockId, markRenderers, blockRenderers);
475
+ if (viewport) {
476
+ // Virtualized path: viewport.reconcile handles composing block pinning
477
+ // internally via the composingBlockId parameter — no external pin/unpin.
478
+ viewport.reconcile(prevDoc, state.doc, composingBlockId, markRenderers, blockRenderers, blockElementMap);
479
+ }
480
+ else {
481
+ reconcile(root, prevDoc, state.doc, composingBlockId, markRenderers, blockRenderers, blockElementMap);
482
+ }
431
483
  prevDoc = state.doc;
484
+ perfInstrumentation?.markReconcileEnd();
432
485
  // Sync selection to DOM (unless composing)
433
486
  if (!compositionHandler.isComposing()) {
434
- setDomSelection(root, state.doc, state.selection);
487
+ perfInstrumentation?.markSelectionSyncStart();
488
+ // Ensure selection endpoints are rendered before setting DOM selection
489
+ if (viewport) {
490
+ ensureSelectionRendered(viewport, state.doc, state.selection);
491
+ }
492
+ setDomSelection(root, state.doc, state.selection, blockElementMap);
435
493
  scrollToCursor(root);
494
+ perfInstrumentation?.markSelectionSyncEnd();
436
495
  }
437
496
  // Update placeholder visibility
438
497
  updatePlaceholder(root, state.doc);
498
+ perfInstrumentation?.collect();
499
+ };
500
+ const unsubscribeOnChange = engine.onChange((state) => {
501
+ if (destroyed)
502
+ return;
503
+ if (isReconciling) {
504
+ // Nested dispatch during reconciliation — defer to microtask
505
+ pendingState = state;
506
+ queueMicrotask(() => {
507
+ if (destroyed || !pendingState)
508
+ return;
509
+ const deferred = pendingState;
510
+ pendingState = null;
511
+ doReconcile(deferred);
512
+ });
513
+ return;
514
+ }
515
+ isReconciling = true;
516
+ try {
517
+ doReconcile(state);
518
+ }
519
+ finally {
520
+ isReconciling = false;
521
+ }
439
522
  });
440
523
  // -------------------------------------------------------------------
441
524
  // Exclusive mark boundary helper
@@ -510,6 +593,36 @@ export function createWebEditor(config) {
510
593
  e.preventDefault();
511
594
  };
512
595
  // -------------------------------------------------------------------
596
+ // Ctrl+F handler — expand all blocks for browser find (virtualized only)
597
+ // -------------------------------------------------------------------
598
+ let expandRestoreFn = null;
599
+ const onCtrlF = (e) => {
600
+ if (!viewport)
601
+ return;
602
+ const mod = isMac() ? e.metaKey : e.ctrlKey;
603
+ if (!mod || e.key !== 'f')
604
+ return;
605
+ // Expand all blocks so browser find can search them
606
+ if (!expandRestoreFn) {
607
+ expandRestoreFn = viewport.expandAll();
608
+ }
609
+ };
610
+ const onFocusRestore = () => {
611
+ if (expandRestoreFn) {
612
+ expandRestoreFn();
613
+ expandRestoreFn = null;
614
+ }
615
+ };
616
+ // -------------------------------------------------------------------
617
+ // Resize handler — recompute viewport on window resize (virtualized only)
618
+ // -------------------------------------------------------------------
619
+ const onResize = () => {
620
+ if (!viewport)
621
+ return;
622
+ viewport.onScroll();
623
+ viewport.measureHeights();
624
+ };
625
+ // -------------------------------------------------------------------
513
626
  // Attach all event listeners
514
627
  // -------------------------------------------------------------------
515
628
  shortcutHandler.attach();
@@ -530,6 +643,12 @@ export function createWebEditor(config) {
530
643
  // (all capture phase). TriggerManager/LinkPopover call e.preventDefault()
531
644
  // when they handle Escape, so defaultPrevented check prevents conflicts.
532
645
  root.addEventListener('keydown', onEscapeKeyDown, true);
646
+ // Virtualization-specific listeners
647
+ if (viewport) {
648
+ root.addEventListener('keydown', onCtrlF, true);
649
+ root.addEventListener('focus', onFocusRestore);
650
+ window.addEventListener('resize', onResize, { passive: true });
651
+ }
533
652
  // Initial placeholder update
534
653
  updatePlaceholder(root, engine.state.doc);
535
654
  // Auto-focus
@@ -537,9 +656,13 @@ export function createWebEditor(config) {
537
656
  root.focus();
538
657
  }
539
658
  // -------------------------------------------------------------------
659
+ // Auto-wire link popover
660
+ // -------------------------------------------------------------------
661
+ let linkPopoverHandle = null;
662
+ // -------------------------------------------------------------------
540
663
  // Return WebEditor handle
541
664
  // -------------------------------------------------------------------
542
- return {
665
+ const webEditor = {
543
666
  engine,
544
667
  commandBus,
545
668
  content: contentPipeline,
@@ -547,6 +670,9 @@ export function createWebEditor(config) {
547
670
  blockRenderers,
548
671
  triggers: triggerManager,
549
672
  cursorRect,
673
+ get linkPopover() { return linkPopoverHandle; },
674
+ perf: perfInstrumentation,
675
+ viewport,
550
676
  focus() {
551
677
  if (destroyed)
552
678
  return;
@@ -555,7 +681,7 @@ export function createWebEditor(config) {
555
681
  // reset the contenteditable's selection when focus leaves and returns
556
682
  // (e.g., after interacting with a popover). The engine is the source
557
683
  // of truth, so always sync after focusing.
558
- setDomSelection(root, engine.state.doc, engine.state.selection);
684
+ setDomSelection(root, engine.state.doc, engine.state.selection, blockElementMap);
559
685
  },
560
686
  blur() {
561
687
  if (destroyed)
@@ -571,6 +697,15 @@ export function createWebEditor(config) {
571
697
  if (destroyed)
572
698
  return;
573
699
  destroyed = true;
700
+ // Clean up auto-wired link popover
701
+ if (linkPopoverHandle) {
702
+ linkPopoverHandle.dispose();
703
+ try {
704
+ engine.exec(LinkCommands._UNWIRE_UI);
705
+ }
706
+ catch { /* engine may be destroyed */ }
707
+ linkPopoverHandle = null;
708
+ }
574
709
  // Detach event handlers
575
710
  shortcutHandler.detach();
576
711
  inputBridge.detach();
@@ -587,6 +722,13 @@ export function createWebEditor(config) {
587
722
  root.removeEventListener('drop', onDrop);
588
723
  root.removeEventListener('keydown', onEscapeKeyDown, true);
589
724
  document.removeEventListener('selectionchange', selectionChangeHandler);
725
+ // Remove virtualization-specific listeners
726
+ if (viewport) {
727
+ root.removeEventListener('keydown', onCtrlF, true);
728
+ root.removeEventListener('focus', onFocusRestore);
729
+ window.removeEventListener('resize', onResize);
730
+ viewport.destroy();
731
+ }
590
732
  // Unsubscribe from engine changes
591
733
  unsubscribeOnChange();
592
734
  unsubscribeOnSelectionChange();
@@ -601,6 +743,10 @@ export function createWebEditor(config) {
601
743
  // Reset composition handler
602
744
  compositionHandler.reset();
603
745
  resetSuppression();
746
+ // Clear block element map
747
+ blockElementMap.clear();
748
+ // Destroy performance instrumentation
749
+ perfInstrumentation?.destroy();
604
750
  // Remove contenteditable attributes
605
751
  root.removeAttribute('contenteditable');
606
752
  root.removeAttribute('role');
@@ -613,6 +759,12 @@ export function createWebEditor(config) {
613
759
  root.style.whiteSpace = '';
614
760
  },
615
761
  };
762
+ // Auto-wire link popover when link plugin is registered and not disabled/readOnly
763
+ if (config.linkPopover !== false && !readOnly && engine.canExecute(LinkCommands._WIRE_UI)) {
764
+ linkPopoverHandle = createLinkPopover(webEditor, root);
765
+ engine.exec(LinkCommands._WIRE_UI, linkPopoverHandle.show);
766
+ }
767
+ return webEditor;
616
768
  }
617
769
  // ---------------------------------------------------------------------------
618
770
  // Helpers
@@ -681,15 +833,40 @@ function getOffsetFromDropPoint(root, doc, clientX, clientY) {
681
833
  return null;
682
834
  }
683
835
  /**
684
- * Find the nearest block element to a given Y coordinate.
836
+ * Find the nearest rendered block element to a given Y coordinate.
685
837
  *
686
838
  * Used for positioning the drop indicator between blocks during drag-over.
839
+ * Only considers blocks that are actually in the DOM (drop targets must
840
+ * exist). Off-screen blocks (virtualized away) are skipped.
687
841
  *
688
842
  * @param root - The editor root element
689
843
  * @param clientY - The Y coordinate to find the nearest block to
690
844
  * @returns The nearest block element, or null if no blocks found
691
845
  */
692
- function findNearestBlock(root, clientY) {
846
+ function findNearestBlock(root, clientY, doc, blockElementMap) {
847
+ // Use persistent Map for O(1) element lookup (avoids querySelectorAll + n getBoundingClientRect)
848
+ if (doc && blockElementMap && blockElementMap.size > 0) {
849
+ let nearest = null;
850
+ let nearestDistance = Infinity;
851
+ for (const block of doc.blocks) {
852
+ const el = blockElementMap.get(block.id);
853
+ if (!el)
854
+ continue;
855
+ const rect = el.getBoundingClientRect();
856
+ const midY = rect.top + rect.height / 2;
857
+ const distance = Math.abs(clientY - midY);
858
+ if (distance < nearestDistance) {
859
+ nearestDistance = distance;
860
+ nearest = el;
861
+ }
862
+ else {
863
+ // Blocks are in document order; once distance starts increasing, we've found the nearest
864
+ break;
865
+ }
866
+ }
867
+ return nearest;
868
+ }
869
+ // Fallback: scan DOM children
693
870
  const blocks = root.querySelectorAll('[data-rtif-block]');
694
871
  if (blocks.length === 0)
695
872
  return null;
@@ -704,7 +881,39 @@ function findNearestBlock(root, clientY) {
704
881
  nearestDistance = distance;
705
882
  nearest = block;
706
883
  }
884
+ else {
885
+ break;
886
+ }
707
887
  }
708
888
  return nearest;
709
889
  }
890
+ /**
891
+ * Ensure that the blocks containing the selection anchor and focus are
892
+ * rendered in the DOM. Called before `setDomSelection()` when virtualization
893
+ * is active so that the cursor can be placed correctly.
894
+ */
895
+ function ensureSelectionRendered(vp, doc, sel) {
896
+ try {
897
+ const anchorResolved = resolve(doc, sel.anchor.offset);
898
+ vp.ensureRendered(anchorResolved.blockIndex);
899
+ if (sel.focus.offset !== sel.anchor.offset) {
900
+ const focusResolved = resolve(doc, sel.focus.offset);
901
+ vp.ensureRendered(focusResolved.blockIndex);
902
+ }
903
+ }
904
+ catch {
905
+ // Offset out of range — skip. The selection sync will handle gracefully.
906
+ }
907
+ }
908
+ /**
909
+ * Normalize the `virtualize` config option into a `VirtualizationConfig`
910
+ * object or `null` if explicitly disabled. Default is enabled (`true`).
911
+ */
912
+ function normalizeVirtualizeConfig(input) {
913
+ if (input === false)
914
+ return null;
915
+ if (input === undefined || input === true)
916
+ return {};
917
+ return input;
918
+ }
710
919
  //# sourceMappingURL=editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Embed utilities — pure URL transformation functions for provider-specific
3
+ * embed rendering.
4
+ *
5
+ * All functions are pure with zero DOM dependency. They convert a stored
6
+ * `(url, embedType)` pair into rendering configuration at render time,
7
+ * keeping the document model clean.
8
+ *
9
+ * @module
10
+ */
11
+ /**
12
+ * Known embed providers for provider-specific rendering.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const config = getEmbedRenderConfig('https://youtube.com/watch?v=abc', 'video');
17
+ * config.provider; // 'youtube'
18
+ * ```
19
+ */
20
+ export type EmbedProvider = 'youtube' | 'vimeo' | 'twitter' | 'generic';
21
+ /**
22
+ * Configuration used by the embed renderer to populate embed block content.
23
+ *
24
+ * Computed at render time from the block's `url` and `embedType` attrs.
25
+ * Video providers include an `iframeSrc` for embedding; non-video providers
26
+ * render as styled links or blockquotes.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const config = getEmbedRenderConfig('https://youtube.com/watch?v=dQw4w9WgXcQ', 'video');
31
+ * // {
32
+ * // provider: 'youtube',
33
+ * // iframeSrc: 'https://www.youtube.com/embed/dQw4w9WgXcQ',
34
+ * // title: 'YouTube video',
35
+ * // url: 'https://youtube.com/watch?v=dQw4w9WgXcQ',
36
+ * // displayUrl: 'youtube.com',
37
+ * // }
38
+ * ```
39
+ */
40
+ export interface EmbedRenderConfig {
41
+ /** The detected embed provider. */
42
+ readonly provider: EmbedProvider;
43
+ /** Embeddable iframe URL. Only present for video providers. */
44
+ readonly iframeSrc?: string;
45
+ /** Accessibility label for the embed. */
46
+ readonly title: string;
47
+ /** The original URL stored in the block. */
48
+ readonly url: string;
49
+ /** Hostname for display (strips `www.` prefix). */
50
+ readonly displayUrl: string;
51
+ }
52
+ /**
53
+ * Extract a YouTube video ID from a URL.
54
+ *
55
+ * Supports `youtube.com/watch?v=ID` and `youtu.be/ID` formats.
56
+ * Returns `null` if the URL is not a recognized YouTube URL.
57
+ *
58
+ * @param url - The URL to extract from
59
+ * @returns The video ID string, or null
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * extractYouTubeVideoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ'); // 'dQw4w9WgXcQ'
64
+ * extractYouTubeVideoId('https://youtu.be/dQw4w9WgXcQ'); // 'dQw4w9WgXcQ'
65
+ * extractYouTubeVideoId('https://example.com'); // null
66
+ * ```
67
+ */
68
+ export declare function extractYouTubeVideoId(url: string): string | null;
69
+ /**
70
+ * Extract a Vimeo video ID from a URL.
71
+ *
72
+ * Supports `vimeo.com/ID` format where ID is numeric.
73
+ * Returns `null` if the URL is not a recognized Vimeo URL.
74
+ *
75
+ * @param url - The URL to extract from
76
+ * @returns The video ID string, or null
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * extractVimeoVideoId('https://vimeo.com/123456789'); // '123456789'
81
+ * extractVimeoVideoId('https://example.com'); // null
82
+ * ```
83
+ */
84
+ export declare function extractVimeoVideoId(url: string): string | null;
85
+ /**
86
+ * Build a YouTube embed iframe URL from a video ID.
87
+ *
88
+ * @param videoId - The YouTube video ID
89
+ * @returns The embeddable YouTube URL
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * youtubeEmbedSrc('dQw4w9WgXcQ'); // 'https://www.youtube.com/embed/dQw4w9WgXcQ'
94
+ * ```
95
+ */
96
+ export declare function youtubeEmbedSrc(videoId: string): string;
97
+ /**
98
+ * Build a Vimeo embed iframe URL from a video ID.
99
+ *
100
+ * @param videoId - The Vimeo video ID
101
+ * @returns The embeddable Vimeo URL
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * vimeoEmbedSrc('123456789'); // 'https://player.vimeo.com/video/123456789'
106
+ * ```
107
+ */
108
+ export declare function vimeoEmbedSrc(videoId: string): string;
109
+ /**
110
+ * Extract a display-friendly hostname from a URL, stripping the `www.` prefix.
111
+ *
112
+ * Falls back to the raw input string if URL parsing fails.
113
+ *
114
+ * @param url - The URL to extract a hostname from
115
+ * @returns A display-friendly hostname string
116
+ *
117
+ * @example
118
+ * ```ts
119
+ * extractDisplayUrl('https://www.youtube.com/watch?v=abc'); // 'youtube.com'
120
+ * extractDisplayUrl('https://example.com/page'); // 'example.com'
121
+ * extractDisplayUrl('not a url'); // 'not a url'
122
+ * ```
123
+ */
124
+ export declare function extractDisplayUrl(url: string): string;
125
+ /**
126
+ * Compute the embed render configuration for a given URL and embed type.
127
+ *
128
+ * This is the main function called by the embed renderer at render time.
129
+ * It maps the stored `(url, embedType)` attrs to a provider-specific
130
+ * configuration object that determines what DOM content to create.
131
+ *
132
+ * @param url - The embed URL from `block.attrs.url`
133
+ * @param embedType - The embed type from `block.attrs.embedType` (e.g., 'video', 'tweet')
134
+ * @returns The render configuration for the embed
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * const config = getEmbedRenderConfig('https://youtube.com/watch?v=abc', 'video');
139
+ * // config.provider === 'youtube'
140
+ * // config.iframeSrc === 'https://www.youtube.com/embed/abc'
141
+ *
142
+ * const tweet = getEmbedRenderConfig('https://twitter.com/user/status/123', 'tweet');
143
+ * // tweet.provider === 'twitter'
144
+ * // tweet.iframeSrc === undefined
145
+ * ```
146
+ */
147
+ export declare function getEmbedRenderConfig(url: string, embedType?: string): EmbedRenderConfig;
148
+ //# sourceMappingURL=embed-utils.d.ts.map