@kelet-ai/feedback-ui 1.1.3 → 1.1.4
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/README.md +70 -70
- package/dist/components/vote-feedback.d.ts +1 -1
- package/dist/feedback-ui.es.js +266 -261
- package/dist/feedback-ui.es.js.map +1 -1
- package/dist/feedback-ui.es.min.js +831 -820
- package/dist/feedback-ui.es.min.js.map +1 -1
- package/dist/feedback-ui.umd.js +266 -261
- package/dist/feedback-ui.umd.js.map +1 -1
- package/dist/feedback-ui.umd.min.js +11 -11
- package/dist/feedback-ui.umd.min.js.map +1 -1
- package/dist/hooks/feedback-state/diff-utils.d.ts +1 -1
- package/dist/hooks/feedback-state/types.d.ts +5 -5
- package/dist/types/index.d.ts +16 -9
- package/package.json +2 -1
package/dist/feedback-ui.es.js
CHANGED
|
@@ -477,18 +477,20 @@ const KeletProvider = ({ apiKey, project, baseUrl, children }) => {
|
|
|
477
477
|
const url = `${resolvedBaseUrl}/api/projects/${project}/signal`;
|
|
478
478
|
const capturedEvent = getLatestEvent();
|
|
479
479
|
const metadata = {
|
|
480
|
-
...data.
|
|
480
|
+
...data.metadata ?? {},
|
|
481
481
|
...capturedEvent && { $dom_event: capturedEvent }
|
|
482
482
|
};
|
|
483
483
|
const req = {
|
|
484
484
|
session_id: data.session_id,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
explanation: data.explanation,
|
|
488
|
-
correction: data.correction,
|
|
489
|
-
selection: data.selection,
|
|
485
|
+
kind: data.kind,
|
|
486
|
+
source: data.source,
|
|
490
487
|
trigger_name: data.trigger_name,
|
|
491
|
-
|
|
488
|
+
score: data.score,
|
|
489
|
+
value: data.value,
|
|
490
|
+
confidence: data.confidence,
|
|
491
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : void 0,
|
|
492
|
+
timestamp: data.timestamp || (/* @__PURE__ */ new Date()).toISOString(),
|
|
493
|
+
trace_id: data.trace_id
|
|
492
494
|
};
|
|
493
495
|
const response = await fetch(url, {
|
|
494
496
|
method: "POST",
|
|
@@ -534,9 +536,7 @@ const mergeProps = (slotProps, childProps) => {
|
|
|
534
536
|
}
|
|
535
537
|
return { ...slotProps, ...overrideProps };
|
|
536
538
|
};
|
|
537
|
-
const VoteFeedbackContext = createContext(
|
|
538
|
-
null
|
|
539
|
-
);
|
|
539
|
+
const VoteFeedbackContext = createContext(null);
|
|
540
540
|
const useVoteFeedbackContext = () => {
|
|
541
541
|
const context = useContext(VoteFeedbackContext);
|
|
542
542
|
if (!context) {
|
|
@@ -551,10 +551,12 @@ const VoteFeedbackRoot = ({
|
|
|
551
551
|
onFeedback,
|
|
552
552
|
defaultText = "",
|
|
553
553
|
session_id: sessionIdProp,
|
|
554
|
-
|
|
555
|
-
trigger_name
|
|
554
|
+
metadata,
|
|
555
|
+
trigger_name: triggerProp,
|
|
556
|
+
trace_id
|
|
556
557
|
}) => {
|
|
557
558
|
const session_id = typeof sessionIdProp === "function" ? sessionIdProp() : sessionIdProp;
|
|
559
|
+
const trigger_name = triggerProp || void 0;
|
|
558
560
|
const [showPopover, setShowPopover] = useState(false);
|
|
559
561
|
const [feedbackText, setFeedbackText] = useState(defaultText);
|
|
560
562
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
@@ -576,9 +578,12 @@ const VoteFeedbackRoot = ({
|
|
|
576
578
|
setVote("upvote");
|
|
577
579
|
const data = {
|
|
578
580
|
session_id,
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
581
|
+
kind: "feedback",
|
|
582
|
+
source: "human",
|
|
583
|
+
trigger_name,
|
|
584
|
+
score: 1,
|
|
585
|
+
...metadata && { metadata },
|
|
586
|
+
...trace_id && { trace_id }
|
|
582
587
|
};
|
|
583
588
|
try {
|
|
584
589
|
setIsSubmitting(true);
|
|
@@ -586,15 +591,18 @@ const VoteFeedbackRoot = ({
|
|
|
586
591
|
} finally {
|
|
587
592
|
setIsSubmitting(false);
|
|
588
593
|
}
|
|
589
|
-
}, [handler, session_id,
|
|
594
|
+
}, [handler, session_id, metadata, trigger_name, trace_id]);
|
|
590
595
|
const handleDownvote = useCallback(async () => {
|
|
591
596
|
setVote("downvote");
|
|
592
597
|
if (handler) {
|
|
593
598
|
const data = {
|
|
594
599
|
session_id,
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
600
|
+
kind: "feedback",
|
|
601
|
+
source: "human",
|
|
602
|
+
trigger_name,
|
|
603
|
+
score: 0,
|
|
604
|
+
...metadata && { metadata },
|
|
605
|
+
...trace_id && { trace_id }
|
|
598
606
|
};
|
|
599
607
|
try {
|
|
600
608
|
setIsSubmitting(true);
|
|
@@ -614,7 +622,7 @@ const VoteFeedbackRoot = ({
|
|
|
614
622
|
document.body.appendChild(announcement);
|
|
615
623
|
setTimeout(() => document.body.removeChild(announcement), 1e3);
|
|
616
624
|
}, 0);
|
|
617
|
-
}, [handler, session_id,
|
|
625
|
+
}, [handler, session_id, metadata, trigger_name, trace_id]);
|
|
618
626
|
const handleTextareaChange = useCallback(
|
|
619
627
|
(e) => {
|
|
620
628
|
setFeedbackText(e.target.value);
|
|
@@ -626,10 +634,13 @@ const VoteFeedbackRoot = ({
|
|
|
626
634
|
if (hasText) {
|
|
627
635
|
const data = {
|
|
628
636
|
session_id,
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
637
|
+
kind: "feedback",
|
|
638
|
+
source: "human",
|
|
639
|
+
trigger_name,
|
|
640
|
+
score: 0,
|
|
641
|
+
value: feedbackText,
|
|
642
|
+
...metadata && { metadata },
|
|
643
|
+
...trace_id && { trace_id }
|
|
633
644
|
};
|
|
634
645
|
try {
|
|
635
646
|
setIsSubmitting(true);
|
|
@@ -654,8 +665,9 @@ const VoteFeedbackRoot = ({
|
|
|
654
665
|
feedbackText,
|
|
655
666
|
defaultText,
|
|
656
667
|
session_id,
|
|
657
|
-
|
|
658
|
-
trigger_name
|
|
668
|
+
metadata,
|
|
669
|
+
trigger_name,
|
|
670
|
+
trace_id
|
|
659
671
|
]);
|
|
660
672
|
const handleKeyDown = useCallback(
|
|
661
673
|
(e) => {
|
|
@@ -706,8 +718,9 @@ const VoteFeedbackRoot = ({
|
|
|
706
718
|
popoverId,
|
|
707
719
|
triggerId,
|
|
708
720
|
session_id,
|
|
709
|
-
|
|
710
|
-
trigger_name
|
|
721
|
+
metadata,
|
|
722
|
+
trigger_name,
|
|
723
|
+
trace_id
|
|
711
724
|
};
|
|
712
725
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(VoteFeedbackContext.Provider, { value: contextValue, children });
|
|
713
726
|
};
|
|
@@ -1343,223 +1356,6 @@ function requireDeepDiff() {
|
|
|
1343
1356
|
return deepDiff$1.exports;
|
|
1344
1357
|
}
|
|
1345
1358
|
var deepDiffExports = requireDeepDiff();
|
|
1346
|
-
var levenshtein$1 = { exports: {} };
|
|
1347
|
-
const peq = new Uint32Array(65536);
|
|
1348
|
-
const myers_32 = (a, b) => {
|
|
1349
|
-
const n = a.length;
|
|
1350
|
-
const m = b.length;
|
|
1351
|
-
const lst = 1 << n - 1;
|
|
1352
|
-
let pv = -1;
|
|
1353
|
-
let mv = 0;
|
|
1354
|
-
let sc = n;
|
|
1355
|
-
let i = n;
|
|
1356
|
-
while (i--) {
|
|
1357
|
-
peq[a.charCodeAt(i)] |= 1 << i;
|
|
1358
|
-
}
|
|
1359
|
-
for (i = 0; i < m; i++) {
|
|
1360
|
-
let eq = peq[b.charCodeAt(i)];
|
|
1361
|
-
const xv = eq | mv;
|
|
1362
|
-
eq |= (eq & pv) + pv ^ pv;
|
|
1363
|
-
mv |= ~(eq | pv);
|
|
1364
|
-
pv &= eq;
|
|
1365
|
-
if (mv & lst) {
|
|
1366
|
-
sc++;
|
|
1367
|
-
}
|
|
1368
|
-
if (pv & lst) {
|
|
1369
|
-
sc--;
|
|
1370
|
-
}
|
|
1371
|
-
mv = mv << 1 | 1;
|
|
1372
|
-
pv = pv << 1 | ~(xv | mv);
|
|
1373
|
-
mv &= xv;
|
|
1374
|
-
}
|
|
1375
|
-
i = n;
|
|
1376
|
-
while (i--) {
|
|
1377
|
-
peq[a.charCodeAt(i)] = 0;
|
|
1378
|
-
}
|
|
1379
|
-
return sc;
|
|
1380
|
-
};
|
|
1381
|
-
const myers_x = (b, a) => {
|
|
1382
|
-
const n = a.length;
|
|
1383
|
-
const m = b.length;
|
|
1384
|
-
const mhc = [];
|
|
1385
|
-
const phc = [];
|
|
1386
|
-
const hsize = Math.ceil(n / 32);
|
|
1387
|
-
const vsize = Math.ceil(m / 32);
|
|
1388
|
-
for (let i = 0; i < hsize; i++) {
|
|
1389
|
-
phc[i] = -1;
|
|
1390
|
-
mhc[i] = 0;
|
|
1391
|
-
}
|
|
1392
|
-
let j = 0;
|
|
1393
|
-
for (; j < vsize - 1; j++) {
|
|
1394
|
-
let mv2 = 0;
|
|
1395
|
-
let pv2 = -1;
|
|
1396
|
-
const start2 = j * 32;
|
|
1397
|
-
const vlen2 = Math.min(32, m) + start2;
|
|
1398
|
-
for (let k = start2; k < vlen2; k++) {
|
|
1399
|
-
peq[b.charCodeAt(k)] |= 1 << k;
|
|
1400
|
-
}
|
|
1401
|
-
for (let i = 0; i < n; i++) {
|
|
1402
|
-
const eq = peq[a.charCodeAt(i)];
|
|
1403
|
-
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
1404
|
-
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
1405
|
-
const xv = eq | mv2;
|
|
1406
|
-
const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
|
|
1407
|
-
let ph = mv2 | ~(xh | pv2);
|
|
1408
|
-
let mh = pv2 & xh;
|
|
1409
|
-
if (ph >>> 31 ^ pb) {
|
|
1410
|
-
phc[i / 32 | 0] ^= 1 << i;
|
|
1411
|
-
}
|
|
1412
|
-
if (mh >>> 31 ^ mb) {
|
|
1413
|
-
mhc[i / 32 | 0] ^= 1 << i;
|
|
1414
|
-
}
|
|
1415
|
-
ph = ph << 1 | pb;
|
|
1416
|
-
mh = mh << 1 | mb;
|
|
1417
|
-
pv2 = mh | ~(xv | ph);
|
|
1418
|
-
mv2 = ph & xv;
|
|
1419
|
-
}
|
|
1420
|
-
for (let k = start2; k < vlen2; k++) {
|
|
1421
|
-
peq[b.charCodeAt(k)] = 0;
|
|
1422
|
-
}
|
|
1423
|
-
}
|
|
1424
|
-
let mv = 0;
|
|
1425
|
-
let pv = -1;
|
|
1426
|
-
const start = j * 32;
|
|
1427
|
-
const vlen = Math.min(32, m - start) + start;
|
|
1428
|
-
for (let k = start; k < vlen; k++) {
|
|
1429
|
-
peq[b.charCodeAt(k)] |= 1 << k;
|
|
1430
|
-
}
|
|
1431
|
-
let score = m;
|
|
1432
|
-
for (let i = 0; i < n; i++) {
|
|
1433
|
-
const eq = peq[a.charCodeAt(i)];
|
|
1434
|
-
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
1435
|
-
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
1436
|
-
const xv = eq | mv;
|
|
1437
|
-
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
1438
|
-
let ph = mv | ~(xh | pv);
|
|
1439
|
-
let mh = pv & xh;
|
|
1440
|
-
score += ph >>> m - 1 & 1;
|
|
1441
|
-
score -= mh >>> m - 1 & 1;
|
|
1442
|
-
if (ph >>> 31 ^ pb) {
|
|
1443
|
-
phc[i / 32 | 0] ^= 1 << i;
|
|
1444
|
-
}
|
|
1445
|
-
if (mh >>> 31 ^ mb) {
|
|
1446
|
-
mhc[i / 32 | 0] ^= 1 << i;
|
|
1447
|
-
}
|
|
1448
|
-
ph = ph << 1 | pb;
|
|
1449
|
-
mh = mh << 1 | mb;
|
|
1450
|
-
pv = mh | ~(xv | ph);
|
|
1451
|
-
mv = ph & xv;
|
|
1452
|
-
}
|
|
1453
|
-
for (let k = start; k < vlen; k++) {
|
|
1454
|
-
peq[b.charCodeAt(k)] = 0;
|
|
1455
|
-
}
|
|
1456
|
-
return score;
|
|
1457
|
-
};
|
|
1458
|
-
const distance = (a, b) => {
|
|
1459
|
-
if (a.length < b.length) {
|
|
1460
|
-
const tmp = b;
|
|
1461
|
-
b = a;
|
|
1462
|
-
a = tmp;
|
|
1463
|
-
}
|
|
1464
|
-
if (b.length === 0) {
|
|
1465
|
-
return a.length;
|
|
1466
|
-
}
|
|
1467
|
-
if (a.length <= 32) {
|
|
1468
|
-
return myers_32(a, b);
|
|
1469
|
-
}
|
|
1470
|
-
return myers_x(a, b);
|
|
1471
|
-
};
|
|
1472
|
-
const closest = (str, arr) => {
|
|
1473
|
-
let min_distance = Infinity;
|
|
1474
|
-
let min_index = 0;
|
|
1475
|
-
for (let i = 0; i < arr.length; i++) {
|
|
1476
|
-
const dist = distance(str, arr[i]);
|
|
1477
|
-
if (dist < min_distance) {
|
|
1478
|
-
min_distance = dist;
|
|
1479
|
-
min_index = i;
|
|
1480
|
-
}
|
|
1481
|
-
}
|
|
1482
|
-
return arr[min_index];
|
|
1483
|
-
};
|
|
1484
|
-
const mod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1485
|
-
__proto__: null,
|
|
1486
|
-
closest,
|
|
1487
|
-
distance
|
|
1488
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
1489
|
-
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(mod);
|
|
1490
|
-
var hasRequiredLevenshtein;
|
|
1491
|
-
function requireLevenshtein() {
|
|
1492
|
-
if (hasRequiredLevenshtein) return levenshtein$1.exports;
|
|
1493
|
-
hasRequiredLevenshtein = 1;
|
|
1494
|
-
(function(module, exports) {
|
|
1495
|
-
(function() {
|
|
1496
|
-
var collator;
|
|
1497
|
-
try {
|
|
1498
|
-
collator = typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined" ? Intl.Collator("generic", { sensitivity: "base" }) : null;
|
|
1499
|
-
} catch (err) {
|
|
1500
|
-
console.log("Collator could not be initialized and wouldn't be used");
|
|
1501
|
-
}
|
|
1502
|
-
var levenshtein2 = require$$0;
|
|
1503
|
-
var prevRow = [], str2Char = [];
|
|
1504
|
-
var Levenshtein = {
|
|
1505
|
-
/**
|
|
1506
|
-
* Calculate levenshtein distance of the two strings.
|
|
1507
|
-
*
|
|
1508
|
-
* @param str1 String the first string.
|
|
1509
|
-
* @param str2 String the second string.
|
|
1510
|
-
* @param [options] Additional options.
|
|
1511
|
-
* @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
|
|
1512
|
-
* @return Integer the levenshtein distance (0 and above).
|
|
1513
|
-
*/
|
|
1514
|
-
get: function(str1, str2, options) {
|
|
1515
|
-
var useCollator = options && collator && options.useCollator;
|
|
1516
|
-
if (useCollator) {
|
|
1517
|
-
var str1Len = str1.length, str2Len = str2.length;
|
|
1518
|
-
if (str1Len === 0) return str2Len;
|
|
1519
|
-
if (str2Len === 0) return str1Len;
|
|
1520
|
-
var curCol, nextCol, i, j, tmp;
|
|
1521
|
-
for (i = 0; i < str2Len; ++i) {
|
|
1522
|
-
prevRow[i] = i;
|
|
1523
|
-
str2Char[i] = str2.charCodeAt(i);
|
|
1524
|
-
}
|
|
1525
|
-
prevRow[str2Len] = str2Len;
|
|
1526
|
-
var strCmp;
|
|
1527
|
-
for (i = 0; i < str1Len; ++i) {
|
|
1528
|
-
nextCol = i + 1;
|
|
1529
|
-
for (j = 0; j < str2Len; ++j) {
|
|
1530
|
-
curCol = nextCol;
|
|
1531
|
-
strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
|
|
1532
|
-
nextCol = prevRow[j] + (strCmp ? 0 : 1);
|
|
1533
|
-
tmp = curCol + 1;
|
|
1534
|
-
if (nextCol > tmp) {
|
|
1535
|
-
nextCol = tmp;
|
|
1536
|
-
}
|
|
1537
|
-
tmp = prevRow[j + 1] + 1;
|
|
1538
|
-
if (nextCol > tmp) {
|
|
1539
|
-
nextCol = tmp;
|
|
1540
|
-
}
|
|
1541
|
-
prevRow[j] = curCol;
|
|
1542
|
-
}
|
|
1543
|
-
prevRow[j] = nextCol;
|
|
1544
|
-
}
|
|
1545
|
-
return nextCol;
|
|
1546
|
-
}
|
|
1547
|
-
return levenshtein2.distance(str1, str2);
|
|
1548
|
-
}
|
|
1549
|
-
};
|
|
1550
|
-
if (module !== null && true && module.exports === exports) {
|
|
1551
|
-
module.exports = Levenshtein;
|
|
1552
|
-
} else if (typeof self !== "undefined" && typeof self.postMessage === "function" && typeof self.importScripts === "function") {
|
|
1553
|
-
self.Levenshtein = Levenshtein;
|
|
1554
|
-
} else if (typeof window !== "undefined" && window !== null) {
|
|
1555
|
-
window.Levenshtein = Levenshtein;
|
|
1556
|
-
}
|
|
1557
|
-
})();
|
|
1558
|
-
})(levenshtein$1, levenshtein$1.exports);
|
|
1559
|
-
return levenshtein$1.exports;
|
|
1560
|
-
}
|
|
1561
|
-
var levenshteinExports = requireLevenshtein();
|
|
1562
|
-
const levenshtein = /* @__PURE__ */ getDefaultExportFromCjs(levenshteinExports);
|
|
1563
1359
|
class Diff {
|
|
1564
1360
|
diff(oldStr, newStr, options = {}) {
|
|
1565
1361
|
let callback;
|
|
@@ -1969,6 +1765,223 @@ function splitLines(text) {
|
|
|
1969
1765
|
}
|
|
1970
1766
|
return result;
|
|
1971
1767
|
}
|
|
1768
|
+
var levenshtein$1 = { exports: {} };
|
|
1769
|
+
const peq = new Uint32Array(65536);
|
|
1770
|
+
const myers_32 = (a, b) => {
|
|
1771
|
+
const n = a.length;
|
|
1772
|
+
const m = b.length;
|
|
1773
|
+
const lst = 1 << n - 1;
|
|
1774
|
+
let pv = -1;
|
|
1775
|
+
let mv = 0;
|
|
1776
|
+
let sc = n;
|
|
1777
|
+
let i = n;
|
|
1778
|
+
while (i--) {
|
|
1779
|
+
peq[a.charCodeAt(i)] |= 1 << i;
|
|
1780
|
+
}
|
|
1781
|
+
for (i = 0; i < m; i++) {
|
|
1782
|
+
let eq = peq[b.charCodeAt(i)];
|
|
1783
|
+
const xv = eq | mv;
|
|
1784
|
+
eq |= (eq & pv) + pv ^ pv;
|
|
1785
|
+
mv |= ~(eq | pv);
|
|
1786
|
+
pv &= eq;
|
|
1787
|
+
if (mv & lst) {
|
|
1788
|
+
sc++;
|
|
1789
|
+
}
|
|
1790
|
+
if (pv & lst) {
|
|
1791
|
+
sc--;
|
|
1792
|
+
}
|
|
1793
|
+
mv = mv << 1 | 1;
|
|
1794
|
+
pv = pv << 1 | ~(xv | mv);
|
|
1795
|
+
mv &= xv;
|
|
1796
|
+
}
|
|
1797
|
+
i = n;
|
|
1798
|
+
while (i--) {
|
|
1799
|
+
peq[a.charCodeAt(i)] = 0;
|
|
1800
|
+
}
|
|
1801
|
+
return sc;
|
|
1802
|
+
};
|
|
1803
|
+
const myers_x = (b, a) => {
|
|
1804
|
+
const n = a.length;
|
|
1805
|
+
const m = b.length;
|
|
1806
|
+
const mhc = [];
|
|
1807
|
+
const phc = [];
|
|
1808
|
+
const hsize = Math.ceil(n / 32);
|
|
1809
|
+
const vsize = Math.ceil(m / 32);
|
|
1810
|
+
for (let i = 0; i < hsize; i++) {
|
|
1811
|
+
phc[i] = -1;
|
|
1812
|
+
mhc[i] = 0;
|
|
1813
|
+
}
|
|
1814
|
+
let j = 0;
|
|
1815
|
+
for (; j < vsize - 1; j++) {
|
|
1816
|
+
let mv2 = 0;
|
|
1817
|
+
let pv2 = -1;
|
|
1818
|
+
const start2 = j * 32;
|
|
1819
|
+
const vlen2 = Math.min(32, m) + start2;
|
|
1820
|
+
for (let k = start2; k < vlen2; k++) {
|
|
1821
|
+
peq[b.charCodeAt(k)] |= 1 << k;
|
|
1822
|
+
}
|
|
1823
|
+
for (let i = 0; i < n; i++) {
|
|
1824
|
+
const eq = peq[a.charCodeAt(i)];
|
|
1825
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
1826
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
1827
|
+
const xv = eq | mv2;
|
|
1828
|
+
const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
|
|
1829
|
+
let ph = mv2 | ~(xh | pv2);
|
|
1830
|
+
let mh = pv2 & xh;
|
|
1831
|
+
if (ph >>> 31 ^ pb) {
|
|
1832
|
+
phc[i / 32 | 0] ^= 1 << i;
|
|
1833
|
+
}
|
|
1834
|
+
if (mh >>> 31 ^ mb) {
|
|
1835
|
+
mhc[i / 32 | 0] ^= 1 << i;
|
|
1836
|
+
}
|
|
1837
|
+
ph = ph << 1 | pb;
|
|
1838
|
+
mh = mh << 1 | mb;
|
|
1839
|
+
pv2 = mh | ~(xv | ph);
|
|
1840
|
+
mv2 = ph & xv;
|
|
1841
|
+
}
|
|
1842
|
+
for (let k = start2; k < vlen2; k++) {
|
|
1843
|
+
peq[b.charCodeAt(k)] = 0;
|
|
1844
|
+
}
|
|
1845
|
+
}
|
|
1846
|
+
let mv = 0;
|
|
1847
|
+
let pv = -1;
|
|
1848
|
+
const start = j * 32;
|
|
1849
|
+
const vlen = Math.min(32, m - start) + start;
|
|
1850
|
+
for (let k = start; k < vlen; k++) {
|
|
1851
|
+
peq[b.charCodeAt(k)] |= 1 << k;
|
|
1852
|
+
}
|
|
1853
|
+
let score = m;
|
|
1854
|
+
for (let i = 0; i < n; i++) {
|
|
1855
|
+
const eq = peq[a.charCodeAt(i)];
|
|
1856
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
1857
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
1858
|
+
const xv = eq | mv;
|
|
1859
|
+
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
1860
|
+
let ph = mv | ~(xh | pv);
|
|
1861
|
+
let mh = pv & xh;
|
|
1862
|
+
score += ph >>> m - 1 & 1;
|
|
1863
|
+
score -= mh >>> m - 1 & 1;
|
|
1864
|
+
if (ph >>> 31 ^ pb) {
|
|
1865
|
+
phc[i / 32 | 0] ^= 1 << i;
|
|
1866
|
+
}
|
|
1867
|
+
if (mh >>> 31 ^ mb) {
|
|
1868
|
+
mhc[i / 32 | 0] ^= 1 << i;
|
|
1869
|
+
}
|
|
1870
|
+
ph = ph << 1 | pb;
|
|
1871
|
+
mh = mh << 1 | mb;
|
|
1872
|
+
pv = mh | ~(xv | ph);
|
|
1873
|
+
mv = ph & xv;
|
|
1874
|
+
}
|
|
1875
|
+
for (let k = start; k < vlen; k++) {
|
|
1876
|
+
peq[b.charCodeAt(k)] = 0;
|
|
1877
|
+
}
|
|
1878
|
+
return score;
|
|
1879
|
+
};
|
|
1880
|
+
const distance = (a, b) => {
|
|
1881
|
+
if (a.length < b.length) {
|
|
1882
|
+
const tmp = b;
|
|
1883
|
+
b = a;
|
|
1884
|
+
a = tmp;
|
|
1885
|
+
}
|
|
1886
|
+
if (b.length === 0) {
|
|
1887
|
+
return a.length;
|
|
1888
|
+
}
|
|
1889
|
+
if (a.length <= 32) {
|
|
1890
|
+
return myers_32(a, b);
|
|
1891
|
+
}
|
|
1892
|
+
return myers_x(a, b);
|
|
1893
|
+
};
|
|
1894
|
+
const closest = (str, arr) => {
|
|
1895
|
+
let min_distance = Infinity;
|
|
1896
|
+
let min_index = 0;
|
|
1897
|
+
for (let i = 0; i < arr.length; i++) {
|
|
1898
|
+
const dist = distance(str, arr[i]);
|
|
1899
|
+
if (dist < min_distance) {
|
|
1900
|
+
min_distance = dist;
|
|
1901
|
+
min_index = i;
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
return arr[min_index];
|
|
1905
|
+
};
|
|
1906
|
+
const mod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1907
|
+
__proto__: null,
|
|
1908
|
+
closest,
|
|
1909
|
+
distance
|
|
1910
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
1911
|
+
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(mod);
|
|
1912
|
+
var hasRequiredLevenshtein;
|
|
1913
|
+
function requireLevenshtein() {
|
|
1914
|
+
if (hasRequiredLevenshtein) return levenshtein$1.exports;
|
|
1915
|
+
hasRequiredLevenshtein = 1;
|
|
1916
|
+
(function(module, exports) {
|
|
1917
|
+
(function() {
|
|
1918
|
+
var collator;
|
|
1919
|
+
try {
|
|
1920
|
+
collator = typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined" ? Intl.Collator("generic", { sensitivity: "base" }) : null;
|
|
1921
|
+
} catch (err) {
|
|
1922
|
+
console.log("Collator could not be initialized and wouldn't be used");
|
|
1923
|
+
}
|
|
1924
|
+
var levenshtein2 = require$$0;
|
|
1925
|
+
var prevRow = [], str2Char = [];
|
|
1926
|
+
var Levenshtein = {
|
|
1927
|
+
/**
|
|
1928
|
+
* Calculate levenshtein distance of the two strings.
|
|
1929
|
+
*
|
|
1930
|
+
* @param str1 String the first string.
|
|
1931
|
+
* @param str2 String the second string.
|
|
1932
|
+
* @param [options] Additional options.
|
|
1933
|
+
* @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
|
|
1934
|
+
* @return Integer the levenshtein distance (0 and above).
|
|
1935
|
+
*/
|
|
1936
|
+
get: function(str1, str2, options) {
|
|
1937
|
+
var useCollator = options && collator && options.useCollator;
|
|
1938
|
+
if (useCollator) {
|
|
1939
|
+
var str1Len = str1.length, str2Len = str2.length;
|
|
1940
|
+
if (str1Len === 0) return str2Len;
|
|
1941
|
+
if (str2Len === 0) return str1Len;
|
|
1942
|
+
var curCol, nextCol, i, j, tmp;
|
|
1943
|
+
for (i = 0; i < str2Len; ++i) {
|
|
1944
|
+
prevRow[i] = i;
|
|
1945
|
+
str2Char[i] = str2.charCodeAt(i);
|
|
1946
|
+
}
|
|
1947
|
+
prevRow[str2Len] = str2Len;
|
|
1948
|
+
var strCmp;
|
|
1949
|
+
for (i = 0; i < str1Len; ++i) {
|
|
1950
|
+
nextCol = i + 1;
|
|
1951
|
+
for (j = 0; j < str2Len; ++j) {
|
|
1952
|
+
curCol = nextCol;
|
|
1953
|
+
strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
|
|
1954
|
+
nextCol = prevRow[j] + (strCmp ? 0 : 1);
|
|
1955
|
+
tmp = curCol + 1;
|
|
1956
|
+
if (nextCol > tmp) {
|
|
1957
|
+
nextCol = tmp;
|
|
1958
|
+
}
|
|
1959
|
+
tmp = prevRow[j + 1] + 1;
|
|
1960
|
+
if (nextCol > tmp) {
|
|
1961
|
+
nextCol = tmp;
|
|
1962
|
+
}
|
|
1963
|
+
prevRow[j] = curCol;
|
|
1964
|
+
}
|
|
1965
|
+
prevRow[j] = nextCol;
|
|
1966
|
+
}
|
|
1967
|
+
return nextCol;
|
|
1968
|
+
}
|
|
1969
|
+
return levenshtein2.distance(str1, str2);
|
|
1970
|
+
}
|
|
1971
|
+
};
|
|
1972
|
+
if (module !== null && true && module.exports === exports) {
|
|
1973
|
+
module.exports = Levenshtein;
|
|
1974
|
+
} else if (typeof self !== "undefined" && typeof self.postMessage === "function" && typeof self.importScripts === "function") {
|
|
1975
|
+
self.Levenshtein = Levenshtein;
|
|
1976
|
+
} else if (typeof window !== "undefined" && window !== null) {
|
|
1977
|
+
window.Levenshtein = Levenshtein;
|
|
1978
|
+
}
|
|
1979
|
+
})();
|
|
1980
|
+
})(levenshtein$1, levenshtein$1.exports);
|
|
1981
|
+
return levenshtein$1.exports;
|
|
1982
|
+
}
|
|
1983
|
+
var levenshteinExports = requireLevenshtein();
|
|
1984
|
+
const levenshtein = /* @__PURE__ */ getDefaultExportFromCjs(levenshteinExports);
|
|
1972
1985
|
function formatDiff(oldValue, newValue, diffType = "git", context = 1) {
|
|
1973
1986
|
switch (diffType) {
|
|
1974
1987
|
case "git":
|
|
@@ -2145,25 +2158,17 @@ function useStateChangeTracking(currentState, session_id, options) {
|
|
|
2145
2158
|
(startState, endState, triggerName) => {
|
|
2146
2159
|
const diffPercentage = calculateDiffPercentage(startState, endState);
|
|
2147
2160
|
const diffString = formatDiff(startState, endState, diffType);
|
|
2148
|
-
|
|
2149
|
-
if (options?.vote) {
|
|
2150
|
-
if (typeof options.vote === "function") {
|
|
2151
|
-
vote = options.vote(startState, endState, diffPercentage);
|
|
2152
|
-
} else {
|
|
2153
|
-
vote = options.vote;
|
|
2154
|
-
}
|
|
2155
|
-
} else {
|
|
2156
|
-
vote = diffPercentage > 0.5 ? "downvote" : "upvote";
|
|
2157
|
-
}
|
|
2161
|
+
const score = typeof options?.score === "function" ? options.score(startState, endState, diffPercentage) : options?.score ?? (diffPercentage > 0.5 ? 0 : 1);
|
|
2158
2162
|
const idString = typeof session_id === "function" ? session_id(endState) : session_id;
|
|
2159
2163
|
feedbackHandler({
|
|
2160
2164
|
session_id: idString,
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2165
|
+
kind: "edit",
|
|
2166
|
+
source: "human",
|
|
2167
|
+
trigger_name: triggerName,
|
|
2168
|
+
score,
|
|
2169
|
+
value: diffString,
|
|
2170
|
+
confidence: diffPercentage,
|
|
2171
|
+
metadata: options?.metadata
|
|
2167
2172
|
});
|
|
2168
2173
|
},
|
|
2169
2174
|
[options, session_id, diffType, feedbackHandler]
|