@x18n/ui 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +4 -2
- package/dist/index.mjs +3 -2
- package/dist/nitro.json +1 -1
- package/dist/public/200.html +1 -1
- package/dist/public/404.html +1 -1
- package/dist/public/_nuxt/{DF0vjjh8.js → BMk3frKd.js} +1 -1
- package/dist/public/_nuxt/{DjCCuC3W.js → BQt3bm8c.js} +4 -4
- package/dist/public/_nuxt/BXMubO3c.js +1 -0
- package/dist/public/_nuxt/BdRzFi-7.js +1 -0
- package/dist/public/_nuxt/{pjS1_eVL.js → BksN_39l.js} +1 -1
- package/dist/public/_nuxt/{L4Dhp0Sv.js → BrQXMZiN.js} +1 -1
- package/dist/public/_nuxt/{Boxecvzt.js → BvWJ0ee6.js} +1 -1
- package/dist/public/_nuxt/By9SURJ0.js +1 -0
- package/dist/public/_nuxt/C-FN7NZ5.js +4 -0
- package/dist/public/_nuxt/{jwxOgCzJ.js → C2NDV-aj.js} +1 -1
- package/dist/public/_nuxt/{D08T24dG.js → C9NjIzeY.js} +1 -1
- package/dist/public/_nuxt/{Cuj77bTR.js → CEnmEDIF.js} +1 -1
- package/dist/public/_nuxt/CJYF9l4i.js +1 -0
- package/dist/public/_nuxt/CTHz3W6Z.js +1 -0
- package/dist/public/_nuxt/{D9175g8g.js → CYt0tzKv.js} +1 -1
- package/dist/public/_nuxt/CjABOUCt.js +1 -0
- package/dist/public/_nuxt/Cla6r_hp.js +1 -0
- package/dist/public/_nuxt/{C3YrgNlB.js → CmTOev3L.js} +1 -1
- package/dist/public/_nuxt/CqFP5-dM.js +1 -0
- package/dist/public/_nuxt/{f6bf8PNO.js → D0qDe1RK.js} +1 -1
- package/dist/public/_nuxt/{DwGgiVOP.js → DEHKzIZA.js} +1 -1
- package/dist/public/_nuxt/{CxBYt3qP.js → DFSrEpkt.js} +1 -1
- package/dist/public/_nuxt/DGZ47nDY.js +1 -0
- package/dist/public/_nuxt/DwfVoZK4.js +1 -0
- package/dist/public/_nuxt/DxKFtHBx.js +1 -0
- package/dist/public/_nuxt/GykjZmqe.js +1 -0
- package/dist/public/_nuxt/OCEG5gyJ.js +1 -0
- package/dist/public/_nuxt/builds/latest.json +1 -1
- package/dist/public/_nuxt/builds/meta/1768fa1c-81c1-455a-8b7e-07e2b05e0c06.json +1 -0
- package/dist/public/_nuxt/{CJjWC7Ka.js → codzHuXh.js} +1 -1
- package/dist/public/_nuxt/entry.BrYZ28rY.css +1 -0
- package/dist/public/_nuxt/error-404.BgnUIvx5.css +1 -0
- package/dist/public/_nuxt/error-500.BI0LH_MG.css +1 -0
- package/dist/public/_nuxt/{BuVS4UTW.js → rgsxZ82X.js} +1 -1
- package/dist/public/index.html +1 -1
- package/package.json +4 -4
- package/dist/public/_nuxt/6DTeintI.js +0 -1
- package/dist/public/_nuxt/BH143Pz-.js +0 -1
- package/dist/public/_nuxt/BQbrRyj1.js +0 -1
- package/dist/public/_nuxt/ByAXDZRg.js +0 -1
- package/dist/public/_nuxt/C5AT5PNH.js +0 -1
- package/dist/public/_nuxt/CAeV2zG7.js +0 -1
- package/dist/public/_nuxt/CugIO4Ok.js +0 -1
- package/dist/public/_nuxt/D8wRJGd0.js +0 -1
- package/dist/public/_nuxt/DGFmLyn4.js +0 -1
- package/dist/public/_nuxt/DSHArhRM.js +0 -1
- package/dist/public/_nuxt/EGsfZg42.js +0 -1
- package/dist/public/_nuxt/HmocOjc4.js +0 -4
- package/dist/public/_nuxt/MHlmqv3A.js +0 -1
- package/dist/public/_nuxt/builds/meta/ba464564-d83b-4115-af1e-9dbe9a6f368a.json +0 -1
- package/dist/public/_nuxt/entry.C19c3NgF.css +0 -1
- package/dist/public/_nuxt/error-404.B3F8lAkA.css +0 -1
- package/dist/public/_nuxt/error-500.BO-H0E44.css +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DevframeDefinition } from "devframe";
|
|
1
|
+
import { DevframeDefinition, DevframeNodeContext } from "devframe";
|
|
2
2
|
import { ExtractCandidate } from "@x18n/builtins/extractors";
|
|
3
3
|
import { Decision, EditOp, FileChange, KeyString, LocaleCode, MessageLeaf, PlaceholderProblem, Project, ProjectExplanation, Severity, TextRange, UsageKind, WireDiagnostic } from "@x18n/core";
|
|
4
4
|
//#region src/node/types.d.ts
|
|
@@ -284,7 +284,9 @@ interface RpcOptions {
|
|
|
284
284
|
}
|
|
285
285
|
//#endregion
|
|
286
286
|
//#region src/node/index.d.ts
|
|
287
|
+
/** Loads the projects when a host sets the devframe up, for hosts that own the working directory. */
|
|
288
|
+
export type UiProjectLoader = (ctx: DevframeNodeContext) => Promise<readonly UiProject[]>;
|
|
287
289
|
/** The x18n UI, RPC functions and MCP tools over loaded projects, as a devframe definition. */
|
|
288
|
-
export declare function createX18nDevframe(
|
|
290
|
+
export declare function createX18nDevframe(source: readonly UiProject[] | UiProjectLoader, options?: RpcOptions): DevframeDefinition;
|
|
289
291
|
//#endregion
|
|
290
292
|
export type { AgentCheckQuery, AgentDeleteQuery, AgentKeysQuery, AgentRenameQuery, AgentSetQuery, AgentUsagesQuery, AnalysisView, ApplyQuery, ApplyView, ChangeGroup, ChangeView, DiagnosticCounts, ExplainList, ExplainView, ExtractApplyQuery, ExtractPlanItem, ExtractQuery, HistoryView, KeyDetail, KeyQuery, KeyRow, KeyTable, LocaleSummary, MessageView, OpenQuery, PlanQuery, PlanView, ProjectList, ProjectQuery, ProjectSummary, PromptQuery, Snippet, UiEditOp, UiLocation, UiProject, UsageQuery, UsageView, RpcOptions as X18nDevframeOptions, X18nState };
|
package/dist/index.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { createLineIndex, errors, parseMessageBatch, placeholderProblems, render
|
|
|
6
6
|
import * as v from "valibot";
|
|
7
7
|
//#region package.json
|
|
8
8
|
var name = "@x18n/ui";
|
|
9
|
-
var version = "0.0.
|
|
9
|
+
var version = "0.0.14";
|
|
10
10
|
var description = "x18n UI as a devframe: dev server, static report, in-browser workspace and VS Code panel";
|
|
11
11
|
var homepage = "https://github.com/x18n-dev/x18n#readme";
|
|
12
12
|
//#endregion
|
|
@@ -657,7 +657,7 @@ function registerRpc(ctx, projects, options) {
|
|
|
657
657
|
//#endregion
|
|
658
658
|
//#region src/node/index.ts
|
|
659
659
|
/** The x18n UI, RPC functions and MCP tools over loaded projects, as a devframe definition. */
|
|
660
|
-
function createX18nDevframe(
|
|
660
|
+
function createX18nDevframe(source, options = {}) {
|
|
661
661
|
return defineDevframe({
|
|
662
662
|
id: "x18n",
|
|
663
663
|
name: "x18n",
|
|
@@ -669,6 +669,7 @@ function createX18nDevframe(projects, options = {}) {
|
|
|
669
669
|
importMetaUrl: import.meta.url,
|
|
670
670
|
clientAssets: fileURLToPath(new URL("./public", import.meta.url)),
|
|
671
671
|
async setup(ctx) {
|
|
672
|
+
const projects = typeof source === "function" ? await source(ctx) : source;
|
|
672
673
|
registerRpc(ctx, projects, options);
|
|
673
674
|
if (ctx.mode !== "dev") {
|
|
674
675
|
await Promise.all(projects.map((p) => p.project.loadHistory()));
|
package/dist/nitro.json
CHANGED
package/dist/public/200.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"./_nuxt/BQt3bm8c.js"}}</script><script>{const p=new URLSearchParams(location.hash.slice(1)),c=p.get('devframe_otp');if(c){sessionStorage.setItem('x18n:otp',c);history.replaceState(null,'',location.pathname+location.search+'#'+(p.get('route')||'/'))}}</script><link rel="stylesheet" href="./_nuxt/entry.BrYZ28rY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BQt3bm8c.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BeAZf7La.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/B4prFwj0.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/DoHg1T7s.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BbIaocwP.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BMk3frKd.js"><script type="module" src="./_nuxt/BQt3bm8c.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="./_nuxt/B48W2q7f.js"><link rel="prefetch" as="script" crossorigin href="./_nuxt/ChbLIx1c.js"><link rel="prefetch" as="style" crossorigin href="./_nuxt/error-404.BgnUIvx5.css"><link rel="prefetch" as="script" crossorigin href="./_nuxt/DFSrEpkt.js"><link rel="prefetch" as="style" crossorigin href="./_nuxt/error-500.BI0LH_MG.css"><link rel="prefetch" as="script" crossorigin href="./_nuxt/CEnmEDIF.js"><meta name="description" content="View and maintain the i18n messages of your project: coverage, keys, usages, diagnostics and extraction."><meta name="color-scheme" content="light dark"><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#0a0a0a" media="(prefers-color-scheme: dark)"><link rel="icon" href="./logo.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="./apple-touch-icon.png"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"./",buildId:"1768fa1c-81c1-455a-8b7e-07e2b05e0c06",buildAssetsDir:"./_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792798963095,false]</script></body></html>
|
package/dist/public/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>x18n</title><script type="importmap">{"imports":{"#entry":"./_nuxt/BQt3bm8c.js"}}</script><script>{const p=new URLSearchParams(location.hash.slice(1)),c=p.get('devframe_otp');if(c){sessionStorage.setItem('x18n:otp',c);history.replaceState(null,'',location.pathname+location.search+'#'+(p.get('route')||'/'))}}</script><link rel="stylesheet" href="./_nuxt/entry.BrYZ28rY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BQt3bm8c.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BeAZf7La.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/B4prFwj0.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/DoHg1T7s.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BbIaocwP.js"><link rel="modulepreload" as="script" crossorigin href="./_nuxt/BMk3frKd.js"><script type="module" src="./_nuxt/BQt3bm8c.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="./_nuxt/B48W2q7f.js"><link rel="prefetch" as="script" crossorigin href="./_nuxt/ChbLIx1c.js"><link rel="prefetch" as="style" crossorigin href="./_nuxt/error-404.BgnUIvx5.css"><link rel="prefetch" as="script" crossorigin href="./_nuxt/DFSrEpkt.js"><link rel="prefetch" as="style" crossorigin href="./_nuxt/error-500.BI0LH_MG.css"><link rel="prefetch" as="script" crossorigin href="./_nuxt/CEnmEDIF.js"><meta name="description" content="View and maintain the i18n messages of your project: coverage, keys, usages, diagnostics and extraction."><meta name="color-scheme" content="light dark"><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#0a0a0a" media="(prefers-color-scheme: dark)"><link rel="icon" href="./logo.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="./apple-touch-icon.png"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"./",buildId:"1768fa1c-81c1-455a-8b7e-07e2b05e0c06",buildAssetsDir:"./_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792798963097,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,E as t,K as n,Q as r,V as i,W as a,Y as o,Z as s,et as c,it as l,j as u,nt as d,rt as f,s as p,tt as m,v as h}from"./B4prFwj0.js";var g=`modulepreload`,ee=function(e,t){return new URL(e,t).href},_={},v=function(e){return e.pathname.endsWith(`.css`)},y=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},b=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=ee(t,n);let r=s(t),i=v(r);return y(_,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:g,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function x(e,t){return n()?(o(e,t),!0):!1}var S=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var C=Object.prototype.toString,te=e=>C.call(e)===`[object Object]`,w=()=>{},T=E();function E(){var e,t;return S&&!!((e=window)!=null&&(e=e.navigator)!=null&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)==null||(t=t.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function ne(...e){if(e.length!==1)return d(...e);let t=e[0];return typeof t==`function`?s(a(()=>({get:t,set:w}))):r(t)}function re(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return`cancel`in e&&Object.assign(n,{cancel:e.cancel,flush:e.flush,isPending:e.isPending}),n}var D=e=>e();function ie(e=D,t={}){let{initialState:n=`active`}=t,r=ne(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:c(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function O(e){return Array.isArray(e)?e:[e]}function ae(e){return e||h()}function oe(t,n,r={}){let{eventFilter:i=D,...a}=r;return e(t,re(i,n),a)}function se(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=ie(r,{initialState:i});return{stop:oe(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function k(e,n=!0,r){ae(r)?u(e,r):n?e():t(e)}function ce(t,n,r){return e(t,n,{...r,immediate:!0})}var A=S?window:void 0;S&&window.document,S&&window.navigator,S&&window.location;function j(e){let t=f(e);return t?.$el??t}function M(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=p(()=>{let t=O(f(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return ce(()=>[n.value?.map(e=>j(e))??[A].filter(e=>e!=null),O(f(n.value?e[1]:e[0])),O(l(n.value?e[2]:e[1])),f(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=te(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}var N=!1;function le(e,t,n={}){let{window:r=A,ignore:i=[],capture:a=!0,detectIframe:o=!1,controls:s=!1}=n;if(!r)return s?{stop:w,cancel:w,trigger:w}:w;if(T&&!N){N=!0;let e={passive:!0};Array.from(r.document.body.children).forEach(t=>t.addEventListener(`click`,w,e)),r.document.documentElement.addEventListener(`click`,w,e)}let c=!0,l=e=>f(i).some(t=>{if(typeof t==`string`)return Array.from(r.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{let n=j(t);return n&&(e.target===n||e.composedPath().includes(n))}});function u(e){let t=f(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=f(e),r=n.$.subTree&&n.$.subTree.children;return r==null||!Array.isArray(r)?!1:r.some(e=>e.el===t.target||t.composedPath().includes(e.el))}let p=n=>{let r=j(e);n.target!=null&&(!(r instanceof Element)&&u(e)&&d(e,n)||r&&r!==n.target&&!n.composedPath().includes(r)&&(`detail`in n&&n.detail===0&&(c=!l(n)),c?t(n):c=!0))},m=!1,h=[M(r,`click`,e=>{m||(m=!0,setTimeout(()=>{m=!1},0),p(e))},{passive:!0,capture:a}),M(r,`pointerdown`,t=>{let n=j(e);c=!l(t)&&!(!n||t.composedPath().includes(n))},{passive:!0}),o&&M(r,`blur`,n=>{setTimeout(()=>{let i=j(e),a=r.document.activeElement;for(;a?.shadowRoot;)a=a.shadowRoot.activeElement;a?.tagName===`IFRAME`&&!i?.contains(r.document.activeElement)&&t(n)},0)},{passive:!0})].filter(Boolean),g=()=>h.forEach(e=>e());return s?{stop:g,cancel:()=>{c=!1},trigger:e=>{c=!0,p(e),c=!1}}:g}function ue(){let e=m(!1),t=h();return t&&u(()=>{e.value=!0},t),e}function de(e){let t=ue();return p(()=>(t.value,!!e()))}var P=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},F=`__vueuse_ssr_handlers__`,fe=pe();function pe(){return F in P||(P[F]=P[F]||{}),P[F]}function me(e,t){return fe[e]||t}function he(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var ge={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},I=`vueuse-storage`;function _e(n,i,a,o={}){let{flush:s=`pre`,deep:c=!0,listenToStorageChanges:l=!0,writeDefaults:u=!0,mergeDefaults:d=!1,shallow:h,window:g=A,eventFilter:ee,onError:_=e=>{console.error(e)},initOnMounted:v}=o,y=(h?m:r)(typeof i==`function`?i():i),b=p(()=>f(n));if(!a)try{a=me(`getDefaultStorage`,()=>A?.localStorage)()}catch(e){_(e)}if(!a)return y;let x=f(i),S=he(x),C=o.serializer??ge[S],{pause:te,resume:w}=se(y,e=>ne(e),{flush:s,deep:c,eventFilter:ee});e(b,()=>D(),{flush:s});let T=!1;g&&l&&(a instanceof Storage?M(g,`storage`,e=>{(!v||T)&&D(e)},{passive:!0}):M(g,I,e=>{(!v||T)&&ie(e)})),v?k(()=>{T=!0,D()}):D();function E(e,t){if(g){let n={key:b.value,oldValue:e,newValue:t,storageArea:a};g.dispatchEvent(a instanceof Storage?new StorageEvent(`storage`,n):new CustomEvent(I,{detail:n}))}}function ne(e){try{let t=a.getItem(b.value);if(e==null)E(t,null),a.removeItem(b.value);else{let n=C.write(e);t!==n&&(a.setItem(b.value,n),E(t,n))}}catch(e){_(e)}}function re(e){let t=e?e.newValue:a.getItem(b.value);if(t==null)return u&&x!=null&&a.setItem(b.value,C.write(x)),x;if(!e&&d){let e=C.read(t);return typeof d==`function`?d(e,x):S===`object`&&!Array.isArray(e)?{...x,...e}:e}return typeof t==`string`?C.read(t):t}function D(e){if(!(e&&e.storageArea!==a)){if(e&&e.key==null)y.value=x;else if(!(e&&e.key!==b.value)){te();try{let t=C.write(y.value);(e===void 0||e?.newValue!==t)&&(y.value=re(e))}catch(e){_(e)}finally{e?t(w):w()}}}}function ie(e){D(e.detail)}return y}function ve(t,n,r={}){let{window:i=A,...a}=r,o,s=de(()=>i&&`ResizeObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},l=p(()=>{let e=f(t);return Array.isArray(e)?e.map(e=>j(e)):[j(e)]}),u=e(l,e=>{if(c(),s.value&&i){o=new ResizeObserver(n);for(let t of e)t instanceof Element&&o.observe(t,a)}},{immediate:!0,flush:`post`}),d=()=>{c(),u()};return x(d),{isSupported:s,stop:d}}function ye(t,n={width:0,height:0},r={}){let{window:i=A,box:a=`content-box`}=r,o=p(()=>{var e;return(e=j(t))==null||(e=e.namespaceURI)==null?void 0:e.includes(`svg`)}),s=m(n.width),c=m(n.height),{stop:l}=ve(t,([e])=>{let n=a===`border-box`?e.borderBoxSize:a===`content-box`?e.contentBoxSize:e.devicePixelContentBoxSize;if(i&&o.value){let e=j(t);if(e){let t=e.getBoundingClientRect();s.value=t.width,c.value=t.height}}else if(n){let e=O(n);s.value=e.reduce((e,{inlineSize:t})=>e+t,0),c.value=e.reduce((e,{blockSize:t})=>e+t,0)}else s.value=e.contentRect.width,c.value=e.contentRect.height},r);k(()=>{let e=j(t);if(e&&`offsetWidth`in e){if(a===`content-box`&&i){let t=i.getComputedStyle(e),n=Number.parseFloat(t.paddingLeft)+Number.parseFloat(t.paddingRight),r=Number.parseFloat(t.paddingTop)+Number.parseFloat(t.paddingBottom),a=Number.parseFloat(t.borderLeftWidth)+Number.parseFloat(t.borderRightWidth),o=Number.parseFloat(t.borderTopWidth)+Number.parseFloat(t.borderBottomWidth);s.value=e.offsetWidth-n-a,c.value=e.offsetHeight-r-o}else s.value=e.offsetWidth,c.value=e.offsetHeight}else e&&(s.value=n.width,c.value=n.height)});let u=e(()=>j(t),e=>{s.value=e?n.width:0,c.value=e?n.height:0});function d(){l(),u()}return{width:s,height:c,stop:d}}function L(e,t,n={}){let{window:r=A}=n;return _e(e,t,r?.localStorage,n)}function be(e,t){let{containerStyle:n,wrapperProps:r,scrollTo:i,calculateRange:a,currentList:o,containerRef:s}=`itemHeight`in t?Te(t,e):we(t,e);return{list:o,scrollTo:i,containerProps:{ref:s,onScroll:()=>{a()},style:n},wrapperProps:r}}function R(e){let t=m(null),n=ye(t),i=r([]),a=m(e);return{state:r({start:0,end:10}),source:a,currentList:i,size:n,containerRef:t}}function z(e,t,n){return r=>{if(typeof n==`number`)return Math.ceil(r/n);let{start:i=0}=e.value,a=0,o=0;for(let e=i;e<t.value.length;e++){let t=n(e);if(a+=t,o=e,a>r)break}return o-i}}function B(e,t){return n=>{if(typeof t==`number`)return Math.floor(n/t)+1;let r=0,i=0;for(let a=0;a<e.value.length;a++){let e=t(a);if(r+=e,r>=n){i=a;break}}return i+1}}function V(e,t,n,r,{containerRef:i,state:a,currentList:o,source:s}){return()=>{let c=i.value;if(c){let i=n(e===`vertical`?c.scrollTop:c.scrollLeft),l=r(e===`vertical`?c.clientHeight:c.clientWidth),u=i-t,d=i+l+t;a.value={start:u<0?0:u,end:d>s.value.length?s.value.length:d},o.value=s.value.slice(a.value.start,a.value.end).map((e,t)=>({data:e,index:t+a.value.start}))}}}function H(e,t){return n=>typeof e==`number`?n*e:t.value.slice(0,n).reduce((t,n,r)=>t+e(r),0)}function U(t,n,r,i,a){e([t.width,t.height,n,r,i],()=>{a()})}function W(e,t){return p(()=>typeof e==`number`?t.value.length*e:t.value.reduce((t,n,r)=>t+e(r),0))}var xe={horizontal:`scrollLeft`,vertical:`scrollTop`},Se={horizontal:`left`,vertical:`top`},G={behavior:`auto`,block:`start`,inline:`nearest`};function Ce(e,t,n,r,i){return(a,o=G)=>{if(!r.value)return;o={...G,...o};let s=0,c=o[e===`horizontal`?`inline`:`block`];if(c){let t=e===`horizontal`?r.value.clientWidth:r.value.clientHeight,o=typeof i==`number`?i:i(a);if(c===`center`)s=t/2-o/2;else if(c===`end`)s=t-o;else if(c===`nearest`){let i=r.value[xe[e]];n(a)>i+t/2&&(s=t-o)}}r.value.scrollTo({[Se[e]]:n(a)-s,behavior:o.behavior}),t()}}function we(e,t){let n=R(t),{state:r,source:i,currentList:a,size:o,containerRef:s}=n,c={overflowX:`auto`},{itemWidth:l,overscan:u=5}=e,d=z(r,i,l),f=V(`horizontal`,u,B(i,l),d,n),m=H(l,i),h=p(()=>m(r.value.start)),g=W(l,i);return U(o,i,g,s,f),{scrollTo:Ce(`horizontal`,f,m,s,l),calculateRange:f,wrapperProps:p(()=>({style:{height:`100%`,width:`${g.value-h.value}px`,marginLeft:`${h.value}px`,display:`flex`}})),containerStyle:c,currentList:a,containerRef:s}}function Te(e,t){let n=R(t),{state:r,source:i,currentList:a,size:o,containerRef:s}=n,c={overflowY:`auto`},{itemHeight:l,overscan:u=5}=e,d=z(r,i,l),f=V(`vertical`,u,B(i,l),d,n),m=H(l,i),h=p(()=>m(r.value.start)),g=W(l,i);return U(o,i,g,s,f),{calculateRange:f,scrollTo:Ce(`vertical`,f,m,s,l),containerStyle:c,wrapperProps:p(()=>({style:{width:`100%`,height:`${g.value-h.value}px`,marginTop:`${h.value}px`}})),currentList:a,containerRef:s}}var Ee={app:{name:`x18n`,loading:`Loading the project…`,error:`Could not connect: {message}`,project:`Project`,static:`Read-only report`,staticHint:"A snapshot built with `x18n build`. Run `x18n ui` to edit.",language:`Language`},auth:{label:`Authentication`,title:`Connect to x18n`,hint:"Enter the 6-digit code that `x18n ui` printed in the terminal.",code:`Auth code`,submit:`Connect`,rejected:`That code did not work. Check the terminal for the current one.`},nav:{overview:`Overview`,keys:`Keys`,usages:`Usages`,extract:`Extract`,project:`Project`},localeBar:{title:`Locales`,bar:`Locales to show`,toggle:`Show or hide {locale}`,shown:`{shown} of {total} shown`,showAll:`Show all`,noneShown:`Every locale is hidden. Pick one in the bar above.`,resetOrder:`Reset order`,flags:`Show flags`,reorder:`Drag, or press Alt and an arrow key, to reorder.`},overview:{keys:`Keys`,resources:`Resources`,usages:`Usages`,locales:`Locales`,coverage:`Coverage`,source:`source`,missing:`{missing} missing, {empty} empty`,diagnostics:`Diagnostics`,errors:`Errors: {count}`,warnings:`Warnings: {count}`,clean:`No problems found.`,presets:`Presets`,noPresets:`No preset detected.`,recent:`Recent changes`,noRecent:`Nothing changed since the page opened.`,outdated:`{count} outdated`},keys:{search:`Search keys and values`,namespace:`Namespace`,allNamespaces:`All namespaces`,missingIn:`Missing in`,anyLocale:`Any locale`,missingInLocale:`Missing in {locale}`,unused:`Unused`,withDiagnostics:`With problems`,count:`{shown} of {total} keys`,grid:`Keys and values per locale`,key:`Key`,unusedHint:`No code uses this key`,diagnosticsHint:`Problems on this key`,editValue:`Value of {key} in {locale}`,empty:`No keys match.`,helpMove:`Arrows or j/k to move`,helpEdit:`Enter to edit, Esc to cancel`,helpOpen:`o to open the key`,helpSearch:`/ to search`,outdated:`Outdated`,sort:`Sort`,sortKey:`Key`,sortRecent:`Recently changed`},value:{missing:`missing`,empty:`empty`},edit:{rejected:`Not saved: {key} in {locale}: {message}.`,placeholdersMissing:`missing placeholders {names}`,placeholdersExtra:`unexpected placeholders {names}`,saveAnyway:`Save anyway`,dismiss:`Dismiss`},detail:{label:`Key`,back:`Back to keys`,notFound:`This key is not defined.`,values:`Values`,edit:`Edit`,diagnostics:`Problems`,usages:`Usages ({count})`,noUsages:`No code uses this key.`,possible:`possible`,openInEditor:`Open in editor`,showAllLocales:`Show all locales`,file:`File`},prompt:{copy:`Copy translate prompt`,copied:`Copied`,hint:`Copy a prompt for an LLM or agent that translates the missing messages`,copyStale:`Copy prompt with outdated`,staleHint:`Copy a prompt for an LLM or agent that translates the missing messages and updates the outdated ones`,copyAll:`Copy translate prompt for all locales`,allHint:`Copy a prompt for an LLM or agent that translates what is missing in every locale`},locale:{label:`Locale`,openInGrid:`Show in the grid`,progress:`{translated} of {total} translated ({percent})`,missing:`Missing ({count})`,empty:`Empty ({count})`,problems:`Placeholder and syntax problems ({count})`,notFound:`This project has no such locale.`,complete:`Every key is translated.`,outdated:`Outdated ({count})`},diagnostics:{all:`All ({count})`,viewAll:`View all`,copyFix:`Copy fix prompt`,fixHint:`Copy a prompt for an LLM or agent that fixes every diagnostic of this project`,fixCodeHint:`Copy a prompt for an LLM or agent that fixes the {code} diagnostics`},usages:{missing:`Not defined ({count})`,unused:`Unused ({count})`,dynamic:`Dynamic ({count})`,all:`All ({count})`,missingHint:`Keys used in code but not defined in the source locale.`,unusedHint:`Keys defined in the source locale that no code uses.`,dynamicHint:`Usages with a computed key. Keys under their prefix count as used.`,filter:`Filter by file or key`},extract:{hint:`Hard-coded strings with a proposed key. Edit keys, untick strings to skip, then apply.`,none:`No hard-coded strings found.`,key:`Key`,apply:`Extract ({count})`,done:`Extracted keys: {count}. Changed files: {files}.`,strings:`Strings: {count}`},project:{presets:`Presets`,finders:`Locale finders`,resources:`Resources: {count}`,formats:`Formats`,scanners:`Scanners`,files:`Files: {count}`,problems:`Problems`,conflict:`.{extension}: {winner} wins over {loser}`,config:`Config and where each value comes from`,showAllPresets:`Show all presets`,plugins:`Plugins`,none:`Nothing found`,duplicates:`Skipped duplicate resources: {count}`,skipped:`Skipped presets and plugins`,rawConfig:`Raw config`},history:{title:`History`,local:`changed locally`,outdated:`outdated`,outdatedHint:`The source message changed after this translation`,sourceThen:`Source then`,sourceNow:`Source now`,more:`and {count} more`,locales:`{count} locales`},sidebar:{list:`List view`,tree:`Tree view`,filter:`Filter keys`,view:`Key list view`}};function K(e,t=``,n=new Map){for(let[r,i]of Object.entries(e))typeof i==`string`?n.set(`${t}${r}`,i):K(i,`${t}${r}.`,n);return n}var De=[`en`,`zh-Hans`,`zh-Hant`,`ja`,`ko`,`de`,`fr`,`es`,`pt-BR`,`ru`],Oe=Object.assign({"./locales/de.json":()=>b(()=>import(`./6DTeintI.js`).then(e=>e.default),[],import.meta.url),"./locales/es.json":()=>b(()=>import(`./BH143Pz-.js`).then(e=>e.default),[],import.meta.url),"./locales/fr.json":()=>b(()=>import(`./D8wRJGd0.js`).then(e=>e.default),[],import.meta.url),"./locales/ja.json":()=>b(()=>import(`./CugIO4Ok.js`).then(e=>e.default),[],import.meta.url),"./locales/ko.json":()=>b(()=>import(`./CAeV2zG7.js`).then(e=>e.default),[],import.meta.url),"./locales/pt-BR.json":()=>b(()=>import(`./BQbrRyj1.js`).then(e=>e.default),[],import.meta.url),"./locales/ru.json":()=>b(()=>import(`./C5AT5PNH.js`).then(e=>e.default),[],import.meta.url),"./locales/zh-Hans.json":()=>b(()=>import(`./MHlmqv3A.js`).then(e=>e.default),[],import.meta.url),"./locales/zh-Hant.json":()=>b(()=>import(`./DSHArhRM.js`).then(e=>e.default),[],import.meta.url)}),q=K(Ee),ke=`x18n:lang`,J=r(`en`),Ae=m(q);function je(e){let t;try{t=new Intl.Locale(e).maximize()}catch{return}return t.language===`zh`?t.script===`Hant`?`zh-Hant`:`zh-Hans`:t.language===`pt`?`pt-BR`:De.find(e=>e===t.language)}function Me(e){return new Intl.DisplayNames([e],{type:`language`}).of(e)??e}function Ne(){J.value=[new URLSearchParams(location.search).get(`lang`),localStorage.getItem(ke),...navigator.languages].map(e=>e?je(e):void 0).find(e=>e!==void 0)??`en`,i(async()=>{let e=J.value;document.documentElement.lang=e;let t=e===`en`?void 0:await Oe[`./locales/${e}.json`]?.();e===J.value&&(Ae.value=t?K(t):q)})}function Pe(e){J.value=e,localStorage.setItem(ke,e)}function Fe(e,t={}){return(Ae.value.get(e)??q.get(e)??e).replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r===void 0?e:typeof r==`number`?r.toLocaleString(J.value):r})}function Ie(e){return(e/100).toLocaleString(J.value,{style:`percent`,maximumFractionDigits:1})}function Le(e){try{return new Intl.DisplayNames([J.value],{type:`language`}).of(e)}catch{return}}var Re=[[`year`,31536e6],[`month`,2592e6],[`week`,6048e5],[`day`,864e5],[`hour`,36e5],[`minute`,6e4]];function ze(e){let t=e-Date.now(),[n,r]=Re.find(([,e])=>Math.abs(t)>=e)??[`second`,1e3];return new Intl.RelativeTimeFormat(J.value,{numeric:`auto`}).format(Math.round(t/r),n)}var Be=m(),Ve=m(),Y=r(),He=r(0),Ue=m([]),We=p(()=>Ve.value?.projects.find(e=>e.name===Y.value)),X=L(`x18n:locale-order`,{}),Z=p(()=>{let e=We.value;if(!e)return[];let t=[...e.locales.filter(t=>t.code===e.sourceLocale),...e.locales.filter(t=>t.code!==e.sourceLocale)],n=X.value[e.name]??[],r=e=>{let t=n.indexOf(e);return t===-1?n.length:t};return t.map((e,t)=>({locale:e,i:t})).sort((e,t)=>r(e.locale.code)-r(t.locale.code)||e.i-t.i).map(({locale:e})=>e)}),Ge=p(()=>!!X.value[Y.value??``]);function Ke(e,t){let n=Y.value;if(!n)return;let r=Z.value.map(e=>e.code).filter(t=>t!==e);r.splice(Math.max(0,Math.min(t,r.length)),0,e),X.value={...X.value,[n]:r}}function qe(){let{[Y.value??``]:e,...t}=X.value;X.value=t}var Q=L(`x18n:hidden-locales`,{}),$=p(()=>new Set(Q.value[Y.value??``]??[])),Je=p(()=>Z.value.filter(e=>!$.value.has(e.code)));function Ye(e){return!$.value.has(e)}function Xe(e){let t=Y.value;if(!t)return;let n=new Set($.value);n.delete(e)||n.add(e),Q.value={...Q.value,[t]:[...n]}}function Ze(){let{[Y.value??``]:e,...t}=Q.value;Q.value=t}function Qe(e){let t=m(),n=0;return i(()=>{let r=Be.value,i=Y.value;if(He.value,!r||!i)return;let a=++n;e(r,i).then(e=>{a===n&&(t.value=e)})}),t}export{J as C,be as D,L as E,b as O,Fe as S,le as T,ze as _,Z as a,Pe as b,Y as c,He as d,Ze as f,Me as g,Je as h,Ye as i,Ue as l,Qe as m,We as n,Ke as o,Xe as p,Ge as r,Ve as s,Be as t,qe as u,Ie as v,De as w,Ne as x,Le as y};
|
|
1
|
+
import{B as e,E as t,K as n,Q as r,V as i,W as a,Y as o,Z as s,et as c,it as l,j as u,nt as d,rt as f,s as p,tt as m,v as h}from"./B4prFwj0.js";var g=`modulepreload`,ee=function(e,t){return new URL(e,t).href},_={},v=function(e){return e.pathname.endsWith(`.css`)},y=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},b=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=ee(t,n);let r=s(t),i=v(r);return y(_,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:g,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function x(e,t){return n()?(o(e,t),!0):!1}var S=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var C=Object.prototype.toString,te=e=>C.call(e)===`[object Object]`,w=()=>{},T=E();function E(){var e,t;return S&&!!((e=window)!=null&&(e=e.navigator)!=null&&e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window)==null||(t=t.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function ne(...e){if(e.length!==1)return d(...e);let t=e[0];return typeof t==`function`?s(a(()=>({get:t,set:w}))):r(t)}function re(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return`cancel`in e&&Object.assign(n,{cancel:e.cancel,flush:e.flush,isPending:e.isPending}),n}var D=e=>e();function ie(e=D,t={}){let{initialState:n=`active`}=t,r=ne(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:c(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function O(e){return Array.isArray(e)?e:[e]}function ae(e){return e||h()}function oe(t,n,r={}){let{eventFilter:i=D,...a}=r;return e(t,re(i,n),a)}function se(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=ie(r,{initialState:i});return{stop:oe(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function k(e,n=!0,r){ae(r)?u(e,r):n?e():t(e)}function ce(t,n,r){return e(t,n,{...r,immediate:!0})}var A=S?window:void 0;S&&window.document,S&&window.navigator,S&&window.location;function j(e){let t=f(e);return t?.$el??t}function M(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=p(()=>{let t=O(f(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return ce(()=>[n.value?.map(e=>j(e))??[A].filter(e=>e!=null),O(f(n.value?e[1]:e[0])),O(l(n.value?e[2]:e[1])),f(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=te(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}var N=!1;function le(e,t,n={}){let{window:r=A,ignore:i=[],capture:a=!0,detectIframe:o=!1,controls:s=!1}=n;if(!r)return s?{stop:w,cancel:w,trigger:w}:w;if(T&&!N){N=!0;let e={passive:!0};Array.from(r.document.body.children).forEach(t=>t.addEventListener(`click`,w,e)),r.document.documentElement.addEventListener(`click`,w,e)}let c=!0,l=e=>f(i).some(t=>{if(typeof t==`string`)return Array.from(r.document.querySelectorAll(t)).some(t=>t===e.target||e.composedPath().includes(t));{let n=j(t);return n&&(e.target===n||e.composedPath().includes(n))}});function u(e){let t=f(e);return t&&t.$.subTree.shapeFlag===16}function d(e,t){let n=f(e),r=n.$.subTree&&n.$.subTree.children;return r==null||!Array.isArray(r)?!1:r.some(e=>e.el===t.target||t.composedPath().includes(e.el))}let p=n=>{let r=j(e);n.target!=null&&(!(r instanceof Element)&&u(e)&&d(e,n)||r&&r!==n.target&&!n.composedPath().includes(r)&&(`detail`in n&&n.detail===0&&(c=!l(n)),c?t(n):c=!0))},m=!1,h=[M(r,`click`,e=>{m||(m=!0,setTimeout(()=>{m=!1},0),p(e))},{passive:!0,capture:a}),M(r,`pointerdown`,t=>{let n=j(e);c=!l(t)&&!(!n||t.composedPath().includes(n))},{passive:!0}),o&&M(r,`blur`,n=>{setTimeout(()=>{let i=j(e),a=r.document.activeElement;for(;a?.shadowRoot;)a=a.shadowRoot.activeElement;a?.tagName===`IFRAME`&&!i?.contains(r.document.activeElement)&&t(n)},0)},{passive:!0})].filter(Boolean),g=()=>h.forEach(e=>e());return s?{stop:g,cancel:()=>{c=!1},trigger:e=>{c=!0,p(e),c=!1}}:g}function ue(){let e=m(!1),t=h();return t&&u(()=>{e.value=!0},t),e}function de(e){let t=ue();return p(()=>(t.value,!!e()))}var P=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},F=`__vueuse_ssr_handlers__`,fe=pe();function pe(){return F in P||(P[F]=P[F]||{}),P[F]}function me(e,t){return fe[e]||t}function he(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var ge={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},I=`vueuse-storage`;function _e(n,i,a,o={}){let{flush:s=`pre`,deep:c=!0,listenToStorageChanges:l=!0,writeDefaults:u=!0,mergeDefaults:d=!1,shallow:h,window:g=A,eventFilter:ee,onError:_=e=>{console.error(e)},initOnMounted:v}=o,y=(h?m:r)(typeof i==`function`?i():i),b=p(()=>f(n));if(!a)try{a=me(`getDefaultStorage`,()=>A?.localStorage)()}catch(e){_(e)}if(!a)return y;let x=f(i),S=he(x),C=o.serializer??ge[S],{pause:te,resume:w}=se(y,e=>ne(e),{flush:s,deep:c,eventFilter:ee});e(b,()=>D(),{flush:s});let T=!1;g&&l&&(a instanceof Storage?M(g,`storage`,e=>{(!v||T)&&D(e)},{passive:!0}):M(g,I,e=>{(!v||T)&&ie(e)})),v?k(()=>{T=!0,D()}):D();function E(e,t){if(g){let n={key:b.value,oldValue:e,newValue:t,storageArea:a};g.dispatchEvent(a instanceof Storage?new StorageEvent(`storage`,n):new CustomEvent(I,{detail:n}))}}function ne(e){try{let t=a.getItem(b.value);if(e==null)E(t,null),a.removeItem(b.value);else{let n=C.write(e);t!==n&&(a.setItem(b.value,n),E(t,n))}}catch(e){_(e)}}function re(e){let t=e?e.newValue:a.getItem(b.value);if(t==null)return u&&x!=null&&a.setItem(b.value,C.write(x)),x;if(!e&&d){let e=C.read(t);return typeof d==`function`?d(e,x):S===`object`&&!Array.isArray(e)?{...x,...e}:e}return typeof t==`string`?C.read(t):t}function D(e){if(!(e&&e.storageArea!==a)){if(e&&e.key==null)y.value=x;else if(!(e&&e.key!==b.value)){te();try{let t=C.write(y.value);(e===void 0||e?.newValue!==t)&&(y.value=re(e))}catch(e){_(e)}finally{e?t(w):w()}}}}function ie(e){D(e.detail)}return y}function ve(t,n,r={}){let{window:i=A,...a}=r,o,s=de(()=>i&&`ResizeObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},l=p(()=>{let e=f(t);return Array.isArray(e)?e.map(e=>j(e)):[j(e)]}),u=e(l,e=>{if(c(),s.value&&i){o=new ResizeObserver(n);for(let t of e)t instanceof Element&&o.observe(t,a)}},{immediate:!0,flush:`post`}),d=()=>{c(),u()};return x(d),{isSupported:s,stop:d}}function ye(t,n={width:0,height:0},r={}){let{window:i=A,box:a=`content-box`}=r,o=p(()=>{var e;return(e=j(t))==null||(e=e.namespaceURI)==null?void 0:e.includes(`svg`)}),s=m(n.width),c=m(n.height),{stop:l}=ve(t,([e])=>{let n=a===`border-box`?e.borderBoxSize:a===`content-box`?e.contentBoxSize:e.devicePixelContentBoxSize;if(i&&o.value){let e=j(t);if(e){let t=e.getBoundingClientRect();s.value=t.width,c.value=t.height}}else if(n){let e=O(n);s.value=e.reduce((e,{inlineSize:t})=>e+t,0),c.value=e.reduce((e,{blockSize:t})=>e+t,0)}else s.value=e.contentRect.width,c.value=e.contentRect.height},r);k(()=>{let e=j(t);if(e&&`offsetWidth`in e){if(a===`content-box`&&i){let t=i.getComputedStyle(e),n=Number.parseFloat(t.paddingLeft)+Number.parseFloat(t.paddingRight),r=Number.parseFloat(t.paddingTop)+Number.parseFloat(t.paddingBottom),a=Number.parseFloat(t.borderLeftWidth)+Number.parseFloat(t.borderRightWidth),o=Number.parseFloat(t.borderTopWidth)+Number.parseFloat(t.borderBottomWidth);s.value=e.offsetWidth-n-a,c.value=e.offsetHeight-r-o}else s.value=e.offsetWidth,c.value=e.offsetHeight}else e&&(s.value=n.width,c.value=n.height)});let u=e(()=>j(t),e=>{s.value=e?n.width:0,c.value=e?n.height:0});function d(){l(),u()}return{width:s,height:c,stop:d}}function L(e,t,n={}){let{window:r=A}=n;return _e(e,t,r?.localStorage,n)}function be(e,t){let{containerStyle:n,wrapperProps:r,scrollTo:i,calculateRange:a,currentList:o,containerRef:s}=`itemHeight`in t?Te(t,e):we(t,e);return{list:o,scrollTo:i,containerProps:{ref:s,onScroll:()=>{a()},style:n},wrapperProps:r}}function R(e){let t=m(null),n=ye(t),i=r([]),a=m(e);return{state:r({start:0,end:10}),source:a,currentList:i,size:n,containerRef:t}}function z(e,t,n){return r=>{if(typeof n==`number`)return Math.ceil(r/n);let{start:i=0}=e.value,a=0,o=0;for(let e=i;e<t.value.length;e++){let t=n(e);if(a+=t,o=e,a>r)break}return o-i}}function B(e,t){return n=>{if(typeof t==`number`)return Math.floor(n/t)+1;let r=0,i=0;for(let a=0;a<e.value.length;a++){let e=t(a);if(r+=e,r>=n){i=a;break}}return i+1}}function V(e,t,n,r,{containerRef:i,state:a,currentList:o,source:s}){return()=>{let c=i.value;if(c){let i=n(e===`vertical`?c.scrollTop:c.scrollLeft),l=r(e===`vertical`?c.clientHeight:c.clientWidth),u=i-t,d=i+l+t;a.value={start:u<0?0:u,end:d>s.value.length?s.value.length:d},o.value=s.value.slice(a.value.start,a.value.end).map((e,t)=>({data:e,index:t+a.value.start}))}}}function H(e,t){return n=>typeof e==`number`?n*e:t.value.slice(0,n).reduce((t,n,r)=>t+e(r),0)}function U(t,n,r,i,a){e([t.width,t.height,n,r,i],()=>{a()})}function W(e,t){return p(()=>typeof e==`number`?t.value.length*e:t.value.reduce((t,n,r)=>t+e(r),0))}var xe={horizontal:`scrollLeft`,vertical:`scrollTop`},Se={horizontal:`left`,vertical:`top`},G={behavior:`auto`,block:`start`,inline:`nearest`};function Ce(e,t,n,r,i){return(a,o=G)=>{if(!r.value)return;o={...G,...o};let s=0,c=o[e===`horizontal`?`inline`:`block`];if(c){let t=e===`horizontal`?r.value.clientWidth:r.value.clientHeight,o=typeof i==`number`?i:i(a);if(c===`center`)s=t/2-o/2;else if(c===`end`)s=t-o;else if(c===`nearest`){let i=r.value[xe[e]];n(a)>i+t/2&&(s=t-o)}}r.value.scrollTo({[Se[e]]:n(a)-s,behavior:o.behavior}),t()}}function we(e,t){let n=R(t),{state:r,source:i,currentList:a,size:o,containerRef:s}=n,c={overflowX:`auto`},{itemWidth:l,overscan:u=5}=e,d=z(r,i,l),f=V(`horizontal`,u,B(i,l),d,n),m=H(l,i),h=p(()=>m(r.value.start)),g=W(l,i);return U(o,i,g,s,f),{scrollTo:Ce(`horizontal`,f,m,s,l),calculateRange:f,wrapperProps:p(()=>({style:{height:`100%`,width:`${g.value-h.value}px`,marginLeft:`${h.value}px`,display:`flex`}})),containerStyle:c,currentList:a,containerRef:s}}function Te(e,t){let n=R(t),{state:r,source:i,currentList:a,size:o,containerRef:s}=n,c={overflowY:`auto`},{itemHeight:l,overscan:u=5}=e,d=z(r,i,l),f=V(`vertical`,u,B(i,l),d,n),m=H(l,i),h=p(()=>m(r.value.start)),g=W(l,i);return U(o,i,g,s,f),{calculateRange:f,scrollTo:Ce(`vertical`,f,m,s,l),containerStyle:c,wrapperProps:p(()=>({style:{width:`100%`,height:`${g.value-h.value}px`,marginTop:`${h.value}px`}})),currentList:a,containerRef:s}}var Ee={app:{name:`x18n`,loading:`Loading the project…`,error:`Could not connect: {message}`,project:`Project`,static:`Read-only report`,staticHint:"A snapshot built with `x18n build`. Run `x18n ui` to edit.",language:`Language`},auth:{label:`Authentication`,title:`Connect to x18n`,hint:"Enter the 6-digit code that `x18n ui` printed in the terminal.",code:`Auth code`,submit:`Connect`,rejected:`That code did not work. Check the terminal for the current one.`},nav:{overview:`Overview`,keys:`Keys`,usages:`Usages`,extract:`Extract`,project:`Project`},localeBar:{title:`Locales`,bar:`Locales to show`,toggle:`Show or hide {locale}`,shown:`{shown} of {total} shown`,showAll:`Show all`,noneShown:`Every locale is hidden. Pick one in the bar above.`,resetOrder:`Reset order`,flags:`Show flags`,reorder:`Drag, or press Alt and an arrow key, to reorder.`},overview:{keys:`Keys`,resources:`Resources`,usages:`Usages`,locales:`Locales`,coverage:`Coverage`,source:`source`,missing:`{missing} missing, {empty} empty`,diagnostics:`Diagnostics`,errors:`Errors: {count}`,warnings:`Warnings: {count}`,clean:`No problems found.`,presets:`Presets`,noPresets:`No preset detected.`,recent:`Recent changes`,noRecent:`Nothing changed since the page opened.`,outdated:`{count} outdated`},keys:{search:`Search keys and values`,namespace:`Namespace`,allNamespaces:`All namespaces`,missingIn:`Missing in`,anyLocale:`Any locale`,missingInLocale:`Missing in {locale}`,unused:`Unused`,withDiagnostics:`With problems`,count:`{shown} of {total} keys`,grid:`Keys and values per locale`,key:`Key`,unusedHint:`No code uses this key`,diagnosticsHint:`Problems on this key`,editValue:`Value of {key} in {locale}`,empty:`No keys match.`,helpMove:`Arrows or j/k to move`,helpEdit:`Enter to edit, Esc to cancel`,helpOpen:`o to open the key`,helpSearch:`/ to search`,outdated:`Outdated`,sort:`Sort`,sortKey:`Key`,sortRecent:`Recently changed`},value:{missing:`missing`,empty:`empty`},edit:{rejected:`Not saved: {key} in {locale}: {message}.`,placeholdersMissing:`missing placeholders {names}`,placeholdersExtra:`unexpected placeholders {names}`,saveAnyway:`Save anyway`,dismiss:`Dismiss`,save:`Save`,cancel:`Cancel`,hint:`Enter to save · Shift+Enter for a new line · Esc to cancel`},detail:{label:`Key`,back:`Back to keys`,notFound:`This key is not defined.`,values:`Values`,edit:`Edit`,diagnostics:`Problems`,usages:`Usages ({count})`,noUsages:`No code uses this key.`,possible:`possible`,openInEditor:`Open in editor`,showAllLocales:`Show all locales`,file:`File`},prompt:{copy:`Copy translate prompt`,copied:`Copied`,hint:`Copy a prompt for an LLM or agent that translates the missing messages`,copyStale:`Copy prompt with outdated`,staleHint:`Copy a prompt for an LLM or agent that translates the missing messages and updates the outdated ones`,copyAll:`Copy translate prompt for all locales`,allHint:`Copy a prompt for an LLM or agent that translates what is missing in every locale`},locale:{label:`Locale`,openInGrid:`Show in the grid`,progress:`{translated} of {total} translated ({percent})`,missing:`Missing ({count})`,empty:`Empty ({count})`,problems:`Placeholder and syntax problems ({count})`,notFound:`This project has no such locale.`,complete:`Every key is translated.`,outdated:`Outdated ({count})`},diagnostics:{all:`All ({count})`,viewAll:`View all`,copyFix:`Copy fix prompt`,fixHint:`Copy a prompt for an LLM or agent that fixes every diagnostic of this project`,fixCodeHint:`Copy a prompt for an LLM or agent that fixes the {code} diagnostics`},usages:{missing:`Not defined ({count})`,unused:`Unused ({count})`,dynamic:`Dynamic ({count})`,all:`All ({count})`,missingHint:`Keys used in code but not defined in the source locale.`,unusedHint:`Keys defined in the source locale that no code uses.`,dynamicHint:`Usages with a computed key. Keys under their prefix count as used.`,filter:`Filter by file or key`},extract:{hint:`Hard-coded strings with a proposed key. Edit keys, then extract one string, one file, or every ticked string.`,none:`No hard-coded strings found.`,key:`Key`,apply:`Extract ({count})`,done:`Extracted keys: {count}. Changed files: {files}.`,strings:`Strings: {count}`,one:`Extract this string`,existing:`Reuses an existing key`,new:`Creates a new key`,file:`Extract this file`,differs:`Its source message differs from this string; extraction keeps the existing messages.`},project:{presets:`Presets`,finders:`Locale finders`,resources:`Resources: {count}`,formats:`Formats`,scanners:`Scanners`,files:`Files: {count}`,problems:`Problems`,conflict:`.{extension}: {winner} wins over {loser}`,config:`Config and where each value comes from`,showAllPresets:`Show all presets`,plugins:`Plugins`,none:`Nothing found`,duplicates:`Skipped duplicate resources: {count}`,skipped:`Skipped presets and plugins`,rawConfig:`Raw config`},history:{title:`History`,local:`changed locally`,outdated:`outdated`,outdatedHint:`The source message changed after this translation`,sourceThen:`Source then`,sourceNow:`Source now`,more:`and {count} more`,locales:`{count} locales`},sidebar:{list:`List view`,tree:`Tree view`,filter:`Filter keys`,view:`Key list view`}};function K(e,t=``,n=new Map){for(let[r,i]of Object.entries(e))typeof i==`string`?n.set(`${t}${r}`,i):K(i,`${t}${r}.`,n);return n}var De=[`en`,`zh-Hans`,`zh-Hant`,`ja`,`ko`,`de`,`fr`,`es`,`pt-BR`,`ru`],Oe=Object.assign({"./locales/de.json":()=>b(()=>import(`./Cla6r_hp.js`).then(e=>e.default),[],import.meta.url),"./locales/es.json":()=>b(()=>import(`./CTHz3W6Z.js`).then(e=>e.default),[],import.meta.url),"./locales/fr.json":()=>b(()=>import(`./OCEG5gyJ.js`).then(e=>e.default),[],import.meta.url),"./locales/ja.json":()=>b(()=>import(`./DxKFtHBx.js`).then(e=>e.default),[],import.meta.url),"./locales/ko.json":()=>b(()=>import(`./By9SURJ0.js`).then(e=>e.default),[],import.meta.url),"./locales/pt-BR.json":()=>b(()=>import(`./DGZ47nDY.js`).then(e=>e.default),[],import.meta.url),"./locales/ru.json":()=>b(()=>import(`./CqFP5-dM.js`).then(e=>e.default),[],import.meta.url),"./locales/zh-Hans.json":()=>b(()=>import(`./GykjZmqe.js`).then(e=>e.default),[],import.meta.url),"./locales/zh-Hant.json":()=>b(()=>import(`./CJYF9l4i.js`).then(e=>e.default),[],import.meta.url)}),q=K(Ee),ke=`x18n:lang`,J=r(`en`),Ae=m(q);function je(e){let t;try{t=new Intl.Locale(e).maximize()}catch{return}return t.language===`zh`?t.script===`Hant`?`zh-Hant`:`zh-Hans`:t.language===`pt`?`pt-BR`:De.find(e=>e===t.language)}function Me(e){return new Intl.DisplayNames([e],{type:`language`}).of(e)??e}function Ne(){J.value=[new URLSearchParams(location.search).get(`lang`),localStorage.getItem(ke),...navigator.languages].map(e=>e?je(e):void 0).find(e=>e!==void 0)??`en`,i(async()=>{let e=J.value;document.documentElement.lang=e;let t=e===`en`?void 0:await Oe[`./locales/${e}.json`]?.();e===J.value&&(Ae.value=t?K(t):q)})}function Pe(e){J.value=e,localStorage.setItem(ke,e)}function Fe(e,t={}){return(Ae.value.get(e)??q.get(e)??e).replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r===void 0?e:typeof r==`number`?r.toLocaleString(J.value):r})}function Ie(e){return(e/100).toLocaleString(J.value,{style:`percent`,maximumFractionDigits:1})}function Le(e){try{return new Intl.DisplayNames([J.value],{type:`language`}).of(e)}catch{return}}var Re=[[`year`,31536e6],[`month`,2592e6],[`week`,6048e5],[`day`,864e5],[`hour`,36e5],[`minute`,6e4]];function ze(e){let t=e-Date.now(),[n,r]=Re.find(([,e])=>Math.abs(t)>=e)??[`second`,1e3];return new Intl.RelativeTimeFormat(J.value,{numeric:`auto`}).format(Math.round(t/r),n)}var Be=m(),Ve=m(),Y=r(),He=r(0),Ue=m([]),We=p(()=>Ve.value?.projects.find(e=>e.name===Y.value)),X=L(`x18n:locale-order`,{}),Z=p(()=>{let e=We.value;if(!e)return[];let t=[...e.locales.filter(t=>t.code===e.sourceLocale),...e.locales.filter(t=>t.code!==e.sourceLocale)],n=X.value[e.name]??[],r=e=>{let t=n.indexOf(e);return t===-1?n.length:t};return t.map((e,t)=>({locale:e,i:t})).sort((e,t)=>r(e.locale.code)-r(t.locale.code)||e.i-t.i).map(({locale:e})=>e)}),Ge=p(()=>!!X.value[Y.value??``]);function Ke(e,t){let n=Y.value;if(!n)return;let r=Z.value.map(e=>e.code).filter(t=>t!==e);r.splice(Math.max(0,Math.min(t,r.length)),0,e),X.value={...X.value,[n]:r}}function qe(){let{[Y.value??``]:e,...t}=X.value;X.value=t}var Q=L(`x18n:hidden-locales`,{}),$=p(()=>new Set(Q.value[Y.value??``]??[])),Je=p(()=>Z.value.filter(e=>!$.value.has(e.code)));function Ye(e){return!$.value.has(e)}function Xe(e){let t=Y.value;if(!t)return;let n=new Set($.value);n.delete(e)||n.add(e),Q.value={...Q.value,[t]:[...n]}}function Ze(){let{[Y.value??``]:e,...t}=Q.value;Q.value=t}function Qe(e){let t=m(),n=0;return i(()=>{let r=Be.value,i=Y.value;if(He.value,!r||!i)return;let a=++n;e(r,i).then(e=>{a===n&&(t.value=e)})}),t}export{J as C,be as D,L as E,b as O,Fe as S,le as T,ze as _,Z as a,Pe as b,Y as c,He as d,Ze as f,Me as g,Je as h,Ye as i,Ue as l,Qe as m,We as n,Ke as o,Xe as p,Ge as r,Ve as s,Be as t,qe as u,Ie as v,De as w,Ne as x,Le as y};
|