ocr improved
This commit is contained in:
@@ -261,7 +261,7 @@ def create_app(args):
|
|||||||
|
|
||||||
# Initialize FastAPI
|
# Initialize FastAPI
|
||||||
app_kwargs = {
|
app_kwargs = {
|
||||||
"title": "LightRAG Server API",
|
"title": "Server API",
|
||||||
"description": (
|
"description": (
|
||||||
"Providing API for LightRAG core, Web UI and Ollama Model Emulation"
|
"Providing API for LightRAG core, Web UI and Ollama Model Emulation"
|
||||||
+ "(With authentication)"
|
+ "(With authentication)"
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ class WorkspaceCreateRequest(BaseModel):
|
|||||||
name: str = Field(..., min_length=1, max_length=100, description="Workspace name (alphanumeric, underscores, hyphens)")
|
name: str = Field(..., min_length=1, max_length=100, description="Workspace name (alphanumeric, underscores, hyphens)")
|
||||||
|
|
||||||
|
|
||||||
|
class WorkspaceRenameRequest(BaseModel):
|
||||||
|
new_name: str = Field(..., min_length=1, max_length=100, description="New workspace name (alphanumeric, underscores, hyphens)")
|
||||||
|
|
||||||
|
|
||||||
class WorkspaceResponse(BaseModel):
|
class WorkspaceResponse(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
path: str
|
path: str
|
||||||
@@ -74,6 +78,26 @@ async def create_workspace(
|
|||||||
raise HTTPException(status_code=500, detail=str(e))
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@router.patch("/{workspace_name}", response_model=WorkspaceResponse)
|
||||||
|
async def rename_workspace(
|
||||||
|
workspace_name: str,
|
||||||
|
rename_request: WorkspaceRenameRequest,
|
||||||
|
workspace_manager: WorkspaceManager = Depends(get_workspace_manager),
|
||||||
|
):
|
||||||
|
"""Rename a workspace."""
|
||||||
|
try:
|
||||||
|
await workspace_manager.rename_workspace(workspace_name, rename_request.new_name)
|
||||||
|
return WorkspaceResponse(
|
||||||
|
name=rename_request.new_name,
|
||||||
|
path=str(workspace_manager.base_working_dir / rename_request.new_name)
|
||||||
|
)
|
||||||
|
except ValueError as e:
|
||||||
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error renaming workspace: {e}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/{workspace_name}")
|
@router.delete("/{workspace_name}")
|
||||||
async def delete_workspace(
|
async def delete_workspace(
|
||||||
workspace_name: str,
|
workspace_name: str,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
import{e as o,c as l,g as b,k as O,h as P,j as p,l as w,m as c,n as v,t as A,o as N}from"./_baseUniq-DUOGdItU.js";import{a_ as g,aw as _,a$ as $,b0 as E,b1 as F,b2 as x,b3 as M,b4 as y,b5 as B,b6 as T}from"./mermaid-vendor-GB05DkYd.js";var S=/\s/;function G(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var m=NaN,R=/^[-+]0x[0-9a-f]+$/i,q=/^0b[01]+$/i,z=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=q.test(n);return t||z.test(n)?C(n.slice(2),t?2:8):R.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?l(n):[]}var I=Object.prototype,J=I.hasOwnProperty,dn=_(function(n,r){n=Object(n);var t=-1,e=r.length,i=e>2?r[2]:void 0;for(i&&$(r[0],r[1],i)&&(e=1);++t<e;)for(var f=r[t],a=E(f),s=-1,d=a.length;++s<d;){var u=a[s],h=n[u];(h===void 0||F(h,I[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var i=Object(r);if(!x(r)){var f=b(t);r=O(r),t=function(s){return f(i[s],s,i)}}var a=n(r,t,e);return a>-1?i[f?r[a]:a]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var i=t==null?0:D(t);return i<0&&(i=U(e+i,0)),P(n,b(r),i)}var hn=Q(Z);function V(n,r){var t=-1,e=x(n)?Array(n.length):[];return p(n,function(i,f,a){e[++t]=r(i,f,a)}),e}function gn(n,r){var t=M(n)?w:V;return t(n,b(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function bn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,i=n.length;++e<i;){var f=n[e],a=r(f);if(a!=null&&(s===void 0?a===a&&!o(a):t(a,s)))var s=a,d=f}return d}function mn(n){return n&&n.length?tn(n,y,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=v(r,n);for(var i=-1,f=r.length,a=f-1,s=n;s!=null&&++i<f;){var d=A(r[i]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(i!=a){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[i+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,i=r.length,f={};++e<i;){var a=r[e],s=N(n,a);t(s,a)&&an(f,v(a,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,bn as h,dn as i,D as j,un as l,gn as m,Y as t};
|
import{e as o,c as l,g as b,k as O,h as P,j as p,l as w,m as c,n as v,t as A,o as N}from"./_baseUniq-EbUtpKbD.js";import{a_ as g,aw as _,a$ as $,b0 as E,b1 as F,b2 as x,b3 as M,b4 as y,b5 as B,b6 as T}from"./mermaid-vendor-DhSh_Elb.js";var S=/\s/;function G(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var m=NaN,R=/^[-+]0x[0-9a-f]+$/i,q=/^0b[01]+$/i,z=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=q.test(n);return t||z.test(n)?C(n.slice(2),t?2:8):R.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?l(n):[]}var I=Object.prototype,J=I.hasOwnProperty,dn=_(function(n,r){n=Object(n);var t=-1,e=r.length,i=e>2?r[2]:void 0;for(i&&$(r[0],r[1],i)&&(e=1);++t<e;)for(var f=r[t],a=E(f),s=-1,d=a.length;++s<d;){var u=a[s],h=n[u];(h===void 0||F(h,I[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var i=Object(r);if(!x(r)){var f=b(t);r=O(r),t=function(s){return f(i[s],s,i)}}var a=n(r,t,e);return a>-1?i[f?r[a]:a]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var i=t==null?0:D(t);return i<0&&(i=U(e+i,0)),P(n,b(r),i)}var hn=Q(Z);function V(n,r){var t=-1,e=x(n)?Array(n.length):[];return p(n,function(i,f,a){e[++t]=r(i,f,a)}),e}function gn(n,r){var t=M(n)?w:V;return t(n,b(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function bn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,i=n.length;++e<i;){var f=n[e],a=r(f);if(a!=null&&(s===void 0?a===a&&!o(a):t(a,s)))var s=a,d=f}return d}function mn(n){return n&&n.length?tn(n,y,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=v(r,n);for(var i=-1,f=r.length,a=f-1,s=n;s!=null&&++i<f;){var d=A(r[i]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(i!=a){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[i+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,i=r.length,f={};++e<i;){var a=r[e],s=N(n,a);t(s,a)&&an(f,v(a,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,bn as h,dn as i,D as j,un as l,gn as m,Y as t};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{_ as l}from"./mermaid-vendor-GB05DkYd.js";function m(e,c){var i,t,o;e.accDescr&&((i=c.setAccDescription)==null||i.call(c,e.accDescr)),e.accTitle&&((t=c.setAccTitle)==null||t.call(c,e.accTitle)),e.title&&((o=c.setDiagramTitle)==null||o.call(c,e.title))}l(m,"populateCommonDb");export{m as p};
|
import{_ as l}from"./mermaid-vendor-DhSh_Elb.js";function m(e,c){var i,t,o;e.accDescr&&((i=c.setAccDescription)==null||i.call(c,e.accDescr)),e.accTitle&&((t=c.setAccTitle)==null||t.call(c,e.accTitle)),e.title&&((o=c.setDiagramTitle)==null||o.call(c,e.title))}l(m,"populateCommonDb");export{m as p};
|
||||||
@@ -1 +1 @@
|
|||||||
import{_ as n,a2 as x,j as l}from"./mermaid-vendor-GB05DkYd.js";var c=n((a,t)=>{const e=a.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const r in t.attrs)e.attr(r,t.attrs[r]);return t.class&&e.attr("class",t.class),e},"drawRect"),d=n((a,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};c(a,e).lower()},"drawBackgroundRect"),g=n((a,t)=>{const e=t.text.replace(x," "),r=a.append("text");r.attr("x",t.x),r.attr("y",t.y),r.attr("class","legend"),r.style("text-anchor",t.anchor),t.class&&r.attr("class",t.class);const s=r.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),r},"drawText"),h=n((a,t,e,r)=>{const s=a.append("image");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",i)},"drawImage"),m=n((a,t,e,r)=>{const s=a.append("use");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),y=n(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=n(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{d as a,p as b,m as c,c as d,h as e,g as f,y as g};
|
import{_ as n,a2 as x,j as l}from"./mermaid-vendor-DhSh_Elb.js";var c=n((a,t)=>{const e=a.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const r in t.attrs)e.attr(r,t.attrs[r]);return t.class&&e.attr("class",t.class),e},"drawRect"),d=n((a,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};c(a,e).lower()},"drawBackgroundRect"),g=n((a,t)=>{const e=t.text.replace(x," "),r=a.append("text");r.attr("x",t.x),r.attr("y",t.y),r.attr("class","legend"),r.style("text-anchor",t.anchor),t.class&&r.attr("class",t.class);const s=r.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),r},"drawText"),h=n((a,t,e,r)=>{const s=a.append("image");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",i)},"drawImage"),m=n((a,t,e,r)=>{const s=a.append("use");s.attr("x",t),s.attr("y",e);const i=l.sanitizeUrl(r);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),y=n(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=n(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{d as a,p as b,m as c,c as d,h as e,g as f,y as g};
|
||||||
@@ -1 +1 @@
|
|||||||
import{_ as s}from"./mermaid-vendor-GB05DkYd.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as I};
|
import{_ as s}from"./mermaid-vendor-DhSh_Elb.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as I};
|
||||||
@@ -1 +1 @@
|
|||||||
import{_ as a,d as o}from"./mermaid-vendor-GB05DkYd.js";var d=a((t,e)=>{let n;return e==="sandbox"&&(n=o("#i"+t)),(e==="sandbox"?o(n.nodes()[0].contentDocument.body):o("body")).select(`[id="${t}"]`)},"getDiagramElement");export{d as g};
|
import{_ as a,d as o}from"./mermaid-vendor-DhSh_Elb.js";var d=a((t,e)=>{let n;return e==="sandbox"&&(n=o("#i"+t)),(e==="sandbox"?o(n.nodes()[0].contentDocument.body):o("body")).select(`[id="${t}"]`)},"getDiagramElement");export{d as g};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import{_ as e}from"./mermaid-vendor-GB05DkYd.js";var l=e(()=>`
|
import{_ as e}from"./mermaid-vendor-DhSh_Elb.js";var l=e(()=>`
|
||||||
/* Font Awesome icon styling - consolidated */
|
/* Font Awesome icon styling - consolidated */
|
||||||
.label-icon {
|
.label-icon {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{_ as a,e as w,l as x}from"./mermaid-vendor-GB05DkYd.js";var d=a((e,t,i,o)=>{e.attr("class",i);const{width:r,height:h,x:n,y:c}=u(e,t);w(e,h,r,o);const s=l(n,c,r,h,t);e.attr("viewBox",s),x.debug(`viewBox configured: ${s} with padding: ${t}`)},"setupViewPortForSVG"),u=a((e,t)=>{var o;const i=((o=e.node())==null?void 0:o.getBBox())||{width:0,height:0,x:0,y:0};return{width:i.width+t*2,height:i.height+t*2,x:i.x,y:i.y}},"calculateDimensionsWithPadding"),l=a((e,t,i,o,r)=>`${e-r} ${t-r} ${i} ${o}`,"createViewBox");export{d as s};
|
import{_ as a,e as w,l as x}from"./mermaid-vendor-DhSh_Elb.js";var d=a((e,t,i,o)=>{e.attr("class",i);const{width:r,height:h,x:n,y:c}=u(e,t);w(e,h,r,o);const s=l(n,c,r,h,t);e.attr("viewBox",s),x.debug(`viewBox configured: ${s} with padding: ${t}`)},"setupViewPortForSVG"),u=a((e,t)=>{var o;const i=((o=e.node())==null?void 0:o.getBBox())||{width:0,height:0,x:0,y:0};return{width:i.width+t*2,height:i.height+t*2,x:i.x,y:i.y}},"calculateDimensionsWithPadding"),l=a((e,t,i,o,r)=>`${e-r} ${t-r} ${i} ${o}`,"createViewBox");export{d as s};
|
||||||
File diff suppressed because one or more lines are too long
1
LightRAG-main/lightrag/api/webui/assets/classDiagram-M3E45YP4-DCkYfNiK.js
generated
Normal file
1
LightRAG-main/lightrag/api/webui/assets/classDiagram-M3E45YP4-DCkYfNiK.js
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{s as a,c as s,a as e,C as t}from"./chunk-SZ463SBG-D0Vbsmvl.js";import{_ as i}from"./mermaid-vendor-DhSh_Elb.js";import"./chunk-E2GYISFI-DlizJ9NZ.js";import"./chunk-BFAMUDN2-D_TDltSo.js";import"./chunk-SKB7J2MH-ARKQCtIy.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{s as a,c as s,a as e,C as t}from"./chunk-SZ463SBG-HfqGkezl.js";import{_ as i}from"./mermaid-vendor-GB05DkYd.js";import"./chunk-E2GYISFI-Cixkpli4.js";import"./chunk-BFAMUDN2-ghvP-Rq6.js";import"./chunk-SKB7J2MH-gQmYvnvi.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
|
||||||
1
LightRAG-main/lightrag/api/webui/assets/classDiagram-v2-YAWTLIQI-DCkYfNiK.js
generated
Normal file
1
LightRAG-main/lightrag/api/webui/assets/classDiagram-v2-YAWTLIQI-DCkYfNiK.js
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{s as a,c as s,a as e,C as t}from"./chunk-SZ463SBG-D0Vbsmvl.js";import{_ as i}from"./mermaid-vendor-DhSh_Elb.js";import"./chunk-E2GYISFI-DlizJ9NZ.js";import"./chunk-BFAMUDN2-D_TDltSo.js";import"./chunk-SKB7J2MH-ARKQCtIy.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{s as a,c as s,a as e,C as t}from"./chunk-SZ463SBG-HfqGkezl.js";import{_ as i}from"./mermaid-vendor-GB05DkYd.js";import"./chunk-E2GYISFI-Cixkpli4.js";import"./chunk-BFAMUDN2-ghvP-Rq6.js";import"./chunk-SKB7J2MH-gQmYvnvi.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
|
|
||||||
1
LightRAG-main/lightrag/api/webui/assets/clone-CMMpvbRX.js
generated
Normal file
1
LightRAG-main/lightrag/api/webui/assets/clone-CMMpvbRX.js
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{b as r}from"./_baseUniq-EbUtpKbD.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{b as r}from"./_baseUniq-DUOGdItU.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
|||||||
import{p as y}from"./chunk-353BL4L5-BdESKFSH.js";import{_ as l,s as B,g as S,t as z,q as F,a as P,b as E,F as v,K as W,e as T,z as D,G as _,H as A,l as w}from"./mermaid-vendor-GB05DkYd.js";import{p as N}from"./treemap-75Q7IDZK-C9xJN-2g.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DUOGdItU.js";import"./_basePickBy-V-PVS_is.js";import"./clone-CyTo8HmA.js";var x={packet:[]},m=structuredClone(x),L=A.packet,Y=l(()=>{const t=v({...L,..._().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),G=l(()=>m.packet,"getPacket"),H=l(t=>{t.length>0&&m.packet.push(t)},"pushWord"),I=l(()=>{D(),m=structuredClone(x)},"clear"),u={pushWord:H,getPacket:G,getConfig:Y,clear:I,setAccTitle:E,getAccTitle:P,setDiagramTitle:F,getDiagramTitle:z,getAccDescription:S,setAccDescription:B},K=1e4,M=l(t=>{y(t,u);let e=-1,o=[],n=1;const{bitsPerRow:i}=u.getConfig();for(let{start:a,end:r,bits:c,label:f}of t.blocks){if(a!==void 0&&r!==void 0&&r<a)throw new Error(`Packet block ${a} - ${r} is invalid. End must be greater than start.`);if(a??(a=e+1),a!==e+1)throw new Error(`Packet block ${a} - ${r??a} is not contiguous. It should start from ${e+1}.`);if(c===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(r??(r=a+(c??1)-1),c??(c=r-a+1),e=r,w.debug(`Packet block ${a} - ${e} with label ${f}`);o.length<=i+1&&u.getPacket().length<K;){const[d,p]=O({start:a,end:r,bits:c,label:f},n,i);if(o.push(d),d.end+1===n*i&&(u.pushWord(o),o=[],n++),!p)break;({start:a,end:r,bits:c,label:f}=p)}}u.pushWord(o)},"populate"),O=l((t,e,o)=>{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*o)return[t,void 0];const n=e*o-1,i=e*o;return[{start:t.start,end:n,label:t.label,bits:n-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),q={parse:l(async t=>{const e=await N("packet",t);w.debug(e),M(e)},"parse")},R=l((t,e,o,n)=>{const i=n.db,a=i.getConfig(),{rowHeight:r,paddingY:c,bitWidth:f,bitsPerRow:d}=a,p=i.getPacket(),s=i.getDiagramTitle(),k=r+c,g=k*(p.length+1)-(s?0:r),b=f*d+2,h=W(e);h.attr("viewbox",`0 0 ${b} ${g}`),T(h,g,b,a.useMaxWidth);for(const[C,$]of p.entries())U(h,$,C,a);h.append("text").text(s).attr("x",b/2).attr("y",g-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),U=l((t,e,o,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:r,bitsPerRow:c,showBits:f})=>{const d=t.append("g"),p=o*(n+a)+a;for(const s of e){const k=s.start%c*r+1,g=(s.end-s.start+1)*r-i;if(d.append("rect").attr("x",k).attr("y",p).attr("width",g).attr("height",n).attr("class","packetBlock"),d.append("text").attr("x",k+g/2).attr("y",p+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!f)continue;const b=s.end===s.start,h=p-2;d.append("text").attr("x",k+(b?g/2:0)).attr("y",h).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",b?"middle":"start").text(s.start),b||d.append("text").attr("x",k+g).attr("y",h).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),X={draw:R},j={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},J=l(({packet:t}={})=>{const e=v(j,t);return`
|
import{p as y}from"./chunk-353BL4L5-DXKjutT4.js";import{_ as l,s as B,g as S,t as z,q as F,a as P,b as E,F as v,K as W,e as T,z as D,G as _,H as A,l as w}from"./mermaid-vendor-DhSh_Elb.js";import{p as N}from"./treemap-75Q7IDZK-NkslzRw7.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-EbUtpKbD.js";import"./_basePickBy-DBk8Gtra.js";import"./clone-CMMpvbRX.js";var x={packet:[]},m=structuredClone(x),L=A.packet,Y=l(()=>{const t=v({...L,..._().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),G=l(()=>m.packet,"getPacket"),H=l(t=>{t.length>0&&m.packet.push(t)},"pushWord"),I=l(()=>{D(),m=structuredClone(x)},"clear"),u={pushWord:H,getPacket:G,getConfig:Y,clear:I,setAccTitle:E,getAccTitle:P,setDiagramTitle:F,getDiagramTitle:z,getAccDescription:S,setAccDescription:B},K=1e4,M=l(t=>{y(t,u);let e=-1,o=[],n=1;const{bitsPerRow:i}=u.getConfig();for(let{start:a,end:r,bits:c,label:f}of t.blocks){if(a!==void 0&&r!==void 0&&r<a)throw new Error(`Packet block ${a} - ${r} is invalid. End must be greater than start.`);if(a??(a=e+1),a!==e+1)throw new Error(`Packet block ${a} - ${r??a} is not contiguous. It should start from ${e+1}.`);if(c===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(r??(r=a+(c??1)-1),c??(c=r-a+1),e=r,w.debug(`Packet block ${a} - ${e} with label ${f}`);o.length<=i+1&&u.getPacket().length<K;){const[d,p]=O({start:a,end:r,bits:c,label:f},n,i);if(o.push(d),d.end+1===n*i&&(u.pushWord(o),o=[],n++),!p)break;({start:a,end:r,bits:c,label:f}=p)}}u.pushWord(o)},"populate"),O=l((t,e,o)=>{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*o)return[t,void 0];const n=e*o-1,i=e*o;return[{start:t.start,end:n,label:t.label,bits:n-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),q={parse:l(async t=>{const e=await N("packet",t);w.debug(e),M(e)},"parse")},R=l((t,e,o,n)=>{const i=n.db,a=i.getConfig(),{rowHeight:r,paddingY:c,bitWidth:f,bitsPerRow:d}=a,p=i.getPacket(),s=i.getDiagramTitle(),k=r+c,g=k*(p.length+1)-(s?0:r),b=f*d+2,h=W(e);h.attr("viewbox",`0 0 ${b} ${g}`),T(h,g,b,a.useMaxWidth);for(const[C,$]of p.entries())U(h,$,C,a);h.append("text").text(s).attr("x",b/2).attr("y",g-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),U=l((t,e,o,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:r,bitsPerRow:c,showBits:f})=>{const d=t.append("g"),p=o*(n+a)+a;for(const s of e){const k=s.start%c*r+1,g=(s.end-s.start+1)*r-i;if(d.append("rect").attr("x",k).attr("y",p).attr("width",g).attr("height",n).attr("class","packetBlock"),d.append("text").attr("x",k+g/2).attr("y",p+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!f)continue;const b=s.end===s.start,h=p-2;d.append("text").attr("x",k+(b?g/2:0)).attr("y",h).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",b?"middle":"start").text(s.start),b||d.append("text").attr("x",k+g).attr("y",h).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),X={draw:R},j={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},J=l(({packet:t}={})=>{const e=v(j,t);return`
|
||||||
.packetByte {
|
.packetByte {
|
||||||
font-size: ${e.byteFontSize};
|
font-size: ${e.byteFontSize};
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10
LightRAG-main/lightrag/api/webui/assets/feature-retrieval-tl4auWbF.js
generated
Normal file
10
LightRAG-main/lightrag/api/webui/assets/feature-retrieval-tl4auWbF.js
generated
Normal file
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
|||||||
import{g as q1}from"./chunk-E2GYISFI-Cixkpli4.js";import{_ as m,o as O1,l as ee,c as be,d as Se,p as H1,r as X1,u as i1,b as Q1,s as J1,q as Z1,a as $1,g as et,t as tt,k as st,v as it,J as rt,x as nt,y as s1,z as at,A as ut,B as lt,C as ot}from"./mermaid-vendor-GB05DkYd.js";import{g as ct}from"./chunk-BFAMUDN2-ghvP-Rq6.js";import{s as ht}from"./chunk-SKB7J2MH-gQmYvnvi.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var dt="flowchart-",Pe,pt=(Pe=class{constructor(){this.vertexCounter=0,this.config=be(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Q1,this.setAccDescription=J1,this.setDiagramTitle=Z1,this.getAccTitle=$1,this.getAccDescription=et,this.getDiagramTitle=tt,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}sanitizeText(i){return st.sanitizeText(i,this.config)}lookUpDomId(i){for(const n of this.vertices.values())if(n.id===i)return n.domId;return i}addVertex(i,n,a,u,l,f,c={},A){var V,C;if(!i||i.trim().length===0)return;let r;if(A!==void 0){let p;A.includes(`
|
import{g as q1}from"./chunk-E2GYISFI-DlizJ9NZ.js";import{_ as m,o as O1,l as ee,c as be,d as Se,p as H1,r as X1,u as i1,b as Q1,s as J1,q as Z1,a as $1,g as et,t as tt,k as st,v as it,J as rt,x as nt,y as s1,z as at,A as ut,B as lt,C as ot}from"./mermaid-vendor-DhSh_Elb.js";import{g as ct}from"./chunk-BFAMUDN2-D_TDltSo.js";import{s as ht}from"./chunk-SKB7J2MH-ARKQCtIy.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var dt="flowchart-",Pe,pt=(Pe=class{constructor(){this.vertexCounter=0,this.config=be(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Q1,this.setAccDescription=J1,this.setDiagramTitle=Z1,this.getAccTitle=$1,this.getAccDescription=et,this.getDiagramTitle=tt,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}sanitizeText(i){return st.sanitizeText(i,this.config)}lookUpDomId(i){for(const n of this.vertices.values())if(n.id===i)return n.domId;return i}addVertex(i,n,a,u,l,f,c={},A){var V,C;if(!i||i.trim().length===0)return;let r;if(A!==void 0){let p;A.includes(`
|
||||||
`)?p=A+`
|
`)?p=A+`
|
||||||
`:p=`{
|
`:p=`{
|
||||||
`+A+`
|
`+A+`
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
LightRAG-main/lightrag/api/webui/assets/index-DL7oGUSp.css
generated
Normal file
1
LightRAG-main/lightrag/api/webui/assets/index-DL7oGUSp.css
generated
Normal file
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
|||||||
import{_ as e,l as o,K as i,e as n,L as p}from"./mermaid-vendor-GB05DkYd.js";import{p as m}from"./treemap-75Q7IDZK-C9xJN-2g.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DUOGdItU.js";import"./_basePickBy-V-PVS_is.js";import"./clone-CyTo8HmA.js";var g={parse:e(async r=>{const a=await m("info",r);o.debug(a)},"parse")},v={version:p.version+""},d=e(()=>v.version,"getVersion"),c={getVersion:d},l=e((r,a,s)=>{o.debug(`rendering info diagram
|
import{_ as e,l as o,K as i,e as n,L as p}from"./mermaid-vendor-DhSh_Elb.js";import{p as m}from"./treemap-75Q7IDZK-NkslzRw7.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-EbUtpKbD.js";import"./_basePickBy-DBk8Gtra.js";import"./clone-CMMpvbRX.js";var g={parse:e(async r=>{const a=await m("info",r);o.debug(a)},"parse")},v={version:p.version+""},d=e(()=>v.version,"getVersion"),c={getVersion:d},l=e((r,a,s)=>{o.debug(`rendering info diagram
|
||||||
`+r);const t=i(a);n(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${s}`)},"draw"),f={draw:l},L={parser:g,db:c,renderer:f};export{L as diagram};
|
`+r);const t=i(a);n(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${s}`)},"draw"),f={draw:l},L={parser:g,db:c,renderer:f};export{L as diagram};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import{a as gt,g as lt,f as mt,d as xt}from"./chunk-67H74DCK-C_VoI5m8.js";import{g as kt}from"./chunk-E2GYISFI-Cixkpli4.js";import{_ as r,g as _t,s as bt,a as vt,b as wt,t as Tt,q as St,c as R,d as G,e as $t,z as Mt,N as et}from"./mermaid-vendor-GB05DkYd.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var U=function(){var t=r(function(h,n,a,l){for(a=a||{},l=h.length;l--;a[h[l]]=n);return a},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],c=[1,10],i=[1,11],f=[1,12],u=[1,13],y=[1,14],g={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:r(function(n,a,l,d,p,o,v){var k=o.length-1;switch(p){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:d.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),d.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),d.setAccDescription(this.$);break;case 12:d.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:d.addTask(o[k-1],o[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:c,14:i,16:f,17:u,18:y},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:c,14:i,16:f,17:u,18:y},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:r(function(n,a){if(a.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=a,l}},"parseError"),parse:r(function(n){var a=this,l=[0],d=[],p=[null],o=[],v=this.table,k="",C=0,K=0,dt=2,Q=1,yt=o.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(n,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;o.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,p.length=p.length-w,o.length=o.length-w}r(pt,"popStack");function D(){var w;return w=d.pop()||_.lex()||Q,typeof w!="number"&&(w instanceof Array&&(d=w,w=d.pop()),w=a.symbols_[w]||w),w}r(D,"lex");for(var b,A,T,q,F={},N,M,tt,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((b===null||typeof b>"u")&&(b=D()),T=v[A]&&v[A][b]),typeof T>"u"||!T.length||!T[0]){var X="";z=[];for(N in v[A])this.terminals_[N]&&N>dt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?X="Parse error on line "+(C+1)+`:
|
import{a as gt,g as lt,f as mt,d as xt}from"./chunk-67H74DCK-z6QYOoF8.js";import{g as kt}from"./chunk-E2GYISFI-DlizJ9NZ.js";import{_ as r,g as _t,s as bt,a as vt,b as wt,t as Tt,q as St,c as R,d as G,e as $t,z as Mt,N as et}from"./mermaid-vendor-DhSh_Elb.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var U=function(){var t=r(function(h,n,a,l){for(a=a||{},l=h.length;l--;a[h[l]]=n);return a},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],c=[1,10],i=[1,11],f=[1,12],u=[1,13],y=[1,14],g={trace:r(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:r(function(n,a,l,d,p,o,v){var k=o.length-1;switch(p){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:d.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),d.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),d.setAccDescription(this.$);break;case 12:d.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:d.addTask(o[k-1],o[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:c,14:i,16:f,17:u,18:y},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:c,14:i,16:f,17:u,18:y},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:r(function(n,a){if(a.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=a,l}},"parseError"),parse:r(function(n){var a=this,l=[0],d=[],p=[null],o=[],v=this.table,k="",C=0,K=0,dt=2,Q=1,yt=o.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(n,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;o.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,p.length=p.length-w,o.length=o.length-w}r(pt,"popStack");function D(){var w;return w=d.pop()||_.lex()||Q,typeof w!="number"&&(w instanceof Array&&(d=w,w=d.pop()),w=a.symbols_[w]||w),w}r(D,"lex");for(var b,A,T,q,F={},N,M,tt,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((b===null||typeof b>"u")&&(b=D()),T=v[A]&&v[A][b]),typeof T>"u"||!T.length||!T[0]){var X="";z=[];for(N in v[A])this.terminals_[N]&&N>dt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?X="Parse error on line "+(C+1)+`:
|
||||||
`+_.showPosition()+`
|
`+_.showPosition()+`
|
||||||
Expecting `+z.join(", ")+", got '"+(this.terminals_[b]||b)+"'":X="Parse error on line "+(C+1)+": Unexpected "+(b==Q?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(X,{text:_.match,token:this.terminals_[b]||b,line:_.yylineno,loc:Y,expected:z})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+b);switch(T[0]){case 1:l.push(b),p.push(_.yytext),o.push(_.yylloc),l.push(T[1]),b=null,K=_.yyleng,k=_.yytext,C=_.yylineno,Y=_.yylloc;break;case 2:if(M=this.productions_[T[1]][1],F.$=p[p.length-M],F._$={first_line:o[o.length-(M||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(M||1)].first_column,last_column:o[o.length-1].last_column},ft&&(F._$.range=[o[o.length-(M||1)].range[0],o[o.length-1].range[1]]),q=this.performAction.apply(F,[k,K,C,I.yy,T[1],p,o].concat(yt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),p=p.slice(0,-1*M),o=o.slice(0,-1*M)),l.push(this.productions_[T[1]][0]),p.push(F.$),o.push(F._$),tt=v[l[l.length-2]][l[l.length-1]],l.push(tt);break;case 3:return!0}}return!0},"parse")},m=function(){var h={EOF:1,parseError:r(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:r(function(n,a){return this.yy=a||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var a=n.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:r(function(n){var a=n.length,l=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===d.length?this.yylloc.first_column:0)+d[d.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
Expecting `+z.join(", ")+", got '"+(this.terminals_[b]||b)+"'":X="Parse error on line "+(C+1)+": Unexpected "+(b==Q?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(X,{text:_.match,token:this.terminals_[b]||b,line:_.yylineno,loc:Y,expected:z})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+b);switch(T[0]){case 1:l.push(b),p.push(_.yytext),o.push(_.yylloc),l.push(T[1]),b=null,K=_.yyleng,k=_.yytext,C=_.yylineno,Y=_.yylloc;break;case 2:if(M=this.productions_[T[1]][1],F.$=p[p.length-M],F._$={first_line:o[o.length-(M||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(M||1)].first_column,last_column:o[o.length-1].last_column},ft&&(F._$.range=[o[o.length-(M||1)].range[0],o[o.length-1].range[1]]),q=this.performAction.apply(F,[k,K,C,I.yy,T[1],p,o].concat(yt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),p=p.slice(0,-1*M),o=o.slice(0,-1*M)),l.push(this.productions_[T[1]][0]),p.push(F.$),o.push(F._$),tt=v[l[l.length-2]][l[l.length-1]],l.push(tt);break;case 3:return!0}}return!0},"parse")},m=function(){var h={EOF:1,parseError:r(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:r(function(n,a){return this.yy=a||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:r(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var a=n.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:r(function(n){var a=n.length,l=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===d.length?this.yylloc.first_column:0)+d[d.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(n){this.unput(this.match.slice(n))},"less"),pastInput:r(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var n=this.pastInput(),a=new Array(n.length+1).join("-");return n+this.upcomingInput()+`
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(n){this.unput(this.match.slice(n))},"less"),pastInput:r(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var n=this.pastInput(),a=new Array(n.length+1).join("-");return n+this.upcomingInput()+`
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import{g as fe}from"./chunk-E2GYISFI-Cixkpli4.js";import{_ as c,l as te,c as W,K as ye,a8 as be,a9 as me,aa as _e,a3 as Ee,H as Y,i as G,v as ke,J as Se,a4 as Ne,a5 as le,a6 as ce}from"./mermaid-vendor-GB05DkYd.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var $=function(){var t=c(function(_,s,n,a){for(n=n||{},a=_.length;a--;n[_[a]]=s);return n},"o"),g=[1,4],d=[1,13],r=[1,12],p=[1,15],E=[1,16],f=[1,20],h=[1,19],L=[6,7,8],C=[1,26],w=[1,24],N=[1,25],i=[6,7,11],H=[1,31],x=[6,7,11,24],P=[1,6,13,16,17,20,23],M=[1,35],U=[1,36],A=[1,6,7,11,13,16,17,20,23],j=[1,38],V={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:c(function(s,n,a,o,u,e,B){var l=e.length-1;switch(u){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",e[l-1].id),o.addNode(e[l-2].length,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 16:o.getLogger().info("Node: ",e[l].id),o.addNode(e[l-1].length,e[l].id,e[l].descr,e[l].type);break;case 17:o.getLogger().trace("Icon: ",e[l]),o.decorateNode({icon:e[l]});break;case 18:case 23:o.decorateNode({class:e[l]});break;case 19:o.getLogger().trace("SPACELIST");break;case 20:o.getLogger().trace("Node: ",e[l-1].id),o.addNode(0,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 21:o.getLogger().trace("Node: ",e[l].id),o.addNode(0,e[l].id,e[l].descr,e[l].type);break;case 22:o.decorateNode({icon:e[l]});break;case 27:o.getLogger().trace("node found ..",e[l-2]),this.$={id:e[l-1],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 28:this.$={id:e[l],descr:e[l],type:0};break;case 29:o.getLogger().trace("node found ..",e[l-3]),this.$={id:e[l-3],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 30:this.$=e[l-1]+e[l];break;case 31:this.$=e[l];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:d,7:[1,10],9:9,12:11,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},t(L,[2,3]),{1:[2,2]},t(L,[2,4]),t(L,[2,5]),{1:[2,6],6:d,12:21,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},{6:d,9:22,12:11,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},{6:C,7:w,10:23,11:N},t(i,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:f,23:h}),t(i,[2,19]),t(i,[2,21],{15:30,24:H}),t(i,[2,22]),t(i,[2,23]),t(x,[2,25]),t(x,[2,26]),t(x,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:w,10:34,11:N},{1:[2,7],6:d,12:21,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},t(P,[2,14],{7:M,11:U}),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(i,[2,16],{15:37,24:H}),t(i,[2,17]),t(i,[2,18]),t(i,[2,20],{24:j}),t(x,[2,31]),{21:[1,39]},{22:[1,40]},t(P,[2,13],{7:M,11:U}),t(A,[2,11]),t(A,[2,12]),t(i,[2,15],{24:j}),t(x,[2,30]),{22:[1,41]},t(x,[2,27]),t(x,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:c(function(s,n){if(n.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=n,a}},"parseError"),parse:c(function(s){var n=this,a=[0],o=[],u=[null],e=[],B=this.table,l="",z=0,ie=0,ue=2,re=1,ge=e.slice.call(arguments,1),b=Object.create(this.lexer),T={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(T.yy[J]=this.yy[J]);b.setInput(s,T.yy),T.yy.lexer=b,T.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;e.push(q);var de=b.options&&b.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(S){a.length=a.length-2*S,u.length=u.length-S,e.length=e.length-S}c(pe,"popStack");function ae(){var S;return S=o.pop()||b.lex()||re,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=n.symbols_[S]||S),S}c(ae,"lex");for(var k,R,v,Q,F={},K,I,oe,X;;){if(R=a[a.length-1],this.defaultActions[R]?v=this.defaultActions[R]:((k===null||typeof k>"u")&&(k=ae()),v=B[R]&&B[R][k]),typeof v>"u"||!v.length||!v[0]){var Z="";X=[];for(K in B[R])this.terminals_[K]&&K>ue&&X.push("'"+this.terminals_[K]+"'");b.showPosition?Z="Parse error on line "+(z+1)+`:
|
import{g as fe}from"./chunk-E2GYISFI-DlizJ9NZ.js";import{_ as c,l as te,c as W,K as ye,a8 as be,a9 as me,aa as _e,a3 as Ee,H as Y,i as G,v as ke,J as Se,a4 as Ne,a5 as le,a6 as ce}from"./mermaid-vendor-DhSh_Elb.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var $=function(){var t=c(function(_,s,n,a){for(n=n||{},a=_.length;a--;n[_[a]]=s);return n},"o"),g=[1,4],d=[1,13],r=[1,12],p=[1,15],E=[1,16],f=[1,20],h=[1,19],L=[6,7,8],C=[1,26],w=[1,24],N=[1,25],i=[6,7,11],H=[1,31],x=[6,7,11,24],P=[1,6,13,16,17,20,23],M=[1,35],U=[1,36],A=[1,6,7,11,13,16,17,20,23],j=[1,38],V={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:c(function(s,n,a,o,u,e,B){var l=e.length-1;switch(u){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",e[l-1].id),o.addNode(e[l-2].length,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 16:o.getLogger().info("Node: ",e[l].id),o.addNode(e[l-1].length,e[l].id,e[l].descr,e[l].type);break;case 17:o.getLogger().trace("Icon: ",e[l]),o.decorateNode({icon:e[l]});break;case 18:case 23:o.decorateNode({class:e[l]});break;case 19:o.getLogger().trace("SPACELIST");break;case 20:o.getLogger().trace("Node: ",e[l-1].id),o.addNode(0,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 21:o.getLogger().trace("Node: ",e[l].id),o.addNode(0,e[l].id,e[l].descr,e[l].type);break;case 22:o.decorateNode({icon:e[l]});break;case 27:o.getLogger().trace("node found ..",e[l-2]),this.$={id:e[l-1],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 28:this.$={id:e[l],descr:e[l],type:0};break;case 29:o.getLogger().trace("node found ..",e[l-3]),this.$={id:e[l-3],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 30:this.$=e[l-1]+e[l];break;case 31:this.$=e[l];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:d,7:[1,10],9:9,12:11,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},t(L,[2,3]),{1:[2,2]},t(L,[2,4]),t(L,[2,5]),{1:[2,6],6:d,12:21,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},{6:d,9:22,12:11,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},{6:C,7:w,10:23,11:N},t(i,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:f,23:h}),t(i,[2,19]),t(i,[2,21],{15:30,24:H}),t(i,[2,22]),t(i,[2,23]),t(x,[2,25]),t(x,[2,26]),t(x,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:w,10:34,11:N},{1:[2,7],6:d,12:21,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},t(P,[2,14],{7:M,11:U}),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(i,[2,16],{15:37,24:H}),t(i,[2,17]),t(i,[2,18]),t(i,[2,20],{24:j}),t(x,[2,31]),{21:[1,39]},{22:[1,40]},t(P,[2,13],{7:M,11:U}),t(A,[2,11]),t(A,[2,12]),t(i,[2,15],{24:j}),t(x,[2,30]),{22:[1,41]},t(x,[2,27]),t(x,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:c(function(s,n){if(n.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=n,a}},"parseError"),parse:c(function(s){var n=this,a=[0],o=[],u=[null],e=[],B=this.table,l="",z=0,ie=0,ue=2,re=1,ge=e.slice.call(arguments,1),b=Object.create(this.lexer),T={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(T.yy[J]=this.yy[J]);b.setInput(s,T.yy),T.yy.lexer=b,T.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;e.push(q);var de=b.options&&b.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(S){a.length=a.length-2*S,u.length=u.length-S,e.length=e.length-S}c(pe,"popStack");function ae(){var S;return S=o.pop()||b.lex()||re,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=n.symbols_[S]||S),S}c(ae,"lex");for(var k,R,v,Q,F={},K,I,oe,X;;){if(R=a[a.length-1],this.defaultActions[R]?v=this.defaultActions[R]:((k===null||typeof k>"u")&&(k=ae()),v=B[R]&&B[R][k]),typeof v>"u"||!v.length||!v[0]){var Z="";X=[];for(K in B[R])this.terminals_[K]&&K>ue&&X.push("'"+this.terminals_[K]+"'");b.showPosition?Z="Parse error on line "+(z+1)+`:
|
||||||
`+b.showPosition()+`
|
`+b.showPosition()+`
|
||||||
Expecting `+X.join(", ")+", got '"+(this.terminals_[k]||k)+"'":Z="Parse error on line "+(z+1)+": Unexpected "+(k==re?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(Z,{text:b.match,token:this.terminals_[k]||k,line:b.yylineno,loc:q,expected:X})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+R+", token: "+k);switch(v[0]){case 1:a.push(k),u.push(b.yytext),e.push(b.yylloc),a.push(v[1]),k=null,ie=b.yyleng,l=b.yytext,z=b.yylineno,q=b.yylloc;break;case 2:if(I=this.productions_[v[1]][1],F.$=u[u.length-I],F._$={first_line:e[e.length-(I||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(I||1)].first_column,last_column:e[e.length-1].last_column},de&&(F._$.range=[e[e.length-(I||1)].range[0],e[e.length-1].range[1]]),Q=this.performAction.apply(F,[l,ie,z,T.yy,v[1],u,e].concat(ge)),typeof Q<"u")return Q;I&&(a=a.slice(0,-1*I*2),u=u.slice(0,-1*I),e=e.slice(0,-1*I)),a.push(this.productions_[v[1]][0]),u.push(F.$),e.push(F._$),oe=B[a[a.length-2]][a[a.length-1]],a.push(oe);break;case 3:return!0}}return!0},"parse")},m=function(){var _={EOF:1,parseError:c(function(n,a){if(this.yy.parser)this.yy.parser.parseError(n,a);else throw new Error(n)},"parseError"),setInput:c(function(s,n){return this.yy=n||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:c(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:c(function(s){var n=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var u=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===o.length?this.yylloc.first_column:0)+o[o.length-a.length].length-a[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
Expecting `+X.join(", ")+", got '"+(this.terminals_[k]||k)+"'":Z="Parse error on line "+(z+1)+": Unexpected "+(k==re?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(Z,{text:b.match,token:this.terminals_[k]||k,line:b.yylineno,loc:q,expected:X})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+R+", token: "+k);switch(v[0]){case 1:a.push(k),u.push(b.yytext),e.push(b.yylloc),a.push(v[1]),k=null,ie=b.yyleng,l=b.yytext,z=b.yylineno,q=b.yylloc;break;case 2:if(I=this.productions_[v[1]][1],F.$=u[u.length-I],F._$={first_line:e[e.length-(I||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(I||1)].first_column,last_column:e[e.length-1].last_column},de&&(F._$.range=[e[e.length-(I||1)].range[0],e[e.length-1].range[1]]),Q=this.performAction.apply(F,[l,ie,z,T.yy,v[1],u,e].concat(ge)),typeof Q<"u")return Q;I&&(a=a.slice(0,-1*I*2),u=u.slice(0,-1*I),e=e.slice(0,-1*I)),a.push(this.productions_[v[1]][0]),u.push(F.$),e.push(F._$),oe=B[a[a.length-2]][a[a.length-1]],a.push(oe);break;case 3:return!0}}return!0},"parse")},m=function(){var _={EOF:1,parseError:c(function(n,a){if(this.yy.parser)this.yy.parser.parseError(n,a);else throw new Error(n)},"parseError"),setInput:c(function(s,n){return this.yy=n||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:c(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:c(function(s){var n=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var u=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===o.length?this.yylloc.first_column:0)+o[o.length-a.length].length-a[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:c(function(s){this.unput(this.match.slice(s))},"less"),pastInput:c(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+`
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:c(function(s){this.unput(this.match.slice(s))},"less"),pastInput:c(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+`
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
|||||||
import{p as N}from"./chunk-353BL4L5-BdESKFSH.js";import{_ as i,g as B,s as U,a as q,b as H,t as K,q as V,l as C,c as Z,F as j,K as J,M as Q,N as z,O as X,e as Y,z as tt,P as et,H as at}from"./mermaid-vendor-GB05DkYd.js";import{p as rt}from"./treemap-75Q7IDZK-C9xJN-2g.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-DUOGdItU.js";import"./_basePickBy-V-PVS_is.js";import"./clone-CyTo8HmA.js";var it=at.pie,D={sections:new Map,showData:!1},f=D.sections,w=D.showData,st=structuredClone(it),ot=i(()=>structuredClone(st),"getConfig"),nt=i(()=>{f=new Map,w=D.showData,tt()},"clear"),lt=i(({label:t,value:a})=>{f.has(t)||(f.set(t,a),C.debug(`added new section: ${t}, with value: ${a}`))},"addSection"),ct=i(()=>f,"getSections"),pt=i(t=>{w=t},"setShowData"),dt=i(()=>w,"getShowData"),F={getConfig:ot,clear:nt,setDiagramTitle:V,getDiagramTitle:K,setAccTitle:H,getAccTitle:q,setAccDescription:U,getAccDescription:B,addSection:lt,getSections:ct,setShowData:pt,getShowData:dt},gt=i((t,a)=>{N(t,a),a.setShowData(t.showData),t.sections.map(a.addSection)},"populateDb"),ut={parse:i(async t=>{const a=await rt("pie",t);C.debug(a),gt(a,F)},"parse")},mt=i(t=>`
|
import{p as N}from"./chunk-353BL4L5-DXKjutT4.js";import{_ as i,g as B,s as U,a as q,b as H,t as K,q as V,l as C,c as Z,F as j,K as J,M as Q,N as z,O as X,e as Y,z as tt,P as et,H as at}from"./mermaid-vendor-DhSh_Elb.js";import{p as rt}from"./treemap-75Q7IDZK-NkslzRw7.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";import"./_baseUniq-EbUtpKbD.js";import"./_basePickBy-DBk8Gtra.js";import"./clone-CMMpvbRX.js";var it=at.pie,D={sections:new Map,showData:!1},f=D.sections,w=D.showData,st=structuredClone(it),ot=i(()=>structuredClone(st),"getConfig"),nt=i(()=>{f=new Map,w=D.showData,tt()},"clear"),lt=i(({label:t,value:a})=>{f.has(t)||(f.set(t,a),C.debug(`added new section: ${t}, with value: ${a}`))},"addSection"),ct=i(()=>f,"getSections"),pt=i(t=>{w=t},"setShowData"),dt=i(()=>w,"getShowData"),F={getConfig:ot,clear:nt,setDiagramTitle:V,getDiagramTitle:K,setAccTitle:H,getAccTitle:q,setAccDescription:U,getAccDescription:B,addSection:lt,getSections:ct,setShowData:pt,getShowData:dt},gt=i((t,a)=>{N(t,a),a.setShowData(t.showData),t.sections.map(a.addSection)},"populateDb"),ut={parse:i(async t=>{const a=await rt("pie",t);C.debug(a),gt(a,F)},"parse")},mt=i(t=>`
|
||||||
.pieCircle{
|
.pieCircle{
|
||||||
stroke: ${t.pieStrokeColor};
|
stroke: ${t.pieStrokeColor};
|
||||||
stroke-width : ${t.pieStrokeWidth};
|
stroke-width : ${t.pieStrokeWidth};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{s as r,b as e,a,S as i}from"./chunk-OW32GOEJ-CHuxbc0x.js";import{_ as s}from"./mermaid-vendor-GB05DkYd.js";import"./chunk-BFAMUDN2-ghvP-Rq6.js";import"./chunk-SKB7J2MH-gQmYvnvi.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var f={parser:a,get db(){return new i(2)},renderer:e,styles:r,init:s(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{f as diagram};
|
import{s as r,b as e,a,S as i}from"./chunk-OW32GOEJ-DH7pe0vw.js";import{_ as s}from"./mermaid-vendor-DhSh_Elb.js";import"./chunk-BFAMUDN2-D_TDltSo.js";import"./chunk-SKB7J2MH-ARKQCtIy.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var f={parser:a,get db(){return new i(2)},renderer:e,styles:r,init:s(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{f as diagram};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import{_ as s,c as xt,l as E,d as q,a3 as kt,a4 as _t,a5 as bt,a6 as vt,N as nt,D as wt,a7 as St,z as Et}from"./mermaid-vendor-GB05DkYd.js";import"./feature-graph-Ce9OX-bo.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var X=function(){var n=s(function(f,r,a,h){for(a=a||{},h=f.length;h--;a[f[h]]=r);return a},"o"),t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],l=[1,10],i=[1,11],d=[1,12],c=[1,13],g=[1,16],m=[1,17],p={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:s(function(r,a,h,u,y,o,S){var k=o.length-1;switch(y){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.getCommonDb().setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.getCommonDb().setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 15:u.addTask(o[k],0,""),this.$=o[k];break;case 16:u.addEvent(o[k].substr(2)),this.$=o[k];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:l,14:i,16:d,17:c,18:14,19:15,20:g,21:m},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:l,14:i,16:d,17:c,18:14,19:15,20:g,21:m},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:s(function(r,a){if(a.recoverable)this.trace(r);else{var h=new Error(r);throw h.hash=a,h}},"parseError"),parse:s(function(r){var a=this,h=[0],u=[],y=[null],o=[],S=this.table,k="",M=0,C=0,B=2,J=1,O=o.slice.call(arguments,1),_=Object.create(this.lexer),N={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&(N.yy[L]=this.yy[L]);_.setInput(r,N.yy),N.yy.lexer=_,N.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var v=_.yylloc;o.push(v);var $=_.options&&_.options.ranges;typeof N.yy.parseError=="function"?this.parseError=N.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function R(T){h.length=h.length-2*T,y.length=y.length-T,o.length=o.length-T}s(R,"popStack");function A(){var T;return T=u.pop()||_.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=a.symbols_[T]||T),T}s(A,"lex");for(var w,H,I,K,F={},j,P,et,G;;){if(H=h[h.length-1],this.defaultActions[H]?I=this.defaultActions[H]:((w===null||typeof w>"u")&&(w=A()),I=S[H]&&S[H][w]),typeof I>"u"||!I.length||!I[0]){var Q="";G=[];for(j in S[H])this.terminals_[j]&&j>B&&G.push("'"+this.terminals_[j]+"'");_.showPosition?Q="Parse error on line "+(M+1)+`:
|
import{_ as s,c as xt,l as E,d as q,a3 as kt,a4 as _t,a5 as bt,a6 as vt,N as nt,D as wt,a7 as St,z as Et}from"./mermaid-vendor-DhSh_Elb.js";import"./feature-graph-BCGhlwa7.js";import"./react-vendor-DEwriMA6.js";import"./graph-vendor-B-X5JegA.js";import"./ui-vendor-CeCm8EER.js";import"./utils-vendor-BysuhMZA.js";var X=function(){var n=s(function(f,r,a,h){for(a=a||{},h=f.length;h--;a[f[h]]=r);return a},"o"),t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],l=[1,10],i=[1,11],d=[1,12],c=[1,13],g=[1,16],m=[1,17],p={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:s(function(r,a,h,u,y,o,S){var k=o.length-1;switch(y){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.getCommonDb().setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.getCommonDb().setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 15:u.addTask(o[k],0,""),this.$=o[k];break;case 16:u.addEvent(o[k].substr(2)),this.$=o[k];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:l,14:i,16:d,17:c,18:14,19:15,20:g,21:m},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:l,14:i,16:d,17:c,18:14,19:15,20:g,21:m},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:s(function(r,a){if(a.recoverable)this.trace(r);else{var h=new Error(r);throw h.hash=a,h}},"parseError"),parse:s(function(r){var a=this,h=[0],u=[],y=[null],o=[],S=this.table,k="",M=0,C=0,B=2,J=1,O=o.slice.call(arguments,1),_=Object.create(this.lexer),N={yy:{}};for(var L in this.yy)Object.prototype.hasOwnProperty.call(this.yy,L)&&(N.yy[L]=this.yy[L]);_.setInput(r,N.yy),N.yy.lexer=_,N.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var v=_.yylloc;o.push(v);var $=_.options&&_.options.ranges;typeof N.yy.parseError=="function"?this.parseError=N.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function R(T){h.length=h.length-2*T,y.length=y.length-T,o.length=o.length-T}s(R,"popStack");function A(){var T;return T=u.pop()||_.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=a.symbols_[T]||T),T}s(A,"lex");for(var w,H,I,K,F={},j,P,et,G;;){if(H=h[h.length-1],this.defaultActions[H]?I=this.defaultActions[H]:((w===null||typeof w>"u")&&(w=A()),I=S[H]&&S[H][w]),typeof I>"u"||!I.length||!I[0]){var Q="";G=[];for(j in S[H])this.terminals_[j]&&j>B&&G.push("'"+this.terminals_[j]+"'");_.showPosition?Q="Parse error on line "+(M+1)+`:
|
||||||
`+_.showPosition()+`
|
`+_.showPosition()+`
|
||||||
Expecting `+G.join(", ")+", got '"+(this.terminals_[w]||w)+"'":Q="Parse error on line "+(M+1)+": Unexpected "+(w==J?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(Q,{text:_.match,token:this.terminals_[w]||w,line:_.yylineno,loc:v,expected:G})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+w);switch(I[0]){case 1:h.push(w),y.push(_.yytext),o.push(_.yylloc),h.push(I[1]),w=null,C=_.yyleng,k=_.yytext,M=_.yylineno,v=_.yylloc;break;case 2:if(P=this.productions_[I[1]][1],F.$=y[y.length-P],F._$={first_line:o[o.length-(P||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(P||1)].first_column,last_column:o[o.length-1].last_column},$&&(F._$.range=[o[o.length-(P||1)].range[0],o[o.length-1].range[1]]),K=this.performAction.apply(F,[k,C,M,N.yy,I[1],y,o].concat(O)),typeof K<"u")return K;P&&(h=h.slice(0,-1*P*2),y=y.slice(0,-1*P),o=o.slice(0,-1*P)),h.push(this.productions_[I[1]][0]),y.push(F.$),o.push(F._$),et=S[h[h.length-2]][h[h.length-1]],h.push(et);break;case 3:return!0}}return!0},"parse")},x=function(){var f={EOF:1,parseError:s(function(a,h){if(this.yy.parser)this.yy.parser.parseError(a,h);else throw new Error(a)},"parseError"),setInput:s(function(r,a){return this.yy=a||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var a=r.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:s(function(r){var a=r.length,h=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===u.length?this.yylloc.first_column:0)+u[u.length-h.length].length-h[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
Expecting `+G.join(", ")+", got '"+(this.terminals_[w]||w)+"'":Q="Parse error on line "+(M+1)+": Unexpected "+(w==J?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(Q,{text:_.match,token:this.terminals_[w]||w,line:_.yylineno,loc:v,expected:G})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+w);switch(I[0]){case 1:h.push(w),y.push(_.yytext),o.push(_.yylloc),h.push(I[1]),w=null,C=_.yyleng,k=_.yytext,M=_.yylineno,v=_.yylloc;break;case 2:if(P=this.productions_[I[1]][1],F.$=y[y.length-P],F._$={first_line:o[o.length-(P||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(P||1)].first_column,last_column:o[o.length-1].last_column},$&&(F._$.range=[o[o.length-(P||1)].range[0],o[o.length-1].range[1]]),K=this.performAction.apply(F,[k,C,M,N.yy,I[1],y,o].concat(O)),typeof K<"u")return K;P&&(h=h.slice(0,-1*P*2),y=y.slice(0,-1*P),o=o.slice(0,-1*P)),h.push(this.productions_[I[1]][0]),y.push(F.$),o.push(F._$),et=S[h[h.length-2]][h[h.length-1]],h.push(et);break;case 3:return!0}}return!0},"parse")},x=function(){var f={EOF:1,parseError:s(function(a,h){if(this.yy.parser)this.yy.parser.parseError(a,h);else throw new Error(a)},"parseError"),setInput:s(function(r,a){return this.yy=a||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:s(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var a=r.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:s(function(r){var a=r.length,h=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===u.length?this.yylloc.first_column:0)+u[u.length-h.length].length-h[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
||||||
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(r){this.unput(this.match.slice(r))},"less"),pastInput:s(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var r=this.pastInput(),a=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(r){this.unput(this.match.slice(r))},"less"),pastInput:s(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var r=this.pastInput(),a=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
14
LightRAG-main/lightrag/api/webui/index.html
generated
14
LightRAG-main/lightrag/api/webui/index.html
generated
@@ -8,18 +8,18 @@
|
|||||||
<link rel="icon" type="image/png" href="favicon.png" />
|
<link rel="icon" type="image/png" href="favicon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>RailSeek</title>
|
<title>RailSeek</title>
|
||||||
<script type="module" crossorigin src="/webui/assets/index-4EuN1Ajv.js"></script>
|
<script type="module" crossorigin src="/webui/assets/index-C28_YiKE.js"></script>
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/react-vendor-DEwriMA6.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/react-vendor-DEwriMA6.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/ui-vendor-CeCm8EER.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/ui-vendor-CeCm8EER.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/graph-vendor-B-X5JegA.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/graph-vendor-B-X5JegA.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/utils-vendor-BysuhMZA.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/utils-vendor-BysuhMZA.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-graph-Ce9OX-bo.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/feature-graph-BCGhlwa7.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-documents-D0lvjDJ6.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/feature-documents-DFivys0z.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/mermaid-vendor-GB05DkYd.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/mermaid-vendor-DhSh_Elb.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/markdown-vendor-BiwnQtuo.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/markdown-vendor-Dx00OEO8.js">
|
||||||
<link rel="modulepreload" crossorigin href="/webui/assets/feature-retrieval-d11Pfb66.js">
|
<link rel="modulepreload" crossorigin href="/webui/assets/feature-retrieval-tl4auWbF.js">
|
||||||
<link rel="stylesheet" crossorigin href="/webui/assets/feature-graph-BipNuM18.css">
|
<link rel="stylesheet" crossorigin href="/webui/assets/feature-graph-BipNuM18.css">
|
||||||
<link rel="stylesheet" crossorigin href="/webui/assets/index-BTI4OT92.css">
|
<link rel="stylesheet" crossorigin href="/webui/assets/index-DL7oGUSp.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
@@ -63,6 +63,58 @@ class WorkspaceManager:
|
|||||||
logger.error(f"Failed to create workspace '{name}': {e}")
|
logger.error(f"Failed to create workspace '{name}': {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
async def rename_workspace(self, old_name: str, new_name: str) -> bool:
|
||||||
|
"""Rename a workspace directory and update cached instances."""
|
||||||
|
if not old_name or not old_name.strip():
|
||||||
|
raise ValueError("Old workspace name cannot be empty")
|
||||||
|
if not new_name or not new_name.strip():
|
||||||
|
raise ValueError("New workspace name cannot be empty")
|
||||||
|
old_name = old_name.strip()
|
||||||
|
new_name = new_name.strip()
|
||||||
|
|
||||||
|
# Validate new name (alphanumeric, underscore, hyphen)
|
||||||
|
if not all(c.isalnum() or c in ('_', '-') for c in new_name):
|
||||||
|
raise ValueError("New workspace name can only contain alphanumeric characters, underscores, and hyphens")
|
||||||
|
|
||||||
|
# Check if old workspace exists
|
||||||
|
old_workspace_dir = self.base_working_dir / old_name
|
||||||
|
old_input_subdir = self.base_input_dir / old_name
|
||||||
|
if not old_workspace_dir.exists() and not old_input_subdir.exists():
|
||||||
|
raise ValueError(f"Workspace '{old_name}' does not exist")
|
||||||
|
|
||||||
|
# Check if new workspace already exists
|
||||||
|
new_workspace_dir = self.base_working_dir / new_name
|
||||||
|
new_input_subdir = self.base_input_dir / new_name
|
||||||
|
if new_workspace_dir.exists() or new_input_subdir.exists():
|
||||||
|
raise ValueError(f"Workspace '{new_name}' already exists")
|
||||||
|
|
||||||
|
# Move directories
|
||||||
|
import shutil
|
||||||
|
try:
|
||||||
|
if old_workspace_dir.exists():
|
||||||
|
shutil.move(str(old_workspace_dir), str(new_workspace_dir))
|
||||||
|
logger.info(f"Moved workspace directory from {old_workspace_dir} to {new_workspace_dir}")
|
||||||
|
if old_input_subdir.exists():
|
||||||
|
shutil.move(str(old_input_subdir), str(new_input_subdir))
|
||||||
|
logger.info(f"Moved input directory from {old_input_subdir} to {new_input_subdir}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to rename workspace '{old_name}' to '{new_name}': {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
|
# Update cached instances
|
||||||
|
if old_name in self._rag_instances:
|
||||||
|
self._rag_instances[new_name] = self._rag_instances.pop(old_name)
|
||||||
|
# Optionally update the workspace name inside the LightRAG instance? Not needed as path changed.
|
||||||
|
if old_name in self._doc_managers:
|
||||||
|
self._doc_managers[new_name] = self._doc_managers.pop(old_name)
|
||||||
|
# Update the workspace name in DocumentManager? It uses workspace parameter.
|
||||||
|
# For simplicity, we'll just keep the cached instance; but the workspace attribute may be wrong.
|
||||||
|
# Better to discard and let it be recreated when needed.
|
||||||
|
del self._doc_managers[new_name] # discard, will be recreated with new workspace name
|
||||||
|
|
||||||
|
logger.info(f"Renamed workspace '{old_name}' to '{new_name}' successfully")
|
||||||
|
return True
|
||||||
|
|
||||||
async def delete_workspace(self, name: str) -> bool:
|
async def delete_workspace(self, name: str) -> bool:
|
||||||
"""Delete a workspace directory and all its data."""
|
"""Delete a workspace directory and all its data."""
|
||||||
import shutil
|
import shutil
|
||||||
|
|||||||
@@ -569,6 +569,22 @@ class DocumentProcessor:
|
|||||||
|
|
||||||
return processed_images, "\n".join(additional_content)
|
return processed_images, "\n".join(additional_content)
|
||||||
|
|
||||||
|
def _text_quality_score(self, text: str) -> float:
|
||||||
|
"""Return a score between 0 and 1 indicating text quality.
|
||||||
|
Higher score means more readable English text."""
|
||||||
|
if not text:
|
||||||
|
return 0.0
|
||||||
|
total = len(text)
|
||||||
|
# Count printable ASCII letters and spaces
|
||||||
|
printable = sum(1 for c in text if 32 <= ord(c) <= 126)
|
||||||
|
# Count replacement characters (<28>) which is Unicode U+FFFD
|
||||||
|
replacement = text.count('\ufffd')
|
||||||
|
# Count other non-ASCII characters
|
||||||
|
non_ascii = sum(1 for c in text if ord(c) > 127 and ord(c) != 0xfffd)
|
||||||
|
# Score based on printable ratio, penalize replacement chars
|
||||||
|
score = (printable / total) * (1 - (replacement / total))
|
||||||
|
return score
|
||||||
|
|
||||||
async def _process_pdf(self, file_path: Path) -> ProcessingResult:
|
async def _process_pdf(self, file_path: Path) -> ProcessingResult:
|
||||||
"""Process PDF files with text extraction and OCR fallback"""
|
"""Process PDF files with text extraction and OCR fallback"""
|
||||||
pdf_document = None
|
pdf_document = None
|
||||||
@@ -587,11 +603,14 @@ class DocumentProcessor:
|
|||||||
|
|
||||||
# Try text extraction first
|
# Try text extraction first
|
||||||
text = page.get_text()
|
text = page.get_text()
|
||||||
if text.strip():
|
text_score = self._text_quality_score(text)
|
||||||
|
# Determine if text is usable (not garbled)
|
||||||
|
# Threshold 0.5 means at least half of characters are printable ASCII and not replacement
|
||||||
|
if text.strip() and text_score >= 0.5:
|
||||||
content_parts.append(f"Page {page_num + 1}:\n{text}")
|
content_parts.append(f"Page {page_num + 1}:\n{text}")
|
||||||
else:
|
else:
|
||||||
# Fall back to OCR for scanned pages with higher resolution
|
# Text is empty, garbled, or low quality -> use OCR
|
||||||
logger.info(f"Page {page_num + 1} has no text, using high-resolution OCR")
|
logger.info(f"Page {page_num + 1} has no usable text (score {text_score:.3f}), using high-resolution OCR")
|
||||||
# Use higher resolution for better OCR accuracy on scanned documents
|
# Use higher resolution for better OCR accuracy on scanned documents
|
||||||
mat = fitz.Matrix(2, 2) # 2x resolution for better OCR
|
mat = fitz.Matrix(2, 2) # 2x resolution for better OCR
|
||||||
pix = page.get_pixmap(matrix=mat)
|
pix = page.get_pixmap(matrix=mat)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ const AppContent = () => {
|
|||||||
if (!initializing && !isAuthenticated) {
|
if (!initializing && !isAuthenticated) {
|
||||||
const currentPath = window.location.hash.slice(1);
|
const currentPath = window.location.hash.slice(1);
|
||||||
if (currentPath !== '/login') {
|
if (currentPath !== '/login') {
|
||||||
console.log('Not authenticated, redirecting to login');
|
console.log('Not authenticated, redirecting to login', { initializing, isAuthenticated, currentPath });
|
||||||
navigate('/login');
|
navigate('/login');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -361,7 +361,8 @@ export const queryText = async (request: QueryRequest): Promise<QueryResponse> =
|
|||||||
export const queryTextStream = async (
|
export const queryTextStream = async (
|
||||||
request: QueryRequest,
|
request: QueryRequest,
|
||||||
onChunk: (chunk: string) => void,
|
onChunk: (chunk: string) => void,
|
||||||
onError?: (error: string) => void
|
onError?: (error: string) => void,
|
||||||
|
signal?: AbortSignal
|
||||||
) => {
|
) => {
|
||||||
const apiKey = useSettingsStore.getState().apiKey;
|
const apiKey = useSettingsStore.getState().apiKey;
|
||||||
const token = localStorage.getItem('LIGHTRAG-API-TOKEN');
|
const token = localStorage.getItem('LIGHTRAG-API-TOKEN');
|
||||||
@@ -385,6 +386,7 @@ export const queryTextStream = async (
|
|||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: JSON.stringify(request),
|
body: JSON.stringify(request),
|
||||||
|
signal,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
@@ -467,6 +469,15 @@ export const queryTextStream = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// Check if this is an abort error
|
||||||
|
if (error instanceof DOMException && error.name === 'AbortError') {
|
||||||
|
console.log('Stream request aborted');
|
||||||
|
if (onError) {
|
||||||
|
onError('Request cancelled');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const message = errorMessage(error);
|
const message = errorMessage(error);
|
||||||
|
|
||||||
// Check if this is an authentication error
|
// Check if this is an authentication error
|
||||||
@@ -789,6 +800,11 @@ export const createWorkspace = async (name: string): Promise<WorkspaceResponse>
|
|||||||
return response.data
|
return response.data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const renameWorkspace = async (oldName: string, newName: string): Promise<WorkspaceResponse> => {
|
||||||
|
const response = await axiosInstance.patch(`/workspaces/${encodeURIComponent(oldName)}`, { new_name: newName })
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
|
||||||
export const deleteWorkspace = async (name: string): Promise<{ message: string }> => {
|
export const deleteWorkspace = async (name: string): Promise<{ message: string }> => {
|
||||||
const response = await axiosInstance.delete(`/workspaces/${encodeURIComponent(name)}`)
|
const response = await axiosInstance.delete(`/workspaces/${encodeURIComponent(name)}`)
|
||||||
return response.data
|
return response.data
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { useEffect, useState, ChangeEvent, KeyboardEvent } from 'react'
|
import { useEffect, useState, ChangeEvent, KeyboardEvent } from 'react'
|
||||||
import { useSettingsStore } from '@/stores/settings'
|
import { useSettingsStore } from '@/stores/settings'
|
||||||
import { listWorkspaces, createWorkspace, deleteWorkspace } from '@/api/lightrag'
|
import { listWorkspaces, createWorkspace, deleteWorkspace, renameWorkspace } from '@/api/lightrag'
|
||||||
import Button from '@/components/ui/Button'
|
import Button from '@/components/ui/Button'
|
||||||
import Input from '@/components/ui/Input'
|
import Input from '@/components/ui/Input'
|
||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/Select'
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/Select'
|
||||||
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, DialogClose } from '@/components/ui/Dialog'
|
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, DialogClose } from '@/components/ui/Dialog'
|
||||||
import { PlusIcon, SearchIcon, TrashIcon } from 'lucide-react'
|
import { PlusIcon, SearchIcon, TrashIcon, PencilIcon } from 'lucide-react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
export function WorkspaceSelector() {
|
export function WorkspaceSelector() {
|
||||||
@@ -20,6 +20,9 @@ export function WorkspaceSelector() {
|
|||||||
const [creating, setCreating] = useState(false)
|
const [creating, setCreating] = useState(false)
|
||||||
const [deleting, setDeleting] = useState(false)
|
const [deleting, setDeleting] = useState(false)
|
||||||
const [showDeleteDialog, setShowDeleteDialog] = useState(false)
|
const [showDeleteDialog, setShowDeleteDialog] = useState(false)
|
||||||
|
const [renaming, setRenaming] = useState(false)
|
||||||
|
const [showRenameDialog, setShowRenameDialog] = useState(false)
|
||||||
|
const [renameNewName, setRenameNewName] = useState('')
|
||||||
|
|
||||||
// Fetch workspaces on mount
|
// Fetch workspaces on mount
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -58,6 +61,24 @@ export function WorkspaceSelector() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleRenameWorkspace = async () => {
|
||||||
|
if (!workspace || !renameNewName.trim()) return
|
||||||
|
setRenaming(true)
|
||||||
|
try {
|
||||||
|
await renameWorkspace(workspace, renameNewName.trim())
|
||||||
|
await fetchWorkspaces()
|
||||||
|
// Update selected workspace to new name
|
||||||
|
setWorkspace(renameNewName.trim())
|
||||||
|
setRenameNewName('')
|
||||||
|
setShowRenameDialog(false)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to rename workspace:', error)
|
||||||
|
alert(`Failed to rename workspace: ${error}`)
|
||||||
|
} finally {
|
||||||
|
setRenaming(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const handleDeleteWorkspace = async () => {
|
const handleDeleteWorkspace = async () => {
|
||||||
if (!workspace) return
|
if (!workspace) return
|
||||||
setDeleting(true)
|
setDeleting(true)
|
||||||
@@ -116,38 +137,77 @@ export function WorkspaceSelector() {
|
|||||||
|
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
{workspace && (
|
{workspace && (
|
||||||
<Dialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>
|
<>
|
||||||
<DialogTrigger asChild>
|
<Dialog open={showRenameDialog} onOpenChange={setShowRenameDialog}>
|
||||||
<Button size="icon" variant="outline" className="text-destructive">
|
<DialogTrigger asChild>
|
||||||
<TrashIcon className="size-4" />
|
<Button size="icon" variant="outline">
|
||||||
</Button>
|
<PencilIcon className="size-4" />
|
||||||
</DialogTrigger>
|
|
||||||
<DialogContent>
|
|
||||||
<DialogHeader>
|
|
||||||
<DialogTitle>{t('workspace.deleteTitle')}</DialogTitle>
|
|
||||||
</DialogHeader>
|
|
||||||
<div className="space-y-4">
|
|
||||||
<p className="text-sm">
|
|
||||||
{t('workspace.deleteConfirm', { workspace })}
|
|
||||||
</p>
|
|
||||||
<p className="text-sm text-muted-foreground">
|
|
||||||
{t('workspace.deleteWarning')}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<DialogFooter>
|
|
||||||
<DialogClose asChild>
|
|
||||||
<Button variant="outline">{t('common.cancel')}</Button>
|
|
||||||
</DialogClose>
|
|
||||||
<Button
|
|
||||||
onClick={handleDeleteWorkspace}
|
|
||||||
disabled={deleting}
|
|
||||||
variant="destructive"
|
|
||||||
>
|
|
||||||
{deleting ? t('common.deleting') : t('common.delete')}
|
|
||||||
</Button>
|
</Button>
|
||||||
</DialogFooter>
|
</DialogTrigger>
|
||||||
</DialogContent>
|
<DialogContent>
|
||||||
</Dialog>
|
<DialogHeader>
|
||||||
|
<DialogTitle>{t('workspace.renameTitle')}</DialogTitle>
|
||||||
|
</DialogHeader>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<Input
|
||||||
|
placeholder={t('workspace.newNamePlaceholder')}
|
||||||
|
value={renameNewName}
|
||||||
|
onChange={(e: ChangeEvent<HTMLInputElement>) => setRenameNewName(e.target.value)}
|
||||||
|
onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {
|
||||||
|
if (e.key === 'Enter') handleRenameWorkspace()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<p className="text-sm text-muted-foreground">
|
||||||
|
{t('workspace.renameDescription', { workspace })}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<DialogFooter>
|
||||||
|
<DialogClose asChild>
|
||||||
|
<Button variant="outline">{t('common.cancel')}</Button>
|
||||||
|
</DialogClose>
|
||||||
|
<Button
|
||||||
|
onClick={handleRenameWorkspace}
|
||||||
|
disabled={!renameNewName.trim() || renaming}
|
||||||
|
>
|
||||||
|
{renaming ? t('common.renaming') : t('common.rename')}
|
||||||
|
</Button>
|
||||||
|
</DialogFooter>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
|
|
||||||
|
<Dialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>
|
||||||
|
<DialogTrigger asChild>
|
||||||
|
<Button size="icon" variant="outline" className="text-destructive">
|
||||||
|
<TrashIcon className="size-4" />
|
||||||
|
</Button>
|
||||||
|
</DialogTrigger>
|
||||||
|
<DialogContent>
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>{t('workspace.deleteTitle')}</DialogTitle>
|
||||||
|
</DialogHeader>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-sm">
|
||||||
|
{t('workspace.deleteConfirm', { workspace })}
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-muted-foreground">
|
||||||
|
{t('workspace.deleteWarning')}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<DialogFooter>
|
||||||
|
<DialogClose asChild>
|
||||||
|
<Button variant="outline">{t('common.cancel')}</Button>
|
||||||
|
</DialogClose>
|
||||||
|
<Button
|
||||||
|
onClick={handleDeleteWorkspace}
|
||||||
|
disabled={deleting}
|
||||||
|
variant="destructive"
|
||||||
|
>
|
||||||
|
{deleting ? t('common.deleting') : t('common.delete')}
|
||||||
|
</Button>
|
||||||
|
</DialogFooter>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Dialog>
|
<Dialog>
|
||||||
|
|||||||
@@ -18,6 +18,16 @@ import { oneLight, oneDark } from 'react-syntax-highlighter/dist/cjs/styles/pris
|
|||||||
import { LoaderIcon, CopyIcon, ChevronDownIcon } from 'lucide-react'
|
import { LoaderIcon, CopyIcon, ChevronDownIcon } from 'lucide-react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
|
// Helper function to transform citation patterns into hyperlinks
|
||||||
|
const transformCitations = (text: string): string => {
|
||||||
|
// Replace [DC] document_name with [DC] [document_name](/documents/download/encoded)
|
||||||
|
// Pattern: [DC] followed by whitespace then capture until whitespace or punctuation (excluding brackets)
|
||||||
|
return text.replace(/\[DC\]\s+([^\s\]]+)/g, (match, docName) => {
|
||||||
|
const encoded = encodeURIComponent(docName);
|
||||||
|
return `[DC] [${docName}](/documents/download/${encoded})`;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export type MessageWithError = Message & {
|
export type MessageWithError = Message & {
|
||||||
id: string // Unique identifier for stable React keys
|
id: string // Unique identifier for stable React keys
|
||||||
isError?: boolean
|
isError?: boolean
|
||||||
@@ -55,6 +65,10 @@ export const ChatMessage = ({ message }: { message: MessageWithError }) => { //
|
|||||||
? message.content
|
? message.content
|
||||||
: (displayContent !== undefined ? displayContent : (message.content || ''))
|
: (displayContent !== undefined ? displayContent : (message.content || ''))
|
||||||
|
|
||||||
|
// Apply citation transformation for hyperlinks
|
||||||
|
const transformedThinkingContent = finalThinkingContent ? transformCitations(finalThinkingContent) : ''
|
||||||
|
const transformedDisplayContent = finalDisplayContent ? transformCitations(finalDisplayContent) : ''
|
||||||
|
|
||||||
// Load KaTeX dynamically
|
// Load KaTeX dynamically
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadKaTeX = async () => {
|
const loadKaTeX = async () => {
|
||||||
@@ -151,7 +165,7 @@ export const ChatMessage = ({ message }: { message: MessageWithError }) => { //
|
|||||||
skipHtml={false}
|
skipHtml={false}
|
||||||
components={thinkingMarkdownComponents}
|
components={thinkingMarkdownComponents}
|
||||||
>
|
>
|
||||||
{finalThinkingContent}
|
{transformedThinkingContent}
|
||||||
</ReactMarkdown>
|
</ReactMarkdown>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -177,7 +191,7 @@ export const ChatMessage = ({ message }: { message: MessageWithError }) => { //
|
|||||||
skipHtml={false}
|
skipHtml={false}
|
||||||
components={mainMarkdownComponents}
|
components={mainMarkdownComponents}
|
||||||
>
|
>
|
||||||
{finalDisplayContent}
|
{transformedDisplayContent}
|
||||||
</ReactMarkdown>
|
</ReactMarkdown>
|
||||||
{message.role === 'assistant' && finalDisplayContent && finalDisplayContent.length > 0 && (
|
{message.role === 'assistant' && finalDisplayContent && finalDisplayContent.length > 0 && (
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next'
|
|||||||
import { Card, CardContent, CardHeader } from '@/components/ui/Card'
|
import { Card, CardContent, CardHeader } from '@/components/ui/Card'
|
||||||
import Input from '@/components/ui/Input'
|
import Input from '@/components/ui/Input'
|
||||||
import Button from '@/components/ui/Button'
|
import Button from '@/components/ui/Button'
|
||||||
import { ZapIcon } from 'lucide-react'
|
import { Train } from 'lucide-react'
|
||||||
import AppSettings from '@/components/AppSettings'
|
import AppSettings from '@/components/AppSettings'
|
||||||
|
|
||||||
const LoginPage = () => {
|
const LoginPage = () => {
|
||||||
@@ -154,7 +154,7 @@ const LoginPage = () => {
|
|||||||
<div className="flex flex-col items-center space-y-4">
|
<div className="flex flex-col items-center space-y-4">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<img src="logo.svg" alt="RailSeek Logo" className="h-12 w-12" />
|
<img src="logo.svg" alt="RailSeek Logo" className="h-12 w-12" />
|
||||||
<ZapIcon className="size-10 text-emerald-400" aria-hidden="true" />
|
<Train className="size-10 text-emerald-400" aria-hidden="true" />
|
||||||
</div>
|
</div>
|
||||||
<div className="text-center space-y-2">
|
<div className="text-center space-y-2">
|
||||||
<h1 className="text-3xl font-bold tracking-tight">RailSeek</h1>
|
<h1 className="text-3xl font-bold tracking-tight">RailSeek</h1>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { useSettingsStore } from '@/stores/settings'
|
|||||||
import { useDebounce } from '@/hooks/useDebounce'
|
import { useDebounce } from '@/hooks/useDebounce'
|
||||||
import QuerySettings from '@/components/retrieval/QuerySettings'
|
import QuerySettings from '@/components/retrieval/QuerySettings'
|
||||||
import { ChatMessage, MessageWithError } from '@/components/retrieval/ChatMessage'
|
import { ChatMessage, MessageWithError } from '@/components/retrieval/ChatMessage'
|
||||||
import { EraserIcon, SendIcon } from 'lucide-react'
|
import { EraserIcon, SendIcon, Square } from 'lucide-react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import type { QueryMode } from '@/api/lightrag'
|
import type { QueryMode } from '@/api/lightrag'
|
||||||
|
|
||||||
@@ -68,17 +68,30 @@ export default function RetrievalTesting() {
|
|||||||
const isReceivingResponseRef = useRef(false)
|
const isReceivingResponseRef = useRef(false)
|
||||||
const messagesEndRef = useRef<HTMLDivElement>(null)
|
const messagesEndRef = useRef<HTMLDivElement>(null)
|
||||||
const messagesContainerRef = useRef<HTMLDivElement>(null)
|
const messagesContainerRef = useRef<HTMLDivElement>(null)
|
||||||
|
const abortControllerRef = useRef<AbortController | null>(null)
|
||||||
|
|
||||||
// Add cleanup effect for memory leak prevention
|
// Add cleanup effect for memory leak prevention
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Component cleanup - reset timer state to prevent memory leaks
|
// Component cleanup - reset timer state and abort any ongoing request
|
||||||
return () => {
|
return () => {
|
||||||
if (thinkingStartTime.current) {
|
if (thinkingStartTime.current) {
|
||||||
thinkingStartTime.current = null;
|
thinkingStartTime.current = null;
|
||||||
}
|
}
|
||||||
|
if (abortControllerRef.current) {
|
||||||
|
abortControllerRef.current.abort();
|
||||||
|
abortControllerRef.current = null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// Stop retrieval function
|
||||||
|
const stopRetrieval = useCallback(() => {
|
||||||
|
if (abortControllerRef.current) {
|
||||||
|
abortControllerRef.current.abort();
|
||||||
|
abortControllerRef.current = null;
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
// Scroll to bottom function - restored smooth scrolling with better handling
|
// Scroll to bottom function - restored smooth scrolling with better handling
|
||||||
const scrollToBottom = useCallback(() => {
|
const scrollToBottom = useCallback(() => {
|
||||||
// Set flag to indicate this is a programmatic scroll
|
// Set flag to indicate this is a programmatic scroll
|
||||||
@@ -268,13 +281,23 @@ export default function RetrievalTesting() {
|
|||||||
...(modeOverride ? { mode: modeOverride } : {})
|
...(modeOverride ? { mode: modeOverride } : {})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create abort controller for streaming cancellation
|
||||||
|
if (state.querySettings.stream) {
|
||||||
|
abortControllerRef.current = new AbortController();
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Run query
|
// Run query
|
||||||
if (state.querySettings.stream) {
|
if (state.querySettings.stream) {
|
||||||
let errorMessage = ''
|
let errorMessage = ''
|
||||||
await queryTextStream(queryParams, updateAssistantMessage, (error) => {
|
await queryTextStream(
|
||||||
errorMessage += error
|
queryParams,
|
||||||
})
|
updateAssistantMessage,
|
||||||
|
(error) => {
|
||||||
|
errorMessage += error
|
||||||
|
},
|
||||||
|
abortControllerRef.current?.signal
|
||||||
|
)
|
||||||
if (errorMessage) {
|
if (errorMessage) {
|
||||||
if (assistantMessage.content) {
|
if (assistantMessage.content) {
|
||||||
errorMessage = assistantMessage.content + '\n' + errorMessage
|
errorMessage = assistantMessage.content + '\n' + errorMessage
|
||||||
@@ -292,6 +315,8 @@ export default function RetrievalTesting() {
|
|||||||
// Clear loading and add messages to state
|
// Clear loading and add messages to state
|
||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
isReceivingResponseRef.current = false
|
isReceivingResponseRef.current = false
|
||||||
|
// Clean up abort controller
|
||||||
|
abortControllerRef.current = null
|
||||||
|
|
||||||
// Enhanced cleanup with error handling to prevent memory leaks
|
// Enhanced cleanup with error handling to prevent memory leaks
|
||||||
try {
|
try {
|
||||||
@@ -472,10 +497,22 @@ export default function RetrievalTesting() {
|
|||||||
<div className="absolute left-0 top-full mt-1 text-xs text-red-500">{inputError}</div>
|
<div className="absolute left-0 top-full mt-1 text-xs text-red-500">{inputError}</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<Button type="submit" variant="default" disabled={isLoading} size="sm">
|
{isLoading ? (
|
||||||
<SendIcon />
|
<Button
|
||||||
{t('retrievePanel.retrieval.send')}
|
type="button"
|
||||||
</Button>
|
variant="destructive"
|
||||||
|
onClick={stopRetrieval}
|
||||||
|
size="sm"
|
||||||
|
>
|
||||||
|
<Square />
|
||||||
|
{t('retrievePanel.retrieval.stop')}
|
||||||
|
</Button>
|
||||||
|
) : (
|
||||||
|
<Button type="submit" variant="default" disabled={isLoading} size="sm">
|
||||||
|
<SendIcon />
|
||||||
|
{t('retrievePanel.retrieval.send')}
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<QuerySettings />
|
<QuerySettings />
|
||||||
|
|||||||
@@ -99,11 +99,6 @@ export default function SiteHeader() {
|
|||||||
|
|
||||||
<div className="flex h-10 flex-1 items-center justify-center">
|
<div className="flex h-10 flex-1 items-center justify-center">
|
||||||
<TabsNavigation />
|
<TabsNavigation />
|
||||||
{isGuestMode && (
|
|
||||||
<div className="ml-2 self-center px-2 py-1 text-xs bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-200 rounded-md">
|
|
||||||
{t('login.guestMode', 'Guest Mode')}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nav className="w-[200px] flex items-center justify-end">
|
<nav className="w-[200px] flex items-center justify-end">
|
||||||
@@ -113,23 +108,16 @@ export default function SiteHeader() {
|
|||||||
v{versionDisplay}
|
v{versionDisplay}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
<Button variant="ghost" size="icon" side="bottom" tooltip={t('header.projectRepository')}>
|
|
||||||
<a href={SiteInfo.github} target="_blank" rel="noopener noreferrer">
|
|
||||||
<GithubIcon className="size-4" aria-hidden="true" />
|
|
||||||
</a>
|
|
||||||
</Button>
|
|
||||||
<AppSettings />
|
<AppSettings />
|
||||||
{!isGuestMode && (
|
<Button
|
||||||
<Button
|
variant="ghost"
|
||||||
variant="ghost"
|
size="icon"
|
||||||
size="icon"
|
side="bottom"
|
||||||
side="bottom"
|
tooltip={isGuestMode ? t('header.login') : `${t('header.logout')} (${username})`}
|
||||||
tooltip={`${t('header.logout')} (${username})`}
|
onClick={handleLogout}
|
||||||
onClick={handleLogout}
|
>
|
||||||
>
|
<LogOutIcon className="size-4" aria-hidden="true" />
|
||||||
<LogOutIcon className="size-4" aria-hidden="true" />
|
</Button>
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,6 +28,9 @@
|
|||||||
"createDescription": "Create a new isolated workspace for your documents and indexes.",
|
"createDescription": "Create a new isolated workspace for your documents and indexes.",
|
||||||
"create": "Create",
|
"create": "Create",
|
||||||
"creating": "Creating...",
|
"creating": "Creating...",
|
||||||
|
"renameTitle": "Rename Workspace",
|
||||||
|
"newNamePlaceholder": "New workspace name",
|
||||||
|
"renameDescription": "Rename workspace '{{workspace}}' to a new name. This will update the workspace directory and all references.",
|
||||||
"deleteTitle": "Delete Workspace",
|
"deleteTitle": "Delete Workspace",
|
||||||
"deleteConfirm": "Are you sure you want to delete workspace '{{workspace}}'?",
|
"deleteConfirm": "Are you sure you want to delete workspace '{{workspace}}'?",
|
||||||
"deleteWarning": "This will permanently delete all data in this workspace and cannot be undone."
|
"deleteWarning": "This will permanently delete all data in this workspace and cannot be undone."
|
||||||
@@ -52,7 +55,9 @@
|
|||||||
"saving": "Saving...",
|
"saving": "Saving...",
|
||||||
"saveFailed": "Save failed",
|
"saveFailed": "Save failed",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"deleting": "Deleting..."
|
"deleting": "Deleting...",
|
||||||
|
"rename": "Rename",
|
||||||
|
"renaming": "Renaming..."
|
||||||
},
|
},
|
||||||
"documentPanel": {
|
"documentPanel": {
|
||||||
"clearDocuments": {
|
"clearDocuments": {
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ class NavigationService {
|
|||||||
* Navigate to login page and reset application state
|
* Navigate to login page and reset application state
|
||||||
*/
|
*/
|
||||||
navigateToLogin() {
|
navigateToLogin() {
|
||||||
|
console.log('navigateToLogin called, navigate is set?', !!this.navigate);
|
||||||
if (!this.navigate) {
|
if (!this.navigate) {
|
||||||
console.error('Navigation function not set');
|
console.error('Navigation function not set');
|
||||||
return;
|
return;
|
||||||
@@ -69,6 +70,7 @@ class NavigationService {
|
|||||||
this.resetAllApplicationState(true);
|
this.resetAllApplicationState(true);
|
||||||
useAuthStore.getState().logout();
|
useAuthStore.getState().logout();
|
||||||
|
|
||||||
|
console.log('Navigating to /login');
|
||||||
this.navigate('/login');
|
this.navigate('/login');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
75
analyze_pdf_fonts.py
Normal file
75
analyze_pdf_fonts.py
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import fitz # PyMuPDF
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def analyze_pdf_fonts(pdf_path):
|
||||||
|
doc = fitz.open(pdf_path)
|
||||||
|
page = doc[0]
|
||||||
|
|
||||||
|
# Get page text with flags
|
||||||
|
text = page.get_text("dict")
|
||||||
|
print("Page structure keys:", text.keys())
|
||||||
|
|
||||||
|
# Look for blocks
|
||||||
|
blocks = text.get("blocks", [])
|
||||||
|
print(f"Number of blocks: {len(blocks)}")
|
||||||
|
|
||||||
|
for i, block in enumerate(blocks[:5]): # first few blocks
|
||||||
|
print(f"\nBlock {i}: type={block.get('type')}")
|
||||||
|
if block.get('type') == 0: # text block
|
||||||
|
lines = block.get('lines', [])
|
||||||
|
print(f" Lines: {len(lines)}")
|
||||||
|
for line in lines[:2]:
|
||||||
|
spans = line.get('spans', [])
|
||||||
|
print(f" Spans: {len(spans)}")
|
||||||
|
for span in spans[:2]:
|
||||||
|
font = span.get('font', '')
|
||||||
|
flags = span.get('flags', 0)
|
||||||
|
color = span.get('color', 0)
|
||||||
|
size = span.get('size', 0)
|
||||||
|
text = span.get('text', '')
|
||||||
|
print(f" Font: {font[:30]}...")
|
||||||
|
print(f" Flags: {flags}")
|
||||||
|
print(f" Size: {size}")
|
||||||
|
print(f" Text sample: {repr(text[:50])}")
|
||||||
|
|
||||||
|
# Try to extract text with different encodings
|
||||||
|
print("\n--- Text extraction methods ---")
|
||||||
|
# 1. Raw text
|
||||||
|
raw = page.get_text()
|
||||||
|
print(f"Raw text length: {len(raw)}")
|
||||||
|
print(f"First 200 chars: {repr(raw[:200])}")
|
||||||
|
|
||||||
|
# 2. HTML output (includes font info)
|
||||||
|
html = page.get_text("html")
|
||||||
|
print(f"HTML length: {len(html)}")
|
||||||
|
# find font-family in html
|
||||||
|
import re
|
||||||
|
fonts = re.findall(r'font-family:([^;]+);', html)
|
||||||
|
if fonts:
|
||||||
|
print(f"Font families used: {set(fonts)}")
|
||||||
|
|
||||||
|
# 3. Check if there's a ToUnicode map
|
||||||
|
xref = page.get_contents()[0] # first content stream xref
|
||||||
|
print(f"Content stream xref: {xref}")
|
||||||
|
|
||||||
|
# Get the page object
|
||||||
|
page_obj = doc._getPageObject(page.number)
|
||||||
|
print(f"Page object keys: {page_obj.keys()}")
|
||||||
|
|
||||||
|
# Look for Resources -> Font
|
||||||
|
resources = page_obj.get('Resources', {})
|
||||||
|
fonts = resources.get('Font', {})
|
||||||
|
print(f"Number of fonts: {len(fonts)}")
|
||||||
|
for font_name, font_obj in fonts.items():
|
||||||
|
print(f" Font {font_name}: {font_obj}")
|
||||||
|
# Check if font has ToUnicode
|
||||||
|
if '/ToUnicode' in font_obj:
|
||||||
|
print(" Has ToUnicode map")
|
||||||
|
else:
|
||||||
|
print(" No ToUnicode map")
|
||||||
|
|
||||||
|
doc.close()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
pdf_path = "test/safedistance.pdf"
|
||||||
|
analyze_pdf_fonts(pdf_path)
|
||||||
8
convert_svg_to_png.py
Normal file
8
convert_svg_to_png.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import cairosvg
|
||||||
|
import sys
|
||||||
|
|
||||||
|
svg_path = sys.argv[1]
|
||||||
|
png_path = sys.argv[2]
|
||||||
|
|
||||||
|
cairosvg.svg2png(url=svg_path, write_to=png_path)
|
||||||
|
print(f"Converted {svg_path} to {png_path}")
|
||||||
30
generate_favicon.py
Normal file
30
generate_favicon.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
from PIL import Image, ImageDraw
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Create a 64x64 image with transparent background
|
||||||
|
size = 64
|
||||||
|
img = Image.new('RGBA', (size, size), (255, 255, 255, 0))
|
||||||
|
draw = ImageDraw.Draw(img)
|
||||||
|
|
||||||
|
# Draw a simple train
|
||||||
|
# Body (rectangle)
|
||||||
|
draw.rectangle([10, 20, 50, 40], fill=(59, 130, 246, 255)) # blue
|
||||||
|
# Cabin (small rectangle)
|
||||||
|
draw.rectangle([50, 25, 58, 35], fill=(30, 64, 175, 255))
|
||||||
|
# Chimney
|
||||||
|
draw.rectangle([20, 10, 25, 20], fill=(239, 68, 68, 255))
|
||||||
|
# Wheels
|
||||||
|
wheel_color = (17, 24, 39, 255)
|
||||||
|
draw.ellipse([15, 45, 25, 55], fill=wheel_color)
|
||||||
|
draw.ellipse([35, 45, 45, 55], fill=wheel_color)
|
||||||
|
draw.ellipse([50, 45, 58, 53], fill=wheel_color)
|
||||||
|
|
||||||
|
# Save as PNG
|
||||||
|
output_path = 'LightRAG-main/lightrag/api/webui/favicon.png'
|
||||||
|
img.save(output_path, 'PNG')
|
||||||
|
print(f'Generated favicon at {output_path}')
|
||||||
|
|
||||||
|
# Also generate a 32x32 version for better favicon scaling
|
||||||
|
img32 = img.resize((32, 32), Image.Resampling.LANCZOS)
|
||||||
|
img32.save(output_path.replace('.png', '_32.png'), 'PNG')
|
||||||
|
print('Generated 32x32 version')
|
||||||
BIN
inputs/drawing/drawing/__enqueued__/drawingocr2.pdf
Normal file
BIN
inputs/drawing/drawing/__enqueued__/drawingocr2.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
inputs/drw1/test2/__enqueued__/test2.docx
Normal file
BIN
inputs/drw1/test2/__enqueued__/test2.docx
Normal file
Binary file not shown.
BIN
inputs/rsr/rsr/__enqueued__/RSR.pdf
Normal file
BIN
inputs/rsr/rsr/__enqueued__/RSR.pdf
Normal file
Binary file not shown.
BIN
inputs/rsr2/rsr2/__enqueued__/RSR2.pdf
Normal file
BIN
inputs/rsr2/rsr2/__enqueued__/RSR2.pdf
Normal file
Binary file not shown.
BIN
inputs/safedistance/safedistance/__enqueued__/ocr.pdf
Normal file
BIN
inputs/safedistance/safedistance/__enqueued__/ocr.pdf
Normal file
Binary file not shown.
BIN
inputs/safedistance/safedistance/__enqueued__/safedistance.pdf
Normal file
BIN
inputs/safedistance/safedistance/__enqueued__/safedistance.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
inputs/test1/test1/__enqueued__/test2.docx
Normal file
BIN
inputs/test1/test1/__enqueued__/test2.docx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
test/Electronic Equipment CPU Temperature Review.pptx
Normal file
BIN
test/Electronic Equipment CPU Temperature Review.pptx
Normal file
Binary file not shown.
BIN
test/PS/6014 PS combined.pdf
Normal file
BIN
test/PS/6014 PS combined.pdf
Normal file
Binary file not shown.
BIN
test/PS/PS/1141B PS V1 of 3.pdf
Normal file
BIN
test/PS/PS/1141B PS V1 of 3.pdf
Normal file
Binary file not shown.
BIN
test/PS/PS/1141B PS V2 of 3.pdf
Normal file
BIN
test/PS/PS/1141B PS V2 of 3.pdf
Normal file
Binary file not shown.
BIN
test/PS/PS/1141B PS V3 of 3.pdf
Normal file
BIN
test/PS/PS/1141B PS V3 of 3.pdf
Normal file
Binary file not shown.
BIN
test/PS/PS/GS.pdf
Normal file
BIN
test/PS/PS/GS.pdf
Normal file
Binary file not shown.
BIN
test/PS/PS/R-train PS.pdf
Normal file
BIN
test/PS/PS/R-train PS.pdf
Normal file
Binary file not shown.
BIN
test/PS/PS/REDE201928_TMS Fault Diagnostic Rules_R-A_0.pdf
Normal file
BIN
test/PS/PS/REDE201928_TMS Fault Diagnostic Rules_R-A_0.pdf
Normal file
Binary file not shown.
BIN
test/RSR.pdf
Normal file
BIN
test/RSR.pdf
Normal file
Binary file not shown.
BIN
test/RSR2.pdf
Normal file
BIN
test/RSR2.pdf
Normal file
Binary file not shown.
BIN
test/WINDOWS SERVER SETUP.docx
Normal file
BIN
test/WINDOWS SERVER SETUP.docx
Normal file
Binary file not shown.
BIN
test/drawing.PDF
Normal file
BIN
test/drawing.PDF
Normal file
Binary file not shown.
BIN
test/drawingocr.PDF
Normal file
BIN
test/drawingocr.PDF
Normal file
Binary file not shown.
BIN
test/drawingocr2.pdf
Normal file
BIN
test/drawingocr2.pdf
Normal file
Binary file not shown.
BIN
test/safedistance.pdf
Normal file
BIN
test/safedistance.pdf
Normal file
Binary file not shown.
BIN
test/test2.docx
Normal file
BIN
test/test2.docx
Normal file
Binary file not shown.
30
test_fix_safedistance.py
Normal file
30
test_fix_safedistance.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import asyncio
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
sys.path.insert(0, 'LightRAG-main')
|
||||||
|
from lightrag.document_processor import get_document_processor
|
||||||
|
|
||||||
|
async def test_pdf():
|
||||||
|
processor = get_document_processor()
|
||||||
|
result = await processor.process_document('test/safedistance.pdf')
|
||||||
|
print(f"Success: {result.success}")
|
||||||
|
print(f"Content length: {len(result.content)}")
|
||||||
|
print(f"Tables found: {len(result.tables) if result.tables else 0}")
|
||||||
|
if result.tables:
|
||||||
|
for i, table in enumerate(result.tables):
|
||||||
|
print(f"Table {i}: rows={table.get('rows')}, cols={table.get('columns')}")
|
||||||
|
# Print first few rows
|
||||||
|
data = table.get('data', [])
|
||||||
|
for r in range(min(3, len(data))):
|
||||||
|
print(f" Row {r}: {data[r]}")
|
||||||
|
# Check if OCR was used
|
||||||
|
if result.metadata.get('processed_with_ocr'):
|
||||||
|
print("OCR was used (good)")
|
||||||
|
else:
|
||||||
|
print("OCR was NOT used (maybe text extraction succeeded?)")
|
||||||
|
# Print first 500 chars of content
|
||||||
|
print("\n--- First 500 characters of extracted content ---")
|
||||||
|
print(result.content[:500])
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(test_pdf())
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user