@deepcitation/deepcitation-js 1.1.29 → 1.1.30
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/lib/chunk-4HRWJSX6.cjs +1 -0
- package/lib/chunk-67NZP2UZ.js +2 -0
- package/lib/chunk-CQF2MESM.cjs +2 -0
- package/lib/chunk-ETIDLMKZ.js +1 -0
- package/lib/client/index.cjs +1 -1
- package/lib/client/index.js +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.cts +48 -2
- package/lib/index.d.ts +48 -2
- package/lib/index.js +1 -1
- package/lib/react/index.cjs +2 -2
- package/lib/react/index.js +2 -2
- package/package.json +1 -1
- package/lib/chunk-3GR7VKUJ.cjs +0 -1
- package/lib/chunk-LSKISWWH.cjs +0 -2
- package/lib/chunk-QGXCOW3E.js +0 -1
- package/lib/chunk-RCHWBA6D.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';function E(t){return new TextEncoder().encode(t)}function Z(t){let e=1732584193,i=4023233417,r=2562383102,n=271733878,o=3285377520,p=t.length,a=p*8,c=p+1+8,l=Math.ceil(c/64)*64,s=new ArrayBuffer(l),C=new Uint8Array(s),d=new DataView(s);C.set(t),C[p]=128,d.setUint32(l-8,Math.floor(a/4294967296),false),d.setUint32(l-4,a>>>0,false);let u=new Uint32Array(80);for(let x=0;x<l;x+=64){for(let g=0;g<16;g++)u[g]=d.getUint32(x+g*4,false);for(let g=16;g<80;g++){let I=u[g-3]^u[g-8]^u[g-14]^u[g-16];u[g]=I<<1|I>>>31;}let f=e,h=i,_=r,k=n,S=o;for(let g=0;g<80;g++){let I,m;g<20?(I=h&_|~h&k,m=1518500249):g<40?(I=h^_^k,m=1859775393):g<60?(I=h&_|h&k|_&k,m=2400959708):(I=h^_^k,m=3395469782);let b=(f<<5|f>>>27)+I+S+m+u[g]>>>0;S=k,k=_,_=(h<<30|h>>>2)>>>0,h=f,f=b;}e=e+f>>>0,i=i+h>>>0,r=r+_>>>0,n=n+k>>>0,o=o+S>>>0;}let y=x=>x.toString(16).padStart(8,"0");return y(e)+y(i)+y(r)+y(n)+y(o)}function P(t){try{if(!t)return "";let e=typeof t=="string"?t:JSON.stringify(t);return Z(E(e))}catch(e){console.error("Error in making the hash:",e);}return ""}function q(...t){return t.filter(Boolean).join(" ")}function A(t){let e=t.pageNumber||v(t.startPageKey),i=[t.attachmentId||"",e?.toString()||"",t.fullPhrase||"",t.keySpan?.toString()||"",t.lineIds?.join(",")||"",t.timestamps?.startTime||"",t.timestamps?.endTime||""];return P(i.join("|")).slice(0,16)}function Y(t){let e=[t.attachmentId||"",t.label||"",t.verifiedFullPhrase||"",t.verifiedKeySpan||"",t.verifiedLineIds?.join(",")||"",t.verifiedPageNumber?.toString()||"",t.verifiedTimestamps?.startTime||"",t.verifiedTimestamps?.endTime||"",t.verifiedMatchSnippet||"",t.hitIndexWithinPage?.toString()||""];return P(e.join("|")).slice(0,16)}function j(t){let e=Math.random().toString(36).slice(2,11);return `${t}-${e}`}function Q(t,e={}){let{fallbackDisplay:i}=e;return t.keySpan?.toString()||t.citationNumber?.toString()||i||"1"}function tt(t){return t.citationNumber?.toString()||"1"}function et(t){return t.keySpan?.toString()||""}function nt(...t){return t.filter(Boolean).join(" ")}var it=4,rt=1;function D(t){if(!t)return;let e=[],i=t.split(",");for(let r of i){let n=r.trim();if(n)if(n.includes("-")){let[o,p]=n.split("-"),a=parseInt(o,10),c=parseInt(p,10);if(!isNaN(a)&&!isNaN(c)&&a<=c)for(let l=a;l<=c;l++)e.push(l);else isNaN(a)||e.push(a);}else {let o=parseInt(n,10);isNaN(o)||e.push(o);}}if(e.length!==0)return [...new Set(e)].sort((r,n)=>r-n)}function R(t){let e=t?.status,i=e==="not_found",r=e==="found_phrase_missed_value",n=e==="found_key_span_only",o=e==="partial_text_found"||e==="found_on_other_page"||e==="found_on_other_line"||e==="first_word_found";return {isVerified:e==="found"||n||o||r,isMiss:i,isPartialMatch:o,isPending:e==="pending"||e==="loading"||!e}}var U=(t,e,i,r)=>{let n=m=>m?m.replace(/^['"]|['"]$/g,"").replace(/\\'/g,"'"):void 0,o=i?.current?i.current++:void 0,p=t.substring(0,t.indexOf("<cite")),a=t.includes("/>")?t.slice(t.indexOf("/>")+2):"",c=t.substring(t.indexOf("<cite"),t.indexOf("/>")+2),l=(m,b)=>{for(let O of b){let L=new RegExp(`${O}='((?:[^'\\\\]|\\\\.)*)'`),K=m.match(L);if(K)return K[1]}},s=l(c,["attachment_id","attachmentId","file_id","fileId"]),C=s?.length===20?s:e||s,d=l(c,["start_page_key","startPageKey","start_page"]),u,y;if(d){let m=d.match(/page[\_a-zA-Z]*(\d+)_index_(\d+)/);m&&(u=parseInt(m[1]),y=parseInt(m[2]));}let x=n(l(c,["full_phrase","fullPhrase"])),f=n(l(c,["key_span","keySpan"])),h=n(l(c,["reasoning"])),_=n(l(c,["value"])),k;try{let b=l(c,["line_ids","lineIds"])?.replace(/[A-Za-z_[\](){}:]/g,"");k=b?D(b):void 0;}catch(m){r&&console.error("Error parsing lineIds",m);}let S=l(c,["timestamps"]),g;if(S){let[m,b]=S.split("-")||[];g={startTime:m,endTime:b};}let I={attachmentId:C,pageNumber:u,startPageKey:`page_number_${u||1}_index_${y||0}`,fullPhrase:x,keySpan:f||_,citationNumber:o,lineIds:k,beforeCite:p,timestamps:g,reasoning:h};return {beforeCite:p,afterCite:a,citation:I}},B=(t,e)=>{if(!t)return null;let i=t.fullPhrase??t.full_phrase,r=t.startPageKey??t.start_page_key,n=t.keySpan??t.key_span,o=t.lineIds??t.line_ids,p=t.attachmentId??t.attachment_id??t.fileId??t.file_id,a=t.reasoning,c=t.value;if(!i)return null;let l;if(r){let d=r.match(/page[_a-zA-Z]*(\d+)_index_(\d+)/i);if(d)l=parseInt(d[1],10);else {let u=r.match(/^(\d+)_(\d+)$/);u&&(l=parseInt(u[1],10));}}let s=o?.length?[...o].sort((d,u)=>d-u):void 0;return {attachmentId:p,pageNumber:l,fullPhrase:i,citationNumber:e,lineIds:s,keySpan:n||c,reasoning:a}},V=t=>typeof t=="object"&&t!==null&&("fullPhrase"in t||"full_phrase"in t||"startPageKey"in t||"start_page_key"in t||"keySpan"in t||"key_span"in t||"lineIds"in t||"line_ids"in t),N=t=>Array.isArray(t)?t.length>0&&t.some(V):typeof t=="object"&&t!==null?V(t):false,M=t=>{let e={},i=Array.isArray(t)?t:[t],r=1;for(let n of i){let o=B(n,r++);if(o&&o.fullPhrase){let p=A(o);e[p]=o;}}return e},w=(t,e)=>{if(!(!t||typeof t!="object")){if(t.citation&&N(t.citation)){let i=Array.isArray(t.citation)?t.citation:[t.citation];e.push(...i);}if(t.citations&&N(t.citations)){let i=Array.isArray(t.citations)?t.citations:[t.citations];e.push(...i);}if(Array.isArray(t))for(let i of t)w(i,e);else for(let i of Object.keys(t))i!=="citation"&&i!=="citations"&&w(t[i],e);}},T=t=>{let e=$(t),i=/<cite\s+[^>]*\/>/g,r=e.match(i);if(!r||r.length===0)return {};let n={},o={current:1};for(let p of r){let{citation:a}=U(p,void 0,o);if(a&&a.fullPhrase){let c=A(a);n[c]=a;}}return n},ct=t=>{if(!t)return {};let e={};if(typeof t=="object"){if(N(t)){let n=M(t);Object.assign(e,n);}else {let n=[];if(w(t,n),n.length>0){let o=M(n);Object.assign(e,o);}}let i=JSON.stringify(t),r=T(i);Object.assign(e,r);}else if(typeof t=="string"){let i=T(t);Object.assign(e,i);}return e};function lt(t){let e=new Map,i=Array.isArray(t)?t.map((r,n)=>[A(r)||String(n+1),r]):Object.entries(t);for(let[r,n]of i){let o=n.attachmentId||"";e.has(o)||e.set(o,{}),e.get(o)[r]=n;}return e}function ut(t){let e={},i=Array.isArray(t)?t.map((r,n)=>[A(r)||String(n+1),r]):Object.entries(t);for(let[r,n]of i){let o=n.attachmentId||"";e[o]||(e[o]={}),e[o][r]=n;}return e}var J=t=>{let e={},i=/([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(['"])((?:[^'"\\]|\\.)*)\2/g,r;for(;(r=i.exec(t))!==null;){let n=r[1].toLowerCase().replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase(),o=r[3],p=n==="fileid"||n==="file_id"||n==="attachmentid"?"attachment_id":n==="keyspan"?"key_span":n==="fullphrase"?"full_phrase":n==="lineids"?"line_ids":n==="startpagekey"||n==="start_pagekey"?"start_page_key":n;e[p]=o;}return e},F=t=>{if(!t)return "\u25CC";let e=R(t);return e.isPending?"\u25CC":e.isMiss?"\u2717":e.isPartialMatch?"\u26A0":e.isVerified?"\u2713":"\u25CC"},W=(t,e={})=>{let{leaveKeySpanBehind:i=false,verifications:r,showVerificationStatus:n=false}=e,o=0,p=/<cite\s+[^>]*?\/>/g;return t.replace(p,a=>{o++;let c=J(a),l="";if(i&&c.key_span&&(l=c.key_span.replace(/\\'/g,"'").replace(/\\"/g,'"')),n&&r){let s,C=String(o);if(s=r[C],!s&&c.attachment_id){for(let[,u]of Object.entries(r))if(u.attachmentId===c.attachment_id){s=u;break}}let d=F(s);l=l?`${l}${d}`:d;}return l})},gt=(t,e)=>W(t,{leaveKeySpanBehind:e}),dt=t=>t.replace(/<page_number_\d+_index_\d+>/g,"").replace(/<\/page_number_\d+_index_\d+>/g,"").trim(),mt=t=>{let e=/<line id="[^"]*">|<\/line>/g;return t.replace(e,"")},v=t=>{if(!t)return null;let e=t.match(/\d+/)?.[0];return e?parseInt(e):null},$=t=>{let e=t?.trim()||"",i=e.split(/(<cite[\s\S]*?(?:\/>|<\/cite>))/gm);return i.length<=1?z(e):(e=i.map(r=>r.startsWith("<cite")?z(r):r).join(""),e)},z=t=>{let e=t;e=e.replace(/><\/cite>/g,"/>");let i=p=>{let a=p.toLowerCase();return a==="fullphrase"||a==="full_phrase"?"full_phrase":a==="lineids"||a==="line_ids"?"line_ids":a==="startpagekey"||a==="start_pagekey"||a==="start_page_key"?"start_page_key":a==="fileid"||a==="file_id"||a==="attachmentid"||a==="attachment_id"?"attachment_id":a==="keyspan"||a==="key_span"?"key_span":a==="reasoning"||a==="value"?a:a==="timestamps"||a==="timestamp"||a==="timestamps"?"timestamps":a},r=p=>p.replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),n=/(fullPhrase|full_phrase|keySpan|key_span|reasoning|value)\s*=\s*(['"])([\s\S]*?)(?=\s+(?:line_ids|lineIds|timestamps|fileId|file_id|attachmentId|attachment_id|start_page_key|start_pageKey|startPageKey|keySpan|key_span|reasoning|value|full_phrase)|\s*\/?>)/gm;e=e.replace(n,(p,a,c,l)=>{let s=l;return s.endsWith(c)&&(s=s.slice(0,-1)),s=s.replace(/(\r?\n)+/g," "),s=r(s),s=s.replace(/(\*|_){2,}/g,""),s=s.replace(/\\\\'/g,"'"),s=s.replace(/\\'/g,"'"),s=s.replace(/'/g,"\\'"),s=s.replace(/\\\\"/g,'"'),s=s.replace(/\\"/g,'"'),s=s.replace(/"/g,'\\"'),s=s.replace(/\*/g,""),`${i(a)}='${s}'`}),e=e.replace(/(line_ids|lineIds|timestamps)=['"]?([\[\]\(\){}A-Za-z0-9_\-, ]+)['"]?(\s*\/?>|\s+)/gm,(p,a,c,l)=>{let s=c.replace(/[A-Za-z\[\]\(\){}]/g,"");return s=s.replace(/(\d+)-(\d+)/g,(C,d,u)=>{let y=parseInt(d,10),x=parseInt(u,10),f=[];if(y<=x)for(let h=y;h<=x;h++)f.push(h);else f.push(y);return f.join(",")}),s=s.replace(/,+/g,",").replace(/^,|,$/g,""),`${i(a)}='${s}'${l}`});let o=p=>{let a=/([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(['"])((?:[^'"\\\n]|\\.)*)(?:\2)/g,c={},l;for(;l=a.exec(p);){let f=l[1],h=l[3],_=i(f);c[_]=h;}let s=Object.keys(c);if(s.length===0)return p;let C=typeof c.timestamps=="string"&&c.timestamps.length>0,d=s.filter(f=>f.startsWith("start_page")),u=[];c.attachment_id&&u.push("attachment_id"),C?(c.full_phrase&&u.push("full_phrase"),u.push("timestamps")):(d.includes("start_page_key")&&u.push("start_page_key"),d.filter(f=>f!=="start_page_key").sort().forEach(f=>u.push(f)),c.full_phrase&&u.push("full_phrase"),c.key_span&&u.push("key_span"),c.line_ids&&u.push("line_ids")),c.reasoning&&u.push("reasoning"),c.value&&u.push("value");let y=new Set(u);return s.filter(f=>!y.has(f)).sort().forEach(f=>u.push(f)),`<cite ${u.map(f=>`${f}='${c[f]}'`).join(" ")} />`};return e=e.replace(/<cite\b[\s\S]*?\/>/gm,p=>o(p)),e};exports.a=W;exports.b=gt;exports.c=dt;exports.d=mt;exports.e=v;exports.f=$;exports.g=P;exports.h=q;exports.i=A;exports.j=Y;exports.k=j;exports.l=Q;exports.m=tt;exports.n=et;exports.o=nt;exports.p=it;exports.q=rt;exports.r=R;exports.s=U;exports.t=ct;exports.u=lt;exports.v=ut;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {i,t}from'./chunk-ETIDLMKZ.js';import {a}from'./chunk-O2XFH626.js';var F="https://api.deepcitation.com";function C(p,t){if(typeof Buffer<"u"&&Buffer.isBuffer(p)){let e=Uint8Array.from(p);return {blob:new Blob([e]),name:t||"document"}}if(p instanceof Blob)return {blob:p,name:t||(p instanceof File?p.name:"document")};throw new Error("Invalid file type. Expected File, Blob, or Buffer.")}async function m(p,t){return (await p.json().catch(()=>({})))?.error?.message||`${t} failed with status ${p.status}`}var h=class{constructor(t){a(this,"apiKey");a(this,"apiUrl");if(!t.apiKey)throw new Error("DeepCitation API key is required. Get one at https://deepcitation.com/dashboard");this.apiKey=t.apiKey,this.apiUrl=t.apiUrl?.replace(/\/$/,"")||F;}async uploadFile(t,e){let{blob:l,name:n}=C(t,e?.filename),o=new FormData;o.append("file",l,n),e?.attachmentId&&o.append("attachmentId",e.attachmentId),e?.filename&&o.append("filename",e.filename);let i=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:o});if(!i.ok)throw new Error(await m(i,"Upload"));return await i.json()}async convertToPdf(t){let e=typeof t=="string"?{url:t}:t,{url:l,file:n,filename:o,attachmentId:i}=e;if(!l&&!n)throw new Error("Either url or file must be provided");let r;if(l)r=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({url:l,filename:o,attachmentId:i})});else {let{blob:f,name:a}=C(n,o),s=new FormData;s.append("file",f,a),i&&s.append("attachmentId",i),o&&s.append("filename",o),r=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:s});}if(!r.ok)throw new Error(await m(r,"Conversion"));return await r.json()}async prepareConvertedFile(t){let e=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({attachmentId:t.attachmentId})});if(!e.ok)throw new Error(await m(e,"Prepare"));return await e.json()}async prepareFiles(t){if(t.length===0)return {fileDataParts:[],deepTextPromptPortion:[]};let e=t.map(({file:i,filename:r,attachmentId:f})=>this.uploadFile(i,{filename:r,attachmentId:f}).then(a=>({result:a,filename:r}))),n=(await Promise.all(e)).map(({result:i,filename:r})=>({attachmentId:i.attachmentId,deepTextPromptPortion:i.deepTextPromptPortion,filename:r||i.metadata?.filename})),o=n.map(i=>i.deepTextPromptPortion);return {fileDataParts:n,deepTextPromptPortion:o}}async verifyCitations(t,e,l){let n={};if(Array.isArray(e))for(let a of e){let s=i(a);n[s]=a;}else if(typeof e=="object"&&e!==null)if("fullPhrase"in e||"value"in e){let a=i(e);n[a]=e;}else Object.assign(n,e);else throw new Error("Invalid citations format");let o=`${this.apiUrl}/verifyCitations`,i$1={data:{attachmentId:t,citations:n,outputImageFormat:l?.outputImageFormat||"avif"}},r=await fetch(o,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(i$1)});if(!r.ok)throw new Error(await m(r,"Verification"));return await r.json()}async verifyCitationsFromLlmOutput(t$1,e){let{llmOutput:l,outputImageFormat:n="avif"}=t$1;if(e||(e=t(l)),Object.keys(e).length===0)return {verifications:{}};let o=new Map;for(let[a,s]of Object.entries(e)){let c=s.attachmentId||"";o.has(c)||o.set(c,{}),o.get(c)[a]=s;}let i=[];for(let[a,s]of o)a&&i.push(this.verifyCitations(a,s,{outputImageFormat:n}));let r=await Promise.all(i),f={};for(let a of r)Object.assign(f,a.verifications);return {verifications:f}}};
|
|
2
|
+
export{h as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunk4HRWJSX6_cjs=require('./chunk-4HRWJSX6.cjs'),chunkF2MMVEVC_cjs=require('./chunk-F2MMVEVC.cjs');var F="https://api.deepcitation.com";function C(p,t){if(typeof Buffer<"u"&&Buffer.isBuffer(p)){let e=Uint8Array.from(p);return {blob:new Blob([e]),name:t||"document"}}if(p instanceof Blob)return {blob:p,name:t||(p instanceof File?p.name:"document")};throw new Error("Invalid file type. Expected File, Blob, or Buffer.")}async function m(p,t){return (await p.json().catch(()=>({})))?.error?.message||`${t} failed with status ${p.status}`}var h=class{constructor(t){chunkF2MMVEVC_cjs.a(this,"apiKey");chunkF2MMVEVC_cjs.a(this,"apiUrl");if(!t.apiKey)throw new Error("DeepCitation API key is required. Get one at https://deepcitation.com/dashboard");this.apiKey=t.apiKey,this.apiUrl=t.apiUrl?.replace(/\/$/,"")||F;}async uploadFile(t,e){let{blob:l,name:n}=C(t,e?.filename),o=new FormData;o.append("file",l,n),e?.attachmentId&&o.append("attachmentId",e.attachmentId),e?.filename&&o.append("filename",e.filename);let i=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:o});if(!i.ok)throw new Error(await m(i,"Upload"));return await i.json()}async convertToPdf(t){let e=typeof t=="string"?{url:t}:t,{url:l,file:n,filename:o,attachmentId:i}=e;if(!l&&!n)throw new Error("Either url or file must be provided");let r;if(l)r=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({url:l,filename:o,attachmentId:i})});else {let{blob:f,name:a}=C(n,o),s=new FormData;s.append("file",f,a),i&&s.append("attachmentId",i),o&&s.append("filename",o),r=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:s});}if(!r.ok)throw new Error(await m(r,"Conversion"));return await r.json()}async prepareConvertedFile(t){let e=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({attachmentId:t.attachmentId})});if(!e.ok)throw new Error(await m(e,"Prepare"));return await e.json()}async prepareFiles(t){if(t.length===0)return {fileDataParts:[],deepTextPromptPortion:[]};let e=t.map(({file:i,filename:r,attachmentId:f})=>this.uploadFile(i,{filename:r,attachmentId:f}).then(a=>({result:a,filename:r}))),n=(await Promise.all(e)).map(({result:i,filename:r})=>({attachmentId:i.attachmentId,deepTextPromptPortion:i.deepTextPromptPortion,filename:r||i.metadata?.filename})),o=n.map(i=>i.deepTextPromptPortion);return {fileDataParts:n,deepTextPromptPortion:o}}async verifyCitations(t,e,l){let n={};if(Array.isArray(e))for(let a of e){let s=chunk4HRWJSX6_cjs.i(a);n[s]=a;}else if(typeof e=="object"&&e!==null)if("fullPhrase"in e||"value"in e){let a=chunk4HRWJSX6_cjs.i(e);n[a]=e;}else Object.assign(n,e);else throw new Error("Invalid citations format");let o=`${this.apiUrl}/verifyCitations`,i={data:{attachmentId:t,citations:n,outputImageFormat:l?.outputImageFormat||"avif"}},r=await fetch(o,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(i)});if(!r.ok)throw new Error(await m(r,"Verification"));return await r.json()}async verifyCitationsFromLlmOutput(t,e){let{llmOutput:l,outputImageFormat:n="avif"}=t;if(e||(e=chunk4HRWJSX6_cjs.t(l)),Object.keys(e).length===0)return {verifications:{}};let o=new Map;for(let[a,s]of Object.entries(e)){let c=s.attachmentId||"";o.has(c)||o.set(c,{}),o.get(c)[a]=s;}let i=[];for(let[a,s]of o)a&&i.push(this.verifyCitations(a,s,{outputImageFormat:n}));let r=await Promise.all(i),f={};for(let a of r)Object.assign(f,a.verifications);return {verifications:f}}};
|
|
2
|
+
exports.a=h;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function E(t){return new TextEncoder().encode(t)}function Z(t){let e=1732584193,i=4023233417,r=2562383102,n=271733878,o=3285377520,p=t.length,a=p*8,c=p+1+8,l=Math.ceil(c/64)*64,s=new ArrayBuffer(l),C=new Uint8Array(s),d=new DataView(s);C.set(t),C[p]=128,d.setUint32(l-8,Math.floor(a/4294967296),false),d.setUint32(l-4,a>>>0,false);let u=new Uint32Array(80);for(let x=0;x<l;x+=64){for(let g=0;g<16;g++)u[g]=d.getUint32(x+g*4,false);for(let g=16;g<80;g++){let I=u[g-3]^u[g-8]^u[g-14]^u[g-16];u[g]=I<<1|I>>>31;}let f=e,h=i,_=r,k=n,S=o;for(let g=0;g<80;g++){let I,m;g<20?(I=h&_|~h&k,m=1518500249):g<40?(I=h^_^k,m=1859775393):g<60?(I=h&_|h&k|_&k,m=2400959708):(I=h^_^k,m=3395469782);let b=(f<<5|f>>>27)+I+S+m+u[g]>>>0;S=k,k=_,_=(h<<30|h>>>2)>>>0,h=f,f=b;}e=e+f>>>0,i=i+h>>>0,r=r+_>>>0,n=n+k>>>0,o=o+S>>>0;}let y=x=>x.toString(16).padStart(8,"0");return y(e)+y(i)+y(r)+y(n)+y(o)}function P(t){try{if(!t)return "";let e=typeof t=="string"?t:JSON.stringify(t);return Z(E(e))}catch(e){console.error("Error in making the hash:",e);}return ""}function q(...t){return t.filter(Boolean).join(" ")}function A(t){let e=t.pageNumber||v(t.startPageKey),i=[t.attachmentId||"",e?.toString()||"",t.fullPhrase||"",t.keySpan?.toString()||"",t.lineIds?.join(",")||"",t.timestamps?.startTime||"",t.timestamps?.endTime||""];return P(i.join("|")).slice(0,16)}function Y(t){let e=[t.attachmentId||"",t.label||"",t.verifiedFullPhrase||"",t.verifiedKeySpan||"",t.verifiedLineIds?.join(",")||"",t.verifiedPageNumber?.toString()||"",t.verifiedTimestamps?.startTime||"",t.verifiedTimestamps?.endTime||"",t.verifiedMatchSnippet||"",t.hitIndexWithinPage?.toString()||""];return P(e.join("|")).slice(0,16)}function j(t){let e=Math.random().toString(36).slice(2,11);return `${t}-${e}`}function Q(t,e={}){let{fallbackDisplay:i}=e;return t.keySpan?.toString()||t.citationNumber?.toString()||i||"1"}function tt(t){return t.citationNumber?.toString()||"1"}function et(t){return t.keySpan?.toString()||""}function nt(...t){return t.filter(Boolean).join(" ")}var it=4,rt=1;function D(t){if(!t)return;let e=[],i=t.split(",");for(let r of i){let n=r.trim();if(n)if(n.includes("-")){let[o,p]=n.split("-"),a=parseInt(o,10),c=parseInt(p,10);if(!isNaN(a)&&!isNaN(c)&&a<=c)for(let l=a;l<=c;l++)e.push(l);else isNaN(a)||e.push(a);}else {let o=parseInt(n,10);isNaN(o)||e.push(o);}}if(e.length!==0)return [...new Set(e)].sort((r,n)=>r-n)}function R(t){let e=t?.status,i=e==="not_found",r=e==="found_phrase_missed_value",n=e==="found_key_span_only",o=e==="partial_text_found"||e==="found_on_other_page"||e==="found_on_other_line"||e==="first_word_found";return {isVerified:e==="found"||n||o||r,isMiss:i,isPartialMatch:o,isPending:e==="pending"||e==="loading"||!e}}var U=(t,e,i,r)=>{let n=m=>m?m.replace(/^['"]|['"]$/g,"").replace(/\\'/g,"'"):void 0,o=i?.current?i.current++:void 0,p=t.substring(0,t.indexOf("<cite")),a=t.includes("/>")?t.slice(t.indexOf("/>")+2):"",c=t.substring(t.indexOf("<cite"),t.indexOf("/>")+2),l=(m,b)=>{for(let O of b){let L=new RegExp(`${O}='((?:[^'\\\\]|\\\\.)*)'`),K=m.match(L);if(K)return K[1]}},s=l(c,["attachment_id","attachmentId","file_id","fileId"]),C=s?.length===20?s:e||s,d=l(c,["start_page_key","startPageKey","start_page"]),u,y;if(d){let m=d.match(/page[\_a-zA-Z]*(\d+)_index_(\d+)/);m&&(u=parseInt(m[1]),y=parseInt(m[2]));}let x=n(l(c,["full_phrase","fullPhrase"])),f=n(l(c,["key_span","keySpan"])),h=n(l(c,["reasoning"])),_=n(l(c,["value"])),k;try{let b=l(c,["line_ids","lineIds"])?.replace(/[A-Za-z_[\](){}:]/g,"");k=b?D(b):void 0;}catch(m){r&&console.error("Error parsing lineIds",m);}let S=l(c,["timestamps"]),g;if(S){let[m,b]=S.split("-")||[];g={startTime:m,endTime:b};}let I={attachmentId:C,pageNumber:u,startPageKey:`page_number_${u||1}_index_${y||0}`,fullPhrase:x,keySpan:f||_,citationNumber:o,lineIds:k,beforeCite:p,timestamps:g,reasoning:h};return {beforeCite:p,afterCite:a,citation:I}},B=(t,e)=>{if(!t)return null;let i=t.fullPhrase??t.full_phrase,r=t.startPageKey??t.start_page_key,n=t.keySpan??t.key_span,o=t.lineIds??t.line_ids,p=t.attachmentId??t.attachment_id??t.fileId??t.file_id,a=t.reasoning,c=t.value;if(!i)return null;let l;if(r){let d=r.match(/page[_a-zA-Z]*(\d+)_index_(\d+)/i);if(d)l=parseInt(d[1],10);else {let u=r.match(/^(\d+)_(\d+)$/);u&&(l=parseInt(u[1],10));}}let s=o?.length?[...o].sort((d,u)=>d-u):void 0;return {attachmentId:p,pageNumber:l,fullPhrase:i,citationNumber:e,lineIds:s,keySpan:n||c,reasoning:a}},V=t=>typeof t=="object"&&t!==null&&("fullPhrase"in t||"full_phrase"in t||"startPageKey"in t||"start_page_key"in t||"keySpan"in t||"key_span"in t||"lineIds"in t||"line_ids"in t),N=t=>Array.isArray(t)?t.length>0&&t.some(V):typeof t=="object"&&t!==null?V(t):false,M=t=>{let e={},i=Array.isArray(t)?t:[t],r=1;for(let n of i){let o=B(n,r++);if(o&&o.fullPhrase){let p=A(o);e[p]=o;}}return e},w=(t,e)=>{if(!(!t||typeof t!="object")){if(t.citation&&N(t.citation)){let i=Array.isArray(t.citation)?t.citation:[t.citation];e.push(...i);}if(t.citations&&N(t.citations)){let i=Array.isArray(t.citations)?t.citations:[t.citations];e.push(...i);}if(Array.isArray(t))for(let i of t)w(i,e);else for(let i of Object.keys(t))i!=="citation"&&i!=="citations"&&w(t[i],e);}},T=t=>{let e=$(t),i=/<cite\s+[^>]*\/>/g,r=e.match(i);if(!r||r.length===0)return {};let n={},o={current:1};for(let p of r){let{citation:a}=U(p,void 0,o);if(a&&a.fullPhrase){let c=A(a);n[c]=a;}}return n},ct=t=>{if(!t)return {};let e={};if(typeof t=="object"){if(N(t)){let n=M(t);Object.assign(e,n);}else {let n=[];if(w(t,n),n.length>0){let o=M(n);Object.assign(e,o);}}let i=JSON.stringify(t),r=T(i);Object.assign(e,r);}else if(typeof t=="string"){let i=T(t);Object.assign(e,i);}return e};function lt(t){let e=new Map,i=Array.isArray(t)?t.map((r,n)=>[A(r)||String(n+1),r]):Object.entries(t);for(let[r,n]of i){let o=n.attachmentId||"";e.has(o)||e.set(o,{}),e.get(o)[r]=n;}return e}function ut(t){let e={},i=Array.isArray(t)?t.map((r,n)=>[A(r)||String(n+1),r]):Object.entries(t);for(let[r,n]of i){let o=n.attachmentId||"";e[o]||(e[o]={}),e[o][r]=n;}return e}var J=t=>{let e={},i=/([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(['"])((?:[^'"\\]|\\.)*)\2/g,r;for(;(r=i.exec(t))!==null;){let n=r[1].toLowerCase().replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase(),o=r[3],p=n==="fileid"||n==="file_id"||n==="attachmentid"?"attachment_id":n==="keyspan"?"key_span":n==="fullphrase"?"full_phrase":n==="lineids"?"line_ids":n==="startpagekey"||n==="start_pagekey"?"start_page_key":n;e[p]=o;}return e},F=t=>{if(!t)return "\u25CC";let e=R(t);return e.isPending?"\u25CC":e.isMiss?"\u2717":e.isPartialMatch?"\u26A0":e.isVerified?"\u2713":"\u25CC"},W=(t,e={})=>{let{leaveKeySpanBehind:i=false,verifications:r,showVerificationStatus:n=false}=e,o=0,p=/<cite\s+[^>]*?\/>/g;return t.replace(p,a=>{o++;let c=J(a),l="";if(i&&c.key_span&&(l=c.key_span.replace(/\\'/g,"'").replace(/\\"/g,'"')),n&&r){let s,C=String(o);if(s=r[C],!s&&c.attachment_id){for(let[,u]of Object.entries(r))if(u.attachmentId===c.attachment_id){s=u;break}}let d=F(s);l=l?`${l}${d}`:d;}return l})},gt=(t,e)=>W(t,{leaveKeySpanBehind:e}),dt=t=>t.replace(/<page_number_\d+_index_\d+>/g,"").replace(/<\/page_number_\d+_index_\d+>/g,"").trim(),mt=t=>{let e=/<line id="[^"]*">|<\/line>/g;return t.replace(e,"")},v=t=>{if(!t)return null;let e=t.match(/\d+/)?.[0];return e?parseInt(e):null},$=t=>{let e=t?.trim()||"",i=e.split(/(<cite[\s\S]*?(?:\/>|<\/cite>))/gm);return i.length<=1?z(e):(e=i.map(r=>r.startsWith("<cite")?z(r):r).join(""),e)},z=t=>{let e=t;e=e.replace(/><\/cite>/g,"/>");let i=p=>{let a=p.toLowerCase();return a==="fullphrase"||a==="full_phrase"?"full_phrase":a==="lineids"||a==="line_ids"?"line_ids":a==="startpagekey"||a==="start_pagekey"||a==="start_page_key"?"start_page_key":a==="fileid"||a==="file_id"||a==="attachmentid"||a==="attachment_id"?"attachment_id":a==="keyspan"||a==="key_span"?"key_span":a==="reasoning"||a==="value"?a:a==="timestamps"||a==="timestamp"||a==="timestamps"?"timestamps":a},r=p=>p.replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),n=/(fullPhrase|full_phrase|keySpan|key_span|reasoning|value)\s*=\s*(['"])([\s\S]*?)(?=\s+(?:line_ids|lineIds|timestamps|fileId|file_id|attachmentId|attachment_id|start_page_key|start_pageKey|startPageKey|keySpan|key_span|reasoning|value|full_phrase)|\s*\/?>)/gm;e=e.replace(n,(p,a,c,l)=>{let s=l;return s.endsWith(c)&&(s=s.slice(0,-1)),s=s.replace(/(\r?\n)+/g," "),s=r(s),s=s.replace(/(\*|_){2,}/g,""),s=s.replace(/\\\\'/g,"'"),s=s.replace(/\\'/g,"'"),s=s.replace(/'/g,"\\'"),s=s.replace(/\\\\"/g,'"'),s=s.replace(/\\"/g,'"'),s=s.replace(/"/g,'\\"'),s=s.replace(/\*/g,""),`${i(a)}='${s}'`}),e=e.replace(/(line_ids|lineIds|timestamps)=['"]?([\[\]\(\){}A-Za-z0-9_\-, ]+)['"]?(\s*\/?>|\s+)/gm,(p,a,c,l)=>{let s=c.replace(/[A-Za-z\[\]\(\){}]/g,"");return s=s.replace(/(\d+)-(\d+)/g,(C,d,u)=>{let y=parseInt(d,10),x=parseInt(u,10),f=[];if(y<=x)for(let h=y;h<=x;h++)f.push(h);else f.push(y);return f.join(",")}),s=s.replace(/,+/g,",").replace(/^,|,$/g,""),`${i(a)}='${s}'${l}`});let o=p=>{let a=/([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(['"])((?:[^'"\\\n]|\\.)*)(?:\2)/g,c={},l;for(;l=a.exec(p);){let f=l[1],h=l[3],_=i(f);c[_]=h;}let s=Object.keys(c);if(s.length===0)return p;let C=typeof c.timestamps=="string"&&c.timestamps.length>0,d=s.filter(f=>f.startsWith("start_page")),u=[];c.attachment_id&&u.push("attachment_id"),C?(c.full_phrase&&u.push("full_phrase"),u.push("timestamps")):(d.includes("start_page_key")&&u.push("start_page_key"),d.filter(f=>f!=="start_page_key").sort().forEach(f=>u.push(f)),c.full_phrase&&u.push("full_phrase"),c.key_span&&u.push("key_span"),c.line_ids&&u.push("line_ids")),c.reasoning&&u.push("reasoning"),c.value&&u.push("value");let y=new Set(u);return s.filter(f=>!y.has(f)).sort().forEach(f=>u.push(f)),`<cite ${u.map(f=>`${f}='${c[f]}'`).join(" ")} />`};return e=e.replace(/<cite\b[\s\S]*?\/>/gm,p=>o(p)),e};export{W as a,gt as b,dt as c,mt as d,v as e,$ as f,P as g,q as h,A as i,Y as j,j as k,Q as l,tt as m,et as n,nt as o,it as p,rt as q,R as r,U as s,ct as t,lt as u,ut as v};
|
package/lib/client/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkCQF2MESM_cjs=require('../chunk-CQF2MESM.cjs');require('../chunk-4HRWJSX6.cjs'),require('../chunk-F2MMVEVC.cjs');Object.defineProperty(exports,"DeepCitation",{enumerable:true,get:function(){return chunkCQF2MESM_cjs.a}});
|
package/lib/client/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{a as DeepCitation}from'../chunk-67NZP2UZ.js';import'../chunk-ETIDLMKZ.js';import'../chunk-O2XFH626.js';
|
package/lib/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkCQF2MESM_cjs=require('./chunk-CQF2MESM.cjs'),chunk4FGOHQFP_cjs=require('./chunk-4FGOHQFP.cjs'),chunkCFXDRAJL_cjs=require('./chunk-CFXDRAJL.cjs'),chunk4HRWJSX6_cjs=require('./chunk-4HRWJSX6.cjs');require('./chunk-F2MMVEVC.cjs');var Y=t=>{if(!t)return false;let e=t.trim();if(e.length<64)return false;let a=e?.[0];for(let r=1;r<e.length;r++)if(e[r]!==a)return false;return true};function z(t){t=t.trim();let e=2,a=10,r=/[.?!](?=\s+|$)/g,m,n=[];for(;(m=r.exec(t))!==null;)n.push(m.index);if(n.length<2)return t;let I=n[n.length-1],C=n[n.length-2],o=t.substring(C+1,I+1),p=o.length;if(o.trim().slice(0,-1).length<a||p<=0||t.length<p*e)return t;let c=0,s=I+1;t.endsWith(o)&&(s=t.length);let f=-1;for(;;){let i=s-p;if(i<0)break;if(t.substring(i,s)===o)c++,f=i,s=i;else break}return c>=e?t.substring(0,f)+o:t}Object.defineProperty(exports,"DeepCitation",{enumerable:true,get:function(){return chunkCQF2MESM_cjs.a}});Object.defineProperty(exports,"AV_CITATION_MARKDOWN_SYNTAX_PROMPT",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.b}});Object.defineProperty(exports,"CITATION_AV_BASED_JSON_OUTPUT_FORMAT",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.h}});Object.defineProperty(exports,"CITATION_AV_REMINDER",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.d}});Object.defineProperty(exports,"CITATION_JSON_OUTPUT_FORMAT",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.g}});Object.defineProperty(exports,"CITATION_MARKDOWN_SYNTAX_PROMPT",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.a}});Object.defineProperty(exports,"CITATION_REMINDER",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.c}});Object.defineProperty(exports,"compressPromptIds",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.i}});Object.defineProperty(exports,"decompressPromptIds",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.j}});Object.defineProperty(exports,"wrapCitationPrompt",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.f}});Object.defineProperty(exports,"wrapSystemCitationPrompt",{enumerable:true,get:function(){return chunk4FGOHQFP_cjs.e}});Object.defineProperty(exports,"BLANK_VERIFICATION",{enumerable:true,get:function(){return chunkCFXDRAJL_cjs.d}});Object.defineProperty(exports,"DEFAULT_OUTPUT_IMAGE_FORMAT",{enumerable:true,get:function(){return chunkCFXDRAJL_cjs.a}});Object.defineProperty(exports,"NOT_FOUND_VERIFICATION_INDEX",{enumerable:true,get:function(){return chunkCFXDRAJL_cjs.b}});Object.defineProperty(exports,"PENDING_VERIFICATION_INDEX",{enumerable:true,get:function(){return chunkCFXDRAJL_cjs.c}});Object.defineProperty(exports,"CITATION_X_PADDING",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.p}});Object.defineProperty(exports,"CITATION_Y_PADDING",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.q}});Object.defineProperty(exports,"generateCitationInstanceId",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.k}});Object.defineProperty(exports,"generateCitationKey",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.i}});Object.defineProperty(exports,"generateVerificationKey",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.j}});Object.defineProperty(exports,"getAllCitationsFromLlmOutput",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.t}});Object.defineProperty(exports,"getCitationPageNumber",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.e}});Object.defineProperty(exports,"getCitationStatus",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.r}});Object.defineProperty(exports,"groupCitationsByAttachmentId",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.u}});Object.defineProperty(exports,"groupCitationsByAttachmentIdObject",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.v}});Object.defineProperty(exports,"normalizeCitations",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.f}});Object.defineProperty(exports,"parseCitation",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.s}});Object.defineProperty(exports,"removeCitations",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.b}});Object.defineProperty(exports,"removeLineIdMetadata",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.d}});Object.defineProperty(exports,"removePageNumberMetadata",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.c}});Object.defineProperty(exports,"replaceCitations",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.a}});Object.defineProperty(exports,"sha1Hash",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.g}});exports.cleanRepeatingLastSentence=z;exports.isGeminiGarbage=Y;
|
package/lib/index.d.cts
CHANGED
|
@@ -82,7 +82,53 @@ declare function groupCitationsByAttachmentIdObject(citations: Citation[] | {
|
|
|
82
82
|
};
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
interface ReplaceCitationsOptions {
|
|
86
|
+
/**
|
|
87
|
+
* If true, leaves the key_span text behind when removing citations.
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
leaveKeySpanBehind?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Map of citation keys to verification results.
|
|
93
|
+
* Used to determine verification status for each citation.
|
|
94
|
+
*/
|
|
95
|
+
verifications?: Record<string, Verification>;
|
|
96
|
+
/**
|
|
97
|
+
* If true and verifications are provided, appends a verification status indicator.
|
|
98
|
+
* Uses: ✓ (verified), ⚠ (partial), ✗ (not found), ◌ (pending)
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
showVerificationStatus?: boolean;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Replaces citation tags in markdown text with optional replacement content.
|
|
105
|
+
*
|
|
106
|
+
* @param markdownWithCitations - The text containing <cite /> tags
|
|
107
|
+
* @param options - Configuration options
|
|
108
|
+
* @returns The text with citations replaced
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Remove all citations
|
|
113
|
+
* const clean = replaceCitations(llmOutput);
|
|
114
|
+
*
|
|
115
|
+
* // Leave key_span text behind
|
|
116
|
+
* const withKeySpans = replaceCitations(llmOutput, { leaveKeySpanBehind: true });
|
|
117
|
+
*
|
|
118
|
+
* // Show verification status indicators
|
|
119
|
+
* const withStatus = replaceCitations(llmOutput, {
|
|
120
|
+
* leaveKeySpanBehind: true,
|
|
121
|
+
* verifications: verificationMap,
|
|
122
|
+
* showVerificationStatus: true,
|
|
123
|
+
* });
|
|
124
|
+
* // Output: "Revenue grew 45% year-over-year Revenue Growth✓"
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
declare const replaceCitations: (markdownWithCitations: string, options?: ReplaceCitationsOptions) => string;
|
|
128
|
+
/**
|
|
129
|
+
* @deprecated Use `replaceCitations` instead. This function is kept for backward compatibility.
|
|
130
|
+
*/
|
|
131
|
+
declare const removeCitations: (markdownWithCitations: string, leaveKeySpanBehind?: boolean) => string;
|
|
86
132
|
declare const removePageNumberMetadata: (pageText: string) => string;
|
|
87
133
|
declare const removeLineIdMetadata: (pageText: string) => string;
|
|
88
134
|
declare const getCitationPageNumber: (startPageKey?: string | null) => number | null;
|
|
@@ -102,4 +148,4 @@ declare function cleanRepeatingLastSentence(text: string): string;
|
|
|
102
148
|
*/
|
|
103
149
|
declare function sha1Hash(data: string | any): string;
|
|
104
150
|
|
|
105
|
-
export { Citation, CitationStatus, Verification, cleanRepeatingLastSentence, getAllCitationsFromLlmOutput, getCitationPageNumber, getCitationStatus, groupCitationsByAttachmentId, groupCitationsByAttachmentIdObject, isGeminiGarbage, normalizeCitations, parseCitation, removeCitations, removeLineIdMetadata, removePageNumberMetadata, sha1Hash };
|
|
151
|
+
export { Citation, CitationStatus, type ReplaceCitationsOptions, Verification, cleanRepeatingLastSentence, getAllCitationsFromLlmOutput, getCitationPageNumber, getCitationStatus, groupCitationsByAttachmentId, groupCitationsByAttachmentIdObject, isGeminiGarbage, normalizeCitations, parseCitation, removeCitations, removeLineIdMetadata, removePageNumberMetadata, replaceCitations, sha1Hash };
|
package/lib/index.d.ts
CHANGED
|
@@ -82,7 +82,53 @@ declare function groupCitationsByAttachmentIdObject(citations: Citation[] | {
|
|
|
82
82
|
};
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
interface ReplaceCitationsOptions {
|
|
86
|
+
/**
|
|
87
|
+
* If true, leaves the key_span text behind when removing citations.
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
leaveKeySpanBehind?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Map of citation keys to verification results.
|
|
93
|
+
* Used to determine verification status for each citation.
|
|
94
|
+
*/
|
|
95
|
+
verifications?: Record<string, Verification>;
|
|
96
|
+
/**
|
|
97
|
+
* If true and verifications are provided, appends a verification status indicator.
|
|
98
|
+
* Uses: ✓ (verified), ⚠ (partial), ✗ (not found), ◌ (pending)
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
showVerificationStatus?: boolean;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Replaces citation tags in markdown text with optional replacement content.
|
|
105
|
+
*
|
|
106
|
+
* @param markdownWithCitations - The text containing <cite /> tags
|
|
107
|
+
* @param options - Configuration options
|
|
108
|
+
* @returns The text with citations replaced
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Remove all citations
|
|
113
|
+
* const clean = replaceCitations(llmOutput);
|
|
114
|
+
*
|
|
115
|
+
* // Leave key_span text behind
|
|
116
|
+
* const withKeySpans = replaceCitations(llmOutput, { leaveKeySpanBehind: true });
|
|
117
|
+
*
|
|
118
|
+
* // Show verification status indicators
|
|
119
|
+
* const withStatus = replaceCitations(llmOutput, {
|
|
120
|
+
* leaveKeySpanBehind: true,
|
|
121
|
+
* verifications: verificationMap,
|
|
122
|
+
* showVerificationStatus: true,
|
|
123
|
+
* });
|
|
124
|
+
* // Output: "Revenue grew 45% year-over-year Revenue Growth✓"
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
declare const replaceCitations: (markdownWithCitations: string, options?: ReplaceCitationsOptions) => string;
|
|
128
|
+
/**
|
|
129
|
+
* @deprecated Use `replaceCitations` instead. This function is kept for backward compatibility.
|
|
130
|
+
*/
|
|
131
|
+
declare const removeCitations: (markdownWithCitations: string, leaveKeySpanBehind?: boolean) => string;
|
|
86
132
|
declare const removePageNumberMetadata: (pageText: string) => string;
|
|
87
133
|
declare const removeLineIdMetadata: (pageText: string) => string;
|
|
88
134
|
declare const getCitationPageNumber: (startPageKey?: string | null) => number | null;
|
|
@@ -102,4 +148,4 @@ declare function cleanRepeatingLastSentence(text: string): string;
|
|
|
102
148
|
*/
|
|
103
149
|
declare function sha1Hash(data: string | any): string;
|
|
104
150
|
|
|
105
|
-
export { Citation, CitationStatus, Verification, cleanRepeatingLastSentence, getAllCitationsFromLlmOutput, getCitationPageNumber, getCitationStatus, groupCitationsByAttachmentId, groupCitationsByAttachmentIdObject, isGeminiGarbage, normalizeCitations, parseCitation, removeCitations, removeLineIdMetadata, removePageNumberMetadata, sha1Hash };
|
|
151
|
+
export { Citation, CitationStatus, type ReplaceCitationsOptions, Verification, cleanRepeatingLastSentence, getAllCitationsFromLlmOutput, getCitationPageNumber, getCitationStatus, groupCitationsByAttachmentId, groupCitationsByAttachmentIdObject, isGeminiGarbage, normalizeCitations, parseCitation, removeCitations, removeLineIdMetadata, removePageNumberMetadata, replaceCitations, sha1Hash };
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{a as DeepCitation}from'./chunk-67NZP2UZ.js';export{b as AV_CITATION_MARKDOWN_SYNTAX_PROMPT,h as CITATION_AV_BASED_JSON_OUTPUT_FORMAT,d as CITATION_AV_REMINDER,g as CITATION_JSON_OUTPUT_FORMAT,a as CITATION_MARKDOWN_SYNTAX_PROMPT,c as CITATION_REMINDER,i as compressPromptIds,j as decompressPromptIds,f as wrapCitationPrompt,e as wrapSystemCitationPrompt}from'./chunk-2IZXUOQR.js';export{d as BLANK_VERIFICATION,a as DEFAULT_OUTPUT_IMAGE_FORMAT,b as NOT_FOUND_VERIFICATION_INDEX,c as PENDING_VERIFICATION_INDEX}from'./chunk-RQPZSRID.js';export{p as CITATION_X_PADDING,q as CITATION_Y_PADDING,k as generateCitationInstanceId,i as generateCitationKey,j as generateVerificationKey,t as getAllCitationsFromLlmOutput,e as getCitationPageNumber,r as getCitationStatus,u as groupCitationsByAttachmentId,v as groupCitationsByAttachmentIdObject,f as normalizeCitations,s as parseCitation,b as removeCitations,d as removeLineIdMetadata,c as removePageNumberMetadata,a as replaceCitations,g as sha1Hash}from'./chunk-ETIDLMKZ.js';import'./chunk-O2XFH626.js';var Y=t=>{if(!t)return false;let e=t.trim();if(e.length<64)return false;let a=e?.[0];for(let r=1;r<e.length;r++)if(e[r]!==a)return false;return true};function z(t){t=t.trim();let e=2,a=10,r=/[.?!](?=\s+|$)/g,m,n=[];for(;(m=r.exec(t))!==null;)n.push(m.index);if(n.length<2)return t;let I=n[n.length-1],C=n[n.length-2],o=t.substring(C+1,I+1),p=o.length;if(o.trim().slice(0,-1).length<a||p<=0||t.length<p*e)return t;let c=0,s=I+1;t.endsWith(o)&&(s=t.length);let f=-1;for(;;){let i=s-p;if(i<0)break;if(t.substring(i,s)===o)c++,f=i,s=i;else break}return c>=e?t.substring(0,f)+o:t}export{z as cleanRepeatingLastSentence,Y as isGeminiGarbage};
|
package/lib/react/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var chunk3GR7VKUJ_cjs=require('../chunk-3GR7VKUJ.cjs');require('../chunk-F2MMVEVC.cjs');var Ie=require('react'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom'),R=require('@radix-ui/react-popover');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ie__namespace=/*#__PURE__*/_interopNamespace(Ie);var R__namespace=/*#__PURE__*/_interopNamespace(R);function le(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return e.replace(/^https?:\/\/(www\.)?/,"").split("/")[0]}}function ye(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}function at(e){try{let t=new URL(e),n=t.pathname+t.search;return n==="/"?"":n}catch{return ""}}var ke={verified:{icon:"\u2713",label:"Verified",className:"text-green-600 dark:text-green-500"},partial:{icon:"~",label:"Partial match",className:"text-amber-600 dark:text-amber-500"},pending:{icon:"\u2026",label:"Verifying",className:"text-gray-400 dark:text-gray-500"},blocked_antibot:{icon:"\u{1F6E1}",label:"Blocked by anti-bot",className:"text-amber-600 dark:text-amber-500"},blocked_login:{icon:"\u{1F512}",label:"Login required",className:"text-amber-600 dark:text-amber-500"},blocked_paywall:{icon:"\u{1F4B3}",label:"Paywall",className:"text-amber-600 dark:text-amber-500"},blocked_geo:{icon:"\u{1F30D}",label:"Geo-restricted",className:"text-amber-600 dark:text-amber-500"},blocked_rate_limit:{icon:"\u23F1",label:"Rate limited",className:"text-amber-600 dark:text-amber-500"},error_timeout:{icon:"\u23F0",label:"Timed out",className:"text-red-500 dark:text-red-400"},error_not_found:{icon:"404",label:"Not found",className:"text-red-500 dark:text-red-400"},error_server:{icon:"\u26A0",label:"Server error",className:"text-red-500 dark:text-red-400"},error_network:{icon:"\u26A1",label:"Network error",className:"text-red-500 dark:text-red-400"},unknown:{icon:"?",label:"Unknown status",className:"text-gray-400 dark:text-gray-500"}};function Pe(e){return e.startsWith("blocked_")}function Ne(e){return e.startsWith("error_")}function rt(e){return e==="verified"||e==="partial"}var ot=({status:e,errorMessage:t})=>{let n=ke[e];return jsxRuntime.jsx("span",{className:chunk3GR7VKUJ_cjs.n("inline-flex items-center gap-1",n.className),title:t||n.label,"aria-label":n.label,children:jsxRuntime.jsx("span",{className:"text-[0.9em]","aria-hidden":"true",children:n.icon})})},ie=({url:e,faviconUrl:t})=>{let n=le(e),r=t||`https://www.google.com/s2/favicons?domain=${n}&sz=16`;return jsxRuntime.jsx("img",{src:r,alt:"",className:"w-3.5 h-3.5 rounded-sm",width:14,height:14,loading:"lazy",onError:a=>{a.target.style.display="none";}})},we=Ie.forwardRef(({urlMeta:e,citation:t,children:n,className:r,variant:a="chip",showFullUrlOnHover:o=true,showFavicon:i=true,showTitle:d=false,maxDisplayLength:s=30,renderBlockedIndicator:l,onUrlClick:u,eventHandlers:p,preventTooltips:h=false},P)=>{let{url:g,domain:A,title:N,fetchStatus:C,faviconUrl:w,errorMessage:B}=e,v=Ie.useMemo(()=>t||{value:g,fullPhrase:N||g},[t,g,N]),m=Ie.useMemo(()=>chunk3GR7VKUJ_cjs.h(v),[v]),K=Ie.useMemo(()=>chunk3GR7VKUJ_cjs.j(m),[m]),M=Ie.useMemo(()=>A||le(g),[A,g]),L=Ie.useMemo(()=>at(g),[g]),D=Ie.useMemo(()=>{if(d&&N)return ye(N,s);let b=L?ye(L,s-M.length-1):"";return b?`${M}${b}`:M},[d,N,M,L,s]),S=ke[C],Z=Pe(C),ee=Ne(C),te=C==="verified",G=C==="partial",T=C==="pending",O=Ie.useCallback(b=>{b.preventDefault(),b.stopPropagation(),u?u(g,b):window.open(g,"_blank","noopener,noreferrer"),p?.onClick?.(v,m,b);},[u,g,p,v,m]),y=Ie.useCallback(()=>{p?.onMouseEnter?.(v,m);},[p,v,m]),E=Ie.useCallback(()=>{p?.onMouseLeave?.(v,m);},[p,v,m]),_=()=>Z||ee?l?l(C,B):jsxRuntime.jsx(ot,{status:C,errorMessage:B}):te?jsxRuntime.jsx("span",{className:"text-[0.85em] text-green-600 dark:text-green-500","aria-hidden":"true",title:"Verified",children:"\u2713"}):G?jsxRuntime.jsx("span",{className:"text-[0.85em] text-amber-600 dark:text-amber-500","aria-hidden":"true",title:"Partial match",children:"~"}):T?jsxRuntime.jsx("span",{className:"opacity-70","aria-hidden":"true",children:"\u2026"}):null;return a==="chip"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n,jsxRuntime.jsxs("span",{ref:P,"data-citation-id":m,"data-citation-instance":K,"data-url":g,"data-fetch-status":C,"data-variant":"chip",className:chunk3GR7VKUJ_cjs.n("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm cursor-pointer transition-colors no-underline","bg-blue-100 dark:bg-blue-900/30",S.className,r),title:o?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onMouseDown:O,onClick:b=>b.stopPropagation(),role:"link","aria-label":`Link to ${M}: ${S.label}`,children:[i&&jsxRuntime.jsx(ie,{url:g,faviconUrl:w}),jsxRuntime.jsx("span",{className:"max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap",children:D}),_()]})]}):a==="inline"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n,jsxRuntime.jsxs("a",{ref:P,href:g,"data-citation-id":m,"data-citation-instance":K,"data-fetch-status":C,"data-variant":"inline",className:chunk3GR7VKUJ_cjs.n("inline-flex items-center gap-1 cursor-pointer transition-colors no-underline border-b border-dotted border-current",S.className,r),title:o?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onClick:b=>{b.preventDefault(),O(b);},target:"_blank",rel:"noopener noreferrer","aria-label":`Link to ${M}: ${S.label}`,children:[i&&jsxRuntime.jsx(ie,{url:g,faviconUrl:w}),jsxRuntime.jsx("span",{children:D}),_()]})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n,jsxRuntime.jsxs("span",{ref:P,"data-citation-id":m,"data-citation-instance":K,"data-url":g,"data-fetch-status":C,"data-variant":"bracket",className:chunk3GR7VKUJ_cjs.n("cursor-pointer transition-colors",S.className,r),title:o?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onMouseDown:O,onClick:b=>b.stopPropagation(),role:"link","aria-label":`Link to ${M}: ${S.label}`,children:["[",i&&jsxRuntime.jsx(ie,{url:g,faviconUrl:w}),jsxRuntime.jsx("span",{className:"max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap",children:D}),_(),"]"]})]})});we.displayName="UrlCitationComponent";Ie.memo(we);var it=({className:e})=>jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"square",shapeRendering:"crispEdges",className:e,children:[jsxRuntime.jsx("path",{d:"M7 3 L3 3 L3 21 L7 21"}),jsxRuntime.jsx("path",{d:"M17 3 L21 3 L21 21 L17 21"})]}),Q=({className:e})=>jsxRuntime.jsx("svg",{className:chunk3GR7VKUJ_cjs.g("w-[0.7em] h-[0.7em]",e),viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"})}),ce=({className:e})=>jsxRuntime.jsx("svg",{className:chunk3GR7VKUJ_cjs.g("w-[0.7em] h-[0.7em]",e),viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"})}),de=({className:e})=>jsxRuntime.jsxs("svg",{className:chunk3GR7VKUJ_cjs.g("w-[0.7em] h-[0.7em] animate-spin",e),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[jsxRuntime.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),jsxRuntime.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]});function st(...e){return e.filter(Boolean).join(" ")}var Ee=R__namespace.Root,_e=R__namespace.Trigger;var ue=Ie__namespace.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},a)=>jsxRuntime.jsx(R__namespace.Portal,{children:jsxRuntime.jsx(R__namespace.Content,{ref:a,align:t,sideOffset:n,className:st("z-50 max-w-sm rounded-md border bg-white p-1 shadow-md outline-none","border-gray-200 dark:border-gray-700 dark:bg-gray-900","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2","data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2","data-[side=top]:slide-in-from-bottom-2",e),...r})}));ue.displayName=R__namespace.Content.displayName;function Ve(e,t,n=(r,a)=>r===a){let r=e.length,a=t.length;if(r===0&&a===0)return [];if(r===0)return [{value:t.join(""),added:true,count:t.length}];if(a===0)return [{value:e.join(""),removed:true,count:e.length}];let o=0;for(;o<r&&o<a&&n(e[o],t[o]);)o++;let i=0;for(;i<r-o&&i<a-o&&n(e[r-1-i],t[a-1-i]);)i++;let d=e.slice(o,r-i),s=t.slice(o,a-i);if(d.length===0&&s.length===0)return [{value:e.join(""),count:e.length}];let l=lt(d,s,n),u=[];return o>0&&u.push({value:e.slice(0,o).join(""),count:o}),u.push(...l),i>0&&u.push({value:e.slice(r-i).join(""),count:i}),Te(u)}function lt(e,t,n){let r=e.length,a=t.length,o=r+a,i={1:0},d=[];e:for(let s=0;s<=o;s++){d.push({...i});for(let l=-s;l<=s;l+=2){let u;l===-s||l!==s&&i[l-1]<i[l+1]?u=i[l+1]:u=i[l-1]+1;let p=u-l;for(;u<r&&p<a&&n(e[u],t[p]);)u++,p++;if(i[l]=u,u>=r&&p>=a)break e}}return ct(d,e,t)}function ct(e,t,n){let r=[],a=t.length,o=n.length;for(let i=e.length-1;i>=0;i--){let d=e[i],s=a-o,l;s===-i||s!==i&&d[s-1]<d[s+1]?l=s+1:l=s-1;let u=d[l]??0,p=u-l;for(;a>u&&o>p;)a--,o--,r.unshift({value:t[a],count:1});i>0&&(a===u?(o--,r.unshift({value:n[o],added:true,count:1})):(a--,r.unshift({value:t[a],removed:true,count:1})));}return r}function Te(e){if(e.length===0)return [];let t=[];for(let n of e){let r=t[t.length-1];r&&r.added===n.added&&r.removed===n.removed?(r.value+=n.value,r.count=(r.count||1)+(n.count||1)):t.push({...n});}return t}function Le(e){if(!e)return [];let t=[],n="";for(let r=0;r<e.length;r++){let a=e[r];n+=a,a===`
|
|
1
|
+
'use strict';var chunk4HRWJSX6_cjs=require('../chunk-4HRWJSX6.cjs');require('../chunk-F2MMVEVC.cjs');var Ie=require('react'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom'),R=require('@radix-ui/react-popover');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ie__namespace=/*#__PURE__*/_interopNamespace(Ie);var R__namespace=/*#__PURE__*/_interopNamespace(R);function le(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return e.replace(/^https?:\/\/(www\.)?/,"").split("/")[0]}}function ye(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}function at(e){try{let t=new URL(e),n=t.pathname+t.search;return n==="/"?"":n}catch{return ""}}var ke={verified:{icon:"\u2713",label:"Verified",className:"text-green-600 dark:text-green-500"},partial:{icon:"~",label:"Partial match",className:"text-amber-600 dark:text-amber-500"},pending:{icon:"\u2026",label:"Verifying",className:"text-gray-400 dark:text-gray-500"},blocked_antibot:{icon:"\u{1F6E1}",label:"Blocked by anti-bot",className:"text-amber-600 dark:text-amber-500"},blocked_login:{icon:"\u{1F512}",label:"Login required",className:"text-amber-600 dark:text-amber-500"},blocked_paywall:{icon:"\u{1F4B3}",label:"Paywall",className:"text-amber-600 dark:text-amber-500"},blocked_geo:{icon:"\u{1F30D}",label:"Geo-restricted",className:"text-amber-600 dark:text-amber-500"},blocked_rate_limit:{icon:"\u23F1",label:"Rate limited",className:"text-amber-600 dark:text-amber-500"},error_timeout:{icon:"\u23F0",label:"Timed out",className:"text-red-500 dark:text-red-400"},error_not_found:{icon:"404",label:"Not found",className:"text-red-500 dark:text-red-400"},error_server:{icon:"\u26A0",label:"Server error",className:"text-red-500 dark:text-red-400"},error_network:{icon:"\u26A1",label:"Network error",className:"text-red-500 dark:text-red-400"},unknown:{icon:"?",label:"Unknown status",className:"text-gray-400 dark:text-gray-500"}};function Pe(e){return e.startsWith("blocked_")}function Ne(e){return e.startsWith("error_")}function rt(e){return e==="verified"||e==="partial"}var ot=({status:e,errorMessage:t})=>{let n=ke[e];return jsxRuntime.jsx("span",{className:chunk4HRWJSX6_cjs.o("inline-flex items-center gap-1",n.className),title:t||n.label,"aria-label":n.label,children:jsxRuntime.jsx("span",{className:"text-[0.9em]","aria-hidden":"true",children:n.icon})})},ie=({url:e,faviconUrl:t})=>{let n=le(e),r=t||`https://www.google.com/s2/favicons?domain=${n}&sz=16`;return jsxRuntime.jsx("img",{src:r,alt:"",className:"w-3.5 h-3.5 rounded-sm",width:14,height:14,loading:"lazy",onError:a=>{a.target.style.display="none";}})},we=Ie.forwardRef(({urlMeta:e,citation:t,children:n,className:r,variant:a="chip",showFullUrlOnHover:o=true,showFavicon:i=true,showTitle:d=false,maxDisplayLength:s=30,renderBlockedIndicator:l,onUrlClick:u,eventHandlers:p,preventTooltips:h=false},P)=>{let{url:g,domain:A,title:N,fetchStatus:C,faviconUrl:w,errorMessage:B}=e,v=Ie.useMemo(()=>t||{value:g,fullPhrase:N||g},[t,g,N]),m=Ie.useMemo(()=>chunk4HRWJSX6_cjs.i(v),[v]),K=Ie.useMemo(()=>chunk4HRWJSX6_cjs.k(m),[m]),M=Ie.useMemo(()=>A||le(g),[A,g]),L=Ie.useMemo(()=>at(g),[g]),D=Ie.useMemo(()=>{if(d&&N)return ye(N,s);let b=L?ye(L,s-M.length-1):"";return b?`${M}${b}`:M},[d,N,M,L,s]),S=ke[C],Z=Pe(C),ee=Ne(C),te=C==="verified",G=C==="partial",T=C==="pending",O=Ie.useCallback(b=>{b.preventDefault(),b.stopPropagation(),u?u(g,b):window.open(g,"_blank","noopener,noreferrer"),p?.onClick?.(v,m,b);},[u,g,p,v,m]),y=Ie.useCallback(()=>{p?.onMouseEnter?.(v,m);},[p,v,m]),E=Ie.useCallback(()=>{p?.onMouseLeave?.(v,m);},[p,v,m]),_=()=>Z||ee?l?l(C,B):jsxRuntime.jsx(ot,{status:C,errorMessage:B}):te?jsxRuntime.jsx("span",{className:"text-[0.85em] text-green-600 dark:text-green-500","aria-hidden":"true",title:"Verified",children:"\u2713"}):G?jsxRuntime.jsx("span",{className:"text-[0.85em] text-amber-600 dark:text-amber-500","aria-hidden":"true",title:"Partial match",children:"~"}):T?jsxRuntime.jsx("span",{className:"opacity-70","aria-hidden":"true",children:"\u2026"}):null;return a==="chip"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n,jsxRuntime.jsxs("span",{ref:P,"data-citation-id":m,"data-citation-instance":K,"data-url":g,"data-fetch-status":C,"data-variant":"chip",className:chunk4HRWJSX6_cjs.o("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm cursor-pointer transition-colors no-underline","bg-blue-100 dark:bg-blue-900/30",S.className,r),title:o?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onMouseDown:O,onClick:b=>b.stopPropagation(),role:"link","aria-label":`Link to ${M}: ${S.label}`,children:[i&&jsxRuntime.jsx(ie,{url:g,faviconUrl:w}),jsxRuntime.jsx("span",{className:"max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap",children:D}),_()]})]}):a==="inline"?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n,jsxRuntime.jsxs("a",{ref:P,href:g,"data-citation-id":m,"data-citation-instance":K,"data-fetch-status":C,"data-variant":"inline",className:chunk4HRWJSX6_cjs.o("inline-flex items-center gap-1 cursor-pointer transition-colors no-underline border-b border-dotted border-current",S.className,r),title:o?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onClick:b=>{b.preventDefault(),O(b);},target:"_blank",rel:"noopener noreferrer","aria-label":`Link to ${M}: ${S.label}`,children:[i&&jsxRuntime.jsx(ie,{url:g,faviconUrl:w}),jsxRuntime.jsx("span",{children:D}),_()]})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n,jsxRuntime.jsxs("span",{ref:P,"data-citation-id":m,"data-citation-instance":K,"data-url":g,"data-fetch-status":C,"data-variant":"bracket",className:chunk4HRWJSX6_cjs.o("cursor-pointer transition-colors",S.className,r),title:o?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onMouseDown:O,onClick:b=>b.stopPropagation(),role:"link","aria-label":`Link to ${M}: ${S.label}`,children:["[",i&&jsxRuntime.jsx(ie,{url:g,faviconUrl:w}),jsxRuntime.jsx("span",{className:"max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap",children:D}),_(),"]"]})]})});we.displayName="UrlCitationComponent";Ie.memo(we);var it=({className:e})=>jsxRuntime.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"square",shapeRendering:"crispEdges",className:e,children:[jsxRuntime.jsx("path",{d:"M7 3 L3 3 L3 21 L7 21"}),jsxRuntime.jsx("path",{d:"M17 3 L21 3 L21 21 L17 21"})]}),Q=({className:e})=>jsxRuntime.jsx("svg",{className:chunk4HRWJSX6_cjs.h("w-[0.7em] h-[0.7em]",e),viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"})}),ce=({className:e})=>jsxRuntime.jsx("svg",{className:chunk4HRWJSX6_cjs.h("w-[0.7em] h-[0.7em]",e),viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"})}),de=({className:e})=>jsxRuntime.jsxs("svg",{className:chunk4HRWJSX6_cjs.h("w-[0.7em] h-[0.7em] animate-spin",e),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[jsxRuntime.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),jsxRuntime.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]});function st(...e){return e.filter(Boolean).join(" ")}var Ee=R__namespace.Root,_e=R__namespace.Trigger;var ue=Ie__namespace.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},a)=>jsxRuntime.jsx(R__namespace.Portal,{children:jsxRuntime.jsx(R__namespace.Content,{ref:a,align:t,sideOffset:n,className:st("z-50 max-w-sm rounded-md border bg-white p-1 shadow-md outline-none","border-gray-200 dark:border-gray-700 dark:bg-gray-900","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2","data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2","data-[side=top]:slide-in-from-bottom-2",e),...r})}));ue.displayName=R__namespace.Content.displayName;function Ve(e,t,n=(r,a)=>r===a){let r=e.length,a=t.length;if(r===0&&a===0)return [];if(r===0)return [{value:t.join(""),added:true,count:t.length}];if(a===0)return [{value:e.join(""),removed:true,count:e.length}];let o=0;for(;o<r&&o<a&&n(e[o],t[o]);)o++;let i=0;for(;i<r-o&&i<a-o&&n(e[r-1-i],t[a-1-i]);)i++;let d=e.slice(o,r-i),s=t.slice(o,a-i);if(d.length===0&&s.length===0)return [{value:e.join(""),count:e.length}];let l=lt(d,s,n),u=[];return o>0&&u.push({value:e.slice(0,o).join(""),count:o}),u.push(...l),i>0&&u.push({value:e.slice(r-i).join(""),count:i}),Te(u)}function lt(e,t,n){let r=e.length,a=t.length,o=r+a,i={1:0},d=[];e:for(let s=0;s<=o;s++){d.push({...i});for(let l=-s;l<=s;l+=2){let u;l===-s||l!==s&&i[l-1]<i[l+1]?u=i[l+1]:u=i[l-1]+1;let p=u-l;for(;u<r&&p<a&&n(e[u],t[p]);)u++,p++;if(i[l]=u,u>=r&&p>=a)break e}}return ct(d,e,t)}function ct(e,t,n){let r=[],a=t.length,o=n.length;for(let i=e.length-1;i>=0;i--){let d=e[i],s=a-o,l;s===-i||s!==i&&d[s-1]<d[s+1]?l=s+1:l=s-1;let u=d[l]??0,p=u-l;for(;a>u&&o>p;)a--,o--,r.unshift({value:t[a],count:1});i>0&&(a===u?(o--,r.unshift({value:n[o],added:true,count:1})):(a--,r.unshift({value:t[a],removed:true,count:1})));}return r}function Te(e){if(e.length===0)return [];let t=[];for(let n of e){let r=t[t.length-1];r&&r.added===n.added&&r.removed===n.removed?(r.value+=n.value,r.count=(r.count||1)+(n.count||1)):t.push({...n});}return t}function Le(e){if(!e)return [];let t=[],n="";for(let r=0;r<e.length;r++){let a=e[r];n+=a,a===`
|
|
2
2
|
`&&(t.push(n),n="");}return n.length>0&&t.push(n),t}var De="a-zA-Z0-9_\\u00AD\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF",dt=new RegExp(`[${De}]+|\\s+|[^${De}]`,"gu");function Re(e){return e?e.match(dt)||[]:[]}function Be(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return e.slice(0,n)}function pe(e,t){let n=0;for(;n<e.length&&n<t.length&&e[e.length-1-n]===t[t.length-1-n];)n++;return e.slice(e.length-n)}function ut(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.removed&&e[n+1]?.added){let a=r,o=e[n+1],d=Be(a.value,o.value).match(/^\s*/)?.[0]||"",s=a.value.slice(d.length),l=o.value.slice(d.length),p=pe(s,l).match(/\s*$/)?.[0]||"";d&&t.push({value:d,count:1});let h=a.value.slice(d.length,a.value.length-p.length),P=o.value.slice(d.length,o.value.length-p.length);h&&t.push({value:h,removed:true,count:1}),P&&t.push({value:P,added:true,count:1}),p&&t.push({value:p,count:1}),n++;continue}if(r.added&&n>0&&!e[n-1].added&&!e[n-1].removed){let a=t[t.length-1];if(a&&!a.added&&!a.removed){let o=r.value.match(/^\s*/)?.[0]||"",i=a.value.match(/\s*$/)?.[0]||"";if(o&&i){let d=pe(i,o);if(d){t.push({value:r.value.slice(d.length),added:true,count:1});continue}}}}if(r.removed&&!e[n+1]?.added&&n>0&&!e[n-1]?.added&&!e[n-1]?.removed){let a=t[t.length-1],o=e[n+1];if(a&&o&&!o.added&&!o.removed){let i=r.value.match(/^\s*/)?.[0]||"",d=r.value.match(/\s*$/)?.[0]||"",s=a.value.match(/\s*$/)?.[0]||"",l=o.value.match(/^\s*/)?.[0]||"";if(i&&s&&pe(s,i).length===i.length){t.push({value:r.value.slice(i.length),removed:true,count:1});continue}if(d&&l&&Be(d,l).length===d.length){t.push({value:r.value.slice(0,-d.length)||r.value,removed:true,count:1});continue}}}t.push({...r});}return Te(t)}function Ue(e,t){let n=Le(e),r=Le(t);return Ve(n,r)}function We(e,t){let n=Re(e),r=Re(t),a=Ve(n,r);return ut(a)}var Ae=(e="",t="")=>Ie.useMemo(()=>{let n=(e||"").trim().replace(/\r\n/g,`
|
|
3
3
|
`),r=(t||"").trim().replace(/\r\n/g,`
|
|
4
|
-
`),a=Ue(n,r),o=[],i=false,d=0;for(let u=0;u<a.length;u++){let p=a[u],h=a[u+1];if(p.removed&&h&&h.added){let P=We(p.value,h.value);o.push({type:"modified",parts:P}),i=true,d+=Math.abs(p.value.length-h.value.length),u++;}else p.added||p.removed?(o.push({type:p.added?"added":"removed",parts:[{value:p.value,added:p.added,removed:p.removed}]}),i=true,d+=p.value.length):o.push({type:"unchanged",parts:[{value:p.value}]});}let s=Math.max(n.length,r.length),l=s===0?1:1-d/s;return {diffResult:o,hasDiff:i,similarity:l,isHighVariance:l<.6}},[e,t]);function xt(e){switch(e){case "chip":case "text":case "brackets":return "keySpan";default:return "number"}}function ht(e){return e.replace(/^\[+\s*/,"").replace(/\s*\]+$/,"")}function vt(e,t,n){if(t==="indicator")return "";if(t==="keySpan"){let r=e.keySpan?.toString()||e.citationNumber?.toString()||n||"1";return ht(r)}return e.citationNumber?.toString()||"1"}function Ct(e){return e.isVerified&&!e.isPartialMatch?"Verified":e.isPartialMatch?"Partial Match":e.isMiss?"Not Found":e.isPending?"Verifying...":""}function bt(e){let t=e?.status;if(!e||!t)return {isVerified:false,isMiss:false,isPartialMatch:false,isPending:false};let n=t==="not_found",r=t==="pending"||t==="loading",a=t==="partial_text_found"||t==="found_on_other_page"||t==="found_on_other_line"||t==="first_word_found";return {isVerified:t==="found"||t==="found_key_span_only"||t==="found_phrase_missed_value"||a,isMiss:n,isPartialMatch:a,isPending:r}}function yt({src:e,alt:t,onClose:n}){return Ie.useEffect(()=>{let r=a=>{a.key==="Escape"&&n();};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[n]),reactDom.createPortal(jsxRuntime.jsx("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center bg-black/80 backdrop-blur-sm animate-in fade-in-0",onClick:n,role:"dialog","aria-modal":"true","aria-label":"Full size verification image",children:jsxRuntime.jsx("div",{className:"relative max-w-[95vw] max-h-[95vh] cursor-zoom-out",children:jsxRuntime.jsx("img",{src:e,alt:t,className:"max-w-full max-h-[95vh] object-contain rounded-lg shadow-2xl",draggable:false})})}),document.body)}var kt=()=>jsxRuntime.jsx("span",{className:"inline-flex relative ml-0.5 text-green-600 dark:text-green-500","aria-hidden":"true",children:jsxRuntime.jsx(Q,{})}),Pt=()=>jsxRuntime.jsx("span",{className:"inline-flex relative ml-0.5 text-amber-600 dark:text-amber-500","aria-hidden":"true",children:jsxRuntime.jsx(Q,{})}),Nt=()=>jsxRuntime.jsx("span",{className:"inline-flex ml-1 text-gray-400 dark:text-gray-500","aria-hidden":"true",children:jsxRuntime.jsx(de,{})}),wt=()=>jsxRuntime.jsx("span",{className:"inline-flex relative ml-0.5 text-red-500 dark:text-red-400","aria-hidden":"true",children:jsxRuntime.jsx(ce,{})});function Mt({citation:e,verification:t,status:n,onImageClick:r}){let a=t?.verificationImageBase64,{isMiss:o,isPartialMatch:i}=n;if(a)return jsxRuntime.jsxs("div",{className:"p-1",children:[jsxRuntime.jsx("button",{type:"button",className:"block cursor-zoom-in",onClick:u=>{u.preventDefault(),u.stopPropagation(),r?.();},"aria-label":"Click to view full size",children:jsxRuntime.jsx("img",{src:t.verificationImageBase64,alt:"Citation verification",className:"max-w-[700px] max-h-[500px] w-auto h-auto object-contain rounded bg-gray-50 dark:bg-gray-800",loading:"lazy"})}),(o||i)&&jsxRuntime.jsx(Oe,{citation:e,verification:t,status:n})]});let d=Ct(n),s=t?.verifiedMatchSnippet,l=t?.verifiedPageNumber;return !s&&!d?null:jsxRuntime.jsxs("div",{className:"p-3 flex flex-col gap-2 min-w-[200px] max-w-[400px]",children:[d&&jsxRuntime.jsx("span",{className:chunk3GR7VKUJ_cjs.g("text-xs font-medium",n.isVerified&&!n.isPartialMatch&&"text-green-600 dark:text-green-500",n.isPartialMatch&&"text-amber-600 dark:text-amber-500",n.isMiss&&"text-red-600 dark:text-red-500",n.isPending&&"text-gray-500 dark:text-gray-400"),children:d}),s&&jsxRuntime.jsxs("span",{className:"text-sm text-gray-700 dark:text-gray-300 italic",children:['"',t.verifiedMatchSnippet,'"']}),l&&l>0&&jsxRuntime.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:["Page ",l]}),(o||i)&&jsxRuntime.jsx(Oe,{citation:e,verification:t,status:n})]})}function Oe({citation:e,verification:t,status:n}){let{isMiss:r,isPartialMatch:a}=n,o=e.fullPhrase||e.keySpan?.toString()||"",i=t?.verifiedMatchSnippet||"",{diffResult:d,hasDiff:s,isHighVariance:l}=Ae(o,i);if(!r&&!a)return null;let u=e.lineIds,p=t?.verifiedLineIds,h=u&&p&&JSON.stringify(u)!==JSON.stringify(p),P=e.pageNumber,g=t?.verifiedPageNumber,A=P!=null&&g!=null&&P!==g;return r?jsxRuntime.jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Expected"}),jsxRuntime.jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Found"}),jsxRuntime.jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] text-amber-600 dark:text-amber-500 italic",children:"Not found in source"})]})]}):jsxRuntime.jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&i&&s?jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Diff"}),jsxRuntime.jsx("div",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:l?jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Expected:"," "]}),jsxRuntime.jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Found:"," "]}),jsxRuntime.jsx("span",{className:"text-green-600 dark:text-green-400",children:i.length>100?i.slice(0,100)+"\u2026":i})]})]}):d.map((N,C)=>jsxRuntime.jsx("span",{children:N.parts.map((w,B)=>{let v=`p-${C}-${B}`;return w.removed?jsxRuntime.jsx("span",{className:"bg-red-200 dark:bg-red-900/50 text-red-700 dark:text-red-300 line-through",title:"Expected text",children:w.value},v):w.added?jsxRuntime.jsx("span",{className:"bg-green-200 dark:bg-green-900/50 text-green-700 dark:text-green-300",title:"Actual text found",children:w.value},v):jsxRuntime.jsx("span",{children:w.value},v)})},`block-${C}`))})]}):o&&!s?jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Text"}),jsxRuntime.jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:o.length>100?o.slice(0,100)+"\u2026":o})]}):null,A&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Page"}),jsxRuntime.jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:P})," \u2192 ",g]})]}),h&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Line"}),jsxRuntime.jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:u?.join(", ")})," \u2192 ",p?.join(", ")]})]})]})}var xe=Ie.forwardRef(({citation:e,children:t,className:n,fallbackDisplay:r,verification:a,isLoading:o=false,variant:i="brackets",content:d,eventHandlers:s,behaviorConfig:l,isMobile:u=false,renderIndicator:p,renderContent:h,popoverPosition:P="top",renderPopoverContent:g},A)=>{let N=Ie.useMemo(()=>d||xt(i),[d,i]),[C,w]=Ie.useState(false),[B,v]=Ie.useState(null),m=Ie.useMemo(()=>chunk3GR7VKUJ_cjs.h(e),[e]),K=Ie.useMemo(()=>chunk3GR7VKUJ_cjs.j(m),[m]),M=Ie.useMemo(()=>bt(a),[a]),{isMiss:L,isPartialMatch:D,isVerified:S,isPending:Z}=M,ee=5e3,[te,G]=Ie.useState(false),T=Ie.useRef(null),O=a?.verificationImageBase64||a?.status==="found"||a?.status==="found_key_span_only"||a?.status==="found_phrase_missed_value"||a?.status==="not_found"||a?.status==="partial_text_found"||a?.status==="found_on_other_page"||a?.status==="found_on_other_line"||a?.status==="first_word_found",y=(o||Z)&&!O&&!te;Ie.useEffect(()=>(T.current&&(clearTimeout(T.current),T.current=null),(o||Z)&&!O?(G(false),T.current=setTimeout(()=>{G(true);},ee)):G(false),()=>{T.current&&clearTimeout(T.current);}),[o,Z,O]);let E=Ie.useMemo(()=>vt(e,N,r),[e,N,r]),_=Ie.useCallback(()=>({citation:e,citationKey:m,verification:a??null,isTooltipExpanded:C,isImageExpanded:!!B,hasImage:!!a?.verificationImageBase64}),[e,m,a,C,B]),b=Ie.useCallback(x=>{x.setImageExpanded!==void 0&&(typeof x.setImageExpanded=="string"?v(x.setImageExpanded):x.setImageExpanded===true&&a?.verificationImageBase64?v(a.verificationImageBase64):x.setImageExpanded===false&&v(null));},[a?.verificationImageBase64]),ze=Ie.useCallback(x=>{x.preventDefault(),x.stopPropagation();let X=_();if(l?.onClick){let re=l.onClick(X,x);re&&typeof re=="object"&&b(re),s?.onClick?.(e,m,x);return}if(s?.onClick){s.onClick(e,m,x);return}a?.verificationImageBase64&&v(a.verificationImageBase64);},[l,s,e,m,a?.verificationImageBase64,_,b]),he=150,$=Ie.useRef(null),ne=Ie.useRef(false),U=Ie.useCallback(()=>{$.current&&(clearTimeout($.current),$.current=null);},[]),je=Ie.useCallback(()=>{U(),w(true),l?.onHover?.onEnter&&l.onHover.onEnter(_()),s?.onMouseEnter?.(e,m);},[s,l,e,m,_,U]),Fe=Ie.useCallback(()=>{U(),$.current=setTimeout(()=>{ne.current||(w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m));},he);},[s,l,e,m,_,U]),He=Ie.useCallback(()=>{U(),ne.current=true;},[U]),Ke=Ie.useCallback(()=>{ne.current=false,U(),$.current=setTimeout(()=>{w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m);},he);},[s,l,e,m,_,U]);Ie.useEffect(()=>()=>{$.current&&clearTimeout($.current);},[]);let Ze=Ie.useCallback(x=>{u&&(x.preventDefault(),x.stopPropagation(),s?.onTouchEnd?.(e,m,x));},[s,e,m,u]);if(r!=null&&N==="keySpan"&&L)return jsxRuntime.jsx("span",{className:chunk3GR7VKUJ_cjs.g("text-gray-400 dark:text-gray-500",n),children:r});let ae=chunk3GR7VKUJ_cjs.g((S||D)&&i==="brackets"&&"text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:underline",L&&"opacity-70 line-through text-gray-400 dark:text-gray-500",y&&"text-gray-500 dark:text-gray-400"),z=()=>p?p(M):y?jsxRuntime.jsx(Nt,{}):L?jsxRuntime.jsx(wt,{}):D?jsxRuntime.jsx(Pt,{}):S?jsxRuntime.jsx(kt,{}):null,ve=()=>{if(h)return h({citation:e,status:M,citationKey:m,displayText:E,isMergedDisplay:N==="keySpan"});if(N==="indicator")return jsxRuntime.jsx("span",{children:z()});if(i==="chip"){let x=chunk3GR7VKUJ_cjs.g(S&&!D&&!y&&"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",D&&!y&&"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",L&&!y&&"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400 line-through",y&&"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",!S&&!L&&!y&&"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400");return jsxRuntime.jsxs("span",{className:chunk3GR7VKUJ_cjs.g("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm font-medium",x),children:[jsxRuntime.jsx("span",{className:"max-w-60 overflow-hidden text-ellipsis whitespace-nowrap",children:E}),z()]})}if(i==="superscript"){let x=chunk3GR7VKUJ_cjs.g(S&&!D&&!y&&"text-green-600 dark:text-green-500",D&&!y&&"text-amber-600 dark:text-amber-500",L&&!y&&"text-red-500 dark:text-red-400 line-through",y&&"text-gray-400 dark:text-gray-500",!S&&!L&&!y&&"text-blue-600 dark:text-blue-400");return jsxRuntime.jsxs("sup",{className:chunk3GR7VKUJ_cjs.g("text-xs font-medium transition-colors hover:underline",x),children:["[",E,z(),"]"]})}return i==="text"?jsxRuntime.jsxs("span",{className:ae,children:[E,z()]}):i==="minimal"?jsxRuntime.jsxs("span",{className:chunk3GR7VKUJ_cjs.g("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}):jsxRuntime.jsxs("span",{className:chunk3GR7VKUJ_cjs.g("inline-flex items-baseline gap-0.5 whitespace-nowrap","font-mono text-xs leading-tight","text-gray-500 dark:text-gray-400","transition-colors"),"aria-hidden":"true",children:["[",jsxRuntime.jsxs("span",{className:chunk3GR7VKUJ_cjs.g("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}),"]"]})},Ge=!(P==="hidden")&&a&&(a.verificationImageBase64||a.verifiedMatchSnippet),Xe=!!a?.verificationImageBase64,Ce=B?jsxRuntime.jsx(yt,{src:B,alt:"Citation verification - full size",onClose:()=>v(null)}):null,be={"data-citation-id":m,"data-citation-instance":K,className:chunk3GR7VKUJ_cjs.g("relative inline-flex items-baseline cursor-pointer","px-0.5 -mx-0.5 rounded-sm","transition-all duration-150","hover:bg-blue-500/10 dark:hover:bg-blue-400/10",Xe&&"hover:cursor-zoom-in",n),onMouseEnter:je,onMouseLeave:Fe,onClick:ze,onTouchEndCapture:u?Ze:void 0,"aria-label":E?`[${E}]`:void 0};if(Ge){let x=g?g({citation:e,verification:a??null,status:M}):jsxRuntime.jsx(Mt,{citation:e,verification:a??null,status:M,onImageClick:()=>{a?.verificationImageBase64&&v(a.verificationImageBase64);}});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t,jsxRuntime.jsxs(Ee,{open:C,children:[jsxRuntime.jsx(_e,{asChild:true,children:jsxRuntime.jsx("span",{ref:A,...be,children:ve()})}),jsxRuntime.jsx(ue,{side:P==="bottom"?"bottom":"top",onPointerDownOutside:X=>X.preventDefault(),onInteractOutside:X=>X.preventDefault(),onMouseEnter:He,onMouseLeave:Ke,children:x})]}),Ce]})}return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t,jsxRuntime.jsx("span",{ref:A,...be,children:ve()}),Ce]})});xe.displayName="CitationComponent";var St=Ie.memo(xe);Object.defineProperty(exports,"CITATION_X_PADDING",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.o}});Object.defineProperty(exports,"CITATION_Y_PADDING",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.p}});Object.defineProperty(exports,"classNames",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.n}});Object.defineProperty(exports,"generateCitationInstanceId",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.j}});Object.defineProperty(exports,"generateCitationKey",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.h}});Object.defineProperty(exports,"getCitationDisplayText",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.k}});Object.defineProperty(exports,"getCitationKeySpanText",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.m}});Object.defineProperty(exports,"getCitationNumber",{enumerable:true,get:function(){return chunk3GR7VKUJ_cjs.l}});exports.CheckIcon=Q;exports.CitationComponent=xe;exports.DeepCitationIcon=it;exports.MemoizedCitationComponent=St;exports.SpinnerIcon=de;exports.WarningIcon=ce;exports.extractDomain=le;exports.isBlockedStatus=Pe;exports.isErrorStatus=Ne;exports.isVerifiedStatus=rt;
|
|
4
|
+
`),a=Ue(n,r),o=[],i=false,d=0;for(let u=0;u<a.length;u++){let p=a[u],h=a[u+1];if(p.removed&&h&&h.added){let P=We(p.value,h.value);o.push({type:"modified",parts:P}),i=true,d+=Math.abs(p.value.length-h.value.length),u++;}else p.added||p.removed?(o.push({type:p.added?"added":"removed",parts:[{value:p.value,added:p.added,removed:p.removed}]}),i=true,d+=p.value.length):o.push({type:"unchanged",parts:[{value:p.value}]});}let s=Math.max(n.length,r.length),l=s===0?1:1-d/s;return {diffResult:o,hasDiff:i,similarity:l,isHighVariance:l<.6}},[e,t]);function xt(e){switch(e){case "chip":case "text":case "brackets":return "keySpan";default:return "number"}}function ht(e){return e.replace(/^\[+\s*/,"").replace(/\s*\]+$/,"")}function vt(e,t,n){if(t==="indicator")return "";if(t==="keySpan"){let r=e.keySpan?.toString()||e.citationNumber?.toString()||n||"1";return ht(r)}return e.citationNumber?.toString()||"1"}function Ct(e){return e.isVerified&&!e.isPartialMatch?"Verified":e.isPartialMatch?"Partial Match":e.isMiss?"Not Found":e.isPending?"Verifying...":""}function bt(e){let t=e?.status;if(!e||!t)return {isVerified:false,isMiss:false,isPartialMatch:false,isPending:false};let n=t==="not_found",r=t==="pending"||t==="loading",a=t==="partial_text_found"||t==="found_on_other_page"||t==="found_on_other_line"||t==="first_word_found";return {isVerified:t==="found"||t==="found_key_span_only"||t==="found_phrase_missed_value"||a,isMiss:n,isPartialMatch:a,isPending:r}}function yt({src:e,alt:t,onClose:n}){return Ie.useEffect(()=>{let r=a=>{a.key==="Escape"&&n();};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[n]),reactDom.createPortal(jsxRuntime.jsx("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center bg-black/80 backdrop-blur-sm animate-in fade-in-0",onClick:n,role:"dialog","aria-modal":"true","aria-label":"Full size verification image",children:jsxRuntime.jsx("div",{className:"relative max-w-[95vw] max-h-[95vh] cursor-zoom-out",children:jsxRuntime.jsx("img",{src:e,alt:t,className:"max-w-full max-h-[95vh] object-contain rounded-lg shadow-2xl",draggable:false})})}),document.body)}var kt=()=>jsxRuntime.jsx("span",{className:"inline-flex relative ml-0.5 text-green-600 dark:text-green-500","aria-hidden":"true",children:jsxRuntime.jsx(Q,{})}),Pt=()=>jsxRuntime.jsx("span",{className:"inline-flex relative ml-0.5 text-amber-600 dark:text-amber-500","aria-hidden":"true",children:jsxRuntime.jsx(Q,{})}),Nt=()=>jsxRuntime.jsx("span",{className:"inline-flex ml-1 text-gray-400 dark:text-gray-500","aria-hidden":"true",children:jsxRuntime.jsx(de,{})}),wt=()=>jsxRuntime.jsx("span",{className:"inline-flex relative ml-0.5 text-red-500 dark:text-red-400","aria-hidden":"true",children:jsxRuntime.jsx(ce,{})});function Mt({citation:e,verification:t,status:n,onImageClick:r}){let a=t?.verificationImageBase64,{isMiss:o,isPartialMatch:i}=n;if(a)return jsxRuntime.jsxs("div",{className:"p-1",children:[jsxRuntime.jsx("button",{type:"button",className:"block cursor-zoom-in",onClick:u=>{u.preventDefault(),u.stopPropagation(),r?.();},"aria-label":"Click to view full size",children:jsxRuntime.jsx("img",{src:t.verificationImageBase64,alt:"Citation verification",className:"max-w-[700px] max-h-[500px] w-auto h-auto object-contain rounded bg-gray-50 dark:bg-gray-800",loading:"lazy"})}),(o||i)&&jsxRuntime.jsx(Oe,{citation:e,verification:t,status:n})]});let d=Ct(n),s=t?.verifiedMatchSnippet,l=t?.verifiedPageNumber;return !s&&!d?null:jsxRuntime.jsxs("div",{className:"p-3 flex flex-col gap-2 min-w-[200px] max-w-[400px]",children:[d&&jsxRuntime.jsx("span",{className:chunk4HRWJSX6_cjs.h("text-xs font-medium",n.isVerified&&!n.isPartialMatch&&"text-green-600 dark:text-green-500",n.isPartialMatch&&"text-amber-600 dark:text-amber-500",n.isMiss&&"text-red-600 dark:text-red-500",n.isPending&&"text-gray-500 dark:text-gray-400"),children:d}),s&&jsxRuntime.jsxs("span",{className:"text-sm text-gray-700 dark:text-gray-300 italic",children:['"',t.verifiedMatchSnippet,'"']}),l&&l>0&&jsxRuntime.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:["Page ",l]}),(o||i)&&jsxRuntime.jsx(Oe,{citation:e,verification:t,status:n})]})}function Oe({citation:e,verification:t,status:n}){let{isMiss:r,isPartialMatch:a}=n,o=e.fullPhrase||e.keySpan?.toString()||"",i=t?.verifiedMatchSnippet||"",{diffResult:d,hasDiff:s,isHighVariance:l}=Ae(o,i);if(!r&&!a)return null;let u=e.lineIds,p=t?.verifiedLineIds,h=u&&p&&JSON.stringify(u)!==JSON.stringify(p),P=e.pageNumber,g=t?.verifiedPageNumber,A=P!=null&&g!=null&&P!==g;return r?jsxRuntime.jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Expected"}),jsxRuntime.jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Found"}),jsxRuntime.jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] text-amber-600 dark:text-amber-500 italic",children:"Not found in source"})]})]}):jsxRuntime.jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&i&&s?jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Diff"}),jsxRuntime.jsx("div",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:l?jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Expected:"," "]}),jsxRuntime.jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Found:"," "]}),jsxRuntime.jsx("span",{className:"text-green-600 dark:text-green-400",children:i.length>100?i.slice(0,100)+"\u2026":i})]})]}):d.map((N,C)=>jsxRuntime.jsx("span",{children:N.parts.map((w,B)=>{let v=`p-${C}-${B}`;return w.removed?jsxRuntime.jsx("span",{className:"bg-red-200 dark:bg-red-900/50 text-red-700 dark:text-red-300 line-through",title:"Expected text",children:w.value},v):w.added?jsxRuntime.jsx("span",{className:"bg-green-200 dark:bg-green-900/50 text-green-700 dark:text-green-300",title:"Actual text found",children:w.value},v):jsxRuntime.jsx("span",{children:w.value},v)})},`block-${C}`))})]}):o&&!s?jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Text"}),jsxRuntime.jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:o.length>100?o.slice(0,100)+"\u2026":o})]}):null,A&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Page"}),jsxRuntime.jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:P})," \u2192 ",g]})]}),h&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Line"}),jsxRuntime.jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsxRuntime.jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:u?.join(", ")})," \u2192 ",p?.join(", ")]})]})]})}var xe=Ie.forwardRef(({citation:e,children:t,className:n,fallbackDisplay:r,verification:a,isLoading:o=false,variant:i="brackets",content:d,eventHandlers:s,behaviorConfig:l,isMobile:u=false,renderIndicator:p,renderContent:h,popoverPosition:P="top",renderPopoverContent:g},A)=>{let N=Ie.useMemo(()=>d||xt(i),[d,i]),[C,w]=Ie.useState(false),[B,v]=Ie.useState(null),m=Ie.useMemo(()=>chunk4HRWJSX6_cjs.i(e),[e]),K=Ie.useMemo(()=>chunk4HRWJSX6_cjs.k(m),[m]),M=Ie.useMemo(()=>bt(a),[a]),{isMiss:L,isPartialMatch:D,isVerified:S,isPending:Z}=M,ee=5e3,[te,G]=Ie.useState(false),T=Ie.useRef(null),O=a?.verificationImageBase64||a?.status==="found"||a?.status==="found_key_span_only"||a?.status==="found_phrase_missed_value"||a?.status==="not_found"||a?.status==="partial_text_found"||a?.status==="found_on_other_page"||a?.status==="found_on_other_line"||a?.status==="first_word_found",y=(o||Z)&&!O&&!te;Ie.useEffect(()=>(T.current&&(clearTimeout(T.current),T.current=null),(o||Z)&&!O?(G(false),T.current=setTimeout(()=>{G(true);},ee)):G(false),()=>{T.current&&clearTimeout(T.current);}),[o,Z,O]);let E=Ie.useMemo(()=>vt(e,N,r),[e,N,r]),_=Ie.useCallback(()=>({citation:e,citationKey:m,verification:a??null,isTooltipExpanded:C,isImageExpanded:!!B,hasImage:!!a?.verificationImageBase64}),[e,m,a,C,B]),b=Ie.useCallback(x=>{x.setImageExpanded!==void 0&&(typeof x.setImageExpanded=="string"?v(x.setImageExpanded):x.setImageExpanded===true&&a?.verificationImageBase64?v(a.verificationImageBase64):x.setImageExpanded===false&&v(null));},[a?.verificationImageBase64]),ze=Ie.useCallback(x=>{x.preventDefault(),x.stopPropagation();let X=_();if(l?.onClick){let re=l.onClick(X,x);re&&typeof re=="object"&&b(re),s?.onClick?.(e,m,x);return}if(s?.onClick){s.onClick(e,m,x);return}a?.verificationImageBase64&&v(a.verificationImageBase64);},[l,s,e,m,a?.verificationImageBase64,_,b]),he=150,$=Ie.useRef(null),ne=Ie.useRef(false),U=Ie.useCallback(()=>{$.current&&(clearTimeout($.current),$.current=null);},[]),je=Ie.useCallback(()=>{U(),w(true),l?.onHover?.onEnter&&l.onHover.onEnter(_()),s?.onMouseEnter?.(e,m);},[s,l,e,m,_,U]),Fe=Ie.useCallback(()=>{U(),$.current=setTimeout(()=>{ne.current||(w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m));},he);},[s,l,e,m,_,U]),He=Ie.useCallback(()=>{U(),ne.current=true;},[U]),Ke=Ie.useCallback(()=>{ne.current=false,U(),$.current=setTimeout(()=>{w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m);},he);},[s,l,e,m,_,U]);Ie.useEffect(()=>()=>{$.current&&clearTimeout($.current);},[]);let Ze=Ie.useCallback(x=>{u&&(x.preventDefault(),x.stopPropagation(),s?.onTouchEnd?.(e,m,x));},[s,e,m,u]);if(r!=null&&N==="keySpan"&&L)return jsxRuntime.jsx("span",{className:chunk4HRWJSX6_cjs.h("text-gray-400 dark:text-gray-500",n),children:r});let ae=chunk4HRWJSX6_cjs.h((S||D)&&i==="brackets"&&"text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:underline",L&&"opacity-70 line-through text-gray-400 dark:text-gray-500",y&&"text-gray-500 dark:text-gray-400"),z=()=>p?p(M):y?jsxRuntime.jsx(Nt,{}):L?jsxRuntime.jsx(wt,{}):D?jsxRuntime.jsx(Pt,{}):S?jsxRuntime.jsx(kt,{}):null,ve=()=>{if(h)return h({citation:e,status:M,citationKey:m,displayText:E,isMergedDisplay:N==="keySpan"});if(N==="indicator")return jsxRuntime.jsx("span",{children:z()});if(i==="chip"){let x=chunk4HRWJSX6_cjs.h(S&&!D&&!y&&"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",D&&!y&&"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",L&&!y&&"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400 line-through",y&&"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",!S&&!L&&!y&&"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400");return jsxRuntime.jsxs("span",{className:chunk4HRWJSX6_cjs.h("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm font-medium",x),children:[jsxRuntime.jsx("span",{className:"max-w-60 overflow-hidden text-ellipsis whitespace-nowrap",children:E}),z()]})}if(i==="superscript"){let x=chunk4HRWJSX6_cjs.h(S&&!D&&!y&&"text-green-600 dark:text-green-500",D&&!y&&"text-amber-600 dark:text-amber-500",L&&!y&&"text-red-500 dark:text-red-400 line-through",y&&"text-gray-400 dark:text-gray-500",!S&&!L&&!y&&"text-blue-600 dark:text-blue-400");return jsxRuntime.jsxs("sup",{className:chunk4HRWJSX6_cjs.h("text-xs font-medium transition-colors hover:underline",x),children:["[",E,z(),"]"]})}return i==="text"?jsxRuntime.jsxs("span",{className:ae,children:[E,z()]}):i==="minimal"?jsxRuntime.jsxs("span",{className:chunk4HRWJSX6_cjs.h("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}):jsxRuntime.jsxs("span",{className:chunk4HRWJSX6_cjs.h("inline-flex items-baseline gap-0.5 whitespace-nowrap","font-mono text-xs leading-tight","text-gray-500 dark:text-gray-400","transition-colors"),"aria-hidden":"true",children:["[",jsxRuntime.jsxs("span",{className:chunk4HRWJSX6_cjs.h("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}),"]"]})},Ge=!(P==="hidden")&&a&&(a.verificationImageBase64||a.verifiedMatchSnippet),Xe=!!a?.verificationImageBase64,Ce=B?jsxRuntime.jsx(yt,{src:B,alt:"Citation verification - full size",onClose:()=>v(null)}):null,be={"data-citation-id":m,"data-citation-instance":K,className:chunk4HRWJSX6_cjs.h("relative inline-flex items-baseline cursor-pointer","px-0.5 -mx-0.5 rounded-sm","transition-all duration-150","hover:bg-blue-500/10 dark:hover:bg-blue-400/10",Xe&&"hover:cursor-zoom-in",n),onMouseEnter:je,onMouseLeave:Fe,onClick:ze,onTouchEndCapture:u?Ze:void 0,"aria-label":E?`[${E}]`:void 0};if(Ge){let x=g?g({citation:e,verification:a??null,status:M}):jsxRuntime.jsx(Mt,{citation:e,verification:a??null,status:M,onImageClick:()=>{a?.verificationImageBase64&&v(a.verificationImageBase64);}});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t,jsxRuntime.jsxs(Ee,{open:C,children:[jsxRuntime.jsx(_e,{asChild:true,children:jsxRuntime.jsx("span",{ref:A,...be,children:ve()})}),jsxRuntime.jsx(ue,{side:P==="bottom"?"bottom":"top",onPointerDownOutside:X=>X.preventDefault(),onInteractOutside:X=>X.preventDefault(),onMouseEnter:He,onMouseLeave:Ke,children:x})]}),Ce]})}return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t,jsxRuntime.jsx("span",{ref:A,...be,children:ve()}),Ce]})});xe.displayName="CitationComponent";var St=Ie.memo(xe);Object.defineProperty(exports,"CITATION_X_PADDING",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.p}});Object.defineProperty(exports,"CITATION_Y_PADDING",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.q}});Object.defineProperty(exports,"classNames",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.o}});Object.defineProperty(exports,"generateCitationInstanceId",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.k}});Object.defineProperty(exports,"generateCitationKey",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.i}});Object.defineProperty(exports,"getCitationDisplayText",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.l}});Object.defineProperty(exports,"getCitationKeySpanText",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.n}});Object.defineProperty(exports,"getCitationNumber",{enumerable:true,get:function(){return chunk4HRWJSX6_cjs.m}});exports.CheckIcon=Q;exports.CitationComponent=xe;exports.DeepCitationIcon=it;exports.MemoizedCitationComponent=St;exports.SpinnerIcon=de;exports.WarningIcon=ce;exports.extractDomain=le;exports.isBlockedStatus=Pe;exports.isErrorStatus=Ne;exports.isVerifiedStatus=rt;
|
package/lib/react/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {i,k,o,h}from'../chunk-ETIDLMKZ.js';export{p as CITATION_X_PADDING,q as CITATION_Y_PADDING,o as classNames,k as generateCitationInstanceId,i as generateCitationKey,l as getCitationDisplayText,n as getCitationKeySpanText,m as getCitationNumber}from'../chunk-ETIDLMKZ.js';import'../chunk-O2XFH626.js';import*as Ie from'react';import {forwardRef,useMemo,useCallback,memo,useState,useRef,useEffect}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {createPortal}from'react-dom';import*as R from'@radix-ui/react-popover';function le(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return e.replace(/^https?:\/\/(www\.)?/,"").split("/")[0]}}function ye(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}function at(e){try{let t=new URL(e),n=t.pathname+t.search;return n==="/"?"":n}catch{return ""}}var ke={verified:{icon:"\u2713",label:"Verified",className:"text-green-600 dark:text-green-500"},partial:{icon:"~",label:"Partial match",className:"text-amber-600 dark:text-amber-500"},pending:{icon:"\u2026",label:"Verifying",className:"text-gray-400 dark:text-gray-500"},blocked_antibot:{icon:"\u{1F6E1}",label:"Blocked by anti-bot",className:"text-amber-600 dark:text-amber-500"},blocked_login:{icon:"\u{1F512}",label:"Login required",className:"text-amber-600 dark:text-amber-500"},blocked_paywall:{icon:"\u{1F4B3}",label:"Paywall",className:"text-amber-600 dark:text-amber-500"},blocked_geo:{icon:"\u{1F30D}",label:"Geo-restricted",className:"text-amber-600 dark:text-amber-500"},blocked_rate_limit:{icon:"\u23F1",label:"Rate limited",className:"text-amber-600 dark:text-amber-500"},error_timeout:{icon:"\u23F0",label:"Timed out",className:"text-red-500 dark:text-red-400"},error_not_found:{icon:"404",label:"Not found",className:"text-red-500 dark:text-red-400"},error_server:{icon:"\u26A0",label:"Server error",className:"text-red-500 dark:text-red-400"},error_network:{icon:"\u26A1",label:"Network error",className:"text-red-500 dark:text-red-400"},unknown:{icon:"?",label:"Unknown status",className:"text-gray-400 dark:text-gray-500"}};function Pe(e){return e.startsWith("blocked_")}function Ne(e){return e.startsWith("error_")}function rt(e){return e==="verified"||e==="partial"}var ot=({status:e,errorMessage:t})=>{let n=ke[e];return jsx("span",{className:o("inline-flex items-center gap-1",n.className),title:t||n.label,"aria-label":n.label,children:jsx("span",{className:"text-[0.9em]","aria-hidden":"true",children:n.icon})})},ie=({url:e,faviconUrl:t})=>{let n=le(e),r=t||`https://www.google.com/s2/favicons?domain=${n}&sz=16`;return jsx("img",{src:r,alt:"",className:"w-3.5 h-3.5 rounded-sm",width:14,height:14,loading:"lazy",onError:a=>{a.target.style.display="none";}})},we=forwardRef(({urlMeta:e,citation:t,children:n,className:r,variant:a="chip",showFullUrlOnHover:o$1=true,showFavicon:i$1=true,showTitle:d=false,maxDisplayLength:s=30,renderBlockedIndicator:l,onUrlClick:u,eventHandlers:p,preventTooltips:h=false},P)=>{let{url:g,domain:A,title:N,fetchStatus:C,faviconUrl:w,errorMessage:B}=e,v=useMemo(()=>t||{value:g,fullPhrase:N||g},[t,g,N]),m=useMemo(()=>i(v),[v]),K=useMemo(()=>k(m),[m]),M=useMemo(()=>A||le(g),[A,g]),L=useMemo(()=>at(g),[g]),D=useMemo(()=>{if(d&&N)return ye(N,s);let b=L?ye(L,s-M.length-1):"";return b?`${M}${b}`:M},[d,N,M,L,s]),S=ke[C],Z=Pe(C),ee=Ne(C),te=C==="verified",G=C==="partial",T=C==="pending",O=useCallback(b=>{b.preventDefault(),b.stopPropagation(),u?u(g,b):window.open(g,"_blank","noopener,noreferrer"),p?.onClick?.(v,m,b);},[u,g,p,v,m]),y=useCallback(()=>{p?.onMouseEnter?.(v,m);},[p,v,m]),E=useCallback(()=>{p?.onMouseLeave?.(v,m);},[p,v,m]),_=()=>Z||ee?l?l(C,B):jsx(ot,{status:C,errorMessage:B}):te?jsx("span",{className:"text-[0.85em] text-green-600 dark:text-green-500","aria-hidden":"true",title:"Verified",children:"\u2713"}):G?jsx("span",{className:"text-[0.85em] text-amber-600 dark:text-amber-500","aria-hidden":"true",title:"Partial match",children:"~"}):T?jsx("span",{className:"opacity-70","aria-hidden":"true",children:"\u2026"}):null;return a==="chip"?jsxs(Fragment,{children:[n,jsxs("span",{ref:P,"data-citation-id":m,"data-citation-instance":K,"data-url":g,"data-fetch-status":C,"data-variant":"chip",className:o("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm cursor-pointer transition-colors no-underline","bg-blue-100 dark:bg-blue-900/30",S.className,r),title:o$1?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onMouseDown:O,onClick:b=>b.stopPropagation(),role:"link","aria-label":`Link to ${M}: ${S.label}`,children:[i$1&&jsx(ie,{url:g,faviconUrl:w}),jsx("span",{className:"max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap",children:D}),_()]})]}):a==="inline"?jsxs(Fragment,{children:[n,jsxs("a",{ref:P,href:g,"data-citation-id":m,"data-citation-instance":K,"data-fetch-status":C,"data-variant":"inline",className:o("inline-flex items-center gap-1 cursor-pointer transition-colors no-underline border-b border-dotted border-current",S.className,r),title:o$1?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onClick:b=>{b.preventDefault(),O(b);},target:"_blank",rel:"noopener noreferrer","aria-label":`Link to ${M}: ${S.label}`,children:[i$1&&jsx(ie,{url:g,faviconUrl:w}),jsx("span",{children:D}),_()]})]}):jsxs(Fragment,{children:[n,jsxs("span",{ref:P,"data-citation-id":m,"data-citation-instance":K,"data-url":g,"data-fetch-status":C,"data-variant":"bracket",className:o("cursor-pointer transition-colors",S.className,r),title:o$1?g:void 0,onMouseEnter:h?void 0:y,onMouseLeave:h?void 0:E,onMouseDown:O,onClick:b=>b.stopPropagation(),role:"link","aria-label":`Link to ${M}: ${S.label}`,children:["[",i$1&&jsx(ie,{url:g,faviconUrl:w}),jsx("span",{className:"max-w-[200px] overflow-hidden text-ellipsis whitespace-nowrap",children:D}),_(),"]"]})]})});we.displayName="UrlCitationComponent";memo(we);var it=({className:e})=>jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"square",shapeRendering:"crispEdges",className:e,children:[jsx("path",{d:"M7 3 L3 3 L3 21 L7 21"}),jsx("path",{d:"M17 3 L21 3 L21 21 L17 21"})]}),Q=({className:e})=>jsx("svg",{className:h("w-[0.7em] h-[0.7em]",e),viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:jsx("path",{d:"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"})}),ce=({className:e})=>jsx("svg",{className:h("w-[0.7em] h-[0.7em]",e),viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:jsx("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"})}),de=({className:e})=>jsxs("svg",{className:h("w-[0.7em] h-[0.7em] animate-spin",e),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]});function st(...e){return e.filter(Boolean).join(" ")}var Ee=R.Root,_e=R.Trigger;var ue=Ie.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},a)=>jsx(R.Portal,{children:jsx(R.Content,{ref:a,align:t,sideOffset:n,className:st("z-50 max-w-sm rounded-md border bg-white p-1 shadow-md outline-none","border-gray-200 dark:border-gray-700 dark:bg-gray-900","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2","data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2","data-[side=top]:slide-in-from-bottom-2",e),...r})}));ue.displayName=R.Content.displayName;function Ve(e,t,n=(r,a)=>r===a){let r=e.length,a=t.length;if(r===0&&a===0)return [];if(r===0)return [{value:t.join(""),added:true,count:t.length}];if(a===0)return [{value:e.join(""),removed:true,count:e.length}];let o=0;for(;o<r&&o<a&&n(e[o],t[o]);)o++;let i=0;for(;i<r-o&&i<a-o&&n(e[r-1-i],t[a-1-i]);)i++;let d=e.slice(o,r-i),s=t.slice(o,a-i);if(d.length===0&&s.length===0)return [{value:e.join(""),count:e.length}];let l=lt(d,s,n),u=[];return o>0&&u.push({value:e.slice(0,o).join(""),count:o}),u.push(...l),i>0&&u.push({value:e.slice(r-i).join(""),count:i}),Te(u)}function lt(e,t,n){let r=e.length,a=t.length,o=r+a,i={1:0},d=[];e:for(let s=0;s<=o;s++){d.push({...i});for(let l=-s;l<=s;l+=2){let u;l===-s||l!==s&&i[l-1]<i[l+1]?u=i[l+1]:u=i[l-1]+1;let p=u-l;for(;u<r&&p<a&&n(e[u],t[p]);)u++,p++;if(i[l]=u,u>=r&&p>=a)break e}}return ct(d,e,t)}function ct(e,t,n){let r=[],a=t.length,o=n.length;for(let i=e.length-1;i>=0;i--){let d=e[i],s=a-o,l;s===-i||s!==i&&d[s-1]<d[s+1]?l=s+1:l=s-1;let u=d[l]??0,p=u-l;for(;a>u&&o>p;)a--,o--,r.unshift({value:t[a],count:1});i>0&&(a===u?(o--,r.unshift({value:n[o],added:true,count:1})):(a--,r.unshift({value:t[a],removed:true,count:1})));}return r}function Te(e){if(e.length===0)return [];let t=[];for(let n of e){let r=t[t.length-1];r&&r.added===n.added&&r.removed===n.removed?(r.value+=n.value,r.count=(r.count||1)+(n.count||1)):t.push({...n});}return t}function Le(e){if(!e)return [];let t=[],n="";for(let r=0;r<e.length;r++){let a=e[r];n+=a,a===`
|
|
2
2
|
`&&(t.push(n),n="");}return n.length>0&&t.push(n),t}var De="a-zA-Z0-9_\\u00AD\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF",dt=new RegExp(`[${De}]+|\\s+|[^${De}]`,"gu");function Re(e){return e?e.match(dt)||[]:[]}function Be(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return e.slice(0,n)}function pe(e,t){let n=0;for(;n<e.length&&n<t.length&&e[e.length-1-n]===t[t.length-1-n];)n++;return e.slice(e.length-n)}function ut(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.removed&&e[n+1]?.added){let a=r,o=e[n+1],d=Be(a.value,o.value).match(/^\s*/)?.[0]||"",s=a.value.slice(d.length),l=o.value.slice(d.length),p=pe(s,l).match(/\s*$/)?.[0]||"";d&&t.push({value:d,count:1});let h=a.value.slice(d.length,a.value.length-p.length),P=o.value.slice(d.length,o.value.length-p.length);h&&t.push({value:h,removed:true,count:1}),P&&t.push({value:P,added:true,count:1}),p&&t.push({value:p,count:1}),n++;continue}if(r.added&&n>0&&!e[n-1].added&&!e[n-1].removed){let a=t[t.length-1];if(a&&!a.added&&!a.removed){let o=r.value.match(/^\s*/)?.[0]||"",i=a.value.match(/\s*$/)?.[0]||"";if(o&&i){let d=pe(i,o);if(d){t.push({value:r.value.slice(d.length),added:true,count:1});continue}}}}if(r.removed&&!e[n+1]?.added&&n>0&&!e[n-1]?.added&&!e[n-1]?.removed){let a=t[t.length-1],o=e[n+1];if(a&&o&&!o.added&&!o.removed){let i=r.value.match(/^\s*/)?.[0]||"",d=r.value.match(/\s*$/)?.[0]||"",s=a.value.match(/\s*$/)?.[0]||"",l=o.value.match(/^\s*/)?.[0]||"";if(i&&s&&pe(s,i).length===i.length){t.push({value:r.value.slice(i.length),removed:true,count:1});continue}if(d&&l&&Be(d,l).length===d.length){t.push({value:r.value.slice(0,-d.length)||r.value,removed:true,count:1});continue}}}t.push({...r});}return Te(t)}function Ue(e,t){let n=Le(e),r=Le(t);return Ve(n,r)}function We(e,t){let n=Re(e),r=Re(t),a=Ve(n,r);return ut(a)}var Ae=(e="",t="")=>useMemo(()=>{let n=(e||"").trim().replace(/\r\n/g,`
|
|
3
3
|
`),r=(t||"").trim().replace(/\r\n/g,`
|
|
4
|
-
`),a=Ue(n,r),o=[],i=false,d=0;for(let u=0;u<a.length;u++){let p=a[u],h=a[u+1];if(p.removed&&h&&h.added){let P=We(p.value,h.value);o.push({type:"modified",parts:P}),i=true,d+=Math.abs(p.value.length-h.value.length),u++;}else p.added||p.removed?(o.push({type:p.added?"added":"removed",parts:[{value:p.value,added:p.added,removed:p.removed}]}),i=true,d+=p.value.length):o.push({type:"unchanged",parts:[{value:p.value}]});}let s=Math.max(n.length,r.length),l=s===0?1:1-d/s;return {diffResult:o,hasDiff:i,similarity:l,isHighVariance:l<.6}},[e,t]);function xt(e){switch(e){case "chip":case "text":case "brackets":return "keySpan";default:return "number"}}function ht(e){return e.replace(/^\[+\s*/,"").replace(/\s*\]+$/,"")}function vt(e,t,n){if(t==="indicator")return "";if(t==="keySpan"){let r=e.keySpan?.toString()||e.citationNumber?.toString()||n||"1";return ht(r)}return e.citationNumber?.toString()||"1"}function Ct(e){return e.isVerified&&!e.isPartialMatch?"Verified":e.isPartialMatch?"Partial Match":e.isMiss?"Not Found":e.isPending?"Verifying...":""}function bt(e){let t=e?.status;if(!e||!t)return {isVerified:false,isMiss:false,isPartialMatch:false,isPending:false};let n=t==="not_found",r=t==="pending"||t==="loading",a=t==="partial_text_found"||t==="found_on_other_page"||t==="found_on_other_line"||t==="first_word_found";return {isVerified:t==="found"||t==="found_key_span_only"||t==="found_phrase_missed_value"||a,isMiss:n,isPartialMatch:a,isPending:r}}function yt({src:e,alt:t,onClose:n}){return useEffect(()=>{let r=a=>{a.key==="Escape"&&n();};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[n]),createPortal(jsx("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center bg-black/80 backdrop-blur-sm animate-in fade-in-0",onClick:n,role:"dialog","aria-modal":"true","aria-label":"Full size verification image",children:jsx("div",{className:"relative max-w-[95vw] max-h-[95vh] cursor-zoom-out",children:jsx("img",{src:e,alt:t,className:"max-w-full max-h-[95vh] object-contain rounded-lg shadow-2xl",draggable:false})})}),document.body)}var kt=()=>jsx("span",{className:"inline-flex relative ml-0.5 text-green-600 dark:text-green-500","aria-hidden":"true",children:jsx(Q,{})}),Pt=()=>jsx("span",{className:"inline-flex relative ml-0.5 text-amber-600 dark:text-amber-500","aria-hidden":"true",children:jsx(Q,{})}),Nt=()=>jsx("span",{className:"inline-flex ml-1 text-gray-400 dark:text-gray-500","aria-hidden":"true",children:jsx(de,{})}),wt=()=>jsx("span",{className:"inline-flex relative ml-0.5 text-red-500 dark:text-red-400","aria-hidden":"true",children:jsx(ce,{})});function Mt({citation:e,verification:t,status:n,onImageClick:r}){let a=t?.verificationImageBase64,{isMiss:o,isPartialMatch:i}=n;if(a)return jsxs("div",{className:"p-1",children:[jsx("button",{type:"button",className:"block cursor-zoom-in",onClick:u=>{u.preventDefault(),u.stopPropagation(),r?.();},"aria-label":"Click to view full size",children:jsx("img",{src:t.verificationImageBase64,alt:"Citation verification",className:"max-w-[700px] max-h-[500px] w-auto h-auto object-contain rounded bg-gray-50 dark:bg-gray-800",loading:"lazy"})}),(o||i)&&jsx(Oe,{citation:e,verification:t,status:n})]});let d=Ct(n),s=t?.verifiedMatchSnippet,l=t?.verifiedPageNumber;return !s&&!d?null:jsxs("div",{className:"p-3 flex flex-col gap-2 min-w-[200px] max-w-[400px]",children:[d&&jsx("span",{className:g("text-xs font-medium",n.isVerified&&!n.isPartialMatch&&"text-green-600 dark:text-green-500",n.isPartialMatch&&"text-amber-600 dark:text-amber-500",n.isMiss&&"text-red-600 dark:text-red-500",n.isPending&&"text-gray-500 dark:text-gray-400"),children:d}),s&&jsxs("span",{className:"text-sm text-gray-700 dark:text-gray-300 italic",children:['"',t.verifiedMatchSnippet,'"']}),l&&l>0&&jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:["Page ",l]}),(o||i)&&jsx(Oe,{citation:e,verification:t,status:n})]})}function Oe({citation:e,verification:t,status:n}){let{isMiss:r,isPartialMatch:a}=n,o=e.fullPhrase||e.keySpan?.toString()||"",i=t?.verifiedMatchSnippet||"",{diffResult:d,hasDiff:s,isHighVariance:l}=Ae(o,i);if(!r&&!a)return null;let u=e.lineIds,p=t?.verifiedLineIds,h=u&&p&&JSON.stringify(u)!==JSON.stringify(p),P=e.pageNumber,g=t?.verifiedPageNumber,A=P!=null&&g!=null&&P!==g;return r?jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Expected"}),jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Found"}),jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] text-amber-600 dark:text-amber-500 italic",children:"Not found in source"})]})]}):jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&i&&s?jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Diff"}),jsx("div",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:l?jsxs("div",{className:"space-y-2",children:[jsxs("div",{children:[jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Expected:"," "]}),jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxs("div",{children:[jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Found:"," "]}),jsx("span",{className:"text-green-600 dark:text-green-400",children:i.length>100?i.slice(0,100)+"\u2026":i})]})]}):d.map((N,C)=>jsx("span",{children:N.parts.map((w,B)=>{let v=`p-${C}-${B}`;return w.removed?jsx("span",{className:"bg-red-200 dark:bg-red-900/50 text-red-700 dark:text-red-300 line-through",title:"Expected text",children:w.value},v):w.added?jsx("span",{className:"bg-green-200 dark:bg-green-900/50 text-green-700 dark:text-green-300",title:"Actual text found",children:w.value},v):jsx("span",{children:w.value},v)})},`block-${C}`))})]}):o&&!s?jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Text"}),jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:o.length>100?o.slice(0,100)+"\u2026":o})]}):null,A&&jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Page"}),jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:P})," \u2192 ",g]})]}),h&&jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Line"}),jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:u?.join(", ")})," \u2192 ",p?.join(", ")]})]})]})}var xe=forwardRef(({citation:e,children:t,className:n,fallbackDisplay:r,verification:a,isLoading:o=false,variant:i="brackets",content:d,eventHandlers:s,behaviorConfig:l,isMobile:u=false,renderIndicator:p,renderContent:h$1,popoverPosition:P="top",renderPopoverContent:g$1},A)=>{let N=useMemo(()=>d||xt(i),[d,i]),[C,w]=useState(false),[B,v]=useState(null),m=useMemo(()=>h(e),[e]),K=useMemo(()=>j(m),[m]),M=useMemo(()=>bt(a),[a]),{isMiss:L,isPartialMatch:D,isVerified:S,isPending:Z}=M,ee=5e3,[te,G]=useState(false),T=useRef(null),O=a?.verificationImageBase64||a?.status==="found"||a?.status==="found_key_span_only"||a?.status==="found_phrase_missed_value"||a?.status==="not_found"||a?.status==="partial_text_found"||a?.status==="found_on_other_page"||a?.status==="found_on_other_line"||a?.status==="first_word_found",y=(o||Z)&&!O&&!te;useEffect(()=>(T.current&&(clearTimeout(T.current),T.current=null),(o||Z)&&!O?(G(false),T.current=setTimeout(()=>{G(true);},ee)):G(false),()=>{T.current&&clearTimeout(T.current);}),[o,Z,O]);let E=useMemo(()=>vt(e,N,r),[e,N,r]),_=useCallback(()=>({citation:e,citationKey:m,verification:a??null,isTooltipExpanded:C,isImageExpanded:!!B,hasImage:!!a?.verificationImageBase64}),[e,m,a,C,B]),b=useCallback(x=>{x.setImageExpanded!==void 0&&(typeof x.setImageExpanded=="string"?v(x.setImageExpanded):x.setImageExpanded===true&&a?.verificationImageBase64?v(a.verificationImageBase64):x.setImageExpanded===false&&v(null));},[a?.verificationImageBase64]),ze=useCallback(x=>{x.preventDefault(),x.stopPropagation();let X=_();if(l?.onClick){let re=l.onClick(X,x);re&&typeof re=="object"&&b(re),s?.onClick?.(e,m,x);return}if(s?.onClick){s.onClick(e,m,x);return}a?.verificationImageBase64&&v(a.verificationImageBase64);},[l,s,e,m,a?.verificationImageBase64,_,b]),he=150,$=useRef(null),ne=useRef(false),U=useCallback(()=>{$.current&&(clearTimeout($.current),$.current=null);},[]),je=useCallback(()=>{U(),w(true),l?.onHover?.onEnter&&l.onHover.onEnter(_()),s?.onMouseEnter?.(e,m);},[s,l,e,m,_,U]),Fe=useCallback(()=>{U(),$.current=setTimeout(()=>{ne.current||(w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m));},he);},[s,l,e,m,_,U]),He=useCallback(()=>{U(),ne.current=true;},[U]),Ke=useCallback(()=>{ne.current=false,U(),$.current=setTimeout(()=>{w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m);},he);},[s,l,e,m,_,U]);useEffect(()=>()=>{$.current&&clearTimeout($.current);},[]);let Ze=useCallback(x=>{u&&(x.preventDefault(),x.stopPropagation(),s?.onTouchEnd?.(e,m,x));},[s,e,m,u]);if(r!=null&&N==="keySpan"&&L)return jsx("span",{className:g("text-gray-400 dark:text-gray-500",n),children:r});let ae=g((S||D)&&i==="brackets"&&"text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:underline",L&&"opacity-70 line-through text-gray-400 dark:text-gray-500",y&&"text-gray-500 dark:text-gray-400"),z=()=>p?p(M):y?jsx(Nt,{}):L?jsx(wt,{}):D?jsx(Pt,{}):S?jsx(kt,{}):null,ve=()=>{if(h$1)return h$1({citation:e,status:M,citationKey:m,displayText:E,isMergedDisplay:N==="keySpan"});if(N==="indicator")return jsx("span",{children:z()});if(i==="chip"){let x=g(S&&!D&&!y&&"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",D&&!y&&"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",L&&!y&&"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400 line-through",y&&"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",!S&&!L&&!y&&"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400");return jsxs("span",{className:g("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm font-medium",x),children:[jsx("span",{className:"max-w-60 overflow-hidden text-ellipsis whitespace-nowrap",children:E}),z()]})}if(i==="superscript"){let x=g(S&&!D&&!y&&"text-green-600 dark:text-green-500",D&&!y&&"text-amber-600 dark:text-amber-500",L&&!y&&"text-red-500 dark:text-red-400 line-through",y&&"text-gray-400 dark:text-gray-500",!S&&!L&&!y&&"text-blue-600 dark:text-blue-400");return jsxs("sup",{className:g("text-xs font-medium transition-colors hover:underline",x),children:["[",E,z(),"]"]})}return i==="text"?jsxs("span",{className:ae,children:[E,z()]}):i==="minimal"?jsxs("span",{className:g("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}):jsxs("span",{className:g("inline-flex items-baseline gap-0.5 whitespace-nowrap","font-mono text-xs leading-tight","text-gray-500 dark:text-gray-400","transition-colors"),"aria-hidden":"true",children:["[",jsxs("span",{className:g("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}),"]"]})},Ge=!(P==="hidden")&&a&&(a.verificationImageBase64||a.verifiedMatchSnippet),Xe=!!a?.verificationImageBase64,Ce=B?jsx(yt,{src:B,alt:"Citation verification - full size",onClose:()=>v(null)}):null,be={"data-citation-id":m,"data-citation-instance":K,className:g("relative inline-flex items-baseline cursor-pointer","px-0.5 -mx-0.5 rounded-sm","transition-all duration-150","hover:bg-blue-500/10 dark:hover:bg-blue-400/10",Xe&&"hover:cursor-zoom-in",n),onMouseEnter:je,onMouseLeave:Fe,onClick:ze,onTouchEndCapture:u?Ze:void 0,"aria-label":E?`[${E}]`:void 0};if(Ge){let x=g$1?g$1({citation:e,verification:a??null,status:M}):jsx(Mt,{citation:e,verification:a??null,status:M,onImageClick:()=>{a?.verificationImageBase64&&v(a.verificationImageBase64);}});return jsxs(Fragment,{children:[t,jsxs(Ee,{open:C,children:[jsx(_e,{asChild:true,children:jsx("span",{ref:A,...be,children:ve()})}),jsx(ue,{side:P==="bottom"?"bottom":"top",onPointerDownOutside:X=>X.preventDefault(),onInteractOutside:X=>X.preventDefault(),onMouseEnter:He,onMouseLeave:Ke,children:x})]}),Ce]})}return jsxs(Fragment,{children:[t,jsx("span",{ref:A,...be,children:ve()}),Ce]})});xe.displayName="CitationComponent";var St=memo(xe);export{Q as CheckIcon,xe as CitationComponent,it as DeepCitationIcon,St as MemoizedCitationComponent,de as SpinnerIcon,ce as WarningIcon,le as extractDomain,Pe as isBlockedStatus,Ne as isErrorStatus,rt as isVerifiedStatus};
|
|
4
|
+
`),a=Ue(n,r),o=[],i=false,d=0;for(let u=0;u<a.length;u++){let p=a[u],h=a[u+1];if(p.removed&&h&&h.added){let P=We(p.value,h.value);o.push({type:"modified",parts:P}),i=true,d+=Math.abs(p.value.length-h.value.length),u++;}else p.added||p.removed?(o.push({type:p.added?"added":"removed",parts:[{value:p.value,added:p.added,removed:p.removed}]}),i=true,d+=p.value.length):o.push({type:"unchanged",parts:[{value:p.value}]});}let s=Math.max(n.length,r.length),l=s===0?1:1-d/s;return {diffResult:o,hasDiff:i,similarity:l,isHighVariance:l<.6}},[e,t]);function xt(e){switch(e){case "chip":case "text":case "brackets":return "keySpan";default:return "number"}}function ht(e){return e.replace(/^\[+\s*/,"").replace(/\s*\]+$/,"")}function vt(e,t,n){if(t==="indicator")return "";if(t==="keySpan"){let r=e.keySpan?.toString()||e.citationNumber?.toString()||n||"1";return ht(r)}return e.citationNumber?.toString()||"1"}function Ct(e){return e.isVerified&&!e.isPartialMatch?"Verified":e.isPartialMatch?"Partial Match":e.isMiss?"Not Found":e.isPending?"Verifying...":""}function bt(e){let t=e?.status;if(!e||!t)return {isVerified:false,isMiss:false,isPartialMatch:false,isPending:false};let n=t==="not_found",r=t==="pending"||t==="loading",a=t==="partial_text_found"||t==="found_on_other_page"||t==="found_on_other_line"||t==="first_word_found";return {isVerified:t==="found"||t==="found_key_span_only"||t==="found_phrase_missed_value"||a,isMiss:n,isPartialMatch:a,isPending:r}}function yt({src:e,alt:t,onClose:n}){return useEffect(()=>{let r=a=>{a.key==="Escape"&&n();};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[n]),createPortal(jsx("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center bg-black/80 backdrop-blur-sm animate-in fade-in-0",onClick:n,role:"dialog","aria-modal":"true","aria-label":"Full size verification image",children:jsx("div",{className:"relative max-w-[95vw] max-h-[95vh] cursor-zoom-out",children:jsx("img",{src:e,alt:t,className:"max-w-full max-h-[95vh] object-contain rounded-lg shadow-2xl",draggable:false})})}),document.body)}var kt=()=>jsx("span",{className:"inline-flex relative ml-0.5 text-green-600 dark:text-green-500","aria-hidden":"true",children:jsx(Q,{})}),Pt=()=>jsx("span",{className:"inline-flex relative ml-0.5 text-amber-600 dark:text-amber-500","aria-hidden":"true",children:jsx(Q,{})}),Nt=()=>jsx("span",{className:"inline-flex ml-1 text-gray-400 dark:text-gray-500","aria-hidden":"true",children:jsx(de,{})}),wt=()=>jsx("span",{className:"inline-flex relative ml-0.5 text-red-500 dark:text-red-400","aria-hidden":"true",children:jsx(ce,{})});function Mt({citation:e,verification:t,status:n,onImageClick:r}){let a=t?.verificationImageBase64,{isMiss:o,isPartialMatch:i}=n;if(a)return jsxs("div",{className:"p-1",children:[jsx("button",{type:"button",className:"block cursor-zoom-in",onClick:u=>{u.preventDefault(),u.stopPropagation(),r?.();},"aria-label":"Click to view full size",children:jsx("img",{src:t.verificationImageBase64,alt:"Citation verification",className:"max-w-[700px] max-h-[500px] w-auto h-auto object-contain rounded bg-gray-50 dark:bg-gray-800",loading:"lazy"})}),(o||i)&&jsx(Oe,{citation:e,verification:t,status:n})]});let d=Ct(n),s=t?.verifiedMatchSnippet,l=t?.verifiedPageNumber;return !s&&!d?null:jsxs("div",{className:"p-3 flex flex-col gap-2 min-w-[200px] max-w-[400px]",children:[d&&jsx("span",{className:h("text-xs font-medium",n.isVerified&&!n.isPartialMatch&&"text-green-600 dark:text-green-500",n.isPartialMatch&&"text-amber-600 dark:text-amber-500",n.isMiss&&"text-red-600 dark:text-red-500",n.isPending&&"text-gray-500 dark:text-gray-400"),children:d}),s&&jsxs("span",{className:"text-sm text-gray-700 dark:text-gray-300 italic",children:['"',t.verifiedMatchSnippet,'"']}),l&&l>0&&jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:["Page ",l]}),(o||i)&&jsx(Oe,{citation:e,verification:t,status:n})]})}function Oe({citation:e,verification:t,status:n}){let{isMiss:r,isPartialMatch:a}=n,o=e.fullPhrase||e.keySpan?.toString()||"",i=t?.verifiedMatchSnippet||"",{diffResult:d,hasDiff:s,isHighVariance:l}=Ae(o,i);if(!r&&!a)return null;let u=e.lineIds,p=t?.verifiedLineIds,h=u&&p&&JSON.stringify(u)!==JSON.stringify(p),P=e.pageNumber,g=t?.verifiedPageNumber,A=P!=null&&g!=null&&P!==g;return r?jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Expected"}),jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Found"}),jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] text-amber-600 dark:text-amber-500 italic",children:"Not found in source"})]})]}):jsxs("div",{className:"mt-2 pt-2 border-t border-gray-200 dark:border-gray-700 text-xs space-y-2",children:[o&&i&&s?jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Diff"}),jsx("div",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:l?jsxs("div",{className:"space-y-2",children:[jsxs("div",{children:[jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Expected:"," "]}),jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:o.length>100?o.slice(0,100)+"\u2026":o})]}),jsxs("div",{children:[jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-[10px]",children:["Found:"," "]}),jsx("span",{className:"text-green-600 dark:text-green-400",children:i.length>100?i.slice(0,100)+"\u2026":i})]})]}):d.map((N,C)=>jsx("span",{children:N.parts.map((w,B)=>{let v=`p-${C}-${B}`;return w.removed?jsx("span",{className:"bg-red-200 dark:bg-red-900/50 text-red-700 dark:text-red-300 line-through",title:"Expected text",children:w.value},v):w.added?jsx("span",{className:"bg-green-200 dark:bg-green-900/50 text-green-700 dark:text-green-300",title:"Actual text found",children:w.value},v):jsx("span",{children:w.value},v)})},`block-${C}`))})]}):o&&!s?jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Text"}),jsx("p",{className:"mt-1 p-2 bg-gray-100 dark:bg-gray-800 rounded font-mono text-[11px] break-words text-gray-700 dark:text-gray-300",children:o.length>100?o.slice(0,100)+"\u2026":o})]}):null,A&&jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Page"}),jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:P})," \u2192 ",g]})]}),h&&jsxs("div",{children:[jsx("span",{className:"text-gray-500 dark:text-gray-400 font-medium uppercase text-[10px]",children:"Line"}),jsxs("p",{className:"mt-1 font-mono text-[11px] text-gray-700 dark:text-gray-300",children:[jsx("span",{className:"text-red-600 dark:text-red-400 line-through opacity-70",children:u?.join(", ")})," \u2192 ",p?.join(", ")]})]})]})}var xe=forwardRef(({citation:e,children:t,className:n,fallbackDisplay:r,verification:a,isLoading:o=false,variant:i$1="brackets",content:d,eventHandlers:s,behaviorConfig:l,isMobile:u=false,renderIndicator:p,renderContent:h$1,popoverPosition:P="top",renderPopoverContent:g},A)=>{let N=useMemo(()=>d||xt(i$1),[d,i$1]),[C,w]=useState(false),[B,v]=useState(null),m=useMemo(()=>i(e),[e]),K=useMemo(()=>k(m),[m]),M=useMemo(()=>bt(a),[a]),{isMiss:L,isPartialMatch:D,isVerified:S,isPending:Z}=M,ee=5e3,[te,G]=useState(false),T=useRef(null),O=a?.verificationImageBase64||a?.status==="found"||a?.status==="found_key_span_only"||a?.status==="found_phrase_missed_value"||a?.status==="not_found"||a?.status==="partial_text_found"||a?.status==="found_on_other_page"||a?.status==="found_on_other_line"||a?.status==="first_word_found",y=(o||Z)&&!O&&!te;useEffect(()=>(T.current&&(clearTimeout(T.current),T.current=null),(o||Z)&&!O?(G(false),T.current=setTimeout(()=>{G(true);},ee)):G(false),()=>{T.current&&clearTimeout(T.current);}),[o,Z,O]);let E=useMemo(()=>vt(e,N,r),[e,N,r]),_=useCallback(()=>({citation:e,citationKey:m,verification:a??null,isTooltipExpanded:C,isImageExpanded:!!B,hasImage:!!a?.verificationImageBase64}),[e,m,a,C,B]),b=useCallback(x=>{x.setImageExpanded!==void 0&&(typeof x.setImageExpanded=="string"?v(x.setImageExpanded):x.setImageExpanded===true&&a?.verificationImageBase64?v(a.verificationImageBase64):x.setImageExpanded===false&&v(null));},[a?.verificationImageBase64]),ze=useCallback(x=>{x.preventDefault(),x.stopPropagation();let X=_();if(l?.onClick){let re=l.onClick(X,x);re&&typeof re=="object"&&b(re),s?.onClick?.(e,m,x);return}if(s?.onClick){s.onClick(e,m,x);return}a?.verificationImageBase64&&v(a.verificationImageBase64);},[l,s,e,m,a?.verificationImageBase64,_,b]),he=150,$=useRef(null),ne=useRef(false),U=useCallback(()=>{$.current&&(clearTimeout($.current),$.current=null);},[]),je=useCallback(()=>{U(),w(true),l?.onHover?.onEnter&&l.onHover.onEnter(_()),s?.onMouseEnter?.(e,m);},[s,l,e,m,_,U]),Fe=useCallback(()=>{U(),$.current=setTimeout(()=>{ne.current||(w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m));},he);},[s,l,e,m,_,U]),He=useCallback(()=>{U(),ne.current=true;},[U]),Ke=useCallback(()=>{ne.current=false,U(),$.current=setTimeout(()=>{w(false),l?.onHover?.onLeave&&l.onHover.onLeave(_()),s?.onMouseLeave?.(e,m);},he);},[s,l,e,m,_,U]);useEffect(()=>()=>{$.current&&clearTimeout($.current);},[]);let Ze=useCallback(x=>{u&&(x.preventDefault(),x.stopPropagation(),s?.onTouchEnd?.(e,m,x));},[s,e,m,u]);if(r!=null&&N==="keySpan"&&L)return jsx("span",{className:h("text-gray-400 dark:text-gray-500",n),children:r});let ae=h((S||D)&&i$1==="brackets"&&"text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:underline",L&&"opacity-70 line-through text-gray-400 dark:text-gray-500",y&&"text-gray-500 dark:text-gray-400"),z=()=>p?p(M):y?jsx(Nt,{}):L?jsx(wt,{}):D?jsx(Pt,{}):S?jsx(kt,{}):null,ve=()=>{if(h$1)return h$1({citation:e,status:M,citationKey:m,displayText:E,isMergedDisplay:N==="keySpan"});if(N==="indicator")return jsx("span",{children:z()});if(i$1==="chip"){let x=h(S&&!D&&!y&&"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",D&&!y&&"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",L&&!y&&"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400 line-through",y&&"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",!S&&!L&&!y&&"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400");return jsxs("span",{className:h("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-sm font-medium",x),children:[jsx("span",{className:"max-w-60 overflow-hidden text-ellipsis whitespace-nowrap",children:E}),z()]})}if(i$1==="superscript"){let x=h(S&&!D&&!y&&"text-green-600 dark:text-green-500",D&&!y&&"text-amber-600 dark:text-amber-500",L&&!y&&"text-red-500 dark:text-red-400 line-through",y&&"text-gray-400 dark:text-gray-500",!S&&!L&&!y&&"text-blue-600 dark:text-blue-400");return jsxs("sup",{className:h("text-xs font-medium transition-colors hover:underline",x),children:["[",E,z(),"]"]})}return i$1==="text"?jsxs("span",{className:ae,children:[E,z()]}):i$1==="minimal"?jsxs("span",{className:h("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}):jsxs("span",{className:h("inline-flex items-baseline gap-0.5 whitespace-nowrap","font-mono text-xs leading-tight","text-gray-500 dark:text-gray-400","transition-colors"),"aria-hidden":"true",children:["[",jsxs("span",{className:h("max-w-80 overflow-hidden text-ellipsis",ae),children:[E,z()]}),"]"]})},Ge=!(P==="hidden")&&a&&(a.verificationImageBase64||a.verifiedMatchSnippet),Xe=!!a?.verificationImageBase64,Ce=B?jsx(yt,{src:B,alt:"Citation verification - full size",onClose:()=>v(null)}):null,be={"data-citation-id":m,"data-citation-instance":K,className:h("relative inline-flex items-baseline cursor-pointer","px-0.5 -mx-0.5 rounded-sm","transition-all duration-150","hover:bg-blue-500/10 dark:hover:bg-blue-400/10",Xe&&"hover:cursor-zoom-in",n),onMouseEnter:je,onMouseLeave:Fe,onClick:ze,onTouchEndCapture:u?Ze:void 0,"aria-label":E?`[${E}]`:void 0};if(Ge){let x=g?g({citation:e,verification:a??null,status:M}):jsx(Mt,{citation:e,verification:a??null,status:M,onImageClick:()=>{a?.verificationImageBase64&&v(a.verificationImageBase64);}});return jsxs(Fragment,{children:[t,jsxs(Ee,{open:C,children:[jsx(_e,{asChild:true,children:jsx("span",{ref:A,...be,children:ve()})}),jsx(ue,{side:P==="bottom"?"bottom":"top",onPointerDownOutside:X=>X.preventDefault(),onInteractOutside:X=>X.preventDefault(),onMouseEnter:He,onMouseLeave:Ke,children:x})]}),Ce]})}return jsxs(Fragment,{children:[t,jsx("span",{ref:A,...be,children:ve()}),Ce]})});xe.displayName="CitationComponent";var St=memo(xe);export{Q as CheckIcon,xe as CitationComponent,it as DeepCitationIcon,St as MemoizedCitationComponent,de as SpinnerIcon,ce as WarningIcon,le as extractDomain,Pe as isBlockedStatus,Ne as isErrorStatus,rt as isVerifiedStatus};
|
package/package.json
CHANGED
package/lib/chunk-3GR7VKUJ.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var j=(e,t)=>{let o=/<cite\s+(?:fileId|attachmentId)='(\w{0,25})'\s+start_page[\_a-zA-Z]*='page[\_a-zA-Z]*(\d+)_index_(\d+)'\s+full_phrase='((?:[^'\\]|\\.)*)'\s+key_span='((?:[^'\\]|\\.)*)'\s+line(?:_ids|Ids)='([^']+)'(?:\s+(value|reasoning)='((?:[^'\\]|\\.)*)')?\s*\/>/g;return e.replace(o,(u,x,b,p,r,a,g,n)=>t&&a?.replace(/key_span=['"]|['"]/g,"")||"")},v=e=>e.replace(/<page_number_\d+_index_\d+>/g,"").replace(/<\/page_number_\d+_index_\d+>/g,"").trim(),$=e=>{let t=/<line id="[^"]*">|<\/line>/g;return e.replace(t,"")},N=e=>{if(!e)return null;let t=e.match(/\d+/)?.[0];return t?parseInt(t):null},z=e=>{let t=e?.trim()||"",o=t.split(/(<cite[\s\S]*?(?:\/>|<\/cite>))/gm);return o.length<=1?C(t):(t=o.map(u=>u.startsWith("<cite")?C(u):u).join(""),t)},C=e=>{let t=e;t=t.replace(/><\/cite>/g,"/>");let o=p=>{let r=p.toLowerCase();return r==="fullphrase"||r==="full_phrase"?"full_phrase":r==="lineids"||r==="line_ids"?"line_ids":r==="startpagekey"||r==="start_pagekey"||r==="start_page_key"?"start_page_key":r==="fileid"||r==="file_id"||r==="attachmentid"||r==="attachment_id"?"attachment_id":r==="keyspan"||r==="key_span"?"key_span":r==="reasoning"||r==="value"?r:r==="timestamps"||r==="timestamp"||r==="timestamps"?"timestamps":r},u=p=>p.replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),x=/(fullPhrase|full_phrase|keySpan|key_span|reasoning|value)\s*=\s*(['"])([\s\S]*?)(?=\s+(?:line_ids|lineIds|timestamps|fileId|file_id|attachmentId|attachment_id|start_page_key|start_pageKey|startPageKey|keySpan|key_span|reasoning|value|full_phrase)|\s*\/?>)/gm;t=t.replace(x,(p,r,a,g)=>{let n=g;return n.endsWith(a)&&(n=n.slice(0,-1)),n=n.replace(/(\r?\n)+/g," "),n=u(n),n=n.replace(/(\*|_){2,}/g,""),n=n.replace(/\\\\'/g,"'"),n=n.replace(/\\'/g,"'"),n=n.replace(/'/g,"\\'"),n=n.replace(/\\\\"/g,'"'),n=n.replace(/\\"/g,'"'),n=n.replace(/"/g,'\\"'),n=n.replace(/\*/g,""),`${o(r)}='${n}'`}),t=t.replace(/(line_ids|lineIds|timestamps)=['"]?([\[\]\(\){}A-Za-z0-9_\-, ]+)['"]?(\s*\/?>|\s+)/gm,(p,r,a,g)=>{let n=a.replace(/[A-Za-z\[\]\(\){}]/g,"");return n=n.replace(/(\d+)-(\d+)/g,(k,h,i)=>{let d=parseInt(h,10),m=parseInt(i,10),s=[];if(d<=m)for(let c=d;c<=m;c++)s.push(c);else s.push(d);return s.join(",")}),n=n.replace(/,+/g,",").replace(/^,|,$/g,""),`${o(r)}='${n}'${g}`});let b=p=>{let r=/([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(['"])((?:[^'"\\\n]|\\.)*)(?:\2)/g,a={},g;for(;g=r.exec(p);){let s=g[1],c=g[3],f=o(s);a[f]=c;}let n=Object.keys(a);if(n.length===0)return p;let k=typeof a.timestamps=="string"&&a.timestamps.length>0,h=n.filter(s=>s.startsWith("start_page")),i=[];a.attachment_id&&i.push("attachment_id"),k?(a.full_phrase&&i.push("full_phrase"),i.push("timestamps")):(h.includes("start_page_key")&&i.push("start_page_key"),h.filter(s=>s!=="start_page_key").sort().forEach(s=>i.push(s)),a.full_phrase&&i.push("full_phrase"),a.key_span&&i.push("key_span"),a.line_ids&&i.push("line_ids")),a.reasoning&&i.push("reasoning"),a.value&&i.push("value");let d=new Set(i);return n.filter(s=>!d.has(s)).sort().forEach(s=>i.push(s)),`<cite ${i.map(s=>`${s}='${a[s]}'`).join(" ")} />`};return t=t.replace(/<cite\b[\s\S]*?\/>/gm,p=>b(p)),t};function w(e){return new TextEncoder().encode(e)}function T(e){let t=1732584193,o=4023233417,u=2562383102,x=271733878,b=3285377520,p=e.length,r=p*8,a=p+1+8,g=Math.ceil(a/64)*64,n=new ArrayBuffer(g),k=new Uint8Array(n),h=new DataView(n);k.set(e),k[p]=128,h.setUint32(g-8,Math.floor(r/4294967296),false),h.setUint32(g-4,r>>>0,false);let i=new Uint32Array(80);for(let m=0;m<g;m+=64){for(let l=0;l<16;l++)i[l]=h.getUint32(m+l*4,false);for(let l=16;l<80;l++){let y=i[l-3]^i[l-8]^i[l-14]^i[l-16];i[l]=y<<1|y>>>31;}let s=t,c=o,f=u,_=x,S=b;for(let l=0;l<80;l++){let y,I;l<20?(y=c&f|~c&_,I=1518500249):l<40?(y=c^f^_,I=1859775393):l<60?(y=c&f|c&_|f&_,I=2400959708):(y=c^f^_,I=3395469782);let P=(s<<5|s>>>27)+y+S+I+i[l]>>>0;S=_,_=f,f=(c<<30|c>>>2)>>>0,c=s,s=P;}t=t+s>>>0,o=o+c>>>0,u=u+f>>>0,x=x+_>>>0,b=b+S>>>0;}let d=m=>m.toString(16).padStart(8,"0");return d(t)+d(o)+d(u)+d(x)+d(b)}function A(e){try{if(!e)return "";let t=typeof e=="string"?e:JSON.stringify(e);return T(w(t))}catch(t){console.error("Error in making the hash:",t);}return ""}function M(...e){return e.filter(Boolean).join(" ")}function R(e){let t=e.pageNumber||N(e.startPageKey),o=[e.attachmentId||"",t?.toString()||"",e.fullPhrase||"",e.keySpan?.toString()||"",e.lineIds?.join(",")||"",e.timestamps?.startTime||"",e.timestamps?.endTime||""];return A(o.join("|")).slice(0,16)}function U(e){let t=[e.attachmentId||"",e.label||"",e.verifiedFullPhrase||"",e.verifiedKeySpan||"",e.verifiedLineIds?.join(",")||"",e.verifiedPageNumber?.toString()||"",e.verifiedTimestamps?.startTime||"",e.verifiedTimestamps?.endTime||"",e.verifiedMatchSnippet||"",e.hitIndexWithinPage?.toString()||""];return A(t.join("|")).slice(0,16)}function V(e){let t=Math.random().toString(36).slice(2,11);return `${e}-${t}`}function Z(e,t={}){let{fallbackDisplay:o}=t;return e.keySpan?.toString()||e.citationNumber?.toString()||o||"1"}function O(e){return e.citationNumber?.toString()||"1"}function W(e){return e.keySpan?.toString()||""}function B(...e){return e.filter(Boolean).join(" ")}var H=4,G=1;exports.a=j;exports.b=v;exports.c=$;exports.d=N;exports.e=z;exports.f=A;exports.g=M;exports.h=R;exports.i=U;exports.j=V;exports.k=Z;exports.l=O;exports.m=W;exports.n=B;exports.o=H;exports.p=G;
|
package/lib/chunk-LSKISWWH.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunk3GR7VKUJ_cjs=require('./chunk-3GR7VKUJ.cjs'),chunkF2MMVEVC_cjs=require('./chunk-F2MMVEVC.cjs');function E(t){if(!t)return;let e=[],n=t.split(",");for(let s of n){let i=s.trim();if(i)if(i.includes("-")){let[r,a]=i.split("-"),o=parseInt(r,10),p=parseInt(a,10);if(!isNaN(o)&&!isNaN(p)&&o<=p)for(let c=o;c<=p;c++)e.push(c);else isNaN(o)||e.push(o);}else {let r=parseInt(i,10);isNaN(r)||e.push(r);}}if(e.length!==0)return [...new Set(e)].sort((s,i)=>s-i)}function q(t){let e=t?.status,n=e==="not_found",s=e==="found_phrase_missed_value",i=e==="found_key_span_only",r=e==="partial_text_found"||e==="found_on_other_page"||e==="found_on_other_line"||e==="first_word_found";return {isVerified:e==="found"||i||r||s,isMiss:n,isPartialMatch:r,isPending:e==="pending"||e==="loading"||!e}}var M=(t,e,n,s)=>{let i=f=>f?f.replace(/^['"]|['"]$/g,"").replace(/\\'/g,"'"):void 0,r=n?.current?n.current++:void 0,a=t.substring(0,t.indexOf("<cite")),o=t.includes("/>")?t.slice(t.indexOf("/>")+2):"",p=t.substring(t.indexOf("<cite"),t.indexOf("/>")+2),c=(f,y)=>{for(let N of y){let D=new RegExp(`${N}='((?:[^'\\\\]|\\\\.)*)'`),v=f.match(D);if(v)return v[1]}},l=c(p,["attachment_id","attachmentId","file_id","fileId"]),h=l?.length===20?l:e||l,m=c(p,["start_page_key","startPageKey","start_page"]),d,_;if(m){let f=m.match(/page[\_a-zA-Z]*(\d+)_index_(\d+)/);f&&(d=parseInt(f[1]),_=parseInt(f[2]));}let B=i(c(p,["full_phrase","fullPhrase"])),T=i(c(p,["key_span","keySpan"])),V=i(c(p,["reasoning"])),K=i(c(p,["value"])),b;try{let y=c(p,["line_ids","lineIds"])?.replace(/[A-Za-z_[\](){}:]/g,"");b=y?E(y):void 0;}catch(f){s&&console.error("Error parsing lineIds",f);}let w=c(p,["timestamps"]),k;if(w){let[f,y]=w.split("-")||[];k={startTime:f,endTime:y};}let $={attachmentId:h,pageNumber:d,startPageKey:`page_number_${d||1}_index_${_||0}`,fullPhrase:B,keySpan:T||K,citationNumber:r,lineIds:b,beforeCite:a,timestamps:k,reasoning:V};return {beforeCite:a,afterCite:o,citation:$}},z=(t,e)=>{if(!t)return null;let n=t.fullPhrase??t.full_phrase,s=t.startPageKey??t.start_page_key,i=t.keySpan??t.key_span,r=t.lineIds??t.line_ids,a=t.attachmentId??t.attachment_id??t.fileId??t.file_id,o=t.reasoning,p=t.value;if(!n)return null;let c;if(s){let m=s.match(/page[_a-zA-Z]*(\d+)_index_(\d+)/i);if(m)c=parseInt(m[1],10);else {let d=s.match(/^(\d+)_(\d+)$/);d&&(c=parseInt(d[1],10));}}let l=r?.length?[...r].sort((m,d)=>m-d):void 0;return {attachmentId:a,pageNumber:c,fullPhrase:n,citationNumber:e,lineIds:l,keySpan:i||p,reasoning:o}},O=t=>typeof t=="object"&&t!==null&&("fullPhrase"in t||"full_phrase"in t||"startPageKey"in t||"start_page_key"in t||"keySpan"in t||"key_span"in t||"lineIds"in t||"line_ids"in t),I=t=>Array.isArray(t)?t.length>0&&t.some(O):typeof t=="object"&&t!==null?O(t):false,x=t=>{let e={},n=Array.isArray(t)?t:[t],s=1;for(let i of n){let r=z(i,s++);if(r&&r.fullPhrase){let a=chunk3GR7VKUJ_cjs.h(r);e[a]=r;}}return e},P=(t,e)=>{if(!(!t||typeof t!="object")){if(t.citation&&I(t.citation)){let n=Array.isArray(t.citation)?t.citation:[t.citation];e.push(...n);}if(t.citations&&I(t.citations)){let n=Array.isArray(t.citations)?t.citations:[t.citations];e.push(...n);}if(Array.isArray(t))for(let n of t)P(n,e);else for(let n of Object.keys(t))n!=="citation"&&n!=="citations"&&P(t[n],e);}},R=t=>{let e=chunk3GR7VKUJ_cjs.e(t),n=/<cite\s+[^>]*\/>/g,s=e.match(n);if(!s||s.length===0)return {};let i={},r={current:1};for(let a of s){let{citation:o}=M(a,void 0,r);if(o&&o.fullPhrase){let p=chunk3GR7VKUJ_cjs.h(o);i[p]=o;}}return i},S=t=>{if(!t)return {};let e={};if(typeof t=="object"){if(I(t)){let i=x(t);Object.assign(e,i);}else {let i=[];if(P(t,i),i.length>0){let r=x(i);Object.assign(e,r);}}let n=JSON.stringify(t),s=R(n);Object.assign(e,s);}else if(typeof t=="string"){let n=R(t);Object.assign(e,n);}return e};function Z(t){let e=new Map,n=Array.isArray(t)?t.map((s,i)=>[chunk3GR7VKUJ_cjs.h(s)||String(i+1),s]):Object.entries(t);for(let[s,i]of n){let r=i.attachmentId||"";e.has(r)||e.set(r,{}),e.get(r)[s]=i;}return e}function G(t){let e={},n=Array.isArray(t)?t.map((s,i)=>[chunk3GR7VKUJ_cjs.h(s)||String(i+1),s]):Object.entries(t);for(let[s,i]of n){let r=i.attachmentId||"";e[r]||(e[r]={}),e[r][s]=i;}return e}var L="https://api.deepcitation.com";function U(t,e){if(typeof Buffer<"u"&&Buffer.isBuffer(t)){let n=Uint8Array.from(t);return {blob:new Blob([n]),name:e||"document"}}if(t instanceof Blob)return {blob:t,name:e||(t instanceof File?t.name:"document")};throw new Error("Invalid file type. Expected File, Blob, or Buffer.")}async function g(t,e){return (await t.json().catch(()=>({})))?.error?.message||`${e} failed with status ${t.status}`}var F=class{constructor(e){chunkF2MMVEVC_cjs.a(this,"apiKey");chunkF2MMVEVC_cjs.a(this,"apiUrl");if(!e.apiKey)throw new Error("DeepCitation API key is required. Get one at https://deepcitation.com/dashboard");this.apiKey=e.apiKey,this.apiUrl=e.apiUrl?.replace(/\/$/,"")||L;}async uploadFile(e,n){let{blob:s,name:i}=U(e,n?.filename),r=new FormData;r.append("file",s,i),n?.attachmentId&&r.append("attachmentId",n.attachmentId),n?.filename&&r.append("filename",n.filename);let a=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:r});if(!a.ok)throw new Error(await g(a,"Upload"));return await a.json()}async convertToPdf(e){let n=typeof e=="string"?{url:e}:e,{url:s,file:i,filename:r,attachmentId:a}=n;if(!s&&!i)throw new Error("Either url or file must be provided");let o;if(s)o=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({url:s,filename:r,attachmentId:a})});else {let{blob:p,name:c}=U(i,r),l=new FormData;l.append("file",p,c),a&&l.append("attachmentId",a),r&&l.append("filename",r),o=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:l});}if(!o.ok)throw new Error(await g(o,"Conversion"));return await o.json()}async prepareConvertedFile(e){let n=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({attachmentId:e.attachmentId})});if(!n.ok)throw new Error(await g(n,"Prepare"));return await n.json()}async prepareFiles(e){if(e.length===0)return {fileDataParts:[],deepTextPromptPortion:[]};let n=e.map(({file:a,filename:o,attachmentId:p})=>this.uploadFile(a,{filename:o,attachmentId:p}).then(c=>({result:c,filename:o}))),i=(await Promise.all(n)).map(({result:a,filename:o})=>({attachmentId:a.attachmentId,deepTextPromptPortion:a.deepTextPromptPortion,filename:o||a.metadata?.filename})),r=i.map(a=>a.deepTextPromptPortion);return {fileDataParts:i,deepTextPromptPortion:r}}async verifyCitations(e,n,s){let i={};if(Array.isArray(n))for(let c of n){let l=chunk3GR7VKUJ_cjs.h(c);i[l]=c;}else if(typeof n=="object"&&n!==null)if("fullPhrase"in n||"value"in n){let c=chunk3GR7VKUJ_cjs.h(n);i[c]=n;}else Object.assign(i,n);else throw new Error("Invalid citations format");let r=`${this.apiUrl}/verifyCitations`,a={data:{attachmentId:e,citations:i,outputImageFormat:s?.outputImageFormat||"avif"}},o=await fetch(r,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(a)});if(!o.ok)throw new Error(await g(o,"Verification"));return await o.json()}async verifyCitationsFromLlmOutput(e,n){let{llmOutput:s,outputImageFormat:i="avif"}=e;if(n||(n=S(s)),Object.keys(n).length===0)return {verifications:{}};let r=new Map;for(let[c,l]of Object.entries(n)){let h=l.attachmentId||"";r.has(h)||r.set(h,{}),r.get(h)[c]=l;}let a=[];for(let[c,l]of r)c&&a.push(this.verifyCitations(c,l,{outputImageFormat:i}));let o=await Promise.all(a),p={};for(let c of o)Object.assign(p,c.verifications);return {verifications:p}}};
|
|
2
|
-
exports.a=q;exports.b=M;exports.c=S;exports.d=Z;exports.e=G;exports.f=F;
|
package/lib/chunk-QGXCOW3E.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var j=(e,t)=>{let o=/<cite\s+(?:fileId|attachmentId)='(\w{0,25})'\s+start_page[\_a-zA-Z]*='page[\_a-zA-Z]*(\d+)_index_(\d+)'\s+full_phrase='((?:[^'\\]|\\.)*)'\s+key_span='((?:[^'\\]|\\.)*)'\s+line(?:_ids|Ids)='([^']+)'(?:\s+(value|reasoning)='((?:[^'\\]|\\.)*)')?\s*\/>/g;return e.replace(o,(u,x,b,p,r,a,g,n)=>t&&a?.replace(/key_span=['"]|['"]/g,"")||"")},v=e=>e.replace(/<page_number_\d+_index_\d+>/g,"").replace(/<\/page_number_\d+_index_\d+>/g,"").trim(),$=e=>{let t=/<line id="[^"]*">|<\/line>/g;return e.replace(t,"")},N=e=>{if(!e)return null;let t=e.match(/\d+/)?.[0];return t?parseInt(t):null},z=e=>{let t=e?.trim()||"",o=t.split(/(<cite[\s\S]*?(?:\/>|<\/cite>))/gm);return o.length<=1?C(t):(t=o.map(u=>u.startsWith("<cite")?C(u):u).join(""),t)},C=e=>{let t=e;t=t.replace(/><\/cite>/g,"/>");let o=p=>{let r=p.toLowerCase();return r==="fullphrase"||r==="full_phrase"?"full_phrase":r==="lineids"||r==="line_ids"?"line_ids":r==="startpagekey"||r==="start_pagekey"||r==="start_page_key"?"start_page_key":r==="fileid"||r==="file_id"||r==="attachmentid"||r==="attachment_id"?"attachment_id":r==="keyspan"||r==="key_span"?"key_span":r==="reasoning"||r==="value"?r:r==="timestamps"||r==="timestamp"||r==="timestamps"?"timestamps":r},u=p=>p.replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),x=/(fullPhrase|full_phrase|keySpan|key_span|reasoning|value)\s*=\s*(['"])([\s\S]*?)(?=\s+(?:line_ids|lineIds|timestamps|fileId|file_id|attachmentId|attachment_id|start_page_key|start_pageKey|startPageKey|keySpan|key_span|reasoning|value|full_phrase)|\s*\/?>)/gm;t=t.replace(x,(p,r,a,g)=>{let n=g;return n.endsWith(a)&&(n=n.slice(0,-1)),n=n.replace(/(\r?\n)+/g," "),n=u(n),n=n.replace(/(\*|_){2,}/g,""),n=n.replace(/\\\\'/g,"'"),n=n.replace(/\\'/g,"'"),n=n.replace(/'/g,"\\'"),n=n.replace(/\\\\"/g,'"'),n=n.replace(/\\"/g,'"'),n=n.replace(/"/g,'\\"'),n=n.replace(/\*/g,""),`${o(r)}='${n}'`}),t=t.replace(/(line_ids|lineIds|timestamps)=['"]?([\[\]\(\){}A-Za-z0-9_\-, ]+)['"]?(\s*\/?>|\s+)/gm,(p,r,a,g)=>{let n=a.replace(/[A-Za-z\[\]\(\){}]/g,"");return n=n.replace(/(\d+)-(\d+)/g,(k,h,i)=>{let d=parseInt(h,10),m=parseInt(i,10),s=[];if(d<=m)for(let c=d;c<=m;c++)s.push(c);else s.push(d);return s.join(",")}),n=n.replace(/,+/g,",").replace(/^,|,$/g,""),`${o(r)}='${n}'${g}`});let b=p=>{let r=/([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(['"])((?:[^'"\\\n]|\\.)*)(?:\2)/g,a={},g;for(;g=r.exec(p);){let s=g[1],c=g[3],f=o(s);a[f]=c;}let n=Object.keys(a);if(n.length===0)return p;let k=typeof a.timestamps=="string"&&a.timestamps.length>0,h=n.filter(s=>s.startsWith("start_page")),i=[];a.attachment_id&&i.push("attachment_id"),k?(a.full_phrase&&i.push("full_phrase"),i.push("timestamps")):(h.includes("start_page_key")&&i.push("start_page_key"),h.filter(s=>s!=="start_page_key").sort().forEach(s=>i.push(s)),a.full_phrase&&i.push("full_phrase"),a.key_span&&i.push("key_span"),a.line_ids&&i.push("line_ids")),a.reasoning&&i.push("reasoning"),a.value&&i.push("value");let d=new Set(i);return n.filter(s=>!d.has(s)).sort().forEach(s=>i.push(s)),`<cite ${i.map(s=>`${s}='${a[s]}'`).join(" ")} />`};return t=t.replace(/<cite\b[\s\S]*?\/>/gm,p=>b(p)),t};function w(e){return new TextEncoder().encode(e)}function T(e){let t=1732584193,o=4023233417,u=2562383102,x=271733878,b=3285377520,p=e.length,r=p*8,a=p+1+8,g=Math.ceil(a/64)*64,n=new ArrayBuffer(g),k=new Uint8Array(n),h=new DataView(n);k.set(e),k[p]=128,h.setUint32(g-8,Math.floor(r/4294967296),false),h.setUint32(g-4,r>>>0,false);let i=new Uint32Array(80);for(let m=0;m<g;m+=64){for(let l=0;l<16;l++)i[l]=h.getUint32(m+l*4,false);for(let l=16;l<80;l++){let y=i[l-3]^i[l-8]^i[l-14]^i[l-16];i[l]=y<<1|y>>>31;}let s=t,c=o,f=u,_=x,S=b;for(let l=0;l<80;l++){let y,I;l<20?(y=c&f|~c&_,I=1518500249):l<40?(y=c^f^_,I=1859775393):l<60?(y=c&f|c&_|f&_,I=2400959708):(y=c^f^_,I=3395469782);let P=(s<<5|s>>>27)+y+S+I+i[l]>>>0;S=_,_=f,f=(c<<30|c>>>2)>>>0,c=s,s=P;}t=t+s>>>0,o=o+c>>>0,u=u+f>>>0,x=x+_>>>0,b=b+S>>>0;}let d=m=>m.toString(16).padStart(8,"0");return d(t)+d(o)+d(u)+d(x)+d(b)}function A(e){try{if(!e)return "";let t=typeof e=="string"?e:JSON.stringify(e);return T(w(t))}catch(t){console.error("Error in making the hash:",t);}return ""}function M(...e){return e.filter(Boolean).join(" ")}function R(e){let t=e.pageNumber||N(e.startPageKey),o=[e.attachmentId||"",t?.toString()||"",e.fullPhrase||"",e.keySpan?.toString()||"",e.lineIds?.join(",")||"",e.timestamps?.startTime||"",e.timestamps?.endTime||""];return A(o.join("|")).slice(0,16)}function U(e){let t=[e.attachmentId||"",e.label||"",e.verifiedFullPhrase||"",e.verifiedKeySpan||"",e.verifiedLineIds?.join(",")||"",e.verifiedPageNumber?.toString()||"",e.verifiedTimestamps?.startTime||"",e.verifiedTimestamps?.endTime||"",e.verifiedMatchSnippet||"",e.hitIndexWithinPage?.toString()||""];return A(t.join("|")).slice(0,16)}function V(e){let t=Math.random().toString(36).slice(2,11);return `${e}-${t}`}function Z(e,t={}){let{fallbackDisplay:o}=t;return e.keySpan?.toString()||e.citationNumber?.toString()||o||"1"}function O(e){return e.citationNumber?.toString()||"1"}function W(e){return e.keySpan?.toString()||""}function B(...e){return e.filter(Boolean).join(" ")}var H=4,G=1;export{j as a,v as b,$ as c,N as d,z as e,A as f,M as g,R as h,U as i,V as j,Z as k,O as l,W as m,B as n,H as o,G as p};
|
package/lib/chunk-RCHWBA6D.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {h,e}from'./chunk-QGXCOW3E.js';import {a}from'./chunk-O2XFH626.js';function E(t){if(!t)return;let e=[],n=t.split(",");for(let s of n){let i=s.trim();if(i)if(i.includes("-")){let[r,a]=i.split("-"),o=parseInt(r,10),p=parseInt(a,10);if(!isNaN(o)&&!isNaN(p)&&o<=p)for(let c=o;c<=p;c++)e.push(c);else isNaN(o)||e.push(o);}else {let r=parseInt(i,10);isNaN(r)||e.push(r);}}if(e.length!==0)return [...new Set(e)].sort((s,i)=>s-i)}function q(t){let e=t?.status,n=e==="not_found",s=e==="found_phrase_missed_value",i=e==="found_key_span_only",r=e==="partial_text_found"||e==="found_on_other_page"||e==="found_on_other_line"||e==="first_word_found";return {isVerified:e==="found"||i||r||s,isMiss:n,isPartialMatch:r,isPending:e==="pending"||e==="loading"||!e}}var M=(t,e,n,s)=>{let i=f=>f?f.replace(/^['"]|['"]$/g,"").replace(/\\'/g,"'"):void 0,r=n?.current?n.current++:void 0,a=t.substring(0,t.indexOf("<cite")),o=t.includes("/>")?t.slice(t.indexOf("/>")+2):"",p=t.substring(t.indexOf("<cite"),t.indexOf("/>")+2),c=(f,y)=>{for(let N of y){let D=new RegExp(`${N}='((?:[^'\\\\]|\\\\.)*)'`),v=f.match(D);if(v)return v[1]}},l=c(p,["attachment_id","attachmentId","file_id","fileId"]),h=l?.length===20?l:e||l,m=c(p,["start_page_key","startPageKey","start_page"]),d,_;if(m){let f=m.match(/page[\_a-zA-Z]*(\d+)_index_(\d+)/);f&&(d=parseInt(f[1]),_=parseInt(f[2]));}let B=i(c(p,["full_phrase","fullPhrase"])),T=i(c(p,["key_span","keySpan"])),V=i(c(p,["reasoning"])),K=i(c(p,["value"])),b;try{let y=c(p,["line_ids","lineIds"])?.replace(/[A-Za-z_[\](){}:]/g,"");b=y?E(y):void 0;}catch(f){s&&console.error("Error parsing lineIds",f);}let w=c(p,["timestamps"]),k;if(w){let[f,y]=w.split("-")||[];k={startTime:f,endTime:y};}let $={attachmentId:h,pageNumber:d,startPageKey:`page_number_${d||1}_index_${_||0}`,fullPhrase:B,keySpan:T||K,citationNumber:r,lineIds:b,beforeCite:a,timestamps:k,reasoning:V};return {beforeCite:a,afterCite:o,citation:$}},z=(t,e)=>{if(!t)return null;let n=t.fullPhrase??t.full_phrase,s=t.startPageKey??t.start_page_key,i=t.keySpan??t.key_span,r=t.lineIds??t.line_ids,a=t.attachmentId??t.attachment_id??t.fileId??t.file_id,o=t.reasoning,p=t.value;if(!n)return null;let c;if(s){let m=s.match(/page[_a-zA-Z]*(\d+)_index_(\d+)/i);if(m)c=parseInt(m[1],10);else {let d=s.match(/^(\d+)_(\d+)$/);d&&(c=parseInt(d[1],10));}}let l=r?.length?[...r].sort((m,d)=>m-d):void 0;return {attachmentId:a,pageNumber:c,fullPhrase:n,citationNumber:e,lineIds:l,keySpan:i||p,reasoning:o}},O=t=>typeof t=="object"&&t!==null&&("fullPhrase"in t||"full_phrase"in t||"startPageKey"in t||"start_page_key"in t||"keySpan"in t||"key_span"in t||"lineIds"in t||"line_ids"in t),I=t=>Array.isArray(t)?t.length>0&&t.some(O):typeof t=="object"&&t!==null?O(t):false,x=t=>{let e={},n=Array.isArray(t)?t:[t],s=1;for(let i of n){let r=z(i,s++);if(r&&r.fullPhrase){let a=h(r);e[a]=r;}}return e},P=(t,e)=>{if(!(!t||typeof t!="object")){if(t.citation&&I(t.citation)){let n=Array.isArray(t.citation)?t.citation:[t.citation];e.push(...n);}if(t.citations&&I(t.citations)){let n=Array.isArray(t.citations)?t.citations:[t.citations];e.push(...n);}if(Array.isArray(t))for(let n of t)P(n,e);else for(let n of Object.keys(t))n!=="citation"&&n!=="citations"&&P(t[n],e);}},R=t=>{let e$1=e(t),n=/<cite\s+[^>]*\/>/g,s=e$1.match(n);if(!s||s.length===0)return {};let i={},r={current:1};for(let a of s){let{citation:o}=M(a,void 0,r);if(o&&o.fullPhrase){let p=h(o);i[p]=o;}}return i},S=t=>{if(!t)return {};let e={};if(typeof t=="object"){if(I(t)){let i=x(t);Object.assign(e,i);}else {let i=[];if(P(t,i),i.length>0){let r=x(i);Object.assign(e,r);}}let n=JSON.stringify(t),s=R(n);Object.assign(e,s);}else if(typeof t=="string"){let n=R(t);Object.assign(e,n);}return e};function Z(t){let e=new Map,n=Array.isArray(t)?t.map((s,i)=>[h(s)||String(i+1),s]):Object.entries(t);for(let[s,i]of n){let r=i.attachmentId||"";e.has(r)||e.set(r,{}),e.get(r)[s]=i;}return e}function G(t){let e={},n=Array.isArray(t)?t.map((s,i)=>[h(s)||String(i+1),s]):Object.entries(t);for(let[s,i]of n){let r=i.attachmentId||"";e[r]||(e[r]={}),e[r][s]=i;}return e}var L="https://api.deepcitation.com";function U(t,e){if(typeof Buffer<"u"&&Buffer.isBuffer(t)){let n=Uint8Array.from(t);return {blob:new Blob([n]),name:e||"document"}}if(t instanceof Blob)return {blob:t,name:e||(t instanceof File?t.name:"document")};throw new Error("Invalid file type. Expected File, Blob, or Buffer.")}async function g(t,e){return (await t.json().catch(()=>({})))?.error?.message||`${e} failed with status ${t.status}`}var F=class{constructor(e){a(this,"apiKey");a(this,"apiUrl");if(!e.apiKey)throw new Error("DeepCitation API key is required. Get one at https://deepcitation.com/dashboard");this.apiKey=e.apiKey,this.apiUrl=e.apiUrl?.replace(/\/$/,"")||L;}async uploadFile(e,n){let{blob:s,name:i}=U(e,n?.filename),r=new FormData;r.append("file",s,i),n?.attachmentId&&r.append("attachmentId",n.attachmentId),n?.filename&&r.append("filename",n.filename);let a=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:r});if(!a.ok)throw new Error(await g(a,"Upload"));return await a.json()}async convertToPdf(e){let n=typeof e=="string"?{url:e}:e,{url:s,file:i,filename:r,attachmentId:a}=n;if(!s&&!i)throw new Error("Either url or file must be provided");let o;if(s)o=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({url:s,filename:r,attachmentId:a})});else {let{blob:p,name:c}=U(i,r),l=new FormData;l.append("file",p,c),a&&l.append("attachmentId",a),r&&l.append("filename",r),o=await fetch(`${this.apiUrl}/convertFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`},body:l});}if(!o.ok)throw new Error(await g(o,"Conversion"));return await o.json()}async prepareConvertedFile(e){let n=await fetch(`${this.apiUrl}/prepareFile`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({attachmentId:e.attachmentId})});if(!n.ok)throw new Error(await g(n,"Prepare"));return await n.json()}async prepareFiles(e){if(e.length===0)return {fileDataParts:[],deepTextPromptPortion:[]};let n=e.map(({file:a,filename:o,attachmentId:p})=>this.uploadFile(a,{filename:o,attachmentId:p}).then(c=>({result:c,filename:o}))),i=(await Promise.all(n)).map(({result:a,filename:o})=>({attachmentId:a.attachmentId,deepTextPromptPortion:a.deepTextPromptPortion,filename:o||a.metadata?.filename})),r=i.map(a=>a.deepTextPromptPortion);return {fileDataParts:i,deepTextPromptPortion:r}}async verifyCitations(e,n,s){let i={};if(Array.isArray(n))for(let c of n){let l=h(c);i[l]=c;}else if(typeof n=="object"&&n!==null)if("fullPhrase"in n||"value"in n){let c=h(n);i[c]=n;}else Object.assign(i,n);else throw new Error("Invalid citations format");let r=`${this.apiUrl}/verifyCitations`,a={data:{attachmentId:e,citations:i,outputImageFormat:s?.outputImageFormat||"avif"}},o=await fetch(r,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(a)});if(!o.ok)throw new Error(await g(o,"Verification"));return await o.json()}async verifyCitationsFromLlmOutput(e,n){let{llmOutput:s,outputImageFormat:i="avif"}=e;if(n||(n=S(s)),Object.keys(n).length===0)return {verifications:{}};let r=new Map;for(let[c,l]of Object.entries(n)){let h=l.attachmentId||"";r.has(h)||r.set(h,{}),r.get(h)[c]=l;}let a=[];for(let[c,l]of r)c&&a.push(this.verifyCitations(c,l,{outputImageFormat:i}));let o=await Promise.all(a),p={};for(let c of o)Object.assign(p,c.verifications);return {verifications:p}}};
|
|
2
|
-
export{q as a,M as b,S as c,Z as d,G as e,F as f};
|