superdoc 2.20.0-next.9 → 2.20.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.
@@ -1493,7 +1493,7 @@ img[data-v-c95b2073] {
1493
1493
  font-size: 11px;
1494
1494
  }
1495
1495
 
1496
- .comments-dialog[data-v-03d9f711] {
1496
+ .comments-dialog[data-v-bc46ac97] {
1497
1497
  display: flex;
1498
1498
  flex-direction: column;
1499
1499
  padding: var(--sd-ui-comments-card-padding, 16px);
@@ -1512,73 +1512,74 @@ img[data-v-c95b2073] {
1512
1512
  overflow-wrap: break-word;
1513
1513
  word-break: break-word;
1514
1514
  }
1515
- .comments-dialog[data-v-03d9f711]:not(.is-active) {
1515
+ .comments-dialog[data-v-bc46ac97]:not(.is-active) {
1516
1516
  cursor: pointer;
1517
1517
  }
1518
- .comments-dialog[data-v-03d9f711]:not(.is-active):not(.is-resolved):hover {
1518
+ .comments-dialog[data-v-bc46ac97]:not(.is-active):not(.is-resolved):hover {
1519
1519
  background-color: var(--sd-ui-comments-card-hover-bg, #f3f6fd);
1520
1520
  }
1521
- .comments-dialog[data-v-03d9f711]:not(.is-resolved):hover .overflow-menu {
1521
+ .comments-dialog[data-v-bc46ac97]:not(.is-resolved):hover .overflow-menu {
1522
1522
  opacity: 1;
1523
1523
  pointer-events: auto;
1524
1524
  }
1525
- .comments-dialog.is-active[data-v-03d9f711] {
1525
+ .comments-dialog.is-active[data-v-bc46ac97] {
1526
1526
  background-color: var(--sd-ui-comments-card-active-bg, #ffffff);
1527
1527
  border-color: var(--sd-ui-comments-card-active-border, #e0e0e0);
1528
1528
  box-shadow: var(--sd-ui-comments-card-shadow, 0px 4px 12px 0px rgba(50, 50, 50, 0.15));
1529
1529
  z-index: 10;
1530
1530
  }
1531
- .comments-dialog.is-resolved[data-v-03d9f711] {
1531
+ .comments-dialog.is-resolved[data-v-bc46ac97] {
1532
1532
  background-color: var(--sd-ui-comments-card-resolved-bg, #f0f0f0);
1533
1533
  }
1534
- .comment-separator[data-v-03d9f711] {
1534
+ .comment-separator[data-v-bc46ac97] {
1535
1535
  background-color: var(--sd-ui-comments-separator, #e0e0e0);
1536
1536
  height: 1px;
1537
1537
  width: 100%;
1538
1538
  margin: 10px 0;
1539
1539
  }
1540
- .comment[data-v-03d9f711] {
1540
+ .comment[data-v-bc46ac97] {
1541
1541
  font-size: var(--sd-ui-comments-body-size, 14px);
1542
1542
  line-height: 1.5;
1543
1543
  color: var(--sd-ui-comments-body-text, #212121);
1544
1544
  margin: 4px 0 0 0;
1545
1545
  }
1546
- .comment[data-v-03d9f711] p {
1546
+ .comment[data-v-bc46ac97] p {
1547
1547
  margin: 0;
1548
1548
  }
1549
- .tracked-change[data-v-03d9f711] {
1549
+ .tracked-change[data-v-bc46ac97] {
1550
1550
  font-size: var(--sd-ui-comments-body-size, 14px);
1551
1551
  line-height: 1.5;
1552
1552
  color: var(--sd-ui-comments-body-text, #212121);
1553
1553
  margin: 4px 0 0 0;
1554
1554
  }
1555
- .change-type[data-v-03d9f711] {
1555
+ .change-type[data-v-bc46ac97] {
1556
1556
  color: var(--sd-ui-comments-body-text, #212121);
1557
1557
  }
1558
- .tracked-change-text[data-v-03d9f711] {
1558
+ .tracked-change-text[data-v-bc46ac97] {
1559
1559
  color: var(--sd-ui-comments-body-text, #212121);
1560
+ white-space: pre-wrap;
1560
1561
  }
1561
- .tracked-change-text.is-deleted[data-v-03d9f711] {
1562
+ .tracked-change-text.is-deleted[data-v-bc46ac97] {
1562
1563
  color: var(--sd-ui-comments-delete-text, #cb0e47);
1563
1564
  }
1564
- .tracked-change-text.is-inserted[data-v-03d9f711] {
1565
+ .tracked-change-text.is-inserted[data-v-bc46ac97] {
1565
1566
  color: var(--sd-ui-comments-insert-text, #1f6feb);
1566
1567
  font-weight: 500;
1567
1568
  }
1568
- .tracked-change[data-track-change-semantic-color-key='move-from'] .tracked-change-text.is-deleted[data-v-03d9f711] {
1569
+ .tracked-change[data-track-change-semantic-color-key='move-from'] .tracked-change-text.is-deleted[data-v-bc46ac97] {
1569
1570
  color: var(--sd-ui-comments-move-from-text, #00853d);
1570
1571
  }
1571
- .tracked-change[data-track-change-semantic-color-key='move-to'] .tracked-change-text.is-inserted[data-v-03d9f711] {
1572
+ .tracked-change[data-track-change-semantic-color-key='move-to'] .tracked-change-text.is-inserted[data-v-bc46ac97] {
1572
1573
  color: var(--sd-ui-comments-move-to-text, #00853d);
1573
1574
  }
1574
- .tracked-change-detail-lines[data-v-03d9f711] {
1575
+ .tracked-change-detail-lines[data-v-bc46ac97] {
1575
1576
  margin-top: 4px;
1576
1577
  }
1577
- .tracked-change-detail-line[data-v-03d9f711] {
1578
+ .tracked-change-detail-line[data-v-bc46ac97] {
1578
1579
  font-size: 12px;
1579
1580
  line-height: 1.4;
1580
1581
  }
1581
- .tracked-change-image-preview[data-v-03d9f711] {
1582
+ .tracked-change-image-preview[data-v-bc46ac97] {
1582
1583
  display: inline-flex;
1583
1584
  align-items: center;
1584
1585
  justify-content: center;
@@ -1589,7 +1590,7 @@ img[data-v-c95b2073] {
1589
1590
  max-width: 96px;
1590
1591
  max-height: 96px;
1591
1592
  }
1592
- .tracked-change-image-preview__image[data-v-03d9f711] {
1593
+ .tracked-change-image-preview__image[data-v-bc46ac97] {
1593
1594
  display: block;
1594
1595
  width: auto;
1595
1596
  height: auto;
@@ -1599,7 +1600,7 @@ img[data-v-c95b2073] {
1599
1600
  }
1600
1601
 
1601
1602
  /* ── Failed tracked-change decision alert (SD-3772 §6) ── */
1602
- .tracked-change-decision-alert[data-v-03d9f711] {
1603
+ .tracked-change-decision-alert[data-v-bc46ac97] {
1603
1604
  display: flex;
1604
1605
  align-items: center;
1605
1606
  justify-content: space-between;
@@ -1613,12 +1614,12 @@ img[data-v-c95b2073] {
1613
1614
  font-size: var(--sd-ui-comments-body-size, 14px);
1614
1615
  line-height: 1.4;
1615
1616
  }
1616
- .tracked-change-decision-alert__retry[data-v-03d9f711] {
1617
+ .tracked-change-decision-alert__retry[data-v-bc46ac97] {
1617
1618
  flex-shrink: 0;
1618
1619
  }
1619
1620
 
1620
1621
  /* ── Resolved badge ── */
1621
- .resolved-badge[data-v-03d9f711] {
1622
+ .resolved-badge[data-v-bc46ac97] {
1622
1623
  display: inline-flex;
1623
1624
  align-items: center;
1624
1625
  gap: 4px;
@@ -1627,33 +1628,33 @@ img[data-v-c95b2073] {
1627
1628
  color: var(--sd-ui-comments-resolved-text, #00853d);
1628
1629
  margin-bottom: 4px;
1629
1630
  }
1630
- .resolved-badge__icon[data-v-03d9f711] {
1631
+ .resolved-badge__icon[data-v-bc46ac97] {
1631
1632
  display: inline-flex;
1632
1633
  width: 12px;
1633
1634
  height: 12px;
1634
1635
  }
1635
- .resolved-badge__icon[data-v-03d9f711] svg {
1636
+ .resolved-badge__icon[data-v-bc46ac97] svg {
1636
1637
  width: 100%;
1637
1638
  height: 100%;
1638
1639
  fill: currentColor;
1639
1640
  }
1640
1641
 
1641
1642
  /* ── Text truncation ── */
1642
- .comment.is-truncated[data-v-03d9f711],
1643
- .tracked-change.is-truncated[data-v-03d9f711] {
1643
+ .comment.is-truncated[data-v-bc46ac97],
1644
+ .tracked-change.is-truncated[data-v-bc46ac97] {
1644
1645
  display: -webkit-box;
1645
1646
  -webkit-line-clamp: 3;
1646
1647
  -webkit-box-orient: vertical;
1647
1648
  max-height: 4.5em;
1648
1649
  overflow: hidden;
1649
1650
  }
1650
- .comment.is-scrollable[data-v-03d9f711],
1651
- .tracked-change.is-scrollable[data-v-03d9f711] {
1651
+ .comment.is-scrollable[data-v-bc46ac97],
1652
+ .tracked-change.is-scrollable[data-v-bc46ac97] {
1652
1653
  max-height: 220px;
1653
1654
  overflow-y: auto;
1654
1655
  padding-right: 4px;
1655
1656
  }
1656
- .show-more-toggle[data-v-03d9f711] {
1657
+ .show-more-toggle[data-v-bc46ac97] {
1657
1658
  font-size: 12px;
1658
1659
  color: var(--sd-ui-action, #1355ff);
1659
1660
  cursor: pointer;
@@ -1661,12 +1662,12 @@ img[data-v-c95b2073] {
1661
1662
  margin-top: 4px;
1662
1663
  user-select: none;
1663
1664
  }
1664
- .show-more-toggle[data-v-03d9f711]:hover {
1665
+ .show-more-toggle[data-v-bc46ac97]:hover {
1665
1666
  text-decoration: underline;
1666
1667
  }
1667
1668
 
1668
1669
  /* ── Thread collapse ── */
1669
- .collapsed-replies[data-v-03d9f711] {
1670
+ .collapsed-replies[data-v-bc46ac97] {
1670
1671
  display: flex;
1671
1672
  align-items: center;
1672
1673
  gap: 6px;
@@ -1677,24 +1678,24 @@ img[data-v-c95b2073] {
1677
1678
  cursor: pointer;
1678
1679
  user-select: none;
1679
1680
  }
1680
- .collapsed-replies[data-v-03d9f711]:hover {
1681
+ .collapsed-replies[data-v-bc46ac97]:hover {
1681
1682
  text-decoration: underline;
1682
1683
  }
1683
- .collapsed-avatars[data-v-03d9f711] {
1684
+ .collapsed-avatars[data-v-bc46ac97] {
1684
1685
  display: flex;
1685
1686
  }
1686
- .collapsed-avatars .mini-avatar[data-v-03d9f711] {
1687
+ .collapsed-avatars .mini-avatar[data-v-bc46ac97] {
1687
1688
  --sd-comment-avatar-size: 20px;
1688
1689
  --sd-comment-avatar-font-size: 8px;
1689
1690
  margin-left: -4px;
1690
1691
  border: 2px solid var(--sd-ui-comments-card-active-bg, #ffffff);
1691
1692
  }
1692
- .collapsed-avatars .mini-avatar[data-v-03d9f711]:first-child {
1693
+ .collapsed-avatars .mini-avatar[data-v-bc46ac97]:first-child {
1693
1694
  margin-left: 0;
1694
1695
  }
1695
1696
 
1696
1697
  /* ── New comment input ── */
1697
- .new-comment-input-wrapper[data-v-03d9f711] {
1698
+ .new-comment-input-wrapper[data-v-bc46ac97] {
1698
1699
  border: 1.5px solid var(--sd-ui-comments-input-border, #dbdbdb);
1699
1700
  border-radius: 12px;
1700
1701
  padding: 8.5px 10.5px;
@@ -1703,17 +1704,17 @@ img[data-v-c95b2073] {
1703
1704
  max-height: 150px;
1704
1705
  overflow: visible;
1705
1706
  }
1706
- .new-comment-input-wrapper[data-v-03d9f711]:focus-within {
1707
+ .new-comment-input-wrapper[data-v-bc46ac97]:focus-within {
1707
1708
  border-color: var(--sd-ui-comments-input-focus-border, #4f7cff);
1708
1709
  box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
1709
1710
  }
1710
- .new-comment-input-wrapper[data-v-03d9f711] .comment-entry {
1711
+ .new-comment-input-wrapper[data-v-bc46ac97] .comment-entry {
1711
1712
  border-radius: 0;
1712
1713
  }
1713
- .new-comment-input-wrapper[data-v-03d9f711] .input-section {
1714
+ .new-comment-input-wrapper[data-v-bc46ac97] .input-section {
1714
1715
  margin: 0;
1715
1716
  }
1716
- .new-comment-input-wrapper[data-v-03d9f711] .superdoc-field {
1717
+ .new-comment-input-wrapper[data-v-bc46ac97] .superdoc-field {
1717
1718
  font-size: 14px;
1718
1719
  line-height: 20px;
1719
1720
  border: none;
@@ -1724,18 +1725,18 @@ img[data-v-c95b2073] {
1724
1725
  max-height: 132px;
1725
1726
  resize: none;
1726
1727
  }
1727
- .new-comment-input-wrapper[data-v-03d9f711] .superdoc-field:focus,
1728
- .new-comment-input-wrapper[data-v-03d9f711] .superdoc-field:active {
1728
+ .new-comment-input-wrapper[data-v-bc46ac97] .superdoc-field:focus,
1729
+ .new-comment-input-wrapper[data-v-bc46ac97] .superdoc-field:active {
1729
1730
  border: none;
1730
1731
  box-shadow: none;
1731
1732
  outline: none;
1732
1733
  }
1733
- .new-comment-input-wrapper[data-v-03d9f711] .sd-editor-placeholder::before {
1734
+ .new-comment-input-wrapper[data-v-bc46ac97] .sd-editor-placeholder::before {
1734
1735
  content: 'Comment or add others with @';
1735
1736
  }
1736
1737
 
1737
1738
  /* ── Reply pill & expanded input ── */
1738
- .reply-pill[data-v-03d9f711] {
1739
+ .reply-pill[data-v-bc46ac97] {
1739
1740
  width: 100%;
1740
1741
  padding: 8.5px 10.5px;
1741
1742
  border: 1.5px solid transparent;
@@ -1749,16 +1750,16 @@ img[data-v-c95b2073] {
1749
1750
  cursor: text;
1750
1751
  transition: background 150ms ease;
1751
1752
  }
1752
- .reply-pill[data-v-03d9f711]:hover {
1753
+ .reply-pill[data-v-bc46ac97]:hover {
1753
1754
  background: var(--sd-color-gray-200, #f2f2f2);
1754
1755
  }
1755
- .reply-pill[data-v-03d9f711]:disabled {
1756
+ .reply-pill[data-v-bc46ac97]:disabled {
1756
1757
  cursor: not-allowed;
1757
1758
  }
1758
- .reply-expanded[data-v-03d9f711] {
1759
+ .reply-expanded[data-v-bc46ac97] {
1759
1760
  margin-top: 10px;
1760
1761
  }
1761
- .reply-input-wrapper[data-v-03d9f711] {
1762
+ .reply-input-wrapper[data-v-bc46ac97] {
1762
1763
  border: 1.5px solid var(--sd-ui-comments-input-border, #dbdbdb);
1763
1764
  border-radius: 12px;
1764
1765
  padding: 8.5px 10.5px;
@@ -1766,17 +1767,17 @@ img[data-v-c95b2073] {
1766
1767
  max-height: 150px;
1767
1768
  overflow: visible;
1768
1769
  }
1769
- .reply-input-wrapper[data-v-03d9f711]:focus-within {
1770
+ .reply-input-wrapper[data-v-bc46ac97]:focus-within {
1770
1771
  border-color: var(--sd-ui-comments-input-focus-border, #4f7cff);
1771
1772
  box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
1772
1773
  }
1773
- .reply-input-wrapper[data-v-03d9f711] .comment-entry {
1774
+ .reply-input-wrapper[data-v-bc46ac97] .comment-entry {
1774
1775
  border-radius: 0;
1775
1776
  }
1776
- .reply-input-wrapper[data-v-03d9f711] .input-section {
1777
+ .reply-input-wrapper[data-v-bc46ac97] .input-section {
1777
1778
  margin: 0;
1778
1779
  }
1779
- .reply-input-wrapper[data-v-03d9f711] .superdoc-field {
1780
+ .reply-input-wrapper[data-v-bc46ac97] .superdoc-field {
1780
1781
  font-size: 14px;
1781
1782
  line-height: 20px;
1782
1783
  border: none;
@@ -1787,23 +1788,23 @@ img[data-v-c95b2073] {
1787
1788
  max-height: 132px;
1788
1789
  resize: none;
1789
1790
  }
1790
- .reply-input-wrapper[data-v-03d9f711] .superdoc-field:focus,
1791
- .reply-input-wrapper[data-v-03d9f711] .superdoc-field:active {
1791
+ .reply-input-wrapper[data-v-bc46ac97] .superdoc-field:focus,
1792
+ .reply-input-wrapper[data-v-bc46ac97] .superdoc-field:active {
1792
1793
  border: none;
1793
1794
  box-shadow: none;
1794
1795
  outline: none;
1795
1796
  }
1796
- .reply-input-wrapper[data-v-03d9f711] .sd-editor-placeholder::before {
1797
+ .reply-input-wrapper[data-v-bc46ac97] .sd-editor-placeholder::before {
1797
1798
  content: 'Reply or add others with @';
1798
1799
  }
1799
- .reply-actions[data-v-03d9f711] {
1800
+ .reply-actions[data-v-bc46ac97] {
1800
1801
  display: flex;
1801
1802
  justify-content: flex-end;
1802
1803
  align-items: center;
1803
1804
  gap: 16px;
1804
1805
  margin-top: 8px;
1805
1806
  }
1806
- .reply-btn-cancel[data-v-03d9f711] {
1807
+ .reply-btn-cancel[data-v-bc46ac97] {
1807
1808
  background: none;
1808
1809
  border: none;
1809
1810
  font-size: 13px;
@@ -1814,10 +1815,10 @@ img[data-v-c95b2073] {
1814
1815
  font-family: inherit;
1815
1816
  transition: color 150ms;
1816
1817
  }
1817
- .reply-btn-cancel[data-v-03d9f711]:hover {
1818
+ .reply-btn-cancel[data-v-bc46ac97]:hover {
1818
1819
  color: var(--sd-ui-text, #212121);
1819
1820
  }
1820
- .reply-btn-primary[data-v-03d9f711] {
1821
+ .reply-btn-primary[data-v-bc46ac97] {
1821
1822
  background: var(--sd-ui-action, #1355ff);
1822
1823
  border: none;
1823
1824
  font-size: 13px;
@@ -1829,19 +1830,19 @@ img[data-v-c95b2073] {
1829
1830
  font-family: inherit;
1830
1831
  transition: background 150ms;
1831
1832
  }
1832
- .reply-btn-primary[data-v-03d9f711]:hover {
1833
+ .reply-btn-primary[data-v-bc46ac97]:hover {
1833
1834
  background: var(--sd-ui-action-hover, #0f44cc);
1834
1835
  }
1835
- .reply-btn-primary.sd-is-disabled[data-v-03d9f711] {
1836
+ .reply-btn-primary.sd-is-disabled[data-v-bc46ac97] {
1836
1837
  background: var(--sd-color-gray-400, #dbdbdb);
1837
1838
  color: var(--sd-color-gray-600, #888888);
1838
1839
  cursor: default;
1839
1840
  pointer-events: none;
1840
1841
  }
1841
- .existing-internal-input[data-v-03d9f711] {
1842
+ .existing-internal-input[data-v-bc46ac97] {
1842
1843
  margin-bottom: 10px;
1843
1844
  }
1844
- .sd-internal-dropdown[data-v-03d9f711] {
1845
+ .sd-internal-dropdown[data-v-bc46ac97] {
1845
1846
  display: inline-block;
1846
1847
  }
1847
1848
 
@@ -1,4 +1,4 @@
1
- import { CommentsListQuery as DocumentApiCommentsListQuery, CommentsListResult, TrackChangesListResult, EntityAddress, TextAddress, TextTarget, ScrollIntoViewInput, ScrollIntoViewOutput, SelectionInfo, SelectionTarget, Receipt, ReceiptFailureCode, ContentControlInfo, ContentControlTarget, StyleCatalogItem, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult } from '../../../../document-api/src/index.js';
1
+ import { CommentsListQuery as DocumentApiCommentsListQuery, CommentsListResult, TrackChangesListResult, EntityAddress, TextAddress, BookmarkAddress, TextTarget, ScrollIntoViewInput, ScrollIntoViewOutput, SelectionInfo, SelectionTarget, Receipt, ReceiptFailureCode, ContentControlInfo, ContentControlTarget, StyleCatalogItem, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult } from '../../../../document-api/src/index.js';
2
2
  import { PartialBrowserDocumentApi } from '../browser-document-api.js';
3
3
  import { ExportParams } from '../export-types.js';
4
4
  import { DocumentReplacementResult } from '../document-replacement.js';
@@ -30,7 +30,7 @@ import { BuiltInCommandId } from './commands.js';
30
30
  * (`scripts/ensure-types.cjs` `rewriteDocApiPaths`), so no bare private
31
31
  * specifier leaks into the emitted `.d.ts`.
32
32
  */
33
- export type { Receipt, SelectionInfo, SelectionTarget, SelectionPoint, TextTarget, TextAddress, ScrollIntoViewInput, ScrollIntoViewOutput, DocumentApi, EntityAddress, CommentsListQuery as DocumentApiCommentsListQuery, CommentsListResult, TrackChangesListResult, ContentControlsListResult, ContentControlInfo, ContentControlTarget, RichContentInsertInput, OperationCapabilityResolveResult, SDHtmlMarkdownSupportCheckResult, PictureWatermarkInput, RetainedPictureWatermarkInput, TextWatermark, WatermarkInfo, WatermarkTarget, WatermarksApplyInput, WatermarksApplyResult, WatermarksApplySuccess, WatermarksApplyTarget, } from '../../../../document-api/src/index.js';
33
+ export type { Receipt, SelectionInfo, SelectionTarget, SelectionPoint, TextTarget, TextAddress, BookmarkAddress, ScrollIntoViewInput, ScrollIntoViewOutput, DocumentApi, EntityAddress, CommentsListQuery as DocumentApiCommentsListQuery, CommentsListResult, TrackChangesListResult, ContentControlsListResult, ContentControlInfo, ContentControlTarget, RichContentInsertInput, OperationCapabilityResolveResult, SDHtmlMarkdownSupportCheckResult, PictureWatermarkInput, RetainedPictureWatermarkInput, TextWatermark, WatermarkInfo, WatermarkTarget, WatermarksApplyInput, WatermarksApplyResult, WatermarksApplySuccess, WatermarksApplyTarget, } from '../../../../document-api/src/index.js';
34
34
  export type { StyleCatalogView, StyleCatalogItemType, StyleCatalogFilterType, StyleProvenance, StyleCatalogItemVisibility, StyleCatalogItemUsage, StyleCatalogItemPreview, StyleCatalogItem, StyleCatalogDefaults, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult, } from '../../../../document-api/src/index.js';
35
35
  export type { ListPresetId } from '../../../../document-api/src/index.js';
36
36
  export type { BrowserDocumentApi, PartialBrowserDocumentApi } from '../browser-document-api.js';
@@ -1046,6 +1046,23 @@ export interface TrackChangesHandle extends SnapshotSubscribable<TrackChangesSli
1046
1046
  story?: unknown;
1047
1047
  }): Promise<WorkflowScrollResult>;
1048
1048
  }
1049
+ /** Browser bookmark navigation; document bookmark CRUD remains on `activeEditor.doc`. */
1050
+ export interface BookmarksHandle {
1051
+ /**
1052
+ * Reveal the start of a body bookmark and select its complete range in editing,
1053
+ * suggesting or viewing mode. A collapsed range places a caret. Accepts an
1054
+ * exact name or the canonical BookmarkAddress returned by the Document API.
1055
+ * Name-only lookup requires a unique document-wide match; an explicit body
1056
+ * address scopes lookup to the body. Navigation is local in shared rooms.
1057
+ *
1058
+ * Defaults to center alignment and instant scrolling. Non-body and table-column
1059
+ * bookmarks, invalid/missing/ambiguous targets fail with `target-unresolved`.
1060
+ * Failed resolution/reveal preserves selection. No document content is changed.
1061
+ * Abandons work after document replacement, content changes or a newer request;
1062
+ * unresolved work times out after 15 seconds. Does not take native input focus.
1063
+ */
1064
+ navigateTo(input: string | BookmarkAddress, options?: Pick<ScrollIntoViewInput, 'block' | 'behavior'>): Promise<WorkflowScrollResult>;
1065
+ }
1049
1066
  /** Content-controls handle. */
1050
1067
  export interface ContentControlsHandle extends SnapshotSubscribable<ContentControlsSlice> {
1051
1068
  /**
@@ -1556,6 +1573,8 @@ export interface SuperDocUI {
1556
1573
  readonly trackChanges: TrackChangesHandle;
1557
1574
  /** Content-controls surface. */
1558
1575
  readonly contentControls: ContentControlsHandle;
1576
+ /** Programmatic body bookmark selection and painted-page reveal. */
1577
+ readonly bookmarks: BookmarksHandle;
1559
1578
  /** Fonts surface. */
1560
1579
  readonly fonts: FontsHandle;
1561
1580
  /** Zoom surface. */
@@ -1,5 +1,7 @@
1
1
  // Generated by scripts/ensure-types.cjs. Do not edit by hand.
2
2
  import type { ActiveParagraphStyle as __Cjs_ActiveParagraphStyle } from './ui.js' with { "resolution-mode": "import" };
3
+ import type { BookmarkAddress as __Cjs_BookmarkAddress } from './ui.js' with { "resolution-mode": "import" };
4
+ import type { BookmarksHandle as __Cjs_BookmarksHandle } from './ui.js' with { "resolution-mode": "import" };
3
5
  import type { BorrowedSuperDocUI as __Cjs_BorrowedSuperDocUI } from './ui.js' with { "resolution-mode": "import" };
4
6
  import type { BrowserDocumentApi as __Cjs_BrowserDocumentApi } from './ui.js' with { "resolution-mode": "import" };
5
7
  import type { BuiltInCommandId as __Cjs_BuiltInCommandId } from './ui.js' with { "resolution-mode": "import" };
@@ -120,6 +122,8 @@ import type { WorkflowScrollResult as __Cjs_WorkflowScrollResult } from './ui.js
120
122
  import type { ZoomHandle as __Cjs_ZoomHandle } from './ui.js' with { "resolution-mode": "import" };
121
123
  import type { ZoomSlice as __Cjs_ZoomSlice } from './ui.js' with { "resolution-mode": "import" };
122
124
  export type { __Cjs_ActiveParagraphStyle as ActiveParagraphStyle };
125
+ export type { __Cjs_BookmarkAddress as BookmarkAddress };
126
+ export type { __Cjs_BookmarksHandle as BookmarksHandle };
123
127
  export type { __Cjs_BorrowedSuperDocUI as BorrowedSuperDocUI };
124
128
  export type { __Cjs_BrowserDocumentApi as BrowserDocumentApi };
125
129
  export declare const BUILT_IN_COMMAND_IDS: typeof import('./ui.js', { with: { "resolution-mode": "import" } }).BUILT_IN_COMMAND_IDS;
@@ -26,4 +26,4 @@
26
26
  export { createSuperDocUI } from './ui/create-super-doc-ui.js';
27
27
  export { shallowEqual } from './ui/equality.js';
28
28
  export { BUILT_IN_COMMAND_IDS } from './ui/commands.js';
29
- export type { EqualityFn, SelectorFn, Subscribable, SuperDocUI, BorrowedSuperDocUI, SuperDocUIOptions, SuperDocUIState, SuperDocUIScope, SuperDocLike, SuperDocEditorLike, CommandHandle, CommandState, CommandExecutionResult, WorkflowReceipt, WorkflowActionResult, WorkflowScrollResult, SelectionRestoreResult, SuperDocUIReason, CommandId, CommandsHandle, ContextMenuItem, ContextMenuHandle, WatermarkHandle, SearchController, SearchHandle, SearchQueryOptions, CustomCommandContext, CustomCommandHandle, CustomCommandHandleState, CustomCommandRegistration, CustomCommandRegistrationResult, MetadataHandle, SelectionHandle, ToolbarHandle, BuiltInCommandId, ToolbarCommandId, CommentsHandle, TrackChangesHandle, ContentControlsHandle, ContentControlFocusResult, ContentControlHighlightResult, FontsHandle, ZoomHandle, DocumentHandle, DocumentReplacementResult, ViewportHandle, StylesHandle, ActiveParagraphStyle, SliceStatus, SelectionSlice, SelectionCapture, CommentAnchorCapture, ToolbarSnapshotSlice, CommentsSlice, TrackChangesSlice, ContentControlsSlice, FontsSlice, ZoomSlice, DocumentSlice, StylesSlice, SearchSnapshot, SearchSlice, StyleCatalogView, StyleCatalogItemType, StyleCatalogFilterType, StyleProvenance, StyleCatalogItemVisibility, StyleCatalogItemUsage, StyleCatalogItemPreview, StyleCatalogItem, StyleCatalogDefaults, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult, CommentInfo, CommentsListQuery, TrackChangeInfo, TrackChangePointHit, TrackChangesItem, FontFamilyOption, FontSizeOption, CommentAddress, TrackedChangeAddress, ContentControlViewportAddress, ViewportEntityAddress, ViewportEntityHit, ViewportContext, ViewportRect, ViewportGetRectInput, ViewportRectResult, BrowserDocumentApi, PartialBrowserDocumentApi, DocumentApi, Receipt, SelectionInfo, SelectionTarget, SelectionPoint, TextTarget, TextAddress, ScrollIntoViewInput, ScrollIntoViewOutput, EntityAddress, CommentsListResult, TrackChangesListResult, ContentControlsListResult, ContentControlInfo, ContentControlTarget, RichContentInsertInput, OperationCapabilityResolveResult, SDHtmlMarkdownSupportCheckResult, PictureWatermarkInput, RetainedPictureWatermarkInput, TextWatermark, WatermarkInfo, WatermarkTarget, WatermarksApplyInput, WatermarksApplyResult, WatermarksApplySuccess, WatermarksApplyTarget, } from './ui/types.js';
29
+ export type { EqualityFn, SelectorFn, Subscribable, SuperDocUI, BorrowedSuperDocUI, SuperDocUIOptions, SuperDocUIState, SuperDocUIScope, SuperDocLike, SuperDocEditorLike, CommandHandle, CommandState, CommandExecutionResult, WorkflowReceipt, WorkflowActionResult, WorkflowScrollResult, SelectionRestoreResult, SuperDocUIReason, CommandId, CommandsHandle, ContextMenuItem, ContextMenuHandle, WatermarkHandle, SearchController, SearchHandle, SearchQueryOptions, CustomCommandContext, CustomCommandHandle, CustomCommandHandleState, CustomCommandRegistration, CustomCommandRegistrationResult, MetadataHandle, SelectionHandle, ToolbarHandle, BuiltInCommandId, ToolbarCommandId, CommentsHandle, TrackChangesHandle, ContentControlsHandle, BookmarksHandle, BookmarkAddress, ContentControlFocusResult, ContentControlHighlightResult, FontsHandle, ZoomHandle, DocumentHandle, DocumentReplacementResult, ViewportHandle, StylesHandle, ActiveParagraphStyle, SliceStatus, SelectionSlice, SelectionCapture, CommentAnchorCapture, ToolbarSnapshotSlice, CommentsSlice, TrackChangesSlice, ContentControlsSlice, FontsSlice, ZoomSlice, DocumentSlice, StylesSlice, SearchSnapshot, SearchSlice, StyleCatalogView, StyleCatalogItemType, StyleCatalogFilterType, StyleProvenance, StyleCatalogItemVisibility, StyleCatalogItemUsage, StyleCatalogItemPreview, StyleCatalogItem, StyleCatalogDefaults, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult, CommentInfo, CommentsListQuery, TrackChangeInfo, TrackChangePointHit, TrackChangesItem, FontFamilyOption, FontSizeOption, CommentAddress, TrackedChangeAddress, ContentControlViewportAddress, ViewportEntityAddress, ViewportEntityHit, ViewportContext, ViewportRect, ViewportGetRectInput, ViewportRectResult, BrowserDocumentApi, PartialBrowserDocumentApi, DocumentApi, Receipt, SelectionInfo, SelectionTarget, SelectionPoint, TextTarget, TextAddress, ScrollIntoViewInput, ScrollIntoViewOutput, EntityAddress, CommentsListResult, TrackChangesListResult, ContentControlsListResult, ContentControlInfo, ContentControlTarget, RichContentInsertInput, OperationCapabilityResolveResult, SDHtmlMarkdownSupportCheckResult, PictureWatermarkInput, RetainedPictureWatermarkInput, TextWatermark, WatermarkInfo, WatermarkTarget, WatermarksApplyInput, WatermarksApplyResult, WatermarksApplySuccess, WatermarksApplyTarget, } from './ui/types.js';
package/dist/superdoc.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./chunks/rolldown-runtime-74VwNCz7.cjs");
3
3
  const require_blank_docx = require("./chunks/blank-docx-BuFAbRjs.cjs");
4
- const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-Dc2QEczb.cjs");
4
+ const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-BQBQsjoe.cjs");
5
5
  const require_eventemitter3 = require("./chunks/eventemitter3-C_TAnXOl.cjs");
6
6
  const require_uuid = require("./chunks/uuid-BhG0ngwk.cjs");
7
7
  const require__plugin_vue_export_helper = require("./chunks/_plugin-vue_export-helper-CYxINHh_.cjs");
@@ -316,7 +316,7 @@ var shuffleArray = (array) => {
316
316
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
317
317
  function getSuperdocVersion() {
318
318
  try {
319
- return "2.20.0-next.9";
319
+ return "2.20.0";
320
320
  } catch {
321
321
  return "unknown";
322
322
  }
@@ -14327,7 +14327,7 @@ var _sfc_main$34 = {
14327
14327
  };
14328
14328
  }
14329
14329
  };
14330
- var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-03d9f711"]]);
14330
+ var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-bc46ac97"]]);
14331
14331
  //#endregion
14332
14332
  //#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
14333
14333
  var _hoisted_1$26 = [
@@ -43746,7 +43746,7 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
43746
43746
  else fontSize.selectedValue.value = "";
43747
43747
  }
43748
43748
  });
43749
- const separator = useToolbarItem({
43749
+ const createSeparator = () => useToolbarItem({
43750
43750
  type: "separator",
43751
43751
  name: "separator",
43752
43752
  isNarrow: true
@@ -44656,16 +44656,16 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
44656
44656
  search,
44657
44657
  zoom,
44658
44658
  fontButton,
44659
- separator,
44659
+ createSeparator(),
44660
44660
  fontSize,
44661
- separator,
44661
+ createSeparator(),
44662
44662
  bold,
44663
44663
  italic,
44664
44664
  underline,
44665
44665
  strikethrough,
44666
44666
  colorButton,
44667
44667
  highlight,
44668
- separator,
44668
+ createSeparator(),
44669
44669
  link,
44670
44670
  image,
44671
44671
  ...shouldIncludeTableOfContents ? [tableOfContents] : [],
@@ -44673,16 +44673,16 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
44673
44673
  ...superToolbar.config?.showPageNumberButton || configuredItemNames?.has("pageNumber") ? [pageNumber] : [],
44674
44674
  tableItem,
44675
44675
  tableActionsItem,
44676
- separator,
44676
+ createSeparator(),
44677
44677
  alignment,
44678
44678
  bulletedList,
44679
44679
  numberedList,
44680
44680
  indentLeft,
44681
44681
  indentRight,
44682
44682
  lineHeight,
44683
- separator,
44683
+ createSeparator(),
44684
44684
  linkedStyles,
44685
- separator,
44685
+ createSeparator(),
44686
44686
  ruler,
44687
44687
  measurementUnit,
44688
44688
  ...shouldIncludeFormattingMarks ? [formattingMarks] : [],
@@ -46283,7 +46283,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
46283
46283
  this.config.colors = shuffleArray(this.config.colors);
46284
46284
  this.userColorMap = /* @__PURE__ */ new Map();
46285
46285
  this.colorIndex = 0;
46286
- this.version = "2.20.0-next.9";
46286
+ this.version = "2.20.0";
46287
46287
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
46288
46288
  this.superdocId = config.superdocId || require_uuid.v4();
46289
46289
  this.colors = this.config.colors ?? [];
@@ -1,6 +1,6 @@
1
1
  import { i as __toESM$2 } from "./chunks/rolldown-runtime-0pSA04fp.es.js";
2
2
  import { t as blank_default } from "./chunks/blank-docx-DzQccOlW.es.js";
3
- import { c as createImageFilePicker, d as DOM_CLASS_NAMES, f as closeInteractionHistory, i as registerFirstPartyCommandMutation, l as resolveImageSrc, m as recordInteraction, n as executeFirstPartyCommandAsync, o as applyV2CommentInvalidationFromMutation, p as createInteractionHistory, r as readFirstPartyPageNumbers, s as getV2TrackedChangeMutationImpact, t as createSuperDocUI } from "./chunks/create-super-doc-ui-B8olYVBF.es.js";
3
+ import { c as createImageFilePicker, d as DOM_CLASS_NAMES, f as closeInteractionHistory, i as registerFirstPartyCommandMutation, l as resolveImageSrc, m as recordInteraction, n as executeFirstPartyCommandAsync, o as applyV2CommentInvalidationFromMutation, p as createInteractionHistory, r as readFirstPartyPageNumbers, s as getV2TrackedChangeMutationImpact, t as createSuperDocUI } from "./chunks/create-super-doc-ui-D5VrP4Dx.es.js";
4
4
  import { t as import_eventemitter3 } from "./chunks/eventemitter3-DEIiXiH2.es.js";
5
5
  import { t as v4 } from "./chunks/uuid-H0Xcmmhy.es.js";
6
6
  import { $ as watch$1, A as onActivated, B as resolveDirective, C as isRef$1, D as normalizeClass, E as nextTick, F as openBlock, G as toRef, H as shallowRef$1, I as reactive, J as useAttrs, K as toRefs, L as ref, M as onDeactivated, N as onMounted, O as normalizeProps, P as onScopeDispose$1, Q as vModelText, R as renderList, S as isReactive$1, T as mergeProps, U as toDisplayString, V as resolveDynamicComponent, W as toRaw$2, X as vModelCheckbox, Y as useSlots, Z as vModelSelect, _ as getCurrentInstance, a as computed$1, b as hasInjectionContext, c as createCommentVNode, d as createStaticVNode, et as withCtx, f as createTextVNode, g as effectScope, h as defineComponent, i as Transition, j as onBeforeUnmount, k as normalizeStyle, l as createElementBlock, m as defineAsyncComponent, n as Fragment, nt as withKeys, o as createApp, p as createVNode, q as unref, r as Teleport, rt as withModifiers, s as createBlock, t as _plugin_vue_export_helper_default, tt as withDirectives, u as createElementVNode, v as getCurrentScope, w as markRaw, x as inject$1, y as h, z as renderSlot } from "./chunks/_plugin-vue_export-helper-DHiJKCsy.es.js";
@@ -314,7 +314,7 @@ var shuffleArray = (array) => {
314
314
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
315
315
  function getSuperdocVersion() {
316
316
  try {
317
- return "2.20.0-next.9";
317
+ return "2.20.0";
318
318
  } catch {
319
319
  return "unknown";
320
320
  }
@@ -14319,7 +14319,7 @@ var CommentDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
14319
14319
  ], 64))], 14, _hoisted_1$27)), [[_directive_click_outside, handleClickOutside]]);
14320
14320
  };
14321
14321
  }
14322
- }, [["__scopeId", "data-v-03d9f711"]]);
14322
+ }, [["__scopeId", "data-v-bc46ac97"]]);
14323
14323
  //#endregion
14324
14324
  //#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
14325
14325
  var _hoisted_1$26 = [
@@ -43675,7 +43675,7 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
43675
43675
  else fontSize.selectedValue.value = "";
43676
43676
  }
43677
43677
  });
43678
- const separator = useToolbarItem({
43678
+ const createSeparator = () => useToolbarItem({
43679
43679
  type: "separator",
43680
43680
  name: "separator",
43681
43681
  isNarrow: true
@@ -44585,16 +44585,16 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
44585
44585
  search,
44586
44586
  zoom,
44587
44587
  fontButton,
44588
- separator,
44588
+ createSeparator(),
44589
44589
  fontSize,
44590
- separator,
44590
+ createSeparator(),
44591
44591
  bold,
44592
44592
  italic,
44593
44593
  underline,
44594
44594
  strikethrough,
44595
44595
  colorButton,
44596
44596
  highlight,
44597
- separator,
44597
+ createSeparator(),
44598
44598
  link,
44599
44599
  image,
44600
44600
  ...shouldIncludeTableOfContents ? [tableOfContents] : [],
@@ -44602,16 +44602,16 @@ var makeDefaultItems = ({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts
44602
44602
  ...superToolbar.config?.showPageNumberButton || configuredItemNames?.has("pageNumber") ? [pageNumber] : [],
44603
44603
  tableItem,
44604
44604
  tableActionsItem,
44605
- separator,
44605
+ createSeparator(),
44606
44606
  alignment,
44607
44607
  bulletedList,
44608
44608
  numberedList,
44609
44609
  indentLeft,
44610
44610
  indentRight,
44611
44611
  lineHeight,
44612
- separator,
44612
+ createSeparator(),
44613
44613
  linkedStyles,
44614
- separator,
44614
+ createSeparator(),
44615
44615
  ruler,
44616
44616
  measurementUnit,
44617
44617
  ...shouldIncludeFormattingMarks ? [formattingMarks] : [],
@@ -46212,7 +46212,7 @@ var SuperDoc = class extends import_eventemitter3.default {
46212
46212
  this.config.colors = shuffleArray(this.config.colors);
46213
46213
  this.userColorMap = /* @__PURE__ */ new Map();
46214
46214
  this.colorIndex = 0;
46215
- this.version = "2.20.0-next.9";
46215
+ this.version = "2.20.0";
46216
46216
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
46217
46217
  this.superdocId = config.superdocId || v4();
46218
46218
  this.colors = this.config.colors ?? [];