superdoc 2.23.1-next.5 → 2.23.1-next.7
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.
- package/dist/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/style.css +68 -64
- package/dist/style.layered.css +68 -64
- package/dist/superdoc/src/components/CommentsLayer/comment-urls.d.ts +2 -0
- package/dist/superdoc.cjs +119 -34
- package/dist/superdoc.es.js +119 -34
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +38 -38
- package/package.json +2 -2
package/dist/style.layered.css
CHANGED
|
@@ -1493,7 +1493,7 @@ img[data-v-c95b2073] {
|
|
|
1493
1493
|
font-size: 11px;
|
|
1494
1494
|
}
|
|
1495
1495
|
|
|
1496
|
-
.comments-dialog[data-v-
|
|
1496
|
+
.comments-dialog[data-v-c189ab35] {
|
|
1497
1497
|
display: flex;
|
|
1498
1498
|
flex-direction: column;
|
|
1499
1499
|
padding: var(--sd-ui-comments-card-padding, 16px);
|
|
@@ -1512,75 +1512,79 @@ img[data-v-c95b2073] {
|
|
|
1512
1512
|
overflow-wrap: break-word;
|
|
1513
1513
|
word-break: break-word;
|
|
1514
1514
|
}
|
|
1515
|
-
.comments-dialog[data-v-
|
|
1515
|
+
.comments-dialog[data-v-c189ab35]:not(.is-active) {
|
|
1516
1516
|
cursor: pointer;
|
|
1517
1517
|
}
|
|
1518
|
-
.comments-dialog[data-v-
|
|
1518
|
+
.comments-dialog[data-v-c189ab35]: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-
|
|
1521
|
+
.comments-dialog[data-v-c189ab35]:not(.is-resolved):hover .overflow-menu {
|
|
1522
1522
|
opacity: 1;
|
|
1523
1523
|
pointer-events: auto;
|
|
1524
1524
|
}
|
|
1525
|
-
.comments-dialog.is-active[data-v-
|
|
1525
|
+
.comments-dialog.is-active[data-v-c189ab35] {
|
|
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-
|
|
1531
|
+
.comments-dialog.is-resolved[data-v-c189ab35] {
|
|
1532
1532
|
background-color: var(--sd-ui-comments-card-resolved-bg, #f0f0f0);
|
|
1533
1533
|
}
|
|
1534
|
-
.comment-separator[data-v-
|
|
1534
|
+
.comment-separator[data-v-c189ab35] {
|
|
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-
|
|
1540
|
+
.comment[data-v-c189ab35] {
|
|
1541
1541
|
font-size: var(--sd-ui-comments-body-size, 14px);
|
|
1542
1542
|
line-height: 1.5;
|
|
1543
1543
|
white-space: pre-wrap;
|
|
1544
1544
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1545
1545
|
margin: 4px 0 0 0;
|
|
1546
1546
|
}
|
|
1547
|
-
.comment[data-v-
|
|
1547
|
+
.comment[data-v-c189ab35] p {
|
|
1548
1548
|
margin: 0;
|
|
1549
1549
|
}
|
|
1550
|
-
.
|
|
1550
|
+
.comment[data-v-c189ab35] a {
|
|
1551
|
+
color: var(--sd-ui-action, #1354ff);
|
|
1552
|
+
text-decoration: underline;
|
|
1553
|
+
}
|
|
1554
|
+
.tracked-change[data-v-c189ab35] {
|
|
1551
1555
|
font-size: var(--sd-ui-comments-body-size, 14px);
|
|
1552
1556
|
line-height: 1.5;
|
|
1553
1557
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1554
1558
|
margin: 4px 0 0 0;
|
|
1555
1559
|
}
|
|
1556
|
-
.change-type[data-v-
|
|
1560
|
+
.change-type[data-v-c189ab35] {
|
|
1557
1561
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1558
1562
|
}
|
|
1559
|
-
.tracked-change-text[data-v-
|
|
1563
|
+
.tracked-change-text[data-v-c189ab35] {
|
|
1560
1564
|
color: var(--sd-ui-comments-body-text, #212121);
|
|
1561
1565
|
white-space: pre-wrap;
|
|
1562
1566
|
}
|
|
1563
|
-
.tracked-change-text.is-deleted[data-v-
|
|
1567
|
+
.tracked-change-text.is-deleted[data-v-c189ab35] {
|
|
1564
1568
|
color: var(--sd-ui-comments-delete-text, #cb0e47);
|
|
1565
1569
|
}
|
|
1566
|
-
.tracked-change-text.is-inserted[data-v-
|
|
1570
|
+
.tracked-change-text.is-inserted[data-v-c189ab35] {
|
|
1567
1571
|
color: var(--sd-ui-comments-insert-text, #1f6feb);
|
|
1568
1572
|
font-weight: 500;
|
|
1569
1573
|
}
|
|
1570
|
-
.tracked-change[data-track-change-semantic-color-key='move-from'] .tracked-change-text.is-deleted[data-v-
|
|
1574
|
+
.tracked-change[data-track-change-semantic-color-key='move-from'] .tracked-change-text.is-deleted[data-v-c189ab35] {
|
|
1571
1575
|
color: var(--sd-ui-comments-move-from-text, #00853d);
|
|
1572
1576
|
}
|
|
1573
|
-
.tracked-change[data-track-change-semantic-color-key='move-to'] .tracked-change-text.is-inserted[data-v-
|
|
1577
|
+
.tracked-change[data-track-change-semantic-color-key='move-to'] .tracked-change-text.is-inserted[data-v-c189ab35] {
|
|
1574
1578
|
color: var(--sd-ui-comments-move-to-text, #00853d);
|
|
1575
1579
|
}
|
|
1576
|
-
.tracked-change-detail-lines[data-v-
|
|
1580
|
+
.tracked-change-detail-lines[data-v-c189ab35] {
|
|
1577
1581
|
margin-top: 4px;
|
|
1578
1582
|
}
|
|
1579
|
-
.tracked-change-detail-line[data-v-
|
|
1583
|
+
.tracked-change-detail-line[data-v-c189ab35] {
|
|
1580
1584
|
font-size: 12px;
|
|
1581
1585
|
line-height: 1.4;
|
|
1582
1586
|
}
|
|
1583
|
-
.tracked-change-image-preview[data-v-
|
|
1587
|
+
.tracked-change-image-preview[data-v-c189ab35] {
|
|
1584
1588
|
display: inline-flex;
|
|
1585
1589
|
align-items: center;
|
|
1586
1590
|
justify-content: center;
|
|
@@ -1591,7 +1595,7 @@ img[data-v-c95b2073] {
|
|
|
1591
1595
|
max-width: 96px;
|
|
1592
1596
|
max-height: 96px;
|
|
1593
1597
|
}
|
|
1594
|
-
.tracked-change-image-preview__image[data-v-
|
|
1598
|
+
.tracked-change-image-preview__image[data-v-c189ab35] {
|
|
1595
1599
|
display: block;
|
|
1596
1600
|
width: auto;
|
|
1597
1601
|
height: auto;
|
|
@@ -1601,7 +1605,7 @@ img[data-v-c95b2073] {
|
|
|
1601
1605
|
}
|
|
1602
1606
|
|
|
1603
1607
|
/* ── Failed tracked-change decision alert (SD-3772 §6) ── */
|
|
1604
|
-
.tracked-change-decision-alert[data-v-
|
|
1608
|
+
.tracked-change-decision-alert[data-v-c189ab35] {
|
|
1605
1609
|
display: flex;
|
|
1606
1610
|
align-items: center;
|
|
1607
1611
|
justify-content: space-between;
|
|
@@ -1615,12 +1619,12 @@ img[data-v-c95b2073] {
|
|
|
1615
1619
|
font-size: var(--sd-ui-comments-body-size, 14px);
|
|
1616
1620
|
line-height: 1.4;
|
|
1617
1621
|
}
|
|
1618
|
-
.tracked-change-decision-alert__retry[data-v-
|
|
1622
|
+
.tracked-change-decision-alert__retry[data-v-c189ab35] {
|
|
1619
1623
|
flex-shrink: 0;
|
|
1620
1624
|
}
|
|
1621
1625
|
|
|
1622
1626
|
/* ── Resolved badge ── */
|
|
1623
|
-
.resolved-badge[data-v-
|
|
1627
|
+
.resolved-badge[data-v-c189ab35] {
|
|
1624
1628
|
display: inline-flex;
|
|
1625
1629
|
align-items: center;
|
|
1626
1630
|
gap: 4px;
|
|
@@ -1629,33 +1633,33 @@ img[data-v-c95b2073] {
|
|
|
1629
1633
|
color: var(--sd-ui-comments-resolved-text, #00853d);
|
|
1630
1634
|
margin-bottom: 4px;
|
|
1631
1635
|
}
|
|
1632
|
-
.resolved-badge__icon[data-v-
|
|
1636
|
+
.resolved-badge__icon[data-v-c189ab35] {
|
|
1633
1637
|
display: inline-flex;
|
|
1634
1638
|
width: 12px;
|
|
1635
1639
|
height: 12px;
|
|
1636
1640
|
}
|
|
1637
|
-
.resolved-badge__icon[data-v-
|
|
1641
|
+
.resolved-badge__icon[data-v-c189ab35] svg {
|
|
1638
1642
|
width: 100%;
|
|
1639
1643
|
height: 100%;
|
|
1640
1644
|
fill: currentColor;
|
|
1641
1645
|
}
|
|
1642
1646
|
|
|
1643
1647
|
/* ── Text truncation ── */
|
|
1644
|
-
.comment.is-truncated[data-v-
|
|
1645
|
-
.tracked-change.is-truncated[data-v-
|
|
1648
|
+
.comment.is-truncated[data-v-c189ab35],
|
|
1649
|
+
.tracked-change.is-truncated[data-v-c189ab35] {
|
|
1646
1650
|
display: -webkit-box;
|
|
1647
1651
|
-webkit-line-clamp: 3;
|
|
1648
1652
|
-webkit-box-orient: vertical;
|
|
1649
1653
|
max-height: 4.5em;
|
|
1650
1654
|
overflow: hidden;
|
|
1651
1655
|
}
|
|
1652
|
-
.comment.is-scrollable[data-v-
|
|
1653
|
-
.tracked-change.is-scrollable[data-v-
|
|
1656
|
+
.comment.is-scrollable[data-v-c189ab35],
|
|
1657
|
+
.tracked-change.is-scrollable[data-v-c189ab35] {
|
|
1654
1658
|
max-height: 220px;
|
|
1655
1659
|
overflow-y: auto;
|
|
1656
1660
|
padding-right: 4px;
|
|
1657
1661
|
}
|
|
1658
|
-
.show-more-toggle[data-v-
|
|
1662
|
+
.show-more-toggle[data-v-c189ab35] {
|
|
1659
1663
|
font-size: 12px;
|
|
1660
1664
|
color: var(--sd-ui-action, #1355ff);
|
|
1661
1665
|
cursor: pointer;
|
|
@@ -1663,12 +1667,12 @@ img[data-v-c95b2073] {
|
|
|
1663
1667
|
margin-top: 4px;
|
|
1664
1668
|
user-select: none;
|
|
1665
1669
|
}
|
|
1666
|
-
.show-more-toggle[data-v-
|
|
1670
|
+
.show-more-toggle[data-v-c189ab35]:hover {
|
|
1667
1671
|
text-decoration: underline;
|
|
1668
1672
|
}
|
|
1669
1673
|
|
|
1670
1674
|
/* ── Thread collapse ── */
|
|
1671
|
-
.collapsed-replies[data-v-
|
|
1675
|
+
.collapsed-replies[data-v-c189ab35] {
|
|
1672
1676
|
display: flex;
|
|
1673
1677
|
align-items: center;
|
|
1674
1678
|
gap: 6px;
|
|
@@ -1679,24 +1683,24 @@ img[data-v-c95b2073] {
|
|
|
1679
1683
|
cursor: pointer;
|
|
1680
1684
|
user-select: none;
|
|
1681
1685
|
}
|
|
1682
|
-
.collapsed-replies[data-v-
|
|
1686
|
+
.collapsed-replies[data-v-c189ab35]:hover {
|
|
1683
1687
|
text-decoration: underline;
|
|
1684
1688
|
}
|
|
1685
|
-
.collapsed-avatars[data-v-
|
|
1689
|
+
.collapsed-avatars[data-v-c189ab35] {
|
|
1686
1690
|
display: flex;
|
|
1687
1691
|
}
|
|
1688
|
-
.collapsed-avatars .mini-avatar[data-v-
|
|
1692
|
+
.collapsed-avatars .mini-avatar[data-v-c189ab35] {
|
|
1689
1693
|
--sd-comment-avatar-size: 20px;
|
|
1690
1694
|
--sd-comment-avatar-font-size: 8px;
|
|
1691
1695
|
margin-left: -4px;
|
|
1692
1696
|
border: 2px solid var(--sd-ui-comments-card-active-bg, #ffffff);
|
|
1693
1697
|
}
|
|
1694
|
-
.collapsed-avatars .mini-avatar[data-v-
|
|
1698
|
+
.collapsed-avatars .mini-avatar[data-v-c189ab35]:first-child {
|
|
1695
1699
|
margin-left: 0;
|
|
1696
1700
|
}
|
|
1697
1701
|
|
|
1698
1702
|
/* ── New comment input ── */
|
|
1699
|
-
.new-comment-input-wrapper[data-v-
|
|
1703
|
+
.new-comment-input-wrapper[data-v-c189ab35] {
|
|
1700
1704
|
border: 1.5px solid var(--sd-ui-comments-input-border, #dbdbdb);
|
|
1701
1705
|
border-radius: 12px;
|
|
1702
1706
|
padding: 8.5px 10.5px;
|
|
@@ -1705,17 +1709,17 @@ img[data-v-c95b2073] {
|
|
|
1705
1709
|
max-height: 150px;
|
|
1706
1710
|
overflow: visible;
|
|
1707
1711
|
}
|
|
1708
|
-
.new-comment-input-wrapper[data-v-
|
|
1712
|
+
.new-comment-input-wrapper[data-v-c189ab35]:focus-within {
|
|
1709
1713
|
border-color: var(--sd-ui-comments-input-focus-border, #4f7cff);
|
|
1710
1714
|
box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
|
|
1711
1715
|
}
|
|
1712
|
-
.new-comment-input-wrapper[data-v-
|
|
1716
|
+
.new-comment-input-wrapper[data-v-c189ab35] .comment-entry {
|
|
1713
1717
|
border-radius: 0;
|
|
1714
1718
|
}
|
|
1715
|
-
.new-comment-input-wrapper[data-v-
|
|
1719
|
+
.new-comment-input-wrapper[data-v-c189ab35] .input-section {
|
|
1716
1720
|
margin: 0;
|
|
1717
1721
|
}
|
|
1718
|
-
.new-comment-input-wrapper[data-v-
|
|
1722
|
+
.new-comment-input-wrapper[data-v-c189ab35] .superdoc-field {
|
|
1719
1723
|
font-size: 14px;
|
|
1720
1724
|
line-height: 20px;
|
|
1721
1725
|
border: none;
|
|
@@ -1726,18 +1730,18 @@ img[data-v-c95b2073] {
|
|
|
1726
1730
|
max-height: 132px;
|
|
1727
1731
|
resize: none;
|
|
1728
1732
|
}
|
|
1729
|
-
.new-comment-input-wrapper[data-v-
|
|
1730
|
-
.new-comment-input-wrapper[data-v-
|
|
1733
|
+
.new-comment-input-wrapper[data-v-c189ab35] .superdoc-field:focus,
|
|
1734
|
+
.new-comment-input-wrapper[data-v-c189ab35] .superdoc-field:active {
|
|
1731
1735
|
border: none;
|
|
1732
1736
|
box-shadow: none;
|
|
1733
1737
|
outline: none;
|
|
1734
1738
|
}
|
|
1735
|
-
.new-comment-input-wrapper[data-v-
|
|
1739
|
+
.new-comment-input-wrapper[data-v-c189ab35] .sd-editor-placeholder::before {
|
|
1736
1740
|
content: 'Comment or add others with @';
|
|
1737
1741
|
}
|
|
1738
1742
|
|
|
1739
1743
|
/* ── Reply pill & expanded input ── */
|
|
1740
|
-
.reply-pill[data-v-
|
|
1744
|
+
.reply-pill[data-v-c189ab35] {
|
|
1741
1745
|
width: 100%;
|
|
1742
1746
|
padding: 8.5px 10.5px;
|
|
1743
1747
|
border: 1.5px solid transparent;
|
|
@@ -1751,16 +1755,16 @@ img[data-v-c95b2073] {
|
|
|
1751
1755
|
cursor: text;
|
|
1752
1756
|
transition: background 150ms ease;
|
|
1753
1757
|
}
|
|
1754
|
-
.reply-pill[data-v-
|
|
1758
|
+
.reply-pill[data-v-c189ab35]:hover {
|
|
1755
1759
|
background: var(--sd-color-gray-200, #f2f2f2);
|
|
1756
1760
|
}
|
|
1757
|
-
.reply-pill[data-v-
|
|
1761
|
+
.reply-pill[data-v-c189ab35]:disabled {
|
|
1758
1762
|
cursor: not-allowed;
|
|
1759
1763
|
}
|
|
1760
|
-
.reply-expanded[data-v-
|
|
1764
|
+
.reply-expanded[data-v-c189ab35] {
|
|
1761
1765
|
margin-top: 10px;
|
|
1762
1766
|
}
|
|
1763
|
-
.reply-input-wrapper[data-v-
|
|
1767
|
+
.reply-input-wrapper[data-v-c189ab35] {
|
|
1764
1768
|
border: 1.5px solid var(--sd-ui-comments-input-border, #dbdbdb);
|
|
1765
1769
|
border-radius: 12px;
|
|
1766
1770
|
padding: 8.5px 10.5px;
|
|
@@ -1768,17 +1772,17 @@ img[data-v-c95b2073] {
|
|
|
1768
1772
|
max-height: 150px;
|
|
1769
1773
|
overflow: visible;
|
|
1770
1774
|
}
|
|
1771
|
-
.reply-input-wrapper[data-v-
|
|
1775
|
+
.reply-input-wrapper[data-v-c189ab35]:focus-within {
|
|
1772
1776
|
border-color: var(--sd-ui-comments-input-focus-border, #4f7cff);
|
|
1773
1777
|
box-shadow: 0 0 0 2px rgba(79, 124, 255, 0.16);
|
|
1774
1778
|
}
|
|
1775
|
-
.reply-input-wrapper[data-v-
|
|
1779
|
+
.reply-input-wrapper[data-v-c189ab35] .comment-entry {
|
|
1776
1780
|
border-radius: 0;
|
|
1777
1781
|
}
|
|
1778
|
-
.reply-input-wrapper[data-v-
|
|
1782
|
+
.reply-input-wrapper[data-v-c189ab35] .input-section {
|
|
1779
1783
|
margin: 0;
|
|
1780
1784
|
}
|
|
1781
|
-
.reply-input-wrapper[data-v-
|
|
1785
|
+
.reply-input-wrapper[data-v-c189ab35] .superdoc-field {
|
|
1782
1786
|
font-size: 14px;
|
|
1783
1787
|
line-height: 20px;
|
|
1784
1788
|
border: none;
|
|
@@ -1789,23 +1793,23 @@ img[data-v-c95b2073] {
|
|
|
1789
1793
|
max-height: 132px;
|
|
1790
1794
|
resize: none;
|
|
1791
1795
|
}
|
|
1792
|
-
.reply-input-wrapper[data-v-
|
|
1793
|
-
.reply-input-wrapper[data-v-
|
|
1796
|
+
.reply-input-wrapper[data-v-c189ab35] .superdoc-field:focus,
|
|
1797
|
+
.reply-input-wrapper[data-v-c189ab35] .superdoc-field:active {
|
|
1794
1798
|
border: none;
|
|
1795
1799
|
box-shadow: none;
|
|
1796
1800
|
outline: none;
|
|
1797
1801
|
}
|
|
1798
|
-
.reply-input-wrapper[data-v-
|
|
1802
|
+
.reply-input-wrapper[data-v-c189ab35] .sd-editor-placeholder::before {
|
|
1799
1803
|
content: 'Reply or add others with @';
|
|
1800
1804
|
}
|
|
1801
|
-
.reply-actions[data-v-
|
|
1805
|
+
.reply-actions[data-v-c189ab35] {
|
|
1802
1806
|
display: flex;
|
|
1803
1807
|
justify-content: flex-end;
|
|
1804
1808
|
align-items: center;
|
|
1805
1809
|
gap: 16px;
|
|
1806
1810
|
margin-top: 8px;
|
|
1807
1811
|
}
|
|
1808
|
-
.reply-btn-cancel[data-v-
|
|
1812
|
+
.reply-btn-cancel[data-v-c189ab35] {
|
|
1809
1813
|
background: none;
|
|
1810
1814
|
border: none;
|
|
1811
1815
|
font-size: 13px;
|
|
@@ -1816,10 +1820,10 @@ img[data-v-c95b2073] {
|
|
|
1816
1820
|
font-family: inherit;
|
|
1817
1821
|
transition: color 150ms;
|
|
1818
1822
|
}
|
|
1819
|
-
.reply-btn-cancel[data-v-
|
|
1823
|
+
.reply-btn-cancel[data-v-c189ab35]:hover {
|
|
1820
1824
|
color: var(--sd-ui-text, #212121);
|
|
1821
1825
|
}
|
|
1822
|
-
.reply-btn-primary[data-v-
|
|
1826
|
+
.reply-btn-primary[data-v-c189ab35] {
|
|
1823
1827
|
background: var(--sd-ui-action, #1355ff);
|
|
1824
1828
|
border: none;
|
|
1825
1829
|
font-size: 13px;
|
|
@@ -1831,19 +1835,19 @@ img[data-v-c95b2073] {
|
|
|
1831
1835
|
font-family: inherit;
|
|
1832
1836
|
transition: background 150ms;
|
|
1833
1837
|
}
|
|
1834
|
-
.reply-btn-primary[data-v-
|
|
1838
|
+
.reply-btn-primary[data-v-c189ab35]:hover {
|
|
1835
1839
|
background: var(--sd-ui-action-hover, #0f44cc);
|
|
1836
1840
|
}
|
|
1837
|
-
.reply-btn-primary.sd-is-disabled[data-v-
|
|
1841
|
+
.reply-btn-primary.sd-is-disabled[data-v-c189ab35] {
|
|
1838
1842
|
background: var(--sd-color-gray-400, #dbdbdb);
|
|
1839
1843
|
color: var(--sd-color-gray-600, #888888);
|
|
1840
1844
|
cursor: default;
|
|
1841
1845
|
pointer-events: none;
|
|
1842
1846
|
}
|
|
1843
|
-
.existing-internal-input[data-v-
|
|
1847
|
+
.existing-internal-input[data-v-c189ab35] {
|
|
1844
1848
|
margin-bottom: 10px;
|
|
1845
1849
|
}
|
|
1846
|
-
.sd-internal-dropdown[data-v-
|
|
1850
|
+
.sd-internal-dropdown[data-v-c189ab35] {
|
|
1847
1851
|
display: inline-block;
|
|
1848
1852
|
}
|
|
1849
1853
|
|
package/dist/superdoc.cjs
CHANGED
|
@@ -304,7 +304,7 @@ var awarenessStatesToArray = (context, states) => {
|
|
|
304
304
|
var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
|
|
305
305
|
function getSuperdocVersion() {
|
|
306
306
|
try {
|
|
307
|
-
return "2.23.1-next.
|
|
307
|
+
return "2.23.1-next.7";
|
|
308
308
|
} catch {
|
|
309
309
|
return "unknown";
|
|
310
310
|
}
|
|
@@ -13166,6 +13166,114 @@ var _sfc_main$35 = {
|
|
|
13166
13166
|
};
|
|
13167
13167
|
var CommentInput_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$35, [["__scopeId", "data-v-0720a671"]]);
|
|
13168
13168
|
//#endregion
|
|
13169
|
+
//#region src/internal/toolbar/built-in/url-safety.js
|
|
13170
|
+
/**
|
|
13171
|
+
* Minimal href sanitizer for the built-in link popover.
|
|
13172
|
+
*
|
|
13173
|
+
* The v1 toolbar used the shared `@superdoc/url-validation` package, which is not
|
|
13174
|
+
* a resolvable runtime dependency of the published `superdoc` ES build. This
|
|
13175
|
+
* keeps the same fail-closed posture (only known-safe schemes pass) without
|
|
13176
|
+
* pulling in that package: dangerous schemes (`javascript:`, `data:`,
|
|
13177
|
+
* `vbscript:`) return `null`, mirroring the v1 contract that callers treat a
|
|
13178
|
+
* `null` result as an invalid URL.
|
|
13179
|
+
*/
|
|
13180
|
+
var SAFE_SCHEME = /^(https?|mailto|tel):/i;
|
|
13181
|
+
var DANGEROUS_SCHEME = /^(javascript|data|vbscript):/i;
|
|
13182
|
+
var HAS_SCHEME = /^[a-z][a-z0-9+.-]*:/i;
|
|
13183
|
+
/**
|
|
13184
|
+
* Validate and normalize an href. Returns `{ href }` for safe values, or `null`.
|
|
13185
|
+
* @param {string} value
|
|
13186
|
+
* @returns {{ href: string }|null}
|
|
13187
|
+
*/
|
|
13188
|
+
function sanitizeHref(value) {
|
|
13189
|
+
if (typeof value !== "string") return null;
|
|
13190
|
+
const trimmed = value.trim();
|
|
13191
|
+
if (!trimmed) return null;
|
|
13192
|
+
if (trimmed.startsWith("#")) return { href: trimmed };
|
|
13193
|
+
if (DANGEROUS_SCHEME.test(trimmed)) return null;
|
|
13194
|
+
if (HAS_SCHEME.test(trimmed)) return SAFE_SCHEME.test(trimmed) ? { href: trimmed } : null;
|
|
13195
|
+
return { href: trimmed };
|
|
13196
|
+
}
|
|
13197
|
+
//#endregion
|
|
13198
|
+
//#region src/components/CommentsLayer/comment-urls.js
|
|
13199
|
+
function isAbsoluteWebUrl(value) {
|
|
13200
|
+
if (!/^https?:\/\/[^\s/?#\\]+/i.test(value) || /[\s\\]/u.test(value)) return false;
|
|
13201
|
+
try {
|
|
13202
|
+
const url = new URL(value);
|
|
13203
|
+
return (url.protocol === "https:" || url.protocol === "http:") && Boolean(url.hostname);
|
|
13204
|
+
} catch {
|
|
13205
|
+
return false;
|
|
13206
|
+
}
|
|
13207
|
+
}
|
|
13208
|
+
function trimUrlPunctuation(value) {
|
|
13209
|
+
const closingDelimiter = {
|
|
13210
|
+
"(": ")",
|
|
13211
|
+
"[": "]",
|
|
13212
|
+
"{": "}"
|
|
13213
|
+
};
|
|
13214
|
+
const balance = {
|
|
13215
|
+
")": 0,
|
|
13216
|
+
"]": 0,
|
|
13217
|
+
"}": 0
|
|
13218
|
+
};
|
|
13219
|
+
for (const character of value) {
|
|
13220
|
+
const close = closingDelimiter[character];
|
|
13221
|
+
if (close) balance[close] += 1;
|
|
13222
|
+
else if (Object.hasOwn(balance, character)) balance[character] -= 1;
|
|
13223
|
+
}
|
|
13224
|
+
let end = value.length;
|
|
13225
|
+
while (end > 0) {
|
|
13226
|
+
const character = value[end - 1];
|
|
13227
|
+
if (".,!?;:".includes(character)) end -= 1;
|
|
13228
|
+
else if (balance[character] < 0) {
|
|
13229
|
+
balance[character] += 1;
|
|
13230
|
+
end -= 1;
|
|
13231
|
+
} else break;
|
|
13232
|
+
}
|
|
13233
|
+
return value.slice(0, end);
|
|
13234
|
+
}
|
|
13235
|
+
function configureLink(link, href) {
|
|
13236
|
+
link.setAttribute("href", href);
|
|
13237
|
+
link.setAttribute("target", "_blank");
|
|
13238
|
+
link.setAttribute("rel", "noopener noreferrer");
|
|
13239
|
+
}
|
|
13240
|
+
/** Render links without rewriting stored comment HTML or its rich-text structure. */
|
|
13241
|
+
function renderCommentHtml(value) {
|
|
13242
|
+
if (typeof value !== "string") return "";
|
|
13243
|
+
if (typeof document === "undefined") return value;
|
|
13244
|
+
const template = document.createElement("template");
|
|
13245
|
+
template.innerHTML = value;
|
|
13246
|
+
for (const link of template.content.querySelectorAll("a")) {
|
|
13247
|
+
const safe = sanitizeHref(link.getAttribute("href"));
|
|
13248
|
+
if (safe && (isAbsoluteWebUrl(safe.href) || /^(mailto|tel):\S+$/i.test(safe.href))) configureLink(link, safe.href);
|
|
13249
|
+
else link.replaceWith(...link.childNodes);
|
|
13250
|
+
}
|
|
13251
|
+
const walker = document.createTreeWalker(template.content, NodeFilter.SHOW_TEXT);
|
|
13252
|
+
const textNodes = [];
|
|
13253
|
+
while (walker.nextNode()) textNodes.push(walker.currentNode);
|
|
13254
|
+
for (const node of textNodes) {
|
|
13255
|
+
if (node.parentElement?.closest("a, script, style, textarea, code, pre")) continue;
|
|
13256
|
+
const text = node.textContent;
|
|
13257
|
+
const fragment = document.createDocumentFragment();
|
|
13258
|
+
let end = 0;
|
|
13259
|
+
for (const match of text.matchAll(/(^|[\s([{])(https?:\/\/[^\s<>"']+)/gi)) {
|
|
13260
|
+
const href = trimUrlPunctuation(match[2]);
|
|
13261
|
+
if (!isAbsoluteWebUrl(href)) continue;
|
|
13262
|
+
const start = match.index + match[1].length;
|
|
13263
|
+
fragment.append(document.createTextNode(text.slice(end, start)));
|
|
13264
|
+
const link = document.createElement("a");
|
|
13265
|
+
configureLink(link, href);
|
|
13266
|
+
link.textContent = href;
|
|
13267
|
+
fragment.append(link);
|
|
13268
|
+
end = start + href.length;
|
|
13269
|
+
}
|
|
13270
|
+
if (end === 0) continue;
|
|
13271
|
+
fragment.append(document.createTextNode(text.slice(end)));
|
|
13272
|
+
node.replaceWith(fragment);
|
|
13273
|
+
}
|
|
13274
|
+
return template.innerHTML;
|
|
13275
|
+
}
|
|
13276
|
+
//#endregion
|
|
13169
13277
|
//#region src/components/CommentsLayer/CommentDialog.vue
|
|
13170
13278
|
var _hoisted_1$27 = [
|
|
13171
13279
|
"aria-label",
|
|
@@ -13547,6 +13655,12 @@ var _sfc_main$34 = {
|
|
|
13547
13655
|
return a.createdTime - b.createdTime;
|
|
13548
13656
|
});
|
|
13549
13657
|
});
|
|
13658
|
+
const renderedCommentTexts = require__plugin_vue_export_helper.computed(() => new Map(comments.value.map((comment) => [comment.commentId, renderCommentHtml(comment.commentText)])));
|
|
13659
|
+
const handleDialogClick = (event) => {
|
|
13660
|
+
if (event.target instanceof Element && event.target.closest(".comment a[href]")) return;
|
|
13661
|
+
event.preventDefault();
|
|
13662
|
+
return setFocus();
|
|
13663
|
+
};
|
|
13550
13664
|
const dialogAccessibleLabel = require__plugin_vue_export_helper.computed(() => {
|
|
13551
13665
|
if (props.comment.trackedChangeLabel) return props.comment.trackedChangeLabel;
|
|
13552
13666
|
if (props.comment.trackedChange) return "Tracked change discussion";
|
|
@@ -14175,7 +14289,7 @@ var _sfc_main$34 = {
|
|
|
14175
14289
|
"is-active": isDialogActive.value || isPendingNewComment.value,
|
|
14176
14290
|
"is-resolved": props.comment.resolvedTime
|
|
14177
14291
|
}]),
|
|
14178
|
-
onClick: require__plugin_vue_export_helper.withModifiers(
|
|
14292
|
+
onClick: require__plugin_vue_export_helper.withModifiers(handleDialogClick, ["stop"]),
|
|
14179
14293
|
style: require__plugin_vue_export_helper.normalizeStyle(getSidebarCommentStyle.value),
|
|
14180
14294
|
ref_key: "commentDialogElement",
|
|
14181
14295
|
ref: commentDialogElement,
|
|
@@ -14312,7 +14426,7 @@ var _sfc_main$34 = {
|
|
|
14312
14426
|
class: require__plugin_vue_export_helper.normalizeClass(["comment", index === 0 ? bodyOverflowClass.value : void 0]),
|
|
14313
14427
|
ref_for: true,
|
|
14314
14428
|
ref: index === 0 ? setParentBodyRef : void 0,
|
|
14315
|
-
innerHTML: comment.
|
|
14429
|
+
innerHTML: renderedCommentTexts.value.get(comment.commentId)
|
|
14316
14430
|
}, null, 10, _hoisted_38)) : require__plugin_vue_export_helper.unref(isDebugging) && !isEditingThisComment.value(comment) ? (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_39, require__plugin_vue_export_helper.toDisplayString(require__plugin_vue_export_helper.unref(editorCommentPositions)[comment.importedId !== void 0 ? comment.importedId : comment.commentId]?.bounds), 1)) : (require__plugin_vue_export_helper.openBlock(), require__plugin_vue_export_helper.createElementBlock("div", _hoisted_40, [require__plugin_vue_export_helper.createElementVNode("div", _hoisted_41, [require__plugin_vue_export_helper.createVNode(CommentInput_default, {
|
|
14317
14431
|
ref_for: true,
|
|
14318
14432
|
ref: setEditCommentInputRef(comment.commentId),
|
|
@@ -14389,7 +14503,7 @@ var _sfc_main$34 = {
|
|
|
14389
14503
|
};
|
|
14390
14504
|
}
|
|
14391
14505
|
};
|
|
14392
|
-
var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-
|
|
14506
|
+
var CommentDialog_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$34, [["__scopeId", "data-v-c189ab35"]]);
|
|
14393
14507
|
//#endregion
|
|
14394
14508
|
//#region src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue
|
|
14395
14509
|
var _hoisted_1$26 = [
|
|
@@ -18623,35 +18737,6 @@ function shouldHandleFindShortcut(event, { focusInside, owner }) {
|
|
|
18623
18737
|
return (!active || active === document.body || active === document.documentElement) && ownsAmbientFindShortcut(owner);
|
|
18624
18738
|
}
|
|
18625
18739
|
//#endregion
|
|
18626
|
-
//#region src/internal/toolbar/built-in/url-safety.js
|
|
18627
|
-
/**
|
|
18628
|
-
* Minimal href sanitizer for the built-in link popover.
|
|
18629
|
-
*
|
|
18630
|
-
* The v1 toolbar used the shared `@superdoc/url-validation` package, which is not
|
|
18631
|
-
* a resolvable runtime dependency of the published `superdoc` ES build. This
|
|
18632
|
-
* keeps the same fail-closed posture (only known-safe schemes pass) without
|
|
18633
|
-
* pulling in that package: dangerous schemes (`javascript:`, `data:`,
|
|
18634
|
-
* `vbscript:`) return `null`, mirroring the v1 contract that callers treat a
|
|
18635
|
-
* `null` result as an invalid URL.
|
|
18636
|
-
*/
|
|
18637
|
-
var SAFE_SCHEME = /^(https?|mailto|tel):/i;
|
|
18638
|
-
var DANGEROUS_SCHEME = /^(javascript|data|vbscript):/i;
|
|
18639
|
-
var HAS_SCHEME = /^[a-z][a-z0-9+.-]*:/i;
|
|
18640
|
-
/**
|
|
18641
|
-
* Validate and normalize an href. Returns `{ href }` for safe values, or `null`.
|
|
18642
|
-
* @param {string} value
|
|
18643
|
-
* @returns {{ href: string }|null}
|
|
18644
|
-
*/
|
|
18645
|
-
function sanitizeHref(value) {
|
|
18646
|
-
if (typeof value !== "string") return null;
|
|
18647
|
-
const trimmed = value.trim();
|
|
18648
|
-
if (!trimmed) return null;
|
|
18649
|
-
if (trimmed.startsWith("#")) return { href: trimmed };
|
|
18650
|
-
if (DANGEROUS_SCHEME.test(trimmed)) return null;
|
|
18651
|
-
if (HAS_SCHEME.test(trimmed)) return SAFE_SCHEME.test(trimmed) ? { href: trimmed } : null;
|
|
18652
|
-
return { href: trimmed };
|
|
18653
|
-
}
|
|
18654
|
-
//#endregion
|
|
18655
18740
|
//#region ../../shared/common/icons/bold-solid.svg?raw
|
|
18656
18741
|
var bold_solid_default = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M0 64C0 46.3 14.3 32 32 32l48 0 16 0 128 0c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128L96 480l-16 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-160L48 96 32 96C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64L112 96l0 128 112 0zM112 288l0 128 144 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-112 0z\"/></svg>";
|
|
18657
18742
|
//#endregion
|
|
@@ -46472,7 +46557,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
|
|
|
46472
46557
|
}
|
|
46473
46558
|
this.userColorMap = /* @__PURE__ */ new Map();
|
|
46474
46559
|
this.colorIndex = 0;
|
|
46475
|
-
this.version = "2.23.1-next.
|
|
46560
|
+
this.version = "2.23.1-next.7";
|
|
46476
46561
|
this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
|
|
46477
46562
|
this.superdocId = config.superdocId || require_uuid.v4();
|
|
46478
46563
|
this.colors = this.config.colors ?? [];
|