Upload folder using huggingface_hub
Browse files- 200.html +6 -6
- 404.html +6 -6
- _app/immutable/chunks/BonO4YX-.js +58 -0
- _app/immutable/chunks/CxPUfIb7.js +1 -0
- _app/immutable/chunks/DuNoPw5n.js +1 -0
- _app/immutable/entry/app.C6p-sfGp.js +2 -0
- _app/immutable/entry/start.Pgwzd_AB.js +1 -0
- _app/immutable/nodes/1.eEgZ-VLw.js +1 -0
- _app/immutable/nodes/2.DWoSRnQ3.js +1 -0
- _app/immutable/nodes/3.roowJOaC.js +2 -0
- _app/version.json +1 -1
- flying-papers.mp4 +3 -0
- index.html +6 -6
- viewer.html +6 -6
- viewer/index.html +6 -6
200.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
-
<link href="/_app/immutable/entry/start.
|
| 9 |
-
<link href="/_app/immutable/chunks/
|
| 10 |
<link href="/_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
-
<link href="/_app/immutable/entry/app.
|
| 12 |
<link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="/_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="/_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
@@ -19,15 +19,15 @@
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
-
|
| 23 |
base: ""
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
-
import("/_app/immutable/entry/start.
|
| 30 |
-
import("/_app/immutable/entry/app.
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
+
<link href="/_app/immutable/entry/start.Pgwzd_AB.js" rel="modulepreload">
|
| 9 |
+
<link href="/_app/immutable/chunks/CxPUfIb7.js" rel="modulepreload">
|
| 10 |
<link href="/_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
+
<link href="/_app/immutable/entry/app.C6p-sfGp.js" rel="modulepreload">
|
| 12 |
<link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="/_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="/_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
+
__sveltekit_tx1caf = {
|
| 23 |
base: ""
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
+
import("/_app/immutable/entry/start.Pgwzd_AB.js"),
|
| 30 |
+
import("/_app/immutable/entry/app.C6p-sfGp.js")
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
404.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
-
<link href="/_app/immutable/entry/start.
|
| 9 |
-
<link href="/_app/immutable/chunks/
|
| 10 |
<link href="/_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
-
<link href="/_app/immutable/entry/app.
|
| 12 |
<link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="/_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="/_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
@@ -19,15 +19,15 @@
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
-
|
| 23 |
base: ""
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
-
import("/_app/immutable/entry/start.
|
| 30 |
-
import("/_app/immutable/entry/app.
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
+
<link href="/_app/immutable/entry/start.Pgwzd_AB.js" rel="modulepreload">
|
| 9 |
+
<link href="/_app/immutable/chunks/CxPUfIb7.js" rel="modulepreload">
|
| 10 |
<link href="/_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
+
<link href="/_app/immutable/entry/app.C6p-sfGp.js" rel="modulepreload">
|
| 12 |
<link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="/_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="/_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
+
__sveltekit_tx1caf = {
|
| 23 |
base: ""
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
+
import("/_app/immutable/entry/start.Pgwzd_AB.js"),
|
| 30 |
+
import("/_app/immutable/entry/app.C6p-sfGp.js")
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
_app/immutable/chunks/BonO4YX-.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{g as Ur,k as jr,c as ce,a as T,f as H,j as Hr,d as Br,b as re,s as oe}from"./BhjCC-K4.js";import{i as Fr}from"./DZgFau8q.js";import{h as se,b as ft,k as it,a$ as Yr,d as Xr,E as Kr,az as qr,aU as Qr,aA as Jr,O as Zr,j as Nt,i as lt,a0 as eo,ay as to,b0 as lr,Q as Ne,F as ro,o as Xe,U as cr,b1 as oo,G as z,q as g,z as x,_ as be,p as St,f as J,a as Mt,c as O,aS as Gt,r as P,s as L,w as Le,I as fe,b2 as dr,n as no,t as de,ac as Dt}from"./BuF_Fr92.js";import{B as so,p as ie,i as ne,b as Et,r as ao,l as le,s as ve}from"./DJL1CqKf.js";import{y as io,x as Ke,w as Wt,e as pt,i as bt,b as Vt,z as lo,r as Ut,s as ct}from"./BeiXdJM4.js";import{_ as jt}from"./PPVm8Dsz.js";import{p as co}from"./DuNoPw5n.js";function ue(t,e,o,r,n){se&&ft();var s=e.$$slots?.[o],a=!1;s===!0&&(s=e.children,a=!0),s===void 0||s(t,a?()=>r:r)}function uo(t,e,o,r,n,s){let a=se;se&&ft();var i=null;se&&it.nodeType===Yr&&(i=it,ft());var l=se?it:t,c=new so(l,!1);Xr(()=>{const h=e()||null;var _=Qr;if(h===null){c.ensure(null,null);return}return c.ensure(h,R=>{if(h){if(i=se?i:qr(h,_),Ur(i,i),r){se&&jr(h)&&i.append(document.createComment(""));var y=se?Jr(i):i.appendChild(Zr());se&&(y===null?Nt(!1):lt(y)),r(i,y)}eo.nodes.end=i,R.before(i)}se&<(R)}),()=>{}},Kr),to(()=>{}),a&&(Nt(!0),lt(l))}function Ht(t,e,o=e){var r=new WeakSet;lr(t,"input",async n=>{var s=n?t.defaultValue:t.value;if(s=dt(t)?ut(s):s,o(s),Ne!==null&&r.add(Ne),await ro(),s!==(s=e())){var a=t.selectionStart,i=t.selectionEnd,l=t.value.length;if(t.value=s??"",i!==null){var c=t.value.length;a===i&&i===l&&c>l?(t.selectionStart=c,t.selectionEnd=c):(t.selectionStart=a,t.selectionEnd=Math.min(i,c))}}}),(se&&t.defaultValue!==t.value||Xe(e)==null&&t.value)&&(o(dt(t)?ut(t.value):t.value),Ne!==null&&r.add(Ne)),cr(()=>{var n=e();if(t===document.activeElement){var s=oo??Ne;if(r.has(s))return}dt(t)&&n===ut(t.value)||t.type==="date"&&!n&&!t.value||n!==t.value&&(t.value=n??"")})}function ps(t,e,o=e){lr(t,"change",r=>{var n=r?t.defaultChecked:t.checked;o(n)}),(se&&t.defaultChecked!==t.checked||Xe(e)==null)&&o(t.checked),cr(()=>{var r=e();t.checked=!!r})}function dt(t){var e=t.type;return e==="number"||e==="range"}function ut(t){return t===""?null:+t}const go="htr-models-v3";async function mo(t){const e=await caches.open(go);return(await Promise.all(t.map(r=>e.match(r)))).every(r=>r!==null)}const gt="lejonet-gpu-server-url",Se={get(){return typeof localStorage>"u"?"":localStorage.getItem(gt)||""},set(t){typeof localStorage>"u"||(t?localStorage.setItem(gt,t):localStorage.removeItem(gt))}};function Ye(){return!!Se.get()}let ur="";function Bt(){return ur}async function Ft(t){const e=t.replace(/\/$/,"");try{const o=await fetch(`${e}/health`,{signal:AbortSignal.timeout(5e3)});if(!o.ok)return!1;ur=(await o.json()).gpu?.name??"";try{const n=await fetch(`${e}/status`,{signal:AbortSignal.timeout(5e3)});if(n.ok){const s=await n.json();if(!Object.values(s.deployments).every(i=>i.status==="HEALTHY"))return!1}}catch{}return!0}catch{return!1}}async function ho(){if(typeof location<"u"&&location.hostname!=="localhost"&&location.hostname!=="127.0.0.1")return"";if(await Ft("/gpu"))return"/gpu";const t=["http://localhost:8080","http://127.0.0.1:8080"];for(const e of t)if(await Ft(e))return e;return""}function qe(){return Se.get().replace(/\/$/,"")}async function Yt(){if(!Ye())return null;try{const t=await fetch(`${qe()}/status`,{signal:AbortSignal.timeout(3e3)});return t.ok?t.json():null}catch{return null}}const vt=new Map;async function Xt(t,e){const o=e||`buf-${t.byteLength}`,r=vt.get(o);if(r)return r;const n=new FormData;n.append("image",new Blob([t],{type:"image/jpeg"}),"page.jpg");const s=await fetch(`${qe()}/upload-image`,{method:"POST",body:n});if(!s.ok)throw new Error(`Image upload failed: ${s.status}`);const{image_id:a}=await s.json();return vt.set(o,a),a}async function Ct(t,e,o,r){const n=await Xt(e,o),s=new FormData;if(s.append("image_id",n),r)for(const[i,l]of Object.entries(r))s.append(i,l);let a=await fetch(`${qe()}${t}`,{method:"POST",body:s});if(a.status===500){const i=o||`buf-${e.byteLength}`;vt.delete(i);const l=await Xt(e,o),c=new FormData;if(c.append("image_id",l),r)for(const[h,_]of Object.entries(r))c.append(h,_);a=await fetch(`${qe()}${t}`,{method:"POST",body:c})}if(!a.ok)throw new Error(`GPU ${t} failed: ${a.status}`);return a}async function fo(t,e){return(await Ct("/detect-layout",t,e)).json()}async function po(t,e,o){const r={};return e&&(r.x=String(e.x),r.y=String(e.y),r.w=String(e.w),r.h=String(e.h)),(await Ct("/detect-lines",t,o,r)).json()}async function bo(t,e,o){return(await Ct("/transcribe",t,o,{x:String(e.x),y:String(e.y),w:String(e.w),h:String(e.h)})).json()}const gr="https://huggingface.co/carpelan/htr-onnx-models/resolve/main",mr="lejonet-model-quantization";function yt(){return typeof localStorage>"u"?"fp32":localStorage.getItem(mr)||"fp32"}function Kt(t){typeof localStorage<"u"&&localStorage.setItem(mr,t)}function Ge(t){return`${gr}/${t}`}function vo(){return gr.startsWith("https://huggingface.co")}function qt(t){return yt()==="int8"?t.replace(".onnx","-int8.onnx"):t}function me(){return{yolo:Ge(qt("yolo-lines.onnx")),encoder:Ge(qt("encoder.onnx")),decoder:Ge("decoder.onnx"),tokenizer:Ge("tokenizer.json"),layout:Ge("rtmdet-regions.onnx")}}function yo(){try{return sessionStorage.getItem("hf_token")}catch{return null}}function Qt(){const t={};if(vo()){const e=yo();e&&(t.Authorization=`Bearer ${e}`)}return t}class xo{#e=z("idle");get stage(){return g(this.#e)}set stage(e){x(this.#e,e,!0)}#t=z(!1);get modelsReady(){return g(this.#t)}set modelsReady(e){x(this.#t,e,!0)}#r=z(null);get error(){return g(this.#r)}set error(e){x(this.#r,e,!0)}#o=z(be({}));get modelProgress(){return g(this.#o)}set modelProgress(e){x(this.#o,e,!0)}#n=z(!1);get cacheChecked(){return g(this.#n)}set cacheChecked(e){x(this.#n,e,!0)}#s=z(!1);get imageReady(){return g(this.#s)}set imageReady(e){x(this.#s,e,!0)}#a=z(1);get poolSize(){return g(this.#a)}set poolSize(e){x(this.#a,e,!0)}#i=z(null);get batchProgress(){return g(this.#i)}set batchProgress(e){x(this.#i,e,!0)}#l=z(be(new Set));get pendingRegions(){return g(this.#l)}set pendingRegions(e){x(this.#l,e,!0)}#c=z(be(new Set));get pendingImageIds(){return g(this.#c)}set pendingImageIds(e){x(this.#c,e,!0)}#d=z(0);get pendingLines(){return g(this.#d)}set pendingLines(e){x(this.#d,e,!0)}detectWorker;layoutWorker=null;transcribeWorkers=[];nextWorker=0;regionCounter=0;detectReady=!1;transcribeReadyCount=0;#u=z(!1);get layoutReady(){return g(this.#u)}set layoutReady(e){x(this.#u,e,!0)}#g=z(!1);get running(){return g(this.#g)}set running(e){x(this.#g,e,!0)}_abortController=null;onRegionDetected=null;onRegionComplete=null;onLineComplete=null;onToken=null;onLayoutDetected=null;regionPending=new Map;storedImages=new Map;constructor(){this.createDetectWorker(),this._init()}async _init(){let e=!1;try{e=await mo(Object.values(me()))}catch(o){console.warn("[htr] Cache check failed, continuing:",o)}this.cacheChecked=!0,e&&this.loadModels(),this._detectGpuInBackground()}async _detectGpuInBackground(){if(Ye())return;const e=await ho();e&&Se.set(e)}createDetectWorker(){this.detectWorker=new Worker(new URL(""+new URL("../workers/worker-detect-DFmNx834.js",import.meta.url).href,import.meta.url),{type:"module"}),this.detectWorker.onmessage=e=>this.handleDetectMessage(e.data)}createTranscribeWorkers(e){for(const o of this.transcribeWorkers)o.terminate();this.transcribeWorkers=[],this.transcribeReadyCount=0;for(let o=0;o<e;o++){const r=new Worker(new URL(""+new URL("../workers/worker-transcribe-COQauLSP.js",import.meta.url).href,import.meta.url),{type:"module"});r.onmessage=n=>this.handleTranscribeMessage(n.data),r.postMessage({type:"config",payload:{id:String(o),pool:String(e)}}),this.transcribeWorkers.push(r)}}setPoolSize(e){if(e=Math.max(1,Math.min(8,e)),e!==this.poolSize&&!(this.storedImages.size>0)&&(this.poolSize=e,this.createTranscribeWorkers(e),this.detectReady)){this.modelsReady=!1;const o=Qt();for(const r of this.transcribeWorkers)r.postMessage({type:"load_models",payload:{modelUrls:{encoder:me().encoder,decoder:me().decoder,tokenizer:me().tokenizer},headers:o}})}}handleDetectMessage(e){switch(e.type){case"ready":this.detectReady=!0,this.checkAllReady();break;case"model_status":this.stage="loading_models",e.payload.progress!==void 0&&(this.modelProgress[e.payload.model]=e.payload.progress);break;case"image_ready":this.imageReady=!0;break;case"error":this.error=e.payload.message;break;case"region_lines":{const{imageId:o,regionId:r,startIndex:n,lines:s}=e.payload;this.pendingRegions=new Set([...this.pendingRegions,r]),this.pendingImageIds=new Set([...this.pendingImageIds,o]),(this.stage==="done"||this.stage==="idle")&&(this.stage="transcribing"),this.regionPending.set(r,{imageId:o,total:s.length,done:0});const a=this.onRegionDetected?.(o,r,n,s)??[],i=this.transcribeWorkers.length;for(let l=0;l<s.length;l++){const c=s[l],h=a[l]??n+l,_=this.transcribeWorkers[this.nextWorker%i];this.nextWorker++,this.pendingLines++,_.postMessage({type:"transcribe_line",payload:{imageId:o,regionId:r,lineIndex:h,bbox:{x:c.x,y:c.y,w:c.w,h:c.h},confidence:c.confidence}})}break}}}handleTranscribeMessage(e){switch(e.type){case"ready":this.transcribeReadyCount++,this.checkAllReady();break;case"model_status":this.stage="loading_models",e.payload.progress!==void 0&&(this.modelProgress[e.payload.model]=e.payload.progress);break;case"error":this.error=e.payload.message;break;case"token":{const{imageId:o,lineIndex:r,token:n}=e.payload;this.onToken?.(o,r,n);break}case"line_done":{const{imageId:o,regionId:r,lineIndex:n,text:s,confidence:a}=e.payload;this.pendingLines=Math.max(0,this.pendingLines-1),this.onLineComplete?.(o,n,s,a);const i=this.regionPending.get(r);if(i&&(i.done++,i.done>=i.total)){this.regionPending.delete(r);const l=new Set(this.pendingRegions);if(l.delete(r),this.pendingRegions=l,![...this.regionPending.values()].some(h=>h.imageId===o)){const h=new Set(this.pendingImageIds);h.delete(o),this.pendingImageIds=h}this.onRegionComplete?.(o,r)}this.pendingLines===0&&this.regionPending.size===0&&(this.stage="done",this.pendingRegions=new Set,this.pendingImageIds=new Set);break}}}checkAllReady(){this.detectReady&&this.layoutReady&&this.transcribeReadyCount>=this.poolSize&&(this.modelsReady=!0,this.stage="idle")}loadModels(){this.stage="loading_models",this.transcribeWorkers.length===0&&this.createTranscribeWorkers(this.poolSize),this.layoutWorker||(this.layoutWorker=new Worker(new URL(""+new URL("../workers/worker-layout-Y4keQZNw.js",import.meta.url).href,import.meta.url),{type:"module"}),this.layoutWorker.onmessage=o=>this.handleLayoutMessage(o.data));const e=Qt();this.detectWorker.postMessage({type:"load_models",payload:{modelUrl:me().yolo,headers:e}}),this.layoutWorker.postMessage({type:"load_model",payload:{modelUrl:me().layout,headers:e}});for(const o of this.transcribeWorkers)o.postMessage({type:"load_models",payload:{modelUrls:{encoder:me().encoder,decoder:me().decoder,tokenizer:me().tokenizer},headers:e}})}addImage(e,o){this.storedImages.set(e,o.slice(0)),this.detectReady&&this.detectWorker.postMessage({type:"add_image",payload:{imageId:e,imageData:o.slice(0)}});for(const r of this.transcribeWorkers)r.postMessage({type:"add_image",payload:{imageId:e,imageData:o.slice(0)}})}transcribeRegion(e,o,r,n,s){this.regionCounter++;const a=`region-${this.regionCounter}`;return Ye()?(this._gpuDetectAndTranscribe(e,a,o,r,n,s),a):(this.detectWorker.postMessage({type:"redetect_region",payload:{imageId:e,regionId:a,x:o,y:r,w:n,h:s}}),a)}async _gpuDetectAndTranscribe(e,o,r,n,s,a){const i=this.storedImages.get(e);if(i)try{this.pendingRegions=new Set([...this.pendingRegions,o]),this.pendingImageIds=new Set([...this.pendingImageIds,e]),(this.stage==="done"||this.stage==="idle")&&(this.stage="transcribing");const{lines:l}=await po(i,{x:r,y:n,w:s,h:a},e),c=this._getNextLineIndex(e,l.length),h=l.map(k=>({x:k.x,y:k.y,w:k.w,h:k.h,confidence:k.confidence})),_=this.onRegionDetected?.(e,o,c,h)??[];if(this._abortController?.signal.aborted)return;this.pendingLines+=l.length;const R=l.map((k,G)=>{const W=_[G]??c+G;return bo(i,{x:k.x,y:k.y,w:k.w,h:k.h},e).then(({text:F,confidence:j})=>{this.pendingLines=Math.max(0,this.pendingLines-1),this.onLineComplete?.(e,W,F,j)}).catch(()=>{this.pendingLines=Math.max(0,this.pendingLines-1),this.onLineComplete?.(e,W,"[error]",0)})});await Promise.all(R);const y=new Set(this.pendingRegions);if(y.delete(o),this.pendingRegions=y,![...this.pendingRegions].some(k=>this.regionPending.get(k)?.imageId===e)){const k=new Set(this.pendingImageIds);k.delete(e),this.pendingImageIds=k}this.onRegionComplete?.(e,o),this.pendingLines===0&&this.pendingRegions.size===0&&(this.stage="done",this.pendingImageIds=new Set)}catch(l){this.error=l.message??String(l);const c=new Set(this.pendingRegions);c.delete(o),this.pendingRegions=c,this.pendingRegions.size===0&&(this.stage="done",this.pendingImageIds=new Set)}}_gpuLineCounters=new Map;_getNextLineIndex(e,o){const r=this._gpuLineCounters.get(e)??0;return this._gpuLineCounters.set(e,r+o),r}async runMultiple(e){for(const o of e)await this.run(o)}async run(e){if(this.running)return;if(this.running=!0,Ye()){try{const r=this.storedImages.get(e);if(!r){this.running=!1;return}this._abortController=new AbortController;const{regions:n}=await fo(r,e);if(this.running=!1,this._abortController?.signal.aborted)return;this.onLayoutDetected?.(e,n)}catch(r){if(r?.name==="AbortError")return;this.running=!1,this.error=r.message??String(r)}return}if(!this.layoutWorker||!this.layoutReady){this.running=!1;return}const o=this.storedImages.get(e);o&&(this.layoutWorker.postMessage({type:"add_image",payload:{imageId:e,imageData:o.slice(0)}}),await new Promise(r=>{const n=this.layoutWorker.onmessage;this.layoutWorker.onmessage=s=>{s.data.type==="image_ready"&&s.data.payload?.imageId===e?(this.layoutWorker.onmessage=n,r()):this.handleLayoutMessage(s.data)}})),this.layoutWorker.postMessage({type:"detect_layout",payload:{imageId:e}})}handleLayoutMessage(e){switch(e.type){case"ready":this.layoutReady=!0,this.checkAllReady();break;case"model_status":this.stage="loading_models",e.payload.progress!==void 0&&(this.modelProgress.layout=e.payload.progress);break;case"layout_result":{const{imageId:o,regions:r}=e.payload;this.onLayoutDetected?.(o,r),this.running=!1;break}case"error":this.running=!1,this.error=e.payload.message;break}}cancelRegion(e){this.detectWorker.postMessage({type:"cancel_region",payload:{regionId:e}});for(const o of this.transcribeWorkers)o.postMessage({type:"cancel_region",payload:{regionId:e}});this.regionPending.delete(e)}stopAll(){this._abortController?.abort(),this._abortController=null;for(const e of this.pendingRegions)this.cancelRegion(e);this.running=!1,this.stage="idle",this.pendingRegions=new Set,this.pendingImageIds=new Set,this.pendingLines=0,this.regionPending.clear(),this.batchProgress=null}reset(){this.stopAll(),this.imageReady=!1,this.error=null}destroy(){this.detectWorker.terminate(),this.layoutWorker?.terminate();for(const e of this.transcribeWorkers)e.terminate()}}const ko=2e3,wo=10;class _o{#e=z(be(new xo));get htr(){return g(this.#e)}set htr(e){x(this.#e,e,!0)}#t=z(be([]));get documents(){return g(this.#t)}set documents(e){x(this.#t,e,!0)}#r=z(null);get activeDocumentId(){return g(this.#r)}set activeDocumentId(e){x(this.#r,e,!0)}#o=z(-1);get hoveredLine(){return g(this.#o)}set hoveredLine(e){x(this.#o,e,!0)}#n=z(be(new Set));get selectedLines(){return g(this.#n)}set selectedLines(e){x(this.#n,e,!0)}#s=z(!1);get selectMode(){return g(this.#s)}set selectMode(e){x(this.#s,e,!0)}#a=z(!1);get saving(){return g(this.#a)}set saving(e){x(this.#a,e,!0)}#i=z(null);get saveError(){return g(this.#i)}set saveError(e){x(this.#i,e,!0)}#l=z(null);get lastSaved(){return g(this.#l)}set lastSaved(e){x(this.#l,e,!0)}#c=z(be(new Map));get volumeMetadata(){return g(this.#c)}set volumeMetadata(e){x(this.#c,e,!0)}docCounter=0;uploadCounter=0;autoSaveTimer=null;lastSaveHash="";imageLoadOrder=[];get activeDocument(){return this.documents.find(e=>e.id===this.activeDocumentId)}createUploadVolumeId(){return this.uploadCounter++,`upload-${this.uploadCounter}`}addDocument(e,o,r,n,s){this.docCounter++;const a=`doc-${this.docCounter}`,i={id:a,name:e,imageUrl:o,imageData:r,lines:[],lineCounter:0,groups:[],groupCounter:0,manifestId:n,pageNumber:s};return this.documents=[...this.documents,i],this.htr.addImage(a,r.slice(0)),a}addPlaceholderDocument(e,o,r){this.docCounter++;const n=`doc-${this.docCounter}`,s={id:n,name:e,imageUrl:"",imageData:new ArrayBuffer(0),lines:[],lineCounter:0,groups:[],groupCounter:0,manifestId:o,pageNumber:r,placeholder:!0};return this.documents=[...this.documents,s],n}async loadDocumentImage(e){const o=this.documents.find(s=>s.id===e);if(!o||!o.manifestId||!o.pageNumber)return;if(!o.placeholder){this.imageLoadOrder=[e,...this.imageLoadOrder.filter(s=>s!==e)];return}const{fetchPageImage:r}=await jt(async()=>{const{fetchPageImage:s}=await import("./Dtszv-EI.js");return{fetchPageImage:s}},[],import.meta.url),n=await r(o.manifestId,o.pageNumber);n&&(o.imageUrl=n.previewUrl,o.imageData=n.imageData,o.placeholder=!1,this.imageLoadOrder=[e,...this.imageLoadOrder.filter(s=>s!==e)],this.evictOldImages(),this.documents=[...this.documents],this.htr.addImage(o.id,n.imageData.slice(0)))}evictOldImages(){for(;this.imageLoadOrder.length>wo;){const e=this.imageLoadOrder.pop();if(e===this.activeDocumentId){this.imageLoadOrder.push(e);break}const o=this.documents.find(r=>r.id===e);o&&!o.placeholder&&o.manifestId&&(o.imageUrl&&URL.revokeObjectURL(o.imageUrl),o.imageUrl="",o.imageData=new ArrayBuffer(0),o.placeholder=!0)}}switchDocument(e){e!==this.activeDocumentId&&(this.activeDocumentId=e,this.hoveredLine=-1,this.selectedLines=new Set,this.loadDocumentImage(e))}removeVolume(e){const o=new Set(this.documents.filter(r=>r.manifestId===e).map(r=>r.id));for(const r of this.documents)if(o.has(r.id)&&r.imageUrl)try{URL.revokeObjectURL(r.imageUrl)}catch{}this.documents=this.documents.filter(r=>!o.has(r.id)),this.activeDocumentId&&o.has(this.activeDocumentId)&&(this.activeDocumentId=null,this.hoveredLine=-1,this.selectedLines=new Set),this.imageLoadOrder=this.imageLoadOrder.filter(r=>!o.has(r))}navigatePage(e){const o=this.activeDocument;if(!o?.manifestId)return;const r=this.documents.filter(a=>a.manifestId===o.manifestId).sort((a,i)=>(a.pageNumber??0)-(i.pageNumber??0)),n=r.findIndex(a=>a.id===o.id),s=r[n+e];s&&this.switchDocument(s.id)}navigateLine(e){const o=this.activeDocument;if(!o||o.lines.length===0)return;const r=[];for(const s of o.groups)for(const a of s.lineIds)r.push(a);if(r.length===0)return;const n=this.hoveredLine;if(n<0)this.hoveredLine=e===1?r[0]:r[r.length-1];else{const s=r.indexOf(n);if(s<0)this.hoveredLine=r[0];else{const a=s+e;a>=0&&a<r.length&&(this.hoveredLine=r[a])}}}updateDocumentLines(e,o){const r=this.documents.find(n=>n.id===e);r&&(o(r),this.documents=[...this.documents],r.manifestId&&this.scheduleAutoSave())}populateFromBackend(e,o){for(const r of o){const n=this.documents.find(i=>i.manifestId===e&&i.pageNumber===r.page_number);if(!n||n.groups.length>0)continue;const s=[];for(const i of r.lines){const l=n.lineCounter++;n.lines.push({id:l,bbox:{...i.bbox,confidence:i.confidence,polygon:void 0},text:i.text,confidence:i.confidence,complete:!0}),s.push(l)}n.groupCounter++;const a={id:`group-${n.groupCounter}`,name:r.group_name,lineIds:s,collapsed:!1,rect:r.group_rect};n.groups=[...n.groups,a]}this.documents=[...this.documents]}serializeForSave(){const e=this.documents.filter(n=>n.manifestId&&n.groups.length>0);if(e.length===0)return null;const o=e[0].manifestId,r=[];for(const n of e)if(n.manifestId===o)for(const s of n.groups){const a=s.lineIds.map(i=>n.lines.find(l=>l.id===i)).filter(i=>!!i&&i.complete&&i.text.trim()!=="").map((i,l)=>({line_index:l,bbox:{x:i.bbox.x,y:i.bbox.y,w:i.bbox.w,h:i.bbox.h},text:i.text,confidence:i.confidence,source:i.complete?"htr":"human",contributor:""}));a.length>0&&r.push({page_number:n.pageNumber??0,group_name:s.name,group_rect:s.rect??{x:0,y:0,w:0,h:0},lines:a})}return r.length===0?null:{manifestId:o,referenceCode:"",groups:r}}scheduleAutoSave(){this.autoSaveTimer&&clearTimeout(this.autoSaveTimer),this.autoSaveTimer=setTimeout(()=>this.save(),ko)}async save(){if(this.saving){console.log("[autosave] skip: already saving");return}const e=this.serializeForSave();if(!e){console.log("[autosave] skip: no data");return}const o=JSON.stringify(e.groups);if(o===this.lastSaveHash){console.log("[autosave] skip: unchanged");return}console.log(`[autosave] saving ${e.groups.reduce((r,n)=>r+n.lines.length,0)} lines`),this.saving=!0,this.saveError=null;try{const{saveTranscriptions:r}=await jt(async()=>{const{saveTranscriptions:s}=await import("./iNv42bPS.js");return{saveTranscriptions:s}},[],import.meta.url),n=await r(e.manifestId,e.referenceCode,e.groups);this.lastSaveHash=o,this.lastSaved=`Saved ${n.lines_added} lines`}catch(r){this.saveError=r instanceof Error?r.message:String(r)}finally{this.saving=!1}}reset(){this.documents=[],this.activeDocumentId=null,this.htr.reset(),this.selectedLines=new Set,this.selectMode=!1}}const De=new _o,So=(t,e)=>{const o=new Array(t.length+e.length);for(let r=0;r<t.length;r++)o[r]=t[r];for(let r=0;r<e.length;r++)o[t.length+r]=e[r];return o},Mo=(t,e)=>({classGroupId:t,validator:e}),hr=(t=new Map,e=null,o)=>({nextPart:t,validators:e,classGroupId:o}),Qe="-",Jt=[],Co="arbitrary..",$o=t=>{const e=Io(t),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Ro(a);const i=a.split(Qe),l=i[0]===""&&i.length>1?1:0;return fr(i,l,e)},getConflictingClassGroupIds:(a,i)=>{if(i){const l=r[a],c=o[a];return l?c?So(c,l):l:c||Jt}return o[a]||Jt}}},fr=(t,e,o)=>{if(t.length-e===0)return o.classGroupId;const n=t[e],s=o.nextPart.get(n);if(s){const c=fr(t,e+1,s);if(c)return c}const a=o.validators;if(a===null)return;const i=e===0?t.join(Qe):t.slice(e).join(Qe),l=a.length;for(let c=0;c<l;c++){const h=a[c];if(h.validator(i))return h.classGroupId}},Ro=t=>t.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),o=e.indexOf(":"),r=e.slice(0,o);return r?Co+r:void 0})(),Io=t=>{const{theme:e,classGroups:o}=t;return To(o,e)},To=(t,e)=>{const o=hr();for(const r in t){const n=t[r];$t(n,o,r,e)}return o},$t=(t,e,o,r)=>{const n=t.length;for(let s=0;s<n;s++){const a=t[s];zo(a,e,o,r)}},zo=(t,e,o,r)=>{if(typeof t=="string"){Lo(t,e,o);return}if(typeof t=="function"){Po(t,e,o,r);return}Ao(t,e,o,r)},Lo=(t,e,o)=>{const r=t===""?e:pr(e,t);r.classGroupId=o},Po=(t,e,o,r)=>{if(Oo(t)){$t(t(r),e,o,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Mo(o,t))},Ao=(t,e,o,r)=>{const n=Object.entries(t),s=n.length;for(let a=0;a<s;a++){const[i,l]=n[a];$t(l,pr(e,i),o,r)}},pr=(t,e)=>{let o=t;const r=e.split(Qe),n=r.length;for(let s=0;s<n;s++){const a=r[s];let i=o.nextPart.get(a);i||(i=hr(),o.nextPart.set(a,i)),o=i}return o},Oo=t=>"isThemeGetter"in t&&t.isThemeGetter===!0,No=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,o=Object.create(null),r=Object.create(null);const n=(s,a)=>{o[s]=a,e++,e>t&&(e=0,r=o,o=Object.create(null))};return{get(s){let a=o[s];if(a!==void 0)return a;if((a=r[s])!==void 0)return n(s,a),a},set(s,a){s in o?o[s]=a:n(s,a)}}},xt="!",Zt=":",Go=[],er=(t,e,o,r,n)=>({modifiers:t,hasImportantModifier:e,baseClassName:o,maybePostfixModifierPosition:r,isExternal:n}),Do=t=>{const{prefix:e,experimentalParseClassName:o}=t;let r=n=>{const s=[];let a=0,i=0,l=0,c;const h=n.length;for(let k=0;k<h;k++){const G=n[k];if(a===0&&i===0){if(G===Zt){s.push(n.slice(l,k)),l=k+1;continue}if(G==="/"){c=k;continue}}G==="["?a++:G==="]"?a--:G==="("?i++:G===")"&&i--}const _=s.length===0?n:n.slice(l);let R=_,y=!1;_.endsWith(xt)?(R=_.slice(0,-1),y=!0):_.startsWith(xt)&&(R=_.slice(1),y=!0);const E=c&&c>l?c-l:void 0;return er(s,y,R,E)};if(e){const n=e+Zt,s=r;r=a=>a.startsWith(n)?s(a.slice(n.length)):er(Go,!1,a,void 0,!0)}if(o){const n=r;r=s=>o({className:s,parseClassName:n})}return r},Eo=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((o,r)=>{e.set(o,1e6+r)}),o=>{const r=[];let n=[];for(let s=0;s<o.length;s++){const a=o[s],i=a[0]==="[",l=e.has(a);i||l?(n.length>0&&(n.sort(),r.push(...n),n=[]),r.push(a)):n.push(a)}return n.length>0&&(n.sort(),r.push(...n)),r}},Wo=t=>({cache:No(t.cacheSize),parseClassName:Do(t),sortModifiers:Eo(t),...$o(t)}),Vo=/\s+/,Uo=(t,e)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:n,sortModifiers:s}=e,a=[],i=t.trim().split(Vo);let l="";for(let c=i.length-1;c>=0;c-=1){const h=i[c],{isExternal:_,modifiers:R,hasImportantModifier:y,baseClassName:E,maybePostfixModifierPosition:k}=o(h);if(_){l=h+(l.length>0?" "+l:l);continue}let G=!!k,W=r(G?E.substring(0,k):E);if(!W){if(!G){l=h+(l.length>0?" "+l:l);continue}if(W=r(E),!W){l=h+(l.length>0?" "+l:l);continue}G=!1}const F=R.length===0?"":R.length===1?R[0]:s(R).join(":"),j=y?F+xt:F,ee=j+W;if(a.indexOf(ee)>-1)continue;a.push(ee);const Y=n(W,G);for(let te=0;te<Y.length;++te){const ge=Y[te];a.push(j+ge)}l=h+(l.length>0?" "+l:l)}return l},jo=(...t)=>{let e=0,o,r,n="";for(;e<t.length;)(o=t[e++])&&(r=br(o))&&(n&&(n+=" "),n+=r);return n},br=t=>{if(typeof t=="string")return t;let e,o="";for(let r=0;r<t.length;r++)t[r]&&(e=br(t[r]))&&(o&&(o+=" "),o+=e);return o},kt=(t,...e)=>{let o,r,n,s;const a=l=>{const c=e.reduce((h,_)=>_(h),t());return o=Wo(c),r=o.cache.get,n=o.cache.set,s=i,i(l)},i=l=>{const c=r(l);if(c)return c;const h=Uo(l,o);return n(l,h),h};return s=a,(...l)=>s(jo(...l))},Ho=[],q=t=>{const e=o=>o[t]||Ho;return e.isThemeGetter=!0,e},vr=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,yr=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Bo=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Fo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Yo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Xo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Ko=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,qo=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,we=t=>Bo.test(t),C=t=>!!t&&!Number.isNaN(Number(t)),_e=t=>!!t&&Number.isInteger(Number(t)),mt=t=>t.endsWith("%")&&C(t.slice(0,-1)),he=t=>Fo.test(t),xr=()=>!0,Qo=t=>Yo.test(t)&&!Xo.test(t),Rt=()=>!1,Jo=t=>Ko.test(t),Zo=t=>qo.test(t),en=t=>!p(t)&&!b(t),tn=t=>Me(t,_r,Rt),p=t=>vr.test(t),$e=t=>Me(t,Sr,Qo),tr=t=>Me(t,dn,C),rn=t=>Me(t,Cr,xr),on=t=>Me(t,Mr,Rt),rr=t=>Me(t,kr,Rt),nn=t=>Me(t,wr,Zo),Ve=t=>Me(t,$r,Jo),b=t=>yr.test(t),Ee=t=>Re(t,Sr),sn=t=>Re(t,Mr),or=t=>Re(t,kr),an=t=>Re(t,_r),ln=t=>Re(t,wr),Ue=t=>Re(t,$r,!0),cn=t=>Re(t,Cr,!0),Me=(t,e,o)=>{const r=vr.exec(t);return r?r[1]?e(r[1]):o(r[2]):!1},Re=(t,e,o=!1)=>{const r=yr.exec(t);return r?r[1]?e(r[1]):o:!1},kr=t=>t==="position"||t==="percentage",wr=t=>t==="image"||t==="url",_r=t=>t==="length"||t==="size"||t==="bg-size",Sr=t=>t==="length",dn=t=>t==="number",Mr=t=>t==="family-name",Cr=t=>t==="number"||t==="weight",$r=t=>t==="shadow",wt=()=>{const t=q("color"),e=q("font"),o=q("text"),r=q("font-weight"),n=q("tracking"),s=q("leading"),a=q("breakpoint"),i=q("container"),l=q("spacing"),c=q("radius"),h=q("shadow"),_=q("inset-shadow"),R=q("text-shadow"),y=q("drop-shadow"),E=q("blur"),k=q("perspective"),G=q("aspect"),W=q("ease"),F=q("animate"),j=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ee=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],Y=()=>[...ee(),b,p],te=()=>["auto","hidden","clip","visible","scroll"],ge=()=>["auto","contain","none"],v=()=>[b,p,l],X=()=>[we,"full","auto",...v()],Ce=()=>[_e,"none","subgrid",b,p],xe=()=>["auto",{span:["full",_e,b,p]},_e,b,p],ae=()=>[_e,"auto",b,p],Ie=()=>["auto","min","max","fr",b,p],m=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],u=()=>["start","end","center","stretch","center-safe","end-safe"],f=()=>["auto",...v()],w=()=>[we,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...v()],S=()=>[we,"screen","full","dvw","lvw","svw","min","max","fit",...v()],$=()=>[we,"screen","full","lh","dvh","lvh","svh","min","max","fit",...v()],d=()=>[t,b,p],N=()=>[...ee(),or,rr,{position:[b,p]}],A=()=>["no-repeat",{repeat:["","x","y","space","round"]}],V=()=>["auto","cover","contain",an,tn,{size:[b,p]}],K=()=>[mt,Ee,$e],M=()=>["","none","full",c,b,p],I=()=>["",C,Ee,$e],B=()=>["solid","dashed","dotted","double"],Te=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],U=()=>[C,mt,or,rr],Oe=()=>["","none",E,b,p],D=()=>["none",C,b,p],Q=()=>["none",C,b,p],ke=()=>[C,b,p],ze=()=>[we,"full",...v()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[he],breakpoint:[he],color:[xr],container:[he],"drop-shadow":[he],ease:["in","out","in-out"],font:[en],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[he],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[he],shadow:[he],spacing:["px",C],text:[he],"text-shadow":[he],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",we,p,b,G]}],container:["container"],columns:[{columns:[C,p,b,i]}],"break-after":[{"break-after":j()}],"break-before":[{"break-before":j()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:Y()}],overflow:[{overflow:te()}],"overflow-x":[{"overflow-x":te()}],"overflow-y":[{"overflow-y":te()}],overscroll:[{overscroll:ge()}],"overscroll-x":[{"overscroll-x":ge()}],"overscroll-y":[{"overscroll-y":ge()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:X()}],"inset-x":[{"inset-x":X()}],"inset-y":[{"inset-y":X()}],start:[{"inset-s":X(),start:X()}],end:[{"inset-e":X(),end:X()}],"inset-bs":[{"inset-bs":X()}],"inset-be":[{"inset-be":X()}],top:[{top:X()}],right:[{right:X()}],bottom:[{bottom:X()}],left:[{left:X()}],visibility:["visible","invisible","collapse"],z:[{z:[_e,"auto",b,p]}],basis:[{basis:[we,"full","auto",i,...v()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[C,we,"auto","initial","none",p]}],grow:[{grow:["",C,b,p]}],shrink:[{shrink:["",C,b,p]}],order:[{order:[_e,"first","last","none",b,p]}],"grid-cols":[{"grid-cols":Ce()}],"col-start-end":[{col:xe()}],"col-start":[{"col-start":ae()}],"col-end":[{"col-end":ae()}],"grid-rows":[{"grid-rows":Ce()}],"row-start-end":[{row:xe()}],"row-start":[{"row-start":ae()}],"row-end":[{"row-end":ae()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ie()}],"auto-rows":[{"auto-rows":Ie()}],gap:[{gap:v()}],"gap-x":[{"gap-x":v()}],"gap-y":[{"gap-y":v()}],"justify-content":[{justify:[...m(),"normal"]}],"justify-items":[{"justify-items":[...u(),"normal"]}],"justify-self":[{"justify-self":["auto",...u()]}],"align-content":[{content:["normal",...m()]}],"align-items":[{items:[...u(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...u(),{baseline:["","last"]}]}],"place-content":[{"place-content":m()}],"place-items":[{"place-items":[...u(),"baseline"]}],"place-self":[{"place-self":["auto",...u()]}],p:[{p:v()}],px:[{px:v()}],py:[{py:v()}],ps:[{ps:v()}],pe:[{pe:v()}],pbs:[{pbs:v()}],pbe:[{pbe:v()}],pt:[{pt:v()}],pr:[{pr:v()}],pb:[{pb:v()}],pl:[{pl:v()}],m:[{m:f()}],mx:[{mx:f()}],my:[{my:f()}],ms:[{ms:f()}],me:[{me:f()}],mbs:[{mbs:f()}],mbe:[{mbe:f()}],mt:[{mt:f()}],mr:[{mr:f()}],mb:[{mb:f()}],ml:[{ml:f()}],"space-x":[{"space-x":v()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":v()}],"space-y-reverse":["space-y-reverse"],size:[{size:w()}],"inline-size":[{inline:["auto",...S()]}],"min-inline-size":[{"min-inline":["auto",...S()]}],"max-inline-size":[{"max-inline":["none",...S()]}],"block-size":[{block:["auto",...$()]}],"min-block-size":[{"min-block":["auto",...$()]}],"max-block-size":[{"max-block":["none",...$()]}],w:[{w:[i,"screen",...w()]}],"min-w":[{"min-w":[i,"screen","none",...w()]}],"max-w":[{"max-w":[i,"screen","none","prose",{screen:[a]},...w()]}],h:[{h:["screen","lh",...w()]}],"min-h":[{"min-h":["screen","lh","none",...w()]}],"max-h":[{"max-h":["screen","lh",...w()]}],"font-size":[{text:["base",o,Ee,$e]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,cn,rn]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",mt,p]}],"font-family":[{font:[sn,on,e]}],"font-features":[{"font-features":[p]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,b,p]}],"line-clamp":[{"line-clamp":[C,"none",b,tr]}],leading:[{leading:[s,...v()]}],"list-image":[{"list-image":["none",b,p]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",b,p]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:d()}],"text-color":[{text:d()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:[C,"from-font","auto",b,$e]}],"text-decoration-color":[{decoration:d()}],"underline-offset":[{"underline-offset":[C,"auto",b,p]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:v()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",b,p]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",b,p]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:N()}],"bg-repeat":[{bg:A()}],"bg-size":[{bg:V()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},_e,b,p],radial:["",b,p],conic:[_e,b,p]},ln,nn]}],"bg-color":[{bg:d()}],"gradient-from-pos":[{from:K()}],"gradient-via-pos":[{via:K()}],"gradient-to-pos":[{to:K()}],"gradient-from":[{from:d()}],"gradient-via":[{via:d()}],"gradient-to":[{to:d()}],rounded:[{rounded:M()}],"rounded-s":[{"rounded-s":M()}],"rounded-e":[{"rounded-e":M()}],"rounded-t":[{"rounded-t":M()}],"rounded-r":[{"rounded-r":M()}],"rounded-b":[{"rounded-b":M()}],"rounded-l":[{"rounded-l":M()}],"rounded-ss":[{"rounded-ss":M()}],"rounded-se":[{"rounded-se":M()}],"rounded-ee":[{"rounded-ee":M()}],"rounded-es":[{"rounded-es":M()}],"rounded-tl":[{"rounded-tl":M()}],"rounded-tr":[{"rounded-tr":M()}],"rounded-br":[{"rounded-br":M()}],"rounded-bl":[{"rounded-bl":M()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-bs":[{"border-bs":I()}],"border-w-be":[{"border-be":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":I()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...B(),"hidden","none"]}],"divide-style":[{divide:[...B(),"hidden","none"]}],"border-color":[{border:d()}],"border-color-x":[{"border-x":d()}],"border-color-y":[{"border-y":d()}],"border-color-s":[{"border-s":d()}],"border-color-e":[{"border-e":d()}],"border-color-bs":[{"border-bs":d()}],"border-color-be":[{"border-be":d()}],"border-color-t":[{"border-t":d()}],"border-color-r":[{"border-r":d()}],"border-color-b":[{"border-b":d()}],"border-color-l":[{"border-l":d()}],"divide-color":[{divide:d()}],"outline-style":[{outline:[...B(),"none","hidden"]}],"outline-offset":[{"outline-offset":[C,b,p]}],"outline-w":[{outline:["",C,Ee,$e]}],"outline-color":[{outline:d()}],shadow:[{shadow:["","none",h,Ue,Ve]}],"shadow-color":[{shadow:d()}],"inset-shadow":[{"inset-shadow":["none",_,Ue,Ve]}],"inset-shadow-color":[{"inset-shadow":d()}],"ring-w":[{ring:I()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:d()}],"ring-offset-w":[{"ring-offset":[C,$e]}],"ring-offset-color":[{"ring-offset":d()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":d()}],"text-shadow":[{"text-shadow":["none",R,Ue,Ve]}],"text-shadow-color":[{"text-shadow":d()}],opacity:[{opacity:[C,b,p]}],"mix-blend":[{"mix-blend":[...Te(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Te()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[C]}],"mask-image-linear-from-pos":[{"mask-linear-from":U()}],"mask-image-linear-to-pos":[{"mask-linear-to":U()}],"mask-image-linear-from-color":[{"mask-linear-from":d()}],"mask-image-linear-to-color":[{"mask-linear-to":d()}],"mask-image-t-from-pos":[{"mask-t-from":U()}],"mask-image-t-to-pos":[{"mask-t-to":U()}],"mask-image-t-from-color":[{"mask-t-from":d()}],"mask-image-t-to-color":[{"mask-t-to":d()}],"mask-image-r-from-pos":[{"mask-r-from":U()}],"mask-image-r-to-pos":[{"mask-r-to":U()}],"mask-image-r-from-color":[{"mask-r-from":d()}],"mask-image-r-to-color":[{"mask-r-to":d()}],"mask-image-b-from-pos":[{"mask-b-from":U()}],"mask-image-b-to-pos":[{"mask-b-to":U()}],"mask-image-b-from-color":[{"mask-b-from":d()}],"mask-image-b-to-color":[{"mask-b-to":d()}],"mask-image-l-from-pos":[{"mask-l-from":U()}],"mask-image-l-to-pos":[{"mask-l-to":U()}],"mask-image-l-from-color":[{"mask-l-from":d()}],"mask-image-l-to-color":[{"mask-l-to":d()}],"mask-image-x-from-pos":[{"mask-x-from":U()}],"mask-image-x-to-pos":[{"mask-x-to":U()}],"mask-image-x-from-color":[{"mask-x-from":d()}],"mask-image-x-to-color":[{"mask-x-to":d()}],"mask-image-y-from-pos":[{"mask-y-from":U()}],"mask-image-y-to-pos":[{"mask-y-to":U()}],"mask-image-y-from-color":[{"mask-y-from":d()}],"mask-image-y-to-color":[{"mask-y-to":d()}],"mask-image-radial":[{"mask-radial":[b,p]}],"mask-image-radial-from-pos":[{"mask-radial-from":U()}],"mask-image-radial-to-pos":[{"mask-radial-to":U()}],"mask-image-radial-from-color":[{"mask-radial-from":d()}],"mask-image-radial-to-color":[{"mask-radial-to":d()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":ee()}],"mask-image-conic-pos":[{"mask-conic":[C]}],"mask-image-conic-from-pos":[{"mask-conic-from":U()}],"mask-image-conic-to-pos":[{"mask-conic-to":U()}],"mask-image-conic-from-color":[{"mask-conic-from":d()}],"mask-image-conic-to-color":[{"mask-conic-to":d()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:N()}],"mask-repeat":[{mask:A()}],"mask-size":[{mask:V()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",b,p]}],filter:[{filter:["","none",b,p]}],blur:[{blur:Oe()}],brightness:[{brightness:[C,b,p]}],contrast:[{contrast:[C,b,p]}],"drop-shadow":[{"drop-shadow":["","none",y,Ue,Ve]}],"drop-shadow-color":[{"drop-shadow":d()}],grayscale:[{grayscale:["",C,b,p]}],"hue-rotate":[{"hue-rotate":[C,b,p]}],invert:[{invert:["",C,b,p]}],saturate:[{saturate:[C,b,p]}],sepia:[{sepia:["",C,b,p]}],"backdrop-filter":[{"backdrop-filter":["","none",b,p]}],"backdrop-blur":[{"backdrop-blur":Oe()}],"backdrop-brightness":[{"backdrop-brightness":[C,b,p]}],"backdrop-contrast":[{"backdrop-contrast":[C,b,p]}],"backdrop-grayscale":[{"backdrop-grayscale":["",C,b,p]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[C,b,p]}],"backdrop-invert":[{"backdrop-invert":["",C,b,p]}],"backdrop-opacity":[{"backdrop-opacity":[C,b,p]}],"backdrop-saturate":[{"backdrop-saturate":[C,b,p]}],"backdrop-sepia":[{"backdrop-sepia":["",C,b,p]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":v()}],"border-spacing-x":[{"border-spacing-x":v()}],"border-spacing-y":[{"border-spacing-y":v()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",b,p]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[C,"initial",b,p]}],ease:[{ease:["linear","initial",W,b,p]}],delay:[{delay:[C,b,p]}],animate:[{animate:["none",F,b,p]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,b,p]}],"perspective-origin":[{"perspective-origin":Y()}],rotate:[{rotate:D()}],"rotate-x":[{"rotate-x":D()}],"rotate-y":[{"rotate-y":D()}],"rotate-z":[{"rotate-z":D()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:ke()}],"skew-x":[{"skew-x":ke()}],"skew-y":[{"skew-y":ke()}],transform:[{transform:[b,p,"","none","gpu","cpu"]}],"transform-origin":[{origin:Y()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ze()}],"translate-x":[{"translate-x":ze()}],"translate-y":[{"translate-y":ze()}],"translate-z":[{"translate-z":ze()}],"translate-none":["translate-none"],accent:[{accent:d()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:d()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",b,p]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":v()}],"scroll-mx":[{"scroll-mx":v()}],"scroll-my":[{"scroll-my":v()}],"scroll-ms":[{"scroll-ms":v()}],"scroll-me":[{"scroll-me":v()}],"scroll-mbs":[{"scroll-mbs":v()}],"scroll-mbe":[{"scroll-mbe":v()}],"scroll-mt":[{"scroll-mt":v()}],"scroll-mr":[{"scroll-mr":v()}],"scroll-mb":[{"scroll-mb":v()}],"scroll-ml":[{"scroll-ml":v()}],"scroll-p":[{"scroll-p":v()}],"scroll-px":[{"scroll-px":v()}],"scroll-py":[{"scroll-py":v()}],"scroll-ps":[{"scroll-ps":v()}],"scroll-pe":[{"scroll-pe":v()}],"scroll-pbs":[{"scroll-pbs":v()}],"scroll-pbe":[{"scroll-pbe":v()}],"scroll-pt":[{"scroll-pt":v()}],"scroll-pr":[{"scroll-pr":v()}],"scroll-pb":[{"scroll-pb":v()}],"scroll-pl":[{"scroll-pl":v()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",b,p]}],fill:[{fill:["none",...d()]}],"stroke-w":[{stroke:[C,Ee,$e,tr]}],stroke:[{stroke:["none",...d()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},un=(t,{cacheSize:e,prefix:o,experimentalParseClassName:r,extend:n={},override:s={}})=>(We(t,"cacheSize",e),We(t,"prefix",o),We(t,"experimentalParseClassName",r),je(t.theme,s.theme),je(t.classGroups,s.classGroups),je(t.conflictingClassGroups,s.conflictingClassGroups),je(t.conflictingClassGroupModifiers,s.conflictingClassGroupModifiers),We(t,"orderSensitiveModifiers",s.orderSensitiveModifiers),He(t.theme,n.theme),He(t.classGroups,n.classGroups),He(t.conflictingClassGroups,n.conflictingClassGroups),He(t.conflictingClassGroupModifiers,n.conflictingClassGroupModifiers),Rr(t,n,"orderSensitiveModifiers"),t),We=(t,e,o)=>{o!==void 0&&(t[e]=o)},je=(t,e)=>{if(e)for(const o in e)We(t,o,e[o])},He=(t,e)=>{if(e)for(const o in e)Rr(t,e,o)},Rr=(t,e,o)=>{const r=e[o];r!==void 0&&(t[o]=t[o]?t[o].concat(r):r)},gn=(t,...e)=>typeof t=="function"?kt(wt,t,...e):kt(()=>un(wt(),t),...e),Ir=kt(wt);function nr(...t){return Ir(io(t))}var mn=/\s+/g,hn=t=>typeof t!="string"||!t?t:t.replace(mn," ").trim(),Je=(...t)=>{const e=[],o=r=>{if(!r&&r!==0&&r!==0n)return;if(Array.isArray(r)){for(let s=0,a=r.length;s<a;s++)o(r[s]);return}const n=typeof r;if(n==="string"||n==="number"||n==="bigint"){if(n==="number"&&r!==r)return;e.push(String(r))}else if(n==="object"){const s=Object.keys(r);for(let a=0,i=s.length;a<i;a++){const l=s[a];r[l]&&e.push(l)}}};for(let r=0,n=t.length;r<n;r++){const s=t[r];s!=null&&o(s)}return e.length>0?hn(e.join(" ")):void 0},sr=t=>t===!1?"false":t===!0?"true":t===0?"0":t,Z=t=>{if(!t||typeof t!="object")return!0;for(const e in t)return!1;return!0},fn=(t,e)=>{if(t===e)return!0;if(!t||!e)return!1;const o=Object.keys(t),r=Object.keys(e);if(o.length!==r.length)return!1;for(let n=0;n<o.length;n++){const s=o[n];if(!r.includes(s)||t[s]!==e[s])return!1}return!0},pn=(t,e)=>{for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const r=e[o];o in t?t[o]=Je(t[o],r):t[o]=r}return t},Tr=(t,e)=>{for(let o=0;o<t.length;o++){const r=t[o];Array.isArray(r)?Tr(r,e):r&&e.push(r)}},zr=(...t)=>{const e=[];Tr(t,e);const o=[];for(let r=0;r<e.length;r++)e[r]&&o.push(e[r]);return o},_t=(t,e)=>{const o={};for(const r in t){const n=t[r];if(r in e){const s=e[r];Array.isArray(n)||Array.isArray(s)?o[r]=zr(s,n):typeof n=="object"&&typeof s=="object"&&n&&s?o[r]=_t(n,s):o[r]=s+" "+n}else o[r]=n}for(const r in e)r in t||(o[r]=e[r]);return o},bn={twMerge:!0,twMergeConfig:{}};function vn(){let t=null,e={},o=!1;return{get cachedTwMerge(){return t},set cachedTwMerge(r){t=r},get cachedTwMergeConfig(){return e},set cachedTwMergeConfig(r){e=r},get didTwMergeConfigChange(){return o},set didTwMergeConfigChange(r){o=r},reset(){t=null,e={},o=!1}}}var pe=vn(),yn=t=>{const e=(r,n)=>{const{extend:s=null,slots:a={},variants:i={},compoundVariants:l=[],compoundSlots:c=[],defaultVariants:h={}}=r,_={...bn,...n},R=s?.base?Je(s.base,r?.base):r?.base,y=s?.variants&&!Z(s.variants)?_t(i,s.variants):i,E=s?.defaultVariants&&!Z(s.defaultVariants)?{...s.defaultVariants,...h}:h;!Z(_.twMergeConfig)&&!fn(_.twMergeConfig,pe.cachedTwMergeConfig)&&(pe.didTwMergeConfigChange=!0,pe.cachedTwMergeConfig=_.twMergeConfig);const k=Z(s?.slots),G=Z(a)?{}:{base:Je(r?.base,k&&s?.base),...a},W=k?G:pn({...s?.slots},Z(G)?{base:r?.base}:G),F=Z(s?.compoundVariants)?l:zr(s?.compoundVariants,l),j=Y=>{if(Z(y)&&Z(a)&&k)return t(R,Y?.class,Y?.className)(_);if(F&&!Array.isArray(F))throw new TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof F}`);if(c&&!Array.isArray(c))throw new TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof c}`);const te=(m,u=y,f=null,w=null)=>{const S=u[m];if(!S||Z(S))return null;const $=w?.[m]??Y?.[m];if($===null)return null;const d=sr($);if(typeof d=="object")return null;const N=E?.[m],A=d??sr(N);return S[A||"false"]},ge=()=>{if(!y)return null;const m=Object.keys(y),u=[];for(let f=0;f<m.length;f++){const w=te(m[f],y);w&&u.push(w)}return u},v=(m,u)=>{if(!y||typeof y!="object")return null;const f=[];for(const w in y){const S=te(w,y,m,u),$=m==="base"&&typeof S=="string"?S:S&&S[m];$&&f.push($)}return f},X={};for(const m in Y){const u=Y[m];u!==void 0&&(X[m]=u)}const Ce=(m,u)=>{const f=typeof Y?.[m]=="object"?{[m]:Y[m]?.initial}:{};return{...E,...X,...f,...u}},xe=(m=[],u)=>{const f=[],w=m.length;for(let S=0;S<w;S++){const{class:$,className:d,...N}=m[S];let A=!0;const V=Ce(null,u);for(const K in N){const M=N[K],I=V[K];if(Array.isArray(M)){if(!M.includes(I)){A=!1;break}}else{if((M==null||M===!1)&&(I==null||I===!1))continue;if(I!==M){A=!1;break}}}A&&($&&f.push($),d&&f.push(d))}return f},ae=m=>{const u=xe(F,m);if(!Array.isArray(u))return u;const f={},w=t;for(let S=0;S<u.length;S++){const $=u[S];if(typeof $=="string")f.base=w(f.base,$)(_);else if(typeof $=="object")for(const d in $)f[d]=w(f[d],$[d])(_)}return f},Ie=m=>{if(c.length<1)return null;const u={},f=Ce(null,m);for(let w=0;w<c.length;w++){const{slots:S=[],class:$,className:d,...N}=c[w];if(!Z(N)){let A=!0;for(const V in N){const K=f[V],M=N[V];if(K===void 0||(Array.isArray(M)?!M.includes(K):M!==K)){A=!1;break}}if(!A)continue}for(let A=0;A<S.length;A++){const V=S[A];u[V]||(u[V]=[]),u[V].push([$,d])}}return u};if(!Z(a)||!k){const m={};if(typeof W=="object"&&!Z(W)){const u=t;for(const f in W)m[f]=w=>{const S=ae(w),$=Ie(w);return u(W[f],v(f,w),S?S[f]:void 0,$?$[f]:void 0,w?.class,w?.className)(_)}}return m}return t(R,ge(),xe(F),Y?.class,Y?.className)(_)},ee=()=>{if(!(!y||typeof y!="object"))return Object.keys(y)};return j.variantKeys=ee(),j.extend=s,j.base=R,j.slots=W,j.variants=y,j.defaultVariants=E,j.compoundSlots=c,j.compoundVariants=F,j};return{tv:e,createTV:r=>(n,s)=>e(n,s?_t(r,s):r)}},xn=t=>Z(t)?Ir:gn({...t,extend:{theme:t.theme,classGroups:t.classGroups,conflictingClassGroupModifiers:t.conflictingClassGroupModifiers,conflictingClassGroups:t.conflictingClassGroups,...t.extend}}),kn=(t,e)=>{const o=Je(t);return!o||!(e?.twMerge??!0)?o:((!pe.cachedTwMerge||pe.didTwMergeConfigChange)&&(pe.didTwMergeConfigChange=!1,pe.cachedTwMerge=xn(pe.cachedTwMergeConfig)),pe.cachedTwMerge(o)||void 0)},wn=(...t)=>e=>kn(t,e),{tv:_n}=yn(wn);const ar=_n({base:"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90 shadow-xs",destructive:"bg-destructive hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-white shadow-xs",outline:"bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border shadow-xs",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-xs",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});var Sn=H("<a><!></a>"),Mn=H("<button><!></button>");function Pe(t,e){St(e,!0);let o=ie(e,"variant",3,"default"),r=ie(e,"size",3,"default"),n=ie(e,"ref",15,null),s=ie(e,"href",3,void 0),a=ie(e,"type",3,"button"),i=ao(e,["$$slots","$$events","$$legacy","class","variant","size","ref","href","type","disabled","children"]);var l=ce(),c=J(l);{var h=R=>{var y=Sn();Ke(y,k=>({"data-slot":"button",class:k,href:e.disabled?void 0:s(),"aria-disabled":e.disabled,role:e.disabled?"link":void 0,tabindex:e.disabled?-1:void 0,...i}),[()=>nr(ar({variant:o(),size:r()}),e.class)]);var E=O(y);Wt(E,()=>e.children??Gt),P(y),Et(y,k=>n(k),()=>n()),T(R,y)},_=R=>{var y=Mn();Ke(y,k=>({"data-slot":"button",class:k,type:a(),disabled:e.disabled,...i}),[()=>nr(ar({variant:o(),size:r()}),e.class)]);var E=O(y);Wt(E,()=>e.children??Gt),P(y),Et(y,k=>n(k),()=>n()),T(R,y)};ne(c,R=>{s()?R(h):R(_,-1)})}T(t,l),Mt()}const Cn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const $n=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const ir=(...t)=>t.filter((e,o,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===o).join(" ").trim();var Rn=Hr("<svg><!><!></svg>");function ye(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]),r=le(o,["name","color","size","strokeWidth","absoluteStrokeWidth","iconNode"]);St(e,!1);let n=ie(e,"name",8,void 0),s=ie(e,"color",8,"currentColor"),a=ie(e,"size",8,24),i=ie(e,"strokeWidth",8,2),l=ie(e,"absoluteStrokeWidth",8,!1),c=ie(e,"iconNode",24,()=>[]);Fr();var h=Rn();Ke(h,(y,E,k)=>({...Cn,...y,...r,width:a(),height:a(),stroke:s(),"stroke-width":E,class:k}),[()=>$n(r)?void 0:{"aria-hidden":"true"},()=>(Le(l()),Le(i()),Le(a()),Xe(()=>l()?Number(i())*24/Number(a()):i())),()=>(Le(ir),Le(n()),Le(o),Xe(()=>ir("lucide-icon","lucide",n()?`lucide-${n()}`:"",o.class)))]);var _=O(h);pt(_,1,c,bt,(y,E)=>{var k=fe(()=>dr(g(E),2));let G=()=>g(k)[0],W=()=>g(k)[1];var F=ce(),j=J(F);uo(j,G,!0,(ee,Y)=>{Ke(ee,()=>({...W()}))}),T(y,F)});var R=L(_);ue(R,e,"default",{}),P(h),T(t,h),Mt()}function In(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["rect",{width:"12",height:"12",x:"2",y:"10",rx:"2",ry:"2"}],["path",{d:"m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6"}],["path",{d:"M6 18h.01"}],["path",{d:"M10 14h.01"}],["path",{d:"M15 6h.01"}],["path",{d:"M18 9h.01"}]];ye(t,ve({name:"dices"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function Tn(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]];ye(t,ve({name:"download"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function zn(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]];ye(t,ve({name:"file-text"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function Ln(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}]];ye(t,ve({name:"house"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function Pn(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"}]];ye(t,ve({name:"moon"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function An(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]];ye(t,ve({name:"search"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function Be(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18"}]];ye(t,ve({name:"server"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function On(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["circle",{cx:"12",cy:"12",r:"4"}],["path",{d:"M12 2v2"}],["path",{d:"M12 20v2"}],["path",{d:"m4.93 4.93 1.41 1.41"}],["path",{d:"m17.66 17.66 1.41 1.41"}],["path",{d:"M2 12h2"}],["path",{d:"M20 12h2"}],["path",{d:"m6.34 17.66-1.41 1.41"}],["path",{d:"m19.07 4.93-1.41 1.41"}]];ye(t,ve({name:"sun"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function bs(t,e){const o=le(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M12 4v16"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"}],["path",{d:"M9 20h6"}]];ye(t,ve({name:"type"},()=>o,{get iconNode(){return r},children:(n,s)=>{var a=ce(),i=J(a);ue(i,e,"default",{}),T(n,a)},$$slots:{default:!0}}))}function Nn(t){const e=t.lines.filter(o=>o.text&&o.complete);return e.sort((o,r)=>o.bbox.y-r.bbox.y||o.bbox.x-r.bbox.x),e.map(o=>o.text).join(`
|
| 2 |
+
`)}function Gn(t){const e=t.lines.filter(r=>r.complete).map(r=>({text:r.text,confidence:r.confidence,bbox:{x:r.bbox.x,y:r.bbox.y,w:r.bbox.w,h:r.bbox.h},polygon:r.bbox.polygon??null})),o=t.groups.map(r=>({name:r.name,rect:r.rect??null,lines:r.lineIds.map(n=>t.lines.find(s=>s.id===n)).filter(n=>!!n&&n.complete).map(n=>({text:n.text,confidence:n.confidence,bbox:{x:n.bbox.x,y:n.bbox.y,w:n.bbox.w,h:n.bbox.h}}))}));return JSON.stringify({name:t.name,groups:o,lines:e},null,2)}function Ze(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Dn(t){const e=t.lines.filter(n=>n.text&&n.complete);e.sort((n,s)=>n.bbox.y-s.bbox.y||n.bbox.x-s.bbox.x);const o=new Date().toISOString(),r=e.map((n,s)=>{const a=n.text.split(/\s+/).filter(Boolean);let i=Math.round(n.bbox.x);const l=a.length>0?Math.round(n.bbox.w/a.length):0,c=a.map((h,_)=>{const R=i;return i+=l,` <String ID="string_${s}_${_}" CONTENT="${Ze(h)}" HPOS="${R}" VPOS="${Math.round(n.bbox.y)}" WIDTH="${l}" HEIGHT="${Math.round(n.bbox.h)}" WC="${n.confidence.toFixed(3)}"/>`}).join(`
|
| 3 |
+
`);return` <TextLine ID="line_${s}" HPOS="${Math.round(n.bbox.x)}" VPOS="${Math.round(n.bbox.y)}" WIDTH="${Math.round(n.bbox.w)}" HEIGHT="${Math.round(n.bbox.h)}">
|
| 4 |
+
${c}
|
| 5 |
+
</TextLine>`}).join(`
|
| 6 |
+
`);return`<?xml version="1.0" encoding="UTF-8"?>
|
| 7 |
+
<alto xmlns="http://www.loc.gov/standards/alto/ns-v4#"
|
| 8 |
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
| 9 |
+
xsi:schemaLocation="http://www.loc.gov/standards/alto/ns-v4# http://www.loc.gov/standards/alto/v4/alto-4-4.xsd">
|
| 10 |
+
<Description>
|
| 11 |
+
<MeasurementUnit>pixel</MeasurementUnit>
|
| 12 |
+
<sourceImageInformation>
|
| 13 |
+
<fileName>${Ze(t.name)}</fileName>
|
| 14 |
+
</sourceImageInformation>
|
| 15 |
+
<Processing ID="proc_0">
|
| 16 |
+
<processingDateTime>${o}</processingDateTime>
|
| 17 |
+
<processingSoftware>
|
| 18 |
+
<softwareName>Lejonet HTR</softwareName>
|
| 19 |
+
</processingSoftware>
|
| 20 |
+
</Processing>
|
| 21 |
+
</Description>
|
| 22 |
+
<Layout>
|
| 23 |
+
<Page ID="page_0" PHYSICAL_IMG_NR="0" WIDTH="${Math.round(e[0]?.bbox?.x+e[0]?.bbox?.w||0)}" HEIGHT="${Math.round(e[e.length-1]?.bbox?.y+e[e.length-1]?.bbox?.h||0)}">
|
| 24 |
+
<PrintSpace>
|
| 25 |
+
<TextBlock ID="block_0">
|
| 26 |
+
${r}
|
| 27 |
+
</TextBlock>
|
| 28 |
+
</PrintSpace>
|
| 29 |
+
</Page>
|
| 30 |
+
</Layout>
|
| 31 |
+
</alto>`}function En(t){const e=t.lines.filter(a=>a.text&&a.complete);e.sort((a,i)=>a.bbox.y-i.bbox.y||a.bbox.x-i.bbox.x);const o=new Date().toISOString(),r=[];for(const a of t.groups){const i=a.lineIds.map(l=>e.find(c=>c.id===l)).filter(l=>!!l);i.length>0&&r.push({rect:a.rect??{x:Math.min(...i.map(l=>l.bbox.x)),y:Math.min(...i.map(l=>l.bbox.y)),w:Math.max(...i.map(l=>l.bbox.x+l.bbox.w))-Math.min(...i.map(l=>l.bbox.x)),h:Math.max(...i.map(l=>l.bbox.y+l.bbox.h))-Math.min(...i.map(l=>l.bbox.y))},lines:i})}r.length===0&&e.length>0&&r.push({rect:{x:Math.min(...e.map(a=>a.bbox.x)),y:Math.min(...e.map(a=>a.bbox.y)),w:Math.max(...e.map(a=>a.bbox.x+a.bbox.w))-Math.min(...e.map(a=>a.bbox.x)),h:Math.max(...e.map(a=>a.bbox.y+a.bbox.h))-Math.min(...e.map(a=>a.bbox.y))},lines:e});function n(a,i,l,c){return`${Math.round(a)},${Math.round(i)} ${Math.round(a+l)},${Math.round(i)} ${Math.round(a+l)},${Math.round(i+c)} ${Math.round(a)},${Math.round(i+c)}`}const s=r.map((a,i)=>{const l=a.lines.map((h,_)=>{const R=h.bbox.polygon?h.bbox.polygon.map(y=>`${Math.round(y.x)},${Math.round(y.y)}`).join(" "):n(h.bbox.x,h.bbox.y,h.bbox.w,h.bbox.h);return` <TextLine id="line_r${i}_l${_}" custom="readingOrder {index:${_};}">
|
| 32 |
+
<Coords points="${R}"/>
|
| 33 |
+
<TextEquiv conf="${h.confidence.toFixed(3)}">
|
| 34 |
+
<Unicode>${Ze(h.text)}</Unicode>
|
| 35 |
+
</TextEquiv>
|
| 36 |
+
</TextLine>`}).join(`
|
| 37 |
+
`),c=n(a.rect.x,a.rect.y,a.rect.w,a.rect.h);return` <TextRegion id="region_${i}" custom="readingOrder {index:${i};}">
|
| 38 |
+
<Coords points="${c}"/>
|
| 39 |
+
${l}
|
| 40 |
+
</TextRegion>`}).join(`
|
| 41 |
+
`);return`<?xml version="1.0" encoding="UTF-8"?>
|
| 42 |
+
<PcGts xmlns="http://schema.primaresearch.org/PAGE/gts/pagecontent/2019-07-15"
|
| 43 |
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
| 44 |
+
xsi:schemaLocation="http://schema.primaresearch.org/PAGE/gts/pagecontent/2019-07-15 http://schema.primaresearch.org/PAGE/gts/pagecontent/2019-07-15/pagecontent.xsd">
|
| 45 |
+
<Metadata>
|
| 46 |
+
<Creator>Lejonet HTR</Creator>
|
| 47 |
+
<Created>${o}</Created>
|
| 48 |
+
</Metadata>
|
| 49 |
+
<Page imageFilename="${Ze(t.name)}">
|
| 50 |
+
<ReadingOrder>
|
| 51 |
+
<OrderedGroup id="reading_order">
|
| 52 |
+
${r.map((a,i)=>` <RegionRefIndexed index="${i}" regionRef="region_${i}"/>`).join(`
|
| 53 |
+
`)}
|
| 54 |
+
</OrderedGroup>
|
| 55 |
+
</ReadingOrder>
|
| 56 |
+
${s}
|
| 57 |
+
</Page>
|
| 58 |
+
</PcGts>`}function Fe(t,e,o){const r=new Blob([t],{type:o}),n=URL.createObjectURL(r),s=document.createElement("a");s.href=n,s.download=e,s.click(),URL.revokeObjectURL(n)}function Wn(t,e){const o=t.name.replace(/\.[^.]+$/,"");switch(e){case"txt":Fe(Nn(t),`${o}.txt`,"text/plain");break;case"alto":Fe(Dn(t),`${o}_alto.xml`,"application/xml");break;case"page":Fe(En(t),`${o}_page.xml`,"application/xml");break;case"json":Fe(Gn(t),`${o}.json`,"application/json");break}}const Vn={"app.title":{en:"Lejonet HTR",sv:"Lejonet HTR"},"app.description":{en:"Transcribe handwritten Swedish historical documents directly in your browser. All inference runs locally — no data leaves your device.",sv:"Transkribera handskrivna svenska historiska dokument direkt i din webbläsare. All inferens körs lokalt — ingen data lämnar din enhet."},"models.pipeline":{en:"HTR Pipeline",sv:"HTR-pipeline"},"models.ready":{en:"Models Ready",sv:"Modeller redo"},"models.downloading":{en:"Downloading",sv:"Laddar ner"},"models.download":{en:"Download Models",sv:"Ladda ner modeller"},"models.cached":{en:"Cached after first download — loads instantly next time",sv:"Cachad efter första nedladdningen — laddas direkt nästa gång"},"models.loading":{en:"Loading cached models...",sv:"Laddar cachade modeller..."},"models.info":{en:"HTR models run entirely in your browser using ONNX Runtime. Total download: ~1.8 GB (cached after first load).",sv:"HTR-modeller körs helt i din webbläsare med ONNX Runtime. Total nedladdning: ~1,8 GB (cachas efter första laddningen)."},"models.failed":{en:"Download failed",sv:"Nedladdning misslyckades"},"models.retry":{en:"Retry",sv:"Försök igen"},"model.layout":{en:"Layout Detection",sv:"Layoutdetektering"},"model.layout.desc":{en:"RTMDet regions",sv:"RTMDet-regioner"},"model.yolo":{en:"Line Detection",sv:"Raddetektering"},"model.yolo.desc":{en:"YOLO segments",sv:"YOLO-segment"},"model.encoder":{en:"Text Encoder",sv:"Textkodare"},"model.encoder.desc":{en:"TrOCR vision",sv:"TrOCR-vision"},"model.decoder":{en:"Text Decoder",sv:"Textavkodare"},"model.decoder.desc":{en:"TrOCR language",sv:"TrOCR-språk"},"model.tokenizer":{en:"Tokenizer",sv:"Tokeniserare"},"model.tokenizer.desc":{en:"BPE vocab",sv:"BPE-vokabulär"},"upload.drop":{en:"Drop images here or click to upload",sv:"Släpp bilder här eller klicka för att ladda upp"},"upload.hint1":{en:"Upload scanned pages of handwritten documents.",sv:"Ladda upp skannade sidor av handskrivna dokument."},"upload.hint2":{en:"Then press",sv:"Tryck sedan på"},"upload.hint3":{en:"to transcribe.",sv:"för att transkribera."},"upload.demo":{en:"Try demo image",sv:"Testa demobild"},"upload.loading":{en:"Loading...",sv:"Laddar..."},"toolbar.home":{en:"Home",sv:"Hem"},"toolbar.catalog":{en:"Toggle catalog",sv:"Visa/dölj katalog"},"toolbar.search":{en:"Search catalog...",sv:"Sök i katalog..."},"toolbar.transcriptions":{en:"Toggle transcriptions",sv:"Visa/dölj transkriptioner"},"toolbar.boxes":{en:"Show line boxes",sv:"Visa radbegränsningar"},"toolbar.hideBoxes":{en:"Hide line boxes",sv:"Dölj radbegränsningar"},"toolbar.textOverlay":{en:"Show transcriptions on image",sv:"Visa transkriptioner på bilden"},"toolbar.hideTextOverlay":{en:"Hide text overlay",sv:"Dölj textöverlägg"},"toolbar.selectMode":{en:"Draw region to transcribe",sv:"Rita region att transkribera"},"toolbar.panMode":{en:"Switch to pan mode",sv:"Byt till panoreringsläge"},"toolbar.transcribe":{en:"Transcribe page",sv:"Transkribera sida"},"toolbar.retranscribe":{en:"Re-transcribe page",sv:"Transkribera sida igen"},"toolbar.filters":{en:"Image adjustments",sv:"Bildjusteringar"},"toolbar.metadata":{en:"Page metadata",sv:"Sidmetadata"},"toolbar.fullscreen":{en:"Fullscreen",sv:"Helskärm"},"toolbar.print":{en:"Print",sv:"Skriv ut"},"region.analyzing":{en:"Analyzing...",sv:"Analyserar..."},"export.title":{en:"Export transcriptions",sv:"Exportera transkriptioner"},"export.plainText":{en:"Plain text",sv:"Ren text"},"gpu.title":{en:"GPU Inference Server",sv:"GPU-inferensserver"},"gpu.connect":{en:"Connect",sv:"Anslut"},"gpu.connectGpu":{en:"Connect to GPU server",sv:"Anslut till GPU-server"},"gpu.connected":{en:"Connected",sv:"Ansluten"},"gpu.failed":{en:"Failed to connect",sv:"Kunde inte ansluta"},"gpu.disconnect":{en:"Disconnect (use WASM)",sv:"Koppla från (använd WASM)"},"gpu.local":{en:"Using local WASM inference",sv:"Använder lokal WASM-inferens"},"transcription.pressPlay":{en:"Press",sv:"Tryck"},"transcription.toTranscribe":{en:"to transcribe this page",sv:"för att transkribera denna sida"},"transcription.filter":{en:"Filter transcriptions...",sv:"Filtrera transkriptioner..."},"transcription.ready":{en:"Ready",sv:"Klar"},"transcription.noRegions":{en:"No regions detected",sv:"Inga regioner hittades"},"theme.toggle":{en:"Toggle theme",sv:"Byt tema"}},Lr="lejonet-locale";function Un(){if(typeof localStorage<"u"){const t=localStorage.getItem(Lr);if(t==="sv"||t==="en")return t}return typeof navigator<"u"&&navigator.language.toLowerCase().startsWith("sv")?"sv":"en"}let It=z(be(Un()));function jn(t){x(It,t,!0),typeof localStorage<"u"&&localStorage.setItem(Lr,t)}function Ae(t){const e=Vn[t];return e?e[g(It)]??e.en??t:t}function ht(){return g(It)}var Hn=H('<input type="text" class="w-48 rounded-lg border border-border bg-background/50 px-3 py-1.5 text-xs text-foreground placeholder:text-muted-foreground/60 outline-none focus:border-primary/40 focus:bg-background/80 focus:w-64 focus:shadow-[0_0_0_1px_oklch(0.68_0.16_250_/_0.1)] transition-all duration-300"/>'),Bn=H("<!> <!> <!>",1),Fn=H("<!> <!>",1),Yn=H('<button class="inline-flex items-center gap-1.5 rounded-full border border-green-500/30 bg-green-500/10 px-2.5 py-1 text-[0.65rem] font-medium text-green-600 dark:text-green-400 cursor-pointer hover:bg-green-500/20 transition-colors" title="GPU server settings"><!> </button>'),Xn=H('<button class="inline-flex items-center gap-1.5 rounded-full border border-green-500/30 bg-green-500/10 px-2.5 py-1 text-[0.65rem] font-medium text-green-600 dark:text-green-400 cursor-pointer hover:bg-green-500/20 transition-colors" title="GPU server settings"><!>WASM</button>'),Kn=H('<button class="inline-flex items-center gap-1.5 rounded-full border border-border px-2.5 py-1 text-[0.65rem] font-medium text-muted-foreground animate-pulse cursor-pointer hover:bg-muted/50 transition-colors" title="GPU server settings"><!>Loading...</button>'),qn=H('<button class="inline-flex items-center gap-1.5 rounded-full border border-border px-2.5 py-1 text-[0.65rem] font-medium text-muted-foreground cursor-pointer hover:bg-muted/50 transition-colors" title="GPU server settings"><!> </button>'),Qn=H('<div class="text-[0.65rem] text-green-500 mt-1.5"> </div>'),Jn=H('<div class="text-[0.65rem] text-destructive mt-1.5">Failed to connect</div>'),Zn=H('<div class="flex items-center gap-2 text-[0.6rem]"><span></span> <span class="text-muted-foreground flex-1"> </span> <span class="font-mono text-muted-foreground/60"> </span></div>'),es=H('<div class="mt-2 pt-2 border-t border-border space-y-1"><!> <div class="flex items-center gap-3 text-[0.6rem] text-muted-foreground/60 pt-1"><span> </span> <span> </span> <span> </span></div></div>'),ts=H('<!> <button class="text-[0.65rem] text-muted-foreground hover:text-foreground mt-2 cursor-pointer">Disconnect (use WASM)</button>',1),rs=H('<div class="text-[0.65rem] text-muted-foreground mt-1.5">Using local WASM inference</div>'),os=H('<div class="absolute right-0 top-full mt-1 z-50 rounded-lg border border-border bg-card shadow-lg p-3 w-72"><div class="text-xs font-medium mb-2">GPU Inference Server</div> <div class="flex gap-1.5"><input type="text" placeholder="http://192.168.1.10:8080" class="flex-1 rounded border border-border bg-background px-2 py-1 text-xs text-foreground placeholder:text-muted-foreground outline-none focus:border-primary"/> <button class="rounded bg-primary px-2 py-1 text-[0.65rem] text-primary-foreground font-medium hover:bg-primary/90 transition-colors"> </button></div> <!> <!> <!> <div class="mt-2 pt-2 border-t border-border"><div class="text-[0.6rem] text-muted-foreground mb-1">Model quality</div> <div class="flex gap-1"><button>Full</button> <button>Lite</button></div></div></div>'),ns=H('<button class="w-full text-left px-3 py-1.5 text-xs rounded hover:bg-muted transition-colors"> </button>'),ss=H('<div class="absolute right-0 top-full mt-1 z-50 rounded-lg border border-border bg-card shadow-lg p-1 w-40"></div>'),as=H('<!> <div class="relative"><!> <!></div>',1),is=H('<!> <!> <span class="sr-only"> </span>',1),ls=H('<header class="flex items-center gap-3 border-b border-border bg-gradient-to-r from-card to-card/80 px-4 py-2 shrink-0 backdrop-blur-sm"><!> <div class="ml-auto flex items-center gap-1"><div class="relative"><!> <!></div> <!> <!> <button class="px-1.5 py-0.5 rounded text-[0.65rem] font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors cursor-pointer uppercase"> </button></div></header>');function vs(t,e){St(e,!0);let o=z("");const r=fe(()=>co.url.pathname==="/viewer");let n=z(!1),s=z(!1),a=z(be(Se.get())),i=z(!!Se.get()),l=z("idle"),c=z(""),h=z(null),_;no(()=>g(n)&&g(i)?(Yt().then(m=>{x(h,m,!0)}),_=setInterval(async()=>{x(h,await Yt(),!0)},5e3),()=>clearInterval(_)):()=>{});async function R(){const m=g(a).trim();if(!m){Se.set(""),x(i,!1),x(l,"idle"),x(c,"");return}x(l,"checking");try{const u=await fetch(`${m}/health`,{signal:AbortSignal.timeout(3e3)});if(u.ok){Se.set(m),x(i,!0),x(l,"ok");const f=await u.json();x(c,f.gpu?.name??"",!0)}else x(l,"error")}catch{x(l,"error")}}var y=ls(),E=O(y);{var k=m=>{var u=Fn(),f=J(u);{let $=fe(()=>Ae("toolbar.home"));Pe(f,{variant:"ghost",size:"icon-sm",onclick:()=>{De.activeDocumentId=null},get title(){return g($)},children:(d,N)=>{Ln(d,{class:"size-4"})},$$slots:{default:!0}})}var w=L(f,2);{var S=$=>{var d=Bn(),N=J(d);{let M=fe(()=>e.catalogOpen?"secondary":"ghost"),I=fe(()=>Ae("toolbar.catalog"));Pe(N,{get variant(){return g(M)},size:"icon-sm",get onclick(){return e.onToggleCatalog},get title(){return g(I)},children:(B,Te)=>{An(B,{class:"size-4"})},$$slots:{default:!0}})}var A=L(N,2);Pe(A,{variant:"ghost",size:"icon-sm",get onclick(){return e.onRandomVolume},title:"Random volume",children:(M,I)=>{In(M,{class:"size-4"})},$$slots:{default:!0}});var V=L(A,2);{var K=M=>{var I=Hn();Ut(I),de(B=>Vt(I,"placeholder",B),[()=>Ae("toolbar.search")]),re("keydown",I,B=>{B.key==="Enter"&&g(o).trim()&&(e.onSearch?.(g(o).trim()),x(o,"")),B.key==="Escape"&&(x(o,""),B.target.blur())}),Ht(I,()=>g(o),B=>x(o,B)),T(M,I)};ne(V,M=>{e.catalogOpen||M(K)})}T($,d)};ne(w,$=>{$(S)})}T(m,u)};ne(E,m=>{g(r)&&m(k)})}var G=L(E,2),W=O(G),F=O(W);{var j=m=>{var u=Yn(),f=O(u);Be(f,{class:"size-3"});var w=L(f);P(u),de(S=>oe(w,`GPU${S??""}`),[()=>g(c)||Bt()?` (${g(c)||Bt()})`:""]),re("click",u,()=>x(n,!g(n))),T(m,u)},ee=m=>{var u=Xn(),f=O(u);Be(f,{class:"size-3"}),Dt(),P(u),re("click",u,()=>x(n,!g(n))),T(m,u)},Y=m=>{var u=Kn(),f=O(u);Be(f,{class:"size-3"}),Dt(),P(u),re("click",u,()=>x(n,!g(n))),T(m,u)},te=m=>{var u=qn(),f=O(u);Be(f,{class:"size-3"});var w=L(f,1,!0);P(u),de(()=>oe(w,g(i)?"GPU":"Connect GPU")),re("click",u,()=>x(n,!g(n))),T(m,u)};ne(F,m=>{De.htr.modelsReady&&g(i)?m(j):De.htr.modelsReady?m(ee,1):De.htr.stage==="loading_models"?m(Y,2):m(te,-1)})}var ge=L(F,2);{var v=m=>{var u=os(),f=L(O(u),2),w=O(f);Ut(w);var S=L(w,2),$=O(S,!0);P(S),P(f);var d=L(f,2);{var N=D=>{var Q=Qn(),ke=O(Q);P(Q),de(()=>oe(ke,`Connected${g(c)?` — ${g(c)}`:""}`)),T(D,Q)},A=D=>{var Q=Jn();T(D,Q)};ne(d,D=>{g(l)==="ok"?D(N):g(l)==="error"&&D(A,1)})}var V=L(d,2);ne(V,D=>{});var K=L(V,2);{var M=D=>{var Q=ts(),ke=J(Q);{var ze=et=>{var tt=es(),Tt=O(tt);pt(Tt,17,()=>Object.entries(g(h).deployments),bt,(Gr,Dr)=>{var Pt=fe(()=>dr(g(Dr),2));let Er=()=>g(Pt)[0],nt=()=>g(Pt)[1];var st=Zn(),At=O(st),at=L(At,2),Wr=O(at,!0);P(at);var Ot=L(at,2),Vr=O(Ot,!0);P(Ot),P(st),de(()=>{ct(At,1,`size-1.5 rounded-full ${nt().status==="HEALTHY"?"bg-green-500":nt().status==="UPDATING"?"bg-yellow-500":"bg-red-500"}`),oe(Wr,Er()),oe(Vr,nt().status)}),T(Gr,st)});var zt=L(Tt,2),rt=O(zt),Ar=O(rt);P(rt);var ot=L(rt,2),Or=O(ot);P(ot);var Lt=L(ot,2),Nr=O(Lt);P(Lt),P(zt),P(tt),de(()=>{oe(Ar,`GPU: ${g(h).gpu.name??""}`),oe(Or,`${g(h).cluster.memory_gb??""}GB`),oe(Nr,`${g(h).cluster.cpu_available??""} CPU`)}),T(et,tt)};ne(ke,et=>{g(h)&&et(ze)})}var Pr=L(ke,2);re("click",Pr,()=>{x(a,""),Se.set(""),x(i,!1),x(l,"idle"),x(h,null)}),T(D,Q)},I=D=>{var Q=rs();T(D,Q)};ne(K,D=>{g(i)?D(M):D(I,-1)})}var B=L(K,2),Te=L(O(B),2),U=O(Te),Oe=L(U,2);P(Te),P(B),P(u),de((D,Q)=>{oe($,g(l)==="checking"?"...":"Connect"),ct(U,1,`flex-1 rounded px-2 py-1 text-[0.6rem] font-medium transition-colors ${D??""}`),ct(Oe,1,`flex-1 rounded px-2 py-1 text-[0.6rem] font-medium transition-colors ${Q??""}`)},[()=>yt()==="fp32"?"bg-primary/10 text-primary":"text-muted-foreground hover:text-foreground hover:bg-muted/50",()=>yt()==="int8"?"bg-primary/10 text-primary":"text-muted-foreground hover:text-foreground hover:bg-muted/50"]),re("keydown",w,D=>{D.key==="Enter"&&R()}),Ht(w,()=>g(a),D=>x(a,D)),re("click",S,R),re("click",U,()=>{Kt("fp32"),location.reload()}),re("click",Oe,()=>{Kt("int8"),location.reload()}),T(m,u)};ne(ge,m=>{g(n)&&m(v)})}P(W);var X=L(W,2);{var Ce=m=>{var u=as(),f=J(u);{let N=fe(()=>e.transcriptionOpen?"secondary":"ghost"),A=fe(()=>Ae("toolbar.transcriptions"));Pe(f,{get variant(){return g(N)},size:"icon-sm",get onclick(){return e.onToggleTranscription},get title(){return g(A)},children:(V,K)=>{zn(V,{class:"size-4"})},$$slots:{default:!0}})}var w=L(f,2),S=O(w);{let N=fe(()=>Ae("export.title"));Pe(S,{variant:"ghost",size:"icon-sm",onclick:()=>x(s,!g(s)),get title(){return g(N)},children:(A,V)=>{Tn(A,{class:"size-4"})},$$slots:{default:!0}})}var $=L(S,2);{var d=N=>{var A=ss();pt(A,20,()=>[{format:"alto",label:"ALTO XML"},{format:"page",label:"PAGE XML"},{format:"txt",label:"Plain text"},{format:"json",label:"JSON"}],bt,(V,K)=>{var M=ns(),I=O(M,!0);P(M),de(()=>oe(I,K.label)),re("click",M,()=>{const B=De.activeDocument;B&&Wn(B,K.format),x(s,!1)}),T(V,M)}),P(A),T(N,A)};ne($,N=>{g(s)&&N(d)})}P(w),T(m,u)};ne(X,m=>{g(r)&&m(Ce)})}var xe=L(X,2);Pe(xe,{variant:"ghost",size:"icon-sm",get onclick(){return lo},children:(m,u)=>{var f=is(),w=J(f);On(w,{class:"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"});var S=L(w,2);Pn(S,{class:"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"});var $=L(S,2),d=O($,!0);P($),de(N=>oe(d,N),[()=>Ae("theme.toggle")]),T(m,f)},$$slots:{default:!0}});var ae=L(xe,2),Ie=O(ae,!0);P(ae),P(G),P(y),de((m,u)=>{Vt(ae,"title",m),oe(Ie,u)},[()=>ht()==="en"?"Byt till svenska":"Switch to English",ht]),re("click",ae,()=>jn(ht()==="en"?"sv":"en")),T(t,y),Mt()}Br(["keydown","click"]);export{vs as A,Pe as B,ye as I,bs as T,Kt as a,De as b,Ht as c,ps as d,nr as e,yt as g,ue as s,Ae as t};
|
_app/immutable/chunks/CxPUfIb7.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{aS as pe,aR as gt,D as De,G as U,q as A,z as T,F as te,bq as _t}from"./BuF_Fr92.js";const V=[];function Ee(e,t=pe){let n=null;const r=new Set;function a(o){if(gt(e,o)&&(e=o,n)){const c=!V.length;for(const l of r)l[1](),V.push(l,e);if(c){for(let l=0;l<V.length;l+=2)V[l][0](V[l+1]);V.length=0}}}function i(o){a(o(e))}function s(o,c=pe){const l=[o,c];return r.add(l),r.size===1&&(n=t(a,i)||pe),o(e),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:a,update:i,subscribe:s}}class Re{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class xe{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function mt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function wt(e){return e.split("%25").map(decodeURI).join("%25")}function vt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ge({href:e}){return e.split("#")[0]}function yt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function bt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const kt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&G.delete(Ue(e)),kt(e,t));const G=new Map;function St(e,t){const n=Ue(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const s=r.getAttribute("data-ttl");return s&&G.set(n,{body:a,init:i,ttl:1e3*Number(s)}),r.getAttribute("data-b64")!==null&&(a=bt(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function Et(e,t,n){if(G.size>0){const r=Ue(e,n),a=G.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);G.delete(r)}}return window.fetch(t,n)}function Ue(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${yt(...a)}"]`}return r}const Rt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function xt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Ut(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const s=r.split(/\[(.+?)\](?!\])/);return"/"+s.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return _e(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return _e(String.fromCharCode(...c.slice(2).split("-").map(m=>parseInt(m,16))));const f=Rt.exec(c),[,h,w,u,p]=f;return t.push({name:u,matcher:p,optional:!!h,rest:!!w,chained:w?l===1&&s[0]==="":!1}),w?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return _e(c)}).join("")}).join("")}/?$`),params:t}}function Lt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Ut(e){return e.slice(1).split("/").filter(Lt)}function At(e,t,n){const r={},a=e.slice(1),i=a.filter(o=>o!==void 0);let s=0;for(let o=0;o<t.length;o+=1){const c=t[o];let l=a[o-s];if(c.chained&&c.rest&&s&&(l=a.slice(o-s,o+1).filter(f=>f).join("/"),s=0),l===void 0)if(c.rest)l="";else continue;if(!c.matcher||n[c.matcher](l)){r[c.name]=l;const f=t[o+1],h=a[o+1];f&&!f.rest&&f.optional&&h&&c.chained&&(s=0),!f&&!h&&Object.keys(r).length===i.length&&(s=0);continue}if(c.optional&&c.chained){s++;continue}return}if(!s)return r}function _e(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Tt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[c,l,f]])=>{const{pattern:h,params:w}=xt(o),u={id:o,exec:p=>{const m=h.exec(p);if(m)return At(m,w,r)},errors:[1,...f||[]].map(p=>e[p]),layouts:[0,...l||[]].map(s),leaf:i(c)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function i(o){const c=o<0;return c&&(o=~o),[c,e[o]]}function s(o){return o===void 0?o:[a.has(o),e[o]]}}function We(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Ve(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const x=globalThis.__sveltekit_tx1caf?.base??"",It=globalThis.__sveltekit_tx1caf?.assets??x??"",Pt="1774087803157",Ye="sveltekit:snapshot",He="sveltekit:scroll",Je="sveltekit:states",Ot="sveltekit:pageurl",K="sveltekit:history",W="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ue=location.origin;function Ae(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function q(){return{x:pageXOffset,y:pageYOffset}}function B(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Be={...j,"":j.hover};function Xe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Qe(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Xe(e)}}function ve(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||fe(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),s=r?.origin===ue&&e.hasAttribute("download");return{url:r,external:i,target:a,download:s}}function ne(e){let t=null,n=null,r=null,a=null,i=null,s=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=B(o,"preload-code")),a===null&&(a=B(o,"preload-data")),t===null&&(t=B(o,"keepfocus")),n===null&&(n=B(o,"noscroll")),i===null&&(i=B(o,"reload")),s===null&&(s=B(o,"replacestate")),o=Xe(o);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Be[r??"off"],preload_data:Be[a??"off"],keepfocus:c(t),noscroll:c(n),reload:c(i),replace_state:c(s)}}function Ke(e){const t=Ee(e);let n=!0;function r(){n=!0,t.update(s=>s)}function a(s){n=!1,t.set(s)}function i(s){let o;return t.subscribe(c=>{(o===void 0||n&&c!==o)&&s(o=c)})}return{notify:r,set:a,subscribe:i}}const Ze={v:()=>{}};function $t(){const{set:e,subscribe:t}=Ee(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${It}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const s=(await a.json()).version!==Pt;return s&&(e(!0),Ze.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:t,check:r}}function fe(e,t,n){return e.origin!==ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function sn(e){}const et=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...et];const Ct=new Set([...et]);[...Ct];function jt(e){return e.filter(t=>t!=null)}function Te(e){return e instanceof Re||e instanceof Le?e.status:500}function Nt(e){return e instanceof Le?e.text:"Internal Error"}let k,Y,me;const qt=De.toString().includes("$$")||/function \w+\(\) \{\}/.test(De.toString());qt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},Y={current:null},me={current:!1}):(k=new class{#e=U({});get data(){return A(this.#e)}set data(t){T(this.#e,t)}#t=U(null);get form(){return A(this.#t)}set form(t){T(this.#t,t)}#n=U(null);get error(){return A(this.#n)}set error(t){T(this.#n,t)}#r=U({});get params(){return A(this.#r)}set params(t){T(this.#r,t)}#a=U({id:null});get route(){return A(this.#a)}set route(t){T(this.#a,t)}#o=U({});get state(){return A(this.#o)}set state(t){T(this.#o,t)}#s=U(-1);get status(){return A(this.#s)}set status(t){T(this.#s,t)}#i=U(new URL("https://example.com"));get url(){return A(this.#i)}set url(t){T(this.#i,t)}},Y=new class{#e=U(null);get current(){return A(this.#e)}set current(t){T(this.#e,t)}},me=new class{#e=U(!1);get current(){return A(this.#e)}set current(t){T(this.#e,t)}},Ze.v=()=>me.current=!0);function Dt(e){Object.assign(k,e)}const Vt=new Set(["icon","shortcut icon","apple-touch-icon"]),C=We(He)??{},H=We(Ye)??{},$={url:Ke({}),page:Ke({}),navigating:Ee(null),updated:$t()};function Ie(e){C[e]=q()}function Bt(e,t){let n=e+1;for(;C[n];)delete C[n],n+=1;for(n=t+1;H[n];)delete H[n],n+=1}function J(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function tt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(x||"/");e&&await e.update()}}function ze(){}let Pe,ye,re,I,be,y;const ae=[],oe=[];let L=null;function ke(){L?.fork?.then(e=>e?.discard()),L=null}const ee=new Map,nt=new Set,Kt=new Set,M=new Set;let _={branch:[],error:null,url:null},rt=!1,se=!1,Fe=!0,X=!1,F=!1,at=!1,Oe=!1,ot,v,R,N;const ie=new Set,Ge=new Map;async function fn(e,t,n){globalThis.__sveltekit_tx1caf?.data&&globalThis.__sveltekit_tx1caf.data,document.URL!==location.href&&(location.href=location.href),y=e,await e.hooks.init?.(),Pe=Tt(e),I=document.documentElement,be=t,ye=e.nodes[0],re=e.nodes[1],ye(),re(),v=history.state?.[K],R=history.state?.[W],v||(v=R=Date.now(),history.replaceState({...history.state,[K]:v,[W]:R},""));const r=C[v];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await tn(be,n)):(await z({type:"enter",url:Ae(y.hash?an(new URL(location.href)):location.href),replace_state:!0}),a()),en()}function zt(){ae.length=0,Oe=!1}function st(e){oe.some(t=>t?.snapshot)&&(H[e]=oe.map(t=>t?.snapshot?.capture()))}function it(e){H[e]?.forEach((t,n)=>{oe[n]?.snapshot?.restore(t)})}function Me(){Ie(v),Ve(He,C),st(R),Ve(Ye,H)}async function ct(e,t,n,r){let a;t.invalidateAll&&ke(),await z({type:"goto",url:Ae(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Oe=!0,a=[...Ge.keys()]),t.invalidate&&t.invalidate.forEach(Zt)}}),t.invalidateAll&&te().then(te).then(()=>{Ge.forEach(({resource:i},s)=>{a?.includes(s)&&i.refresh?.()})})}async function Ft(e){if(e.id!==L?.id){ke();const t={};ie.add(t),L={id:e.id,token:t,promise:ut({...e,preload:t}).then(n=>(ie.delete(t),n.type==="loaded"&&n.state.error&&ke(),n)),fork:null}}return L.promise}async function we(e){const t=(await de(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function lt(e,t,n){_=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(k,e.props.page),ot=new y.root({target:t,props:{...e.props,stores:$,components:oe},hydrate:n,sync:!1}),await Promise.resolve(),it(R),n){const a={from:null,to:{params:_.params,route:{id:_.route?.id??null},url:new URL(location.href),scroll:C[v]??q()},willUnload:!1,type:"enter",complete:Promise.resolve()};M.forEach(i=>i(a))}se=!0}function ce({url:e,params:t,branch:n,status:r,error:a,route:i,form:s}){let o="never";if(x&&(e.pathname===x||e.pathname===x+"/"))o="always";else for(const u of n)u?.slash!==void 0&&(o=u.slash);e.pathname=mt(e.pathname,o),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:i},props:{constructors:jt(n).map(u=>u.node.component),page:qe(k)}};s!==void 0&&(c.props.form=s);let l={},f=!k,h=0;for(let u=0;u<Math.max(n.length,_.branch.length);u+=1){const p=n[u],m=_.branch[u];p?.data!==m?.data&&(f=!0),p&&(l={...l,...p.data},f&&(c.props[`data_${h}`]=l),h+=1)}return(!_.url||e.href!==_.url.href||_.error!==a||s!==void 0&&s!==k.form||f)&&(c.props.page={error:a,params:t,route:{id:i?.id??null},state:{},status:r,url:new URL(e),form:s??null,data:f?l:k.data}),c}async function $e({loader:e,parent:t,url:n,params:r,route:a,server_data_node:i}){let s=null;const o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},c=await e();return{node:c,loader:e,server:i,universal:c.universal?.load?{type:"data",data:s,uses:o}:null,data:s??i?.data??null,slash:c.universal?.trailingSlash??i?.slash}}function Gt(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const i=se?Et(r,a.href,t):St(r,t);return{resolved:a,promise:i}}function Mt(e,t,n,r,a,i){if(Oe)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const s of a.search_params)if(r.has(s))return!0;for(const s of a.params)if(i[s]!==_.params[s])return!0;for(const s of a.dependencies)if(ae.some(o=>o(new URL(s))))return!0;return!1}function Ce(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Wt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(s=>i.includes(s))&&i.every(s=>a.includes(s))&&n.delete(r)}return n}function Yt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:qe(k),constructors:[]}}}async function ut({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if(L?.id===e)return ie.delete(L.token),L.promise;const{errors:s,layouts:o,leaf:c}=a,l=[...o,c];s.forEach(g=>g?.().catch(()=>{})),l.forEach(g=>g?.[1]().catch(()=>{}));const f=_.url?e!==le(_.url):!1,h=_.route?a.id!==_.route.id:!1,w=Wt(_.url,n);let u=!1;const p=l.map(async(g,d)=>{if(!g)return;const S=_.branch[d];return g[1]===S?.loader&&!Mt(u,h,f,w,S.universal?.uses,r)?S:(u=!0,$e({loader:g[1],url:n,params:r,route:a,parent:async()=>{const P={};for(let O=0;O<d;O+=1)Object.assign(P,(await p[O])?.data);return P},server_data_node:Ce(g[0]?{type:"skip"}:null,g[0]?S?.server:void 0)}))});for(const g of p)g.catch(()=>{});const m=[];for(let g=0;g<l.length;g+=1)if(l[g])try{m.push(await p[g])}catch(d){if(d instanceof xe)return{type:"redirect",location:d.location};if(ie.has(i))return Yt({error:await Q(d,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let S=Te(d),E;if(d instanceof Re)E=d.body;else{if(await $.updated.check())return await tt(),await J(n);E=await Q(d,{params:r,url:n,route:{id:a.id}})}const P=await Ht(g,m,s);return P?ce({url:n,params:r,branch:m.slice(0,P.idx).concat(P.node),status:S,error:E,route:a}):await dt(n,{id:a.id},E,S)}else m.push(void 0);return ce({url:n,params:r,branch:m,status:200,error:null,route:a,form:t?void 0:null})}async function Ht(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function je({status:e,error:t,url:n,route:r}){const a={};let i=null;try{const s=await $e({loader:ye,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Ce(i)}),o={node:await re(),loader:re,universal:null,server:null,data:null};return ce({url:n,params:a,branch:[s,o],status:e,error:t,route:null})}catch(s){if(s instanceof xe)return ct(new URL(s.location,location.href),{},0);throw s}}async function Jt(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await y.hooks.reroute({url:new URL(e),fetch:async(i,s)=>Gt(i,s,e).promise})??e;if(typeof a=="string"){const i=new URL(e);y.hash?i.hash=a:i.pathname=a,a=i}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function de(e,t){if(e&&!fe(e,x,y.hash)){const n=await Jt(e);if(!n)return;const r=Xt(n);for(const a of Pe){const i=a.exec(r);if(i)return{id:le(e),invalidating:t,route:a,params:vt(i),url:e}}}}function Xt(e){return wt(y.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(x.length))||"/"}function le(e){return(y.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ft({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let s=!1;const o=Ne(_,n,e,t,i??null);r!==void 0&&(o.navigation.delta=r),a!==void 0&&(o.navigation.event=a);const c={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return X||nt.forEach(l=>l(c)),s?null:o}async function z({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:s={},redirect_count:o=0,nav_token:c={},accept:l=ze,block:f=ze,event:h}){const w=N;N=c;const u=await de(t,!1),p=e==="enter"?Ne(_,u,t,e):ft({url:t,type:e,delta:n?.delta,intent:u,scroll:n?.scroll,event:h});if(!p){f(),N===c&&(N=w);return}const m=v,g=R;l(),X=!0,se&&p.navigation.type!=="enter"&&$.navigating.set(Y.current=p.navigation);let d=u&&await ut(u);if(!d){if(fe(t,x,y.hash))return await J(t,i);d=await dt(t,{id:null},await Q(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=u?.url||t,N!==c)return p.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(o<20){await z({type:e,url:new URL(d.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:s,redirect_count:o+1,nav_token:c}),p.fulfil(void 0);return}d=await je({status:500,error:await Q(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await $.updated.check()&&(await tt(),await J(t,i));if(zt(),Ie(m),st(g),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),s=n?n.state:s,!n){const b=i?0:1,Z={[K]:v+=b,[W]:R+=b,[Je]:s};(i?history.replaceState:history.pushState).call(history,Z,"",t),i||Bt(v,R)}const S=u&&L?.id===u.id?L.fork:null;L=null,d.props.page.state=s;let E;if(se){const b=(await Promise.all(Array.from(Kt,D=>D(p.navigation)))).filter(D=>typeof D=="function");if(b.length>0){let D=function(){b.forEach(he=>{M.delete(he)})};b.push(D),b.forEach(he=>{M.add(he)})}_=d.state,d.props.page&&(d.props.page.url=t);const Z=S&&await S;Z?E=Z.commit():(ot.$set(d.props),Dt(d.props.page),E=_t?.()),at=!0}else await lt(d,be,!1);const{activeElement:P}=document;await E,await te(),await te();let O=null;if(Fe){const b=n?n.scroll:a?q():null;b?scrollTo(b.x,b.y):(O=t.hash&&document.getElementById(ht(t)))?O.scrollIntoView():scrollTo(0,0)}const pt=document.activeElement!==P&&document.activeElement!==document.body;!r&&!pt&&rn(t,!O),Fe=!0,d.props.page&&Object.assign(k,d.props.page),X=!1,e==="popstate"&&it(R),p.fulfil(void 0),p.navigation.to&&(p.navigation.to.scroll=q()),M.forEach(b=>b(p.navigation)),$.navigating.set(Y.current=null)}async function dt(e,t,n,r,a){return e.origin===ue&&e.pathname===location.pathname&&!rt?await je({status:r,error:n,url:e,route:t}):await J(e,a)}function Qt(){let e,t={element:void 0,href:void 0},n;I.addEventListener("mousemove",o=>{const c=o.target;clearTimeout(e),e=setTimeout(()=>{i(c,j.hover)},20)});function r(o){o.defaultPrevented||i(o.composedPath()[0],j.tap)}I.addEventListener("mousedown",r),I.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const c of o)c.isIntersecting&&(we(new URL(c.target.href)),a.unobserve(c.target))},{threshold:0});async function i(o,c){const l=Qe(o,I),f=l===t.element&&l?.href===t.href&&c>=n;if(!l||f)return;const{url:h,external:w,download:u}=ve(l,x,y.hash);if(w||u)return;const p=ne(l),m=h&&le(_.url)===le(h);if(!(p.reload||m))if(c<=p.preload_data){t={element:l,href:l.href},n=j.tap;const g=await de(h,!1);if(!g)return;Ft(g)}else c<=p.preload_code&&(t={element:l,href:l.href},n=c,we(h))}function s(){a.disconnect();for(const o of I.querySelectorAll("a")){const{url:c,external:l,download:f}=ve(o,x,y.hash);if(l||f)continue;const h=ne(o);h.reload||(h.preload_code===j.viewport&&a.observe(o),h.preload_code===j.eager&&we(c))}}M.add(s),s()}function Q(e,t){if(e instanceof Re)return e.body;const n=Te(e),r=Nt(e);return y.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function dn(e,t={}){return e=new URL(Ae(e)),e.origin!==ue?Promise.reject(new Error("goto: invalid URL")):ct(e,t,0)}function Zt(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function en(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(Me(),!X){const r=Ne(_,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};nt.forEach(i=>i(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Me()}),navigator.connection?.saveData||Qt(),I.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=Qe(t.composedPath()[0],I);if(!n)return;const{url:r,external:a,target:i,download:s}=ve(n,x,y.hash);if(!r)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const o=ne(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||s)return;const[l,f]=(y.hash?r.hash.replace(/^#/,""):r.href).split("#"),h=l===ge(location);if(a||o.reload&&(!h||!f)){ft({url:r,type:"link",event:t})?X=!0:t.preventDefault();return}if(f!==void 0&&h){const[,w]=_.url.href.split("#");if(w===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const u=n.ownerDocument.getElementById(decodeURIComponent(f));u&&(u.scrollIntoView(),u.focus())}return}if(F=!0,Ie(v),e(r),!o.replace_state)return;F=!1}t.preventDefault(),await new Promise(w=>{requestAnimationFrame(()=>{setTimeout(w,0)}),setTimeout(w,100)}),await z({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href,event:t})}),I.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const s=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(fe(s,x,!1))return;const o=t.target,c=ne(o);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(o,r);s.search=new URLSearchParams(l).toString(),z({type:"form",url:s,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??s.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Se){if(t.state?.[K]){const n=t.state[K];if(N={},n===v)return;const r=C[n],a=t.state[Je]??{},i=new URL(t.state[Ot]??location.href),s=t.state[W],o=_.url?ge(location)===ge(_.url):!1;if(s===R&&(at||o)){a!==k.state&&(k.state=a),e(i),C[v]=q(),r&&scrollTo(r.x,r.y),v=n;return}const l=n-v;await z({type:"popstate",url:i,popped:{state:a,scroll:r,delta:l},accept:()=>{v=n,R=s},block:()=>{history.go(-l)},nav_token:N,event:t})}else if(!F){const n=new URL(location.href);e(n),y.hash&&location.reload()}}}),addEventListener("hashchange",()=>{F&&(F=!1,history.replaceState({...history.state,[K]:++v,[W]:R},"",location.href))});for(const t of document.querySelectorAll("link"))Vt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&$.navigating.set(Y.current=null)});function e(t){_.url=k.url=t,$.page.set(qe(k)),$.page.notify()}}async function tn(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:s,data:o,form:c}){rt=!0;const l=new URL(location.href);let f;({params:a={},route:i={id:null}}=await de(l,!1)||{}),f=Pe.find(({id:u})=>u===i.id);let h,w=!0;try{const u=r.map(async(m,g)=>{const d=o[g];return d?.uses&&(d.uses=nn(d.uses)),$e({loader:y.nodes[m],url:l,params:a,route:i,parent:async()=>{const S={};for(let E=0;E<g;E+=1)Object.assign(S,(await u[E]).data);return S},server_data_node:Ce(d)})}),p=await Promise.all(u);if(f){const m=f.layouts;for(let g=0;g<m.length;g++)m[g]||p.splice(g,0,void 0)}h=ce({url:l,params:a,branch:p,status:t,error:n,form:c,route:f??null})}catch(u){if(u instanceof xe){await J(new URL(u.location,location.href));return}h=await je({status:Te(u),error:await Q(u,{url:l,params:a,route:i}),url:l,route:i}),e.textContent="",w=!1}h.props.page&&(h.props.page.state={}),await lt(h,e,w)}function nn(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Se=!1;function rn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=ht(e);if(r&&document.getElementById(r)){const{x:i,y:s}=q();setTimeout(()=>{const o=history.state;Se=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(o,"",e),t&&scrollTo(i,s),Se=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let s=0;s<a.rangeCount;s+=1)i.push(a.getRangeAt(s));setTimeout(()=>{if(a.rangeCount===i.length){for(let s=0;s<a.rangeCount;s+=1){const o=i[s],c=a.getRangeAt(s);if(o.commonAncestorContainer!==c.commonAncestorContainer||o.startContainer!==c.startContainer||o.endContainer!==c.endContainer||o.startOffset!==c.startOffset||o.endOffset!==c.endOffset)return}a.removeAllRanges()}})}}}function Ne(e,t,n,r,a=null){let i,s;const o=new Promise((l,f)=>{i=l,s=f});return o.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:q()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:o},fulfil:i,reject:s}}function qe(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function an(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function ht(e){let t;if(y.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{fn as a,dn as g,sn as l,k as p,$ as s};
|
_app/immutable/chunks/DuNoPw5n.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{s as e,p as r}from"./CxPUfIb7.js";const t={get error(){return r.error},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
|
_app/immutable/entry/app.C6p-sfGp.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Bzx7-9n_.js","../chunks/BhjCC-K4.js","../chunks/BuF_Fr92.js","../chunks/BeiXdJM4.js","../chunks/DJL1CqKf.js","../chunks/CpGWp5gj.js","../chunks/DZgFau8q.js","../assets/0.AR8VGGzv.css","../nodes/1.eEgZ-VLw.js","../chunks/DuNoPw5n.js","../chunks/CxPUfIb7.js","../nodes/2.DWoSRnQ3.js","../chunks/BonO4YX-.js","../chunks/PPVm8Dsz.js","../assets/2.n8CDZ4vn.css","../nodes/3.roowJOaC.js","../chunks/Dtszv-EI.js","../chunks/iNv42bPS.js"])))=>i.map(i=>d[i]);
|
| 2 |
+
import{_ as g}from"../chunks/PPVm8Dsz.js";import{z as y,L as B,q as u,A as F,B as Y,C as H,p as J,u as K,n as N,D as Q,F as U,f as b,s as W,a as X,G as E,c as Z,r as $,t as tt,I as P}from"../chunks/BuF_Fr92.js";import{h as et,m as rt,u as st,a as _,c as O,f as C,t as at,s as nt}from"../chunks/BhjCC-K4.js";import{p as x,i as R,b as w}from"../chunks/DJL1CqKf.js";import{c as j}from"../chunks/CpGWp5gj.js";function ot(a){return class extends ct{constructor(t){super({component:a,...t})}}}class ct{#e;#t;constructor(t){var s=new Map,o=(e,r)=>{var i=H(r,!1,!1);return s.set(e,i),i};const c=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(s.get(r)??o(r,Reflect.get(e,r)))},has(e,r){return r===B?!0:(u(s.get(r)??o(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return y(s.get(r)??o(r,i),i),Reflect.set(e,r,i)}});this.#t=(t.hydrate?et:rt)(t.component,{target:t.target,anchor:t.anchor,props:c,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&F(),this.#e=c.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||Y(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(c,e)},this.#t.$destroy=()=>{st(this.#t)}}$set(t){this.#t.$set(t)}$on(t,s){this.#e[t]=this.#e[t]||[];const o=(...c)=>s.call(this,...c);return this.#e[t].push(o),()=>{this.#e[t]=this.#e[t].filter(c=>c!==o)}}$destroy(){this.#t.$destroy()}}const bt={};var it=C('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),ut=C("<!> <!>",1);function mt(a,t){J(t,!0);let s=x(t,"components",23,()=>[]),o=x(t,"data_0",3,null),c=x(t,"data_1",3,null);K(()=>t.stores.page.set(t.page)),N(()=>{t.stores,t.page,t.constructors,s(),t.form,o(),c(),t.stores.page.notify()});let e=E(!1),r=E(!1),i=E(null);Q(()=>{const n=t.stores.page.subscribe(()=>{u(e)&&(y(r,!0),U().then(()=>{y(i,document.title||"untitled page",!0)}))});return y(e,!0),n});const I=P(()=>t.constructors[1]);var A=ut(),L=b(A);{var p=n=>{const m=P(()=>t.constructors[0]);var d=O(),h=b(d);j(h,()=>u(m),(f,l)=>{w(l(f,{get data(){return o()},get form(){return t.form},get params(){return t.page.params},children:(v,ft)=>{var k=O(),G=b(k);j(G,()=>u(I),(M,q)=>{w(q(M,{get data(){return c()},get form(){return t.form},get params(){return t.page.params}}),z=>s()[1]=z,()=>s()?.[1])}),_(v,k)},$$slots:{default:!0}}),v=>s()[0]=v,()=>s()?.[0])}),_(n,d)},T=n=>{const m=P(()=>t.constructors[0]);var d=O(),h=b(d);j(h,()=>u(m),(f,l)=>{w(l(f,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),v=>s()[0]=v,()=>s()?.[0])}),_(n,d)};R(L,n=>{t.constructors[1]?n(p):n(T,-1)})}var V=W(L,2);{var S=n=>{var m=it(),d=Z(m);{var h=f=>{var l=at();tt(()=>nt(l,u(i))),_(f,l)};R(d,f=>{u(r)&&f(h)})}$(m),_(n,m)};R(V,n=>{u(e)&&n(S)})}_(a,A),X()}const yt=ot(mt),Et=[()=>g(()=>import("../nodes/0.Bzx7-9n_.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url),()=>g(()=>import("../nodes/1.eEgZ-VLw.js"),__vite__mapDeps([8,1,2,6,9,10]),import.meta.url),()=>g(()=>import("../nodes/2.DWoSRnQ3.js"),__vite__mapDeps([11,1,2,4,10,12,6,3,13,9,5,14]),import.meta.url),()=>g(()=>import("../nodes/3.roowJOaC.js"),__vite__mapDeps([15,13,1,2,4,3,12,6,9,10,16,17]),import.meta.url)],Pt=[],Ot={"/":[2],"/viewer":[3]},D={handleError:(({error:a})=>{console.error(a)}),reroute:(()=>{}),transport:{}},dt=Object.fromEntries(Object.entries(D.transport).map(([a,t])=>[a,t.decode])),xt=Object.fromEntries(Object.entries(D.transport).map(([a,t])=>[a,t.encode])),Rt=!1,wt=(a,t)=>dt[a](t);export{wt as decode,dt as decoders,Ot as dictionary,xt as encoders,Rt as hash,D as hooks,bt as matchers,Et as nodes,yt as root,Pt as server_loads};
|
_app/immutable/entry/start.Pgwzd_AB.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{l as o,a as r}from"../chunks/CxPUfIb7.js";export{o as load_css,r as start};
|
_app/immutable/nodes/1.eEgZ-VLw.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{a as h,f as c,s}from"../chunks/BhjCC-K4.js";import{i as l}from"../chunks/DZgFau8q.js";import{p as v,f as u,t as _,a as g,c as e,r as o,s as x}from"../chunks/BuF_Fr92.js";import{p}from"../chunks/DuNoPw5n.js";var d=c("<h1> </h1> <p> </p>",1);function q(m,f){v(f,!1),l();var a=d(),r=u(a),i=e(r,!0);o(r);var t=x(r,2),n=e(t,!0);o(t),_(()=>{s(i,p.status),s(n,p.error?.message)}),h(m,a),g()}export{q as component};
|
_app/immutable/nodes/2.DWoSRnQ3.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{c as V,a as l,d as Ie,s as m,t as D,b as de,f as k}from"../chunks/BhjCC-K4.js";import{f as H,p as ge,G as le,_ as De,n as _e,z as E,c as s,r as a,s as n,q as t,t as f,I as R,a as he,ac as ne}from"../chunks/BuF_Fr92.js";import{l as C,s as Q,p as ie,i as G}from"../chunks/DJL1CqKf.js";import{g as Ee}from"../chunks/CxPUfIb7.js";import{I as T,s as J,g as Fe,t as b,T as ce,B as ve,a as ue,b as P,A as Ve}from"../chunks/BonO4YX-.js";import{e as Ce,s as q,a as me,i as Qe}from"../chunks/BeiXdJM4.js";import{c as Te}from"../chunks/CpGWp5gj.js";import"../chunks/DZgFau8q.js";function fe(z,o){const p=C(o,["children","$$slots","$$events","$$legacy"]);const v=[["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M4 12v6"}],["path",{d:"M4 14h2"}],["path",{d:"M9.65 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v4"}],["circle",{cx:"4",cy:"20",r:"2"}]];T(z,Q({name:"file-key"},()=>p,{get iconNode(){return v},children:(i,y)=>{var c=V(),M=H(c);J(M,o,"default",{}),l(i,c)},$$slots:{default:!0}}))}function pe(z,o){const p=C(o,["children","$$slots","$$events","$$legacy"]);const v=[["path",{d:"M13 21h8"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}]];T(z,Q({name:"pen-line"},()=>p,{get iconNode(){return v},children:(i,y)=>{var c=V(),M=H(c);J(M,o,"default",{}),l(i,c)},$$slots:{default:!0}}))}function ye(z,o){const p=C(o,["children","$$slots","$$events","$$legacy"]);const v=[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"}]];T(z,Q({name:"scan"},()=>p,{get iconNode(){return v},children:(i,y)=>{var c=V(),M=H(c);J(M,o,"default",{}),l(i,c)},$$slots:{default:!0}}))}function xe(z,o){const p=C(o,["children","$$slots","$$events","$$legacy"]);const v=[["path",{d:"M8 19H5c-1 0-2-1-2-2V7c0-1 1-2 2-2h3"}],["path",{d:"M16 5h3c1 0 2 1 2 2v10c0 1-1 2-2 2h-3"}],["line",{x1:"12",x2:"12",y1:"4",y2:"20"}]];T(z,Q({name:"square-split-horizontal"},()=>p,{get iconNode(){return v},children:(i,y)=>{var c=V(),M=H(c);J(M,o,"default",{}),l(i,c)},$$slots:{default:!0}}))}var Je=k('<span class="text-xs text-muted-foreground/60 font-mono"> </span>'),Oe=k('<div class="h-1.5 rounded-full bg-muted overflow-hidden"><div class="h-full rounded-full bg-primary transition-all duration-500 progress-shimmer"></div></div>'),Ue=k('<div class="mt-1 h-1 rounded-full bg-muted overflow-hidden"><div class="h-full rounded-full bg-primary transition-all duration-300"></div></div>'),We=k('<p class="text-[0.65rem] text-muted-foreground/50"> </p>'),Xe=k('<p class="text-[0.65rem] text-success/70"> </p>'),Ye=k('<div><div><!></div> <div class="flex-1 min-w-0"><div class="flex items-center justify-between"><span> </span> <span class="text-[0.65rem] text-muted-foreground/60 font-mono"> </span></div> <!></div></div>'),Ze=k(`<p class="text-xs text-muted-foreground">Set your HuggingFace token in the browser console:<br/><code class="text-xs bg-muted px-1.5 py-0.5 rounded font-mono">sessionStorage.setItem('hf_token', 'hf_...')</code></p>`),et=k('<div class="rounded-xl border border-destructive/30 bg-destructive/5 p-4 space-y-2"><p class="text-sm font-medium text-destructive"> </p> <p class="text-xs text-muted-foreground break-all"> </p> <!> <!></div>'),tt=k('<div class="flex items-center justify-center gap-1 rounded-lg bg-muted/50 p-1"><button>Full (1.8 GB)</button> <button>Lite (530 MB)</button></div> <!> <p class="text-center text-[0.65rem] text-muted-foreground/50"> </p>',1),ot=k('<div class="mx-auto max-w-md space-y-6 p-8"><div class="space-y-3 text-center"><h1 class="text-3xl font-bold tracking-tight bg-gradient-to-r from-foreground to-foreground/60 bg-clip-text text-transparent"> </h1> <p class="text-sm text-muted-foreground leading-relaxed max-w-sm mx-auto"> </p></div> <div><div class="flex items-center justify-between"><h3 class="text-xs font-semibold uppercase tracking-wider text-muted-foreground"><!></h3> <!></div> <!> <div class="space-y-2"></div></div> <!></div>');function rt(z,o){ge(o,!0);let p=ie(o,"autoLoading",3,!1),v=ie(o,"error",3,null),i=le(!1),y=le(De(Fe()));const c=[{key:"layout",labelKey:"model.layout",descKey:"model.layout.desc",size:"97 MB",icon:ye},{key:"yolo",labelKey:"model.yolo",descKey:"model.yolo.desc",size:"229 MB",icon:xe},{key:"trocr-encoder",labelKey:"model.encoder",descKey:"model.encoder.desc",size:"329 MB",icon:fe},{key:"trocr-decoder",labelKey:"model.decoder",descKey:"model.decoder.desc",size:"1.2 GB",icon:pe},{key:"tokenizer",labelKey:"model.tokenizer",descKey:"model.tokenizer.desc",size:"2 MB",icon:ce}],M=[{key:"layout",labelKey:"model.layout",descKey:"model.layout.desc",size:"97 MB",icon:ye},{key:"yolo",labelKey:"model.yolo",descKey:"model.yolo.desc",size:"59 MB",icon:xe},{key:"trocr-encoder",labelKey:"model.encoder",descKey:"model.encoder.desc",size:"85 MB",icon:fe},{key:"trocr-decoder",labelKey:"model.decoder",descKey:"model.decoder.desc",size:"1.2 GB",icon:pe},{key:"tokenizer",labelKey:"model.tokenizer",descKey:"model.tokenizer.desc",size:"2 MB",icon:ce}],A=R(()=>t(y)==="int8"?M:c),O=R(()=>t(y)==="int8"?"~1.4 GB":"~1.8 GB");_e(()=>{v()&&E(i,!1)});const B=R(()=>v()?.includes("401")??!1),h=R(()=>t(i)||p()),oe=R(()=>()=>{if(o.modelsReady)return 100;if(!t(h))return 0;const r=t(A).map(e=>o.modelProgress[e.key]??0);return Math.round(r.reduce((e,d)=>e+d,0)/t(A).length)});function be(){E(i,!0),o.onDismissError?.(),o.onLoadModels()}function ke(){E(i,!0),o.onDismissError?.(),o.onLoadModels()}var U=ot(),W=s(U),X=s(W),ze=s(X,!0);a(X);var re=n(X,2),Me=s(re,!0);a(re),a(W);var F=n(W,2),Y=s(F),Z=s(Y),we=s(Z);{var Ke=r=>{var e=D();f(d=>m(e,d),[()=>b("models.ready")]),l(r,e)},$e=r=>{var e=D();f((d,u)=>m(e,`${d??""} — ${u??""}%`),[()=>b("models.downloading"),()=>t(oe)()]),l(r,e)},Be=r=>{var e=D();f(d=>m(e,d),[()=>b("models.pipeline")]),l(r,e)};G(we,r=>{o.modelsReady?r(Ke):t(h)?r($e,1):r(Be,-1)})}a(Z);var Pe=n(Z,2);{var Re=r=>{var e=Je(),d=s(e,!0);a(e),f(()=>m(d,t(O))),l(r,e)};G(Pe,r=>{t(h)&&!o.modelsReady&&r(Re)})}a(Y);var ae=n(Y,2);{var Le=r=>{var e=Oe(),d=s(e);a(e),f(u=>me(d,`width: ${u??""}%`),[()=>t(oe)()]),l(r,e)};G(ae,r=>{t(h)&&!o.modelsReady&&r(Le)})}var se=n(ae,2);Ce(se,21,()=>t(A),Qe,(r,e)=>{const d=R(()=>o.modelProgress[t(e).key]??0),u=R(()=>o.modelsReady||t(d)>=100);var w=Ye(),K=s(w),L=s(K);Te(L,()=>t(e).icon,(g,_)=>{_(g,{class:"size-3.5"})}),a(K);var S=n(K,2),$=s(S),x=s($),N=s(x,!0);a(x);var j=n(x,2),ee=s(j,!0);a(j),a($);var Se=n($,2);{var qe=g=>{var _=Ue(),I=s(_);a(_),f(()=>me(I,`width: ${t(d)??""}%`)),l(g,_)},He=g=>{var _=We(),I=s(_,!0);a(_),f(te=>m(I,te),[()=>b(t(e).descKey)]),l(g,_)},Ae=g=>{var _=Xe(),I=s(_,!0);a(_),f(te=>m(I,te),[()=>b("transcription.ready")]),l(g,_)};G(Se,g=>{t(h)&&!t(u)?g(qe):!t(h)&&!t(u)?g(He,1):g(Ae,-1)})}a(S),a(w),f(g=>{q(w,1,`flex items-center gap-3 py-1.5 ${t(u)?"opacity-60":""}`),q(K,1,`size-7 rounded-lg ${t(u)?"bg-success/10 text-success":t(h)&&t(d)>0?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"} flex items-center justify-center transition-colors`),q(x,1,`text-sm font-medium ${t(u)?"text-muted-foreground":""}`),m(N,g),m(ee,t(e).size)},[()=>b(t(e).labelKey)]),l(r,w)}),a(se),a(F);var Ne=n(F,2);{var je=r=>{var e=et(),d=s(e),u=s(d,!0);a(d);var w=n(d,2),K=s(w,!0);a(w);var L=n(w,2);{var S=x=>{var N=Ze();l(x,N)};G(L,x=>{t(B)&&x(S)})}var $=n(L,2);ve($,{variant:"outline",size:"sm",onclick:ke,children:(x,N)=>{ne();var j=D();f(ee=>m(j,ee),[()=>b("models.retry")]),l(x,j)},$$slots:{default:!0}}),a(e),f(x=>{m(u,x),m(K,v())},[()=>b("models.failed")]),l(r,e)},Ge=r=>{var e=tt(),d=H(e),u=s(d),w=n(u,2);a(d);var K=n(d,2);ve(K,{class:"w-full h-11 text-sm font-medium btn-glow rounded-xl",onclick:be,children:($,x)=>{ne();var N=D();f(j=>m(N,j),[()=>b("models.download")]),l($,N)},$$slots:{default:!0}});var L=n(K,2),S=s(L,!0);a(L),f($=>{q(u,1,`flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors ${t(y)==="fp32"?"bg-card text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`),q(w,1,`flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors ${t(y)==="int8"?"bg-card text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`),m(S,$)},[()=>b("models.cached")]),de("click",u,()=>{E(y,"fp32"),ue("fp32")}),de("click",w,()=>{E(y,"int8"),ue("int8")}),l(r,e)};G(Ne,r=>{v()?r(je):!t(i)&&!o.modelsReady&&!p()&&r(Ge,1)})}a(U),f((r,e)=>{m(ze,r),m(Me,e),q(F,1,`relative rounded-xl bg-card/50 backdrop-blur-sm p-5 space-y-4 ${t(h)&&!o.modelsReady?"border-glow":"border border-border/50"}`,"svelte-2lzqss")},[()=>b("app.title"),()=>b("app.description")]),l(z,U),he()}Ie(["click"]);var at=k('<p class="text-center text-muted-foreground">Checking cached models...</p>'),st=k('<!> <div class="relative flex flex-1 items-center justify-center overflow-hidden"><video class="absolute inset-0 w-full h-full object-cover opacity-15 pointer-events-none" src="/flying-papers.mp4" loop="" autoplay="" playsinline=""></video> <div class="relative w-full max-w-lg space-y-6 p-8"><!></div></div>',3);function ft(z,o){ge(o,!0),_e(()=>{P.htr.modelsReady&&Ee("/viewer")});var p=st(),v=H(p);Ve(v,{});var i=n(v,2),y=s(i);y.muted=!0;var c=n(y,2),M=s(c);{var A=B=>{var h=at();l(B,h)},O=B=>{{let h=R(()=>P.htr.stage==="loading_models");rt(B,{get modelProgress(){return P.htr.modelProgress},onLoadModels:()=>P.htr.loadModels(),get modelsReady(){return P.htr.modelsReady},get autoLoading(){return t(h)},get error(){return P.htr.error},onDismissError:()=>P.htr.error=null})}};G(M,B=>{P.htr.cacheChecked?B(O,-1):B(A)})}a(c),a(i),l(z,p),he()}export{ft as component};
|
_app/immutable/nodes/3.roowJOaC.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{_ as en}from"../chunks/PPVm8Dsz.js";import{c as Re,a as h,s as A,f as w,d as Ot,b as U,e as It,t as tn}from"../chunks/BhjCC-K4.js";import{T as nn,o as rn,U as an,w as on,aR as sn,f as J,p as Tt,G as ne,_ as _t,n as mt,D as Kt,z as k,q as e,c,s as u,r as s,t as X,a as Et,I as Q,aS as xt,ac as Ut,F as ln}from"../chunks/BuF_Fr92.js";import{l as Ye,s as Ge,p as Gt,b as Dt,i as D}from"../chunks/DJL1CqKf.js";import{s as We,a as Lt,e as ft,i as ht,r as yt,b as ut,c as cn}from"../chunks/BeiXdJM4.js";import{I as qe,s as He,t as at,c as Pt,d as dn,B as un,e as vn,b as f,A as fn,T as hn}from"../chunks/BonO4YX-.js";import{g as mn}from"../chunks/CxPUfIb7.js";import{resolveVolume as gn}from"../chunks/Dtszv-EI.js";import{searchCatalog as pn,BACKEND_ENABLED as bn,fetchTranscriptions as xn}from"../chunks/iNv42bPS.js";import"../chunks/DZgFau8q.js";function _n(ee,n,I){nn(()=>{var L=rn(()=>n(ee,I?.())||{});if(I&&L?.update){var m=!1,p={};an(()=>{var y=I();on(y),m&&sn(p,y)&&(p=y,L.update(y))}),m=!0}if(L?.destroy)return()=>L.destroy()})}function yn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"m15 18-6-6 6-6"}]];qe(ee,Ge({name:"chevron-left"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function wn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"m9 18 6-6-6-6"}]];qe(ee,Ge({name:"chevron-right"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function kn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]];qe(ee,Ge({name:"info"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Mn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M15 3h6v6"}],["path",{d:"m21 3-7 7"}],["path",{d:"m3 21 7-7"}],["path",{d:"M9 21H3v-6"}]];qe(ee,Ge({name:"maximize-2"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function In(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3"}]];qe(ee,Ge({name:"maximize"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Ln(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M5 12h14"}]];qe(ee,Ge({name:"minus"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Pn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18"}],["path",{d:"m2.3 2.3 7.286 7.286"}],["circle",{cx:"11",cy:"11",r:"2"}]];qe(ee,Ge({name:"pen-tool"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Zt(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]];qe(ee,Ge({name:"play"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function $n(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];qe(ee,Ge({name:"plus"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Sn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1"}]];qe(ee,Ge({name:"printer"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Rn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]];qe(ee,Ge({name:"rotate-ccw"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function Cn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["path",{d:"M5 3a2 2 0 0 0-2 2"}],["path",{d:"M19 3a2 2 0 0 1 2 2"}],["path",{d:"M21 19a2 2 0 0 1-2 2"}],["path",{d:"M5 21a2 2 0 0 1-2-2"}],["path",{d:"M9 3h1"}],["path",{d:"M9 21h1"}],["path",{d:"M14 3h1"}],["path",{d:"M14 21h1"}],["path",{d:"M3 9v1"}],["path",{d:"M21 9v1"}],["path",{d:"M3 14v1"}],["path",{d:"M21 14v1"}]];qe(ee,Ge({name:"square-dashed"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}function zn(ee,n){const I=Ye(n,["children","$$slots","$$events","$$legacy"]);const L=[["circle",{cx:"12",cy:"12",r:"4"}],["path",{d:"M12 3v1"}],["path",{d:"M12 20v1"}],["path",{d:"M3 12h1"}],["path",{d:"M20 12h1"}],["path",{d:"m18.364 5.636-.707.707"}],["path",{d:"m6.343 17.657-.707.707"}],["path",{d:"m5.636 5.636.707.707"}],["path",{d:"m17.657 17.657.707.707"}]];qe(ee,Ge({name:"sun-medium"},()=>I,{get iconNode(){return L},children:(m,p)=>{var y=Re(),R=J(y);He(R,n,"default",{}),h(m,y)},$$slots:{default:!0}}))}const qt=.1,Wt=10,Dn=.25,Ht=.92;class Tn{canvas;ctx;transform={x:0,y:0,scale:1};targetScale=1;img=null;options;animId=0;isDragging=!1;dragStart={x:0,y:0};dragTransformStart={x:0,y:0};velocity={x:0,y:0};lastPointer={x:0,y:0,time:0};observer=null;visible=!0;resizeObserver=null;panEnabled=!0;constructor(n,I={}){this.canvas=n,this.ctx=n.getContext("2d"),this.options=I,n.addEventListener("pointerdown",this.onPointerDown),n.addEventListener("pointermove",this.onPointerMove),n.addEventListener("pointerup",this.onPointerUp),n.addEventListener("pointercancel",this.onPointerUp),n.addEventListener("wheel",this.onWheel,{passive:!1}),this.observer=new IntersectionObserver(([L])=>{this.visible=L.isIntersecting,this.visible&&this.scheduleRender()}),this.observer.observe(n),this.resizeObserver=new ResizeObserver(()=>this.render()),this.resizeObserver.observe(n),this.scheduleRender()}setImage(n){this.img=n,this.fitToCanvas(),this.render()}fitToCanvas(){if(!this.img)return;const n=this.canvas.getBoundingClientRect(),I=8,L=(n.width-I*2)/this.img.naturalWidth,m=(n.height-I*2)/this.img.naturalHeight,p=Math.min(L,m);this.transform.scale=p,this.targetScale=p,this.transform.x=(n.width-this.img.naturalWidth*p)/2,this.transform.y=(n.height-this.img.naturalHeight*p)/2}fitToRect(n,I,L,m){const p=this.canvas.getBoundingClientRect(),y=40,R=(p.width-y*2)/L,ve=(p.height-y*2)/m,le=Math.min(R,ve,Wt);this.transform.scale=le,this.targetScale=le,this.transform.x=(p.width-L*le)/2-n*le,this.transform.y=(p.height-m*le)/2-I*le}zoomBy(n){const I=this.canvas.getBoundingClientRect(),L=I.width/2,m=I.height/2,p=Math.min(Wt,Math.max(qt,this.transform.scale*n)),y=p/this.transform.scale;this.transform.x=L-y*(L-this.transform.x),this.transform.y=m-y*(m-this.transform.y),this.transform.scale=p,this.targetScale=p}render(){this.scheduleRender()}destroy(){cancelAnimationFrame(this.animId),this.canvas.removeEventListener("pointerdown",this.onPointerDown),this.canvas.removeEventListener("pointermove",this.onPointerMove),this.canvas.removeEventListener("pointerup",this.onPointerUp),this.canvas.removeEventListener("pointercancel",this.onPointerUp),this.canvas.removeEventListener("wheel",this.onWheel),this.observer?.disconnect(),this.resizeObserver?.disconnect()}scheduleRender(){cancelAnimationFrame(this.animId),this.animId=requestAnimationFrame(()=>this.draw())}draw(){if(!this.visible)return;const n=window.devicePixelRatio||1,I=this.canvas.getBoundingClientRect();this.canvas.width=I.width*n,this.canvas.height=I.height*n;const L=this.ctx;L.setTransform(n,0,0,n,0,0),L.clearRect(0,0,I.width,I.height);const m=this.targetScale-this.transform.scale;Math.abs(m)>.001&&(this.transform.scale+=m*Dn,this.scheduleRender()),(Math.abs(this.velocity.x)>.5||Math.abs(this.velocity.y)>.5)&&(this.transform.x+=this.velocity.x,this.transform.y+=this.velocity.y,this.velocity.x*=Ht,this.velocity.y*=Ht,this.scheduleRender()),L.save(),L.translate(this.transform.x,this.transform.y),L.scale(this.transform.scale,this.transform.scale),this.img&&L.drawImage(this.img,0,0),this.options.onAfterDraw?.(L,this.transform),L.restore()}onPointerDown=n=>{this.panEnabled&&(this.isDragging=!0,this.velocity={x:0,y:0},this.dragStart={x:n.clientX,y:n.clientY},this.dragTransformStart={x:this.transform.x,y:this.transform.y},this.lastPointer={x:n.clientX,y:n.clientY,time:Date.now()},this.canvas.setPointerCapture(n.pointerId))};onPointerMove=n=>{if(!this.isDragging||!this.panEnabled)return;const I=n.clientX-this.dragStart.x,L=n.clientY-this.dragStart.y;this.transform.x=this.dragTransformStart.x+I,this.transform.y=this.dragTransformStart.y+L;const m=Date.now(),p=m-this.lastPointer.time;p>0&&(this.velocity.x=(n.clientX-this.lastPointer.x)*(16/p),this.velocity.y=(n.clientY-this.lastPointer.y)*(16/p)),this.lastPointer={x:n.clientX,y:n.clientY,time:m},this.scheduleRender()};onPointerUp=n=>{this.isDragging=!1,this.canvas.releasePointerCapture(n.pointerId),this.scheduleRender()};screenToImage(n,I){const L=this.canvas.getBoundingClientRect(),m=n-L.left,p=I-L.top;return{x:(m-this.transform.x)/this.transform.scale,y:(p-this.transform.y)/this.transform.scale}}onWheel=n=>{n.preventDefault();let I=-n.deltaY;n.deltaMode===1&&(I*=16);const L=Math.exp(I*.003),m=Math.min(Wt,Math.max(qt,this.targetScale*L)),p=this.canvas.getBoundingClientRect(),y=n.clientX-p.left,R=n.clientY-p.top,ve=m/this.transform.scale;this.transform.x=y-(y-this.transform.x)*ve,this.transform.y=R-(R-this.transform.y)*ve,this.targetScale=m,this.transform.scale=m,this.scheduleRender()}}var En=w('<div class="absolute inset-0 flex flex-col items-center justify-center gap-4 bg-black/60 backdrop-blur-md pointer-events-none"><div class="loader-premium"><div class="ring ring-lg ring-light"></div></div> <p class="text-sm text-white font-medium"> </p></div>'),Nn=w('<div class="absolute inset-0 flex items-center justify-center pointer-events-none"><div class="rounded-xl bg-card/90 backdrop-blur-lg border border-border/50 shadow-xl p-5"><div class="loader-premium"><div class="ring"></div></div></div></div>'),An=w('<div class="relative h-full w-full"><canvas></canvas> <!> <!></div>');function Bn(ee,n){Tt(n,!0);let I=Gt(n,"showBoxes",3,!0),L=Gt(n,"imageFilter",3,""),m,p,y=null;function R(){p?.zoomBy(1.4),p?.render()}function ve(){p?.zoomBy(1/1.4),p?.render()}function le(){p?.fitToCanvas(),p?.render()}function Ee(t,b,T,o){p&&(p.fitToRect(t,b,T,o),p.render())}function ke(t){if(!p||t.length===0)return;const b=new Set(t);let T=1/0,o=1/0,r=-1/0,v=-1/0;for(const C of n.lines){if(!b.has(C.id))continue;const M=C.bbox;T=Math.min(T,M.x),o=Math.min(o,M.y),r=Math.max(r,M.x+M.w),v=Math.max(v,M.y+M.h)}T!==1/0&&(p.fitToRect(T,o,r-T,v-o),p.render())}let ue=ne(!1),ce=ne(_t({x:0,y:0})),Me=ne(_t({x:0,y:0})),P=ne(_t(new Map));function ot(t){t?e(P).delete(t):k(P,new Map,!0),p?.render()}function Te(t,b,T){let o=!1;for(let r=0,v=T.length-1;r<T.length;v=r++){const C=T[r].x,M=T[r].y,N=T[v].x,E=T[v].y;M>b!=E>b&&t<(N-C)*(b-M)/(E-M)+C&&(o=!o)}return o}function _e(t,b){if(!p||n.lines.length===0)return-1;const T=p.screenToImage(t,b);for(const o of n.lines){const r=o.bbox.polygon;if(r&&r.length>=3){if(Te(T.x,T.y,r))return o.id}else{const v=o.bbox;if(T.x>=v.x&&T.x<=v.x+v.w&&T.y>=v.y&&T.y<=v.y+v.h)return o.id}}return-1}function se(t,b,T,o){const r=Math.min(t,T),v=Math.max(t,T),C=Math.min(b,o),M=Math.max(b,o),N=[];for(const E of n.lines){const g=E.bbox,Y=g.x+g.w/2,j=g.y+g.h/2;Y>=r&&Y<=v&&j>=C&&j<=M&&N.push(E.id)}return N}let ge={x:0,y:0};mt(()=>{p&&(p.panEnabled=!n.selectMode)});function Pe(t){if(ge={x:t.clientX,y:t.clientY},n.selectMode){t.stopImmediatePropagation(),k(ue,!0);const b=p.screenToImage(t.clientX,t.clientY);k(ce,{...b},!0),k(Me,{...b},!0),m.setPointerCapture(t.pointerId)}}function ye(t){if(e(ue)){k(Me,p.screenToImage(t.clientX,t.clientY),!0),p.render();return}const b=_e(t.clientX,t.clientY);if(n.onHoverLine(b),n.showTextOverlay)m.title="";else{const T=b>=0?n.lines.find(o=>o.id===b):null;m.title=T?.complete?T.text:""}}function re(t){if(e(ue)){k(ue,!1),m.releasePointerCapture(t.pointerId);const o=se(e(ce).x,e(ce).y,e(Me).x,e(Me).y);if(o.length>0)n.onMarqueeSelect(o);else{const r=Math.min(e(ce).x,e(Me).x),v=Math.min(e(ce).y,e(Me).y),C=Math.abs(e(Me).x-e(ce).x),M=Math.abs(e(Me).y-e(ce).y);if(C>10&&M>10){const N=n.onRedetectRegion(r,v,C,M);e(P).set(N,{x:r,y:v,w:C,h:M}),k(P,new Map(e(P)),!0),p?.render()}}p.render();return}const b=t.clientX-ge.x,T=t.clientY-ge.y;if(b*b+T*T<25){const o=_e(t.clientX,t.clientY);o>=0?n.selectMode?n.onSelectLine(o,t.ctrlKey||t.metaKey):ke([o]):n.selectMode&&n.onSelectLine(-1,!1)}}function Fe(t){_e(t.clientX,t.clientY)<0&&(p.fitToCanvas(),p.render())}function Qe(){n.onHoverLine(-1)}const Oe=["#8b5cf6","#06b6d4","#f59e0b","#ec4899","#10b981","#f97316"];function Je(t){for(let b=0;b<n.groups.length;b++)if(n.groups[b].lineIds.includes(t))return Oe[b%Oe.length];return null}function Ve(t,b){const T=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return`rgba(${T}, ${o}, ${r}, ${b})`}Kt(()=>(p=new Tn(m,{onAfterDraw:(t,b)=>{if(!y)return;for(const r of n.lines){if(!I()&&!n.showTextOverlay)continue;const v=r.id===n.currentLine,C=r.id===n.hoveredLine,M=n.selectedLines.has(r.id),N=Je(r.id),E=v||C;if(I()){M?(t.strokeStyle="#facc15",t.lineWidth=3/b.scale,t.fillStyle="rgba(250, 204, 21, 0.08)"):E?(t.strokeStyle="#ff6b00",t.lineWidth=3/b.scale,t.fillStyle="rgba(255, 107, 0, 0.05)"):N?(t.strokeStyle=N,t.lineWidth=2/b.scale,t.fillStyle="transparent"):(t.strokeStyle=r.complete?"#22c55e":"#3b82f6",t.lineWidth=1.5/b.scale,t.fillStyle="transparent"),t.beginPath();const g=r.bbox.polygon;if(g&&g.length>=3){t.moveTo(g[0].x,g[0].y);for(let Y=1;Y<g.length;Y++)t.lineTo(g[Y].x,g[Y].y);t.closePath()}else t.rect(r.bbox.x,r.bbox.y,r.bbox.w,r.bbox.h);if(t.fill(),t.stroke(),N&&!M&&!E){const Y=r.bbox,j=Y.x-6/b.scale,i=Y.y+Y.h/2;t.fillStyle=N,t.beginPath(),t.arc(j,i,3/b.scale,0,Math.PI*2),t.fill()}}if(n.showTextOverlay){const g=r.bbox,Y=r.id===n.hoveredLine;if(r.complete){if(r.text){const j=n.hoveredLine>=0&&!Y,i=g.h*.15;let l=g.h*.75;t.font=`500 ${l}px system-ui, sans-serif`;let a=t.measureText(r.text).width;a+i*2>g.w&&(l*=(g.w-i*2)/a,t.font=`500 ${l}px system-ui, sans-serif`,a=t.measureText(r.text).width),t.textAlign="left",t.textBaseline="middle";const d=Math.max(g.w,a+i*2);t.fillStyle=j?"rgba(0, 0, 0, 0.15)":"rgba(0, 0, 0, 0.7)",t.fillRect(g.x,g.y,d,g.h),t.fillStyle=j?"rgba(255, 255, 255, 0.12)":"#fff",t.fillText(r.text,g.x+i,g.y+g.h*.55)}}else{const j=performance.now()/1e3,i=g.h*.15,l=N||"#3b82f6",a=parseInt(l.slice(1,3),16),d=parseInt(l.slice(3,5),16),x=parseInt(l.slice(5,7),16),G=Math.min(a+90,255),_=Math.min(d+90,255),S=Math.min(x+90,255);if(r.text){let $=g.h*.75;t.font=`500 ${$}px system-ui, sans-serif`;let q=t.measureText(r.text).width;q+i*2>g.w&&($*=(g.w-i*2)/q,t.font=`500 ${$}px system-ui, sans-serif`,q=t.measureText(r.text).width);const de=Math.max(g.w,q+i*2);t.fillStyle="rgba(0, 0, 0, 0.6)",t.beginPath();const Le=Math.min(g.h*.15,4/b.scale);t.roundRect(g.x,g.y,de,g.h,Le),t.fill();const H=g.x+(j*80+r.id*50)%(de+60)-30,F=t.createLinearGradient(H-30,0,H+30,0);F.addColorStop(0,`rgba(${a}, ${d}, ${x}, 0)`),F.addColorStop(.5,`rgba(${G}, ${_}, ${S}, 0.12)`),F.addColorStop(1,`rgba(${a}, ${d}, ${x}, 0)`),t.fillStyle=F,t.fillRect(g.x,g.y,de,g.h),t.textAlign="left",t.textBaseline="middle",t.fillStyle=`rgba(${G}, ${_}, ${S}, 0.95)`,t.fillText(r.text,g.x+i,g.y+g.h*.55);const K=Math.min(1,r.text.length/40),me=de*K,pe=t.createLinearGradient(g.x+me-8/b.scale,0,g.x+me,0);pe.addColorStop(0,`rgba(${G}, ${_}, ${S}, 0)`),pe.addColorStop(1,`rgba(${G}, ${_}, ${S}, 0.8)`),t.fillStyle=pe,t.fillRect(g.x,g.y+g.h-2/b.scale,me,2/b.scale),t.fillStyle=`rgba(${a}, ${d}, ${x}, 0.3)`,t.fillRect(g.x,g.y+g.h-1.5/b.scale,me,1.5/b.scale)}else{const $=.04+.03*Math.sin(j*3+r.id);t.fillStyle=`rgba(${a}, ${d}, ${x}, ${$})`,t.fillRect(g.x,g.y,g.w,g.h)}}}else if(!r.complete&&!M&&!E){const g=r.bbox,Y=performance.now()/1e3,j=.06+.04*Math.sin(Y*3+r.id);t.fillStyle=`rgba(59, 130, 246, ${j})`,t.fillRect(g.x,g.y,g.w,g.h)}}for(let r=0;r<n.groups.length;r++){const v=n.groups[r];if(!v.rect)continue;const C=Oe[r%Oe.length],{x:M,y:N,w:E,h:g}=v.rect;t.strokeStyle=C,t.lineWidth=2/b.scale,t.setLineDash([6/b.scale,4/b.scale]),t.fillStyle=Ve(C,.04),t.beginPath(),t.rect(M,N,E,g),t.fill(),t.stroke(),t.setLineDash([]);const Y=Math.max(12,Math.min(24,16/b.scale));t.font=`600 ${Y}px system-ui, sans-serif`,t.textAlign="left",t.textBaseline="top";const j=v.name,i=t.measureText(j),l=5/b.scale,a=3/b.scale,d=M+l,x=N+a;t.fillStyle=Ve(C,.85),t.beginPath(),t.roundRect(d-l,x-a,i.width+l*2,Y+a*2,3/b.scale),t.fill(),t.fillStyle="#fff",t.fillText(j,d,x)}if(e(ue)){const r=Math.min(e(ce).x,e(Me).x),v=Math.min(e(ce).y,e(Me).y),C=Math.abs(e(Me).x-e(ce).x),M=Math.abs(e(Me).y-e(ce).y);t.strokeStyle="#facc15",t.lineWidth=2/b.scale,t.setLineDash([6/b.scale,4/b.scale]),t.fillStyle="rgba(250, 204, 21, 0.06)",t.beginPath(),t.rect(r,v,C,M),t.fill(),t.stroke(),t.setLineDash([])}const T=performance.now();let o=0;for(const[r,v]of e(P)){const{x:C,y:M,w:N,h:E}=v,g=n.groups.findIndex(H=>H.regionId===r),Y=g>=0?Oe[g%Oe.length]:Oe[o%Oe.length];o++;const j=parseInt(Y.slice(1,3),16),i=parseInt(Y.slice(3,5),16),l=parseInt(Y.slice(5,7),16),a=b.scale,d=Math.min(E*.05,6/a);t.fillStyle="rgba(15, 23, 42, 0.15)",t.beginPath(),t.roundRect(C,M,N,E,d),t.fill();const x=10/a,G=T/80%(x*2);t.setLineDash([x,x]),t.lineDashOffset=-G,t.strokeStyle=`rgba(${j}, ${i}, ${l}, 0.6)`,t.lineWidth=1.5/a,t.beginPath(),t.roundRect(C,M,N,E,d),t.stroke(),t.setLineDash([]),t.lineDashOffset=0;const _=C+N/2,S=M+E/2,$=Math.min(N,E,50/a)*.2,q=T/500%(Math.PI*2);t.beginPath(),t.arc(_,S,$+2/a,q,q+Math.PI*1.2),t.strokeStyle=`rgba(${j}, ${i}, ${l}, 0.15)`,t.lineWidth=5/a,t.stroke(),t.beginPath(),t.arc(_,S,$,q,q+Math.PI*1.2),t.strokeStyle=`rgba(${j}, ${i}, ${l}, 0.9)`,t.lineWidth=2.5/a,t.lineCap="round",t.stroke(),t.lineCap="butt";const de=q+Math.PI*1.2;t.beginPath(),t.arc(_+$*Math.cos(de),S+$*Math.sin(de),2.5/a,0,Math.PI*2),t.fillStyle=`rgba(${Math.min(j+80,255)}, ${Math.min(i+80,255)}, ${Math.min(l+80,255)}, 0.95)`,t.fill();const Le=Math.min(14/a,E*.06);t.font=`500 ${Le}px system-ui, sans-serif`,t.textAlign="center",t.textBaseline="top",t.fillStyle=`rgba(${j}, ${i}, ${l}, 0.7)`,t.fillText("Analyzing...",_,S+$+8/a)}}}),m.addEventListener("pointerdown",Pe,!0),m.addEventListener("pointermove",ye),m.addEventListener("pointerup",re),m.addEventListener("pointerleave",Qe),m.addEventListener("dblclick",Fe),()=>{m.removeEventListener("pointerdown",Pe,!0),m.removeEventListener("pointermove",ye),m.removeEventListener("pointerup",re),m.removeEventListener("pointerleave",Qe),m.removeEventListener("dblclick",Fe),p.destroy()})),mt(()=>{if(n.imageUrl){k(P,new Map,!0),m.style.opacity="0";const t=new Image;t.onload=()=>{y=t,p.setImage(t),requestAnimationFrame(()=>{m.style.transition="opacity 0.2s ease-out",m.style.opacity="1",setTimeout(()=>{m.style.transition=""},250)})},t.src=n.imageUrl}}),mt(()=>{n.imageUrl,n.lines,n.currentLine,n.hoveredLine,n.selectedLines,n.groups,n.showTextOverlay,I(),p?.render()}),mt(()=>{if(!(e(P).size>0||n.lines.some(o=>!o.complete&&o.text!==void 0)))return;let b=0;function T(){p?.render(),b=requestAnimationFrame(T)}return b=requestAnimationFrame(T),()=>cancelAnimationFrame(b)});var st={zoomIn:R,zoomOut:ve,resetView:le,focusRect:Ee,focusLines:ke,clearRedetecting:ot},et=An(),tt=c(et);let lt,vt;Dt(tt,t=>m=t,()=>m);var O=u(tt,2);{var te=t=>{var b=En(),T=u(c(b),2),o=c(T,!0);s(T),s(b),X(r=>A(o,r),[()=>at("region.analyzing")]),h(t,b)};D(O,t=>{n.stage==="segmenting"&&t(te)})}var W=u(O,2);{var Ie=t=>{var b=Nn();h(t,b)};D(W,t=>{n.imageUrl||t(Ie)})}return s(et),X(()=>{lt=We(tt,1,"block h-full w-full touch-none",null,lt,{"cursor-crosshair":n.selectMode}),vt=Lt(tt,"",vt,{filter:L()||"none"})}),h(ee,et),Et(st)}var Un=w('<span class="inline-block size-2 rounded-full bg-orange-500 animate-pulse"></span>'),On=w('<input class="bg-card border border-current text-foreground rounded px-1 py-0.5 text-xs w-32 outline-none"/>'),jn=w('<span class="font-semibold cursor-default"> </span>'),Fn=w('<div class="pl-1"></div>'),Vn=w('<div class="mb-2 border-l-3 rounded"><div class="flex items-center gap-1.5 px-2 py-1.5 bg-muted/30 text-xs font-sans select-none cursor-pointer"><button class="bg-transparent border-none text-muted-foreground cursor-pointer p-0 text-[0.65rem] w-4"> </button> <!> <!> <span class="text-[0.7rem] text-muted-foreground ml-auto"> </span> <button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 text-xs opacity-50 hover:opacity-100" title="Copy all lines"> </button> <button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 text-xs opacity-50 hover:opacity-100" title="Zoom to group">⌖</button> <button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 text-xs opacity-50 hover:opacity-100 hover:text-destructive disabled:opacity-20 disabled:cursor-not-allowed">x</button></div> <!></div>'),Xn=w('<input class="flex-1 bg-card border border-border text-foreground font-inherit text-inherit px-1 py-0.5 rounded outline-none focus:border-primary"/>'),Wn=w('<mark class="bg-yellow-400/40 text-inherit rounded-sm px-px"> </mark>'),Yn=w(" <!> ",1),Gn=w('<span class="streaming-cursor"></span>'),qn=w('<span class="text-xs font-mono px-1.5 py-0.5 rounded"> </span> <button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 text-xs opacity-0 group-hover/line:opacity-50 hover:!opacity-100 transition-opacity" title="Copy line text"> </button> <button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 text-xs opacity-0 group-hover/line:opacity-50 hover:!opacity-100 transition-opacity" title="Copy line image"> </button>',1),Hn=w('<span class="flex-1"><!><!></span> <!>',1),Kn=w('<div><span class="text-muted-foreground text-xs min-w-[1.5rem] text-right font-mono select-none"> </span> <!></div>'),Zn=w('<div class="mt-2 text-xs text-muted-foreground font-sans italic px-1">No matches</div>'),Qn=w('<div class="shrink-0 p-3 pb-2 border-b border-border"><input type="text" class="w-full rounded border border-border bg-background px-2 py-1.5 text-xs font-sans text-foreground placeholder:text-muted-foreground outline-none focus:border-primary"/> <!></div>'),Jn=w('<span class="inline-block size-2 rounded-full bg-orange-500 animate-pulse"></span>'),er=w('<span class="text-[0.7rem] font-mono"> </span>'),tr=w('<span class="inline-block size-2 rounded-full border border-primary/30 border-t-primary animate-spin" style="animation-duration: 0.7s; animation-timing-function: cubic-bezier(0.5, 0.1, 0.5, 0.9)"></span>'),nr=w('<button class="bg-destructive text-destructive-foreground rounded px-1.5 py-0.5 text-[0.6rem] font-medium cursor-pointer hover:bg-destructive/90">Remove</button> <button class="bg-transparent border-none text-muted-foreground cursor-pointer text-[0.6rem] hover:text-foreground">Cancel</button>',1),rr=w('<button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 text-xs opacity-0 group-hover/vol:opacity-30 hover:!opacity-100 hover:text-destructive transition-opacity" title="Remove volume">x</button>'),ir=w('<button class="bg-transparent border-none text-muted-foreground cursor-pointer px-0.5 opacity-0 group-hover/vol:opacity-50 hover:!opacity-100 hover:text-primary transition-opacity" title="Transcribe all pages"><!></button> <!>',1),ar=w('<span class="inline-block size-2 rounded-full bg-orange-500 animate-pulse"></span>'),or=w('<span class="inline-block size-2 rounded-full border border-muted-foreground/30 border-t-muted-foreground animate-spin" style="animation-duration: 0.7s; animation-timing-function: cubic-bezier(0.5, 0.1, 0.5, 0.9)"></span>'),sr=w('<span class="text-[0.7rem] font-mono"> </span>'),lr=w('<p class="text-muted-foreground italic text-center text-sm mt-2 mb-2"> <kbd class="not-italic rounded border border-border bg-muted px-1.5 py-0.5 text-xs font-mono">▶</kbd> </p>'),cr=w('<div class="pl-3"><!> <!></div>'),dr=w('<p class="text-muted-foreground italic text-xs"> </p>'),ur=w('<p class="text-muted-foreground text-xs"> </p>'),vr=w('<div class="pl-6 pb-1"><!></div>'),fr=w('<div><button class="bg-transparent border-none text-current cursor-pointer p-0 text-[0.65rem] w-4"> </button> <!> <span class="truncate flex-1"> </span> <!></div> <!>',1),hr=w('<div class="pl-2"></div>'),mr=w('<div class="group/vol flex items-center gap-2 px-2 py-1.5 rounded select-none font-sans text-xs mb-0.5 bg-muted/30 cursor-pointer hover:bg-muted/50"><button class="bg-transparent border-none text-current cursor-pointer p-0 text-[0.65rem] w-4"> </button> <!> <span class="font-semibold truncate flex-1"> </span> <span class="text-[0.65rem] text-muted-foreground font-mono"> </span> <!> <!></div> <!>',1),gr=w('<p class="text-muted-foreground italic text-center mt-8 text-xs font-sans">No volumes loaded</p>'),pr=w('<div class="flex flex-col flex-1 min-h-0 bg-card text-card-foreground"><!> <div class="flex-1 overflow-y-auto p-3 font-serif text-[0.95rem] leading-relaxed"><!> <!></div></div>');function br(ee,n){Tt(n,!0);const I=(o,r=xt,v=xt,C=xt,M=xt)=>{var N=Vn(),E=c(N),g=c(E),Y=c(g,!0);s(g);var j=u(g,2);{var i=H=>{var F=Un();h(H,F)};D(j,H=>{M()&&H(i)})}var l=u(j,2);{var a=H=>{var F=On();yt(F),X(()=>Lt(F,`border-color: ${Te[C()%Te.length]??""}`)),U("keydown",F,K=>{K.key==="Enter"&&ke(v().id),K.key==="Escape"&&k(y,null)}),It("blur",F,()=>ke(v().id)),Pt(F,()=>e(R),K=>k(R,K)),h(H,F)},d=H=>{var F=jn(),K=c(F,!0);s(F),X(()=>{Lt(F,`color: ${Te[C()%Te.length]??""}`),A(K,v().name)}),U("dblclick",F,()=>Ee(v())),h(H,F)};D(l,H=>{e(y)===v().id?H(a):H(d,-1)})}var x=u(l,2),G=c(x,!0);s(x);var _=u(x,2),S=c(_,!0);s(_);var $=u(_,2),q=u($,2);s(E);var de=u(E,2);{var Le=H=>{var F=Fn();ft(F,21,()=>v().lineIds,ht,(K,me,pe)=>{L(K,r,()=>e(me),()=>pe)}),s(F),h(H,F)};D(de,H=>{v().collapsed||H(Le)})}s(N),X(()=>{Lt(N,`border-color: ${Te[C()%Te.length]??""}`),A(Y,v().collapsed?"▶":"▼"),A(G,v().lineIds.length),A(S,e(P)===v().id?"✓":"⎘"),ut(q,"title",M()?"Cannot delete while transcribing":"Delete group"),q.disabled=M()}),U("click",E,()=>n.onFocusGroup(v().lineIds,v().rect)),U("click",g,H=>{H.stopPropagation(),n.onToggleGroup(v().id)}),U("click",_,H=>{H.stopPropagation(),ot(v())}),U("click",$,H=>{H.stopPropagation(),n.onFocusGroup(v().lineIds,v().rect)}),U("click",q,H=>{H.stopPropagation(),n.onDeleteGroup(v().id)}),h(o,N)},L=(o,r=xt,v=xt,C=xt)=>{const M=Q(()=>r().lines.find(j=>j.id===v()));var N=Re(),E=J(N);{var g=j=>{var i=Kn(),l=c(i),a=c(l,!0);s(l);var d=u(l,2);{var x=_=>{var S=Xn();yt(S),U("keydown",S,$=>{$.key==="Enter"&&ce(),$.key==="Escape"&&k(ve,-1)}),It("blur",S,ce),U("click",S,$=>$.stopPropagation()),U("dblclick",S,$=>$.stopPropagation()),Pt(S,()=>e(le),$=>k(le,$)),h(_,S)},G=_=>{var S=Hn(),$=J(S),q=c($);ft(q,17,()=>Fe(e(M).text),ht,(K,me)=>{Ut();var pe=Yn(),Ke=J(pe,!0),Z=u(Ke);{var fe=ae=>{var Ce=Wn(),ct=c(Ce,!0);s(Ce),X(()=>A(ct,e(me).match)),h(ae,Ce)};D(Z,ae=>{e(me).match&&ae(fe)})}var he=u(Z,1,!0);X(()=>{A(Ke,e(me).before),A(he,e(me).after)}),h(K,pe)});var de=u(q);{var Le=K=>{var me=Gn();h(K,me)};D(de,K=>{!e(M).complete&&e(M).text&&K(Le)})}s($);var H=u($,2);{var F=K=>{var me=qn(),pe=J(me),Ke=c(pe);s(pe);var Z=u(pe,2),fe=c(Z,!0);s(Z);var he=u(Z,2),ae=c(he,!0);s(he),X(Ce=>{Lt(pe,`background: oklch(0.65 0.18 ${e(M).confidence>.7?145:e(M).confidence>.4?75:25} / ${e(M).confidence*.15}); color: oklch(${.45+e(M).confidence*.25} 0.12 ${e(M).confidence>.7?145:e(M).confidence>.4?75:25})`),A(Ke,`${Ce??""}%`),A(fe,e(_e)===v()?"✓":"T"),A(ae,e(_e)===v()?"✓":"🖼")},[()=>(e(M).confidence*100).toFixed(0)]),U("click",Z,Ce=>{Ce.stopPropagation(),ge(r(),v())}),U("click",he,Ce=>{Ce.stopPropagation(),Pe(r(),v())}),h(K,me)};D(H,K=>{e(M).complete&&K(F)})}h(_,S)};D(d,_=>{e(ve)===v()?_(x):_(G,-1)})}s(i),X(_=>{We(i,1,`group/line flex items-baseline gap-2 px-2 py-1 rounded cursor-pointer transition-all relative ${v()===n.hoveredLine?"bg-orange-500/[0.08] pl-3":""} ${_??""} before:absolute before:left-0 before:top-1 before:bottom-1 before:w-0.5 before:rounded-full before:bg-orange-400 before:opacity-0 before:transition-opacity ${v()===n.hoveredLine?"before:opacity-100":""}`),ut(i,"data-line",v()),A(a,C()+1)},[()=>n.selectedLines.has(v())?"bg-yellow-400/[0.12] outline outline-1 outline-yellow-400/30":""]),It("mouseenter",i,()=>n.onHoverLine(v())),It("mouseleave",i,()=>n.onHoverLine(-1)),U("click",i,_=>Me(v(),_)),U("dblclick",i,()=>ue(v())),h(j,i)},Y=Q(()=>e(M)&&Qe(r(),v()));D(E,j=>{e(Y)&&j(g)})}h(o,N)},m=(o,r)=>(r&&o.scrollIntoView({block:"nearest",behavior:"smooth"}),{update(v){v&&o.scrollIntoView({block:"nearest",behavior:"smooth"})}});let p,y=ne(null),R=ne(""),ve=ne(-1),le=ne("");function Ee(o){k(y,o.id,!0),k(R,o.name,!0)}function ke(o){e(R).trim()&&n.onRenameGroup(o,e(R).trim()),k(y,null)}function ue(o){k(ve,o,!0);const r=n.documents.find(v=>v.id===n.activeDocumentId);k(le,r?.lines.find(v=>v.id===o)?.text??"",!0)}function ce(){e(ve)>=0&&(n.onEditLine(e(ve),e(le)),k(ve,-1))}function Me(o,r){n.selectMode?n.onSelectLine(o,r.shiftKey||r.ctrlKey||r.metaKey):n.onFocusLine(o)}let P=ne(null);async function ot(o){const r=n.documents.find(M=>M.id===n.activeDocumentId);if(!r)return;const v=o.lineIds.map(M=>r.lines.find(N=>N.id===M)?.text??"").filter(M=>M.trim()).join(`
|
| 2 |
+
`),C={"text/plain":new Blob([v],{type:"text/plain"})};if(r.imageUrl&&o.rect)try{const M=new Image;await new Promise((j,i)=>{M.onload=()=>j(),M.onerror=i,M.src=r.imageUrl});const N=o.rect,E=document.createElement("canvas");E.width=N.w,E.height=N.h,E.getContext("2d").drawImage(M,N.x,N.y,N.w,N.h,0,0,N.w,N.h);const Y=await new Promise(j=>E.toBlob(i=>j(i),"image/png"));C["image/png"]=Y}catch{}await navigator.clipboard.write([new ClipboardItem(C)]),k(P,o.id,!0),setTimeout(()=>{e(P)===o.id&&k(P,null)},1500)}const Te=["#8b5cf6","#06b6d4","#f59e0b","#ec4899","#10b981","#f97316"];let _e=ne(-1),se=ne(null);async function ge(o,r){const v=o.lines.find(C=>C.id===r)?.text??"";await navigator.clipboard.writeText(v),k(_e,r,!0),setTimeout(()=>{e(_e)===r&&k(_e,-1)},1500)}async function Pe(o,r){const v=o.lines.find(C=>C.id===r);if(!(!o.imageUrl||!v?.bbox))try{const C=new Image;await new Promise((d,x)=>{C.onload=()=>d(),C.onerror=x,C.src=o.imageUrl});const M=v.bbox,N=8,E=Math.max(0,M.x-N),g=Math.max(0,M.y-N),Y=Math.min(C.width-E,M.w+N*2),j=Math.min(C.height-g,M.h+N*2),i=document.createElement("canvas");i.width=Y,i.height=j,i.getContext("2d").drawImage(C,E,g,Y,j,0,0,Y,j);const a=await new Promise(d=>i.toBlob(x=>d(x),"image/png"));await navigator.clipboard.write([new ClipboardItem({"image/png":a})]),k(_e,r,!0),setTimeout(()=>{e(_e)===r&&k(_e,-1)},1500)}catch{}}let ye=ne(""),re=Q(()=>e(ye).trim().toLowerCase());function Fe(o){if(!e(re)||!o)return[{before:o,match:"",after:""}];const r=o.toLowerCase().indexOf(e(re));return r===-1?[{before:o,match:"",after:""}]:[{before:o.slice(0,r),match:o.slice(r,r+e(re).length),after:o.slice(r+e(re).length)}]}function Qe(o,r){return e(re)?o.lines.find(v=>v.id===r)?.text?.toLowerCase().includes(e(re))??!1:!0}function Oe(o,r){return e(re)?r.some(v=>Qe(o,v)):!0}function Je(o){return e(re)?o.lines.some(r=>r.text?.toLowerCase().includes(e(re))):!0}let Ve=ne(_t(new Set)),st=ne(_t(new Set)),et=ne("");mt(()=>{const r=n.documents.find(v=>v.id===n.activeDocumentId)?.manifestId??"";if(r&&r!==e(et)){const v=new Set;for(const C of n.documents)C.manifestId&&C.manifestId!==r&&v.add(C.manifestId);k(Ve,v,!0),k(et,r,!0)}});function tt(o){const r=new Set(e(Ve));r.has(o)?r.delete(o):r.add(o),k(Ve,r,!0)}function lt(o){const r=new Set(e(st));r.has(o)?r.delete(o):r.add(o),k(st,r,!0)}let vt=Q(()=>{const o=new Map;for(const r of n.documents){const v=r.manifestId||"unnamed",C=o.get(v);C?C.push(r):o.set(v,[r])}return[...o.entries()].map(([r,v])=>({manifestId:r,docs:v}))});var O=pr(),te=c(O);{var W=o=>{var r=Qn(),v=c(r);yt(v);var C=u(v,2);{var M=E=>{var g=Zn();h(E,g)},N=Q(()=>e(re)&&!n.documents.some(E=>Je(E)));D(C,E=>{e(N)&&E(M)})}s(r),X(E=>ut(v,"placeholder",E),[()=>at("transcription.filter")]),Pt(v,()=>e(ye),E=>k(ye,E)),h(o,r)};D(te,o=>{n.documents.length>0&&o(W)})}var Ie=u(te,2),t=c(Ie);ft(t,17,()=>e(vt),ht,(o,r)=>{const v=Q(()=>!e(re)||e(r).docs.some(E=>Je(E)));var C=Re(),M=J(C);{var N=E=>{const g=Q(()=>e(Ve).has(e(r).manifestId)),Y=Q(()=>e(r).docs.reduce((Z,fe)=>Z+fe.lines.length,0)),j=Q(()=>e(r).docs.reduce((Z,fe)=>Z+fe.lines.filter(he=>he.complete).length,0)),i=Q(()=>e(r).docs.some(Z=>n.pendingImageIds.has(Z.id)));var l=mr(),a=J(l),d=c(a),x=c(d,!0);s(d);var G=u(d,2);{var _=Z=>{var fe=Jn();h(Z,fe)};D(G,Z=>{e(i)&&Z(_)})}var S=u(G,2),$=c(S,!0);s(S);var q=u(S,2),de=c(q);s(q);var Le=u(q,2);{var H=Z=>{var fe=er(),he=c(fe);s(fe),X(()=>A(he,`${e(j)??""}/${e(Y)??""}`)),h(Z,fe)};D(Le,Z=>{e(Y)>0&&Z(H)})}var F=u(Le,2);{var K=Z=>{var fe=tr();h(Z,fe)},me=Z=>{var fe=ir(),he=J(fe),ae=c(he);Zt(ae,{class:"size-3"}),s(he);var Ce=u(he,2);{var ct=Ne=>{var ze=nr(),be=J(ze),xe=u(be,2);U("click",be,nt=>{nt.stopPropagation(),n.onRemoveVolume(e(r).manifestId),k(se,null)}),U("click",xe,nt=>{nt.stopPropagation(),k(se,null)}),h(Ne,ze)},Ze=Ne=>{var ze=rr();U("click",ze,be=>{be.stopPropagation(),k(se,e(r).manifestId,!0)}),h(Ne,ze)};D(Ce,Ne=>{e(se)===e(r).manifestId?Ne(ct):Ne(Ze,-1)})}U("click",he,Ne=>{Ne.stopPropagation(),n.onTranscribeVolume(e(r).manifestId)}),h(Z,fe)};D(F,Z=>{e(i)?Z(K):Z(me,-1)})}s(a);var pe=u(a,2);{var Ke=Z=>{var fe=hr();ft(fe,21,()=>e(r).docs,ht,(he,ae)=>{var Ce=Re(),ct=J(Ce);{var Ze=ze=>{const be=Q(()=>e(ae).id===n.activeDocumentId),xe=Q(()=>e(st).has(e(ae).id)),nt=Q(()=>n.pendingImageIds.has(e(ae).id)),Ct=Q(()=>e(ae).lines.length),wt=Q(()=>e(ae).lines.filter(z=>z.complete).length);var Nt=fr(),gt=J(Nt);let At;var kt=c(gt),$t=c(kt,!0);s(kt);var Bt=u(kt,2);{var St=z=>{var V=ar();h(z,V)},jt=z=>{var V=or();h(z,V)};D(Bt,z=>{e(nt)?z(St):e(ae).placeholder&&z(jt,1)})}var pt=u(Bt,2),Ft=c(pt);s(pt);var Rt=u(pt,2);{var Vt=z=>{var V=sr(),we=c(V);s(V),X(()=>A(we,`${e(wt)??""}/${e(Ct)??""}`)),h(z,V)};D(Rt,z=>{e(Ct)>0&&z(Vt)})}s(gt),_n(gt,(z,V)=>m?.(z,V),()=>e(be));var zt=u(gt,2);{var Xt=z=>{var V=cr(),we=c(V);ft(we,17,()=>e(ae).groups,ht,(oe,ie,Se)=>{var Ae=Re(),je=J(Ae);{var rt=Xe=>{const bt=Q(()=>e(ie).regionId?n.pendingRegions.has(e(ie).regionId):!1);I(Xe,()=>e(ae),()=>e(ie),()=>Se,()=>e(bt))},it=Q(()=>!e(re)||Oe(e(ae),e(ie).lineIds));D(je,Xe=>{e(it)&&Xe(rt)})}h(oe,Ae)});var De=u(we,2);{var $e=oe=>{var ie=lr(),Se=c(ie),Ae=u(Se,2);s(ie),X((je,rt)=>{A(Se,`${je??""} `),A(Ae,` ${rt??""}`)},[()=>at("transcription.pressPlay"),()=>at("transcription.toTranscribe")]),h(oe,ie)};D(De,oe=>{!e(re)&&e(ae).lines.length===0&&e(ae).groups.length===0&&oe($e)})}s(V),h(z,V)},B=z=>{var V=vr(),we=c(V);{var De=oe=>{var ie=dr(),Se=c(ie,!0);s(ie),X(Ae=>A(Se,Ae),[()=>at("transcription.noRegions")]),h(oe,ie)},$e=oe=>{var ie=ur(),Se=c(ie);s(ie),X(()=>A(Se,`${e(ae).groups.length??""} group${e(ae).groups.length!==1?"s":""}, ${e(ae).lines.length??""} line${e(ae).lines.length!==1?"s":""}`)),h(oe,ie)};D(we,oe=>{e(ae).lines.length===0&&e(ae).groups.length===0?oe(De):oe($e,-1)})}s(V),h(z,V)};D(zt,z=>{!e(xe)&&e(be)?z(Xt):e(xe)||z(B,1)})}X(()=>{At=We(gt,1,`flex items-center gap-2 px-2 py-1 rounded cursor-pointer select-none font-sans text-xs mb-0.5 ${e(be)?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-muted/50"}`,null,At,{"active-page":e(be)}),A($t,e(xe)?"▶":"▼"),A(Ft,`p. ${e(ae).pageNumber??"?"??""}`)}),U("click",gt,()=>{n.onSwitchDocument(e(ae).id),e(xe)&<(e(ae).id)}),U("click",kt,z=>{z.stopPropagation(),lt(e(ae).id)}),h(ze,Nt)},Ne=Q(()=>!e(re)||Je(e(ae)));D(ct,ze=>{e(Ne)&&ze(Ze)})}h(he,Ce)}),s(fe),h(Z,fe)};D(pe,Z=>{e(g)||Z(Ke)})}X(Z=>{A(x,e(g)?"▶":"▼"),A($,Z),A(de,`${e(r).docs.length??""} pg`)},[()=>e(r).manifestId.startsWith("upload-")?`Upload ${e(r).manifestId.slice(7)}`:e(r).manifestId]),U("click",a,()=>tt(e(r).manifestId)),h(E,l)};D(M,E=>{e(v)&&E(N)})}h(o,C)});var b=u(t,2);{var T=o=>{var r=gr();h(o,r)};D(b,o=>{n.documents.length===0&&o(T)})}s(Ie),s(O),Dt(O,o=>p=o,()=>p),h(ee,O),Et()}Ot(["click","keydown","dblclick"]);var xr=w('<span class="text-[0.65rem] text-muted-foreground animate-pulse ml-auto">Searching...</span>'),_r=w('<span class="text-[0.65rem] text-muted-foreground font-mono ml-auto"> </span>'),yr=w('<mark class="bg-yellow-400/40 text-inherit rounded-sm px-px"> </mark>'),wr=w(" <!> ",1),kr=w('<div class="text-[0.6rem] text-muted-foreground"><!></div>'),Mr=w('<div class="text-[0.6rem] text-muted-foreground/70 mt-0.5 line-clamp-3"><!></div>'),Ir=w('<div class="text-[0.65rem] text-muted-foreground font-medium px-2 py-0.5 mt-1"><!></div>'),Lr=w('<span class="text-muted-foreground ml-1"> </span>'),Pr=w('<span class="text-[0.55rem] text-primary font-medium">Load</span>'),$r=w('<div class="text-[0.6rem] text-muted-foreground/60 px-4 pb-0.5"><!></div>'),Sr=w('<div><span class="truncate flex-1"> <!></span> <!></div> <!> <div class="text-[0.5rem] text-muted-foreground/30 px-4 pb-1 font-mono"> </div>',1),Rr=w('<!> <div class="pl-2"></div>',1),Cr=w('<div class="pl-4 pr-2 pb-1"><!> <!> <div class="text-[0.55rem] text-muted-foreground/40 font-mono mt-0.5"> </div></div> <div class="pl-2"></div>',1),zr=w('<div class="flex items-center gap-2 px-2 py-1.5 rounded select-none mb-0.5 bg-muted/30 cursor-pointer hover:bg-muted/50"><span class="text-[0.65rem] w-4"> </span> <span class="font-semibold truncate flex-1"><!></span> <span class="text-[0.65rem] text-muted-foreground font-mono"> </span></div> <!>',1),Dr=w('<p class="text-[0.65rem] text-muted-foreground italic px-1 mt-2">No results</p>'),Tr=w('<button class="w-full rounded border border-border px-2 py-1.5 mt-2 text-[0.65rem] text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors"> </button>'),Er=w('<div class="flex flex-col flex-1 min-h-0 bg-card text-card-foreground font-sans text-xs"><div class="shrink-0 p-3 pb-2 border-b border-border"><div class="mb-2"><input type="text" placeholder="Search archive catalog..." class="w-full rounded border border-border bg-background px-2 py-1.5 text-xs text-foreground placeholder:text-muted-foreground outline-none focus:border-primary"/></div> <div class="flex items-center gap-2 px-1"><label class="flex items-center gap-1 cursor-pointer select-none text-[0.65rem] text-muted-foreground"><input type="checkbox" class="accent-primary"/> digitized only</label> <!></div></div> <div class="flex-1 overflow-y-auto p-3 pt-2"><!> <!> <!></div></div>');function Nr(ee,n){Tt(n,!0);let I=ne("");function L(O){k(I,O,!0),ke()}let m=ne(_t([])),p=ne(0),y=ne(!1),R=ne(!0),ve=!0,le;function Ee(){clearTimeout(le),le=setTimeout(ke,400)}async function ke(O=!1){const te=e(I).trim();k(y,!0);try{const W=await pn({q:te||void 0,mode:"vector",limit:200,offset:O?e(m).length:0,digitized:e(R)?!0:void 0});O?k(m,[...e(m),...W.results],!0):k(m,W.results,!0),k(p,W.total,!0)}catch{O||(k(m,[],!0),k(p,0))}finally{k(y,!1)}}mt(()=>{e(R),(e(I).trim()||ve)&&(clearTimeout(le),le=setTimeout(ke,100))});let ue=ne(_t(new Set)),ce=Q(()=>e(I).trim());function Me(O){if(!e(ce)||!O)return[{before:O,match:"",after:""}];const te=O.toLowerCase().indexOf(e(ce).toLowerCase());return te===-1?[{before:O,match:"",after:""}]:[{before:O.slice(0,te),match:O.slice(te,te+e(ce).length),after:O.slice(te+e(ce).length)}]}let P=Q(()=>{const O=new Map;for(const W of e(m)){const Ie=W.fonds_title||W.reference_code;O.has(Ie)||O.set(Ie,new Map);const t=O.get(Ie),b=W.series_title||"";t.has(b)||t.set(b,[]),t.get(b).push(W)}const te=[];for(const[W,Ie]of O){const t=[...Ie.entries()].map(([T,o])=>({title:T,volumes:o})),b=t[0]?.volumes[0];te.push({title:W,description:b?.fonds_description??"",creator:b?.creator??"",archiveCode:b?.archive_code??"",series:t})}return te});var ot={setSearch:L},Te=Er(),_e=c(Te),se=c(_e),ge=c(se);yt(ge),s(se);var Pe=u(se,2),ye=c(Pe),re=c(ye);yt(re),Ut(),s(ye);var Fe=u(ye,2);{var Qe=O=>{var te=xr();h(O,te)},Oe=O=>{var te=_r(),W=c(te,!0);s(te),X(()=>A(W,e(p))),h(O,te)};D(Fe,O=>{e(y)?O(Qe):e(p)>0&&O(Oe,1)})}s(Pe),s(_e);var Je=u(_e,2);{const O=(te,W=xt)=>{var Ie=Re(),t=J(Ie);ft(t,17,()=>Me(W()),ht,(b,T)=>{Ut();var o=wr(),r=J(o,!0),v=u(r);{var C=N=>{var E=yr(),g=c(E,!0);s(E),X(()=>A(g,e(T).match)),h(N,E)};D(v,N=>{e(T).match&&N(C)})}var M=u(v,1,!0);X(()=>{A(r,e(T).before),A(M,e(T).after)}),h(b,o)}),h(te,Ie)};var Ve=c(Je);ft(Ve,17,()=>e(P),ht,(te,W)=>{const Ie=Q(()=>e(ue).has(e(W).title));var t=zr(),b=J(t),T=c(b),o=c(T,!0);s(T);var r=u(T,2),v=c(r);O(v,()=>e(W).title),s(r);var C=u(r,2),M=c(C,!0);s(C),s(b);var N=u(b,2);{var E=g=>{var Y=Cr(),j=J(Y),i=c(j);{var l=S=>{var $=kr(),q=c($);O(q,()=>e(W).creator),s($),h(S,$)};D(i,S=>{e(W).creator&&S(l)})}var a=u(i,2);{var d=S=>{var $=Mr(),q=c($);O(q,()=>e(W).description),s($),h(S,$)};D(a,S=>{e(W).description&&S(d)})}var x=u(a,2),G=c(x,!0);s(x),s(j);var _=u(j,2);ft(_,21,()=>e(W).series,ht,(S,$)=>{var q=Rr(),de=J(q);{var Le=F=>{var K=Ir(),me=c(K);O(me,()=>e($).title),s(K),h(F,K)};D(de,F=>{e($).title&&F(Le)})}var H=u(de,2);ft(H,21,()=>e($).volumes,ht,(F,K)=>{var me=Sr(),pe=J(me),Ke=c(pe),Z=c(Ke),fe=u(Z);{var he=be=>{var xe=Lr(),nt=c(xe);s(xe),X(()=>A(nt,`(${e(K).date_text??""})`)),h(be,xe)};D(fe,be=>{e(K).date_text&&be(he)})}s(Ke);var ae=u(Ke,2);{var Ce=be=>{var xe=Pr();h(be,xe)};D(ae,be=>{e(K).digitized&&be(Ce)})}s(pe);var ct=u(pe,2);{var Ze=be=>{var xe=$r(),nt=c(xe);O(nt,()=>e(K).description),s(xe),h(be,xe)};D(ct,be=>{e(K).description&&be(Ze)})}var Ne=u(ct,2),ze=c(Ne,!0);s(Ne),X(()=>{We(pe,1,`flex items-center gap-2 px-2 py-1 rounded mb-0.5 ${e(K).digitized?"cursor-pointer hover:bg-muted/50":"opacity-40"}`),A(Z,`vol. ${e(K).volume_id??""} `),A(ze,e(K).reference_code)}),U("click",pe,()=>{e(K).digitized&&n.onLoadVolume(e(K).reference_code,e(K))}),h(F,me)}),s(H),h(S,q)}),s(_),X(()=>A(G,e(W).archiveCode)),h(g,Y)};D(N,g=>{e(Ie)||g(E)})}X(g=>{A(o,e(Ie)?"▶":"▼"),A(M,g)},[()=>e(W).series.reduce((g,Y)=>g+Y.volumes.length,0)]),U("click",b,()=>{const g=new Set(e(ue));g.has(e(W).title)?g.delete(e(W).title):g.add(e(W).title),k(ue,g,!0)}),h(te,t)});var st=u(Ve,2);{var et=te=>{var W=Dr();h(te,W)},tt=Q(()=>!e(y)&&e(m).length===0&&(e(I).trim()||ve));D(st,te=>{e(tt)&&te(et)})}var lt=u(st,2);{var vt=te=>{var W=Tr(),Ie=c(W,!0);s(W),X(()=>{W.disabled=e(y),A(Ie,e(y)?"Loading...":`Load more (${e(m).length} / ${e(p)})`)}),U("click",W,()=>ke(!0)),h(te,W)};D(lt,te=>{e(m).length>0&&e(m).length<e(p)&&te(vt)})}s(Je)}return s(Te),U("input",ge,Ee),Pt(ge,()=>e(I),O=>k(I,O)),dn(re,()=>e(R),O=>k(R,O)),h(ee,Te),Et(ot)}Ot(["input","click"]);var Ar=w('<div class="flex flex-col gap-4"><div role="button" tabindex="0"><input type="file" accept="image/*" multiple="" class="hidden"/> <div class="text-center space-y-1"><p class="text-base font-medium text-foreground/80"> </p> <p class="text-xs text-muted-foreground"> </p> <p class="text-xs text-muted-foreground"> <span class="inline-flex items-center align-middle"><svg class="size-3.5 inline" viewBox="0 0 24 24" fill="currentColor"><polygon points="5,3 19,12 5,21"></polygon></svg></span> </p></div> <!></div></div>');function Br(ee,n){Tt(n,!0);let I=ne(!1),L=ne(!1),m;async function p(se){if(!se||se.length===0)return;const ge=[];for(const Pe of se){if(!Pe.type.startsWith("image/"))continue;const ye=URL.createObjectURL(Pe),re=await Pe.arrayBuffer();ge.push({name:Pe.name,imageData:re,previewUrl:ye})}ge.length>0&&n.onUpload(ge)}async function y(){k(L,!0);try{const ge=await(await fetch("/demo.jpg")).arrayBuffer(),Pe=new Blob([ge],{type:"image/jpeg"}),ye=URL.createObjectURL(Pe);n.onUpload([{name:"demo.jpg",imageData:ge,previewUrl:ye}])}finally{k(L,!1)}}var R=Ar(),ve=c(R),le=c(ve);Dt(le,se=>m=se,()=>m);var Ee=u(le,2),ke=c(Ee),ue=c(ke,!0);s(ke);var ce=u(ke,2),Me=c(ce,!0);s(ce);var P=u(ce,2),ot=c(P),Te=u(ot,2);s(P),s(Ee);var _e=u(Ee,2);{let se=Q(()=>n.disabled||e(L));un(_e,{variant:"outline",size:"sm",onclick:ge=>{ge.stopPropagation(),y()},get disabled(){return e(se)},children:(ge,Pe)=>{Ut();var ye=tn();X(re=>A(ye,re),[()=>e(L)?at("upload.loading"):at("upload.demo")]),h(ge,ye)},$$slots:{default:!0}})}s(ve),s(R),X((se,ge,Pe,ye,re)=>{We(ve,1,se),le.disabled=n.disabled,A(ue,ge),A(Me,Pe),A(ot,`${ye??""} `),A(Te,` ${re??""}`)},[()=>cn(vn("flex min-h-[280px] flex-col items-center justify-center gap-4 rounded-xl border-2 border-dashed p-10 transition-colors cursor-pointer backdrop-blur-md bg-card/30",e(I)?"border-primary bg-primary/10":"border-muted-foreground/20",n.disabled&&"opacity-50 pointer-events-none")),()=>at("upload.drop"),()=>at("upload.hint1"),()=>at("upload.hint2"),()=>at("upload.hint3")]),It("drop",ve,se=>{se.preventDefault(),k(I,!1),p(se.dataTransfer?.files??null)}),It("dragover",ve,se=>{se.preventDefault(),k(I,!0)}),It("dragleave",ve,()=>k(I,!1)),U("click",ve,()=>{n.disabled||m?.click()}),U("change",le,se=>p(se.currentTarget.files)),h(ee,R),Et()}Ot(["click","change"]);var Ur=w('<div class="flex items-center gap-2 bg-destructive/10 px-4 py-2 text-sm text-destructive shrink-0"><span class="flex-1"> </span> <button class="text-destructive/60 hover:text-destructive cursor-pointer text-lg leading-none">×</button></div>'),Or=w('<div class="bg-muted px-4 py-1.5 text-xs text-muted-foreground animate-pulse shrink-0"> </div>'),jr=w('<div class="flex items-center gap-2 bg-destructive/10 px-4 py-1.5 text-xs text-destructive shrink-0"><span class="flex-1"> </span> <button class="text-destructive/60 hover:text-destructive cursor-pointer text-sm leading-none">×</button></div>'),Fr=w('<div class="overflow-hidden border-r border-border flex flex-col"><!></div> <div role="separator" title="Drag to resize, double-click to collapse"></div>',1),Vr=w('<button class="absolute left-3 top-1/2 -translate-y-1/2 size-9 rounded-full bg-black/40 backdrop-blur-md flex items-center justify-center text-white/70 hover:text-white hover:bg-black/60 transition-all cursor-pointer" title="Previous page"><!></button>'),Xr=w('<button class="absolute right-3 top-1/2 -translate-y-1/2 size-9 rounded-full bg-black/40 backdrop-blur-md flex items-center justify-center text-white/70 hover:text-white hover:bg-black/60 transition-all cursor-pointer" title="Next page"><!></button>'),Wr=w("<!> <!>",1),Yr=w('<div class="text-white/60"> </div>'),Gr=w("<div> </div>"),qr=w('<div class="text-white/50"> </div>'),Hr=w('<div class="text-white/50 line-clamp-4"> </div>'),Kr=w('<div class="absolute bottom-16 left-1/2 -translate-x-1/2 rounded-lg bg-black/50 backdrop-blur-xl border border-white/[0.06] shadow-xl px-4 py-3 text-[0.7rem] text-white/80 leading-relaxed space-y-1 min-w-[280px] max-w-[400px] shadow-lg"><div class="font-semibold text-white"> </div> <!> <!> <!> <!> <div class="text-white/30 font-mono text-[0.6rem] pt-1"> </div></div>'),Zr=w('<span class="text-white/20">·</span> <span class="truncate max-w-[200px]"> </span>',1),Qr=w('<span class="font-mono tabular-nums"> <span class="text-white/40"> </span></span> <!> <button title="Volume details"><!></button>',1),Jr=w('<span class="text-white/20">·</span> <span class="font-mono tabular-nums"> </span>',1),ei=w('<span class="text-orange-400 font-mono"> </span>'),ti=w('<span class="text-white/40 animate-pulse" title="Saving transcriptions to server">saving</span>'),ni=w('<div class="absolute bottom-full right-0 mb-2 rounded-lg bg-black/50 backdrop-blur-xl border border-white/[0.06] shadow-xl p-3 space-y-2 min-w-[180px] shadow-lg"><div class="flex items-center justify-between text-[0.65rem] text-white/70"><span>Brightness</span> <span class="font-mono text-white/40"> </span></div> <input type="range" min="20" max="250" class="w-full h-1 accent-white/70"/> <div class="flex items-center justify-between text-[0.65rem] text-white/70"><span>Contrast</span> <span class="font-mono text-white/40"> </span></div> <input type="range" min="20" max="300" class="w-full h-1 accent-white/70"/> <div class="flex items-center justify-between text-[0.65rem] text-white/70"><span>Saturation</span> <span class="font-mono text-white/40"> </span></div> <input type="range" min="0" max="200" class="w-full h-1 accent-white/70"/> <button class="w-full text-[0.6rem] text-white/40 hover:text-white/70 transition-colors cursor-pointer pt-1">Reset</button></div>'),ri=w('<!> <!> <!> <div class="absolute bottom-3 left-1/2 -translate-x-1/2 flex items-center gap-3 rounded-xl bg-black/40 backdrop-blur-xl border border-white/[0.06] shadow-2xl shadow-black/40 px-4 py-2 text-[0.7rem] text-white/70"><!> <!> <!> <!> <span class="text-white/20">|</span> <button><!></button> <button><!></button> <button><!></button> <button><!></button> <div class="relative"><button title="Image adjustments"><!></button> <!></div></div> <div class="absolute top-3 right-3 flex flex-col rounded-lg bg-black/40 backdrop-blur-md overflow-hidden"><button class="size-8 flex items-center justify-center text-white/70 hover:text-white hover:bg-white/10 transition-all cursor-pointer" title="Zoom in"><!></button> <div class="h-px bg-white/10"></div> <button class="size-8 flex items-center justify-center text-white/70 hover:text-white hover:bg-white/10 transition-all cursor-pointer" title="Fit to page"><!></button> <div class="h-px bg-white/10"></div> <button class="size-8 flex items-center justify-center text-white/70 hover:text-white hover:bg-white/10 transition-all cursor-pointer" title="Zoom out"><!></button> <div class="h-px bg-white/10"></div> <button class="size-8 flex items-center justify-center text-white/70 hover:text-white hover:bg-white/10 transition-all cursor-pointer" title="Fullscreen"><!></button> <div class="h-px bg-white/10"></div> <button class="size-8 flex items-center justify-center text-white/70 hover:text-white hover:bg-white/10 transition-all cursor-pointer" title="Print page"><!></button></div>',1),ii=w('<div class="absolute inset-0 flex items-center justify-center"><video class="absolute inset-0 w-full h-full object-cover opacity-10 pointer-events-none" src="/flying-papers.mp4" loop="" autoplay="" playsinline=""></video> <div class="relative w-full max-w-md space-y-5 p-8"><!></div></div>',2),ai=w('<div role="separator" title="Drag to resize, double-click to collapse"></div> <div class="overflow-hidden border-l border-border flex flex-col"><!></div>',1),oi=w('<!> <!> <!> <!> <div class="flex flex-1 overflow-hidden"><!> <div class="relative overflow-hidden flex-1"><!></div> <!></div>',1);function pi(ee,n){Tt(n,!0);let I=ne(20),L=ne(25),m=ne(!0),p=ne(!0),y=ne(null),R,ve=ne(!1),le=ne(!1),Ee=ne(!0),ke=ne(!1),ue=ne(_t({brightness:100,contrast:100,saturate:100})),ce=ne(!1);mt(()=>{f.htr.cacheChecked&&!f.htr.modelsReady&&f.htr.stage==="idle"&&mn("/")});function Me(i){const l=f.createUploadVolumeId();for(let a=0;a<i.length;a++){const d=i[a],x=f.addDocument(d.name,d.previewUrl,d.imageData,l,a+1);f.activeDocumentId||(f.activeDocumentId=x)}k(p,!1)}let P=Q(()=>f.activeDocument),ot=Q(()=>e(P)?.lines??[]);mt(()=>{e(P)?.id});let Te=Q(()=>e(P)?.groups??[]);mt(()=>{e(m),e(p),setTimeout(()=>R?.resetView(),50)});let _e=Q(()=>{if(!e(P)?.manifestId)return null;const i=f.documents.filter(a=>a.manifestId===e(P).manifestId).sort((a,d)=>(a.pageNumber??0)-(d.pageNumber??0)),l=i.findIndex(a=>a.id===e(P).id);return{current:l+1,total:i.length,hasPrev:l>0,hasNext:l<i.length-1}});function se(i){if(!e(P))return;const l=e(P).groups.find(d=>d.id===i);if(!l)return;l.regionId&&f.htr.cancelRegion(l.regionId);const a=new Set(l.lineIds);e(P).lines=e(P).lines.filter(d=>!a.has(d.id)),e(P).groups=e(P).groups.filter(d=>d.id!==i),f.documents=[...f.documents],e(P).manifestId&&f.scheduleAutoSave()}function ge(i,l){e(P)&&(e(P).groups=e(P).groups.map(a=>a.id===i?{...a,name:l}:a),f.documents=[...f.documents])}function Pe(i){e(P)&&(e(P).groups=e(P).groups.map(l=>l.id===i?{...l,collapsed:!l.collapsed}:l),f.documents=[...f.documents])}function ye(i){const l=i.target?.tagName;l==="INPUT"||l==="TEXTAREA"||(i.key==="ArrowLeft"&&(i.preventDefault(),f.navigatePage(-1)),i.key==="ArrowRight"&&(i.preventDefault(),f.navigatePage(1)),i.key==="ArrowUp"&&(i.preventDefault(),f.navigateLine(-1)),i.key==="ArrowDown"&&(i.preventDefault(),f.navigateLine(1)),(i.key==="+"||i.key==="=")&&(i.preventDefault(),R?.zoomIn()),i.key==="-"&&(i.preventDefault(),R?.zoomOut()),i.key==="0"&&(i.preventDefault(),R?.resetView()))}let re=ne(""),Fe=ne(""),Qe;function Oe(i,l,a){const d=new Set(f.documents.filter($=>$.manifestId===i).map($=>$.pageNumber)),x=l.filter($=>!d.has($));let G="",_="";for(const $ of x){const q=String($).padStart(5,"0"),de=f.addPlaceholderDocument(`${i}_${q}.jpg`,i,$);G||(G=de),a!==void 0&&$===a&&(_=de)}const S=_||G;S&&(f.switchDocument(S),k(p,!1)),x.length>0&&bn&&xn(i).then($=>{$.length>0&&f.populateFromBackend(i,$)}).catch(()=>{})}async function Je(i,l,a=!1){if(!e(re)){k(re,"Resolving..."),k(Fe,"");try{const{manifestId:d,pages:x}=await gn(i,_=>{_.stage==="resolving"?k(re,"Resolving reference code..."):_.stage==="manifest"?k(re,`Found ${_.manifestId}, loading manifest...`):_.stage==="done"&&k(re,`Loading ${_.totalPages} pages...`)});l&&(f.volumeMetadata.set(d,l),f.volumeMetadata=new Map(f.volumeMetadata));const G=a&&x.length>0?x[Math.floor(Math.random()*x.length)]:void 0;Oe(d,x,G)}catch(d){k(Fe,d instanceof Error?d.message:"Failed to load volume",!0)}finally{k(re,"")}}}async function Ve(i){if(!(f.htr.pendingImageIds.has(i.id)||f.htr.running))if(f.htr.storedImages.has(i.id)||await f.loadDocumentImage(i.id),i.groups.length>0){i.lines=[],i.lineCounter=0;for(const l of i.groups)l.rect&&(l.regionId=f.htr.transcribeRegion(i.id,l.rect.x,l.rect.y,l.rect.w,l.rect.h),l.lineIds=[]);f.documents=[...f.documents]}else f.htr.run(i.id)}function st(){return new Promise(i=>{let l=!1;const a=()=>{const d=f.htr.stage;if(d!=="idle"&&d!=="done"&&(l=!0),l&&(d==="done"||d==="idle")){i();return}setTimeout(a,300)};setTimeout(a,500)})}async function et(i){const a=f.documents.filter(d=>d.manifestId===i).sort((d,x)=>(d.pageNumber??0)-(x.pageNumber??0)).filter(d=>d.groups.length===0||d.lines.length===0);if(a.length!==0){f.htr.batchProgress={current:0,total:a.length};for(let d=0;d<a.length;d++)f.htr.batchProgress={current:d,total:a.length},await f.loadDocumentImage(a[d].id),f.activeDocumentId=a[d].id,Ve(a[d]),await st(),a[d].manifestId&&f.scheduleAutoSave();f.htr.batchProgress=null}}Kt(()=>{f.htr.onRegionDetected=(l,a,d,x)=>{R?.clearRedetecting(a);const G=[];return f.updateDocumentLines(l,_=>{for(const S of x){const $=_.lineCounter++;_.lines=[..._.lines,{id:$,bbox:S,text:"",confidence:0,complete:!1}],G.push($)}_.groups=_.groups.map(S=>S.regionId===a?{...S,lineIds:G}:S)}),G},f.htr.onToken=(l,a,d)=>{f.updateDocumentLines(l,x=>{const G=x.lines.find(_=>_.id===a);G&&(G.text=d)})},f.htr.onLineComplete=(l,a,d,x)=>{f.updateDocumentLines(l,G=>{const _=G.lines.find(S=>S.id===a);_&&(_.text=d,_.confidence=x,_.complete=!0)})},f.htr.onRegionComplete=(l,a)=>{f.documents.find(x=>x.id===l)?.manifestId&&f.scheduleAutoSave()},f.htr.onLayoutDetected=(l,a)=>{const d=f.documents.find(x=>x.id===l);if(d){for(const x of a){d.groupCounter++;const G=f.htr.transcribeRegion(l,x.x,x.y,x.w,x.h);d.groups=[...d.groups,{id:`group-${d.groupCounter}`,name:`${x.label} (${Math.round(x.confidence*100)}%)`,lineIds:[],collapsed:!1,regionId:G,rect:{x:x.x,y:x.y,w:x.w,h:x.h}}]}f.documents=[...f.documents],k(p,!1)}};function i(){k(ve,!!document.fullscreenElement),setTimeout(()=>R?.resetView(),100)}return document.addEventListener("fullscreenchange",i),window.addEventListener("keydown",ye),()=>{window.removeEventListener("keydown",ye),document.removeEventListener("fullscreenchange",i)}});function tt(i,l){k(y,i,!0),l.target.setPointerCapture(l.pointerId)}function lt(i){if(!e(y))return;const a=i.target.parentElement.getBoundingClientRect(),d=(i.clientX-a.left)/a.width*100;e(y)==="left"?k(I,Math.min(40,Math.max(12,d)),!0):k(L,Math.min(40,Math.max(12,100-d)),!0)}function vt(i){k(y,null),i.target.releasePointerCapture(i.pointerId)}var O=oi(),te=J(O);{let i=Q(()=>!e(m)),l=Q(()=>!e(p));fn(te,{get catalogOpen(){return e(i)},get transcriptionOpen(){return e(l)},onToggleCatalog:()=>k(m,!e(m)),onToggleTranscription:()=>k(p,!e(p)),onSearch:async a=>{k(m,!1),await ln(),Qe?.setSearch(a)},onRandomVolume:async()=>{const{fetchRandomVolume:a}=await en(async()=>{const{fetchRandomVolume:d}=await import("../chunks/iNv42bPS.js");return{fetchRandomVolume:d}},[],import.meta.url);try{const d=await a();await Je(d.reference_code,d,!0)}catch(d){k(Fe,d instanceof Error?d.message:"Failed to load random volume",!0)}}})}var W=u(te,2);{var Ie=i=>{var l=Ur(),a=c(l),d=c(a,!0);s(a);var x=u(a,2);s(l),X(()=>A(d,f.htr.error)),U("click",x,()=>f.htr.error=""),h(i,l)};D(W,i=>{f.htr.error&&i(Ie)})}var t=u(W,2);{var b=i=>{var l=Or(),a=c(l,!0);s(l),X(()=>A(a,e(re))),h(i,l)};D(t,i=>{e(re)&&i(b)})}var T=u(t,2);{var o=i=>{var l=jr(),a=c(l),d=c(a,!0);s(a);var x=u(a,2);s(l),X(()=>A(d,e(Fe))),U("click",x,()=>k(Fe,"")),h(i,l)};D(T,i=>{e(Fe)&&i(o)})}var r=u(T,2),v=c(r);{var C=i=>{var l=Fr(),a=J(l),d=c(a);Dt(Nr(d,{onLoadVolume:(_,S)=>Je(_,S)}),_=>Qe=_,()=>Qe),s(a);var x=u(a,2);let G;X(()=>{Lt(a,`width: ${e(I)??""}%`),G=We(x,1,"w-px shrink-0 cursor-col-resize touch-none transition-all hover:w-1 hover:bg-primary/50 active:bg-primary group relative",null,G,{"bg-primary":e(y)==="left"})}),U("pointerdown",x,_=>tt("left",_)),U("pointermove",x,lt),U("pointerup",x,vt),U("dblclick",x,()=>k(m,!0)),h(i,l)};D(v,i=>{e(m)||i(C)})}var M=u(v,2),N=c(M);{var E=i=>{const l=Q(()=>e(P)&&e(P).lines.length>0&&e(P).lines.every(B=>B.complete)),a=Q(()=>f.htr.running||f.htr.pendingRegions.size>0||f.htr.pendingLines>0||f.htr.stage==="transcribing"||f.htr.stage==="loading_models"),d=Q(()=>e(P)?.lines.length??0),x=Q(()=>e(P)?.lines.filter(B=>B.complete).length??0);var G=ri(),_=J(G);{let B=Q(()=>e(P)?.imageUrl??null),z=Q(()=>`brightness(${e(ue).brightness}%) contrast(${e(ue).contrast}%) saturate(${e(ue).saturate}%)`);Dt(Bn(_,{get imageUrl(){return e(B)},get lines(){return e(ot)},currentLine:-1,get hoveredLine(){return f.hoveredLine},onHoverLine:V=>f.hoveredLine=V,get stage(){return f.htr.stage},selectedLines:new Set,onSelectLine:()=>{},onMarqueeSelect:()=>{},onRedetectRegion:(V,we,De,$e)=>{if(!e(P))return"";const oe=f.htr.transcribeRegion(e(P).id,V,we,De,$e);return e(P).groupCounter++,e(P).groups=[...e(P).groups,{id:`group-${e(P).groupCounter}`,name:`Group ${e(P).groupCounter}`,lineIds:[],collapsed:!1,regionId:oe,rect:{x:V,y:we,w:De,h:$e}}],f.documents=[...f.documents],oe},get groups(){return e(Te)},get selectMode(){return f.selectMode},get showTextOverlay(){return e(Ee)},get showBoxes(){return e(ke)},get imageFilter(){return e(z)}}),V=>R=V,()=>R)}var S=u(_,2);{var $=B=>{var z=Wr(),V=J(z);{var we=oe=>{var ie=Vr(),Se=c(ie);yn(Se,{class:"size-5"}),s(ie),U("click",ie,()=>f.navigatePage(-1)),h(oe,ie)};D(V,oe=>{e(_e).hasPrev&&oe(we)})}var De=u(V,2);{var $e=oe=>{var ie=Xr(),Se=c(ie);wn(Se,{class:"size-5"}),s(ie),U("click",ie,()=>f.navigatePage(1)),h(oe,ie)};D(De,oe=>{e(_e).hasNext&&oe($e)})}h(B,z)};D(S,B=>{e(_e)&&B($)})}var q=u(S,2);{var de=B=>{const z=Q(()=>f.volumeMetadata.get(e(P).manifestId));var V=Re(),we=J(V);{var De=$e=>{var oe=Kr(),ie=c(oe),Se=c(ie,!0);s(ie);var Ae=u(ie,2);{var je=Be=>{var Ue=Yr(),Mt=c(Ue,!0);s(Ue),X(()=>A(Mt,e(z).creator)),h(Be,Ue)};D(Ae,Be=>{e(z).creator&&Be(je)})}var rt=u(Ae,2);{var it=Be=>{var Ue=Gr(),Mt=c(Ue);s(Ue),X(()=>A(Mt,`${e(z).series_title??""}${e(z).volume_id?`, vol. ${e(z).volume_id}`:""}`)),h(Be,Ue)};D(rt,Be=>{e(z).series_title&&Be(it)})}var Xe=u(rt,2);{var bt=Be=>{var Ue=qr(),Mt=c(Ue,!0);s(Ue),X(()=>A(Mt,e(z).date_text)),h(Be,Ue)};D(Xe,Be=>{e(z).date_text&&Be(bt)})}var dt=u(Xe,2);{var Qt=Be=>{var Ue=Hr(),Mt=c(Ue,!0);s(Ue),X(()=>A(Mt,e(z).description)),h(Be,Ue)};D(dt,Be=>{e(z).description&&Be(Qt)})}var Yt=u(dt,2),Jt=c(Yt,!0);s(Yt),s(oe),X(()=>{A(Se,e(z).fonds_title),A(Jt,e(z).reference_code)}),h($e,oe)};D(we,$e=>{e(z)&&$e(De)})}h(B,V)};D(q,B=>{e(le)&&e(P)?.manifestId&&B(de)})}var Le=u(q,2),H=c(Le);{var F=B=>{const z=Q(()=>f.documents.filter(it=>it.manifestId===e(P).manifestId)),V=Q(()=>f.volumeMetadata.get(e(P).manifestId));var we=Qr(),De=J(we),$e=c(De,!0),oe=u($e),ie=c(oe);s(oe),s(De);var Se=u(De,2);{var Ae=it=>{var Xe=Zr(),bt=u(J(Xe),2),dt=c(bt,!0);s(bt),X(()=>A(dt,e(V).fonds_title)),h(it,Xe)};D(Se,it=>{e(V)&&it(Ae)})}var je=u(Se,2),rt=c(je);kn(rt,{class:"size-3"}),s(je),X(()=>{ut(De,"title",`Page ${e(P).pageNumber??"?"??""} of ${e(z).length??""}`),A($e,e(P).pageNumber??"?"),A(ie,`/${e(z).length??""}`),We(je,1,`size-6 rounded-full flex items-center justify-center transition-all cursor-pointer ${e(le)?"bg-white/30 text-white":"bg-white/10 text-white/50 hover:text-white hover:bg-white/20"}`)}),U("click",je,()=>k(le,!e(le))),h(B,we)};D(H,B=>{e(P)?.manifestId&&B(F)})}var K=u(H,2);{var me=B=>{var z=Jr(),V=u(J(z),2),we=c(V);s(V),X(()=>{ut(V,"title",`${e(x)??""} of ${e(d)??""} lines transcribed`),A(we,`${e(x)??""}/${e(d)??""}`)}),h(B,z)};D(K,B=>{e(d)>0&&B(me)})}var pe=u(K,2);{var Ke=B=>{var z=ei(),V=c(z);s(z),X(()=>{ut(z,"title",`${f.htr.pendingLines??""} lines currently being transcribed`),A(V,`${f.htr.pendingLines??""} in-flight`)}),h(B,z)};D(pe,B=>{f.htr.pendingLines>0&&B(Ke)})}var Z=u(pe,2);{var fe=B=>{var z=ti();h(B,z)};D(Z,B=>{f.saving&&B(fe)})}var he=u(Z,4),ae=c(he);{var Ce=B=>{Rn(B,{class:"size-4"})},ct=B=>{Zt(B,{class:"size-4"})};D(ae,B=>{e(l)?B(Ce):B(ct,-1)})}s(he);var Ze=u(he,2),Ne=c(Ze);Pn(Ne,{class:"size-4"}),s(Ze);var ze=u(Ze,2),be=c(ze);Cn(be,{class:"size-4"}),s(ze);var xe=u(ze,2),nt=c(xe);hn(nt,{class:"size-4"}),s(xe);var Ct=u(xe,2),wt=c(Ct),Nt=c(wt);zn(Nt,{class:"size-4"}),s(wt);var gt=u(wt,2);{var At=B=>{var z=ni(),V=c(z),we=u(c(V),2),De=c(we);s(we),s(V);var $e=u(V,2);yt($e);var oe=u($e,2),ie=u(c(oe),2),Se=c(ie);s(ie),s(oe);var Ae=u(oe,2);yt(Ae);var je=u(Ae,2),rt=u(c(je),2),it=c(rt);s(rt),s(je);var Xe=u(je,2);yt(Xe);var bt=u(Xe,2);s(z),X(()=>{A(De,`${e(ue).brightness??""}%`),A(Se,`${e(ue).contrast??""}%`),A(it,`${e(ue).saturate??""}%`)}),Pt($e,()=>e(ue).brightness,dt=>e(ue).brightness=dt),Pt(Ae,()=>e(ue).contrast,dt=>e(ue).contrast=dt),Pt(Xe,()=>e(ue).saturate,dt=>e(ue).saturate=dt),U("click",bt,()=>k(ue,{brightness:100,contrast:100,saturate:100},!0)),h(B,z)};D(gt,B=>{e(ce)&&B(At)})}s(Ct),s(Le);var kt=u(Le,2),$t=c(kt),Bt=c($t);$n(Bt,{class:"size-4"}),s($t);var St=u($t,4),jt=c(St);Mn(jt,{class:"size-3.5"}),s(St);var pt=u(St,4),Ft=c(pt);Ln(Ft,{class:"size-4"}),s(pt);var Rt=u(pt,4),Vt=c(Rt);In(Vt,{class:"size-3.5"}),s(Rt);var zt=u(Rt,4),Xt=c(zt);Sn(Xt,{class:"size-3.5"}),s(zt),s(kt),X(()=>{We(he,1,`size-8 rounded-full bg-white/10 flex items-center justify-center text-white/70 hover:text-white hover:bg-white/20 transition-all cursor-pointer disabled:opacity-30 disabled:cursor-not-allowed ${!e(l)&&!e(a)?"btn-glow":""}`),he.disabled=e(a),ut(he,"title",e(l)?"Re-transcribe page (Shift+click: whole volume)":"Transcribe page (Shift+click: whole volume)"),We(Ze,1,`size-8 rounded-full flex items-center justify-center transition-all cursor-pointer ${f.selectMode?"bg-primary text-white ring-2 ring-primary/40":"bg-white/10 text-white/70 hover:text-white hover:bg-white/20"}`),ut(Ze,"title",f.selectMode?"Switch to pan mode":"Draw region to transcribe"),We(ze,1,`size-8 rounded-full flex items-center justify-center transition-all cursor-pointer ${e(ke)?"bg-primary text-white ring-2 ring-primary/40":"bg-white/10 text-white/70 hover:text-white hover:bg-white/20"}`),ut(ze,"title",e(ke)?"Hide line boxes":"Show line boxes"),We(xe,1,`size-8 rounded-full flex items-center justify-center transition-all cursor-pointer ${e(Ee)?"bg-primary text-white ring-2 ring-primary/40":"bg-white/10 text-white/70 hover:text-white hover:bg-white/20"}`),ut(xe,"title",e(Ee)?"Hide text overlay":"Show transcriptions on image"),We(wt,1,`size-8 rounded-full flex items-center justify-center transition-all cursor-pointer ${e(ce)?"bg-white/30 text-white":"bg-white/10 text-white/70 hover:text-white hover:bg-white/20"}`)}),U("click",he,B=>{e(P)&&(B.shiftKey&&e(P).manifestId?et(e(P).manifestId):Ve(e(P)))}),U("click",Ze,()=>f.selectMode=!f.selectMode),U("click",ze,()=>k(ke,!e(ke))),U("click",xe,()=>k(Ee,!e(Ee))),U("click",wt,()=>k(ce,!e(ce))),U("click",$t,()=>R?.zoomIn()),U("click",St,()=>R?.resetView()),U("click",pt,()=>R?.zoomOut()),U("click",Rt,()=>{document.querySelector(".relative.overflow-hidden.flex-1")?.requestFullscreen(),setTimeout(()=>R?.resetView(),100)}),U("click",zt,()=>{if(!e(P)?.imageUrl)return;const B=window.open("");B&&(B.document.write(`<img src="${e(P).imageUrl}" style="max-width:100%">`),B.document.close(),B.onload=()=>{B.print(),B.close()})}),h(i,G)},g=i=>{var l=ii(),a=c(l);a.muted=!0;var d=u(a,2),x=c(d);{let G=Q(()=>!f.htr.modelsReady);Br(x,{onUpload:Me,get disabled(){return e(G)}})}s(d),s(l),h(i,l)};D(N,i=>{e(P)?i(E):i(g,-1)})}s(M);var Y=u(M,2);{var j=i=>{var l=ai(),a=J(l);let d;var x=u(a,2),G=c(x);br(G,{get documents(){return f.documents},get activeDocumentId(){return f.activeDocumentId},onSwitchDocument:_=>f.switchDocument(_),get hoveredLine(){return f.hoveredLine},onHoverLine:_=>f.hoveredLine=_,selectedLines:new Set,onSelectLine:()=>{},onToggleGroup:Pe,onRenameGroup:ge,onDeleteGroup:se,onRemoveVolume:_=>f.removeVolume(_),onTranscribeVolume:_=>et(_),onFocusGroup:(_,S)=>{if(_.length>0){const $=_.map(q=>e(P)?.lines.find(de=>de.id===q)?.bbox).filter(Boolean);if($.length>0){let q=1/0,de=1/0,Le=-1/0,H=-1/0;for(const F of $)F&&(q=Math.min(q,F.x),de=Math.min(de,F.y),Le=Math.max(Le,F.x+F.w),H=Math.max(H,F.y+F.h));R?.focusRect(q,de,Le-q,H-de)}}else S&&R?.focusRect(S.x,S.y,S.w,S.h)},onFocusLine:_=>{const S=e(P)?.lines.find($=>$.id===_);S&&R?.focusRect(S.bbox.x,S.bbox.y,S.bbox.w,S.bbox.h)},onEditLine:(_,S)=>{const $=e(P)?.lines.find(q=>q.id===_);$&&($.text=S,f.documents=[...f.documents],e(P)?.manifestId&&f.scheduleAutoSave())},get selectMode(){return f.selectMode},get pendingRegions(){return f.htr.pendingRegions},get pendingImageIds(){return f.htr.pendingImageIds}}),s(x),X(()=>{d=We(a,1,"w-[5px] shrink-0 cursor-col-resize touch-none transition-colors hover:bg-primary",null,d,{"bg-primary":e(y)==="right"}),Lt(x,`width: ${e(L)??""}%`)}),U("pointerdown",a,_=>tt("right",_)),U("pointermove",a,lt),U("pointerup",a,vt),U("dblclick",a,()=>k(p,!0)),h(i,l)};D(Y,i=>{e(p)||i(j)})}s(r),h(ee,O),Et()}Ot(["click","pointerdown","pointermove","pointerup","dblclick"]);export{pi as component};
|
_app/version.json
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"version":"
|
|
|
|
| 1 |
+
{"version":"1774087803157"}
|
flying-papers.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:772114a7dc379a2d48a362b54145eb42a3665abd0779bd165ac904b81bc83b9e
|
| 3 |
+
size 2388060
|
index.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
-
<link href="/_app/immutable/entry/start.
|
| 9 |
-
<link href="/_app/immutable/chunks/
|
| 10 |
<link href="/_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
-
<link href="/_app/immutable/entry/app.
|
| 12 |
<link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="/_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="/_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
@@ -19,15 +19,15 @@
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
-
|
| 23 |
base: ""
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
-
import("/_app/immutable/entry/start.
|
| 30 |
-
import("/_app/immutable/entry/app.
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
+
<link href="/_app/immutable/entry/start.Pgwzd_AB.js" rel="modulepreload">
|
| 9 |
+
<link href="/_app/immutable/chunks/CxPUfIb7.js" rel="modulepreload">
|
| 10 |
<link href="/_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
+
<link href="/_app/immutable/entry/app.C6p-sfGp.js" rel="modulepreload">
|
| 12 |
<link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="/_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="/_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
+
__sveltekit_tx1caf = {
|
| 23 |
base: ""
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
+
import("/_app/immutable/entry/start.Pgwzd_AB.js"),
|
| 30 |
+
import("/_app/immutable/entry/app.C6p-sfGp.js")
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
viewer.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
-
<link href="./_app/immutable/entry/start.
|
| 9 |
-
<link href="./_app/immutable/chunks/
|
| 10 |
<link href="./_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
-
<link href="./_app/immutable/entry/app.
|
| 12 |
<link href="./_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="./_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="./_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
@@ -19,15 +19,15 @@
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
-
|
| 23 |
base: new URL(".", location).pathname.slice(0, -1)
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
-
import("./_app/immutable/entry/start.
|
| 30 |
-
import("./_app/immutable/entry/app.
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
+
<link href="./_app/immutable/entry/start.Pgwzd_AB.js" rel="modulepreload">
|
| 9 |
+
<link href="./_app/immutable/chunks/CxPUfIb7.js" rel="modulepreload">
|
| 10 |
<link href="./_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
+
<link href="./_app/immutable/entry/app.C6p-sfGp.js" rel="modulepreload">
|
| 12 |
<link href="./_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="./_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="./_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
+
__sveltekit_tx1caf = {
|
| 23 |
base: new URL(".", location).pathname.slice(0, -1)
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
+
import("./_app/immutable/entry/start.Pgwzd_AB.js"),
|
| 30 |
+
import("./_app/immutable/entry/app.C6p-sfGp.js")
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
viewer/index.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
-
<link href="./_app/immutable/entry/start.
|
| 9 |
-
<link href="./_app/immutable/chunks/
|
| 10 |
<link href="./_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
-
<link href="./_app/immutable/entry/app.
|
| 12 |
<link href="./_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="./_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="./_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
@@ -19,15 +19,15 @@
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
-
|
| 23 |
base: new URL(".", location).pathname.slice(0, -1)
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
-
import("./_app/immutable/entry/start.
|
| 30 |
-
import("./_app/immutable/entry/app.
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
<title>RA-HTR</title>
|
| 7 |
<script>if(location.pathname==='/index.html')history.replaceState(null,'','/');</script>
|
| 8 |
+
<link href="./_app/immutable/entry/start.Pgwzd_AB.js" rel="modulepreload">
|
| 9 |
+
<link href="./_app/immutable/chunks/CxPUfIb7.js" rel="modulepreload">
|
| 10 |
<link href="./_app/immutable/chunks/BuF_Fr92.js" rel="modulepreload">
|
| 11 |
+
<link href="./_app/immutable/entry/app.C6p-sfGp.js" rel="modulepreload">
|
| 12 |
<link href="./_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
|
| 13 |
<link href="./_app/immutable/chunks/BhjCC-K4.js" rel="modulepreload">
|
| 14 |
<link href="./_app/immutable/chunks/DJL1CqKf.js" rel="modulepreload">
|
|
|
|
| 19 |
<div style="display: contents">
|
| 20 |
<script>
|
| 21 |
{
|
| 22 |
+
__sveltekit_tx1caf = {
|
| 23 |
base: new URL(".", location).pathname.slice(0, -1)
|
| 24 |
};
|
| 25 |
|
| 26 |
const element = document.currentScript.parentElement;
|
| 27 |
|
| 28 |
Promise.all([
|
| 29 |
+
import("./_app/immutable/entry/start.Pgwzd_AB.js"),
|
| 30 |
+
import("./_app/immutable/entry/app.C6p-sfGp.js")
|
| 31 |
]).then(([kit, app]) => {
|
| 32 |
kit.start(app, element);
|
| 33 |
});
|