@kelet-ai/feedback-ui 1.1.1 → 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 +275 -264
- package/dist/feedback-ui.es.js.map +1 -1
- package/dist/feedback-ui.es.min.js +808 -795
- package/dist/feedback-ui.es.min.js.map +1 -1
- package/dist/feedback-ui.umd.js +275 -264
- 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
|
@@ -435,7 +435,7 @@ function getLatestEvent() {
|
|
|
435
435
|
return { ...latestEvent };
|
|
436
436
|
}
|
|
437
437
|
const KeletContext = createContext(null);
|
|
438
|
-
const DefaultKeletBaseUrl = "https://api.kelet.ai
|
|
438
|
+
const DefaultKeletBaseUrl = "https://api.kelet.ai";
|
|
439
439
|
const useKelet = () => {
|
|
440
440
|
const context = useContext(KeletContext);
|
|
441
441
|
if (!context) {
|
|
@@ -466,23 +466,31 @@ const KeletProvider = ({ apiKey, project, baseUrl, children }) => {
|
|
|
466
466
|
"apiKey is required either directly or from a parent KeletProvider"
|
|
467
467
|
);
|
|
468
468
|
}
|
|
469
|
+
let resolvedBaseUrl = baseUrl || DefaultKeletBaseUrl;
|
|
470
|
+
if (resolvedBaseUrl.endsWith("/api")) {
|
|
471
|
+
resolvedBaseUrl = resolvedBaseUrl.slice(0, -4);
|
|
472
|
+
}
|
|
473
|
+
if (resolvedBaseUrl.endsWith("/")) {
|
|
474
|
+
resolvedBaseUrl = resolvedBaseUrl.slice(0, -1);
|
|
475
|
+
}
|
|
469
476
|
const feedback = async (data) => {
|
|
470
|
-
const
|
|
471
|
-
const url = `${resolvedBaseUrl}/projects/${project}/signal`;
|
|
477
|
+
const url = `${resolvedBaseUrl}/api/projects/${project}/signal`;
|
|
472
478
|
const capturedEvent = getLatestEvent();
|
|
473
479
|
const metadata = {
|
|
474
|
-
...data.
|
|
480
|
+
...data.metadata ?? {},
|
|
475
481
|
...capturedEvent && { $dom_event: capturedEvent }
|
|
476
482
|
};
|
|
477
483
|
const req = {
|
|
478
484
|
session_id: data.session_id,
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
explanation: data.explanation,
|
|
482
|
-
correction: data.correction,
|
|
483
|
-
selection: data.selection,
|
|
485
|
+
kind: data.kind,
|
|
486
|
+
source: data.source,
|
|
484
487
|
trigger_name: data.trigger_name,
|
|
485
|
-
|
|
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
|
|
486
494
|
};
|
|
487
495
|
const response = await fetch(url, {
|
|
488
496
|
method: "POST",
|
|
@@ -528,9 +536,7 @@ const mergeProps = (slotProps, childProps) => {
|
|
|
528
536
|
}
|
|
529
537
|
return { ...slotProps, ...overrideProps };
|
|
530
538
|
};
|
|
531
|
-
const VoteFeedbackContext = createContext(
|
|
532
|
-
null
|
|
533
|
-
);
|
|
539
|
+
const VoteFeedbackContext = createContext(null);
|
|
534
540
|
const useVoteFeedbackContext = () => {
|
|
535
541
|
const context = useContext(VoteFeedbackContext);
|
|
536
542
|
if (!context) {
|
|
@@ -545,10 +551,12 @@ const VoteFeedbackRoot = ({
|
|
|
545
551
|
onFeedback,
|
|
546
552
|
defaultText = "",
|
|
547
553
|
session_id: sessionIdProp,
|
|
548
|
-
|
|
549
|
-
trigger_name
|
|
554
|
+
metadata,
|
|
555
|
+
trigger_name: triggerProp,
|
|
556
|
+
trace_id
|
|
550
557
|
}) => {
|
|
551
558
|
const session_id = typeof sessionIdProp === "function" ? sessionIdProp() : sessionIdProp;
|
|
559
|
+
const trigger_name = triggerProp || void 0;
|
|
552
560
|
const [showPopover, setShowPopover] = useState(false);
|
|
553
561
|
const [feedbackText, setFeedbackText] = useState(defaultText);
|
|
554
562
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
@@ -570,9 +578,12 @@ const VoteFeedbackRoot = ({
|
|
|
570
578
|
setVote("upvote");
|
|
571
579
|
const data = {
|
|
572
580
|
session_id,
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
581
|
+
kind: "feedback",
|
|
582
|
+
source: "human",
|
|
583
|
+
trigger_name,
|
|
584
|
+
score: 1,
|
|
585
|
+
...metadata && { metadata },
|
|
586
|
+
...trace_id && { trace_id }
|
|
576
587
|
};
|
|
577
588
|
try {
|
|
578
589
|
setIsSubmitting(true);
|
|
@@ -580,15 +591,18 @@ const VoteFeedbackRoot = ({
|
|
|
580
591
|
} finally {
|
|
581
592
|
setIsSubmitting(false);
|
|
582
593
|
}
|
|
583
|
-
}, [handler, session_id,
|
|
594
|
+
}, [handler, session_id, metadata, trigger_name, trace_id]);
|
|
584
595
|
const handleDownvote = useCallback(async () => {
|
|
585
596
|
setVote("downvote");
|
|
586
597
|
if (handler) {
|
|
587
598
|
const data = {
|
|
588
599
|
session_id,
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
600
|
+
kind: "feedback",
|
|
601
|
+
source: "human",
|
|
602
|
+
trigger_name,
|
|
603
|
+
score: 0,
|
|
604
|
+
...metadata && { metadata },
|
|
605
|
+
...trace_id && { trace_id }
|
|
592
606
|
};
|
|
593
607
|
try {
|
|
594
608
|
setIsSubmitting(true);
|
|
@@ -608,7 +622,7 @@ const VoteFeedbackRoot = ({
|
|
|
608
622
|
document.body.appendChild(announcement);
|
|
609
623
|
setTimeout(() => document.body.removeChild(announcement), 1e3);
|
|
610
624
|
}, 0);
|
|
611
|
-
}, [handler, session_id,
|
|
625
|
+
}, [handler, session_id, metadata, trigger_name, trace_id]);
|
|
612
626
|
const handleTextareaChange = useCallback(
|
|
613
627
|
(e) => {
|
|
614
628
|
setFeedbackText(e.target.value);
|
|
@@ -620,10 +634,13 @@ const VoteFeedbackRoot = ({
|
|
|
620
634
|
if (hasText) {
|
|
621
635
|
const data = {
|
|
622
636
|
session_id,
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
637
|
+
kind: "feedback",
|
|
638
|
+
source: "human",
|
|
639
|
+
trigger_name,
|
|
640
|
+
score: 0,
|
|
641
|
+
value: feedbackText,
|
|
642
|
+
...metadata && { metadata },
|
|
643
|
+
...trace_id && { trace_id }
|
|
627
644
|
};
|
|
628
645
|
try {
|
|
629
646
|
setIsSubmitting(true);
|
|
@@ -648,8 +665,9 @@ const VoteFeedbackRoot = ({
|
|
|
648
665
|
feedbackText,
|
|
649
666
|
defaultText,
|
|
650
667
|
session_id,
|
|
651
|
-
|
|
652
|
-
trigger_name
|
|
668
|
+
metadata,
|
|
669
|
+
trigger_name,
|
|
670
|
+
trace_id
|
|
653
671
|
]);
|
|
654
672
|
const handleKeyDown = useCallback(
|
|
655
673
|
(e) => {
|
|
@@ -700,8 +718,9 @@ const VoteFeedbackRoot = ({
|
|
|
700
718
|
popoverId,
|
|
701
719
|
triggerId,
|
|
702
720
|
session_id,
|
|
703
|
-
|
|
704
|
-
trigger_name
|
|
721
|
+
metadata,
|
|
722
|
+
trigger_name,
|
|
723
|
+
trace_id
|
|
705
724
|
};
|
|
706
725
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(VoteFeedbackContext.Provider, { value: contextValue, children });
|
|
707
726
|
};
|
|
@@ -1337,223 +1356,6 @@ function requireDeepDiff() {
|
|
|
1337
1356
|
return deepDiff$1.exports;
|
|
1338
1357
|
}
|
|
1339
1358
|
var deepDiffExports = requireDeepDiff();
|
|
1340
|
-
var levenshtein$1 = { exports: {} };
|
|
1341
|
-
const peq = new Uint32Array(65536);
|
|
1342
|
-
const myers_32 = (a, b) => {
|
|
1343
|
-
const n = a.length;
|
|
1344
|
-
const m = b.length;
|
|
1345
|
-
const lst = 1 << n - 1;
|
|
1346
|
-
let pv = -1;
|
|
1347
|
-
let mv = 0;
|
|
1348
|
-
let sc = n;
|
|
1349
|
-
let i = n;
|
|
1350
|
-
while (i--) {
|
|
1351
|
-
peq[a.charCodeAt(i)] |= 1 << i;
|
|
1352
|
-
}
|
|
1353
|
-
for (i = 0; i < m; i++) {
|
|
1354
|
-
let eq = peq[b.charCodeAt(i)];
|
|
1355
|
-
const xv = eq | mv;
|
|
1356
|
-
eq |= (eq & pv) + pv ^ pv;
|
|
1357
|
-
mv |= ~(eq | pv);
|
|
1358
|
-
pv &= eq;
|
|
1359
|
-
if (mv & lst) {
|
|
1360
|
-
sc++;
|
|
1361
|
-
}
|
|
1362
|
-
if (pv & lst) {
|
|
1363
|
-
sc--;
|
|
1364
|
-
}
|
|
1365
|
-
mv = mv << 1 | 1;
|
|
1366
|
-
pv = pv << 1 | ~(xv | mv);
|
|
1367
|
-
mv &= xv;
|
|
1368
|
-
}
|
|
1369
|
-
i = n;
|
|
1370
|
-
while (i--) {
|
|
1371
|
-
peq[a.charCodeAt(i)] = 0;
|
|
1372
|
-
}
|
|
1373
|
-
return sc;
|
|
1374
|
-
};
|
|
1375
|
-
const myers_x = (b, a) => {
|
|
1376
|
-
const n = a.length;
|
|
1377
|
-
const m = b.length;
|
|
1378
|
-
const mhc = [];
|
|
1379
|
-
const phc = [];
|
|
1380
|
-
const hsize = Math.ceil(n / 32);
|
|
1381
|
-
const vsize = Math.ceil(m / 32);
|
|
1382
|
-
for (let i = 0; i < hsize; i++) {
|
|
1383
|
-
phc[i] = -1;
|
|
1384
|
-
mhc[i] = 0;
|
|
1385
|
-
}
|
|
1386
|
-
let j = 0;
|
|
1387
|
-
for (; j < vsize - 1; j++) {
|
|
1388
|
-
let mv2 = 0;
|
|
1389
|
-
let pv2 = -1;
|
|
1390
|
-
const start2 = j * 32;
|
|
1391
|
-
const vlen2 = Math.min(32, m) + start2;
|
|
1392
|
-
for (let k = start2; k < vlen2; k++) {
|
|
1393
|
-
peq[b.charCodeAt(k)] |= 1 << k;
|
|
1394
|
-
}
|
|
1395
|
-
for (let i = 0; i < n; i++) {
|
|
1396
|
-
const eq = peq[a.charCodeAt(i)];
|
|
1397
|
-
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
1398
|
-
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
1399
|
-
const xv = eq | mv2;
|
|
1400
|
-
const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
|
|
1401
|
-
let ph = mv2 | ~(xh | pv2);
|
|
1402
|
-
let mh = pv2 & xh;
|
|
1403
|
-
if (ph >>> 31 ^ pb) {
|
|
1404
|
-
phc[i / 32 | 0] ^= 1 << i;
|
|
1405
|
-
}
|
|
1406
|
-
if (mh >>> 31 ^ mb) {
|
|
1407
|
-
mhc[i / 32 | 0] ^= 1 << i;
|
|
1408
|
-
}
|
|
1409
|
-
ph = ph << 1 | pb;
|
|
1410
|
-
mh = mh << 1 | mb;
|
|
1411
|
-
pv2 = mh | ~(xv | ph);
|
|
1412
|
-
mv2 = ph & xv;
|
|
1413
|
-
}
|
|
1414
|
-
for (let k = start2; k < vlen2; k++) {
|
|
1415
|
-
peq[b.charCodeAt(k)] = 0;
|
|
1416
|
-
}
|
|
1417
|
-
}
|
|
1418
|
-
let mv = 0;
|
|
1419
|
-
let pv = -1;
|
|
1420
|
-
const start = j * 32;
|
|
1421
|
-
const vlen = Math.min(32, m - start) + start;
|
|
1422
|
-
for (let k = start; k < vlen; k++) {
|
|
1423
|
-
peq[b.charCodeAt(k)] |= 1 << k;
|
|
1424
|
-
}
|
|
1425
|
-
let score = m;
|
|
1426
|
-
for (let i = 0; i < n; i++) {
|
|
1427
|
-
const eq = peq[a.charCodeAt(i)];
|
|
1428
|
-
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
1429
|
-
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
1430
|
-
const xv = eq | mv;
|
|
1431
|
-
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
1432
|
-
let ph = mv | ~(xh | pv);
|
|
1433
|
-
let mh = pv & xh;
|
|
1434
|
-
score += ph >>> m - 1 & 1;
|
|
1435
|
-
score -= mh >>> m - 1 & 1;
|
|
1436
|
-
if (ph >>> 31 ^ pb) {
|
|
1437
|
-
phc[i / 32 | 0] ^= 1 << i;
|
|
1438
|
-
}
|
|
1439
|
-
if (mh >>> 31 ^ mb) {
|
|
1440
|
-
mhc[i / 32 | 0] ^= 1 << i;
|
|
1441
|
-
}
|
|
1442
|
-
ph = ph << 1 | pb;
|
|
1443
|
-
mh = mh << 1 | mb;
|
|
1444
|
-
pv = mh | ~(xv | ph);
|
|
1445
|
-
mv = ph & xv;
|
|
1446
|
-
}
|
|
1447
|
-
for (let k = start; k < vlen; k++) {
|
|
1448
|
-
peq[b.charCodeAt(k)] = 0;
|
|
1449
|
-
}
|
|
1450
|
-
return score;
|
|
1451
|
-
};
|
|
1452
|
-
const distance = (a, b) => {
|
|
1453
|
-
if (a.length < b.length) {
|
|
1454
|
-
const tmp = b;
|
|
1455
|
-
b = a;
|
|
1456
|
-
a = tmp;
|
|
1457
|
-
}
|
|
1458
|
-
if (b.length === 0) {
|
|
1459
|
-
return a.length;
|
|
1460
|
-
}
|
|
1461
|
-
if (a.length <= 32) {
|
|
1462
|
-
return myers_32(a, b);
|
|
1463
|
-
}
|
|
1464
|
-
return myers_x(a, b);
|
|
1465
|
-
};
|
|
1466
|
-
const closest = (str, arr) => {
|
|
1467
|
-
let min_distance = Infinity;
|
|
1468
|
-
let min_index = 0;
|
|
1469
|
-
for (let i = 0; i < arr.length; i++) {
|
|
1470
|
-
const dist = distance(str, arr[i]);
|
|
1471
|
-
if (dist < min_distance) {
|
|
1472
|
-
min_distance = dist;
|
|
1473
|
-
min_index = i;
|
|
1474
|
-
}
|
|
1475
|
-
}
|
|
1476
|
-
return arr[min_index];
|
|
1477
|
-
};
|
|
1478
|
-
const mod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1479
|
-
__proto__: null,
|
|
1480
|
-
closest,
|
|
1481
|
-
distance
|
|
1482
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
1483
|
-
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(mod);
|
|
1484
|
-
var hasRequiredLevenshtein;
|
|
1485
|
-
function requireLevenshtein() {
|
|
1486
|
-
if (hasRequiredLevenshtein) return levenshtein$1.exports;
|
|
1487
|
-
hasRequiredLevenshtein = 1;
|
|
1488
|
-
(function(module, exports) {
|
|
1489
|
-
(function() {
|
|
1490
|
-
var collator;
|
|
1491
|
-
try {
|
|
1492
|
-
collator = typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined" ? Intl.Collator("generic", { sensitivity: "base" }) : null;
|
|
1493
|
-
} catch (err) {
|
|
1494
|
-
console.log("Collator could not be initialized and wouldn't be used");
|
|
1495
|
-
}
|
|
1496
|
-
var levenshtein2 = require$$0;
|
|
1497
|
-
var prevRow = [], str2Char = [];
|
|
1498
|
-
var Levenshtein = {
|
|
1499
|
-
/**
|
|
1500
|
-
* Calculate levenshtein distance of the two strings.
|
|
1501
|
-
*
|
|
1502
|
-
* @param str1 String the first string.
|
|
1503
|
-
* @param str2 String the second string.
|
|
1504
|
-
* @param [options] Additional options.
|
|
1505
|
-
* @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
|
|
1506
|
-
* @return Integer the levenshtein distance (0 and above).
|
|
1507
|
-
*/
|
|
1508
|
-
get: function(str1, str2, options) {
|
|
1509
|
-
var useCollator = options && collator && options.useCollator;
|
|
1510
|
-
if (useCollator) {
|
|
1511
|
-
var str1Len = str1.length, str2Len = str2.length;
|
|
1512
|
-
if (str1Len === 0) return str2Len;
|
|
1513
|
-
if (str2Len === 0) return str1Len;
|
|
1514
|
-
var curCol, nextCol, i, j, tmp;
|
|
1515
|
-
for (i = 0; i < str2Len; ++i) {
|
|
1516
|
-
prevRow[i] = i;
|
|
1517
|
-
str2Char[i] = str2.charCodeAt(i);
|
|
1518
|
-
}
|
|
1519
|
-
prevRow[str2Len] = str2Len;
|
|
1520
|
-
var strCmp;
|
|
1521
|
-
for (i = 0; i < str1Len; ++i) {
|
|
1522
|
-
nextCol = i + 1;
|
|
1523
|
-
for (j = 0; j < str2Len; ++j) {
|
|
1524
|
-
curCol = nextCol;
|
|
1525
|
-
strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
|
|
1526
|
-
nextCol = prevRow[j] + (strCmp ? 0 : 1);
|
|
1527
|
-
tmp = curCol + 1;
|
|
1528
|
-
if (nextCol > tmp) {
|
|
1529
|
-
nextCol = tmp;
|
|
1530
|
-
}
|
|
1531
|
-
tmp = prevRow[j + 1] + 1;
|
|
1532
|
-
if (nextCol > tmp) {
|
|
1533
|
-
nextCol = tmp;
|
|
1534
|
-
}
|
|
1535
|
-
prevRow[j] = curCol;
|
|
1536
|
-
}
|
|
1537
|
-
prevRow[j] = nextCol;
|
|
1538
|
-
}
|
|
1539
|
-
return nextCol;
|
|
1540
|
-
}
|
|
1541
|
-
return levenshtein2.distance(str1, str2);
|
|
1542
|
-
}
|
|
1543
|
-
};
|
|
1544
|
-
if (module !== null && true && module.exports === exports) {
|
|
1545
|
-
module.exports = Levenshtein;
|
|
1546
|
-
} else if (typeof self !== "undefined" && typeof self.postMessage === "function" && typeof self.importScripts === "function") {
|
|
1547
|
-
self.Levenshtein = Levenshtein;
|
|
1548
|
-
} else if (typeof window !== "undefined" && window !== null) {
|
|
1549
|
-
window.Levenshtein = Levenshtein;
|
|
1550
|
-
}
|
|
1551
|
-
})();
|
|
1552
|
-
})(levenshtein$1, levenshtein$1.exports);
|
|
1553
|
-
return levenshtein$1.exports;
|
|
1554
|
-
}
|
|
1555
|
-
var levenshteinExports = requireLevenshtein();
|
|
1556
|
-
const levenshtein = /* @__PURE__ */ getDefaultExportFromCjs(levenshteinExports);
|
|
1557
1359
|
class Diff {
|
|
1558
1360
|
diff(oldStr, newStr, options = {}) {
|
|
1559
1361
|
let callback;
|
|
@@ -1963,6 +1765,223 @@ function splitLines(text) {
|
|
|
1963
1765
|
}
|
|
1964
1766
|
return result;
|
|
1965
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);
|
|
1966
1985
|
function formatDiff(oldValue, newValue, diffType = "git", context = 1) {
|
|
1967
1986
|
switch (diffType) {
|
|
1968
1987
|
case "git":
|
|
@@ -2139,25 +2158,17 @@ function useStateChangeTracking(currentState, session_id, options) {
|
|
|
2139
2158
|
(startState, endState, triggerName) => {
|
|
2140
2159
|
const diffPercentage = calculateDiffPercentage(startState, endState);
|
|
2141
2160
|
const diffString = formatDiff(startState, endState, diffType);
|
|
2142
|
-
|
|
2143
|
-
if (options?.vote) {
|
|
2144
|
-
if (typeof options.vote === "function") {
|
|
2145
|
-
vote = options.vote(startState, endState, diffPercentage);
|
|
2146
|
-
} else {
|
|
2147
|
-
vote = options.vote;
|
|
2148
|
-
}
|
|
2149
|
-
} else {
|
|
2150
|
-
vote = diffPercentage > 0.5 ? "downvote" : "upvote";
|
|
2151
|
-
}
|
|
2161
|
+
const score = typeof options?.score === "function" ? options.score(startState, endState, diffPercentage) : options?.score ?? (diffPercentage > 0.5 ? 0 : 1);
|
|
2152
2162
|
const idString = typeof session_id === "function" ? session_id(endState) : session_id;
|
|
2153
2163
|
feedbackHandler({
|
|
2154
2164
|
session_id: idString,
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2165
|
+
kind: "edit",
|
|
2166
|
+
source: "human",
|
|
2167
|
+
trigger_name: triggerName,
|
|
2168
|
+
score,
|
|
2169
|
+
value: diffString,
|
|
2170
|
+
confidence: diffPercentage,
|
|
2171
|
+
metadata: options?.metadata
|
|
2161
2172
|
});
|
|
2162
2173
|
},
|
|
2163
2174
|
[options, session_id, diffType, feedbackHandler]
|