superdoc 2.20.0-next.9 → 2.20.1-next.1

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
 
@@ -2339,34 +2340,34 @@ img[data-v-c95b2073] {
2339
2340
  pointer-events: auto;
2340
2341
  }
2341
2342
 
2342
- .superdoc[data-v-7bbf01da] {
2343
+ .superdoc[data-v-e476c448] {
2343
2344
  display: flex;
2344
2345
  position: relative;
2345
2346
  }
2346
- .right-sidebar[data-v-7bbf01da] {
2347
+ .right-sidebar[data-v-e476c448] {
2347
2348
  min-width: 320px;
2348
2349
  height: 100%;
2349
2350
  }
2350
- .floating-comments[data-v-7bbf01da] {
2351
+ .floating-comments[data-v-e476c448] {
2351
2352
  min-width: 300px;
2352
2353
  width: 300px;
2353
2354
  height: 100%;
2354
2355
  overflow: visible;
2355
2356
  }
2356
- .superdoc__layers[data-v-7bbf01da] {
2357
+ .superdoc__layers[data-v-e476c448] {
2357
2358
  height: 100%;
2358
2359
  position: relative;
2359
2360
  box-sizing: border-box;
2360
2361
  }
2361
- .superdoc__document[data-v-7bbf01da] {
2362
+ .superdoc__document[data-v-e476c448] {
2362
2363
  width: 100%;
2363
2364
  position: relative;
2364
2365
  }
2365
- .superdoc__sub-document[data-v-7bbf01da] {
2366
+ .superdoc__sub-document[data-v-e476c448] {
2366
2367
  width: 100%;
2367
2368
  position: relative;
2368
2369
  }
2369
- .superdoc__selection-layer[data-v-7bbf01da] {
2370
+ .superdoc__selection-layer[data-v-e476c448] {
2370
2371
  position: absolute;
2371
2372
  min-width: 100%;
2372
2373
  min-height: 100%;
@@ -2377,13 +2378,13 @@ img[data-v-c95b2073] {
2377
2378
  /* SD-3497: PDF whiteboard overlay sits above the rendered PDF canvas but below
2378
2379
  the PDF comment anchors (z-index 6 in PdfCommentsLayer) so anchors stay
2379
2380
  clickable, and below the selection layer (z-index 10). */
2380
- .superdoc__whiteboard-layer[data-v-7bbf01da] {
2381
+ .superdoc__whiteboard-layer[data-v-e476c448] {
2381
2382
  z-index: 4;
2382
2383
  }
2383
- .superdoc__temp-selection[data-v-7bbf01da] {
2384
+ .superdoc__temp-selection[data-v-e476c448] {
2384
2385
  position: absolute;
2385
2386
  }
2386
- .superdoc__right-sidebar[data-v-7bbf01da] {
2387
+ .superdoc__right-sidebar[data-v-e476c448] {
2387
2388
  width: 320px;
2388
2389
  min-width: 320px;
2389
2390
  padding: 0 10px;
@@ -2391,7 +2392,7 @@ img[data-v-c95b2073] {
2391
2392
  position: relative;
2392
2393
  z-index: 2;
2393
2394
  }
2394
- .superdoc__compact-comment-popover[data-v-7bbf01da] {
2395
+ .superdoc__compact-comment-popover[data-v-e476c448] {
2395
2396
  position: absolute;
2396
2397
  top: 12px;
2397
2398
  right: 12px;
@@ -2400,14 +2401,14 @@ img[data-v-c95b2073] {
2400
2401
  }
2401
2402
 
2402
2403
  /* Tools styles */
2403
- .tools[data-v-7bbf01da] {
2404
+ .tools[data-v-e476c448] {
2404
2405
  position: absolute;
2405
2406
  z-index: 3;
2406
2407
  display: flex;
2407
2408
  flex-direction: column;
2408
2409
  gap: var(--sd-ui-tools-gap, 6px);
2409
2410
  }
2410
- .tools-item[data-v-7bbf01da] {
2411
+ .tools-item[data-v-e476c448] {
2411
2412
  display: flex;
2412
2413
  align-items: center;
2413
2414
  justify-content: center;
@@ -2418,10 +2419,10 @@ img[data-v-c95b2073] {
2418
2419
  cursor: pointer;
2419
2420
  position: relative;
2420
2421
  }
2421
- .tools-item i[data-v-7bbf01da] {
2422
+ .tools-item i[data-v-e476c448] {
2422
2423
  cursor: pointer;
2423
2424
  }
2424
- .superdoc__tools-icon[data-v-7bbf01da] {
2425
+ .superdoc__tools-icon[data-v-e476c448] {
2425
2426
  width: var(--sd-ui-tools-icon-size, 20px);
2426
2427
  height: var(--sd-ui-tools-icon-size, 20px);
2427
2428
  flex-shrink: 0;
@@ -2436,22 +2437,22 @@ img[data-v-c95b2073] {
2436
2437
 
2437
2438
  /* 834px is iPad screen size in portrait orientation */
2438
2439
  @media (max-width: 834px) {
2439
- .superdoc .superdoc__layers[data-v-7bbf01da] {
2440
+ .superdoc .superdoc__layers[data-v-e476c448] {
2440
2441
  margin: 0;
2441
2442
  border: 0 !important;
2442
2443
  box-shadow: none;
2443
2444
  }
2444
- .superdoc__sub-document[data-v-7bbf01da] {
2445
+ .superdoc__sub-document[data-v-e476c448] {
2445
2446
  max-width: 100%;
2446
2447
  }
2447
- .superdoc__right-sidebar[data-v-7bbf01da] {
2448
+ .superdoc__right-sidebar[data-v-e476c448] {
2448
2449
  padding: 10px;
2449
2450
  position: relative;
2450
2451
  }
2451
2452
  }
2452
2453
 
2453
2454
  /* AI Writer styles */
2454
- .ai-writer-container[data-v-7bbf01da] {
2455
+ .ai-writer-container[data-v-e476c448] {
2455
2456
  position: fixed;
2456
2457
  z-index: 1000;
2457
2458
  background: white;
@@ -2467,10 +2468,10 @@ img[data-v-c95b2073] {
2467
2468
  transform: translateY(-50%);
2468
2469
  z-index: 50;
2469
2470
  } */
2470
- .ai-tool > svg[data-v-7bbf01da] {
2471
+ .ai-tool > svg[data-v-e476c448] {
2471
2472
  fill: transparent;
2472
2473
  }
2473
- .ai-tool[data-v-7bbf01da]::before {
2474
+ .ai-tool[data-v-e476c448]::before {
2474
2475
  content: '';
2475
2476
  position: absolute;
2476
2477
  width: 20px;
@@ -2491,7 +2492,7 @@ img[data-v-c95b2073] {
2491
2492
  filter: brightness(1.2);
2492
2493
  transition: filter 0.2s ease;
2493
2494
  }
2494
- .ai-tool[data-v-7bbf01da]:hover::before {
2495
+ .ai-tool[data-v-e476c448]:hover::before {
2495
2496
  filter: brightness(1.3);
2496
2497
  }
2497
2498
 
@@ -3694,16 +3694,18 @@ export interface ToolbarConfig {
3694
3694
  * syntax resolves to nothing.
3695
3695
  */
3696
3696
  container?: string | HTMLElement;
3697
- /** Built-in controls to render by region. Controls keep their built-in order. Omit to use the default toolbar. */
3697
+ /** Built-in controls to render by region. Each region's controls render in the array order given. Omit to use the default toolbar. */
3698
3698
  items?: Readonly<Partial<Record<ToolbarRegion, readonly ToolbarItemId[]>>>;
3699
3699
  /**
3700
3700
  * Which groups render, or which items they contain.
3701
3701
  *
3702
3702
  * An array selects groups. The built-in layout still places them in its
3703
3703
  * left, center, and right regions, and always renders the center region.
3704
+ * Item order within each region stays the built-in order for this shape.
3704
3705
  *
3705
3706
  * An object maps each group to its toolbar item ids. Its keys choose the
3706
- * regions and its values form a grouped allowlist.
3707
+ * regions; its values form both the group's composition and the render
3708
+ * order of items within that region.
3707
3709
  * @deprecated replaceWith=`ui.toolbar.items` removeIn=v3.0
3708
3710
  */
3709
3711
  groups?: readonly string[] | Readonly<Record<string, readonly string[]>>;
@@ -9,7 +9,7 @@
9
9
  * callers share this one rule so the two cannot drift apart.
10
10
  */
11
11
  export function withLinkHref(attributes: any, href: any): any;
12
- export function makeDefaultItems({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts, hideButtons, availableWidth, role, isDev, configuredItemNames, excludedItemNames, additionalItems, }?: {
12
+ export function makeDefaultItems({ superToolbar, toolbarIcons, toolbarTexts, toolbarFonts, hideButtons, availableWidth, role, isDev, configuredItemNames, configuredItemOrder, excludedItemNames, additionalItems, }?: {
13
13
  isDev?: boolean | undefined;
14
14
  additionalItems?: never[] | undefined;
15
15
  }): {
@@ -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';