@semiont/cli 0.4.14 → 0.4.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +15470 -4962
- package/dist/frontend/dist/assets/{ArrowsRightLeftIcon-CMDe963r.js → ArrowsRightLeftIcon-BzLgl5o9.js} +2 -2
- package/dist/frontend/dist/assets/{ArrowsRightLeftIcon-CMDe963r.js.map → ArrowsRightLeftIcon-BzLgl5o9.js.map} +1 -1
- package/dist/frontend/dist/assets/{ChevronLeftIcon-CMXd_XZQ.js → ChevronLeftIcon-BLyRNZuL.js} +2 -2
- package/dist/frontend/dist/assets/{ChevronLeftIcon-CMXd_XZQ.js.map → ChevronLeftIcon-BLyRNZuL.js.map} +1 -1
- package/dist/frontend/dist/assets/{CommandLineIcon-BBerq9Nd.js → CommandLineIcon-Ba4gpk8e.js} +2 -2
- package/dist/frontend/dist/assets/{CommandLineIcon-BBerq9Nd.js.map → CommandLineIcon-Ba4gpk8e.js.map} +1 -1
- package/dist/frontend/dist/assets/{CookiePreferences-Cbur0STI.js → CookiePreferences-CO_BNHwm.js} +2 -2
- package/dist/frontend/dist/assets/{CookiePreferences-Cbur0STI.js.map → CookiePreferences-CO_BNHwm.js.map} +1 -1
- package/dist/frontend/dist/assets/PdfAnnotationCanvas.client-CHDCGQBR-BLaEAPe0.js +2 -0
- package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-CW6SKH2U-DIkAGn7X.js.map → PdfAnnotationCanvas.client-CHDCGQBR-BLaEAPe0.js.map} +1 -1
- package/dist/frontend/dist/assets/StreamStatusContext-BNiTXRfJ.js +2 -0
- package/dist/frontend/dist/assets/{StreamStatusContext-BuPATpTz.js.map → StreamStatusContext-BNiTXRfJ.js.map} +1 -1
- package/dist/frontend/dist/assets/ToolbarPanels-DRHyLUHl.js +2 -0
- package/dist/frontend/dist/assets/ToolbarPanels-DRHyLUHl.js.map +1 -0
- package/dist/frontend/dist/assets/{XMarkIcon-6m9KVFaj.js → XMarkIcon-KMKD47CF.js} +2 -2
- package/dist/frontend/dist/assets/{XMarkIcon-6m9KVFaj.js.map → XMarkIcon-KMKD47CF.js.map} +1 -1
- package/dist/frontend/dist/assets/{browser-ponyfill-DkbQZCyF.js → browser-ponyfill-D2ngVqWO.js} +2 -2
- package/dist/frontend/dist/assets/{browser-ponyfill-DkbQZCyF.js.map → browser-ponyfill-D2ngVqWO.js.map} +1 -1
- package/dist/frontend/dist/assets/client-RpFyflU_.js +2 -0
- package/dist/frontend/dist/assets/{client-BiL3eI7d.js.map → client-RpFyflU_.js.map} +1 -1
- package/dist/frontend/dist/assets/{client-BnL1es01.js → client-bqO7W1Xj.js} +2 -2
- package/dist/frontend/dist/assets/{client-BnL1es01.js.map → client-bqO7W1Xj.js.map} +1 -1
- package/dist/frontend/dist/assets/{client-DrQUcCJy.js → client-ekxuarKC.js} +2 -2
- package/dist/frontend/dist/assets/{client-DrQUcCJy.js.map → client-ekxuarKC.js.map} +1 -1
- package/dist/frontend/dist/assets/{client-BPbsU2tc.js → client-xJTgSko3.js} +2 -2
- package/dist/frontend/dist/assets/{client-BPbsU2tc.js.map → client-xJTgSko3.js.map} +1 -1
- package/dist/frontend/dist/assets/{i18n-BYxb14hm.js → i18n-BbpF47i1.js} +2 -2
- package/dist/frontend/dist/assets/{i18n-BYxb14hm.js.map → i18n-BbpF47i1.js.map} +1 -1
- package/dist/frontend/dist/assets/{index-CNb3PHS7.css → index-BUe9tsov.css} +1 -1
- package/dist/frontend/dist/assets/index-XWcEpo5a.js +159 -0
- package/dist/frontend/dist/assets/index-XWcEpo5a.js.map +1 -0
- package/dist/frontend/dist/assets/layout-BFanPfv_.js +2 -0
- package/dist/frontend/dist/assets/layout-BFanPfv_.js.map +1 -0
- package/dist/frontend/dist/assets/layout-BN0UEIdX.js +2 -0
- package/dist/frontend/dist/assets/layout-BN0UEIdX.js.map +1 -0
- package/dist/frontend/dist/assets/layout-ChyKFPPP.js +2 -0
- package/dist/frontend/dist/assets/layout-ChyKFPPP.js.map +1 -0
- package/dist/frontend/dist/assets/layout-DmjP6diV.js +2 -0
- package/dist/frontend/dist/assets/layout-DmjP6diV.js.map +1 -0
- package/dist/frontend/dist/assets/{not-found-CwWw1pZc.js → not-found-BboGygIW.js} +2 -2
- package/dist/frontend/dist/assets/{not-found-CwWw1pZc.js.map → not-found-BboGygIW.js.map} +1 -1
- package/dist/frontend/dist/assets/page-8F47gNEm.js +2 -0
- package/dist/frontend/dist/assets/page-8F47gNEm.js.map +1 -0
- package/dist/frontend/dist/assets/page-8x98ZAYe.js +2 -0
- package/dist/frontend/dist/assets/{page-iSL5E639.js.map → page-8x98ZAYe.js.map} +1 -1
- package/dist/frontend/dist/assets/page-BaqIbrus.js +2 -0
- package/dist/frontend/dist/assets/{page-Deep7E5d.js.map → page-BaqIbrus.js.map} +1 -1
- package/dist/frontend/dist/assets/page-BfhPRgzq.js +2 -0
- package/dist/frontend/dist/assets/{page-ZBwMTeR-.js.map → page-BfhPRgzq.js.map} +1 -1
- package/dist/frontend/dist/assets/page-Bht4dePL.js +5 -0
- package/dist/frontend/dist/assets/{page-CelRTchO.js.map → page-Bht4dePL.js.map} +1 -1
- package/dist/frontend/dist/assets/page-BtqPeWyh.js +2 -0
- package/dist/frontend/dist/assets/page-BtqPeWyh.js.map +1 -0
- package/dist/frontend/dist/assets/{page-Dv386AZD.js → page-CG7C0ib3.js} +3 -3
- package/dist/frontend/dist/assets/{page-Dv386AZD.js.map → page-CG7C0ib3.js.map} +1 -1
- package/dist/frontend/dist/assets/page-CJnfSnRg.js +2 -0
- package/dist/frontend/dist/assets/page-CJnfSnRg.js.map +1 -0
- package/dist/frontend/dist/assets/page-Cct5hwIU.js +8 -0
- package/dist/frontend/dist/assets/{page-E99MPOn5.js.map → page-Cct5hwIU.js.map} +1 -1
- package/dist/frontend/dist/assets/page-CnJVZMgv.js +2 -0
- package/dist/frontend/dist/assets/page-CnJVZMgv.js.map +1 -0
- package/dist/frontend/dist/assets/page-CpbZG7nR.js +2 -0
- package/dist/frontend/dist/assets/{page-C5bIvv1V.js.map → page-CpbZG7nR.js.map} +1 -1
- package/dist/frontend/dist/assets/{page-D_nHe9FT.js → page-CzvERJKF.js} +2 -2
- package/dist/frontend/dist/assets/{page-D_nHe9FT.js.map → page-CzvERJKF.js.map} +1 -1
- package/dist/frontend/dist/assets/page-DB8grXzl.js +2 -0
- package/dist/frontend/dist/assets/{page-Zq6ARIvg.js.map → page-DB8grXzl.js.map} +1 -1
- package/dist/frontend/dist/assets/page-DI1MUp4X.js +2 -0
- package/dist/frontend/dist/assets/{page-xdXYx3nl.js.map → page-DI1MUp4X.js.map} +1 -1
- package/dist/frontend/dist/assets/{page-CslYhbgz.js → page-Dhi8hP-S.js} +2 -2
- package/dist/frontend/dist/assets/{page-CslYhbgz.js.map → page-Dhi8hP-S.js.map} +1 -1
- package/dist/frontend/dist/assets/{page-BmHLf-7O.js → page-FovvpNWp.js} +2 -2
- package/dist/frontend/dist/assets/{page-BmHLf-7O.js.map → page-FovvpNWp.js.map} +1 -1
- package/dist/frontend/dist/assets/{page-KtkB4tEv.js → page-T424mvNp.js} +2 -2
- package/dist/frontend/dist/assets/{page-KtkB4tEv.js.map → page-T424mvNp.js.map} +1 -1
- package/dist/frontend/dist/assets/{page-1BwlyTUj.js → page-knhbwxzQ.js} +2 -2
- package/dist/frontend/dist/assets/{page-1BwlyTUj.js.map → page-knhbwxzQ.js.map} +1 -1
- package/dist/frontend/dist/assets/privacy-B5TeXaed.js +2 -0
- package/dist/frontend/dist/assets/{privacy-DO1oxJpM.js.map → privacy-B5TeXaed.js.map} +1 -1
- package/dist/frontend/dist/assets/{query-ATBhtd3K.js → query-B6BuIB0M.js} +3 -3
- package/dist/frontend/dist/assets/{query-ATBhtd3K.js.map → query-B6BuIB0M.js.map} +1 -1
- package/dist/frontend/dist/assets/{routing-DMdXWYXo.js → routing-By_4TZHr.js} +2 -2
- package/dist/frontend/dist/assets/{routing-DMdXWYXo.js.map → routing-By_4TZHr.js.map} +1 -1
- package/dist/frontend/dist/assets/{routing-tJ_HbFRP.js → routing-vcvYfuPO.js} +2 -2
- package/dist/frontend/dist/assets/{routing-tJ_HbFRP.js.map → routing-vcvYfuPO.js.map} +1 -1
- package/dist/frontend/dist/assets/{vendor-EnoIVk-c.js → vendor-DJo4KD8w.js} +2 -2
- package/dist/frontend/dist/assets/{vendor-EnoIVk-c.js.map → vendor-DJo4KD8w.js.map} +1 -1
- package/dist/frontend/dist/index.html +5 -5
- package/dist/frontend/package.json +1 -1
- package/package.json +9 -9
- package/dist/frontend/dist/assets/PdfAnnotationCanvas.client-CW6SKH2U-DIkAGn7X.js +0 -2
- package/dist/frontend/dist/assets/StreamStatusContext-BuPATpTz.js +0 -2
- package/dist/frontend/dist/assets/ToolbarPanels-rN1MIRTV.js +0 -2
- package/dist/frontend/dist/assets/ToolbarPanels-rN1MIRTV.js.map +0 -1
- package/dist/frontend/dist/assets/client-BiL3eI7d.js +0 -2
- package/dist/frontend/dist/assets/en-IUV4ZXKH-BY1RKeLS.js +0 -135
- package/dist/frontend/dist/assets/en-IUV4ZXKH-BY1RKeLS.js.map +0 -1
- package/dist/frontend/dist/assets/index-DA31r_0s.js +0 -27
- package/dist/frontend/dist/assets/index-DA31r_0s.js.map +0 -1
- package/dist/frontend/dist/assets/layout-B8IinUdt.js +0 -2
- package/dist/frontend/dist/assets/layout-B8IinUdt.js.map +0 -1
- package/dist/frontend/dist/assets/layout-BjpW078f.js +0 -2
- package/dist/frontend/dist/assets/layout-BjpW078f.js.map +0 -1
- package/dist/frontend/dist/assets/layout-CDIjxs5a.js +0 -6
- package/dist/frontend/dist/assets/layout-CDIjxs5a.js.map +0 -1
- package/dist/frontend/dist/assets/layout-DKm9XdRr.js +0 -2
- package/dist/frontend/dist/assets/layout-DKm9XdRr.js.map +0 -1
- package/dist/frontend/dist/assets/page-BQ00VxR5.js +0 -2
- package/dist/frontend/dist/assets/page-BQ00VxR5.js.map +0 -1
- package/dist/frontend/dist/assets/page-C5bIvv1V.js +0 -2
- package/dist/frontend/dist/assets/page-CelRTchO.js +0 -5
- package/dist/frontend/dist/assets/page-Cf9cnqhC.js +0 -2
- package/dist/frontend/dist/assets/page-Cf9cnqhC.js.map +0 -1
- package/dist/frontend/dist/assets/page-DEjlNEY0.js +0 -2
- package/dist/frontend/dist/assets/page-DEjlNEY0.js.map +0 -1
- package/dist/frontend/dist/assets/page-DLtwpo78.js +0 -2
- package/dist/frontend/dist/assets/page-DLtwpo78.js.map +0 -1
- package/dist/frontend/dist/assets/page-Deep7E5d.js +0 -2
- package/dist/frontend/dist/assets/page-E99MPOn5.js +0 -8
- package/dist/frontend/dist/assets/page-ZBwMTeR-.js +0 -2
- package/dist/frontend/dist/assets/page-Zq6ARIvg.js +0 -2
- package/dist/frontend/dist/assets/page-iSL5E639.js +0 -2
- package/dist/frontend/dist/assets/page-xdXYx3nl.js +0 -2
- package/dist/frontend/dist/assets/privacy-DO1oxJpM.js +0 -2
- package/dist/frontend/dist/assets/useAuth-yUx5lBP5.js +0 -2
- package/dist/frontend/dist/assets/useAuth-yUx5lBP5.js.map +0 -1
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
12
12
|
<link rel="manifest" href="/favicons/site.webmanifest" />
|
|
13
13
|
<meta name="theme-color" content="#00FFFF" />
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/query-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/i18n-
|
|
18
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-XWcEpo5a.js"></script>
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-DJo4KD8w.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/query-B6BuIB0M.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/i18n-BbpF47i1.js">
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BUe9tsov.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
21
21
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semiont/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.15",
|
|
4
4
|
"description": "Semiont CLI - Unified environment management tool",
|
|
5
5
|
"_comment": "AWS SDK dependencies (@aws-sdk/*) are only used by platforms/aws",
|
|
6
6
|
"type": "module",
|
|
@@ -47,11 +47,11 @@
|
|
|
47
47
|
"test:watch:unit": "vitest --watch --config vitest.config.unit.ts"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@anthropic-ai/sdk": "^0.
|
|
50
|
+
"@anthropic-ai/sdk": "^0.84.0",
|
|
51
51
|
"@aws-sdk/client-cloudformation": "^3.600.0",
|
|
52
52
|
"@aws-sdk/client-cloudwatch": "^3.600.0",
|
|
53
53
|
"@aws-sdk/client-cloudwatch-logs": "^3.600.0",
|
|
54
|
-
"@aws-sdk/client-cost-explorer": "^3.
|
|
54
|
+
"@aws-sdk/client-cost-explorer": "^3.1025.0",
|
|
55
55
|
"@aws-sdk/client-ecr": "^3.600.0",
|
|
56
56
|
"@aws-sdk/client-ecs": "^3.600.0",
|
|
57
57
|
"@aws-sdk/client-efs": "^3.600.0",
|
|
@@ -63,12 +63,12 @@
|
|
|
63
63
|
"@aws-sdk/client-secrets-manager": "^3.600.0",
|
|
64
64
|
"@aws-sdk/client-sts": "^3.859.0",
|
|
65
65
|
"@aws-sdk/client-wafv2": "^3.859.0",
|
|
66
|
-
"@semiont/api-client": "0.4.
|
|
67
|
-
"@semiont/content": "0.4.
|
|
68
|
-
"@semiont/core": "0.4.
|
|
69
|
-
"@semiont/event-sourcing": "0.4.
|
|
70
|
-
"@semiont/graph": "0.4.
|
|
71
|
-
"@semiont/make-meaning": "0.4.
|
|
66
|
+
"@semiont/api-client": "0.4.15",
|
|
67
|
+
"@semiont/content": "0.4.15",
|
|
68
|
+
"@semiont/core": "0.4.15",
|
|
69
|
+
"@semiont/event-sourcing": "0.4.15",
|
|
70
|
+
"@semiont/graph": "0.4.15",
|
|
71
|
+
"@semiont/make-meaning": "0.4.15",
|
|
72
72
|
"arg": "^5.0.2",
|
|
73
73
|
"argon2": "^0.44.0",
|
|
74
74
|
"express": "^5.2.1",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{F as lt,G as dt}from"./en-IUV4ZXKH-BY1RKeLS.js";import{r as l}from"./vendor-EnoIVk-c.js";import{j as u}from"./query-ATBhtd3K.js";import"./index-DA31r_0s.js";import"./i18n-BYxb14hm.js";function ut(t,d,s,o,a=1){const w=Math.min(t.startX,t.endX),j=Math.min(t.startY,t.endY),S=Math.max(t.startX,t.endX),b=Math.max(t.startY,t.endY),P=w/a,D=(S-w)/a,E=o-b/a,h=(b-j)/a;return{page:d,x:Math.round(P),y:Math.round(E),width:Math.round(D),height:Math.round(h)}}function V(t,d,s=1){const o=t.x*s,a=t.width*s,w=(d-t.y-t.height)*s,j=t.height*s;return{x:o,y:w,width:a,height:j}}function ht(t){return`page=${t.page}&viewrect=${t.x},${t.y},${t.width},${t.height}`}function J(t){try{const d=t.match(/page=(\d+)/);if(!d)return null;const s=parseInt(d[1],10),o=t.match(/viewrect=([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return o?{page:s,x:parseFloat(o[1]),y:parseFloat(o[2]),width:parseFloat(o[3]),height:parseFloat(o[4])}:null}catch{return null}}function ft(t){const d=t.match(/page=(\d+)/);return d?parseInt(d[1],10):null}async function gt(){return typeof window<"u"&&window.pdfjsLib?window.pdfjsLib:new Promise((t,d)=>{const s=document.createElement("script");s.src="/pdfjs/pdf.min.mjs",s.type="module",s.onload=()=>{const o=window.pdfjsLib;if(!o){d(new Error("PDF.js loaded but pdfjsLib not available"));return}o.GlobalWorkerOptions.workerSrc="/pdfjs/pdf.worker.min.mjs",t(o)},s.onerror=()=>{d(new Error("Failed to load PDF.js from /pdfjs/pdf.min.mjs"))},document.head.appendChild(s)})}async function mt(t){return(await gt()).getDocument({url:t}).promise}async function pt(t,d=1){const s=t.getViewport({scale:d}),o=document.createElement("canvas"),a=o.getContext("2d");if(!a)throw new Error("Failed to get 2D context");return o.width=s.width,o.height=s.height,await t.render({canvasContext:a,viewport:s}).promise,{dataUrl:o.toDataURL("image/png"),width:s.width,height:s.height}}function K(t){if(!t)return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"};switch(t){case"highlighting":return{stroke:"rgb(250, 204, 21)",fill:"rgba(250, 204, 21, 0.3)"};case"linking":return{stroke:"rgb(59, 130, 246)",fill:"rgba(59, 130, 246, 0.2)"};case"assessing":return{stroke:"rgb(239, 68, 68)",fill:"rgba(239, 68, 68, 0.2)"};case"commenting":return{stroke:"rgb(255, 255, 255)",fill:"rgba(255, 255, 255, 0.2)"};default:return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"}}}function kt({pdfUrl:t,existingAnnotations:d=[],drawingMode:s,selectedMotivation:o,eventBus:a,hoveredAnnotationId:w,selectedAnnotationId:j,hoverDelayMs:S=150}){const[b,P]=l.useState(null),[D,E]=l.useState(0),[h,W]=l.useState(1),[N,Q]=l.useState(null),[A,C]=l.useState(!0),[H,L]=l.useState(null),[f,Z]=l.useState(null),[m,U]=l.useState(null),[z]=l.useState(1.5),[M,v]=l.useState(!1),[r,y]=l.useState(null),B=l.useRef(null),g=l.useRef(null);l.useEffect(()=>{let e=!1;async function n(){try{C(!0),L(null);const c=await mt(t);if(e)return;P(c),E(c.numPages),C(!1)}catch(c){if(e)return;console.error("Error loading PDF:",c),L("Failed to load PDF"),C(!1)}}return n(),()=>{e=!0}},[t]),l.useEffect(()=>{if(!b)return;let e=!1;const n=b;async function c(){try{const i=await n.getPage(h);if(e)return;const p=i.getViewport({scale:1});Z({width:p.width,height:p.height});const{dataUrl:x}=await pt(i,z);if(e)return;Q(x)}catch(i){if(e)return;console.error("Error loading page:",i),L("Failed to load page")}}return c(),()=>{e=!0}},[b,h,z]),l.useEffect(()=>{const e=()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})};e();let n=null;try{n=new ResizeObserver(e),g.current&&n.observe(g.current)}catch{console.warn("ResizeObserver not supported, falling back to window resize listener"),window.addEventListener("resize",e)}return()=>{n?n.disconnect():window.removeEventListener("resize",e)}},[N]);const tt=l.useCallback(e=>{if(!s||!g.current)return;const n=g.current.getBoundingClientRect(),c=e.clientX-n.left,i=e.clientY-n.top;v(!0),y({startX:c,startY:i,endX:c,endY:i})},[s]),et=l.useCallback(e=>{if(!M||!r||!g.current)return;const n=g.current.getBoundingClientRect();y({...r,endX:e.clientX-n.left,endY:e.clientY-n.top})},[M,r]),nt=l.useCallback(()=>{if(!M||!r||!f||!m||!a){v(!1),y(null);return}if(Math.sqrt(Math.pow(r.endX-r.startX,2)+Math.pow(r.endY-r.startY,2))<10){if(d.length>0){const k=$.find(T=>{const Y=I(T.target);if(!Y)return!1;const _=J(Y.value);if(!_)return!1;const F=V(_,f.height,1),R=m.width/f.width,q=m.height/f.height,G=F.x*R,O=F.y*q,it=F.width*R,ct=F.height*q;return r.endX>=G&&r.endX<=G+it&&r.endY>=O&&r.endY<=O+ct});if(k){a==null||a.get("browse:click").next({annotationId:k.id,motivation:k.motivation}),v(!1),y(null);return}}v(!1),y(null);return}const c=f.width/m.width,i=f.height/m.height,p={startX:r.startX*c,startY:r.startY*i,endX:r.endX*c,endY:r.endY*i},x=ut(p,h,f.width,f.height,1),X=ht(x);o&&a.get("mark:requested").next({selector:{type:"FragmentSelector",conformsTo:"http://tools.ietf.org/rfc/rfc3778",value:X},motivation:o}),v(!1)},[M,r,h,f,m,o,d]),I=e=>{const n=lt(e);if(!n)return null;const i=(Array.isArray(n)?n:[n]).find(p=>p.type==="FragmentSelector");return!i||i.type!=="FragmentSelector"?null:i},$=d.filter(e=>{const n=I(e.target);return n?ft(n.value)===h:!1}),{handleMouseEnter:rt,handleMouseLeave:st}=l.useMemo(()=>dt(e=>a==null?void 0:a.get("beckon:hover").next({annotationId:e}),S),[a,S]),{stroke:ot,fill:at}=K(o??null);return H?u.jsx("div",{className:"semiont-pdf-annotation-canvas__error",children:H}):u.jsxs("div",{className:"semiont-pdf-annotation-canvas",children:[A&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__loading",children:"Loading PDF..."}),u.jsxs("div",{ref:B,className:"semiont-pdf-annotation-canvas__container",style:{display:A?"none":void 0},onMouseDown:tt,onMouseMove:et,onMouseUp:nt,onMouseLeave:()=>{M&&(v(!1),y(null))},"data-drawing-mode":s||"none",children:[N&&u.jsx("img",{ref:g,src:N,alt:`PDF page ${h}`,className:"semiont-pdf-annotation-canvas__image",draggable:!1,style:{pointerEvents:"none"},onLoad:()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})})})}}),m&&f&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay-container",children:u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay",children:u.jsxs("svg",{className:"semiont-pdf-annotation-canvas__svg",width:m.width,height:m.height,children:[$.map(e=>{const n=I(e.target);if(!n)return null;const c=J(n.value);if(!c)return null;const i=V(c,f.height,1),p=m.width/f.width,x=m.height/f.height,X=e.id===w,k=e.id===j,T=e.motivation,{stroke:Y,fill:_}=K(T);return u.jsx("rect",{x:i.x*p,y:i.y*x,width:i.width*p,height:i.height*x,stroke:Y,strokeWidth:k?4:X?3:2,fill:_,style:{pointerEvents:"auto",cursor:"pointer",opacity:k?1:X?.9:.7},onClick:()=>a==null?void 0:a.get("browse:click").next({annotationId:e.id,motivation:e.motivation}),onMouseEnter:()=>rt(e.id),onMouseLeave:st},e.id)}),r&&(()=>{const e=Math.min(r.startX,r.endX),n=Math.min(r.startY,r.endY),c=Math.abs(r.endX-r.startX),i=Math.abs(r.endY-r.startY);return u.jsx("rect",{x:e,y:n,width:c,height:i,stroke:ot,strokeWidth:2,strokeDasharray:"5,5",fill:at,pointerEvents:"none"})})()]})})})]}),D>0&&u.jsxs("div",{className:"semiont-pdf-annotation-canvas__controls",children:[u.jsx("button",{disabled:h<=1,onClick:()=>W(h-1),className:"semiont-pdf-annotation-canvas__button",children:"Previous"}),u.jsxs("span",{className:"semiont-pdf-annotation-canvas__page-info",children:["Page ",h," of ",D]}),u.jsx("button",{disabled:h>=D,onClick:()=>W(h+1),className:"semiont-pdf-annotation-canvas__button",children:"Next"})]})]})}export{kt as PdfAnnotationCanvas};
|
|
2
|
-
//# sourceMappingURL=PdfAnnotationCanvas.client-CW6SKH2U-DIkAGn7X.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./query-ATBhtd3K.js";import{r as a}from"./vendor-EnoIVk-c.js";import{l as G,ab as Y,ac as Q,ad as V,U as J,V as X,X as q,ae as ee,Y as te,af as se,g as ne,ag as ae,ah as ie,ai as re}from"./en-IUV4ZXKH-BY1RKeLS.js";import{u as oe,a as _,b as P,g as L,s as M,d as le}from"./useAuth-yUx5lBP5.js";import{u as U,a as ce,b as de}from"./routing-DMdXWYXo.js";import{u as k}from"./i18n-BYxb14hm.js";import{a as me,F as ue}from"./XMarkIcon-6m9KVFaj.js";function he({title:n,titleId:t,...i},r){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),n?a.createElement("title",{id:t},n):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"}))}const pe=a.forwardRef(he);function ge({title:n,titleId:t,...i},r){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),n?a.createElement("title",{id:t},n):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m4.5 12.75 6 6 9-13.5"}))}const xe=a.forwardRef(ge);function fe({title:n,titleId:t,...i},r){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),n?a.createElement("title",{id:t},n):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4.5v15m7.5-7.5h-15"}))}const je=a.forwardRef(fe),T="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==";function ve(){const{t:n}=k(),t=(N,c)=>n(`UserPanel.${N}`,c),{displayName:i,avatarUrl:r,userDomain:l,isAdmin:m,isModerator:u}=oe(),{clearSession:g}=_(),{activeKnowledgeBase:d}=P(),x=G(),o=U(),[S,f]=a.useState(!1),{timeRemaining:I}=Y(),w=V(I)??"Unknown",A=(()=>{if(!r||S)return T;const N=Q(r);return N||(console.warn("Invalid profile image URL detected, using fallback"),T)})(),b=async()=>{try{await x.logout()}catch{}g(),o.push("/")};return e.jsxs("div",{className:"semiont-user-panel",children:[e.jsx("h3",{className:"semiont-user-panel__title",children:t("account")}),d&&e.jsx("div",{style:{padding:"0 0.75rem 0.5rem",fontSize:"0.8rem",color:"var(--semiont-color-neutral-400)"},children:d.label}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("img",{src:A,alt:t("profileAlt",{name:i||t("user")}),width:48,height:48,className:"w-12 h-12 rounded-full object-cover",onError:()=>f(!0)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"semiont-panel-text",children:i||t("user")}),l&&e.jsxs("div",{className:"semiont-panel-text-secondary",children:["@",l]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"semiont-panel-label",children:t("session")}),e.jsx("div",{className:"semiont-session-box",children:e.jsx("div",{className:"semiont-panel-hint",children:t("expiresIn",{time:w})})})]}),(m||u)&&e.jsxs("div",{children:[e.jsx("label",{className:"semiont-panel-label",children:t("privileges")}),e.jsxs("div",{className:"space-y-1",children:[m&&e.jsx("div",{className:"semiont-privilege-badge semiont-privilege-badge--admin",children:e.jsx("span",{className:"semiont-privilege-text",children:t("administrator")})}),u&&e.jsx("div",{className:"semiont-privilege-badge semiont-privilege-badge--moderator",children:e.jsx("span",{className:"semiont-privilege-text",children:t("moderator")})})]})]}),e.jsx("div",{className:"semiont-panel-divider",children:e.jsx("button",{onClick:b,className:"semiont-signout-button",children:t("signOut")})})]})]})}function be(){return crypto.randomUUID()}const ye={authenticated:"var(--semiont-color-success-500, #22c55e)",expired:"var(--semiont-color-warning-500, #eab308)","signed-out":"var(--semiont-color-neutral-400, #9ca3af)",unreachable:"var(--semiont-color-error-500, #ef4444)"},we={authenticated:"statusConnected",expired:"statusExpired","signed-out":"statusSignedOut",unreachable:"statusUnreachable"};function Ne({status:n,t}){return e.jsx("span",{title:t(we[n]),style:{width:"0.5rem",height:"0.5rem",borderRadius:"50%",backgroundColor:ye[n],flexShrink:0}})}function Se({t:n,onSubmit:t,onCancel:i,error:r,isSubmitting:l,autoFocus:m,pulsing:u,initialHost:g="localhost",initialPort:d=4e3,initialEmail:x="admin@example.com"}){const[o,S]=a.useState(g),[f,I]=a.useState(String(d)),[w,A]=a.useState(x),[b,N]=a.useState("");return e.jsxs("div",{className:u?"semiont-panel__login-form--pulsing":"",style:{margin:"0.5rem",padding:"0.75rem",border:"1px solid var(--semiont-color-neutral-200, #e5e7eb)",borderRadius:"var(--semiont-panel-border-radius, 0.5rem)",background:"var(--semiont-bg-secondary, transparent)"},children:[e.jsx("h3",{style:{fontSize:"0.8rem",fontWeight:600,marginBottom:"0.5rem"},children:n("connectTitle")}),e.jsxs("form",{onSubmit:c=>{c.preventDefault(),t(o,parseInt(f,10)||4e3,w,b)},style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[e.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[e.jsx("input",{type:"text",value:o,onChange:c=>S(c.target.value),placeholder:"Host",className:"semiont-input",style:{flex:1},autoFocus:m}),e.jsx("input",{type:"number",value:f,onChange:c=>I(c.target.value),placeholder:"Port",className:"semiont-input",style:{width:"5rem"}})]}),e.jsx("input",{type:"email",value:w,onChange:c=>A(c.target.value),placeholder:"Email",className:"semiont-input"}),e.jsx("input",{type:"password",value:b,onChange:c=>N(c.target.value),placeholder:"Password",className:"semiont-input"}),r&&e.jsx("div",{style:{color:"var(--semiont-color-error-500, #ef4444)",fontSize:"0.75rem"},children:r}),e.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[e.jsx("button",{type:"submit",className:"semiont-button semiont-button--primary",style:{flex:1},disabled:l,children:n(l?"connecting":"connect")}),e.jsx("button",{type:"button",className:"semiont-button",onClick:i,children:e.jsx(ue,{style:{width:"1rem",height:"1rem"}})})]})]})]})}function Ie({t:n,kb:t,onSubmit:i,onCancel:r,error:l,isSubmitting:m}){const[u,g]=a.useState("");return e.jsxs("form",{onSubmit:d=>{d.preventDefault(),i(u)},style:{padding:"0.5rem 0.75rem",display:"flex",flexDirection:"column",gap:"0.375rem"},children:[e.jsx("div",{style:{fontSize:"0.75rem",color:"var(--semiont-color-neutral-400)"},children:t.email}),e.jsx("input",{type:"password",value:u,onChange:d=>g(d.target.value),placeholder:"Password",className:"semiont-input",style:{fontSize:"0.8rem"},autoFocus:!0}),l&&e.jsx("div",{style:{color:"var(--semiont-color-error-500, #ef4444)",fontSize:"0.75rem"},children:l}),e.jsxs("div",{style:{display:"flex",gap:"0.375rem"},children:[e.jsx("button",{type:"submit",className:"semiont-button semiont-button--primary",style:{flex:1,fontSize:"0.8rem"},disabled:m,children:n(m?"signingIn":"signIn")}),e.jsx("button",{type:"button",className:"semiont-button",onClick:r,style:{fontSize:"0.8rem"},children:n("cancel")})]})]})}async function R(n,t,i,r,l){const m=`${i}://${n}:${t}`,u=new J({baseUrl:q(m),eventBus:new X}),g=await u.authenticatePassword(ee(r),l),d=g.token??g.accessToken;if(!d)throw new Error("No token received");let x=`${n}:${t}`;try{const o=await u.getStatus({auth:te(d)});o.projectName&&(x=o.projectName)}catch{}return{token:d,label:x}}function Ae(){const{t:n}=k(),t=(s,h)=>n(`KnowledgeBasePanel.${s}`,h),{knowledgeBases:i,activeKnowledgeBase:r,setActiveKnowledgeBase:l,addKnowledgeBase:m,removeKnowledgeBase:u,updateKnowledgeBase:g,signOut:d}=P(),[x,o]=a.useState(!1),[S,f]=a.useState(null),[I,w]=a.useState(!1),[A,b]=a.useState(null),[N,c]=a.useState(null),[B,z]=a.useState(!1),[O,E]=a.useState(null),[,K]=a.useState(0);a.useEffect(()=>{i.length===0&&o(!0)},[i.length]),a.useEffect(()=>{const s=setInterval(()=>K(h=>h+1),3e4);return()=>clearInterval(s)},[]);const F=()=>{o(!0),b(null),f(null)},W=async(s,h,j,v)=>{f(null),w(!0);const y=le(s),C=i.find(p=>p.host===s&&p.port===h);if(C){try{const{token:p}=await R(s,h,y,j,v);M(C.id,p),l(C.id),o(!1)}catch(p){f(p instanceof Error?p.message:String(p))}finally{w(!1)}return}try{const{token:p,label:H}=await R(s,h,y,j,v),D=be();M(D,p),m({id:D,label:H,host:s,port:h,protocol:y,email:j}),o(!1)}catch(p){f(p instanceof Error?p.message:String(p))}finally{w(!1)}},Z=async(s,h)=>{const j=i.find(v=>v.id===s);if(j){c(null),z(!0);try{const{token:v,label:y}=await R(j.host,j.port,j.protocol,j.email,h);M(s,v),g(s,{label:y}),b(null),l(s)}catch(v){c(v instanceof Error?v.message:String(v))}finally{z(!1)}}},$=s=>{L(s.id)==="authenticated"?l(s.id):(b(s.id),o(!1),c(null))};return e.jsxs("div",{className:"semiont-panel",children:[e.jsx("div",{className:"semiont-panel-header",children:e.jsxs("h2",{className:"semiont-panel-header__title",children:[e.jsx("span",{className:"semiont-panel-header__text",children:t("title")}),e.jsxs("span",{className:"semiont-panel-header__count",children:["(",i.length,")"]})]})}),e.jsxs("div",{className:"semiont-panel__content",children:[e.jsx("div",{className:"semiont-panel__list",children:i.map(s=>{const h=L(s.id),j=s.id===(r==null?void 0:r.id),v=A===s.id;return e.jsxs("div",{children:[e.jsxs("div",{className:`semiont-panel-item semiont-panel-item--clickable${j?" semiont-panel-item--selected":""}`,style:{display:"flex",flexDirection:"column",gap:"0.25rem",cursor:"pointer",padding:"0.5rem 0.75rem"},onClick:()=>$(s),children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[e.jsx(Ne,{status:h,t}),e.jsx("span",{className:"semiont-panel-text",style:{flex:1,fontWeight:500},children:s.label}),j&&e.jsx(xe,{style:{width:"1rem",height:"1rem",color:"var(--semiont-color-primary-500)",flexShrink:0}}),h==="authenticated"&&e.jsx("button",{onClick:y=>{y.stopPropagation(),d(s.id)},title:t("signOut"),style:{background:"none",border:"none",cursor:"pointer",padding:"0.125rem",color:"var(--semiont-color-neutral-400)"},children:e.jsx(pe,{style:{width:"0.875rem",height:"0.875rem"}})}),e.jsx("button",{onClick:y=>{y.stopPropagation(),E(s.id)},title:t("remove"),style:{background:"none",border:"none",cursor:"pointer",padding:"0.125rem",color:"var(--semiont-color-neutral-400)"},children:e.jsx(me,{style:{width:"0.875rem",height:"0.875rem"}})})]}),e.jsxs("span",{className:"semiont-panel-text-secondary",style:{fontSize:"0.7rem",paddingLeft:"1rem"},children:[s.host,":",s.port]})]}),O===s.id&&e.jsxs("div",{style:{padding:"0.5rem 0.75rem",fontSize:"0.8rem",display:"flex",alignItems:"center",gap:"0.5rem",background:"var(--semiont-bg-secondary, #f9fafb)",borderBottom:"1px solid var(--semiont-color-neutral-200, #e5e7eb)"},children:[e.jsx("span",{style:{flex:1,color:"var(--semiont-color-neutral-500)"},children:t("removeConfirm",{label:s.label})}),e.jsx("button",{onClick:()=>{u(s.id),E(null)},className:"semiont-button",style:{fontSize:"0.75rem",padding:"0.2rem 0.5rem",color:"var(--semiont-color-error-500, #ef4444)"},children:t("remove")}),e.jsx("button",{onClick:()=>E(null),className:"semiont-button",style:{fontSize:"0.75rem",padding:"0.2rem 0.5rem"},children:t("cancel")})]}),v&&e.jsx(Ie,{t,kb:s,onSubmit:y=>Z(s.id,y),onCancel:()=>b(null),error:N,isSubmitting:B})]},s.id)})}),x&&e.jsx(Se,{t,onSubmit:W,onCancel:()=>o(!1),error:S,isSubmitting:I,autoFocus:i.length===0,pulsing:i.length===0})]}),!x&&e.jsx("div",{className:"semiont-panel-footer",children:e.jsxs("button",{onClick:F,className:"semiont-panel-item semiont-panel-item--clickable",style:{width:"100%",display:"flex",alignItems:"center",gap:"0.5rem",color:"var(--semiont-color-primary-600)"},children:[e.jsx(je,{style:{width:"1rem",height:"1rem",flexShrink:0}}),e.jsx("span",{className:"semiont-panel-text",style:{color:"inherit"},children:t("addKnowledgeBase")})]})})]})}function Le({activePanel:n,theme:t,showLineNumbers:i,hoverDelayMs:r,children:l}){const{t:m}=k(),{session:u}=_(),g=!!u,d=ce(),x=U(),o=de(),[S,f]=a.useTransition(),{width:I,setWidth:w,minWidth:A,maxWidth:b}=se(),N=a.useCallback(({locale:c})=>{o&&f(()=>{x.replace(o,{locale:c})})},[o,x,f]);return ne({"settings:locale-changed":N}),!n||!l&&!ae.includes(n)?null:e.jsxs("div",{className:"semiont-toolbar-panels",style:{width:`${I}px`,position:"relative"},children:[e.jsx(ie,{onResize:w,minWidth:A,maxWidth:b,position:"left",ariaLabel:"Resize right panel"}),e.jsxs("div",{className:"semiont-toolbar-panels__content",children:[l,n==="knowledge-base"&&e.jsx(Ae,{}),n==="user"&&(g?e.jsx(ve,{}):e.jsxs("div",{className:"semiont-panel",children:[e.jsx("div",{className:"semiont-panel-header",children:e.jsx("h2",{className:"semiont-panel-header__title",children:e.jsx("span",{className:"semiont-panel-header__text",children:m("UserPanel.account")})})}),e.jsx("div",{className:"semiont-panel__content",style:{padding:"1rem",textAlign:"center"},children:e.jsx("p",{style:{color:"var(--semiont-color-neutral-400)",fontSize:"0.85rem",lineHeight:1.5},children:m("AccountPanel.notAuthenticated")})})]})),n==="settings"&&e.jsx(re,{showLineNumbers:i,theme:t,hoverDelayMs:r,locale:d,isPendingLocaleChange:S})]})]})}export{je as F,Le as T};
|
|
2
|
-
//# sourceMappingURL=ToolbarPanels-rN1MIRTV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolbarPanels-rN1MIRTV.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ArrowRightStartOnRectangleIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/CheckIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/PlusIcon.js","../../src/components/UserPanel.tsx","../../src/components/KnowledgeBasePanel.tsx","../../src/components/toolbar/ToolbarPanels.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ArrowRightStartOnRectangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowRightStartOnRectangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m4.5 12.75 6 6 9-13.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction PlusIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 4.5v15m7.5-7.5h-15\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(PlusIcon);\nexport default ForwardRef;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { sanitizeImageURL, useSessionExpiry, formatTime, useApiClient } from '@semiont/react-ui';\nimport { useAuth } from '@/hooks/useAuth';\nimport { useAuthContext } from '@/contexts/AuthContext';\nimport { useKnowledgeBaseContext } from '@/contexts/KnowledgeBaseContext';\nimport { useRouter } from '@/i18n/routing';\n\n// Fallback avatar when image fails to load or is invalid\nconst FALLBACK_AVATAR = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==';\n\nexport function UserPanel() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`UserPanel.${k}`, p as any) as string;\n const { displayName, avatarUrl, userDomain, isAdmin, isModerator } = useAuth();\n const { clearSession } = useAuthContext();\n const { activeKnowledgeBase } = useKnowledgeBaseContext();\n const apiClient = useApiClient();\n const router = useRouter();\n const [imageError, setImageError] = useState(false);\n const { timeRemaining } = useSessionExpiry();\n const sessionTimeFormatted = formatTime(timeRemaining) ?? 'Unknown';\n\n // Sanitize and validate the profile image URL\n const profileImageUrl = (() => {\n if (!avatarUrl || imageError) {\n return FALLBACK_AVATAR;\n }\n\n const sanitized = sanitizeImageURL(avatarUrl);\n if (!sanitized) {\n console.warn('Invalid profile image URL detected, using fallback');\n return FALLBACK_AVATAR;\n }\n\n return sanitized;\n })();\n\n const handleSignOut = async () => {\n try {\n await apiClient.logout();\n } catch {\n // best-effort — cookie already cleared server-side\n }\n clearSession();\n router.push('/');\n };\n\n return (\n <div className=\"semiont-user-panel\">\n <h3 className=\"semiont-user-panel__title\">\n {t('account')}\n </h3>\n\n {activeKnowledgeBase && (\n <div style={{ padding: '0 0.75rem 0.5rem', fontSize: '0.8rem', color: 'var(--semiont-color-neutral-400)' }}>\n {activeKnowledgeBase.label}\n </div>\n )}\n\n <div className=\"space-y-4\">\n {/* User Profile */}\n <div className=\"flex items-center gap-3\">\n <img\n src={profileImageUrl}\n alt={t('profileAlt', { name: displayName || t('user') })}\n width={48}\n height={48}\n className=\"w-12 h-12 rounded-full object-cover\"\n onError={() => setImageError(true)}\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"semiont-panel-text\">\n {displayName || t('user')}\n </div>\n {userDomain && (\n <div className=\"semiont-panel-text-secondary\">\n @{userDomain}\n </div>\n )}\n </div>\n </div>\n\n {/* Session Info */}\n <div>\n <label className=\"semiont-panel-label\">\n {t('session')}\n </label>\n <div className=\"semiont-session-box\">\n <div className=\"semiont-panel-hint\">\n {t('expiresIn', { time: sessionTimeFormatted })}\n </div>\n </div>\n </div>\n\n {/* Privileges */}\n {(isAdmin || isModerator) && (\n <div>\n <label className=\"semiont-panel-label\">\n {t('privileges')}\n </label>\n <div className=\"space-y-1\">\n {isAdmin && (\n <div className=\"semiont-privilege-badge semiont-privilege-badge--admin\">\n <span className=\"semiont-privilege-text\">\n {t('administrator')}\n </span>\n </div>\n )}\n {isModerator && (\n <div className=\"semiont-privilege-badge semiont-privilege-badge--moderator\">\n <span className=\"semiont-privilege-text\">\n {t('moderator')}\n </span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Sign Out Button */}\n <div className=\"semiont-panel-divider\">\n <button\n onClick={handleSignOut}\n className=\"semiont-signout-button\"\n >\n {t('signOut')}\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CheckIcon, PlusIcon, ArrowRightStartOnRectangleIcon, XMarkIcon, TrashIcon } from '@heroicons/react/24/outline';\nimport { SemiontApiClient } from '@semiont/api-client';\nimport { baseUrl, email as makeEmail, accessToken, EventBus } from '@semiont/core';\nimport {\n useKnowledgeBaseContext,\n defaultProtocol,\n getKbSessionStatus,\n setKbToken,\n type KnowledgeBase,\n type KbSessionStatus,\n} from '@/contexts/KnowledgeBaseContext';\n\ntype T = (key: string, params?: Record<string, unknown>) => string;\n\nfunction generateKbId(): string {\n return crypto.randomUUID();\n}\n\nconst STATUS_COLORS: Record<KbSessionStatus, string> = {\n authenticated: 'var(--semiont-color-success-500, #22c55e)',\n expired: 'var(--semiont-color-warning-500, #eab308)',\n 'signed-out': 'var(--semiont-color-neutral-400, #9ca3af)',\n unreachable: 'var(--semiont-color-error-500, #ef4444)',\n};\n\nconst STATUS_KEYS: Record<KbSessionStatus, string> = {\n authenticated: 'statusConnected',\n expired: 'statusExpired',\n 'signed-out': 'statusSignedOut',\n unreachable: 'statusUnreachable',\n};\n\nfunction StatusDot({ status, t }: { status: KbSessionStatus; t: T }) {\n return (\n <span\n title={t(STATUS_KEYS[status])}\n style={{\n width: '0.5rem',\n height: '0.5rem',\n borderRadius: '50%',\n backgroundColor: STATUS_COLORS[status],\n flexShrink: 0,\n }}\n />\n );\n}\n\nfunction LoginForm({ t, onSubmit, onCancel, error, isSubmitting, autoFocus, pulsing, initialHost = 'localhost', initialPort = 4000, initialEmail = 'admin@example.com' }: {\n t: T;\n onSubmit: (host: string, port: number, email: string, password: string) => Promise<void>;\n onCancel: () => void;\n error: string | null;\n isSubmitting: boolean;\n autoFocus?: boolean;\n pulsing?: boolean;\n initialHost?: string;\n initialPort?: number;\n initialEmail?: string;\n}) {\n const [host, setHost] = useState(initialHost);\n const [port, setPort] = useState(String(initialPort));\n const [email, setEmail] = useState(initialEmail);\n const [password, setPassword] = useState('');\n\n return (\n <div\n className={pulsing ? 'semiont-panel__login-form--pulsing' : ''}\n style={{\n margin: '0.5rem',\n padding: '0.75rem',\n border: '1px solid var(--semiont-color-neutral-200, #e5e7eb)',\n borderRadius: 'var(--semiont-panel-border-radius, 0.5rem)',\n background: 'var(--semiont-bg-secondary, transparent)',\n }}\n >\n <h3 style={{ fontSize: '0.8rem', fontWeight: 600, marginBottom: '0.5rem' }}>{t('connectTitle')}</h3>\n <form onSubmit={(e) => { e.preventDefault(); onSubmit(host, parseInt(port, 10) || 4000, email, password); }} style={{ display: 'flex', flexDirection: 'column', gap: '0.5rem' }}>\n <div style={{ display: 'flex', gap: '0.5rem' }}>\n <input type=\"text\" value={host} onChange={e => setHost(e.target.value)} placeholder=\"Host\" className=\"semiont-input\" style={{ flex: 1 }} autoFocus={autoFocus} />\n <input type=\"number\" value={port} onChange={e => setPort(e.target.value)} placeholder=\"Port\" className=\"semiont-input\" style={{ width: '5rem' }} />\n </div>\n <input type=\"email\" value={email} onChange={e => setEmail(e.target.value)} placeholder=\"Email\" className=\"semiont-input\" />\n <input type=\"password\" value={password} onChange={e => setPassword(e.target.value)} placeholder=\"Password\" className=\"semiont-input\" />\n {error && <div style={{ color: 'var(--semiont-color-error-500, #ef4444)', fontSize: '0.75rem' }}>{error}</div>}\n <div style={{ display: 'flex', gap: '0.5rem' }}>\n <button type=\"submit\" className=\"semiont-button semiont-button--primary\" style={{ flex: 1 }} disabled={isSubmitting}>\n {isSubmitting ? t('connecting') : t('connect')}\n </button>\n <button type=\"button\" className=\"semiont-button\" onClick={onCancel}>\n <XMarkIcon style={{ width: '1rem', height: '1rem' }} />\n </button>\n </div>\n </form>\n </div>\n );\n}\n\nfunction ReauthForm({ t, kb, onSubmit, onCancel, error, isSubmitting }: {\n t: T;\n kb: KnowledgeBase;\n onSubmit: (password: string) => Promise<void>;\n onCancel: () => void;\n error: string | null;\n isSubmitting: boolean;\n}) {\n const [password, setPassword] = useState('');\n\n return (\n <form onSubmit={(e) => { e.preventDefault(); onSubmit(password); }} style={{ padding: '0.5rem 0.75rem', display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <div style={{ fontSize: '0.75rem', color: 'var(--semiont-color-neutral-400)' }}>{kb.email}</div>\n <input type=\"password\" value={password} onChange={e => setPassword(e.target.value)} placeholder=\"Password\" className=\"semiont-input\" style={{ fontSize: '0.8rem' }} autoFocus />\n {error && <div style={{ color: 'var(--semiont-color-error-500, #ef4444)', fontSize: '0.75rem' }}>{error}</div>}\n <div style={{ display: 'flex', gap: '0.375rem' }}>\n <button type=\"submit\" className=\"semiont-button semiont-button--primary\" style={{ flex: 1, fontSize: '0.8rem' }} disabled={isSubmitting}>\n {isSubmitting ? t('signingIn') : t('signIn')}\n </button>\n <button type=\"button\" className=\"semiont-button\" onClick={onCancel} style={{ fontSize: '0.8rem' }}>\n {t('cancel')}\n </button>\n </div>\n </form>\n );\n}\n\nasync function authenticateWithBackend(host: string, port: number, protocol: 'http' | 'https', emailStr: string, password: string): Promise<{ token: string; label: string }> {\n const origin = `${protocol}://${host}:${port}`;\n const client = new SemiontApiClient({ baseUrl: baseUrl(origin), eventBus: new EventBus() });\n\n const authResult = await client.authenticatePassword(makeEmail(emailStr), password);\n const token = (authResult as any).token ?? (authResult as any).accessToken;\n if (!token) throw new Error('No token received');\n\n let label = `${host}:${port}`;\n try {\n const status = await client.getStatus({ auth: accessToken(token) });\n if ((status as any).projectName) label = (status as any).projectName;\n } catch { /* use default label */ }\n\n return { token, label };\n}\n\nexport function KnowledgeBasePanel() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`KnowledgeBasePanel.${k}`, p as any) as string;\n const { knowledgeBases, activeKnowledgeBase, setActiveKnowledgeBase, addKnowledgeBase, removeKnowledgeBase, updateKnowledgeBase, signOut } = useKnowledgeBaseContext();\n const [showAddForm, setShowAddForm] = useState(false);\n const [addError, setAddError] = useState<string | null>(null);\n const [addSubmitting, setAddSubmitting] = useState(false);\n const [reauthKbId, setReauthKbId] = useState<string | null>(null);\n const [reauthError, setReauthError] = useState<string | null>(null);\n const [reauthSubmitting, setReauthSubmitting] = useState(false);\n const [confirmRemoveKbId, setConfirmRemoveKbId] = useState<string | null>(null);\n const [, setTick] = useState(0);\n\n useEffect(() => {\n if (knowledgeBases.length === 0) setShowAddForm(true);\n }, [knowledgeBases.length]);\n\n useEffect(() => {\n const interval = setInterval(() => setTick(t => t + 1), 30_000);\n return () => clearInterval(interval);\n }, []);\n\n const openAddForm = () => {\n setShowAddForm(true);\n setReauthKbId(null);\n setAddError(null);\n };\n\n const handleAdd = async (host: string, port: number, email: string, password: string) => {\n setAddError(null);\n setAddSubmitting(true);\n const protocol = defaultProtocol(host);\n const existing = knowledgeBases.find(kb => kb.host === host && kb.port === port);\n if (existing) {\n try {\n const { token } = await authenticateWithBackend(host, port, protocol, email, password);\n setKbToken(existing.id, token);\n setActiveKnowledgeBase(existing.id);\n setShowAddForm(false);\n } catch (err) {\n setAddError(err instanceof Error ? err.message : String(err));\n } finally {\n setAddSubmitting(false);\n }\n return;\n }\n try {\n const { token, label } = await authenticateWithBackend(host, port, protocol, email, password);\n const id = generateKbId();\n setKbToken(id, token);\n addKnowledgeBase({ id, label, host, port, protocol, email });\n setShowAddForm(false);\n } catch (err) {\n setAddError(err instanceof Error ? err.message : String(err));\n } finally {\n setAddSubmitting(false);\n }\n };\n\n const handleReauth = async (kbId: string, password: string) => {\n const kb = knowledgeBases.find(k => k.id === kbId);\n if (!kb) return;\n setReauthError(null);\n setReauthSubmitting(true);\n try {\n const { token, label } = await authenticateWithBackend(kb.host, kb.port, kb.protocol, kb.email, password);\n setKbToken(kbId, token);\n updateKnowledgeBase(kbId, { label });\n setReauthKbId(null);\n setActiveKnowledgeBase(kbId);\n } catch (err) {\n setReauthError(err instanceof Error ? err.message : String(err));\n } finally {\n setReauthSubmitting(false);\n }\n };\n\n const handleKbClick = (kb: KnowledgeBase) => {\n const status = getKbSessionStatus(kb.id);\n if (status === 'authenticated') {\n setActiveKnowledgeBase(kb.id);\n } else {\n setReauthKbId(kb.id);\n setShowAddForm(false);\n setReauthError(null);\n }\n };\n\n return (\n <div className=\"semiont-panel\">\n <div className=\"semiont-panel-header\">\n <h2 className=\"semiont-panel-header__title\">\n <span className=\"semiont-panel-header__text\">{t('title')}</span>\n <span className=\"semiont-panel-header__count\">({knowledgeBases.length})</span>\n </h2>\n </div>\n <div className=\"semiont-panel__content\">\n <div className=\"semiont-panel__list\">\n {knowledgeBases.map((kb: KnowledgeBase) => {\n const status = getKbSessionStatus(kb.id);\n const isActive = kb.id === activeKnowledgeBase?.id;\n const isReauthing = reauthKbId === kb.id;\n\n return (\n <div key={kb.id}>\n <div\n className={`semiont-panel-item semiont-panel-item--clickable${isActive ? ' semiont-panel-item--selected' : ''}`}\n style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem', cursor: 'pointer', padding: '0.5rem 0.75rem' }}\n onClick={() => handleKbClick(kb)}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <StatusDot status={status} t={t} />\n <span className=\"semiont-panel-text\" style={{ flex: 1, fontWeight: 500 }}>{kb.label}</span>\n {isActive && (\n <CheckIcon style={{ width: '1rem', height: '1rem', color: 'var(--semiont-color-primary-500)', flexShrink: 0 }} />\n )}\n {status === 'authenticated' && (\n <button\n onClick={(e) => { e.stopPropagation(); signOut(kb.id); }}\n title={t('signOut')}\n style={{ background: 'none', border: 'none', cursor: 'pointer', padding: '0.125rem', color: 'var(--semiont-color-neutral-400)' }}\n >\n <ArrowRightStartOnRectangleIcon style={{ width: '0.875rem', height: '0.875rem' }} />\n </button>\n )}\n <button\n onClick={(e) => { e.stopPropagation(); setConfirmRemoveKbId(kb.id); }}\n title={t('remove')}\n style={{ background: 'none', border: 'none', cursor: 'pointer', padding: '0.125rem', color: 'var(--semiont-color-neutral-400)' }}\n >\n <TrashIcon style={{ width: '0.875rem', height: '0.875rem' }} />\n </button>\n </div>\n <span className=\"semiont-panel-text-secondary\" style={{ fontSize: '0.7rem', paddingLeft: '1rem' }}>\n {kb.host}:{kb.port}\n </span>\n </div>\n {confirmRemoveKbId === kb.id && (\n <div style={{\n padding: '0.5rem 0.75rem',\n fontSize: '0.8rem',\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n background: 'var(--semiont-bg-secondary, #f9fafb)',\n borderBottom: '1px solid var(--semiont-color-neutral-200, #e5e7eb)',\n }}>\n <span style={{ flex: 1, color: 'var(--semiont-color-neutral-500)' }}>{t('removeConfirm', { label: kb.label })}</span>\n <button\n onClick={() => { removeKnowledgeBase(kb.id); setConfirmRemoveKbId(null); }}\n className=\"semiont-button\"\n style={{ fontSize: '0.75rem', padding: '0.2rem 0.5rem', color: 'var(--semiont-color-error-500, #ef4444)' }}\n >\n {t('remove')}\n </button>\n <button\n onClick={() => setConfirmRemoveKbId(null)}\n className=\"semiont-button\"\n style={{ fontSize: '0.75rem', padding: '0.2rem 0.5rem' }}\n >\n {t('cancel')}\n </button>\n </div>\n )}\n {isReauthing && (\n <ReauthForm\n t={t}\n kb={kb}\n onSubmit={(password) => handleReauth(kb.id, password)}\n onCancel={() => setReauthKbId(null)}\n error={reauthError}\n isSubmitting={reauthSubmitting}\n />\n )}\n </div>\n );\n })}\n </div>\n\n {showAddForm && (\n <LoginForm\n t={t}\n onSubmit={handleAdd}\n onCancel={() => setShowAddForm(false)}\n error={addError}\n isSubmitting={addSubmitting}\n autoFocus={knowledgeBases.length === 0}\n pulsing={knowledgeBases.length === 0}\n />\n )}\n </div>\n\n {!showAddForm && (\n <div className=\"semiont-panel-footer\">\n <button\n onClick={openAddForm}\n className=\"semiont-panel-item semiont-panel-item--clickable\"\n style={{ width: '100%', display: 'flex', alignItems: 'center', gap: '0.5rem', color: 'var(--semiont-color-primary-600)' }}\n >\n <PlusIcon style={{ width: '1rem', height: '1rem', flexShrink: 0 }} />\n <span className=\"semiont-panel-text\" style={{ color: 'inherit' }}>{t('addKnowledgeBase')}</span>\n </button>\n </div>\n )}\n </div>\n );\n}\n","import React, { useTransition, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SettingsPanel, ResizeHandle, usePanelWidth, EventBusProvider, useEventSubscriptions } from '@semiont/react-ui';\nimport { UserPanel } from '../UserPanel';\nimport { KnowledgeBasePanel } from '../KnowledgeBasePanel';\nimport { useAuthContext } from '@/contexts/AuthContext';\nimport { useLocale } from '@/i18n/routing';\nimport { usePathname, useRouter } from '@/i18n/routing';\nimport { COMMON_PANELS } from '@semiont/react-ui';\nimport type { ToolbarPanelType } from '@semiont/react-ui';\n\ninterface ToolbarPanelsProps {\n activePanel: ToolbarPanelType | null;\n /** Theme setting */\n theme: 'light' | 'dark' | 'system';\n /** Line numbers setting */\n showLineNumbers: boolean;\n /** Hover delay setting */\n hoverDelayMs: number;\n /** Custom panel content for context-specific panels */\n children?: React.ReactNode;\n}\n\n/**\n * Renders the toolbar panel container with common panels (user, settings)\n * and any context-specific panels passed as children.\n *\n * Settings changes are handled via GlobalSettingsEventBus - no callbacks needed.\n *\n * @example\n * // Simple context (compose, discover, moderate, admin pages)\n * <ToolbarPanels\n * activePanel={activePanel}\n * theme={theme}\n * showLineNumbers={showLineNumbers}\n * />\n *\n * @example\n * // Document context with custom panels\n * <ToolbarPanels\n * activePanel={activePanel}\n * theme={theme}\n * showLineNumbers={showLineNumbers}\n * >\n * {activePanel === 'annotations' && <UnifiedAnnotationsPanel ... />}\n * {activePanel === 'history' && <AnnotationHistory ... />}\n * {activePanel === 'info' && <ResourceInfoPanel ... />}\n * {activePanel === 'collaboration' && <CollaborationPanel ... />}\n * {activePanel === 'jsonld' && <JsonLdPanel ... />}\n * </ToolbarPanels>\n */\nexport function ToolbarPanels({\n activePanel,\n theme,\n showLineNumbers,\n hoverDelayMs,\n children\n}: ToolbarPanelsProps) {\n const { t: _t } = useTranslation();\n const { session } = useAuthContext();\n const isAuthenticated = !!session;\n const locale = useLocale();\n const router = useRouter();\n const pathname = usePathname();\n const [isPending, startTransition] = useTransition();\n\n // Panel width management with localStorage persistence\n const { width, setWidth, minWidth, maxWidth } = usePanelWidth();\n\n // Handle locale change events\n const handleLocaleChanged = useCallback(({ locale: newLocale }: { locale: string }) => {\n if (!pathname) return;\n\n startTransition(() => {\n // The router from @/i18n/routing is locale-aware and will handle the locale prefix\n router.replace(pathname, { locale: newLocale });\n });\n }, [pathname, router, startTransition]);\n\n // Subscribe to locale change events\n useEventSubscriptions({\n 'settings:locale-changed': handleLocaleChanged,\n });\n\n // Don't render container if no panel is active\n if (!activePanel) {\n return null;\n }\n\n // In simple context (no children), only user and settings panels are valid.\n // If a resource-specific panel is still active from a previous route, hide the container.\n if (!children && !COMMON_PANELS.includes(activePanel)) {\n return null;\n }\n\n return (\n <div className=\"semiont-toolbar-panels\" style={{ width: `${width}px`, position: 'relative' }}>\n {/* Resize handle on left edge */}\n <ResizeHandle\n onResize={setWidth}\n minWidth={minWidth}\n maxWidth={maxWidth}\n position=\"left\"\n ariaLabel=\"Resize right panel\"\n />\n\n {/* Custom context-specific panels */}\n <div className=\"semiont-toolbar-panels__content\">\n {children}\n\n {/* Knowledge Base Panel - common to all contexts */}\n {activePanel === 'knowledge-base' && (\n <KnowledgeBasePanel />\n )}\n\n {/* User Panel - requires authentication */}\n {activePanel === 'user' && (\n isAuthenticated ? (\n <UserPanel />\n ) : (\n <div className=\"semiont-panel\">\n <div className=\"semiont-panel-header\">\n <h2 className=\"semiont-panel-header__title\">\n <span className=\"semiont-panel-header__text\">{_t('UserPanel.account')}</span>\n </h2>\n </div>\n <div className=\"semiont-panel__content\" style={{ padding: '1rem', textAlign: 'center' }}>\n <p style={{ color: 'var(--semiont-color-neutral-400)', fontSize: '0.85rem', lineHeight: 1.5 }}>\n {_t('AccountPanel.notAuthenticated')}\n </p>\n </div>\n </div>\n )\n )}\n\n {/* Settings Panel - common to all contexts */}\n {activePanel === 'settings' && (\n <SettingsPanel\n showLineNumbers={showLineNumbers}\n theme={theme}\n hoverDelayMs={hoverDelayMs}\n locale={locale}\n isPendingLocaleChange={isPending}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["ArrowRightStartOnRectangleIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","CheckIcon","PlusIcon","FALLBACK_AVATAR","UserPanel","_t","useTranslation","k","p","displayName","avatarUrl","userDomain","isAdmin","isModerator","useAuth","clearSession","useAuthContext","activeKnowledgeBase","useKnowledgeBaseContext","apiClient","useApiClient","router","useRouter","imageError","setImageError","useState","timeRemaining","useSessionExpiry","sessionTimeFormatted","formatTime","profileImageUrl","sanitized","sanitizeImageURL","handleSignOut","jsxs","jsx","generateKbId","STATUS_COLORS","STATUS_KEYS","StatusDot","status","LoginForm","t","onSubmit","onCancel","error","isSubmitting","autoFocus","pulsing","initialHost","initialPort","initialEmail","host","setHost","port","setPort","email","setEmail","password","setPassword","e","XMarkIcon","ReauthForm","kb","authenticateWithBackend","protocol","emailStr","origin","client","SemiontApiClient","baseUrl","EventBus","authResult","makeEmail","token","label","accessToken","KnowledgeBasePanel","knowledgeBases","setActiveKnowledgeBase","addKnowledgeBase","removeKnowledgeBase","updateKnowledgeBase","signOut","showAddForm","setShowAddForm","addError","setAddError","addSubmitting","setAddSubmitting","reauthKbId","setReauthKbId","reauthError","setReauthError","reauthSubmitting","setReauthSubmitting","confirmRemoveKbId","setConfirmRemoveKbId","setTick","useEffect","interval","openAddForm","handleAdd","defaultProtocol","existing","setKbToken","err","id","handleReauth","kbId","handleKbClick","getKbSessionStatus","isActive","isReauthing","TrashIcon","ToolbarPanels","activePanel","theme","showLineNumbers","hoverDelayMs","children","session","isAuthenticated","locale","useLocale","pathname","usePathname","isPending","startTransition","useTransition","width","setWidth","minWidth","maxWidth","usePanelWidth","handleLocaleChanged","useCallback","newLocale","useEventSubscriptions","COMMON_PANELS","ResizeHandle","SettingsPanel"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as h}from"./query-ATBhtd3K.js";import{r as t}from"./vendor-EnoIVk-c.js";import{d as b,e as v,f as C,g as y,w as P,y as T,T as w}from"./en-IUV4ZXKH-BY1RKeLS.js";import{T as L}from"./ToolbarPanels-rN1MIRTV.js";import{u as A}from"./i18n-BYxb14hm.js";import"./index-DA31r_0s.js";import"./useAuth-yUx5lBP5.js";import"./routing-DMdXWYXo.js";import"./XMarkIcon-6m9KVFaj.js";function B(){const{t:a}=A(),o=(n,D)=>a(`AdminSecurity.${n}`,D),{activePanel:r}=b(),{theme:l,setTheme:i}=v(),{showLineNumbers:d,toggleLineNumbers:s}=C(),c=t.useCallback(({theme:n})=>{i(n)},[i]),m=t.useCallback(()=>{s()},[s]);y({"settings:theme-changed":c,"settings:line-numbers-toggled":m});const u=P(),{data:e,isLoading:g}=u.oauth.config.useQuery(),p=(e==null?void 0:e.allowedDomains)??[],f=(e==null?void 0:e.providers)??[];return h.jsx(T,{providers:f,allowedDomains:p,isLoading:g,theme:l,showLineNumbers:d,activePanel:r,translations:{title:o("title"),subtitle:o("subtitle"),oauthProviders:o("oauthProviders"),oauthProvidersDescription:o("oauthProvidersDescription"),clientId:o("clientId"),configured:o("configured"),noProvidersConfigured:o("noProvidersConfigured"),allowedDomains:o("allowedDomains"),allowedDomainsDescription:o("allowedDomainsDescription"),noDomainsConfigured:o("noDomainsConfigured"),configManagementTitle:o("configManagementTitle"),configManagementDescription:o("configManagementDescription"),configLocalDev:o("configLocalDev"),configCloudDeploy:o("configCloudDeploy"),configCloudDeployCommand:o("configCloudDeployCommand"),configCloudDeployEnd:o("configCloudDeployEnd"),configAWS:o("configAWS")},ToolbarPanels:L,Toolbar:w})}export{B as default};
|
|
2
|
-
//# sourceMappingURL=client-BiL3eI7d.js.map
|