@highlight-run/rrweb 2.0.6 → 2.0.9
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/plugins/console-record.min.js.map +1 -1
- package/dist/plugins/console-replay.min.js.map +1 -1
- package/dist/record/rrweb-record-pack.min.js.map +1 -1
- package/dist/record/rrweb-record.js +3 -3
- package/dist/record/rrweb-record.min.js +3 -3
- package/dist/record/rrweb-record.min.js.map +1 -1
- package/dist/replay/rrweb-replay-unpack.js +4 -4
- package/dist/replay/rrweb-replay-unpack.min.js +4 -4
- package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
- package/dist/replay/rrweb-replay.js +4 -4
- package/dist/replay/rrweb-replay.min.js +4 -4
- package/dist/replay/rrweb-replay.min.js.map +1 -1
- package/dist/rrweb-all.js +12 -12
- package/dist/rrweb-all.min.js +12 -12
- package/dist/rrweb-all.min.js.map +1 -1
- package/dist/rrweb.js +5 -5
- package/dist/rrweb.min.js +5 -5
- package/dist/rrweb.min.js.map +1 -1
- package/es/rrweb/packages/rrdom/es/virtual-dom.js +47 -24
- package/es/rrweb/packages/rrweb/src/record/index.js +5 -2
- package/es/rrweb/packages/rrweb/src/record/mutation.js +23 -11
- package/es/rrweb/packages/rrweb/src/record/observer.js +6 -6
- package/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js +1 -1
- package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js +2 -2
- package/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js +1 -2
- package/es/rrweb/packages/rrweb/src/utils.js +16 -23
- package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +292 -236
- package/lib/record/rrweb-record.js +333 -280
- package/lib/replay/rrweb-replay-unpack.js +57 -24
- package/lib/replay/rrweb-replay.js +57 -24
- package/lib/rrweb-all.js +390 -304
- package/lib/rrweb.js +390 -304
- package/package.json +4 -4
- package/typings/utils.d.ts +1 -1
|
@@ -751,6 +751,7 @@ function buildNode(n, options) {
|
|
|
751
751
|
if (!image.currentSrc.startsWith('data:')) {
|
|
752
752
|
image.setAttribute('rrweb-original-src', n.attributes.src);
|
|
753
753
|
image.src = value;
|
|
754
|
+
image.setAttribute('rrweb-inline-src', value);
|
|
754
755
|
}
|
|
755
756
|
}
|
|
756
757
|
if (name_1 === 'rr_width') {
|
|
@@ -779,6 +780,15 @@ function buildNode(n, options) {
|
|
|
779
780
|
for (var name_1 in n.attributes) {
|
|
780
781
|
_loop_1(name_1);
|
|
781
782
|
}
|
|
783
|
+
if (tagName === 'img') {
|
|
784
|
+
var image = node_1;
|
|
785
|
+
if (!image.currentSrc.startsWith('data:')) {
|
|
786
|
+
var inlineSrc = image.getAttribute('rrweb-inline-src');
|
|
787
|
+
if (inlineSrc === null || inlineSrc === void 0 ? void 0 : inlineSrc.startsWith('data:')) {
|
|
788
|
+
image.src = inlineSrc;
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
782
792
|
if (n.isShadowHost) {
|
|
783
793
|
if (!node_1.shadowRoot) {
|
|
784
794
|
node_1.attachShadow({ mode: 'open' });
|
|
@@ -1444,7 +1454,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1444
1454
|
break;
|
|
1445
1455
|
}
|
|
1446
1456
|
case NodeType$1.Element: {
|
|
1447
|
-
const oldElement =
|
|
1457
|
+
const oldElement = oldTree;
|
|
1448
1458
|
const newRRElement = newTree;
|
|
1449
1459
|
diffProps(oldElement, newRRElement, rrnodeMirror);
|
|
1450
1460
|
scrollDataToApply = newRRElement.scrollData;
|
|
@@ -1452,7 +1462,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1452
1462
|
switch (newRRElement.tagName) {
|
|
1453
1463
|
case 'AUDIO':
|
|
1454
1464
|
case 'VIDEO': {
|
|
1455
|
-
const oldMediaElement =
|
|
1465
|
+
const oldMediaElement = oldTree;
|
|
1456
1466
|
const newMediaRRElement = newRRElement;
|
|
1457
1467
|
if (newMediaRRElement.paused !== undefined)
|
|
1458
1468
|
newMediaRRElement.paused
|
|
@@ -1467,7 +1477,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1467
1477
|
break;
|
|
1468
1478
|
}
|
|
1469
1479
|
case 'CANVAS':
|
|
1470
|
-
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation,
|
|
1480
|
+
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation, oldTree));
|
|
1471
1481
|
break;
|
|
1472
1482
|
case 'STYLE':
|
|
1473
1483
|
applyVirtualStyleRulesToNode(oldElement, newTree.rules);
|
|
@@ -1494,8 +1504,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1494
1504
|
scrollDataToApply && replayer.applyScroll(scrollDataToApply, true);
|
|
1495
1505
|
inputDataToApply && replayer.applyInput(inputDataToApply);
|
|
1496
1506
|
if (newTree.nodeName === 'IFRAME') {
|
|
1497
|
-
const oldContentDocument =
|
|
1498
|
-
.contentDocument;
|
|
1507
|
+
const oldContentDocument = oldTree.contentDocument;
|
|
1499
1508
|
const newIFrameElement = newTree;
|
|
1500
1509
|
if (oldContentDocument) {
|
|
1501
1510
|
const sn = rrnodeMirror.getMeta(newIFrameElement.contentDocument);
|
|
@@ -1556,16 +1565,26 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
1556
1565
|
newEndNode = newChildren[--newEndIndex];
|
|
1557
1566
|
}
|
|
1558
1567
|
else if (replayer.mirror.getId(oldStartNode) === rrnodeMirror.getId(newEndNode)) {
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1568
|
+
try {
|
|
1569
|
+
parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
|
|
1570
|
+
diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
|
|
1571
|
+
oldStartNode = oldChildren[++oldStartIndex];
|
|
1572
|
+
newEndNode = newChildren[--newEndIndex];
|
|
1573
|
+
}
|
|
1574
|
+
catch (e) {
|
|
1575
|
+
console.error(e, parentNode, oldStartNode, oldEndNode);
|
|
1576
|
+
}
|
|
1563
1577
|
}
|
|
1564
1578
|
else if (replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)) {
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1579
|
+
try {
|
|
1580
|
+
parentNode.insertBefore(oldEndNode, oldStartNode);
|
|
1581
|
+
diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
|
|
1582
|
+
oldEndNode = oldChildren[--oldEndIndex];
|
|
1583
|
+
newStartNode = newChildren[++newStartIndex];
|
|
1584
|
+
}
|
|
1585
|
+
catch (e) {
|
|
1586
|
+
console.error(e, parentNode, oldEndNode, oldStartNode);
|
|
1587
|
+
}
|
|
1569
1588
|
}
|
|
1570
1589
|
else {
|
|
1571
1590
|
if (!oldIdToIndex) {
|
|
@@ -1579,21 +1598,31 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
1579
1598
|
indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];
|
|
1580
1599
|
if (indexInOld) {
|
|
1581
1600
|
const nodeToMove = oldChildren[indexInOld];
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1601
|
+
try {
|
|
1602
|
+
parentNode.insertBefore(nodeToMove, oldStartNode);
|
|
1603
|
+
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
|
|
1604
|
+
oldChildren[indexInOld] = undefined;
|
|
1605
|
+
}
|
|
1606
|
+
catch (e) {
|
|
1607
|
+
console.error(e, parentNode, nodeToMove, oldStartNode);
|
|
1608
|
+
}
|
|
1585
1609
|
}
|
|
1586
1610
|
else {
|
|
1587
1611
|
const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);
|
|
1588
1612
|
if (((_a = replayer.mirror.getMeta(parentNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Document &&
|
|
1589
1613
|
((_b = replayer.mirror.getMeta(newNode)) === null || _b === void 0 ? void 0 : _b.type) === NodeType$1.Element &&
|
|
1590
|
-
|
|
1591
|
-
parentNode.removeChild(
|
|
1614
|
+
parentNode.documentElement) {
|
|
1615
|
+
parentNode.removeChild(parentNode.documentElement);
|
|
1592
1616
|
oldChildren[oldStartIndex] = undefined;
|
|
1593
1617
|
oldStartNode = undefined;
|
|
1594
1618
|
}
|
|
1595
|
-
|
|
1596
|
-
|
|
1619
|
+
try {
|
|
1620
|
+
parentNode.insertBefore(newNode, oldStartNode || null);
|
|
1621
|
+
diff(newNode, newStartNode, replayer, rrnodeMirror);
|
|
1622
|
+
}
|
|
1623
|
+
catch (e) {
|
|
1624
|
+
console.error(e, parentNode, newNode, oldStartNode || null);
|
|
1625
|
+
}
|
|
1597
1626
|
}
|
|
1598
1627
|
newStartNode = newChildren[++newStartIndex];
|
|
1599
1628
|
}
|
|
@@ -1608,8 +1637,13 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
1608
1637
|
});
|
|
1609
1638
|
for (; newStartIndex <= newEndIndex; ++newStartIndex) {
|
|
1610
1639
|
const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);
|
|
1611
|
-
|
|
1612
|
-
|
|
1640
|
+
try {
|
|
1641
|
+
parentNode.insertBefore(newNode, referenceNode);
|
|
1642
|
+
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
|
|
1643
|
+
}
|
|
1644
|
+
catch (e) {
|
|
1645
|
+
console.error(e, parentNode, newNode, referenceNode);
|
|
1646
|
+
}
|
|
1613
1647
|
}
|
|
1614
1648
|
}
|
|
1615
1649
|
else if (newStartIndex > newEndIndex) {
|
|
@@ -1663,8 +1697,7 @@ function getNestedRule$1(rules, position) {
|
|
|
1663
1697
|
return rule;
|
|
1664
1698
|
}
|
|
1665
1699
|
else {
|
|
1666
|
-
return getNestedRule$1(
|
|
1667
|
-
.cssRules, position.slice(2));
|
|
1700
|
+
return getNestedRule$1(rule.cssRules[position[1]].cssRules, position.slice(2));
|
|
1668
1701
|
}
|
|
1669
1702
|
}
|
|
1670
1703
|
var StyleRuleType;
|
|
@@ -751,6 +751,7 @@ function buildNode(n, options) {
|
|
|
751
751
|
if (!image.currentSrc.startsWith('data:')) {
|
|
752
752
|
image.setAttribute('rrweb-original-src', n.attributes.src);
|
|
753
753
|
image.src = value;
|
|
754
|
+
image.setAttribute('rrweb-inline-src', value);
|
|
754
755
|
}
|
|
755
756
|
}
|
|
756
757
|
if (name_1 === 'rr_width') {
|
|
@@ -779,6 +780,15 @@ function buildNode(n, options) {
|
|
|
779
780
|
for (var name_1 in n.attributes) {
|
|
780
781
|
_loop_1(name_1);
|
|
781
782
|
}
|
|
783
|
+
if (tagName === 'img') {
|
|
784
|
+
var image = node_1;
|
|
785
|
+
if (!image.currentSrc.startsWith('data:')) {
|
|
786
|
+
var inlineSrc = image.getAttribute('rrweb-inline-src');
|
|
787
|
+
if (inlineSrc === null || inlineSrc === void 0 ? void 0 : inlineSrc.startsWith('data:')) {
|
|
788
|
+
image.src = inlineSrc;
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
782
792
|
if (n.isShadowHost) {
|
|
783
793
|
if (!node_1.shadowRoot) {
|
|
784
794
|
node_1.attachShadow({ mode: 'open' });
|
|
@@ -1444,7 +1454,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1444
1454
|
break;
|
|
1445
1455
|
}
|
|
1446
1456
|
case NodeType$1.Element: {
|
|
1447
|
-
const oldElement =
|
|
1457
|
+
const oldElement = oldTree;
|
|
1448
1458
|
const newRRElement = newTree;
|
|
1449
1459
|
diffProps(oldElement, newRRElement, rrnodeMirror);
|
|
1450
1460
|
scrollDataToApply = newRRElement.scrollData;
|
|
@@ -1452,7 +1462,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1452
1462
|
switch (newRRElement.tagName) {
|
|
1453
1463
|
case 'AUDIO':
|
|
1454
1464
|
case 'VIDEO': {
|
|
1455
|
-
const oldMediaElement =
|
|
1465
|
+
const oldMediaElement = oldTree;
|
|
1456
1466
|
const newMediaRRElement = newRRElement;
|
|
1457
1467
|
if (newMediaRRElement.paused !== undefined)
|
|
1458
1468
|
newMediaRRElement.paused
|
|
@@ -1467,7 +1477,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1467
1477
|
break;
|
|
1468
1478
|
}
|
|
1469
1479
|
case 'CANVAS':
|
|
1470
|
-
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation,
|
|
1480
|
+
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation, oldTree));
|
|
1471
1481
|
break;
|
|
1472
1482
|
case 'STYLE':
|
|
1473
1483
|
applyVirtualStyleRulesToNode(oldElement, newTree.rules);
|
|
@@ -1494,8 +1504,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
1494
1504
|
scrollDataToApply && replayer.applyScroll(scrollDataToApply, true);
|
|
1495
1505
|
inputDataToApply && replayer.applyInput(inputDataToApply);
|
|
1496
1506
|
if (newTree.nodeName === 'IFRAME') {
|
|
1497
|
-
const oldContentDocument =
|
|
1498
|
-
.contentDocument;
|
|
1507
|
+
const oldContentDocument = oldTree.contentDocument;
|
|
1499
1508
|
const newIFrameElement = newTree;
|
|
1500
1509
|
if (oldContentDocument) {
|
|
1501
1510
|
const sn = rrnodeMirror.getMeta(newIFrameElement.contentDocument);
|
|
@@ -1556,16 +1565,26 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
1556
1565
|
newEndNode = newChildren[--newEndIndex];
|
|
1557
1566
|
}
|
|
1558
1567
|
else if (replayer.mirror.getId(oldStartNode) === rrnodeMirror.getId(newEndNode)) {
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1568
|
+
try {
|
|
1569
|
+
parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
|
|
1570
|
+
diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
|
|
1571
|
+
oldStartNode = oldChildren[++oldStartIndex];
|
|
1572
|
+
newEndNode = newChildren[--newEndIndex];
|
|
1573
|
+
}
|
|
1574
|
+
catch (e) {
|
|
1575
|
+
console.error(e, parentNode, oldStartNode, oldEndNode);
|
|
1576
|
+
}
|
|
1563
1577
|
}
|
|
1564
1578
|
else if (replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)) {
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1579
|
+
try {
|
|
1580
|
+
parentNode.insertBefore(oldEndNode, oldStartNode);
|
|
1581
|
+
diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
|
|
1582
|
+
oldEndNode = oldChildren[--oldEndIndex];
|
|
1583
|
+
newStartNode = newChildren[++newStartIndex];
|
|
1584
|
+
}
|
|
1585
|
+
catch (e) {
|
|
1586
|
+
console.error(e, parentNode, oldEndNode, oldStartNode);
|
|
1587
|
+
}
|
|
1569
1588
|
}
|
|
1570
1589
|
else {
|
|
1571
1590
|
if (!oldIdToIndex) {
|
|
@@ -1579,21 +1598,31 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
1579
1598
|
indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];
|
|
1580
1599
|
if (indexInOld) {
|
|
1581
1600
|
const nodeToMove = oldChildren[indexInOld];
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1601
|
+
try {
|
|
1602
|
+
parentNode.insertBefore(nodeToMove, oldStartNode);
|
|
1603
|
+
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
|
|
1604
|
+
oldChildren[indexInOld] = undefined;
|
|
1605
|
+
}
|
|
1606
|
+
catch (e) {
|
|
1607
|
+
console.error(e, parentNode, nodeToMove, oldStartNode);
|
|
1608
|
+
}
|
|
1585
1609
|
}
|
|
1586
1610
|
else {
|
|
1587
1611
|
const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);
|
|
1588
1612
|
if (((_a = replayer.mirror.getMeta(parentNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Document &&
|
|
1589
1613
|
((_b = replayer.mirror.getMeta(newNode)) === null || _b === void 0 ? void 0 : _b.type) === NodeType$1.Element &&
|
|
1590
|
-
|
|
1591
|
-
parentNode.removeChild(
|
|
1614
|
+
parentNode.documentElement) {
|
|
1615
|
+
parentNode.removeChild(parentNode.documentElement);
|
|
1592
1616
|
oldChildren[oldStartIndex] = undefined;
|
|
1593
1617
|
oldStartNode = undefined;
|
|
1594
1618
|
}
|
|
1595
|
-
|
|
1596
|
-
|
|
1619
|
+
try {
|
|
1620
|
+
parentNode.insertBefore(newNode, oldStartNode || null);
|
|
1621
|
+
diff(newNode, newStartNode, replayer, rrnodeMirror);
|
|
1622
|
+
}
|
|
1623
|
+
catch (e) {
|
|
1624
|
+
console.error(e, parentNode, newNode, oldStartNode || null);
|
|
1625
|
+
}
|
|
1597
1626
|
}
|
|
1598
1627
|
newStartNode = newChildren[++newStartIndex];
|
|
1599
1628
|
}
|
|
@@ -1608,8 +1637,13 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
1608
1637
|
});
|
|
1609
1638
|
for (; newStartIndex <= newEndIndex; ++newStartIndex) {
|
|
1610
1639
|
const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);
|
|
1611
|
-
|
|
1612
|
-
|
|
1640
|
+
try {
|
|
1641
|
+
parentNode.insertBefore(newNode, referenceNode);
|
|
1642
|
+
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
|
|
1643
|
+
}
|
|
1644
|
+
catch (e) {
|
|
1645
|
+
console.error(e, parentNode, newNode, referenceNode);
|
|
1646
|
+
}
|
|
1613
1647
|
}
|
|
1614
1648
|
}
|
|
1615
1649
|
else if (newStartIndex > newEndIndex) {
|
|
@@ -1663,8 +1697,7 @@ function getNestedRule$1(rules, position) {
|
|
|
1663
1697
|
return rule;
|
|
1664
1698
|
}
|
|
1665
1699
|
else {
|
|
1666
|
-
return getNestedRule$1(
|
|
1667
|
-
.cssRules, position.slice(2));
|
|
1700
|
+
return getNestedRule$1(rule.cssRules[position[1]].cssRules, position.slice(2));
|
|
1668
1701
|
}
|
|
1669
1702
|
}
|
|
1670
1703
|
var StyleRuleType;
|