furifont 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +3 -3
- package/dist/client/200.html +1 -1
- package/dist/client/404.html +1 -1
- package/dist/client/_nuxt/B2JUvp84.js +1 -0
- package/dist/client/_nuxt/BT3b-zWn.js +1 -0
- package/dist/client/_nuxt/BaBNBiev.js +1 -0
- package/dist/client/_nuxt/CHjPDtV4.js +4 -0
- package/dist/client/_nuxt/CJJSNjyq.js +1 -0
- package/dist/client/_nuxt/CQLpGqLD.js +3 -0
- package/dist/client/_nuxt/Cmcq_Al0.js +3 -0
- package/dist/client/_nuxt/CyBtfuI_.js +3 -0
- package/dist/client/_nuxt/DNnooO8M.js +1 -0
- package/dist/client/_nuxt/{lFAKI2D3.js → DjNJVvMK.js} +1 -1
- package/dist/client/_nuxt/Kki0DvjP.js +1 -0
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/4f6d63ac-677f-4159-85f5-e2331fac408f.json +1 -0
- package/dist/client/_nuxt/dd6-oMIT.js +2 -0
- package/dist/client/_nuxt/entry.DbYzBu7U.css +1 -0
- package/dist/client/customize/index.html +1 -1
- package/dist/client/furifont.user.js +3 -3
- package/dist/client/index.html +1 -1
- package/dist/client/okurigana.json +774 -4191
- package/dist/client/reference/index.html +1 -1
- package/dist/client/report/index.html +1 -1
- package/dist/client/version.json +1 -1
- package/dist/{config-NmS4azuQ.mjs → config-CVYevUmF.mjs} +4 -4
- package/dist/devframe.mjs +2 -2
- package/dist/index.d.mts +9 -39
- package/dist/index.mjs +2 -2
- package/dist/{studio-CJIk4xnE.mjs → studio-BW0TGTYT.mjs} +27 -20
- package/package.json +4 -4
- package/dist/client/_nuxt/B7HtXrdR.js +0 -1
- package/dist/client/_nuxt/BT-EKmMU.js +0 -1
- package/dist/client/_nuxt/Bkx7_K1f.js +0 -3
- package/dist/client/_nuxt/Bzck4lmu.js +0 -1
- package/dist/client/_nuxt/Cax8MU2E.js +0 -1
- package/dist/client/_nuxt/Cj8LKW1j.js +0 -2
- package/dist/client/_nuxt/CmFwbX1G.js +0 -1
- package/dist/client/_nuxt/DAr951Yq.js +0 -1
- package/dist/client/_nuxt/DFtcLD73.js +0 -3
- package/dist/client/_nuxt/DHMCzW9E.js +0 -3
- package/dist/client/_nuxt/D_G0KgX8.js +0 -1
- package/dist/client/_nuxt/builds/meta/82c26edb-3432-469a-acfa-8475fa64227b.json +0 -1
- package/dist/client/_nuxt/entry.D1RJUMvH.css +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./dd6-oMIT.js","./CkUAspOr.js","./y07Wd5I9.js","./D4ezFGbh.js","./Cmcq_Al0.js","./BT3b-zWn.js","./DNnooO8M.js","./BJuAqPpj.js","./BaBNBiev.js","./Cl84O_XS.js","./DjNJVvMK.js","./CJJSNjyq.js","./CQLpGqLD.js","./B4Fx_Djw.js","./error-404.CaT3AK-0.css","./X45Acd-Y.js","./error-500.WL1uhYQu.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./y07Wd5I9.js";import{$ as t,A as n,Bt as r,C as i,E as a,F as o,G as s,Gt as c,H as l,Ht as u,I as d,K as f,Kt as p,L as m,M as h,N as g,P as _,R as v,S as y,T as b,U as x,W as S,Wt as ee,X as C,Y as w,Z as T,_ as E,at as D,bt as O,c as te,ct as ne,et as re,f as k,ft as ie,gt as ae,ht as oe,i as A,it as j,j as M,k as se,lt as ce,m as le,mt as ue,n as de,o as N,ot as fe,p as P,pt as F,r as pe,rt as me,s as he,u as ge,ut as _e,v as ve,vt as ye,w as I,y as be,yt as xe,z as Se,zt as L}from"./CkUAspOr.js";import{a as Ce,n as we,r as Te}from"./D4ezFGbh.js";import{$ as Ee,A as De,B as R,C as Oe,Ct as ke,D as Ae,E as z,F as je,G as B,H as V,I as Me,J as Ne,K as H,L as Pe,M as Fe,N as Ie,O as Le,P as Re,Q as ze,R as Be,S as Ve,St as He,T as Ue,U as We,V as Ge,W as Ke,X as qe,Y as U,Z as Je,_ as Ye,_t as Xe,a as Ze,at as Qe,b as $e,bt as et,c as tt,ct as W,d as nt,dt as rt,et as it,f as at,ft as ot,g as st,gt as ct,h as lt,ht as ut,it as G,j as dt,k as ft,l as K,lt as pt,m as q,mt,nt as ht,o as gt,ot as _t,p as vt,pt as yt,q as bt,r as xt,rt as St,s as Ct,st as wt,t as Tt,tt as Et,u as Dt,ut as Ot,v as kt,vt as At,w as J,x as jt,xt as Mt,y as Nt,yt as Pt,z as Ft}from"./Cl84O_XS.js";import{c as It,d as Lt,i as Rt,l as zt,n as Bt,p as Vt,r as Ht,s as Ut,t as Wt}from"./Cmcq_Al0.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Gt=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Kt=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,qt=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Jt(e,t){if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t)Yt(e);else return t}function Yt(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Xt(e,t={}){if(typeof e!=`string`)return e;if(e[0]===`"`&&e[e.length-1]===`"`&&e.indexOf(`\\`)===-1)return e.slice(1,-1);let n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case`true`:return!0;case`false`:return!1;case`undefined`:return;case`null`:return null;case`nan`:return NaN;case`infinity`:return 1/0;case`-infinity`:return-1/0}if(!qt.test(e)){if(t.strict)throw SyntaxError(`[destr] Invalid JSON`);return e}try{if(Gt.test(e)||Kt.test(e)){if(t.strict)throw Error(`[destr] Possible prototype pollution`);return JSON.parse(e,Jt)}return JSON.parse(e)}catch(n){if(t.strict)throw n;return e}}var Zt=class extends Error{constructor(e,t){super(e,t),this.name=`FetchError`,t?.cause&&!this.cause&&(this.cause=t.cause)}};function Qt(e){let t=e.error?.message||e.error?.toString()||``,n=e.request?.method||e.options?.method||`GET`,r=e.request?.url||String(e.request)||`/`,i=new Zt(`${`[${n}] ${JSON.stringify(r)}`}: ${e.response?`${e.response.status} ${e.response.statusText}`:`<no response>`}${t?` ${t}`:``}`,e.error?{cause:e.error}:void 0);for(let t of[`request`,`options`,`response`])Object.defineProperty(i,t,{get(){return e[t]}});for(let[t,n]of[[`data`,`_data`],[`status`,`status`],[`statusCode`,`status`],[`statusText`,`statusText`],[`statusMessage`,`statusText`]])Object.defineProperty(i,t,{get(){return e.response&&e.response[n]}});return i}var $t=new Set(Object.freeze([`PATCH`,`POST`,`PUT`,`DELETE`]));function en(e=`GET`){return $t.has(e.toUpperCase())}function tn(e){if(e===void 0)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`||t===null?!0:t===`object`?Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name===`Object`||typeof e.toJSON==`function`:!1}var nn=new Set([`image/svg`,`application/xml`,`application/xhtml`,`application/html`]),rn=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function an(e=``){if(!e)return`json`;let t=e.split(`;`).shift()||``;return rn.test(t)?`json`:t===`text/event-stream`?`stream`:nn.has(t)||t.startsWith(`text/`)?`text`:`blob`}function on(e,t,n,r){let i=sn(t?.headers??e?.headers,n?.headers,r),a;return(n?.query||n?.params||t?.params||t?.query)&&(a={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:a,params:a,headers:i}}function sn(e,t,n){if(!t)return new n(e);let r=new n(t);if(e)for(let[t,i]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(t,i);return r}async function cn(e,t){if(t){if(Array.isArray(t))for(let n of t)await n(e);else await t(e)}}var ln=new Set([408,409,425,429,500,502,503,504]),un=new Set([101,204,205,304]);function dn(e={}){let{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function i(e){let t=e.error&&e.error.name===`AbortError`&&!e.options.timeout||!1;if(e.options.retry!==!1&&!t){let t;t=typeof e.options.retry==`number`?e.options.retry:+!en(e.options.method);let n=e.response&&e.response.status||500;if(t>0&&(Array.isArray(e.options.retryStatusCodes)?e.options.retryStatusCodes.includes(n):ln.has(n))){let n=typeof e.options.retryDelay==`function`?e.options.retryDelay(e):e.options.retryDelay||0;return n>0&&await new Promise(e=>setTimeout(e,n)),a(e.request,{...e.options,retry:t-1})}}let n=Qt(e);throw Error.captureStackTrace&&Error.captureStackTrace(n,a),n}let a=async function(a,o={}){let s={request:a,options:on(a,o,e.defaults,n),response:void 0,error:void 0};if(s.options.method&&(s.options.method=s.options.method.toUpperCase()),s.options.onRequest&&(await cn(s,s.options.onRequest),s.options.headers instanceof n||(s.options.headers=new n(s.options.headers||{}))),typeof s.request==`string`&&(s.options.baseURL&&(s.request=Mt(s.request,s.options.baseURL)),s.options.query&&(s.request=He(s.request,s.options.query),delete s.options.query),`query`in s.options&&delete s.options.query,`params`in s.options&&delete s.options.params),s.options.body&&en(s.options.method)){if(tn(s.options.body)){let e=s.options.headers.get(`content-type`);typeof s.options.body!=`string`&&(s.options.body=e===`application/x-www-form-urlencoded`?new URLSearchParams(s.options.body).toString():JSON.stringify(s.options.body)),e||s.options.headers.set(`content-type`,`application/json`),s.options.headers.has(`accept`)||s.options.headers.set(`accept`,`application/json`)}else(`pipeTo`in s.options.body&&typeof s.options.body.pipeTo==`function`||typeof s.options.body.pipe==`function`)&&(`duplex`in s.options||(s.options.duplex=`half`))}let c;if(!s.options.signal&&s.options.timeout){let e=new r;c=setTimeout(()=>{let t=Error(`[TimeoutError]: The operation was aborted due to timeout`);t.name=`TimeoutError`,t.code=23,e.abort(t)},s.options.timeout),s.options.signal=e.signal}try{s.response=await t(s.request,s.options)}catch(e){return s.error=e,s.options.onRequestError&&await cn(s,s.options.onRequestError),await i(s)}finally{c&&clearTimeout(c)}if((s.response.body||s.response._bodyInit)&&!un.has(s.response.status)&&s.options.method!==`HEAD`){let e=(s.options.parseResponse?`json`:s.options.responseType)||an(s.response.headers.get(`content-type`)||``);switch(e){case`json`:{let e=await s.response.text(),t=s.options.parseResponse||Xt;s.response._data=t(e);break}case`stream`:s.response._data=s.response.body||s.response._bodyInit;break;default:s.response._data=await s.response[e]()}}return s.options.onResponse&&await cn(s,s.options.onResponse),!s.options.ignoreResponseError&&s.response.status>=400&&s.response.status<600?(s.options.onResponseError&&await cn(s,s.options.onResponseError),await i(s)):s.response},o=async function(e,t){return(await a(e,t))._data};return o.raw=a,o.native=(...e)=>t(...e),o.create=(t={},n={})=>dn({...e,...n,defaults:{...e.defaults,...n.defaults,...t}}),o}var fn=(function(){if(typeof globalThis<`u`)return globalThis;if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global;throw Error(`unable to locate global object`)})(),pn=fn.fetch?(...e)=>fn.fetch(...e):()=>Promise.reject(Error(`[ofetch] global.fetch is not supported!`)),mn=fn.Headers,hn=fn.AbortController,gn=dn({fetch:pn,Headers:mn,AbortController:hn}),_n=()=>window?.__NUXT__?.config||window?.useNuxtApp?.().payload?.config,vn=()=>_n().app,yn=()=>vn().baseURL,bn=()=>vn().buildAssetsDir,xn=(...e)=>Pt(Sn(),bn(),...e),Sn=(...e)=>{let t=vn(),n=t.cdnURL||t.baseURL;return e.length?Pt(n,...e):n};globalThis.__buildAssetsURL=xn,globalThis.__publicAssetsURL=Sn,globalThis.$fetch||(globalThis.$fetch=gn.create({baseURL:yn()}));var Cn=globalThis.$fetch;`global`in globalThis||(globalThis.global=globalThis);function wn(e,t){t.push(te),e.vueApp.use(t);let n=!0,r=()=>{n=!1,t.render()};t.hooks?.hook(`dom:beforeRender`,e=>{e.shouldRender=!n}),e.hooks.hook(`page:start`,()=>{n=!0}),e.hooks.hook(`page:finish`,()=>{e.isHydrating||r()}),e.hooks.hook(`app:error`,r),e.hooks.hook(`app:suspense:resolve`,r);let i=t.push.bind(t);t.push=((t,n)=>{let r=i(t,n),a=r.dispose.bind(r);return r.dispose=()=>{let t=e[`~transitionPromise`];t?t.finally(a):a()},r})}function Tn(e,t){if(typeof t==`function`&&t.key&&e.plugins.has(t.key))return;let n=typeof t==`function`?t(e):t,r=n.key||String(e.plugins.size+1);if(!e.plugins.get(r)){e.plugins.set(r,n);for(let t in n.hooks||{})e.hooks?.hook(t,n.hooks[t])}}function En(e,t={}){let n=!t.document,r=new Map,i={_entryCount:1,_h:0,plugins:new Map,resolvedOptions:t,ssr:n,entries:r,hooks:void 0,render:()=>e(i),use:e=>Tn(i,e),push(e,t){let a=t?._index??i._entryCount++,o=t?{...t}:{};delete o.head,delete o.onRendered,delete o._index;let s={_i:a,input:e,options:o};return r.set(a,s),{_i:a,dispose(){r.delete(a)},patch(e){n?(s.input=e,delete s._tags):s._pending=e,r.has(a)||r.set(a,s)}}}};return t.init?.forEach(e=>e&&i.push(e)),i}var Dn=new Set([`link`,`style`,`script`,`noscript`]),On=new Set([`title`,`titleTemplate`,`script`,`style`,`noscript`]),kn=new Set([`base`,`meta`,`link`,`style`,`script`,`noscript`]),An=new Set([`title`,`base`,`htmlAttrs`,`bodyAttrs`,`meta`,`link`,`style`,`script`,`noscript`]),jn=new Set([`base`,`title`,`titleTemplate`,`bodyAttrs`,`htmlAttrs`,`templateParams`]),Mn=new Set([`key`,`tagPosition`,`tagPriority`,`tagDuplicateStrategy`,`innerHTML`,`textContent`,`processTemplateParams`]),Nn=new Set([`templateParams`,`htmlAttrs`,`bodyAttrs`]),Pn=new Set([`theme-color`,`google-site-verification`,`author`,`og:locale:alternate`,`og:image`,`og:video`,`og:audio`,`article:author`,`article:tag`,`book:author`,`book:tag`,`twitter:image`]),Fn={critical:-8,high:-1,low:2},In=e=>typeof e==`number`?Number.isFinite(e):e;function Ln(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function Rn(e){let t=new le;for(let n in e||{})t.hook(n,e[n]);return t}function Y(e,t,n){if(e.hooks?._hooks?.[t]?.length)return e.hooks?.callHook(t,n)}function zn(e,t,n){let r=e.push,i=e;i.ssr=!1,i.hooks=t,i.dirty=!!i.dirty,i.use=e=>Tn(i,e),i.render=()=>n(i);function a(){t.callHook(`entries:updated`,i),i._b||i.render()}return i.invalidate=()=>{for(let e of i.entries.values())delete e._tags;i.dirty=!0,a()},i.push=(n,o)=>{let s=o?.onRendered?t.hook(`dom:rendered`,o.onRendered):void 0,c=r(n,o),l=e.entries.get(c._i);return l&&(l._o=n),i.dirty=!0,a(),{_i:c._i,patch(e){c.patch(e),i.dirty=!0,a()},dispose(){s?.(),e.entries.has(c._i)&&(c.dispose(),i.invalidate())}}},i}var Bn=/^(?:viewport|description|keywords|robots)$/,Vn=[`name`,`property`,`http-equiv`];function Hn(e){let t=e.indexOf(`:`);if(t===-1)return!1;let n=e.slice(t+1);return Pn.has(n)||n.startsWith(`og:image:`)||n.startsWith(`og:video:`)||n.startsWith(`og:audio:`)||n.startsWith(`twitter:image:`)}function Un(e){let{props:t,tag:n,key:r}=e;if(jn.has(n))return n;if(n===`link`){if(t.rel===`canonical`)return`canonical`;if(t.rel===`alternate`&&t.hreflang)return`alternate:${t.hreflang}`}if(t.charset)return`charset`;if(n===`meta`)for(let e of Vn){let n=t[e];if(n!==void 0)return`meta:${n}${(typeof n!=`string`||!n.includes(`:`))&&!Bn.test(n)&&r?`:key:${r}`:``}`}return r?`${n}:key:${r}`:t.id?`${n}:id:${t.id}`:n===`link`&&t.rel&&t.href?`link:${t.rel}:${t.href}`:On.has(n)&&(e.textContent||e.innerHTML)?`${n}:content:${e.textContent||e.innerHTML}`:void 0}function Wn(e){let t=e._h||e._d||e.textContent||e.innerHTML;if(t)return t;let n=Object.keys(e.props).sort(),r=`${e.tag}:`,i=``;for(let t of n)r+=`${i}${t}:${String(e.props[t])}`,i=`,`;return r}function Gn(e,t,n){if(n===`_resolver`)return e;typeof e==`function`&&(!n||n!==`titleTemplate`&&!n.startsWith(`on`))&&(e=e());let r=t?t(n,e):e;if(Array.isArray(r)){let e;for(let n=0;n<r.length;n++){let i=Gn(r[n],t);e?e[n]=i:i!==r[n]&&(e=r.slice(0,n),e[n]=i)}return e||r}if(r?.constructor===Object){let e;for(let n in r){let i=Ln(n),a=i?void 0:Gn(r[n],t,n);if(!e&&(i||a!==r[n])){e={};for(let t in r){if(t===n)break;e[t]=r[t]}}e&&!i&&(e[n]=a)}return e||r}return r}var Kn=/[\s"'<>/=\x00-\x1F\x7F]/;function qn(e,t){let n=e===`style`,r=n?new Map:new Set,i=e=>{if(e){if(n){let t=e.indexOf(`:`);t>0&&r.set(e.slice(0,t).trim(),e.slice(t+1).trim())}else e.split(` `).forEach(e=>e&&r.add(e))}};if(typeof t==`string`)(n?t.split(`;`):[t]).forEach(i);else if(Array.isArray(t))t.forEach(i);else if(t&&typeof t==`object`)for(let e in t){let a=t[e];a&&a!==`false`&&(n?r.set(e.trim(),String(a)):i(e))}return r}function Jn(e,t){if(e.props=e.props||{},!t)return e;if(e.tag===`templateParams`)return e.props=t,e;let n=kn.has(e.tag)||e.tag===`htmlAttrs`||e.tag===`bodyAttrs`;for(let r in t){if(Ln(r))continue;let i=r.startsWith(`data-`),a=n&&!Mn.has(r),o=a&&!i?r.toLowerCase():r;if(a&&(!o||Kn.test(o)))continue;let s=t[r];if(s===null)e.props[o]=null;else if(r===`class`||r===`style`)e.props[r]=qn(r,s);else if(Mn.has(r)){if((r===`textContent`||r===`innerHTML`)&&typeof s==`object`){let n=t.type||`application/json`;(n.endsWith(`json`)||n===`speculationrules`||n===`importmap`)&&(e.props.type=n,e[r]=JSON.stringify(s))}else e[r]=s}else if(s!==void 0){let t=String(s),n=e.tag===`meta`&&o===`content`;e.props[o]=t===`true`||t===``?i||n?t:!0:!s&&i&&t===`false`?`false`:s}}return e}function Yn(e,t){let n;return t.length&&(n=(e,n)=>{for(let r=0;r<t.length;r++)n=t[r](e,n);return n},e=n(void 0,e)),Gn(e,n)}function Xn(e,t){let n=Jn({tag:e,props:{}},typeof t==`object`&&typeof t!=`function`?t:{[e===`script`||e===`noscript`||e===`style`?`innerHTML`:`textContent`]:t});if(n.key&&Dn.has(n.tag)&&(n.props[`data-hid`]=n._h=n.key),n.tag===`script`&&typeof n.innerHTML==`object`&&(n.innerHTML=JSON.stringify(n.innerHTML),n.props.type=n.props.type||`application/json`),Array.isArray(n.props.content)){let e=[];for(let t of n.props.content)e.push({...n,props:{...n.props,content:t}});return e}return n}function Zn(e,t){if(Array.isArray(t))for(let n of t)e.push(n);else e.push(t)}function Qn(e,t){if(!e)return[];typeof e==`function`&&(e=e()),e=Yn(e,t);let n=[];for(let t in e){let r=e[t];if(r!==void 0){if(Array.isArray(r))for(let e of r)Zn(n,Xn(t,e));else Zn(n,Xn(t,r))}}return n}var $n=/</g,er=/<\/script/g,tr=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,nr=()=>100;function rr(e){for(let t in e)return!1;return!0}var ir=/^tags:|:render/;function ar(e,t){let n=(t[`entries:resolve`]?.length||0)+(t[`entries:normalize`]?.length||0);if(e._h!==n){e._h=n;for(let t of e.entries.values())delete t._tags}}function or(e){for(let t=0;t<e.length;t++){let n=e[t],r={...n.props};r.class instanceof Set&&(r.class=new Set(r.class)),r.style instanceof Map&&(r.style=new Map(r.style)),e[t]={...n,props:r}}}function sr(e,t){let n=e.tags,r=0;for(let t of e.tagMap.values())if(Array.isArray(t))for(let e of t)n[r++]=e;else n[r++]=t;n.length=r,t&&n.sort(tr)}function cr(e){let t=!1;for(let n of e.tags.sort(tr)){let r=n._d||Wn(n);if(!r)continue;let i=e.tagMap.get(r);if(!i)e.tagMap.set(r,n);else if((n.tagDuplicateStrategy||(Nn.has(n.tag)?`merge`:null)||(n.key&&n.key===i.key?`merge`:null))===`merge`){let t={...i.props};for(let e in n.props)t[e]=e===`style`?new Map([...i.props.style||new Map,...n.props[e]]):e===`class`?new Set([...i.props.class||[],...n.props[e]]):n.props[e];e.tagMap.set(r,{...n,props:t})}else n._p>>10==i._p>>10&&n.tag===`meta`&&Hn(r)?(e.tagMap.set(r,Object.assign([...Array.isArray(i)?i:[i],n],n)),t=!0):(n._w===i._w?n._p>i._p:n._w<i._w)&&e.tagMap.set(r,n)}return t}function lr(e,t){let n=e.tagMap.get(`title`),r=e.tagMap.get(`titleTemplate`);if(t._title=n?.textContent,!r)return;let i=r.textContent;if(t._titleTemplate=i,!i)return;let a=typeof i==`function`?i(n?.textContent):i;typeof a==`string`&&!t.plugins.has(`template-params`)&&(a=a.replace(`%s`,n?.textContent||``)),n?a===null?e.tagMap.delete(`title`):e.tagMap.set(`title`,{...n,textContent:a}):e.tagMap.set(`titleTemplate`,{...r,tag:`title`,textContent:a})}function ur(e){let t=0;for(let n of e){let{innerHTML:r,tag:i,props:a}=n;if(An.has(i)&&(!rr(a)||In(r)||In(n.textContent))&&(i!==`meta`||In(a.content)||a[`http-equiv`]||a.charset)){if(i===`script`&&(r||n.textContent)){let e=String(a.type),t=e.endsWith(`json`)||e===`importmap`||e===`speculationrules`,i=e=>t?(typeof e==`string`?e:JSON.stringify(e)).replace($n,`\\u003C`):typeof e==`string`?e.replace(er,`<\\/script`):e;n={...n},r&&(n.innerHTML=i(r)),n.textContent&&(n.textContent=i(n.textContent)),n._d=Un(n)}e[t++]=n}}return e.length=t,e}function dr(e,t){let n=t?.tagWeight??e.resolvedOptions._tagWeight??nr,r={tagMap:new Map,tags:[]},i=e.hooks?._hooks||{};ar(e,i);for(let t of e.entries.values())t._pending!==void 0&&(t.input=t._pending,delete t._pending,delete t._tags,delete t._precomputedTags);let a;(i[`entries:resolve`]?.length||i[`entries:normalize`]?.length)&&(a=[...e.entries.values()],i[`entries:resolve`]?.length&&Y(e,`entries:resolve`,{entries:a,...r})),ar(e,i);for(let t of a||e.entries.values()){let a=t._tags;if(!a){if(t._precomputedTags&&n===e.resolvedOptions._tagWeight&&!i[`entries:normalize`]?.length&&!i[`entries:resolve`]?.length&&(!t.options||rr(t.options)))a=t._precomputedTags;else{if(a=Qn(t.input,e.resolvedOptions.propResolvers||[]),t.options&&!rr(t.options))for(let e of a)Object.assign(e,t.options);if(i[`entries:normalize`]?.length){let n={tags:a,entry:t};Y(e,`entries:normalize`,n),a=n.tags}for(let e=0;e<a.length;e++){let r=a[e];r._w=n(r),r._p=(t._i<<10)+e,r._d=Un(r),r._d||(r._h=Wn(r))}t._tags=a}}r.tags.push(...a)}for(let e in i)if(i[e]?.length&&ir.test(e)){or(r.tags);break}let o=cr(r);return lr(r,e),sr(r,o),Y(e,`tags:beforeResolve`,r),Y(e,`tags:resolve`,r),Y(e,`tags:afterResolve`,r),ur(r.tags)}var fr=/\s+/;function pr(e={}){return t=>gr(t,e)}function mr(e){for(let t of e.entries.values())if(t._pending!==void 0)return!0;return!1}function hr(e,t){let n={_d:t,_t:t.title,_e:new Map([[`htmlAttrs`,t.documentElement],[`bodyAttrs`,t.body]]),_p:{},_s:{},_l:new Map};for(let t of e.entries.values())if(t._o!==void 0){let e=t._o;for(let t of[`bodyAttrs`,`htmlAttrs`]){let r=e[t]?.class;if(typeof r==`string`){let e=n._e.get(t);for(let i of r.split(fr))i&&(n._p[`${t}:attr:class:${i}`]=()=>e.classList.remove(i))}}}return n}function gr(e,t={}){let n=t.document||e.resolvedOptions.document,r=e._dom;if(!n||e._du||r&&r._d===n&&!e.dirty&&!mr(e))return!1;let i=n.defaultView;e._du=!0;let a=!1;try{let o=function(e,t,n){d._s[e]=!n&&f[e]||t,delete f[e]},s=function(e,t,n,r,i,a){let s=`${e}:event:${t}`,c=d._l.get(s);if(c&&c[0]===a&&c[1]===n&&c[2]===r){o(s,c[4]);return}c?.[4]();let l=`data-${t}`,u=(e=>r.call(i,e)),f=()=>{a.removeEventListener(n,u),i.getAttribute(l)===``&&i.removeAttribute(l),d._l.get(s)?.[3]===u&&d._l.delete(s)};a.addEventListener(n,u),d._l.set(s,[a,n,r,u,f]),i.setAttribute(l,``),o(s,f,!0)},c=function({id:e,$el:t,tag:n}){if(d._e.set(e,t),!n.tag.endsWith(`Attrs`)){let r=n.textContent;r!=null&&r!==``&&(r!==t.textContent&&(t.textContent=r),o(`${e}:text`,()=>{t.textContent===r&&(t.textContent=``)},!0));let i=n.innerHTML;i!=null&&i!==``&&(i!==t.innerHTML&&(t.innerHTML=i),o(`${e}:html`,()=>{t.innerHTML===i&&(t.innerHTML=``)},!0));let a=`${e}:el`;o(a,f[a]||(()=>{t?.remove(),d._e.delete(e)}))}for(let r in n.props){let a=n.props[r];if(r[0]===`o`&&r[1]===`n`&&typeof a==`function`){let o=r.slice(2);t?.dataset?.[`${r}fired`]&&a.call(t,new((i?.Event)||Event)(o)),s(e,r,o,a,t,n.tag===`bodyAttrs`&&i?i:t);continue}let c=`${e}:attr:${r}`;if(r===`class`&&a)for(let e of a){let n=`${c}:${e}`;o(n,f[n]||(()=>t.classList.remove(e))),t.classList.contains(e)||t.classList.add(e)}else if(r===`style`&&a)for(let[e,n]of a){let r=`${c}:${e}`;o(r,f[r]||(()=>t.style.removeProperty(e))),t.style.setProperty(e,n)}else a!==!1&&a!==null&&(t.getAttribute(r)!==a&&t.setAttribute(r,a===!0?``:String(a)),o(c,f[c]||(()=>t.removeAttribute(r))))}},l={shouldRender:!0,tags:[]};if(Y(e,`dom:beforeRender`,l),!l.shouldRender)return!1;let u=r;if(u?._d!==n){if(u){for(let e in u._s)u._s[e]();for(let e in u._p)u._p[e]();u._s=u._p={},u._e.clear(),u._l.clear()}u=void 0}u?u._p=u._s:u=hr(e,n),u._s={};let d=u,f=d._p,p=[],m={};e.dirty=!1;let h=dr(e,t.tagWeight?{tagWeight:t.tagWeight}:void 0),g=[],_={};for(let e of h){let t=_[e._d]||0,r=(t?`${e._d}:${t}`:e._d)||e._h,i={tag:e,id:r,shouldRender:!0};e.tag===`meta`&&e._d&&Hn(e._d)&&(_[e._d]=t+1),g.push(i),e.tag===`title`?(n.title=e.textContent,o(`title:`,()=>n.title=d._t)):(i.$el=d._e.get(r),i.$el?c(i):kn.has(e.tag)&&p.push(i))}if(p.length){let e=new Set(d._e.values());for(let t of[...n.body.children,...n.head.children]){let n=t.tagName.toLowerCase();if(!kn.has(n)||e.has(t))continue;let r={innerHTML:t.innerHTML};for(let e of t.getAttributeNames())r[e]=t.getAttribute(e);let i=Jn({tag:n,props:{}},r);i.key=t.getAttribute(`data-hid`)||void 0;let a=Un(i)||Wn(i),o=a,s=1;for(;d._e.has(o);)o=`${a}:${s++}`;d._e.set(o,t)}}for(let e of p){let t=d._e.get(e.id);e.$el=t||n.createElement(e.tag.tag),c(e),t||(m[e.tag.tagPosition||`head`]??=n.createDocumentFragment()).appendChild(e.$el)}m.head&&n.head.appendChild(m.head),m.bodyOpen&&n.body.insertBefore(m.bodyOpen,n.body.firstChild),m.bodyClose&&n.body.appendChild(m.bodyClose);for(let e in f)f[e]();e._dom=d,a=!0,Y(e,`dom:rendered`,{renders:g})}catch(t){throw e.dirty=!0,t}finally{e._du=!1}return a&&(e.dirty||mr(e))&&gr(e,t),a}var _r=e=>typeof e.tagPriority==`number`?e.tagPriority:100+(Fn[e.tagPriority]||0);function vr(e={}){e.document=e.document||(typeof window<`u`?document:void 0);let t=e.render||pr({document:e.document}),n=zn(En(t,{document:e.document,propResolvers:e.propResolvers,_tagWeight:_r,init:[]}),Rn(e.hooks),t);return e.plugins?.forEach(e=>n.use(e)),e.init?.forEach(e=>e&&n.push(e)),n}var yr=`usehead`;function br(){if(m()){let e=v(yr);if(e)return e}throw Error(`useHead() was called without provide context, ensure you call it through the setup() function.`)}function xr(e){return{install(t){t.config.globalProperties.$unhead=e,t.config.globalProperties.$head=e,t.provide(yr,e)}}.install}function Sr(e,t){return t&&typeof e==`function`&&(e.key=t),e}var Cr=/\\/g,wr=/</g,Tr=/"/g,Er=/%\w+(?:\.\w+)?/g,Dr=`%separator`;function Or(e,t,n=!1){let r;if(t===`s`||t===`pageTitle`)r=e.pageTitle;else if(t.includes(`.`)){let n=t.indexOf(`.`);r=e[t.substring(0,n)]?.[t.substring(n+1)]}else r=e[t];if(r!==void 0)return n?(r||``).replace(Cr,`\\\\`).replace(wr,`\\u003C`).replace(Tr,`\\"`):r||``}function kr(e,t,n,r=!1){if(typeof e!=`string`||!e.includes(`%`))return e;let i=e;try{i=decodeURI(e)}catch{}let a=i.match(Er);if(!a)return e;let o=e.includes(Dr);return e=e.replace(Er,e=>{if(e===Dr||!a.includes(e))return e;let n=Or(t,e.slice(1),r);return n===void 0?e:n}).trim(),o&&(e=e.split(Dr).map(e=>e.trim()).filter(e=>e!==``).join(n?` ${n} `:` `)),e}var Ar=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,jr=e=>e.includes(`:key`)?e:e.split(`:`).join(`:key:`),Mr=Sr({key:`aliasSorting`,hooks:{"tags:resolve":e=>{let t=!1;for(let n of e.tags){let r=n.tagPriority;if(!r)continue;let i=String(r);if(i.startsWith(`before:`)){let r=jr(i.slice(7)),a=e.tagMap.get(r);a&&(typeof a.tagPriority==`number`&&(n.tagPriority=a.tagPriority),n._p=a._p-1,t=!0)}else if(i.startsWith(`after:`)){let r=jr(i.slice(6)),a=e.tagMap.get(r);a&&(typeof a.tagPriority==`number`&&(n.tagPriority=a.tagPriority),n._p=a._p+1,t=!0)}}t&&(e.tags=e.tags.sort(Ar))}}}),Nr=Sr({key:`deprecations`,hooks:{"entries:normalize":({tags:e})=>{for(let t of e)t.props.children&&(t.innerHTML=t.props.children,delete t.props.children),t.props.hid&&(t.key=t.props.hid,delete t.props.hid),t.props.vmid&&(t.key=t.props.vmid,delete t.props.vmid),`body`in t.props&&(t.props.body&&(t.tagPosition=`bodyClose`),delete t.props.body),t.props.renderPriority!=null&&(t.tagPriority=t.props.renderPriority,delete t.props.renderPriority)}}});function X(e){return typeof e?.then==`function`}var Pr=256;function Fr(e,t){if(t===e.length)return;if(t===Pr){let n=Array(e.length),r=!1;for(;t<e.length;t++){let i=Z(e[t]);n[t]=i,r||=X(i)}return r?n:void 0}let n=Z(e[t]);if(X(n)){let r=Array(e.length);r[t]=n;for(let n=t+1;n<e.length;n++)r[n]=Z(e[n]);return r}let r=Fr(e,t+1);return r&&(r[t]=n),r}function Ir(e,t,n){if(n===t.length)return;if(n===Pr){let r=Array(t.length),i=!1;for(;n<t.length;n++){let a=Z(e[t[n]]);r[n]=a,i||=X(a)}return i?r:void 0}let r=Z(e[t[n]]);if(X(r)){let i=Array(t.length);i[n]=r;for(let r=n+1;r<t.length;r++)i[r]=Z(e[t[r]]);return i}let i=Ir(e,t,n+1);return i&&(i[n]=r),i}function Z(e){if(typeof e==`function`)return e;if(X(e))return Promise.resolve(e).then(Z);if(Array.isArray(e)){let t=Fr(e,0);return t?Promise.all(t):e}if(e?.constructor===Object){let t=Object.keys(e),n=Ir(e,t,0);if(n)return Promise.all(n).then(e=>Object.fromEntries(t.map((t,n)=>[t,e[n]])))}return e}var Lr=Sr(e=>{let t=new WeakMap;return{key:`promises`,hooks:{"entries:resolve":n=>{for(let r=n.entries.length-1;r>=0;r--){let i=n.entries[r],a=i.input;if(t.get(i)===a){n.entries.splice(r,1);continue}let o=Z(a);X(o)?(t.set(i,a),n.entries.splice(r,1),Promise.resolve(o).then(n=>{t.get(i)===a&&(t.delete(i),i.input=n,delete i._tags,e.invalidate?.())},()=>{t.get(i)===a&&t.delete(i)})):t.delete(i)}}}}},`promises`),Rr={meta:`content`,link:`href`,htmlAttrs:`lang`},zr=[`innerHTML`,`textContent`];function Br(e,t,n,r=!1){return typeof e==`string`&&e.includes(`%`)?kr(e,t,n,r):e}var Vr=Sr(e=>({key:`template-params`,hooks:{"tags:resolve":({tagMap:t,tags:n})=>{let r=t.get(`templateParams`)?.props||{},i=r.separator||`|`;delete r.separator,r.pageTitle=Br(r.pageTitle||e._title||``,r,i);for(let e of n){if(e.processTemplateParams===!1)continue;let t=Rr[e.tag];if(t&&typeof e.props[t]==`string`)e.props[t]=Br(e.props[t],r,i);else if(e.processTemplateParams||e.tag===`titleTemplate`||e.tag===`title`)for(let t of zr)typeof e[t]==`string`&&(e[t]=Br(e[t],r,i,e.tag===`script`&&typeof e.props.type==`string`&&e.props.type.endsWith(`json`)))}e._templateParams=r,e._separator=i},"tags:afterResolve":({tagMap:t})=>{let n=t.get(`title`);n?.textContent&&n.processTemplateParams!==!1&&(n.textContent=Br(n.textContent,e._templateParams,e._separator))}}}),`template-params`),Hr=Object.assign((e,t)=>_e(t)?xe(t):t,{_static:!0});function Ur(e,t={}){let n=t.head||br();return n.ssr?n.push(e||{},t):Wr(n,e,t)}function Wr(e,t,n={}){let r=ne();if(r&&!r.active)return{patch(){},dispose(){},_i:-1};let i=ue(!1);if(n.onRendered&&r){let e=n.onRendered;n={...n,onRendered:t=>r.run(()=>e(t))}}let a;return j(()=>{let r=i.value?{}:Gn(t,Hr);a?a.patch(r):a=e.push(r,n)}),_()&&(S(()=>{a.dispose()}),s(()=>{i.value=!0}),x(()=>{i.value=!1})),a}function Gr(e={}){let t=pr(),n,r=0;return n=vr({render:()=>{let e=++r;setTimeout(()=>{e===r&&t(n)},0)},...e}),n.install=xr(n),n}var Kr={disableDefaults:!0,plugins:[Nr,Lr,Vr,Mr]},qr=A({name:`nuxt:head`,enforce:`pre`,setup(e){wn(e,Gr(Kr))}}),Jr=/(:\w+)\([^)]+\)/g,Yr=/(:\w+)[?+*]/g,Xr=/:\w+/g,Zr=(e,t)=>t.path.replace(Jr,`$1`).replace(Yr,`$1`).replace(Xr,t=>e.params[t.slice(1)]?.toString()||``),Qr=(e,t)=>{let n=e.route.matched.find(t=>t.components?.default===e.Component.type),r=t??n?.meta.key??(n&&Zr(e.route,n));return typeof r==`function`?r(e.route):r},$r=(e,t)=>({default:()=>e?d(ve,e===!0?{}:e,t):t});function ei(e){return Array.isArray(e)?e:[e]}var ti=()=>({}),ni=()=>location.protocol+`//`+location.host;function ri(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),Ft(n,``)}return Ft(n,e)+r+i}function ii(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=ri(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){let{history:e}=window;e.state&&e.replaceState(V({},e.state,{scroll:lt()}),``)}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),{pauseListeners:c,listen:l,destroy:d}}function ai(e,t,n,r=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:null}}function oi(e){let{history:t,location:n}=window,r={value:ri(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:ni()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){let o=V({},t.state,ai(i.value.back,e,i.value.forward,!0),n,{position:i.value.position});a(e,o,!0),Ue(o.position,!0),r.value=e}function s(e,n){let o=V({},i.value,t.state,{forward:e,scroll:lt()});a(o.current,o,!0),a(e,V({},ai(r.value,e,null),{position:o.position+1},n),!1),Ue(o.position),r.value=e}return{location:r,state:i,push:s,replace:o}}function si(e){e=dt(e);let t=oi(e),n=ii(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=V({location:``,base:e,go:r,createHref:st.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var ci={type:0,value:``},li=/[a-zA-Z0-9_]/;function ui(e){if(!e)return[[]];if(e===`/`)return[[ci]];if(!Ke(e))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:li.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var di=`[^/]+?`,fi={sensitive:!1,strict:!1,start:!0,end:!0},pi=/[.+*?^${}()[\]/\\]/g;function mi(e,t){let n=V({},fi,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(pi,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||di;if(u!==di){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(B(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=B(c)?c.join(`/`):c;if(!l){if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`)}n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function hi(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function gi(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=hi(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(_i(r))return 1;if(_i(i))return-1}return i.length-r.length}function _i(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var vi={strict:!1,end:!0,sensitive:!1};function yi(e,t,n){let r=mi(ui(e.path),n),i=V(r,{record:e,parent:t,children:[],alias:[]});return t&&!i.record.aliasOf==!t.record.aliasOf&&t.children.push(i),i}function bi(e,t){let n=[],r=new Map;t=Ne(vi,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Si(e);s.aliasOf=r&&r.record;let l=Ne(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Si(V({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&!Ke(u)){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=yi(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!wi(d)&&o(e.name)),Oi(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:U}function o(e){if(Ae(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Ei(e,n);n.splice(t,0,e),e.record.name&&!wi(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw We(1,{location:e});s=i.record.name,a=V(xi(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&xi(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw We(1,{location:e,currentLocation:t});s=i.record.name,a=V({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Ti(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function xi(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Si(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ci(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ci(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function wi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ti(e){return e.reduce((e,t)=>V(e,t.meta),{})}function Ei(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;gi(e,t[i])<0?r=i:n=i+1}let i=Di(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Di(e){let t=e;for(;t=t.parent;)if(Oi(t)&&gi(e,t)===0)return t}function Oi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ki(e){let t=v(Je),n=v(qe),r=y(()=>{let n=O(e.to);return t.resolve(n)}),i=y(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(De.bind(null,i));if(o>-1)return o;let s=Pi(e[t-2]);return t>1&&Pi(i)===s&&a[a.length-1].path!==s?a.findIndex(De.bind(null,e[t-2])):o}),a=y(()=>i.value>-1&&Ni(n.params,r.value.params)),o=y(()=>i.value>-1&&i.value===n.matched.length-1&&ft(n.params,r.value.params));function s(n={}){if(Mi(n)){let n=t[O(e.replace)?`replace`:`push`](O(e.to)).catch(U);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:y(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function Ai(e){return e.length===1?e[0]:e}var ji=g({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:ki,setup(e,{slots:t}){let n=ie(ki(e)),{options:r}=v(Je),i=y(()=>({[Fi(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[Fi(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&Ai(t.default(n));return e.custom?r:d(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function Mi(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Ni(e,t){for(let n in t){let r=t[n],i=e[n];if(B(r)){if(!B(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}else if(r!==i)return!1}return!0}function Pi(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Fi=(e,t,n)=>e??t??n,Ii=g({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=v(ze),i=y(()=>e.route||r.value),a=v(it,0),o=y(()=>{let e=O(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),s=y(()=>i.value.matched[o.value]);C(it,y(()=>o.value+1)),C(bt,s),C(ze,i);let c=new Set;C(Ee,c);let u=ue(),f=q,{app:p}=_().appContext;return me(()=>[u.value,s.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!De(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=s.value,m=o&&o.components[a];if(!m)return Li(n.default,{Component:m,route:r});let h=o.props[a],g=h?h===!0?r.params:typeof h==`function`?h(r):h:null,_=e=>{e.component.isUnmounted&&(o.instances[a]=null)},v=e=>l(()=>{if(f===r||i.value!==r||e.el.getRootNode()!==p._container.getRootNode())return;let t=f;f=r;for(let e of c)e(r,t)}),y=d(m,V({},g,t,{onVnodeUnmounted:_,onVnodeMounted:v,onVnodeUpdated:v,ref:u}));return Li(n.default,{Component:y,route:r})||y}}});function Li(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var Ri=Ii;function zi(e){let t=e.matcher||bi(e.routes,e),n=e.parseQuery||Ie,r=e.stringifyQuery||Pe,i=e.history,a=R(),o=R(),s=R(),c=ae(q),u=ae(0),d=q;z&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let f=Ge.bind(null,e=>``+e),p=Ge.bind(null,Nt),m=Ge.bind(null,Ye);function h(e,n){let r,i;Ae(e)?(r=t.getRecordMatcher(e),i=n):i=e;let a=t.addRoute(i,r);return u.value++,()=>{a(),u.value++}}function g(e){let n=t.getRecordMatcher(e);n&&(t.removeRoute(n),u.value++)}function _(){t.clearRoutes(),u.value++}function v(){return t.getRoutes().map(e=>e.record)}function y(e){return!!t.getRecordMatcher(e)}function b(e,a){if(u.value,typeof e==`string`){a||=e.startsWith(`/`)?q:c.value;let r=Re(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return V(r,o,{params:m(o.params),redirectedFrom:void 0,href:s})}a=V({},a||(e.path!=null&&e.path.startsWith(`/`)&&!(`name`in e&&e.name)?q:c.value));let o;if(e.path!=null)o=V({},e,{path:Re(n,e.path,a.path).path});else{let t=V({},e.params);for(let e in t)t[e]??delete t[e];o=V({},e,{params:p(t)}),a.params=p(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=f(m(s.params));let d=Be(r,V({},e,{hash:kt(l),path:s.path})),h=i.createHref(d);return V({fullPath:d,hash:l,query:r===Pe?Fe(e.query):e.query||{}},s,{redirectedFrom:void 0,href:h})}function x(e){return typeof e==`string`?Re(n,e,c.value.path):V({},e)}function S(e,t){if(d!==e)return We(8,{from:t,to:e})}function ee(e){return T(e)}function C(e){return ee(V(x(e),{replace:!0}))}function w(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=x(i):{path:i},i.params={}),V({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=d=b(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,l=w(n,i);if(l)return T(V(x(l),{state:typeof l==`object`?V({},a,l.state):a,force:o,replace:s}),t||n);let u=n;u.redirectedFrom=t;let f;return!o&&Le(r,i,n)&&(f=We(16,{to:u,from:i}),ue(i,i,!0,!1)),(f?Promise.resolve(f):te(u,i)).catch(e=>H(e)?H(e,2)?e:le(e):se(e,u,i)).then(e=>{if(e){if(H(e,2))return T(V({replace:s},x(e.to),{state:typeof e.to==`object`?V({},a,e.to.state):a,force:o}),t||u)}else e=re(u,i,!0,s,a);return ne(u,i,e),e})}function E(e,t){let n=S(e,t);return n?Promise.reject(n):Promise.resolve()}function D(e){let t=fe.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function te(e,t){let n,[r,i,s]=$e(e,t);n=jt(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(J(r,e,t))});let c=E.bind(null,e,t);return n.push(c),F(n).then(()=>{n=[];for(let r of a.list())n.push(J(r,e,t));return n.push(c),F(n)}).then(()=>{n=jt(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(J(r,e,t))});return n.push(c),F(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter){if(B(r.beforeEnter))for(let i of r.beforeEnter)n.push(J(i,e,t));else n.push(J(r.beforeEnter,e,t))}return n.push(c),F(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=jt(s,`beforeRouteEnter`,e,t,D),n.push(c),F(n))).then(()=>{n=[];for(let r of o.list())n.push(J(r,e,t));return n.push(c),F(n)}).catch(e=>H(e,8)?e:Promise.reject(e))}function ne(e,t,n){s.list().forEach(r=>D(()=>r(e,t,n)))}function re(e,t,n,r,a){let o=S(e,t);if(o)return o;let s=t===q,l=z?history.state:{};n&&(r||s?i.replace(e.fullPath,V({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,ue(e,t,n,s),le()}let k;function ie(){k||=i.listen((e,t,n)=>{if(!P.listening)return;let r=b(e),a=w(r,P.currentRoute.value);if(a){T(V(a,{replace:!0,force:!0}),r).catch(U);return}d=r;let o=c.value;z&&n.delta&&je(Oe(o.fullPath,n.delta)),te(r,o).catch(e=>H(e,12)?e:H(e,2)?(T(V(x(e.to),{force:!0}),r).then(e=>{H(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(U),Promise.reject()):(n.delta&&i.go(-n.delta,!1),se(e,r,o))).then(e=>{e||=re(r,o,!1),e&&(n.delta&&!H(e,8)?i.go(-n.delta,!1):n.type===`pop`&&H(e,20)&&i.go(-1,!1)),ne(r,o,e)}).catch(U)})}let A=R(),j=R(),M;function se(e,t,n){le(e);let r=j.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ce(){return M&&c.value!==q?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function le(e){return M||(M=!e,ie(),A.list().forEach(([t,n])=>e?n(e):t()),A.reset()),e}function ue(t,n,r,i){let{scrollBehavior:a}=e;if(!z||!a)return Promise.resolve();let o=!r&&Ve(Oe(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return l().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&Me(e)).catch(e=>t===c.value&&se(e,t,n))}let de=e=>i.go(e),N,fe=new Set,P={currentRoute:c,listening:!0,addRoute:h,removeRoute:g,clearRoutes:_,hasRoute:y,getRoutes:v,resolve:b,options:e,push:ee,replace:C,go:de,back:()=>de(-1),forward:()=>de(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:j.add,isReady:ce,install(e){e.component(`RouterLink`,ji),e.component(`RouterView`,Ri),e.config.globalProperties.$router=P,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>O(c)}),z&&!N&&c.value===q&&(N=!0,ee(i.location).catch(e=>{}));let t={};for(let e in q)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(Je,P),e.provide(qe,oe(t)),e.provide(ze,c);let n=e.unmount;fe.add(e),e.unmount=function(){fe.delete(e),fe.size<1&&(d=q,k&&k(),k=null,c.value=q,N=!1,M=!1),n()}}};function F(e){return e.reduce((e,t)=>e.then(()=>D(t)),Promise.resolve())}return P}var Bi=_t(async e=>{if(!e.meta?.validate)return;let t=await Promise.resolve(e.meta.validate(e));if(t!==!0)return mt({fatal:!0,status:t&&(t.status||t.statusCode)||404,statusText:t&&(t.statusText||t.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}})}),Vi=e({docsBase:c,reporters:p}),Hi=`modulepreload`,Ui=function(e,t){return new URL(e,t).href},Wi={},Gi=function(e){return e.pathname.endsWith(`.css`)},Ki=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},Q=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=Ui(t,n);let r=s(t),i=Gi(r);return Ki(Wi,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`:Hi,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)})},qi=Cn;function Ji(e){return ti(e)}var Yi;function Xi(){let e;return e=qi(xn(`builds/meta/${he().app.buildId}.json`),{responseType:`json`}).then(e=>{if(!e||typeof e!=`object`||!Array.isArray(e.prerendered))throw Vi.NUXT_E5004();return e}),Yi=e,e.catch(t=>{Yi===e&&(Yi=void 0),Vi.NUXT_E5002({cause:t})}),e}function Zi(){return Yi||Xi()}function Qi(e){let t=typeof e==`string`?e:e.path;try{return Ji(t)}catch(e){return Vi.NUXT_E5003({path:t,cause:e}),{}}}var $i=[Bi,_t(e=>{let t=Qi({path:e.path});if(t.redirect){let n=t.redirect.includes(`#`)?t.redirect:t.redirect+e.hash;return ot(n)?(window.location.href=n,!1):n}})],ea={},ta=[{name:`customize`,path:`/customize`,component:()=>Q(()=>import(`./dd6-oMIT.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url)},{name:`reference`,path:`/reference`,component:()=>Q(()=>import(`./DjNJVvMK.js`),__vite__mapDeps([10,1,2,3,4,5,6]),import.meta.url)},{name:`report`,path:`/report`,component:()=>Q(()=>import(`./CJJSNjyq.js`),__vite__mapDeps([11,1,2,3,4,5,8,9]),import.meta.url)},{name:`index`,path:`/`,component:()=>Q(()=>import(`./CQLpGqLD.js`),__vite__mapDeps([12,1,2,9,3,4,5,6,7,8]),import.meta.url)}],na=/\/(?=$|[?#])/;function ra(e,t,n){let{pathname:r,search:i,hash:a}=t,o=e.indexOf(`#`);if(o>-1){let t=a.includes(e.slice(o))?e.slice(o).length:1,n=a.slice(t);return n[0]!==`/`&&(n=`/`+n),ke(n,``)}let s=ke(r,e),c=!n||Xe(s,n)?s:n;return c+(c.includes(`?`)?``:i)+a}var ia=A({name:`nuxt:router`,enforce:`pre`,async setup(e){let t=he().app.baseURL,n=K.history?.(t)??si(t),r=K.routes?await K.routes(ta)??ta:ta,i,a=zi({...K,scrollBehavior:(e,t,n)=>{if(t===q)i=n;else if(K.scrollBehavior){if(a.options.scrollBehavior=K.scrollBehavior,`scrollRestoration`in window.history){let e=a.beforeEach(()=>{e(),window.history.scrollRestoration=`manual`})}return K.scrollBehavior(e,q,i||n)}},history:n,routes:r});`scrollRestoration`in window.history&&(window.history.scrollRestoration=`auto`),e.vueApp.use(a);let o=ae(a.currentRoute.value);a.afterEach((e,t)=>{o.value=t}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>o.value});let s=ra(t,window.location,e.payload.path),c=ke(window.location.pathname,t),l=ae(a.currentRoute.value),u=()=>{l.value=a.currentRoute.value};a.afterEach((e,t)=>{let n=e.matched.at(-1)?.components?.default,r=t.matched.at(-1)?.components?.default;n===r?Qr({route:e,Component:{type:n}})===Qr({route:t,Component:{type:r}})&&u():e.matched.length<t.matched.length&&e.matched.every((e,n)=>e.components?.default===t.matched[n]?.components?.default)&&u()});let d={sync:u};for(let e in l.value)Object.defineProperty(d,e,{get:()=>l.value[e],enumerable:!0});e._route=oe(d),e._middleware||={global:[],named:{}};let f=Qe();a.afterEach(async(t,n,r)=>{delete e._processingMiddleware,!e.isHydrating&&f.value&&await e.runWithContext(St),r&&await e.callHook(`page:loading:end`)}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook(`page:loading:end`)});try{await a.isReady()}catch(t){await ht(e,t)}let p=s===a.currentRoute.value.fullPath?a.currentRoute.value:a.resolve(s),m=a.currentRoute.value.fullPath,h=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&s.replace(na,``)!==e.payload.path.replace(na,``)&&Xe(a.currentRoute.value.path,e.payload.path);u();function g(r){!e.isHydrating&&r.fullPath!==ra(t,window.location)&&n.push(r.fullPath)}a.beforeEach(t=>{if(!e.isHydrating&&ti(t.path).noScripts)return window.location.assign(a.resolve(t.fullPath).href),!1}),a.beforeResolve(e=>{if(e.matched.length||Xe(e.path,c))return;let n=new URL(Mt(e.fullPath,t),window.location.href);if(n.origin===window.location.origin)return window.location.assign(n),!1});let _=e.payload.state._layout;return a.beforeEach(async(t,n)=>{await e.callHook(`page:loading:start`),t.meta=ie(t.meta),e.isHydrating&&_&&!ce(t.meta.layout)&&(t.meta.layout=_),e._processingMiddleware=!0;{let r=new Set([...$i,...e._middleware.global]);for(let e of t.matched){let t=e.meta.middleware;if(t)for(let e of ei(t))r.add(e)}let i=Qi({path:t.path});if(i.appMiddleware)for(let e in i.appMiddleware)i.appMiddleware[e]?r.add(e):r.delete(e);for(let i of r){let r=typeof i==`string`?e._middleware.named[i]||await ea[i]?.().then(e=>e.default||e):i;if(!r)throw pt.NUXT_E2004({entry:String(i),validMiddleware:void 0});try{let i=await e.runWithContext(()=>r(t,n));if(!e.payload.serverRendered&&e.isHydrating&&(i===!1||i instanceof Error)){let t=i||mt({status:404,statusText:`Page Not Found: ${s}`});return await e.runWithContext(()=>G(t)),!1}if(i===!0)continue;if(i===!1)return i;if(i)return ut(i)&&i.fatal&&(await e.runWithContext(()=>G(i)),g(t)),i}catch(n){let r=mt(n);return r.fatal&&(await e.runWithContext(()=>G(r)),g(t)),r}}}}),a.afterEach(t=>{if(t.matched.length===0&&!f.value)return e.runWithContext(()=>G(mt({status:404,fatal:!1,statusText:`Page not found: ${t.fullPath}`,data:{path:t.fullPath}})))}),e.hooks.hookOnce(`app:created`,async()=>{try{if(`name`in p&&(p.name=void 0),a.currentRoute.value.fullPath===m){if(h){let t=a.resolve(e.payload.path);`name`in t&&(t.name=void 0),await a.replace({...t,force:!0});let n=()=>{e[`~restoreDeferredRoute`]&&(e[`~restoreDeferredRoute`]=void 0,a.currentRoute.value=a.resolve(s),u(),a.replace({...p,force:!0}).catch(()=>{}))};e[`~restoreDeferredRoute`]=n,e.hooks.hookOnce(`app:suspense:resolve`,n)}else await a.replace({...p,force:!0})}a.options.scrollBehavior=K.scrollBehavior}catch(t){await ht(e,t)}}),{provide:{router:a}}}}),aa=A(()=>{let e=W();Ct(()=>{e.beforeResolve(async()=>{await new Promise(e=>{setTimeout(e,100),requestAnimationFrame(()=>{setTimeout(e,0)})})})})}),oa=A(e=>{let t;async function n(){let r;try{r=await Zi()}catch(e){let t=e;if(!(`status`in t&&(t.status===404||t.status===403)))throw t}t&&clearTimeout(t),t=setTimeout(n,k);try{let n=await Cn(xn(`builds/latest.json`)+`?${Date.now()}`);n.id!==r?.id&&(e.hooks.callHook(`app:manifest:update`,n),t&&clearTimeout(t))}catch{}}Ct(()=>{t=setTimeout(n,k)})});function sa(e={}){let t=e.path||window.location.pathname,n=new URL(t,window.location.href);if(n.host!==window.location.host)throw pt.NUXT_E2010({path:t});if(n.protocol&&At(n.protocol))throw pt.NUXT_E2002({toPath:t,protocol:n.protocol});let r={};try{r=JSON.parse(sessionStorage.getItem(`nuxt:reload`)||`{}`)}catch{}if(e.force||r?.path!==t||r?.expires<Date.now()){try{sessionStorage.setItem(`nuxt:reload`,JSON.stringify({path:t,expires:Date.now()+(e.ttl??1e4)}))}catch{}if(e.persistState)try{sessionStorage.setItem(`nuxt:reload:state`,JSON.stringify({state:N().payload.state}))}catch{}window.location.pathname===t?window.location.reload():window.location.href=t}}var ca=A({name:`nuxt:chunk-reload-crawler`,setup(e){let t=!0;e.hooks.hookOnce(`app:suspense:resolve`,()=>{t=!1}),e.hook(`app:chunkError`,()=>{t&&yt(navigator.userAgent)&&sa()})}}),la=A({name:`nuxt:chunk-reload`,setup(e){let t=W(),n=he(),r=new Set;t.beforeEach(()=>{r.clear()}),e.hook(`app:chunkError`,({error:e})=>{r.add(e)});function i(e){sa({path:et(n.app.baseURL,e.fullPath),persistState:!0})}e.hook(`app:manifest:update`,()=>{t.beforeResolve(i)}),t.onError((e,t)=>{r.has(e)&&i(t)})}}),ua=A({name:`nuxt:island-link-navigation`,setup(e){}}),da=A({name:`nuxt:global-components`}),fa={},pa=[`route`,`payload`,`island`,`hint`],ma=12,ha={route:8,payload:8,island:4,hint:8};function ga(e={}){let t={...ha,...e.concurrency},n=e.total??ma,r=e.canPrefetch,i=e.defer,a={route:[],payload:[],island:[],hint:[]},o=pa.map(e=>a[e]),s=new WeakSet,c=new Map,l={route:0,payload:0,island:0,hint:0},u=0,d=new Map,f=new AbortController,p=new AbortController;p.abort();function m(e){c.get(e.key)===e&&c.delete(e.key)}function h(e){m(e),Promise.resolve().then(()=>e.run(p.signal,!1)).catch(()=>{})}function g(){if(!r||r())for(;u<n;){let e=pa.find(e=>a[e].length&&l[e]<t[e]);if(!e)return;let n=a[e].shift();_(n,s.delete(n))}}function _(e,t){let n=e.scope===`app`?f:new AbortController;e.scope===`navigation`&&d.set(e,n),l[e.priority]++,u++;let r=!1,a=()=>{r||(r=!0,l[e.priority]--,u--,d.delete(e),m(e),g())};n.signal.addEventListener(`abort`,a,{once:!0});let o=()=>Promise.resolve().then(()=>e.run(n.signal,t)).then(a,a);i?i(o,t,e.priority):o()}let v=(e,t)=>t!==void 0&&e.group===t&&e.priority!==`hint`;return{schedule(e){let t=[];for(let n of Array.isArray(e)?e:[e])c.has(n.key)?h(n):(c.set(n.key,n),t.push(n));for(let e=t.length-1;e>=0;e--)a[t[e].priority].unshift(t[e]);g()},promote(e){for(let t of o){let n=[],r=[];for(let i of t)i.group===e&&s.add(i),(i.group===e?n:r).push(i);t.length=0,t.push(...n,...r)}g()},reset(e){for(let t of o)for(let n=t.length-1;n>=0;n--){let r=t[n];r.scope===`navigation`&&!v(r,e)&&(t.splice(n,1),h(r))}for(let[t,n]of[...d])v(t,e)||n.abort();g()},resume:g}}var _a=1e3;function va(e,t,n){if(t||n===`route`)return e();let r=globalThis.scheduler;r?.postTask?r.postTask(e,{priority:`background`}).catch(()=>{}):tt(e,{timeout:_a})}function ya(e=N()){if(e._prefetch)return e._prefetch;let t=!1,n=ga({canPrefetch:()=>Ze()&&!t&&document.visibilityState!==`hidden`,defer:va});e._prefetch=n,navigator.connection?.addEventListener?.(`change`,()=>n.resume()),document.addEventListener(`visibilitychange`,()=>n.resume());let r=e.$router;return r.beforeEach(()=>{t=!0}),r.afterEach(e=>{t=!1,n.reset(gt(e.fullPath))}),r.onError(()=>{t=!1,n.resume()}),n}var ba=A({name:`nuxt:prefetch`,setup(e){let t=W();e.hooks.hook(`app:mounted`,()=>{t.beforeEach(async e=>{let t=e?.meta?.layout;typeof t==`string`&&t in fa&&await xt(fa[t])})});let{schedule:n}=ya(e);e.hooks.hook(`link:prefetch`,async e=>{if(ct(e))return;let r=t.resolve(e);if(!r)return;let i=r.meta.layout,a=ei(r.meta.middleware).filter(e=>typeof e==`string`);n({key:`route:chunks:${e}`,priority:`route`,scope:`navigation`,group:gt(e),run:e=>{if(e.aborted)return;let t=[];for(let e of a){let n=ea[e];typeof n==`function`&&t.push(n())}return typeof i==`string`&&i in fa&&t.push(xt(fa[i])),Promise.all(t).catch(()=>{})}})})}}),xa=A(()=>{}),Sa=e({docsBase:c,reporters:p});function Ca(e){let t=e||N();return t.ssrContext?.head||t.runWithContext(()=>{if(m()){let e=v(`usehead`);if(!e)throw Sa.NUXT_E6001();return e}})}function wa(e,t={}){return Ur(e,{head:t.head||Ca(t.nuxt),...t})}var Ta=A(()=>{let e=he().app.baseURL;wa({style:[{key:`furifont-faces`,innerHTML:Rt.map(t=>`@font-face{font-family:"${t.family}";font-display:swap;font-weight:250 900;ascent-override:88%;descent-override:12%;line-gap-override:0%;src:url("${e}${Vt(t,`woff2`)}") format("woff2")}`).join(`
|
|
3
|
+
`)}]})}),Ea=[{code:`en`,name:`English`},{code:`ja`,name:`日本語`},{code:`zh-Hans`,name:`简体中文`},{code:`zh-Hant`,name:`繁體中文`}],Da=`furifont:locale`;function Oa(e){return Ea.some(t=>t.code===e)}function ka(e){for(let t of e.map(e=>e.toLowerCase())){if(t.startsWith(`zh`))return/-(?:tw|hk|mo|hant)\b/.test(t)?`zh-Hant`:`zh-Hans`;if(t.startsWith(`ja`))return`ja`;if(t.startsWith(`en`))return`en`}return`en`}var Aa={meta:{title:`Furifont: furigana built into the font`,description:`A Japanese font that shows furigana by itself.`},nav:{demo:`Intro`,docs:`Docs`,customize:`Customize`,report:`Report`,github:`GitHub repository`,light:`Switch to light`,dark:`Switch to dark`,language:`Language`,rubyOff:`Hide the ruby`,rubyOn:`Show the ruby`},footer:{fonts:`The fonts use the {license}. They come from Source Han Sans and Source Han Serif.`,data:`The readings come from {jmdict}, {jmnedict}, {kanjidic} (EDRDG), {furigana}, {japanpost} (place names) and {desktoptetsu} (JR stations). They use the CC BY-SA 4.0 license.`,code:`The tools use the MIT license.`,report:`Report a wrong reading`,source:`Source on GitHub`,made:`Made by {author}`,supported:`Supported by {vercel} and {sponsors}`,sponsors:`sponsors`},copied:`Copied`,shuffle:`Show another sample`,editable:`Sample text. You can edit it.`,scripts:{hiragana:`Hiragana`,hepburn:`Romaji`},faces:{sans:`Sans`,serif:`Serif`},hero:{title1:`Furigana,`,title2:`set by the font.`,body:`Furifont is a Japanese font that shows furigana on the font itself. With the ligatures to adopt to pronunciation of words. Works everywhere supporting custom fonts.`,download:`Download the fonts`,build:`Build your own`},notice:`Furigana might be incorrect due to the limits of fonts, so keep that in mind.`,sections:{try:`Try it`,how:`How it works`,selectors:`Choosing a reading`,download:`Download`,anyPage:`On Websites`},playground:{script:`Ruby letters`,face:`Font style`,size:`Size / {size}px`,weight:`Weight / {weight}`,ruby:`Furigana`,okurigana:`Okurigana readings`,okuriganaHint:`This requires JavaScript. Font cannot handle okurigana due to browser's limitations.`,textHint:`Click the text to edit it.`,copy:`Copy the text`},how:{build:{title:`Customized build`,body:`Furifont is compiled from a base font, Source Han Sans or Serif. A build step reads a dictionary of thousands of words and draws the ruby into new glyphs. The result is a normal font file. It needs no JavaScript and no plugin.`},ligatures:{title:`Ligatures do the work`,body:`For each word, the font holds a ligature. For example, 今日 becomes one glyph with きょう above it. The swap happens when the text is drawn, so the text itself does not change.`},longest:{title:`Longest word first`,body:`Furifont compares each group of kanji with a list of thousands of common words. It tries the longest word first. For example, it picks 日本語 before 日本. It reads 今日 as one word, きょう.`},bare:{title:`No ruby when unsure`,body:`A single kanji gets ruby only when one reading is clearly the most likely. 大人気 can be read だいにんき or おとなげ, so Furifont shows no ruby.`},okurigana:{title:`Opt-in Okurigana`,body:`Browsers shape each font script separately, so the font cannot see the kana after a kanji (which is called okurigana). We provide optional support for it through JavaScript annotation.`}},selectors:{body:`Some words have more than one common reading. Furifont shows the most common one. To choose another, put a variation selector (an invisible character) right after the first kanji. VS226 gives reading 1, VS227 gives reading 2, and so on. VS225 removes the ruby.`,lookUp:`Look up readings`,default:`Default`,reading2:`Reading 2 (VS227)`,none:`No ruby (VS225)`},downloads:{all:`Download all as zip`,family:`Family`,ruby:`Ruby`,variable:`Variable`,formats:`OTF and TTF are commonly used for installing on your computer. WOFF2 is optimized for websites. We recommend the variable fonts for the best experience. In some cases you may need the static weights for compatibility.`,buildOwn:`Or build your own font. You can choose another base font, a list with fewer or more words, other ruby letters, or other sizes.`},anyPage:{body:`You can use Furifont on any website. Lines with kanji get extra space for the ruby. If Furifont is installed on your computer, nothing downloads. If it is not, the font loads from this site.`,bookmarklet:`Bookmarklet`,bookmarkletHint:`Drag it to your bookmarks bar. On any page, click it to turn Furifont on. Click it again to turn Furifont off. Some sites, such as X and GitHub, do not let fonts load from other sites. On those sites, install Furifont on your computer.`,okurigana:`Okurigana readings`,okuriganaHint:`Picks the right reading of a kanji before its okurigana, such as 来 in 来る and 来ない.`,userscript:`Userscript`,install:`Install the userscript`,userscriptHint:`This works with Tampermonkey or Violentmonkey (browser add-ons that run small scripts). It turns Furifont on by itself on Japanese pages. It also works on sites that do not let fonts load from other sites. Its menu lets you switch to another Furifont font or turn it off.`,toast:{message:`Furifont could not load its font on this page. Some sites, such as X and GitHub, do not let fonts load from other sites. On those sites, you must install Furifont on your computer.`,download:`Download the fonts`,close:`Close`,outdated:`A newer version of Furifont is out.`,userscript:`Update the userscript`,bookmarklet:`Get the new bookmarklet`},menu:{okuriganaOn:`Okurigana readings: on`,okuriganaOff:`Okurigana readings: off`}},reference:{eyebrow:`Reference`,title:`Pick a reading`,body:`Furifont shows the most common reading of a word. To show another reading, put a variation selector (an invisible character) right after the first kanji of the word. VS226 gives reading 1, VS227 gives reading 2, and so on. After a single kanji, the selector chooses the reading of that kanji. VS225 shows the kanji with no ruby.`,search:`Search a word or kanji: 市場, 今日, 生`,searchLabel:`Search readings`,hint:`Click a reading to copy the word with its selector.`,unavailable:`The reference comes with the ready-made fonts, and it could not load here ({error}). Build the fonts with {command}, or open Customize.`,loading:`Loading`,words:`Words with several readings / {count}`,kanji:`Kanji / {count}`,copyWith:`Copy {text} with {selector}`,default:`default`},report:{eyebrow:`Report`,title:`Report a wrong reading`,body:`Did Furifont show the wrong furigana, or none where a word needs it? Tell us the words and the readings they should have. You can report several words at once. We go through the reports to fix the dictionary.`,link:`Report a wrong reading.`,sections:{words:`Words / {count}`,environment:`Where you saw it`,note:`Anything else`},word:`Word`,expected:`Correct reading`,shown:`Reading shown (optional)`,context:`Sentence (optional)`,remove:`Remove {word}`,add:`Add another word`,environment:`Environment`,environments:{playground:`The playground on this site`,website:`Another website`,desktop:`Desktop app`,mobile:`Mobile app`},family:`Font`,familyAny:`(Any)`,url:`Page address (optional)`,app:`App (optional)`,appPlaceholder:{desktop:`Word, Pages, VS Code`,mobile:`Notes, Kindle`},os:`System (optional)`,notePlaceholder:`Anything that helps, for example the browser, or why the reading is wrong.`,name:`Your name (optional)`,nameHint:`To credit you when the reading is fixed. Leave it empty to stay anonymous.`,send:`Send the report`,sending:`Sending`,sent:`Thanks for your report.`,again:`Report more words`,failed:`The report could not be sent. Try again later.`,limited:`You sent many reports in a short time. Try again in an hour.`,privacy:`We store what you enter here, the font version and your browser name. We do not store your IP address.`},docs:{install:`Install the font`,website:`Use on your website`,readings:`Choose a reading`},customize:{connecting:`Connecting to furifont dev`,title:`Customize`,offline:{eyebrow:`Customize / offline`,title:`Build your own Furifont`,body:`Customize is a tool that runs on your computer. It reads your base fonts and saves the fonts that it builds. Start it in any folder. Then this page opens with a live preview, the dictionary, and a Build button. The new fonts go in {folder}.`,needs:`You need Node 22.18 or later (a free program that runs JavaScript tools).`,run:`Start Customize in any folder`},auth:{eyebrow:`Customize / locked`,title:`Enter the code from your terminal`,body:`{command} showed a six-digit code in your terminal (the window where you started it).`,code:`Code`,failed:`That code did not work. Check the terminal and try again.`,unlock:`Unlock`},sections:{preview:`Preview`,build:`Build`,dictionary:`Dictionary`,words:`Your words`},options:{family:`Font name`,base:`Base font`,baseHint:`The font to add ruby to. Use a font to download, such as Source Han Serif JP Bold, or the path to another font file on your computer.`,script:`Ruby letters`,hiragana:`Hiragana`,katakanaOn:`Kata on`,hepburn:`Romaji`,skip:`Skip the most common words`,skipHint:`Of the words left, the most common get no ruby, because a reader already knows them. Words and single kanji are sorted by how common they are, in steps of 500.`,words:`Then add ruby to`,wordsHint:`The next words, the most common first. In all, {count} words get ruby.`,jlpt:`Skip JLPT words`,jlptHint:`Words on the JLPT lists (for the Japanese-Language Proficiency Test) up to this level get no ruby. N5 is the easiest level.`,none:`None`,all:`All`,sources:`Take words from`,source:{jmdict:{name:`All JMdict words`,hint:`JMdict: every word, including those no list ranks, such as 四字熟語. Those fill the text nothing else matches, and add about 700 KB to the font.`},ichi:{name:`Basic words`,hint:`JMdict "ichi1" and "ichi2": words from the Ichimango list (a list of basic words).`},news:{name:`Newspaper words`,hint:`JMdict "news1" and "news2": the 24,000 words that appear most often in newspapers.`},spec:{name:`Everyday words`,hint:`JMdict "spec1" and "spec2": common words that the other lists miss, such as 日本.`},gai:{name:`Loanwords`,hint:`JMdict "gai1" and "gai2": common words that Japanese borrowed from other languages.`},nf:{name:`Newspaper ranking`,hint:`JMdict "nf01" to "nf48": the words the newspaper list ranks, 500 words a step.`},tatoeba:{name:`Tatoeba sentences`,hint:`Tatoeba: words that its example sentences use three times or more, such as 留守中, even when no list above has them.`},place:{name:`Place names`,hint:`JMnedict: stations and places. Furifont uses them where no common word matches the text.`},"mahjong-yaku":{name:`Mahjong yaku`,hint:`Names of the scoring hands and tiles of mahjong, such as 立直. Furifont uses them where no common word matches the text.`},"jr-stations":{name:`JR stations`,hint:`Names of JR stations, such as 阿蘇, from the Desktop Tetsu list. Furifont uses them where no common word matches the text.`},yojijukugo:{name:`Four-character idioms`,hint:`JMdict: yojijukugo, such as 阿鼻叫喚. Furifont uses them where no common word matches the text.`},"japan-post":{name:`Municipalities and towns`,hint:`Names of municipalities and towns, such as 一宮, from Japan Post's postal code data. Furifont uses them where no common word matches the text.`}},isolated:`Ruby on single kanji`,share:`Single kanji: how sure`,shareHint:`A single kanji gets ruby only when one reading makes up at least this share of its uses in the dictionary. Use a number from 0.5 to 1. A higher number gives ruby to fewer kanji.`,rubyScale:`Ruby size (× kanji)`,rubyGap:`Space above kanji (em)`,squeeze:`Narrowest squeeze (× normal)`,maxWidth:`Widest ruby (em)`,reset:`Reset to defaults`,resetHint:`Go back to the settings that Customize loaded. Your words stay.`},preview:{compiling:`Making a preview`,weight:`Preview weight`,size:`Preview size`,stats:`{glyphs} glyphs / {ms} ms`},build:{words:`Words`,places:`Places`,ambiguous:`Several readings`,lone:`Single kanji`,protected:`Your changes`,glyphs:`Ruby glyphs`,rules:`Rules`,planning:`Planning`,estimate:{woff2:`≈ {size} WOFF2`,otf:`{size} OTF`},formats:`Formats`,estimating:`Estimating the size`,run:`Build font`,save:`Save settings`},dictionary:{search:`Search the dictionary: 今日, 生`,results:`{count} words`,hint:`These words have several common readings. Pin one to make it the default reading.`,noTag:`not a common word`,restore:`Restore`,remove:`Never add ruby`},custom:{placeholder:`日[に]本[ほん] or 今日[きょう]`,label:`Word to add`,add:`Add word`,added:`Added / {count}`,pinned:`Pinned / {count}`,removed:`Never given ruby / {count}`,none:`None`,takeOut:`Remove {item}`}}},ja=Aa,Ma={en:async()=>Aa,ja:async()=>(await Q(async()=>{let{default:e}=await import(`./CHjPDtV4.js`);return{default:e}},[],import.meta.url)).default,"zh-Hans":async()=>(await Q(async()=>{let{default:e}=await import(`./B2JUvp84.js`);return{default:e}},[],import.meta.url)).default,"zh-Hant":async()=>(await Q(async()=>{let{default:e}=await import(`./Kki0DvjP.js`);return{default:e}},[],import.meta.url)).default},Na=[qr,ia,aa,oa,ca,la,ua,da,ba,xa,Ta,A(async e=>{let t=localStorage.getItem(Da),n=Oa(t)?t:ka(navigator.languages);e.vueApp.use(Bt({legacy:!1,locale:n,fallbackLocale:`en`,messages:{en:ja,[n]:await Ma[n]()}}))})];function Pa(e=_()){let t=e;t&&!t.sp&&(t.sp=[])}function Fa(){let{locale:e,availableLocales:t,setLocaleMessage:n}=Ht();return y({get:()=>e.value,set:async r=>{Oa(r)&&(t.includes(r)||n(r,await Ma[r]()),e.value=r,localStorage.setItem(Da,r))}})}var Ia=[`title`],La=[`aria-label`],Ra=[`value`,`lang`],za=Object.assign(g({__name:`AppLanguageSelect`,setup(e){let t=Fa();return(e,n)=>(w(),a(`label`,{class:`btn-ghost relative w-9 cursor-pointer px-0 focus-within:outline-2 focus-within:outline-[var(--ff-fg)] focus-within:outline-offset-2`,title:e.$t(`nav.language`)},[n[1]||=i(`span`,{class:`i-ph-translate pointer-events-none`},null,-1),fe(i(`select`,{"onUpdate:modelValue":n[0]||=e=>_e(t)?t.value=e:null,"aria-label":e.$t(`nav.language`),class:`no-ruby absolute inset-0 size-full cursor-pointer appearance-none rounded-none opacity-0 outline-none`},[(w(!0),a(E,null,T(`LOCALES`in e?e.LOCALES:O(Ea),e=>(w(),a(`option`,{key:e.code,value:e.code,lang:e.code},u(e.name),9,Ra))),128))],8,La),[[Ce,O(t)]])],8,Ia))}}),{__name:`AppLanguageSelect`}),Ba=e({docsBase:c,reporters:p}),Va=`$s`;function Ha(...e){let t=typeof e[e.length-1]==`string`?e.pop():void 0;typeof e[0]!=`string`&&e.unshift(t);let[n,r]=e;if(!n||typeof n!=`string`)throw Ba.NUXT_E7009({key:n});if(r!==void 0&&typeof r!=`function`)throw Ba.NUXT_E7007({type:typeof r});let i=Va+n,a=N(),o=ye(a.payload.state,i);if(r&&(a._state[i]??={_default:r}),o.value===void 0&&r){let e=r();if(_e(e))return a.payload.state[i]=e,o;o.value=e}return o}var Ua=`furifont:dark`;function Wa(){let e=Ha(`dark-mode`,()=>{let e=localStorage.getItem(Ua);return e?e===`true`:matchMedia(`(prefers-color-scheme: dark)`).matches});j(()=>document.documentElement.classList.toggle(`dark`,e.value));function t(){e.value=!e.value,localStorage.setItem(Ua,String(e.value))}return{dark:F(e),toggle:t}}var Ga=Sn(`/logo.svg`),Ka={class:`sticky top-0 z-10 border-b border-base bg-base`},qa={class:`relative mx-auto flex h-14 max-w-6xl items-center gap-3 border-x border-base px-3 sm:gap-6 sm:px-6`},Ja=[`href`,`target`],Ya={class:`flex items-center gap-1`},Xa={class:`ml-auto flex items-center gap-1`},Za=[`href`],Qa=[`href`,`aria-label`],$a=[`aria-label`],eo=Object.assign(g({__name:`AppHeader`,setup(e){let{dark:t,toggle:r}=Wa(),o=[{to:`/`,label:`nav.demo`}];return o.push({to:`/customize`,label:`nav.customize`}),o.push({to:`/report`,label:`nav.report`,class:`hidden sm:block`}),(e,s)=>{let c=Wt,l=Tt,d=za;return w(),a(`header`,Ka,[i(`nav`,qa,[M(c,{class:`-bottom-[6px] -left-[6px]`}),M(c,{class:`-bottom-[6px] -right-[6px]`}),i(`a`,{href:`SITE`in e?e.SITE:O(zt),target:O(`_blank`),class:`focus-ring flex items-center gap-2.5 font-mono text-sm font-medium`},[i(`img`,{src:Ga,alt:``,class:L([`size-6`,{invert:O(t)}]),"aria-hidden":`true`},null,2),s[1]||=i(`span`,{class:`hidden sm:inline`},`furifont`,-1)],8,Ja),i(`div`,Ya,[(w(),a(E,null,T(o,t=>M(l,{key:t.to,to:t.to,class:L([t.class,`focus-ring whitespace-nowrap px-1 py-1 font-mono text-xs uppercase tracking-[0.04em] color-muted transition-colors hover:color-base sm:px-2 sm:tracking-[0.12em]`]),"active-class":`!color-base`},{default:D(()=>[n(u(e.$t(t.label)),1)]),_:2},1032,[`to`,`class`])),64))]),i(`div`,Xa,[i(`a`,{href:`RELEASE_URL`in e?e.RELEASE_URL:O(Ut),target:`_blank`,rel:`noopener`,class:`focus-ring hidden px-1 py-1 font-mono text-xs color-muted transition-colors hover:color-base sm:block`},`v`+u(`VERSION`in e?e.VERSION:O(Lt)),9,Za),M(d),i(`a`,{href:`REPOSITORY`in e?e.REPOSITORY:O(It),target:`_blank`,rel:`noopener`,class:`btn-ghost focus-ring hidden w-9 px-0 sm:inline-flex`,"aria-label":e.$t(`nav.github`)},[...s[2]||=[i(`span`,{class:`i-ph-github-logo`},null,-1)]],8,Qa),i(`button`,{type:`button`,class:`btn-ghost focus-ring w-9 px-0`,"aria-label":O(t)?e.$t(`nav.light`):e.$t(`nav.dark`),onClick:s[0]||=(...e)=>O(r)&&O(r)(...e)},[i(`span`,{class:L(O(t)?`i-ph-sun`:`i-ph-moon`)},null,2)],8,$a)])])])}}}),{__name:`AppHeader`}),to=(e=`RouteProvider`)=>g({name:e,props:{route:{type:Object,required:!0},vnode:Object,vnodeRef:Object,renderKey:String,trackRootNodes:Boolean,routeRecord:Object},setup(e){let t=e.renderKey,n=e.route,r={};for(let i in e.route)Object.defineProperty(r,i,{get:()=>t===e.renderKey?e.route[i]:n[i],enumerable:!0});return C(rt,oe(r)),()=>e.vnode?d(e.vnode,{ref:e.vnodeRef}):e.vnode}}),no=to(),ro=new WeakMap,io=g({name:`NuxtPage`,inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,slots:n,expose:r}){let i=N(),a=ue(),o=v(rt,null),s=new Set,c;r({pageRef:a});let u=v(Ot,null),f,p=i.deferHydration(),m=!1,h=!1,g,_=0;if(i.isHydrating){let e=i.hooks.hookOnce(`app:error`,p),t=W().beforeEach(()=>{e(),t()})}e.pageKey&&me(()=>e.pageKey,(e,t)=>{e!==t&&i.callHook(`page:loading:start`)});let y=!1;{let e=W().beforeResolve(()=>{y=!1});S(()=>{e(),p()})}return()=>d(Ri,{name:e.name,route:e.route,...t},{default:so(t=>{let r=ao(o,t.route,t.Component),v=o&&o.matched.length===t.route.matched.length;if(!t.Component)return f&&!v&&!lo(f)?f:(p(),e.transition??t.route.meta.pageTransition??!1?vt(nt([e.transition,t.route.meta.pageTransition,!1]),null).default():void 0);if(f&&u&&!lo(f)&&!u.isCurrent(t.route))return f;if(r&&o&&(!u||u?.isCurrent(o)))return(v||f)&&!lo(f)?f:null;let b=Qr(t,e.pageKey),x=oo(o,t.route,t.Component);!i.isHydrating&&c===b&&!x&&l(()=>{y||(y=!0,i.callHook(`page:loading:end`))}),m&&c!==b&&h&&_++,c=b;let S=!!(e.transition??t.route.meta.pageTransition??!1),ee=S&&nt([e.transition,t.route.meta.pageTransition,!1,{onAfterLeave(){Dt(i),i.callHook(`page:transition:finish`,t.Component)}}]),C=e.keepalive??t.route.meta.keepalive??!1,w=t.Component.type,T=w.name||w.__name;t.route.meta.keepalive&&T&&s.add(T);let E;if(s.size>0&&e.keepalive==null&&(!C||typeof C==`object`&&C&&C.include)){let e=typeof C==`object`&&C?{...C}:{},t=e.include?Array.isArray(e.include)?e.include:[e.include]:[];E={...e,include:Array.from(new Set([...t,...s]))}}else E=C;return f=vt(S&&ee,$r(E,d(be,{key:_,suspensible:!0,onPending:()=>{m=!0,S&&at(i),g=i.callHook(`page:start`,t.Component)},onResolve:async()=>{m=!1,h=!0,i.isHydrating&&i[`~restoreDeferredRoute`]?.();try{await l(),i._route.sync?.(),await g,await i.callHook(`page:finish`,t.Component),!y&&!x&&(y=!0,await i.callHook(`page:loading:end`))}finally{p()}}},{default:()=>{let e={key:b||void 0,vnode:n.default?co(n.default,t):t.Component,route:t.route,renderKey:b||void 0,trackRootNodes:S,vnodeRef:a,routeRecord:void 0};if(!E)return d(no,e);let r=w,i=ro.get(r);return i||(i=to(T),ro.set(r,i)),d(i,e)}}))).default(),f})})}});function ao(e,t,n){if(!e)return!1;let r=t.matched.findIndex(e=>e.components?.default===n?.type);if(r===-1)return!1;let i=t.matched.slice(0,r).filter(e=>e.components?.default);if(!i.length)return!1;let a=e.matched.filter(e=>e.components?.default);return i.some((e,t)=>e.components?.default!==a[t]?.components?.default)||n&&Qr({route:t,Component:n})!==Qr({route:e,Component:n})}function oo(e,t,n){return e?t.matched.findIndex(e=>e.components?.default===n?.type)<t.matched.length-1:!1}function so(e){let t=(t=>{let n=e(t);return Array.isArray(n)?n:n==null||!Se(n)?[b()]:[n]});return t._n=!0,t}function co(e,t){let n=e(t);return n.length===1?d(n[0]):d(E,void 0,n)}function lo(e){return!!e&&(!!e.suspense?.isUnmounted||!!e.component?.isUnmounted)}var uo={class:`border-t border-base text-xs color-muted`},fo={class:`relative mx-auto max-w-6xl border-x border-base`},po={class:`flex flex-wrap items-center justify-between gap-x-6 gap-y-3 px-6 py-5`},mo={class:`flex flex-wrap items-center gap-x-2`},ho={class:`flex flex-wrap items-center gap-x-4 gap-y-2`},go=[`href`],_o={class:`flex flex-col gap-3 border-t border-base px-6 py-5`},vo=[`href`],$=`underline underline-offset-3 hover:color-base`,yo=Object.assign(g({__name:`AppFooter`,setup(e){let r={jmdict:[`JMdict`,`https://www.edrdg.org/jmdict/j_jmdict.html`],jmnedict:[`JMnedict`,`https://www.edrdg.org/enamdict/enamdict_doc.html`],kanjidic:[`KANJIDIC2`,`https://www.edrdg.org/wiki/index.php/KANJIDIC_Project`],furigana:[`JmdictFurigana`,`https://github.com/Doublevil/JmdictFurigana`],japanpost:[`Japan Post`,`https://www.post.japanpost.jp/zipcode/download.html`],desktoptetsu:[`Desktop Tetsu`,`https://www.desktoptetsu.com/quiz/jr-stations.htm`]};return(e,o)=>{let s=Wt,c=t(`i18n-t`),l=Tt;return w(),a(`footer`,uo,[i(`div`,fo,[M(s,{class:`-left-[6px] -top-[6px]`}),M(s,{class:`-right-[6px] -top-[6px]`}),i(`div`,po,[i(`p`,mo,[M(c,{keypath:`footer.made`,tag:`span`},{author:D(()=>[i(`a`,{class:L($),href:`https://github.com/antfu`,target:`_blank`,rel:`noopener`},`@antfu`)]),_:1}),o[0]||=i(`span`,{"aria-hidden":`true`},`·`,-1),M(c,{keypath:`footer.supported`,tag:`span`},{vercel:D(()=>[i(`a`,{class:L($),href:`https://vercel.com`,target:`_blank`,rel:`noopener`},`▲ Vercel`)]),sponsors:D(()=>[i(`a`,{class:L($),href:`https://github.com/sponsors/antfu`,target:`_blank`,rel:`noopener`},u(e.$t(`footer.sponsors`)),1)]),_:1})]),i(`div`,ho,[M(l,{to:`/report`,class:`inline-flex items-center gap-1.5 hover:color-base`},{default:D(()=>[o[1]||=i(`span`,{class:`i-ph-flag`},null,-1),n(` `+u(e.$t(`footer.report`)),1)]),_:1}),i(`a`,{class:`inline-flex items-center gap-1.5 hover:color-base`,href:`REPOSITORY`in e?e.REPOSITORY:O(It),target:`_blank`,rel:`noopener`},[o[2]||=i(`span`,{class:`i-ph-github-logo`},null,-1),n(` `+u(e.$t(`footer.source`)),1)],8,go)])]),i(`div`,_o,[M(c,{keypath:`footer.fonts`,tag:`p`},{license:D(()=>[i(`a`,{class:L($),href:`https://openfontlicense.org`,target:`_blank`,rel:`noopener`},`SIL Open Font License`)]),_:1}),M(c,{keypath:`footer.data`,tag:`p`},se({_:2},[T(r,(e,t)=>({name:t,fn:D(()=>[i(`a`,{class:L($),href:e[1],target:`_blank`,rel:`noopener`},u(e[0]),9,vo)])}))]),1024),i(`p`,null,u(e.$t(`footer.code`)),1)])])])}}}),{__name:`AppFooter`});function bo(e,t){let n=Ha(e,()=>t(localStorage.getItem(e)));return y({get:()=>n.value,set:t=>{n.value=t,localStorage.setItem(e,String(t))}})}function xo(){let{t:e}=Ht(),t=bo(`furifont:face`,e=>e===`serif`?`serif`:`sans`),n=bo(`furifont:script`,e=>e===`hepburn`?`hepburn`:`hiragana`);return{face:t,script:n,ruby:bo(`furifont:ruby`,e=>e!==`false`),okurigana:bo(`furifont:okurigana`,e=>e!==`false`),family:y(()=>Rt.find(e=>e.face===t.value&&e.script===n.value)),faces:y(()=>[`sans`,`serif`].map(t=>({value:t,label:e(`faces.${t}`)}))),scripts:y(()=>[`hiragana`,`hepburn`].map(t=>({value:t,label:e(`scripts.${t}`)})))}}var So={class:`min-h-screen flex flex-col overflow-x-clip bg-base color-base`},Co={class:`mx-auto w-full max-w-6xl flex-1 border-x border-base`},wo=g({__name:`app`,setup(e){let{t,locale:n}=Ht();wa({htmlAttrs:{lang:n},title:()=>t(`meta.title`),meta:[{name:`description`,content:()=>t(`meta.description`)}]});let{family:r,ruby:o}=xo();return j(()=>{let{style:e}=document.documentElement;e.setProperty(`--ff-font`,`"${r.value.family}"`),e.setProperty(`--ff-features`,o.value?`normal`:`"ss01"`)}),(e,t)=>{let n=eo,r=io,o=yo;return w(),a(`div`,So,[M(n),i(`main`,Co,[M(r)]),M(o)])}}}),To={__name:`nuxt-error-page`,props:{error:Object},setup(e){let t=e.error,n=Number(t.statusCode||500),i=n===404,a=t.statusMessage??(i?`Page Not Found`:`Internal Server Error`),s=t.message||t.toString(),c=h(()=>Q(()=>import(`./B4Fx_Djw.js`),__vite__mapDeps([13,1,2,9,3,14]),import.meta.url)),l=h(()=>Q(()=>import(`./X45Acd-Y.js`),__vite__mapDeps([15,1,2,16]),import.meta.url)),u=i?c:l;return(e,t)=>(w(),I(O(u),r(o({status:O(n),statusText:O(a),statusCode:O(n),statusMessage:O(a),description:O(s),stack:O(void 0)})),null,16))}},Eo=()=>null,Do={key:0},Oo={__name:`nuxt-root`,setup(e){let t=N(),n=t.deferHydration();if(t.isHydrating){let e=t.hooks.hookOnce(`app:error`,n),r=W().beforeEach(()=>{e(),r()})}window.location.pathname,C(rt,wt()),t.hooks.callHookWith(e=>e.map(e=>e()),`vue:setup`,[]);let r=Qe();function i(e,n,r){let i=t.vueApp.config.errorHandler;if(i&&!i.__nuxt_default)try{i(e,n,r)}catch(e){console.error("[nuxt] Error in `app.config.errorHandler`",e)}}return f((e,n,r)=>{if(t.hooks.callHook(`vue:error`,e,n,r)?.catch(e=>console.error("[nuxt] Error in `vue:error` hook",e)),yt(navigator.userAgent))return Et(t,e),!1;if(ut(e)&&(e.fatal||e.unhandled))return t.runWithContext(()=>G(e)),Pa(),i(e,n,r),!1}),(e,t)=>(w(),I(be,{onResolve:O(n)},{default:D(()=>[O(!1)?(w(),a(`div`,Do)):O(r)?(w(),I(O(To),{key:1,error:O(r)},null,8,[`error`])):O(!1)?(w(),I(O(Eo),{key:2,context:O(!1)},null,8,[`context`])):O(!1)?(w(),I(re(O(!1)),{key:3})):(w(),I(O(wo),{key:4}))]),_:1},8,[`onResolve`]))}},ko;{let e;ko=async function(){if(e)return e;let t=!!(window.__NUXT__?.serverRendered??document.getElementById(`__NUXT_DATA__`)?.dataset.ssr===`true`),n=t?Te(Oo):we(Oo),r=pe({vueApp:n});async function i(e){await r.callHook(`app:error`,e),r.payload.error||=mt(e)}i.__nuxt_default=!0,n.config.errorHandler=i,r.hook(`app:suspense:resolve`,()=>{n.config.errorHandler===i&&(n.config.errorHandler=void 0)}),!t&&ge.id&&r.hook(`app:suspense:resolve`,()=>{document.getElementById(ge.id)?.remove()});try{await de(r,Na)}catch(e){i(e)}try{await r.hooks.callHook(`app:created`,n),await r.hooks.callHook(`app:beforeMount`,n),n.mount(P),await r.hooks.callHook(`app:mounted`,n),await l()}catch(e){i(e)}return n},e=ko().catch(e=>{throw ee.NUXT_E1009({cause:e}),e})}export{Cn as i,wa as n,Q as r,xo as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,E as t,N as n,S as r,Vt as i,W as a,Y as o,bt as s,mt as c,nt as l,pt as u,rt as d,tt as f}from"./CkUAspOr.js";import{_ as p,i as m}from"./Cmcq_Al0.js";import{C as h,T as g,_,a as v,b as y,c as b,d as x,f as S,g as C,h as w,i as T,m as E,n as D,p as O,r as k,s as A,u as j,v as M,x as N,y as P}from"./BT3b-zWn.js";var F=[`hiragana`,`katakanaOn`,`hepburn`],I=[`jmdict`,`ichi`,`news`,`spec`,`gai`,`nf`,`tatoeba`,`place`,`mahjong-yaku`,`jr-stations`,`yojijukugo`,`japan-post`],L=[`N5`,`N4`,`N3`,`N2`,`N1`],R=[...I,...L,`inflecting`,`default`],z=e=>1<<R.indexOf(e),B=w({rubyScale:C(P(E(),S(.2),j(.8)),p.plan.metrics.rubyScale),rubyGap:C(P(E(),S(0),j(.5)),p.plan.metrics.rubyGap),compressionFloor:C(P(E(),S(.3),j(1)),p.plan.metrics.compressionFloor),maxRubyWidth:C(P(E(),S(1),j(3)),p.plan.metrics.maxRubyWidth)}),V=P(E(),A(),S(0)),H=w({family:C(P(h(),g(),O(),T(e=>!/source/i.test(e),`Source is a reserved font name of the base font`)),p.plan.family),rubyScript:C(M(F),p.plan.rubyScript),sources:C(D(M(I)),()=>[...I]),skip:C(V,p.plan.skip),take:C(P(V,S(1))),skipJlpt:C(M(L)),isolated:C(k(),p.plan.isolated),isolatedMinShare:C(P(E(),S(.5),j(1)),p.plan.isolatedMinShare),words:C(w({add:C(D(h()),[]),remove:C(D(h()),[]),pin:C(D(h()),[])}),{}),metrics:C(B,{})});function U(e={}){return _(H,e)}var W=P(E(),A(),S(0),j(1114111));w({version:b(1),names:w({family:h(),description:h()}),metrics:w({rubyScale:E(),rubyGap:E(),compressionFloor:E(),maxRubyWidth:E()}),codepoints:D(W),variants:D(w({name:P(h(),N(/^[A-Z_][\w.]{0,62}$/i)),base:W,selector:W})),glyphs:D(w({name:P(h(),N(/^[A-Z_][\w.]{0,62}$/i)),bases:P(D(W),x(1)),ruby:D(w({start:E(),end:E(),text:P(h(),O())}))})),fea:h(),subset:C(D(W)),smoke:D(w({text:h(),glyphs:D(h())}))});var G=e=>typeof e==`object`&&!!e&&!Array.isArray(e),K=e=>Array.isArray(e)&&e.length===2&&e.every(Number.isInteger)&&e[0]>=0&&e[0]<=100&&e[1]>0&&e[1]<1<<R.length,q=v(e=>G(e)&&Object.values(e).every(e=>G(e)&&Object.values(e).every(K)),`Expected readings by run, each [score, sources]`),J=Object.fromEntries(R.map(e=>[e,z(e)]));w({versions:y(h(),h()),sources:v(e=>G(e)&&JSON.stringify(e)===JSON.stringify(J),`Expected the sources of this version of @furifont/core`),onyomi:y(h(),D(h())),runs:q,kanji:q,bare:D(h())});function Y(){let e=c(),t;async function n(n){await navigator.clipboard?.writeText(n).then(()=>!0,()=>!1)&&(e.value=n,clearTimeout(t),t=setTimeout(()=>e.value=void 0,1200))}return{copied:u(e),copy:n}}var{rubyScale:X,rubyGap:Z}=U().metrics,Q=1.75,ee=.88+Z+X,$=1.255,te={rubyTop:$-ee,emTop:.3749999999999999,baseline:$,emBottom:1.375},ne=[`aria-label`],re=Object.assign(n({__name:`FuriText`,props:e({family:{default:()=>m[0].family},ruby:{type:Boolean,default:!0},size:{default:32},weight:{default:400},okurigana:{}},{text:{required:!0},textModifiers:{}}),emits:[`update:text`],setup(e){let n=f(e,`text`),c=r(()=>({fontFamily:`"${e.family}", sans-serif`,fontSize:`${e.size}px`,fontWeight:e.weight,lineHeight:Q,fontFeatureSettings:e.ruby?`normal`:`"ss01"`}));function u(e){let t=[],n=0;for(let r of e.childNodes){let e=r.textContent.length;r instanceof HTMLElement&&t.push({at:n,length:e,salt:Number(r.dataset.salt)}),n+=e}return t}function p(e){let t=getSelection();if(!t?.rangeCount||!t.isCollapsed||!e.contains(t.anchorNode))return;let n=document.createRange();return n.selectNodeContents(e),n.setEnd(t.anchorNode,t.anchorOffset),n.toString().length}function m(e,t){let n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=t;for(let e=n.nextNode();e;e=n.nextNode()){let t=e.nodeValue.length;if(r<=t){let t=document.createRange();t.setStart(e,r),t.collapse(!0),getSelection().removeAllRanges(),getSelection().addRange(t);return}r-=t}}let h=l(`el`),g,_=!1,v;function y(t,n,r=!1){let i=e.ruby&&e.okurigana?e.okurigana.find(n):[];if(!r&&t.textContent===n&&JSON.stringify(u(t))===JSON.stringify(i.map(({at:e,length:t,salt:n})=>({at:e,length:t,salt:n}))))return;let a=p(t),o=[],s=0;for(let e of i){o.push(n.slice(s,e.at));let t=document.createElement(`span`);t.textContent=n.slice(e.at,e.at+e.length),t.dataset.salt=String(e.salt),t.style.fontFeatureSettings=`"salt" ${e.salt}`,o.push(t),s=e.at+e.length}o.push(n.slice(s)),t.replaceChildren(...o.filter(e=>e!==``)),a!==void 0&&m(t,a)}d([h,n],([e,t])=>{e&&t!==g&&y(e,t,!0)},{immediate:!0}),d([()=>e.okurigana,()=>e.ruby],()=>{h.value&&y(h.value,g??n.value)});function b(){_=!0}function x(){_=!1,S()}function S(){g=h.value.innerText,n.value=g,clearTimeout(v),v=setTimeout(()=>!_&&h.value&&y(h.value,g),300)}return a(()=>clearTimeout(v)),(e,n)=>(o(),t(`p`,{ref_key:`el`,ref:h,lang:`ja`,contenteditable:`plaintext-only`,spellcheck:`false`,role:`textbox`,"aria-multiline":`true`,"aria-label":e.$t(`editable`),class:`cursor-text whitespace-pre-wrap break-words outline-1 outline-transparent outline-offset-4 transition-[outline-color] hover:outline-dashed hover:outline-[var(--ff-line)] focus:outline-dashed focus:outline-[var(--ff-fg)]`,style:i(s(c)),onInput:S,onCompositionstart:b,onCompositionend:x},null,44,ne))}}),{__name:`FuriText`});export{L as a,Y as i,te as n,H as o,Q as r,I as s,re as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,A as t,C as n,E as r,Ht as i,N as a,S as o,Y as s,Z as c,_ as l,at as u,bt as d,gt as f,j as p,mt as m,ot as h,q as g,s as _,t as v,ut as y,w as b}from"./CkUAspOr.js";import{o as x}from"./D4ezFGbh.js";import{
|
|
1
|
+
import{$ as e,A as t,C as n,E as r,Ht as i,N as a,S as o,Y as s,Z as c,_ as l,at as u,bt as d,gt as f,j as p,mt as m,ot as h,q as g,s as _,t as v,ut as y,w as b}from"./CkUAspOr.js";import{o as x}from"./D4ezFGbh.js";import{i as S,p as C}from"./Cmcq_Al0.js";import{t as w}from"./BT3b-zWn.js";import{i as T,t as E}from"./DNnooO8M.js";import{t as D}from"#entry";var O=917985;function k(e,t){let[n=``,...r]=[...e];return n+String.fromCodePoint(O+t)+r.join(``)}function A(e){return`VS${226+e}`}var j={class:`border-b border-base`},M={class:`px-6 pt-4 font-mono text-xs color-muted`},N={class:`flex flex-wrap`},P=[`title`,`onClick`],F=Object.assign(a({__name:`ReferenceEntry`,props:{text:{},readings:{},wordDefault:{type:Boolean,default:!1}},setup(e){let{copied:t,copy:a}=T(),{family:o}=D();return(u,f)=>{let m=E;return s(),r(`article`,j,[n(`h3`,M,i(e.text),1),n(`ul`,N,[(s(!0),r(l,null,c(e.readings,(c,l)=>(s(),r(`li`,{key:c,class:`flex flex-col items-start gap-1 px-6 py-3`},[p(m,{text:(`withReading`in u?u.withReading:d(k))(e.text,l),family:d(o).family,size:30},null,8,[`text`,`family`]),n(`button`,{type:`button`,class:`focus-ring font-mono text-[11px] color-muted transition-colors hover:color-base`,title:u.$t(`reference.copyWith`,{text:e.text,selector:(`selectorName`in u?u.selectorName:d(A))(l)}),onClick:t=>d(a)((`withReading`in u?u.withReading:d(k))(e.text,l))},i(d(t)===(`withReading`in u?u.withReading:d(k))(e.text,l)?u.$t(`copied`):`${(`selectorName`in u?u.selectorName:d(A))(l)} ${c}${e.wordDefault&&l===0?` / ${u.$t(`reference.default`)}`:``}`),9,P)]))),128))])])}}}),{__name:`ReferenceEntry`});function I(){let e=_().app.baseURL,t=f(),n=m();return g(async()=>{try{let n=await fetch(`${e}${C(S[0],`ivs.json`)}`);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);t.value=await n.json()}catch(e){n.value=e instanceof Error?e.message:String(e)}}),{reference:t,error:n}}var L={class:`flex flex-col gap-2 border-b border-base p-6`},R=[`placeholder`,`aria-label`],z={class:`text-xs color-muted`},B={key:1,class:`label p-6`},V={key:2,class:`grid lg:grid-cols-2`},H={class:`border-base lg:border-r`},U={class:`label border-b border-base px-6 py-3`},W={class:`label border-b border-base px-6 py-3`},G=60,K=Object.assign(a({__name:`ReferenceSearch`,setup(a){let{reference:f,error:p}=I(),g=m(``),_=o(()=>{let e=Object.entries(f.value?.words??{}),t=g.value.trim();return(t?e.filter(([e])=>e.includes(t)):e).slice(0,G)}),v=o(()=>{let e=Object.entries(f.value?.kanji??{}),t=g.value.trim();return(t?e.filter(([e])=>t.includes(e)):e.filter(([,e])=>e.length>2)).slice(0,G)});return(a,o)=>{let m=e(`i18n-t`),S=F;return s(),r(`div`,null,[n(`div`,L,[h(n(`input`,{"onUpdate:modelValue":o[0]||=e=>y(g)?g.value=e:null,type:`search`,lang:`ja`,placeholder:a.$t(`reference.search`),class:`input max-w-md text-base`,"aria-label":a.$t(`reference.searchLabel`)},null,8,R),[[x,d(g)]]),n(`p`,z,i(a.$t(`reference.hint`)),1)]),d(p)?(s(),b(m,{key:0,keypath:`reference.unavailable`,tag:`p`,class:`p-6 text-sm color-muted`},{error:u(()=>[t(i(d(p)),1)]),command:u(()=>[...o[1]||=[n(`code`,{class:`font-mono`},`pnpm fonts`,-1)]]),_:1})):d(f)?(s(),r(`div`,V,[n(`section`,H,[n(`h2`,U,i(a.$t(`reference.words`,{count:d(_).length})),1),(s(!0),r(l,null,c(d(_),([e,t])=>(s(),b(S,{key:e,text:e,readings:t,"word-default":``},null,8,[`text`,`readings`]))),128))]),n(`section`,null,[n(`h2`,W,i(a.$t(`reference.kanji`,{count:d(v).length})),1),(s(!0),r(l,null,c(d(v),([e,t])=>(s(),b(S,{key:e,text:e,readings:t},null,8,[`text`,`readings`]))),128))])])):(s(),r(`p`,B,i(a.$t(`reference.loading`)),1))])}}}),{__name:`ReferenceSearch`}),q={},J={class:`flex flex-col gap-4 px-6 py-12`},Y={class:`label`},X={class:`display text-4xl font-semibold`},Z={class:`max-w-[60ch] text-[15px] lh-1.625 color-muted`};function Q(e,t){let a=K,o=w;return s(),r(`div`,null,[n(`div`,J,[n(`span`,Y,i(e.$t(`reference.eyebrow`)),1),n(`h1`,X,i(e.$t(`reference.title`)),1),n(`p`,Z,i(e.$t(`reference.body`)),1)]),p(o,null,{default:u(()=>[p(a)]),_:1})])}var $=v(q,[[`render`,Q]]);export{$ as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={meta:{title:`Furifont:內建振假名的日文字型`,description:`自帶振假名的日語字型。`},nav:{demo:`簡介`,docs:`文件`,customize:`自訂`,report:`回報`,github:`GitHub 儲存庫`,light:`切換為淺色`,dark:`切換為深色`,language:`語言`,rubyOff:`隱藏振假名`,rubyOn:`顯示振假名`},footer:{fonts:`字型採用{license},源自 Source Han Sans 和 Source Han Serif。`,data:`讀音資料來自 {jmdict}、{jmnedict}、{kanjidic}(EDRDG)、{furigana}、{japanpost}(地名)和 {desktoptetsu}(JR 站名),採用 CC BY-SA 4.0 授權。`,code:`工具採用 MIT 授權。`,report:`回報錯誤讀音`,source:`GitHub 上的原始碼`,made:`作者:{author}`,supported:`由 {vercel} 和{sponsors}支持`,sponsors:`贊助者`},copied:`已複製`,shuffle:`換一個例句`,editable:`範例文字,可以編輯。`,scripts:{hiragana:`平假名`,hepburn:`羅馬字`},faces:{sans:`黑體`,serif:`明體`},hero:{title1:`振假名,`,title2:`交給字型。`,body:`Furifont 是一款把振假名直接顯示在字型上的日語字型。它用連字(ligature)依詞語的讀音切換。只要支援自訂字型,哪裡都能用。`,download:`下載字型`,build:`自行建置`},notice:`受字型限制,振假名可能不正確,請留意。`,sections:{try:`試試看`,how:`運作原理`,selectors:`選擇讀音`,download:`下載`,anyPage:`用於網站`},playground:{script:`振假名所用文字`,face:`字型樣式`,size:`字級 / {size}px`,weight:`字重 / {weight}`,ruby:`振假名`,okurigana:`送假名讀音`,okuriganaHint:`需要 JavaScript。受瀏覽器限制,字型無法自行處理送假名。`,textHint:`點選文字即可編輯。`,copy:`複製文字`},how:{build:{title:`客製建置`,body:`Furifont 以思源黑體或思源宋體為基礎編譯而成。建置時會讀取包含數千個詞的辭典,並把振假名繪製成新的字形。得到的是普通的字型檔案,不需要 JavaScript,也不需要外掛。`},ligatures:{title:`由連字完成工作`,body:`字型中為每個詞準備了連字。今日 會變成上方帶有 きょう 的單個字形。替換發生在繪製文字時,所以文字本身不會改變。`},longest:{title:`長詞優先`,body:`Furifont 把每一組漢字與幾千個常用詞的清單對照,先試最長的詞。例如,會先選 日本語,再考慮 日本。今日 會當作一個詞,讀作 きょう。`},bare:{title:`拿不準就不加`,body:`只有一個漢字時,只有當某個讀音明顯最可能,才加振假名。大人気 可以讀作 だいにんき,也可以讀作 おとなげ,所以不加振假名。`},okurigana:{title:`可選的送假名支援`,body:`瀏覽器依字型的文字種類分別排版,所以字型看不到漢字後面的假名(稱為送假名)。我們透過 JavaScript 標註,提供可選的支援。`}},selectors:{body:`有些詞有多個常用讀音。Furifont 顯示最常見的那個。要選其他讀音,就在第一個漢字後面緊接一個變體選擇器(看不見的字元)。VS226 是讀音 1,VS227 是讀音 2,依此類推。VS225 會移除振假名。`,lookUp:`查詢讀音`,default:`預設`,reading2:`讀音 2(VS227)`,none:`無振假名(VS225)`},downloads:{all:`全部下載為 ZIP`,family:`字型家族`,ruby:`振假名`,variable:`可變`,formats:`OTF 和 TTF 常用於安裝到電腦上。WOFF2 針對網站做了最佳化。我們推薦使用可變字型,體驗最佳。在某些情況下,為了相容性,你可能需要固定字重的版本。`,buildOwn:`你也可以自己製作字型。可以選擇其他基礎字型、詞的數量、振假名所用文字或尺寸。`},anyPage:{body:`你可以在任何網站上使用 Furifont。有漢字的行會留出放振假名的空間。如果電腦上已安裝 Furifont,就不用下載。否則字型會從本站載入。`,bookmarklet:`書籤小工具`,bookmarkletHint:`把它拖到書籤列。在任何頁面點選它,就會開啟 Furifont;再點一次就會關閉。有些網站(如 X 和 GitHub)不允許載入其他網站的字型。在這些網站上,請在電腦上安裝 Furifont。`,okurigana:`送假名讀音`,okuriganaHint:`為送假名前的漢字選出正確的讀音,例如「来る」「来ない」中的「来」。`,userscript:`使用者腳本`,install:`安裝使用者腳本`,userscriptHint:`適用於 Tampermonkey 或 Violentmonkey(執行小腳本的瀏覽器擴充功能)。它會在日語頁面自動開啟 Furifont,在不允許載入其他網站字型的網站上也能用。你可以在它的選單裡切換到另一款 Furifont 字型,或將其關閉。`,toast:{message:`Furifont 無法在此頁面載入字型。有些網站(如 X 和 GitHub)不允許載入其他網站的字型。在這些網站上,需要在電腦上安裝 Furifont。`,download:`下載字型`,close:`關閉`,outdated:`Furifont 有新版本了。`,userscript:`更新使用者腳本`,bookmarklet:`取得新的書籤小工具`},menu:{okuriganaOn:`送假名讀音:開`,okuriganaOff:`送假名讀音:關`}},reference:{eyebrow:`參考`,title:`選擇讀音`,body:`Furifont 顯示詞最常見的讀音。要顯示其他讀音,就在詞的第一個漢字後面緊接一個變體選擇器(看不見的字元)。VS226 是讀音 1,VS227 是讀音 2,依此類推。單個漢字後面的選擇器,選的是這個漢字的讀音。VS225 顯示不帶振假名的漢字。`,search:`搜尋詞語或漢字:市場、今日、生`,searchLabel:`搜尋讀音`,hint:`點選讀音即可複製帶有選擇器的詞語。`,unavailable:`參考表隨現成字型一起提供,但這裡沒能載入({error})。請用 {command} 製作字型,或開啟自訂。`,loading:`載入中`,words:`有多個讀音的詞 / {count}`,kanji:`漢字 / {count}`,copyWith:`複製帶有 {selector} 的「{text}」`,default:`預設`},report:{eyebrow:`回報`,title:`回報錯誤讀音`,body:`如果 Furifont 顯示了錯誤的假名注音,或該有注音的詞沒有注音,請告訴我們這些詞和正確的讀音。可以一次回報多個詞。我們會根據回報修正詞典。`,link:`回報錯誤讀音。`,sections:{words:`詞語 / {count}`,environment:`出現的位置`,note:`其他`},word:`詞語`,expected:`正確讀音`,shown:`顯示的讀音(選填)`,context:`句子(選填)`,remove:`刪除 {word}`,add:`新增詞語`,environment:`環境`,environments:{playground:`本站的試用區`,website:`其他網站`,desktop:`桌面應用程式`,mobile:`行動應用程式`},family:`字型`,familyAny:`(不限)`,url:`頁面網址(選填)`,app:`應用程式(選填)`,appPlaceholder:{desktop:`Word、Pages、VS Code`,mobile:`備忘錄、Kindle`},os:`系統(選填)`,notePlaceholder:`任何有幫助的資訊,例如瀏覽器,或讀音錯誤的原因。`,name:`你的名字(選填)`,nameHint:`修正讀音時用於致謝。留空即可匿名。`,send:`送出回報`,sending:`傳送中`,sent:`感謝你的回報。`,again:`繼續回報`,failed:`回報送出失敗,請稍後再試。`,limited:`你在短時間內送出了太多回報,請一小時後再試。`,privacy:`我們會儲存你填寫的內容、字型版本和瀏覽器名稱,不會儲存你的 IP 位址。`},docs:{install:`安裝字型`,website:`在網站上使用`,readings:`選擇讀音`},customize:{connecting:`正在連線至 furifont dev`,title:`自訂`,offline:{eyebrow:`自訂 / 離線`,title:`建置你自己的 Furifont`,body:`自訂是執行在你電腦上的工具。它讀取基礎字型,並儲存製作好的字型。在任意資料夾中啟動它,本頁就會連線並開啟,提供即時預覽、辭典和建置按鈕。製作好的字型儲存在 {folder}。`,needs:`需要 Node 22.18 或更新版本(一個執行 JavaScript 工具的免費程式)。`,run:`在任意資料夾中啟動自訂`},auth:{eyebrow:`自訂 / 已鎖定`,title:`輸入終端機顯示的驗證碼`,body:`{command} 在你的終端機(輸入指令的視窗)中顯示了一個六位數驗證碼。`,code:`驗證碼`,failed:`驗證碼無效,請查看終端機後再試一次。`,unlock:`解鎖`},sections:{preview:`預覽`,build:`建置`,dictionary:`辭典`,words:`你的詞語`},options:{family:`字型名稱`,base:`基礎字型`,baseHint:`要加振假名的字型。可以是要下載的字型,如 Source Han Serif JP Bold,也可以是電腦上另一個字型檔案的路徑。`,script:`振假名所用文字`,hiragana:`平假名`,katakanaOn:`片假名`,hepburn:`羅馬字`,skip:`略過最常見的詞`,skipHint:`在剩下的詞中,最常見的不加振假名,因為讀者已經認識。詞語和單個漢字依常用程度排序,每 500 個一級。`,words:`接著加振假名的詞數`,wordsHint:`接下來的詞,依常用程度依次選取。共 {count} 個詞加振假名。`,jlpt:`略過 JLPT 詞彙`,jlptHint:`JLPT(日本語能力試驗)詞表中到這個級別為止的詞不加振假名。N5 是最簡單的級別。`,none:`無`,all:`全部`,sources:`從以下來源選詞`,source:{jmdict:{name:`JMdict 全部詞語`,hint:`JMdict:所有詞語,包括任何列表都沒有排名的詞語,例如 四字熟語。無排名的詞語在沒有其他內容符合的文字上使用,會使字型增大約 700 KB。`},ichi:{name:`基礎詞`,hint:`JMdict「ichi1」和「ichi2」:「一萬語」詞表(基礎詞彙表)中的詞。`},news:{name:`報紙用詞`,hint:`JMdict「news1」和「news2」:報紙中出現最多的 24,000 個詞。`},spec:{name:`日常詞`,hint:`JMdict「spec1」和「spec2」:其他詞表沒有收錄的常用詞,如 日本。`},gai:{name:`外來語`,hint:`JMdict「gai1」和「gai2」:日語從其他語言借來的常用詞。`},nf:{name:`報紙排名`,hint:`JMdict「nf01」至「nf48」:報紙詞表中有排名的詞,每 500 個詞一級。`},tatoeba:{name:`Tatoeba 例句`,hint:`Tatoeba:在例句中出現三次或以上的詞語,例如 留守中,即使上面的列表都沒有收錄。`},place:{name:`地名`,hint:`JMnedict:站名和地名。在沒有常用詞符合的文字上使用。`},"mahjong-yaku":{name:`麻將役種`,hint:`麻將的役種和牌名,例如 立直。在沒有常用詞符合的文字上使用。`},"jr-stations":{name:`JR 站名`,hint:`Desktop Tetsu 列表中的 JR 站名,例如 阿蘇。在沒有常用詞符合的文字上使用。`},yojijukugo:{name:`四字熟語`,hint:`JMdict:四字熟語,例如 阿鼻叫喚。在沒有常用詞符合的文字上使用。`},"japan-post":{name:`市區町村與町域`,hint:`日本郵便郵遞區號資料中的市區町村和町域名稱,例如 一宮。在沒有常用詞符合的文字上使用。`}},isolated:`單個漢字也加振假名`,share:`單個漢字的把握度`,shareHint:`只有一個漢字時,只有當某個讀音在辭典中至少占這個比例,才加振假名。請輸入 0.5 到 1 之間的數。數字越大,加振假名的漢字越少。`,rubyScale:`振假名大小(漢字的幾倍)`,rubyGap:`漢字上方的間距(em)`,squeeze:`最窄壓縮到(正常寬度的幾倍)`,maxWidth:`振假名最大寬度(em)`,reset:`恢復預設`,resetHint:`回到自訂載入的設定。你加入的詞會保留。`},preview:{compiling:`正在製作預覽`,weight:`預覽字重`,size:`預覽字級`,stats:`{glyphs} 個字形 / {ms} ms`},build:{words:`詞語`,places:`地名`,ambiguous:`多讀音`,lone:`單個漢字`,protected:`你的設定`,glyphs:`振假名字形`,rules:`規則`,planning:`規劃中`,estimate:{woff2:`≈ {size} WOFF2`,otf:`{size} OTF`},formats:`格式`,estimating:`正在估算大小`,run:`建置字型`,save:`儲存設定`},dictionary:{search:`搜尋辭典:今日、生`,results:`{count} 個詞`,hint:`這些詞有多個常用讀音。固定其中一個,它就成為預設讀音。`,noTag:`不是常用詞`,restore:`還原`,remove:`不加振假名`},custom:{placeholder:`日[に]本[ほん] 或 今日[きょう]`,label:`要新增的詞`,add:`新增詞語`,added:`已新增 / {count}`,pinned:`已固定 / {count}`,removed:`不加振假名 / {count}`,none:`無`,takeOut:`移除 {item}`}}};export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"4f6d63ac-677f-4159-85f5-e2331fac408f","timestamp":1792114000992}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"4f6d63ac-677f-4159-85f5-e2331fac408f","timestamp":1792114000992,"prerendered":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./y75lAtyQ.js","./y07Wd5I9.js","./CkUAspOr.js","./D4ezFGbh.js","./Cl84O_XS.js","./Cmcq_Al0.js","./entry.DbYzBu7U.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,A as t,B as n,C as r,E as i,Ht as a,N as o,R as s,S as c,T as l,V as u,W as d,X as f,Y as p,Z as m,_ as h,_t as g,at as _,bt as v,ft as y,gt as b,j as x,mt as S,ot as C,q as w,rt as T,s as E,tt as D,ut as O,w as k,zt as A}from"./CkUAspOr.js";import{o as j,s as M}from"./D4ezFGbh.js";import{_ as N,a as P,o as F,r as I}from"./Cmcq_Al0.js";import{C as L,S as R,d as z,h as B,n as ee,p as te,t as ne,v as re,y as V}from"./BT3b-zWn.js";import{a as H,i as ie,o as ae,s as U,t as oe}from"./DNnooO8M.js";import{r as se}from"#entry";import{a as ce,i as le,n as W,r as ue,t as de}from"./BJuAqPpj.js";import{n as fe,t as G}from"./BaBNBiev.js";var pe={class:`grid gap-8 px-6 py-16 lg:grid-cols-2`},me={class:`flex flex-col gap-4`},he={class:`label`},ge={class:`display text-4xl font-semibold`},_e={class:`flex flex-col justify-center gap-5`},ve={class:`text-xs color-muted`},ye={class:`flex flex-col gap-2`},be={class:`label`},K=`npx furifont dev`,xe=Object.assign(o({__name:`CustomizeUnavailable`,setup(t){let{copied:n,copy:o}=ie();return(t,s)=>{let c=e(`i18n-t`);return p(),i(`div`,pe,[r(`div`,me,[r(`span`,he,a(t.$t(`customize.offline.eyebrow`)),1),r(`h1`,ge,a(t.$t(`customize.offline.title`)),1),x(c,{keypath:`customize.offline.body`,tag:`p`,class:`max-w-[52ch] text-[15px] lh-1.625 color-muted`},{folder:_(()=>[...s[1]||=[r(`code`,{class:`font-mono`},`./fonts`,-1)]]),_:1})]),r(`div`,_e,[r(`p`,ve,a(t.$t(`customize.offline.needs`)),1),r(`div`,ye,[r(`span`,be,a(t.$t(`customize.offline.run`)),1),r(`button`,{type:`button`,class:`focus-ring flex items-center justify-between gap-3 border border-strong px-4 py-3 text-left font-mono text-sm`,onClick:s[0]||=e=>v(o)(K)},[r(`span`,{class:`break-all`},`$ `+a(K)),r(`span`,{class:A([v(n)===K?`i-ph-check`:`i-ph-copy`,`shrink-0 color-muted`])},null,2)])])])])}}}),{__name:`CustomizeUnavailable`}),q=`furifont`,J=350,Se=`furifont:customize:`;function Y(e,t){let n;return()=>{clearTimeout(n),n=setTimeout(e,t)}}function Ce(e){return e instanceof Error?e.message:String(e)}var X=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function we(e,t){let n={};for(let r of new Set([...Object.keys(e),...Object.keys(t)])){let[i,a]=[e[r],t[r]];if(X(i)&&X(a)){let e=we(i,a);Object.keys(e).length&&(n[r]=e)}else JSON.stringify(i)!==JSON.stringify(a)&&(n[r]=i??null)}return n}function Te(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];r===null?delete n[e]:n[e]=X(r)&&X(t)?Te(t,r):r}return n}var Z=[`otf`,`woff2`],Ee=B({...ae.entries,base:V(L(),te()),formats:V(ee(re(Z)),z(1))});function De(e,t){let n;try{n=R(Ee,Te(t,JSON.parse(localStorage.getItem(e)??`{}`)))}catch{}return n?.success?n.output:(localStorage.removeItem(e),structuredClone(t))}function Oe(){let{devCustomizeBase:e}=E().public,t=S(`connecting`),n=b(),r=S({}),i=b(),a=S(le[0].text),o=y({loading:!1}),s=y({loading:!1}),c=y({running:!1,files:[]}),l=S(),u,f,p,m=0,h=0,_=0,v={},x=``;async function C(){i.value=await f.call(`report`,g(r.value)).catch(()=>i.value)}async function D(){let e=++_,t=await f.call(`estimate`,g(r.value)).catch(()=>void 0);e===_&&Object.assign(s,{size:t,loading:!1})}async function O(){let e=++m;o.loading=!0;try{let t=await f.call(`preview`,g(r.value),a.value);if(e!==m)return;let n=Uint8Array.from(atob(t.font),e=>e.charCodeAt(0)),i=new FontFace(`Furifont Preview ${e}`,n,{weight:`${F} ${P}`});await i.load(),document.fonts.add(i),p&&document.fonts.delete(p),p=i,Object.assign(o,{family:i.family,ms:t.ms,glyphs:t.stats.glyphs,variable:t.variable,error:void 0})}catch(t){e===m&&(o.error=Ce(t))}finally{e===m&&(o.loading=!1)}}let k=Y(async()=>{let e=++h;s.loading=!0,await Promise.all([C(),O()]),e===h&&D()},J);T(()=>JSON.stringify({...r.value,formats:void 0}),k),T(a,Y(O,J));function A(){let e=we(g(r.value),v);Object.keys(e).length?localStorage.setItem(x,JSON.stringify(e)):localStorage.removeItem(x)}T(r,A,{deep:!0});async function j(){try{let{connectDevframe:e}=await se(async()=>{let{connectDevframe:e}=await import(`./y75lAtyQ.js`);return{connectDevframe:e}},__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url);u=await e(void 0),f=u.scope(q).rpc}catch{t.value=`unavailable`;return}await u.ensureTrusted(1500).catch(()=>!1)?await N():t.value=`locked`}async function M(e){return!u||!await u.requestTrustWithCode(e)?!1:(await N(),!0)}async function N(){n.value=await f.call(`state`),v=n.value.config,x=Se+n.value.configPath,r.value=De(x,v),t.value=`ready`,k()}function I(){r.value={...structuredClone(v),words:g(r.value.words)}}async function L(){Object.assign(c,{running:!0,files:[],error:void 0,step:`plan`,done:null,total:null});try{let{streamId:e}=await f.call(`build`,g(r.value));for await(let t of u.scope(q).rpc.streaming.subscribe(`build`,e))t.type===`progress`?Object.assign(c,{step:t.step,done:t.done,total:t.total}):t.type===`done`?c.files=t.files:c.error=t.message}catch(e){c.error=Ce(e)}finally{c.running=!1}}async function R(){l.value=await f.call(`save`,g(r.value)),v=structuredClone(g(r.value)),A()}function z(e){return f.call(`search`,e)}function B(e,t){let n=r.value.words??={},i=n[e]??[];n[e]=i.includes(t)?i.filter(e=>e!==t):[...i,t]}return w(j),d(()=>{p&&document.fonts.delete(p)}),{status:t,state:n,config:r,report:i,text:a,preview:o,estimate:s,build:c,savedTo:l,unlock:M,runBuild:L,save:R,reset:I,search:z,toggleWord:B}}var ke=Symbol(`customize`);function Ae(){let e=Oe();return f(ke,e),e}function Q(){let e=s(ke);if(!e)throw Error(`useCustomize() is only available inside the customize page`);return e}var je={class:`label`},Me={class:`text-2xl font-semibold tracking-tight`},Ne=[`aria-label`],Pe={key:0,class:`text-sm`},Fe=[`disabled`],Ie=Object.assign(o({__name:`CustomizeAuth`,setup(t){let{unlock:n}=Q(),o=S(``),s=S(!1),c=S(!1);async function u(){c.value=!0,s.value=!await n(o.value.trim()),c.value=!1}return(t,n)=>{let d=e(`i18n-t`);return p(),i(`form`,{class:`mx-auto flex max-w-sm flex-col gap-4 px-6 py-24`,onSubmit:M(u,[`prevent`])},[r(`span`,je,a(t.$t(`customize.auth.eyebrow`)),1),r(`h1`,Me,a(t.$t(`customize.auth.title`)),1),x(d,{keypath:`customize.auth.body`,tag:`p`,class:`text-sm color-muted`},{command:_(()=>[...n[1]||=[r(`code`,{class:`font-mono`},`furifont dev`,-1)]]),_:1}),C(r(`input`,{"onUpdate:modelValue":n[0]||=e=>O(o)?o.value=e:null,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`6`,"aria-label":t.$t(`customize.auth.code`),class:`input text-center font-mono text-xl tracking-[0.5em]`},null,8,Ne),[[j,v(o)]]),v(s)?(p(),i(`p`,Pe,a(t.$t(`customize.auth.failed`)),1)):l(``,!0),r(`button`,{type:`submit`,class:`btn-solid focus-ring`,disabled:v(c)||v(o).trim().length!==6},a(t.$t(`customize.auth.unlock`)),9,Fe)],32)}}}),{__name:`CustomizeAuth`}),Le={class:`label flex justify-between gap-3`},Re={class:`color-base tabular-nums`},ze={key:0,class:`text-xs color-muted`},Be=Object.assign(o({__name:`UiRange`,props:n({label:{},display:{},hint:{},min:{},max:{},step:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=D(e,`modelValue`);return(n,o)=>{let s=W;return p(),i(`label`,{class:A([`flex flex-col gap-1.5`,e.disabled&&`opacity-40`])},[r(`span`,Le,[r(`span`,null,a(e.label),1),r(`span`,Re,a(e.display),1)]),x(s,{modelValue:t.value,"onUpdate:modelValue":o[0]||=e=>t.value=e,min:e.min,max:e.max,step:e.step,disabled:e.disabled},null,8,[`modelValue`,`min`,`max`,`step`,`disabled`]),e.hint?(p(),i(`span`,ze,a(e.hint),1)):l(``,!0)],2)}}}),{__name:`UiRange`}),Ve=[`placeholder`],He=[`placeholder`],Ue={id:`customize-base-fonts`},We=[`value`],Ge={class:`flex flex-col gap-2`},Ke={class:`label mb-1.5`},qe={class:`flex flex-wrap gap-2`},Je=[`title`,`aria-pressed`,`onClick`],$=500,Ye=24e3,Xe=3e4,Ze=Object.assign(o({__name:`CustomizeOptions`,setup(e){let{t:n}=I(),{config:o,state:s,report:l,reset:u}=Q(),d=c({get:()=>o.value.skip??N.plan.skip,set:e=>o.value.skip=e}),f=c({get:()=>o.value.take??30500,set:e=>o.value.take=e>Xe?void 0:e}),g=c(()=>l.value&&l.value.stats.patterns-l.value.stats.places),y=c({get:()=>o.value.skipJlpt?H.indexOf(o.value.skipJlpt)+1:0,set:e=>{o.value.skipJlpt=H[e-1]}}),b=c(()=>y.value>1?`N5–${H[y.value-1]}`:H[y.value-1]),S=c({get:()=>o.value.isolated??N.plan.isolated,set:e=>o.value.isolated=e}),w=c({get:()=>o.value.isolatedMinShare??N.plan.isolatedMinShare,set:e=>o.value.isolatedMinShare=e}),T=c(()=>[`hiragana`,`katakanaOn`,`hepburn`].map(e=>({value:e,label:n(`customize.options.${e}`)}))),E=c(()=>o.value.metrics??{}),D=[{key:`rubyScale`,label:`rubyScale`,min:.2,max:.8,step:.05,digits:2},{key:`rubyGap`,label:`rubyGap`,min:0,max:.5,step:.01,digits:2},{key:`compressionFloor`,label:`squeeze`,min:.3,max:1,step:.05,digits:2},{key:`maxRubyWidth`,label:`maxWidth`,min:1,max:3,step:.1,digits:1}],k=c({get:()=>o.value.rubyScript??`hiragana`,set:e=>o.value.rubyScript=e}),P=e=>(o.value.sources??U).includes(e);function F(e){let t=o.value.sources??[...U];o.value.sources=t.includes(e)?t.filter(t=>t!==e):[...t,e]}return(e,n)=>{let c=fe,l=ue,I=Be,L=de,R=G;return p(),i(`form`,{class:`flex flex-col gap-5 p-6`,onSubmit:n[8]||=M(()=>{},[`prevent`])},[x(c,{label:e.$t(`customize.options.family`)},{default:_(()=>[C(r(`input`,{"onUpdate:modelValue":n[0]||=e=>v(o).family=e,class:`input`,placeholder:v(N).plan.family},null,8,Ve),[[j,v(o).family]])]),_:1},8,[`label`]),x(c,{label:e.$t(`customize.options.base`),hint:e.$t(`customize.options.baseHint`)},{default:_(()=>[C(r(`input`,{"onUpdate:modelValue":n[1]||=e=>v(o).base=e,class:`input`,list:`customize-base-fonts`,placeholder:v(N).build.base},null,8,He),[[j,v(o).base]]),r(`datalist`,Ue,[(p(!0),i(h,null,m(v(s)?.baseFonts,e=>(p(),i(`option`,{key:e,value:e},null,8,We))),128))])]),_:1},8,[`label`,`hint`]),x(c,{label:e.$t(`customize.options.script`)},{default:_(()=>[x(l,{modelValue:v(k),"onUpdate:modelValue":n[2]||=e=>O(k)?k.value=e:null,label:e.$t(`customize.options.script`),options:v(T)},null,8,[`modelValue`,`label`,`options`])]),_:1},8,[`label`]),n[9]||=r(`div`,{class:`h-px bg-[var(--ff-line)]`},null,-1),r(`fieldset`,Ge,[r(`legend`,Ke,a(e.$t(`customize.options.sources`)),1),r(`div`,qe,[(p(!0),i(h,null,m(v(U),t=>(p(),i(`button`,{key:t,type:`button`,class:A([`focus-ring border px-2 py-1 text-xs transition-colors`,P(t)?`border-inverse bg-inverse color-inverse`:`border-base color-muted hover:border-strong`]),title:e.$t(`customize.options.source.${t}.hint`),"aria-pressed":P(t),onClick:e=>F(t)},a(e.$t(`customize.options.source.${t}.name`)),11,Je))),128))])]),x(I,{modelValue:v(y),"onUpdate:modelValue":n[3]||=e=>O(y)?y.value=e:null,label:e.$t(`customize.options.jlpt`),display:v(b)??e.$t(`customize.options.none`),hint:e.$t(`customize.options.jlptHint`),min:0,max:v(H).length},null,8,[`modelValue`,`label`,`display`,`hint`,`max`]),x(L,{modelValue:v(S),"onUpdate:modelValue":n[4]||=e=>O(S)?S.value=e:null},{default:_(()=>[t(a(e.$t(`customize.options.isolated`)),1)]),_:1},8,[`modelValue`]),x(I,{modelValue:v(w),"onUpdate:modelValue":n[5]||=e=>O(w)?w.value=e:null,label:e.$t(`customize.options.share`),display:v(w).toFixed(2),hint:e.$t(`customize.options.shareHint`),min:.5,max:1,step:.05,disabled:!v(S)},null,8,[`modelValue`,`label`,`display`,`hint`,`disabled`]),n[10]||=r(`div`,{class:`h-px bg-[var(--ff-line)]`},null,-1),x(I,{modelValue:v(d),"onUpdate:modelValue":n[6]||=e=>O(d)?d.value=e:null,label:e.$t(`customize.options.skip`),display:v(d)?v(d).toLocaleString(`en`):e.$t(`customize.options.none`),hint:e.$t(`customize.options.skipHint`),min:0,max:Ye,step:$},null,8,[`modelValue`,`label`,`display`,`hint`]),x(I,{modelValue:v(f),"onUpdate:modelValue":n[7]||=e=>O(f)?f.value=e:null,label:e.$t(`customize.options.words`),display:v(f)>Xe?e.$t(`customize.options.all`):v(f).toLocaleString(`en`),hint:v(g)===void 0?void 0:e.$t(`customize.options.wordsHint`,{count:v(g).toLocaleString(`en`)}),min:$,max:30500,step:$},null,8,[`modelValue`,`label`,`display`,`hint`,`max`]),n[11]||=r(`div`,{class:`h-px bg-[var(--ff-line)]`},null,-1),(p(),i(h,null,m(D,t=>x(I,{key:t.key,"model-value":v(E)[t.key]??v(N).plan.metrics[t.key],label:e.$t(`customize.options.${t.label}`),display:(v(E)[t.key]??v(N).plan.metrics[t.key]).toFixed(t.digits),min:t.min,max:t.max,step:t.step,"onUpdate:modelValue":e=>v(E)[t.key]=e},null,8,[`model-value`,`label`,`display`,`min`,`max`,`step`,`onUpdate:modelValue`])),64)),x(R,{variant:`ghost`,icon:`i-ph-arrow-counter-clockwise`,class:`self-start`,title:e.$t(`customize.options.resetHint`),onClick:v(u)},{default:_(()=>[t(a(e.$t(`customize.options.reset`)),1)]),_:1},8,[`title`,`onClick`])],32)}}}),{__name:`CustomizeOptions`}),Qe={class:`relative min-h-56 px-6 py-8`},$e={key:0,class:`mt-4 font-mono text-xs`},et={class:`flex flex-wrap items-center gap-4 border-t border-base px-6 py-3`},tt={class:`text-xs color-muted`},nt={class:`font-mono text-xs color-muted tabular-nums`},rt=Object.assign(o({__name:`CustomizePreview`,setup(e){let{text:t,preview:n}=Q(),o=S(32),s=S(400);return(e,c)=>{let u=G,d=oe,f=W;return p(),i(`div`,null,[r(`div`,Qe,[x(u,{variant:`ghost`,icon:`i-ph-shuffle`,class:`absolute right-3 top-3 w-9 px-0`,"aria-label":e.$t(`shuffle`),title:e.$t(`shuffle`),onClick:c[0]||=n=>t.value=(`otherSample`in e?e.otherSample:v(ce))(v(t)).text},null,8,[`aria-label`,`title`]),x(d,{text:v(t),"onUpdate:text":c[1]||=e=>O(t)?t.value=e:null,family:v(n).family,size:v(o),weight:v(s),class:A(v(n).loading&&`opacity-60`)},null,8,[`text`,`family`,`size`,`weight`,`class`]),v(n).error?(p(),i(`p`,$e,a(v(n).error),1)):l(``,!0)]),r(`div`,et,[r(`span`,tt,a(v(n).loading?e.$t(`customize.preview.compiling`):e.$t(`playground.textHint`)),1),v(n).variable?(p(),k(f,{key:0,modelValue:v(s),"onUpdate:modelValue":c[2]||=e=>O(s)?s.value=e:null,min:`MIN_WEIGHT`in e?e.MIN_WEIGHT:v(F),max:`MAX_WEIGHT`in e?e.MAX_WEIGHT:v(P),step:10,"aria-label":e.$t(`customize.preview.weight`),class:`ml-auto w-28`},null,8,[`modelValue`,`min`,`max`,`aria-label`])):l(``,!0),x(f,{modelValue:v(o),"onUpdate:modelValue":c[3]||=e=>O(o)?o.value=e:null,min:16,max:64,"aria-label":e.$t(`customize.preview.size`),class:A(v(n).variable?`w-28`:`ml-auto w-28`)},null,8,[`modelValue`,`aria-label`,`class`]),r(`span`,nt,a(v(n).ms===void 0?``:e.$t(`customize.preview.stats`,{glyphs:v(n).glyphs??0,ms:v(n).ms})),1)])])}}}),{__name:`CustomizePreview`}),it={class:`flex flex-col gap-1 px-4 py-3`},at={class:`font-mono text-xl tabular-nums`},ot={class:`label`},st=Object.assign(o({__name:`UiStat`,props:{label:{},value:{}},setup(e){return(t,n)=>(p(),i(`div`,it,[r(`span`,at,a(typeof e.value==`number`?e.value.toLocaleString(`en`):e.value),1),r(`span`,ot,a(e.label),1)]))}}),{__name:`UiStat`}),ct={class:`grid grid-cols-3 border-b border-base lg:grid-cols-7`},lt={key:0,class:`label col-span-full px-6 py-4`},ut={class:`flex flex-wrap gap-3 px-6 pt-4 font-mono text-xs color-muted tabular-nums items-center`},dt=[`aria-label`],ft=[`aria-pressed`,`disabled`,`onClick`],pt={key:0},mt={key:0},ht={key:1},gt={class:`flex flex-wrap items-center gap-3 px-6 py-4`},_t=[`disabled`],vt={key:0,class:`font-mono text-xs color-muted`},yt={key:0,class:`border-t border-base px-6 py-3 font-mono text-xs`},bt={key:1,class:`border-t border-base`},xt=[`href`],St={class:`font-mono text-xs color-muted tabular-nums`},Ct=Object.assign(o({__name:`CustomizeBuild`,setup(e){let{t:n}=I(),{config:o,report:s,estimate:d,build:f,savedTo:g,runBuild:_,save:y}=Q(),b=e=>`${(e/1024/1024).toFixed(2)} MB`,x=c(()=>o.value.formats??Z);function S(e){o.value.formats=Z.filter(t=>t===e?!x.value.includes(t):x.value.includes(t))}let C=c(()=>{let e=d.size;return e&&[`woff2`,`otf`].filter(e=>x.value.includes(e)).map(t=>n(`customize.build.estimate.${t}`,{size:b(e[t])})).join(` · `)}),w=c(()=>{let e=s.value?.stats;return e?[{label:n(`customize.build.words`),value:e.patterns-e.places},{label:n(`customize.build.places`),value:e.places},{label:n(`customize.build.ambiguous`),value:e.ambiguous},{label:n(`customize.build.lone`),value:e.isolated},{label:n(`customize.build.protected`),value:e.protectedAnnotated+e.protectedBare},{label:n(`customize.build.glyphs`),value:e.glyphs},{label:n(`customize.build.rules`),value:e.rules}]:[]}),T=c(()=>f.total?`${f.step} ${f.done}/${f.total}`:f.step);return(e,n)=>{let o=st;return p(),i(`div`,null,[r(`div`,ct,[(p(!0),i(h,null,m(v(w),e=>(p(),k(o,u({key:e.label},{ref_for:!0},e,{class:`border-r border-base last:border-r-0`}),null,16))),128)),v(w).length?l(``,!0):(p(),i(`span`,lt,a(e.$t(`customize.build.planning`)),1))]),r(`div`,ut,[r(`div`,{role:`group`,"aria-label":e.$t(`customize.build.formats`),class:`flex gap-2`},[(p(!0),i(h,null,m(`FONT_FORMATS`in e?e.FONT_FORMATS:v(Z),e=>(p(),i(`button`,{key:e,type:`button`,class:A([`focus-ring border px-2 py-1 font-mono text-xs transition-colors disabled:cursor-not-allowed`,v(x).includes(e)?`border-strong bg-inverse color-inverse`:`border-base color-muted hover:border-strong`]),"aria-pressed":v(x).includes(e),disabled:v(f).running||v(x).length===1&&v(x).includes(e),onClick:t=>S(e)},` .`+a(e),11,ft))),128))],8,dt),v(C)||v(d).loading?(p(),i(`div`,pt,[v(C)?(p(),i(`span`,mt,a(v(C)),1)):l(``,!0),v(d).loading?(p(),i(`span`,ht,a(e.$t(`customize.build.estimating`)),1)):l(``,!0)])):l(``,!0)]),r(`div`,gt,[r(`button`,{type:`button`,class:`btn-solid focus-ring`,disabled:v(f).running,onClick:n[0]||=(...e)=>v(_)&&v(_)(...e)},[r(`span`,{class:A(v(f).running?`i-ph-circle-notch animate-spin`:`i-ph-hammer`)},null,2),t(` `+a(v(f).running?v(T):e.$t(`customize.build.run`)),1)],8,_t),r(`button`,{type:`button`,class:`btn-outline focus-ring`,onClick:n[1]||=(...e)=>v(y)&&v(y)(...e)},[n[2]||=r(`span`,{class:`i-ph-floppy-disk`},null,-1),t(` `+a(e.$t(`customize.build.save`)),1)]),v(g)?(p(),i(`span`,vt,a(v(g)),1)):l(``,!0)]),v(f).error?(p(),i(`p`,yt,a(v(f).error),1)):l(``,!0),v(f).files.length?(p(),i(`ul`,bt,[(p(!0),i(h,null,m(v(f).files,e=>(p(),i(`li`,{key:e.name,class:`flex items-center gap-4 border-b border-base px-6 py-2 last:border-b-0`},[r(`a`,{href:e.url,download:``,class:`focus-ring font-mono text-sm underline underline-offset-3`},a(e.name),9,xt),r(`span`,St,a(b(e.bytes)),1)]))),128))])):l(``,!0)])}}}),{__name:`CustomizeBuild`}),wt={class:`flex flex-col gap-2 border-b border-base p-6`},Tt=[`placeholder`,`aria-label`],Et={class:`text-xs color-muted`},Dt={class:`max-h-[32rem] overflow-y-auto`},Ot={lang:`ja`,class:`w-28 shrink-0 text-base`},kt=[`aria-pressed`,`title`,`onClick`],At=[`onClick`],jt=Object.assign(o({__name:`CustomizeWords`,setup(e){let{config:t,report:n,search:o,toggleWord:s}=Q(),l=S(``),u=b([]);T(l,async e=>{let t=e.trim(),n=t?await o(t).catch(()=>[]):[];e===l.value&&(u.value=n)});let d=c(()=>new Set(t.value.words?.pin??[])),f=c(()=>new Set(t.value.words?.remove??[])),g=c(()=>l.value.trim()?u.value:Object.entries(n.value?.ivs.words??{}).map(([e,t])=>({form:e,readings:t.map(e=>({notation:e,score:0,sources:[]}))})));return(e,t)=>(p(),i(`div`,null,[r(`div`,wt,[C(r(`input`,{"onUpdate:modelValue":t[0]||=e=>O(l)?l.value=e:null,type:`search`,lang:`ja`,placeholder:e.$t(`customize.dictionary.search`),"aria-label":e.$t(`customize.dictionary.search`),class:`input max-w-md`},null,8,Tt),[[j,v(l)]]),r(`p`,Et,a(v(l).trim()?e.$t(`customize.dictionary.results`,{count:v(u).length}):e.$t(`customize.dictionary.hint`)),1)]),r(`ul`,Dt,[(p(!0),i(h,null,m(v(g),t=>(p(),i(`li`,{key:t.form,class:A([`flex flex-wrap items-center gap-2 border-b border-base px-6 py-2`,v(f).has(t.form)&&`opacity-40`])},[r(`span`,Ot,a(t.form),1),(p(!0),i(h,null,m(t.readings,t=>(p(),i(`button`,{key:t.notation,type:`button`,lang:`ja`,class:A([`focus-ring border px-2 py-0.5 text-sm transition-colors`,v(d).has(t.notation)?`border-inverse bg-inverse color-inverse`:`border-base hover:border-strong`]),"aria-pressed":v(d).has(t.notation),title:t.sources.length?`${t.score} · ${t.sources.join(` `)}`:e.$t(`customize.dictionary.noTag`),onClick:e=>v(s)(`pin`,t.notation)},a(t.notation),11,kt))),128)),r(`button`,{type:`button`,class:`btn-ghost focus-ring ml-auto h-7 px-2 text-xs`,onClick:e=>v(s)(`remove`,t.form)},a(v(f).has(t.form)?e.$t(`customize.dictionary.restore`):e.$t(`customize.dictionary.remove`)),9,At)],2))),128))])]))}}),{__name:`CustomizeWords`}),Mt={class:`flex flex-col gap-4 p-6`},Nt=[`placeholder`,`aria-label`],Pt={type:`submit`,class:`btn-outline focus-ring shrink-0`},Ft={class:`label`},It={class:`flex flex-wrap gap-2`},Lt=[`aria-label`,`onClick`],Rt={key:0,class:`text-xs color-muted`},zt=Object.assign(o({__name:`CustomizeCustomWords`,setup(e){let{config:n,toggleWord:o}=Q(),s=S(``),u=c(()=>[{key:`add`,label:`customize.custom.added`,items:n.value.words?.add??[]},{key:`pin`,label:`customize.custom.pinned`,items:n.value.words?.pin??[]},{key:`remove`,label:`customize.custom.removed`,items:n.value.words?.remove??[]}]);function d(){/\[[^\]]+\]/.test(s.value)&&(o(`add`,s.value.trim()),s.value=``)}return(e,n)=>(p(),i(`div`,Mt,[r(`form`,{class:`flex gap-2`,onSubmit:M(d,[`prevent`])},[C(r(`input`,{"onUpdate:modelValue":n[0]||=e=>O(s)?s.value=e:null,lang:`ja`,placeholder:e.$t(`customize.custom.placeholder`),"aria-label":e.$t(`customize.custom.label`),class:`input font-mono`},null,8,Nt),[[j,v(s)]]),r(`button`,Pt,a(e.$t(`customize.custom.add`)),1)],32),(p(!0),i(h,null,m(v(u),s=>(p(),i(`div`,{key:s.key,class:`flex flex-col gap-2`},[r(`span`,Ft,a(e.$t(s.label,{count:s.items.length})),1),r(`div`,It,[(p(!0),i(h,null,m(s.items,c=>(p(),i(`button`,{key:c,type:`button`,lang:`ja`,class:`focus-ring group flex items-center gap-1.5 border border-base px-2 py-0.5 text-sm hover:border-strong`,"aria-label":e.$t(`customize.custom.takeOut`,{item:c}),onClick:e=>v(o)(s.key,c)},[t(a(c)+` `,1),n[1]||=r(`span`,{class:`i-ph-x text-xs color-muted group-hover:color-base`},null,-1)],8,Lt))),128)),s.items.length?l(``,!0):(p(),i(`span`,Rt,a(e.$t(`customize.custom.none`)),1))])]))),128))]))}}),{__name:`CustomizeCustomWords`}),Bt={key:0,class:`label px-6 py-24 text-center`},Vt={key:3,class:`grid lg:grid-cols-[340px_1fr]`},Ht={class:`border-b border-base lg:border-b-0 lg:border-r`},Ut={class:`flex items-baseline justify-between border-b border-base px-6 py-3`},Wt={class:`label color-base`},Gt={class:`font-mono text-[11px] color-muted`},Kt={class:`min-w-0`},qt=o({__name:`customize`,setup(e){let{status:t,state:n}=Ae();return(e,o)=>{let s=xe,c=Ie,l=Ze,u=rt,d=ne,f=Ct,m=jt,h=zt;return p(),i(`div`,null,[v(t)===`connecting`?(p(),i(`p`,Bt,a(e.$t(`customize.connecting`)),1)):v(t)===`unavailable`?(p(),k(s,{key:1})):v(t)===`locked`?(p(),k(c,{key:2})):(p(),i(`div`,Vt,[r(`aside`,Ht,[r(`div`,Ut,[r(`h1`,Wt,a(e.$t(`customize.title`)),1),r(`span`,Gt,a(v(n)?.sources.JMdict),1)]),x(l)]),r(`div`,Kt,[x(d,{index:`01`,title:e.$t(`customize.sections.preview`),class:`border-t-0 bg-base lg:sticky lg:top-14 lg:z-1 lg:border-b`},{default:_(()=>[x(u)]),_:1},8,[`title`]),x(d,{index:`02`,title:e.$t(`customize.sections.build`),class:`lg:border-t-0`},{default:_(()=>[x(f)]),_:1},8,[`title`]),x(d,{index:`03`,title:e.$t(`customize.sections.dictionary`)},{default:_(()=>[x(m)]),_:1},8,[`title`]),x(d,{index:`04`,title:e.$t(`customize.sections.words`)},{default:_(()=>[x(h)]),_:1},8,[`title`])])]))])}}});export{qt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--ff-bg:#fff;--ff-fg:#0a0a0a;--ff-muted:#0a0a0a9e;--ff-faint:#0a0a0a59;--ff-line:#0a0a0a1f;--ff-line-strong:#0a0a0a66;--ff-hover:#0a0a0a0d;--ff-lh:1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--ff-bg:#0a0a0a;--ff-fg:#fafafa;--ff-muted:#fafafa9e;--ff-faint:#fafafa59;--ff-line:#fafafa2b;--ff-line-strong:#fafafa66;--ff-hover:#fafafa12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scrollbar-gutter:stable;line-height:calc(1.5 * var(--ff-lh))}:lang(ja){--ff-lh:1.3}body,html{background:var(--ff-bg);color:var(--ff-fg)}body{-webkit-font-smoothing:antialiased}:lang(ja) body{font-family:var(--ff-font),ui-sans-serif,system-ui,sans-serif;font-feature-settings:var(--ff-features)}::selection{background:var(--ff-fg);color:var(--ff-bg)}.display{letter-spacing:-.045em;text-wrap:balance;line-height:.95}:lang(ja) .display,:lang(zh) .display{letter-spacing:0;word-break:auto-phrase;line-height:1.8}.hero-title{font-size:calc(clamp(2.75rem,6vw,4.75rem))}:lang(ja) .hero-title,:lang(zh) .hero-title{font-size:calc(clamp(2.25rem,4.4vw,3.5rem))}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--un-bg-opacity:100%;--un-border-opacity:100%;--un-outline-opacity:100%;--un-outline-style:solid;--un-text-opacity:100%}}@property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-outline-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-bg-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-inset-ring-color{syntax:"*";inherits:false}@property --un-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow-color{syntax:"*";inherits:false}@property --un-ring-color{syntax:"*";inherits:false}@property --un-ring-inset{syntax:"*";inherits:false}@property --un-ring-offset-color{syntax:"*";inherits:false}@property --un-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --un-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow-color{syntax:"*";inherits:false}@property --un-blur{syntax:"*";inherits:false}@property --un-brightness{syntax:"*";inherits:false}@property --un-contrast{syntax:"*";inherits:false}@property --un-drop-shadow{syntax:"*";inherits:false}@property --un-grayscale{syntax:"*";inherits:false}@property --un-hue-rotate{syntax:"*";inherits:false}@property --un-invert{syntax:"*";inherits:false}@property --un-saturate{syntax:"*";inherits:false}@property --un-sepia{syntax:"*";inherits:false}@property --un-numeric-figure{syntax:"*";inherits:false}@property --un-numeric-fraction{syntax:"*";inherits:false}@property --un-numeric-spacing{syntax:"*";inherits:false}@property --un-ordinal{syntax:"*";inherits:false}@property --un-slashed-zero{syntax:"*";inherits:false}:host,:root{--spacing:.25rem;--colors-amber-DEFAULT:oklch(82.8% .189 84.429);--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--fontWeight-semibold:600;--container-6xl:72rem;--container-md:28rem;--tracking-tight:-.025em;--fontWeight-normal:400;--fontWeight-medium:500;--default-transition-timingFunction:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--container-sm:24rem;--font-sans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--tracking-wide:.025em;--radius-none:0;--colors-white:#fff;--colors-neutral-950:oklch(14.5% 0 0);--colors-neutral-500:oklch(55.6% 0 0);--text-xs-fontSize:.75rem;--text-xs-lineHeight:1rem;--text-base-fontSize:1rem;--text-base-lineHeight:1.5rem;--text-4xl-fontSize:2.25rem;--text-4xl-lineHeight:2.5rem;--text-sm-fontSize:.875rem;--text-sm-lineHeight:1.25rem;--text-7xl-fontSize:4.5rem;--text-7xl-lineHeight:1;--text-2xl-fontSize:1.5rem;--text-2xl-lineHeight:2rem;--text-xl-fontSize:1.25rem;--text-xl-lineHeight:1.75rem;--leading-none:1;--text-3xl-fontSize:1.875rem;--text-3xl-lineHeight:2.25rem;--default-font-family:var(--font-sans);--default-monoFont-family:var(--font-mono)}*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-featureSettings,normal);font-variation-settings:var(--default-font-variationSettings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-monoFont-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-monoFont-featureSettings,normal);font-variation-settings:var(--default-monoFont-variationSettings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}.resize-y,textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden~=until-found])){display:none!important}.i-ph-arrow-counter-clockwise{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M224%20128a96%2096%200%200%201-94.71%2096H128a95.38%2095.38%200%200%201-65.9-26.2%208%208%200%200%201%2011-11.63%2080%2080%200%201%200-1.67-114.78%203%203%200%200%201-.26.25L44.59%2096H72a8%208%200%200%201%200%2016H24a8%208%200%200%201-8-8V56a8%208%200%200%201%2016%200v29.8L60.25%2060A96%2096%200%200%201%20224%20128%22%2F%3E%3C%2Fsvg%3E)}.i-ph-arrow-counter-clockwise,.i-ph-bookmark-simple,.i-ph-check,.i-ph-check-circle-light,.i-ph-circle-notch,.i-ph-copy,.i-ph-download-simple,.i-ph-flag,.i-ph-floppy-disk,.i-ph-github-logo,.i-ph-hammer,.i-ph-list-magnifying-glass,.i-ph-moon,.i-ph-paper-plane-tilt,.i-ph-plus,.i-ph-puzzle-piece,.i-ph-shuffle,.i-ph-sliders-horizontal,.i-ph-sun,.i-ph-translate,.i-ph-trash,.i-ph-warning,.i-ph-x{-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.15em;height:1.15em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-bookmark-simple{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M184%2032H72a16%2016%200%200%200-16%2016v176a8%208%200%200%200%2012.24%206.78L128%20193.43l59.77%2037.35A8%208%200%200%200%20200%20224V48a16%2016%200%200%200-16-16m0%20177.57-51.77-32.35a8%208%200%200%200-8.48%200L72%20209.57V48h112Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-check{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22m229.66%2077.66-128%20128a8%208%200%200%201-11.32%200l-56-56a8%208%200%200%201%2011.32-11.32L96%20188.69%20218.34%2066.34a8%208%200%200%201%2011.32%2011.32%22%2F%3E%3C%2Fsvg%3E)}.i-ph-check-circle-light{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M172.24%2099.76a6%206%200%200%201%200%208.48l-56%2056a6%206%200%200%201-8.48%200l-24-24a6%206%200%200%201%208.48-8.48L112%20151.51l51.76-51.75a6%206%200%200%201%208.48%200M230%20128A102%20102%200%201%201%20128%2026a102.12%20102.12%200%200%201%20102%20102m-12%200a90%2090%200%201%200-90%2090%2090.1%2090.1%200%200%200%2090-90%22%2F%3E%3C%2Fsvg%3E)}.i-ph-circle-notch{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M232%20128a104%20104%200%200%201-208%200c0-41%2023.81-78.36%2060.66-95.27a8%208%200%200%201%206.68%2014.54C60.15%2061.59%2040%2093.27%2040%20128a88%2088%200%200%200%20176%200c0-34.73-20.15-66.41-51.34-80.73a8%208%200%200%201%206.68-14.54C208.19%2049.64%20232%2087%20232%20128%22%2F%3E%3C%2Fsvg%3E)}.i-ph-copy{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M216%2032H88a8%208%200%200%200-8%208v40H40a8%208%200%200%200-8%208v128a8%208%200%200%200%208%208h128a8%208%200%200%200%208-8v-40h40a8%208%200%200%200%208-8V40a8%208%200%200%200-8-8m-56%20176H48V96h112Zm48-48h-32V88a8%208%200%200%200-8-8H96V48h112Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-download-simple{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M224%20144v64a8%208%200%200%201-8%208H40a8%208%200%200%201-8-8v-64a8%208%200%200%201%2016%200v56h160v-56a8%208%200%200%201%2016%200m-101.66%205.66a8%208%200%200%200%2011.32%200l40-40a8%208%200%200%200-11.32-11.32L136%20124.69V32a8%208%200%200%200-16%200v92.69L93.66%2098.34a8%208%200%200%200-11.32%2011.32Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-flag{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M42.76%2050A8%208%200%200%200%2040%2056v168a8%208%200%200%200%2016%200v-44.23c26.79-21.16%2049.87-9.75%2076.45%203.41%2016.4%208.11%2034.06%2016.85%2053%2016.85%2013.93%200%2028.54-4.75%2043.82-18a8%208%200%200%200%202.76-6V56a8%208%200%200%200-13.27-6c-28%2024.23-51.72%2012.49-79.21-1.12C111.07%2034.76%2078.78%2018.79%2042.76%2050M216%20172.25c-26.79%2021.16-49.87%209.74-76.45-3.41-25-12.35-52.81-26.13-83.55-8.4V59.79c26.79-21.16%2049.87-9.75%2076.45%203.4%2025%2012.35%2052.82%2026.13%2083.55%208.4Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-floppy-disk{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M219.31%2072%20184%2036.69A15.86%2015.86%200%200%200%20172.69%2032H48a16%2016%200%200%200-16%2016v160a16%2016%200%200%200%2016%2016h160a16%2016%200%200%200%2016-16V83.31A15.86%2015.86%200%200%200%20219.31%2072M168%20208H88v-56h80Zm40%200h-24v-56a16%2016%200%200%200-16-16H88a16%2016%200%200%200-16%2016v56H48V48h124.69L208%2083.31ZM160%2072a8%208%200%200%201-8%208H96a8%208%200%200%201%200-16h56a8%208%200%200%201%208%208%22%2F%3E%3C%2Fsvg%3E)}.i-ph-github-logo{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M208.31%2075.68A59.78%2059.78%200%200%200%20202.93%2028a8%208%200%200%200-6.93-4%2059.75%2059.75%200%200%200-48%2024h-24a59.75%2059.75%200%200%200-48-24%208%208%200%200%200-6.93%204%2059.78%2059.78%200%200%200-5.38%2047.68A58.14%2058.14%200%200%200%2056%20104v8a56.06%2056.06%200%200%200%2048.44%2055.47A39.8%2039.8%200%200%200%2096%20192v8H72a24%2024%200%200%201-24-24%2040%2040%200%200%200-40-40%208%208%200%200%200%200%2016%2024%2024%200%200%201%2024%2024%2040%2040%200%200%200%2040%2040h24v16a8%208%200%200%200%2016%200v-40a24%2024%200%200%201%2048%200v40a8%208%200%200%200%2016%200v-40a39.8%2039.8%200%200%200-8.44-24.53A56.06%2056.06%200%200%200%20216%20112v-8a58.14%2058.14%200%200%200-7.69-28.32M200%20112a40%2040%200%200%201-40%2040h-48a40%2040%200%200%201-40-40v-8a41.74%2041.74%200%200%201%206.9-22.48%208%208%200%200%200%201.1-7.69%2043.8%2043.8%200%200%201%20.79-33.58%2043.88%2043.88%200%200%201%2032.32%2020.06%208%208%200%200%200%206.71%203.69h32.35a8%208%200%200%200%206.74-3.69%2043.87%2043.87%200%200%201%2032.32-20.06%2043.8%2043.8%200%200%201%20.77%2033.58%208.09%208.09%200%200%200%201%207.65%2041.7%2041.7%200%200%201%207%2022.52Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-hammer{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22m251.34%20112-67.46-67.92a96.1%2096.1%200%200%200-135.77%200l-.09.09L34.25%2058.4a8%208%200%200%200%2011.49%2011.13l13.73-14.18a80%2080%200%200%201%2018.71-13.9L124.68%2088l-96%2096a16%2016%200%200%200%200%2022.63l20.69%2020.69a16%2016%200%200%200%2022.63%200l96-96%2014.34%2014.34L200%20163.3a16%2016%200%200%200%2022.63%200l28.69-28.69a16%2016%200%200%200%20.02-22.61M60.68%20216%2040%20195.31l68-68L128.68%20148Zm101.66-101.68L140%20136.67%20119.31%20116l22.35-22.35a8%208%200%200%200%200-11.32L94.32%2035a80%2080%200%200%201%2078.23%2020.41l44.22%2044.51L188%20128.66l-14.34-14.34a8%208%200%200%200-11.32%200m49%2037.66-12-12L228%20111.25l12%2012Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-list-magnifying-glass{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M32%2064a8%208%200%200%201%208-8h176a8%208%200%200%201%200%2016H40a8%208%200%200%201-8-8m8%2072h72a8%208%200%200%200%200-16H40a8%208%200%200%200%200%2016m88%2048H40a8%208%200%200%200%200%2016h88a8%208%200%200%200%200-16m109.66%2013.66a8%208%200%200%201-11.32%200L206%20177.36A40%2040%200%201%201%20217.36%20166l20.3%2020.3a8%208%200%200%201%200%2011.36M184%20168a24%2024%200%201%200-24-24%2024%2024%200%200%200%2024%2024%22%2F%3E%3C%2Fsvg%3E)}.i-ph-moon{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M233.54%20142.23a8%208%200%200%200-8-2%2088.08%2088.08%200%200%201-109.8-109.8%208%208%200%200%200-10-10%20104.84%20104.84%200%200%200-52.91%2037A104%20104%200%200%200%20136%20224a103.1%20103.1%200%200%200%2062.52-20.88%20104.84%20104.84%200%200%200%2037-52.91%208%208%200%200%200-1.98-7.98m-44.64%2048.11A88%2088%200%200%201%2065.66%2067.11a89%2089%200%200%201%2031.4-26A106%20106%200%200%200%2096%2056a104.11%20104.11%200%200%200%20104%20104%20106%20106%200%200%200%2014.92-1.06%2089%2089%200%200%201-26.02%2031.4%22%2F%3E%3C%2Fsvg%3E)}.i-ph-paper-plane-tilt{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M227.32%2028.68a16%2016%200%200%200-15.66-4.08h-.15L19.57%2082.84a16%2016%200%200%200-2.49%2029.8L102%20154l41.3%2084.87a15.86%2015.86%200%200%200%2014.44%209.13q.69%200%201.38-.06a15.88%2015.88%200%200%200%2014-11.51l58.2-191.94v-.15a16%2016%200%200%200-4-15.66m-69.49%20203.17-.05.14v-.07l-40.06-82.3%2048-48a8%208%200%200%200-11.31-11.31l-48%2048-82.33-40.06h-.07.14L216%2040Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-plus{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M224%20128a8%208%200%200%201-8%208h-80v80a8%208%200%200%201-16%200v-80H40a8%208%200%200%201%200-16h80V40a8%208%200%200%201%2016%200v80h80a8%208%200%200%201%208%208%22%2F%3E%3C%2Fsvg%3E)}.i-ph-puzzle-piece{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M220.27%20158.54a8%208%200%200%200-7.7-.46%2020%2020%200%201%201%200-36.16%208%208%200%200%200%2011.43-7.23V72a16%2016%200%200%200-16-16h-36.22a35%2035%200%200%200%20.22-4%2036.1%2036.1%200%200%200-11.36-26.24%2036%2036%200%200%200-60.55%2023.62%2036.6%2036.6%200%200%200%20.14%206.62H64a16%2016%200%200%200-16%2016v32.22a35%2035%200%200%200-4-.22%2036.12%2036.12%200%200%200-26.24%2011.36%2035.7%2035.7%200%200%200-9.69%2027%2036.08%2036.08%200%200%200%2033.31%2033.6%2035.7%2035.7%200%200%200%206.62-.14V208a16%2016%200%200%200%2016%2016h144a16%2016%200%200%200%2016-16v-42.69a8%208%200%200%200-3.73-6.77M208%20208H64v-42.69a8%208%200%200%200-11.43-7.23%2020%2020%200%201%201%200-36.16A8%208%200%200%200%2064%20114.69V72h46.69a8%208%200%200%200%207.23-11.43%2020%2020%200%201%201%2036.16%200A8%208%200%200%200%20161.31%2072H208v32.23a35.7%2035.7%200%200%200-6.62-.14A36%2036%200%200%200%20204%20176a35%2035%200%200%200%204-.22Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-shuffle{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M237.66%20178.34a8%208%200%200%201%200%2011.32l-24%2024a8%208%200%200%201-11.32-11.32L212.69%20192h-11.75a72.12%2072.12%200%200%201-58.59-30.15l-41.72-58.4A56.1%2056.1%200%200%200%2055.06%2080H32a8%208%200%200%201%200-16h23.06a72.12%2072.12%200%200%201%2058.59%2030.15l41.72%2058.4A56.1%2056.1%200%200%200%20200.94%20176h11.75l-10.35-10.34a8%208%200%200%201%2011.32-11.32ZM143%20107a8%208%200%200%200%2011.16-1.86l1.2-1.67A56.1%2056.1%200%200%201%20200.94%2080h11.75l-10.35%2010.34a8%208%200%200%200%2011.32%2011.32l24-24a8%208%200%200%200%200-11.32l-24-24a8%208%200%200%200-11.32%2011.32L212.69%2064h-11.75a72.12%2072.12%200%200%200-58.59%2030.15l-1.2%201.67A8%208%200%200%200%20143%20107m-30%2042a8%208%200%200%200-11.16%201.86l-1.2%201.67A56.1%2056.1%200%200%201%2055.06%20176H32a8%208%200%200%200%200%2016h23.06a72.12%2072.12%200%200%200%2058.59-30.15l1.2-1.67A8%208%200%200%200%20113%20149%22%2F%3E%3C%2Fsvg%3E)}.i-ph-sliders-horizontal{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M40%2088h33a32%2032%200%200%200%2062%200h81a8%208%200%200%200%200-16h-81a32%2032%200%200%200-62%200H40a8%208%200%200%200%200%2016m64-24a16%2016%200%201%201-16%2016%2016%2016%200%200%201%2016-16m112%20104h-17a32%2032%200%200%200-62%200H40a8%208%200%200%200%200%2016h97a32%2032%200%200%200%2062%200h17a8%208%200%200%200%200-16m-48%2024a16%2016%200%201%201%2016-16%2016%2016%200%200%201-16%2016%22%2F%3E%3C%2Fsvg%3E)}.i-ph-sun{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M120%2040V16a8%208%200%200%201%2016%200v24a8%208%200%200%201-16%200m72%2088a64%2064%200%201%201-64-64%2064.07%2064.07%200%200%201%2064%2064m-16%200a48%2048%200%201%200-48%2048%2048.05%2048.05%200%200%200%2048-48M58.34%2069.66a8%208%200%200%200%2011.32-11.32l-16-16a8%208%200%200%200-11.32%2011.32Zm0%20116.68-16%2016a8%208%200%200%200%2011.32%2011.32l16-16a8%208%200%200%200-11.32-11.32M192%2072a8%208%200%200%200%205.66-2.34l16-16a8%208%200%200%200-11.32-11.32l-16%2016A8%208%200%200%200%20192%2072m5.66%20114.34a8%208%200%200%200-11.32%2011.32l16%2016a8%208%200%200%200%2011.32-11.32ZM48%20128a8%208%200%200%200-8-8H16a8%208%200%200%200%200%2016h24a8%208%200%200%200%208-8m80%2080a8%208%200%200%200-8%208v24a8%208%200%200%200%2016%200v-24a8%208%200%200%200-8-8m112-88h-24a8%208%200%200%200%200%2016h24a8%208%200%200%200%200-16%22%2F%3E%3C%2Fsvg%3E)}.i-ph-translate{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22m247.15%20212.42-56-112a8%208%200%200%200-14.31%200l-21.71%2043.43A88%2088%200%200%201%20108%20126.93%20103.65%20103.65%200%200%200%20135.69%2064H160a8%208%200%200%200%200-16h-56V32a8%208%200%200%200-16%200v16H32a8%208%200%200%200%200%2016h87.63A87.76%2087.76%200%200%201%2096%20116.35a87.7%2087.7%200%200%201-19-31%208%208%200%201%200-15.08%205.34A103.6%20103.6%200%200%200%2084%20127a87.55%2087.55%200%200%201-52%2017%208%208%200%200%200%200%2016%20103.46%20103.46%200%200%200%2064-22.08%20104.2%20104.2%200%200%200%2051.44%2021.31l-26.6%2053.19a8%208%200%200%200%2014.31%207.16L148.94%20192h70.11l13.79%2027.58A8%208%200%200%200%20240%20224a8%208%200%200%200%207.15-11.58M156.94%20176%20184%20121.89%20211.05%20176Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-trash{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M216%2048h-40v-8a24%2024%200%200%200-24-24h-48a24%2024%200%200%200-24%2024v8H40a8%208%200%200%200%200%2016h8v144a16%2016%200%200%200%2016%2016h128a16%2016%200%200%200%2016-16V64h8a8%208%200%200%200%200-16M96%2040a8%208%200%200%201%208-8h48a8%208%200%200%201%208%208v8H96Zm96%20168H64V64h128Zm-80-104v64a8%208%200%200%201-16%200v-64a8%208%200%200%201%2016%200m48%200v64a8%208%200%200%201-16%200v-64a8%208%200%200%201%2016%200%22%2F%3E%3C%2Fsvg%3E)}.i-ph-warning{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M236.8%20188.09%20149.35%2036.22a24.76%2024.76%200%200%200-42.7%200L19.2%20188.09a23.51%2023.51%200%200%200%200%2023.72A24.35%2024.35%200%200%200%2040.55%20224h174.9a24.35%2024.35%200%200%200%2021.33-12.19%2023.51%2023.51%200%200%200%20.02-23.72m-13.87%2015.71a8.5%208.5%200%200%201-7.48%204.2H40.55a8.5%208.5%200%200%201-7.48-4.2%207.59%207.59%200%200%201%200-7.72l87.45-151.87a8.75%208.75%200%200%201%2015%200l87.45%20151.87a7.59%207.59%200%200%201-.04%207.72M120%20144v-40a8%208%200%200%201%2016%200v40a8%208%200%200%201-16%200m20%2036a12%2012%200%201%201-12-12%2012%2012%200%200%201%2012%2012%22%2F%3E%3C%2Fsvg%3E)}.i-ph-x{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M205.66%20194.34a8%208%200%200%201-11.32%2011.32L128%20139.31l-66.34%2066.35a8%208%200%200%201-11.32-11.32L116.69%20128%2050.34%2061.66a8%208%200%200%201%2011.32-11.32L128%20116.69l66.34-66.35a8%208%200%200%201%2011.32%2011.32L139.31%20128Z%22%2F%3E%3C%2Fsvg%3E)}.btn-ghost{color:color-mix(in oklab,var(--ff-muted) var(--un-text-opacity),transparent);border-color:#0000}.btn-ghost,.btn-outline{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight));--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 4);gap:calc(var(--spacing) * 2);height:calc(var(--spacing) * 9);-webkit-user-select:none;user-select:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.15s;border-width:1px;justify-content:center;align-items:center;transition-duration:.15s;display:inline-flex}.btn-outline{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent);border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent)}.btn-solid{color:color-mix(in oklab,var(--ff-bg) var(--un-text-opacity),transparent);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 4);border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent);background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent);gap:calc(var(--spacing) * 2);height:calc(var(--spacing) * 9);-webkit-user-select:none;user-select:none;transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.15s;justify-content:center;align-items:center;transition-duration:.15s;display:inline-flex}.btn-solid,.input{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));border-width:1px}.input{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);--un-outline-style:none;border-color:color-mix(in oklab,var(--ff-line) var(--un-border-opacity),transparent);border-radius:var(--radius-none);width:100%;transition-duration:var(--un-duration,var(--default-transition-duration));font-feature-settings:"ss01";background-color:#0000;outline-style:none;line-height:1}.\!color-base{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent)!important}.color-base,.group:hover .group-hover\:color-base{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent)}.color-inverse{color:color-mix(in oklab,var(--ff-bg) var(--un-text-opacity),transparent)}.color-muted,.label{color:color-mix(in oklab,var(--ff-muted) var(--un-text-opacity),transparent)}.label{--un-tracking:.12em;letter-spacing:.12em;font-size:11px;font-family:var(--font-mono);text-transform:uppercase;line-height:calc(1.45 * var(--ff-lh))}.btn-ghost:hover{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent);background-color:color-mix(in oklab,var(--ff-hover) var(--un-bg-opacity),transparent)}.btn-outline:hover{color:color-mix(in oklab,var(--ff-bg) var(--un-text-opacity),transparent);border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent);background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent)}.hover\:color-base:hover{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent)}.hover\:color-muted:hover{color:color-mix(in oklab,var(--ff-muted) var(--un-text-opacity),transparent)}.input::placeholder{color:color-mix(in oklab,var(--ff-faint) var(--un-text-opacity),transparent)}.slider::-webkit-slider-thumb{appearance:none;border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;background-color:color-mix(in oklab,var(--ff-bg) var(--un-bg-opacity),transparent);width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5);box-sizing:border-box;border-style:solid;margin-top:-5px}.slider{appearance:none;height:calc(var(--spacing) * 3.5);cursor:pointer;background-color:#0000;width:100%}.slider:focus-visible{outline-style:var(--un-outline-style);outline-width:2px;outline-color:color-mix(in oklab,var(--ff-fg) var(--un-outline-opacity),transparent);outline-offset:2px}.slider::-moz-range-thumb{border-radius:var(--radius-none);background-color:color-mix(in oklab,var(--ff-bg) var(--un-bg-opacity),transparent);width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.slider::-moz-range-thumb{border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;box-sizing:border-box;border-style:solid}.slider::-moz-range-track{border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;box-sizing:border-box;border-style:solid}.slider::-moz-range-track{height:calc(var(--spacing) * 1.5)}.slider::-webkit-slider-runnable-track{border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;height:calc(var(--spacing) * 1.5);background:linear-gradient(var(--ff-fg),var(--ff-fg)) 0 0/calc(7px + var(--slider-fraction) * (100% - 14px)) 100% no-repeat;box-sizing:border-box;border-style:solid}.border-base{border-color:color-mix(in oklab,var(--ff-line) var(--un-border-opacity),transparent)}.border-inverse{border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent)}.border-strong,.hover\:border-strong:hover{border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent)}.input:focus{border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent)}.bg-base{background-color:color-mix(in oklab,var(--ff-bg) var(--un-bg-opacity),transparent)}.bg-inverse{background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent)}.slider::-moz-range-progress{background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent);height:calc(var(--spacing) * 1.5)}.hover\:bg-hover:hover{background-color:color-mix(in oklab,var(--ff-hover) var(--un-bg-opacity),transparent)}.btn-solid:hover{opacity:.85}.btn-ghost:disabled,.btn-outline:disabled,.btn-solid:disabled{opacity:.4;cursor:not-allowed}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.text-2xl{font-size:var(--text-2xl-fontSize);line-height:var(--un-leading,var(--text-2xl-lineHeight))}.text-4xl{font-size:var(--text-4xl-fontSize);line-height:var(--un-leading,var(--text-4xl-lineHeight))}.text-7xl{font-size:var(--text-7xl-fontSize);line-height:var(--un-leading,var(--text-7xl-lineHeight))}.text-base{font-size:var(--text-base-fontSize);line-height:var(--un-leading,var(--text-base-lineHeight))}.text-sm{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight))}.text-xl{font-size:var(--text-xl-fontSize);line-height:var(--un-leading,var(--text-xl-lineHeight))}.text-xs{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight))}.dark .dark\:text-white{color:color-mix(in srgb,var(--colors-white) var(--un-text-opacity),transparent)}.text-\[11px\]{font-size:11px}.text-\[15px\]{font-size:15px}.text-\[56px\]{font-size:56px}.text-amber{color:color-mix(in srgb,var(--colors-amber-DEFAULT) var(--un-text-opacity),transparent)}.text-neutral-500{color:color-mix(in srgb,var(--colors-neutral-500) var(--un-text-opacity),transparent)}.text-neutral-950{color:color-mix(in srgb,var(--colors-neutral-950) var(--un-text-opacity),transparent)}.hover\:text-\[\#00DC82\]:hover{color:color-mix(in oklab,#00dc82 var(--un-text-opacity),transparent)}.hover\:color-inherit:hover,.text-inherit{color:inherit}.tracking-\[0\.04em\]{--un-tracking:.04em;letter-spacing:.04em}.tracking-\[0\.5em\]{--un-tracking:.5em;letter-spacing:.5em}.tracking-tight{--un-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--un-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.font-medium{--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium)}.font-mono{font-family:var(--font-mono)}.font-normal{--un-font-weight:var(--fontWeight-normal);font-weight:var(--fontWeight-normal)}.font-sans{font-family:var(--font-sans)}.font-semibold{--un-font-weight:var(--fontWeight-semibold);font-weight:var(--fontWeight-semibold)}.mx-auto{margin-inline:auto}.-mb-px{margin-bottom:-1px}.-mr-px{margin-right:-1px}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ms{margin-inline-start:calc(var(--spacing) * 4)}.mt-4{margin-top:calc(var(--spacing) * 4)}.p-0{padding:calc(var(--spacing) * 0)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px,.px-4{padding-inline:calc(var(--spacing) * 4)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing))}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing))}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.appearance-none{appearance:none}.outline,.outline-1{outline-style:var(--un-outline-style);outline-width:1px}.outline-transparent{outline-color:#0000}.focus-within\:outline-\[var\(--ff-fg\)\]:focus-within{outline-color:color-mix(in oklab,var(--ff-fg) var(--un-outline-opacity),transparent)}.focus-within\:outline-2:focus-within{outline-style:var(--un-outline-style);outline-width:2px}.hover\:outline-\[var\(--ff-line\)\]:hover{outline-color:color-mix(in oklab,var(--ff-line) var(--un-outline-opacity),transparent)}.focus\:outline-\[var\(--ff-fg\)\]:focus,.peer:focus-visible~.peer-focus-visible\:outline-\[var\(--ff-fg\)\]{outline-color:color-mix(in oklab,var(--ff-fg) var(--un-outline-opacity),transparent)}.peer:focus-visible~.peer-focus-visible\:outline-2{outline-style:var(--un-outline-style);outline-width:2px}.outline-offset-4{outline-offset:4px}.focus-within\:outline-offset-2:focus-within,.peer:focus-visible~.peer-focus-visible\:outline-offset-2{outline-offset:2px}.outline-none{--un-outline-style:none;outline-style:none}.focus\:outline-dashed:focus,.hover\:outline-dashed:hover{--un-outline-style:dashed;outline-style:dashed}.border{border-width:1px}.border-x{border-inline-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-0{border-width:0}.border-t-0{border-top-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.last\:border-r-0:last-child{border-right-width:0}.rounded-none{border-radius:var(--radius-none)}.bg-\[var\(--ff-line\)\]{background-color:color-mix(in oklab,var(--ff-line) var(--un-bg-opacity),transparent)}.bg-amber\:5{background-color:color-mix(in srgb,var(--colors-amber-DEFAULT) 5%,transparent)}.bg-transparent{background-color:#0000}.bg-white{background-color:color-mix(in srgb,var(--colors-white) var(--un-bg-opacity),transparent)}.dark .dark\:bg-neutral-950{background-color:color-mix(in srgb,var(--colors-neutral-950) var(--un-bg-opacity),transparent)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.underline{text-decoration-line:underline}.underline-offset-3{text-underline-offset:3px}.flex{display:flex}.inline-flex{display:inline-flex}.flex-1{flex:1}.flex-auto{flex:auto}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.gap-1{gap:calc(var(--spacing))}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-2{-moz-column-gap:calc(var(--spacing) * 2);column-gap:calc(var(--spacing) * 2)}.gap-x-4{-moz-column-gap:calc(var(--spacing) * 4);column-gap:calc(var(--spacing) * 4)}.gap-x-6{-moz-column-gap:calc(var(--spacing) * 6);column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.grid{display:grid}.col-span-full{grid-column:1/-1}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.size-\[10px\]{width:10px;height:10px}.size-\[11px\]{width:11px;height:11px}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-full{width:100%;height:100%}.h-14{height:calc(var(--spacing) * 14)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-px{height:1px}.h1{height:calc(var(--spacing))}.h2{height:calc(var(--spacing) * 2)}.h3{height:calc(var(--spacing) * 3)}.max-h-\[32rem\]{max-height:32rem}.max-w-\[46ch\]{max-width:46ch}.max-w-\[52ch\]{max-width:52ch}.max-w-\[60ch\]{max-width:60ch}.max-w-520px{max-width:520px}.max-w-6xl{max-width:var(--container-6xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-h-56{min-height:calc(var(--spacing) * 56)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-screen{min-height:100vh}.min-w-0{min-width:calc(var(--spacing) * 0)}.w-28{width:calc(var(--spacing) * 28)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-fit{width:fit-content}.w-full{width:100%}.hidden{display:none}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.pointer-events-none{pointer-events:none}.select-none{-webkit-user-select:none;user-select:none}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.ws-pre-line{white-space:pre-line}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.focus-ring:focus{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(1px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow),var(--un-inset-ring-shadow),var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-\[outline-color\]{transition-property:outline-color}.transition-\[outline-color\],.transition-all,.transition-colors{transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration))}.transition-all{transition-property:all}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.self-start{align-self:flex-start}.-inset-\[100vmax\]{inset:-100vmax}.inset-0{inset:calc(var(--spacing) * 0)}.-bottom-\[6px\]{bottom:-6px}.-left-\[6px\]{left:-6px}.-right-\[6px\]{right:-6px}.-top-\[6px\]{top:-6px}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-\[14px\]{left:14px}.left-\[2px\]{left:2px}.left-4{left:calc(var(--spacing) * 4)}.right-3{right:calc(var(--spacing) * 3)}.top-\[2px\]{top:2px}.top-0{top:calc(var(--spacing) * 0)}.top-3{top:calc(var(--spacing) * 3)}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.place-content-center{place-content:center}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-z-1{z-index:-1}.z-1{z-index:1}.z-10{z-index:10}.overflow-hidden{overflow:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.animate-spin{animation:1s linear infinite spin}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.isolate{isolation:isolate}.invert{--un-invert:invert(100%);filter:var(--un-blur,) var(--un-brightness,) var(--un-contrast,) var(--un-grayscale,) var(--un-hue-rotate,) var(--un-invert,) var(--un-saturate,) var(--un-sepia,) var(--un-drop-shadow,)}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal,) var(--un-slashed-zero,) var(--un-numeric-figure,) var(--un-numeric-spacing,) var(--un-numeric-fraction,)}.no-ruby{font-feature-settings:"ss01";line-height:1}.lh-1\.625{line-height:calc(1.625 * var(--ff-lh))}@supports (color:color-mix(in lab,red,red)){.dark .dark\:text-white{color:color-mix(in oklab,var(--colors-white) var(--un-text-opacity),transparent)}.text-amber{color:color-mix(in oklab,var(--colors-amber-DEFAULT) var(--un-text-opacity),transparent)}.text-neutral-500{color:color-mix(in oklab,var(--colors-neutral-500) var(--un-text-opacity),transparent)}.text-neutral-950{color:color-mix(in oklab,var(--colors-neutral-950) var(--un-text-opacity),transparent)}.bg-amber\:5{background-color:color-mix(in oklab,var(--colors-amber-DEFAULT) 5%,transparent)}.bg-white{background-color:color-mix(in oklab,var(--colors-white) var(--un-bg-opacity),transparent)}.dark .dark\:bg-neutral-950{background-color:color-mix(in oklab,var(--colors-neutral-950) var(--un-bg-opacity),transparent)}}@media (width>=40rem){.sm\:text-3xl{font-size:var(--text-3xl-fontSize);line-height:var(--un-leading,var(--text-3xl-lineHeight))}.sm\:text-\[72px\]{font-size:72px}.sm\:tracking-\[0\.12em\]{--un-tracking:.12em;letter-spacing:.12em}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:border-r{border-right-width:1px}.sm\:border-b-0{border-bottom-width:0}.sm\:inline-flex{display:inline-flex}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:inline{display:inline}.sm\:block{display:block}}@media (width>=64rem){.lg\:py-24{padding-block:calc(var(--spacing) * 24)}.lg\:border-b{border-bottom-width:1px}.lg\:border-r{border-right-width:1px}.lg\:border-b-0{border-bottom-width:0}.lg\:border-t-0{border-top-width:0}.lg\:grid-cols-\[340px_1fr\]{grid-template-columns:340px 1fr}.lg\:grid-cols-\[5fr_4fr\]{grid-template-columns:5fr 4fr}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:top-14{top:calc(var(--spacing) * 14)}.lg\:sticky{position:sticky}.lg\:z-1{z-index:1}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Furifont: furigana built into the font</title><script type="importmap">{"imports":{"#entry":"/_nuxt/
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Furifont: furigana built into the font</title><script type="importmap">{"imports":{"#entry":"/_nuxt/CyBtfuI_.js"}}</script><link rel="stylesheet" href="/_nuxt/entry.DbYzBu7U.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CyBtfuI_.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/y07Wd5I9.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CkUAspOr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4ezFGbh.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cl84O_XS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cmcq_Al0.js"><script type="module" src="/_nuxt/CyBtfuI_.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/CHjPDtV4.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/B2JUvp84.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Kki0DvjP.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.CaT3AK-0.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/B4Fx_Djw.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.WL1uhYQu.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/X45Acd-Y.js"><meta name="description" content="A Japanese font that shows furigana by itself."><meta property="og:type" content="website"><meta property="og:url" content="https://furifont.antfu.me"><meta property="og:title" content="Furifont: furigana built into the font"><meta property="og:description" content="A Japanese font that shows furigana by itself."><meta property="og:image" content="https://furifont.antfu.me/og.png"><meta property="og:image:width" content="2400"><meta property="og:image:height" content="1260"><meta property="og:image:alt" content="Furifont: furigana built into the font"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Furifont: furigana built into the font"><meta name="twitter:description" content="A Japanese font that shows furigana by itself."><meta name="twitter:image" content="https://furifont.antfu.me/og.png"><link rel="icon" type="image/svg+xml" href="favicon.svg"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{devCustomizeBase:"/__furifont/"},app:{baseURL:"/",buildId:"4f6d63ac-677f-4159-85f5-e2331fac408f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792114005838,false]</script></body></html>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Furifont
|
|
3
3
|
// @namespace https://furifont.antfu.me
|
|
4
|
-
// @version 0.
|
|
4
|
+
// @version 0.4.1
|
|
5
5
|
// @description Furigana on any page: Furifont turns on by itself on Japanese pages, and the menu switches family, turns it off, or turns okurigana readings (来る, 来ない) off.
|
|
6
6
|
// @homepageURL https://furifont.antfu.me
|
|
7
7
|
// @downloadURL https://furifont.antfu.me/furifont.user.js
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// ==/UserScript==
|
|
17
17
|
|
|
18
18
|
(() => {
|
|
19
|
-
var Furifont=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t={fonts:[{family:`Furifont Sans`,base:`Source Han Sans JP`,face:`sans`,rubyScript:`hiragana`},{family:`Furifont Sans Romaji`,base:`Source Han Sans JP`,face:`sans`,rubyScript:`hepburn`},{family:`Furifont Serif`,base:`Source Han Serif JP`,face:`serif`,rubyScript:`hiragana`},{family:`Furifont Serif Romaji`,base:`Source Han Serif JP`,face:`serif`,rubyScript:`hepburn`}],weights:[{style:`Regular`,weight:400}],variable:{style:`VF`,weights:[250,900]},options:{}},n={base:12290,selector:65024},r=`U+2E80-2FDF,U+3000-30FF,U+3190-319F,U+31F0-31FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE00-FE0F,U+FF00-FFEF,U+20000-3FFFF,U+E0100-E01EF`,i=/[\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}]/u;function a(e){return(e.match(/\s*(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|[^,]+)/g)??[]).map(e=>e.trim()).filter(Boolean)}function o(e){return e.replace(/^(["'])(.*)\1$/,`$2`)}let s=/mono|courier|consol|menlo|monaco|等幅/i;function c(e){let t=e.map(o);return t.some(e=>e===`monospace`||e===`ui-monospace`)||s.test(t[0]??``)}async function l({family:e,url:n,fetchFont:i}){let a=(t,n=`400`)=>new FontFace(e,t,{unicodeRange:r,weight:n}).load().catch(()=>void 0),o=await Promise.all(t.weights.map(({style:t,weight:n})=>a(`local("${e} ${t}")${n===400?`,local("${e}")`:``}`,String(n)))),s=t.variable.weights.join(` `),c=o.some(Boolean)?o:[await(i?i(n).then(e=>a(e,s),()=>void 0):a(`url("${n}")`,s))];for(let e of c)e&&document.fonts.add(e);return c.some(Boolean)}function u(e){let t=/* @__PURE__ */ new Map,n=/(?<!\p{sc=Han})\p{sc=Han}+(?=\p{sc=Hiragana})/gu,r=n=>{if(!t.has(n)){let r=/* @__PURE__ */ new Map;for(let[t,i]of Object.entries(e.pairs[n]??{}))for(let e of i)r.set(e,t||null);t.set(n,r.size?{reading:r,longest:Math.max(...[...r.keys()].map(e=>e.length))}:void 0)}return t.get(n)},i=(t,n)=>{let r=t.length>[...t][0].length,i=(r?e.words[t]?.map(e=>[...e.matchAll(/\[([^\]]*)\]/g)].map(e=>e[1]).join(``)):e.readings[t])?.indexOf(n)??-1;return i>=+!!r&&i<15&&e.lone[t]!==n?i+1:0};return{find:e=>{let t=[];for(let{0:a,index:o}of e.matchAll(n)){let n=r(a),s=e.slice(o+a.length,o+a.length+(n?.longest??0)),c;for(let e=s.length;e>0&&c===void 0;e--)c=n?.reading.get(s.slice(0,e));let l=c?i(a,c):0;c&&l&&t.push({at:o,length:a.length,reading:c,salt:l})}return t},saltOf:i}}let d=/* @__PURE__ */ new Map;function f(e,t){let n=d.get(e);return n||(n=(t?t(e):fetch(e).then(t=>t.ok?t.text():Promise.reject(Error(e)))).then(JSON.parse),n.catch(()=>d.delete(e)),d.set(e,n)),n}async function p({readings:e,pairs:t,fetchText:n}){try{let[r,i]=await Promise.all([f(e,n),f(t,n)]);return r.salt===!0?u({pairs:i,readings:r.kanji,words:r.words,lone:r.lone}):void 0}catch{return}}function m(e,t){return{href:new URL(`/#downloads`,e).href,text:t.download}}function h(e,t,n){document.querySelector(`furifont-toast`)?.remove();let r=document.createElement(`furifont-toast`),i=r.attachShadow({mode:`open`}),a=new CSSStyleSheet;a.replaceSync(`:host{all:initial}div{position:fixed;z-index:2147483647;right:16px;bottom:16px;display:flex;gap:16px;align-items:start;max-width:360px;padding:12px 16px;border:1px solid #fafafa2b;background:#0a0a0a;color:#fafafa;font:14px/1.5 system-ui,sans-serif}p{margin:0}a{color:inherit;margin-right:12px}button{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}`),i.adoptedStyleSheets=[a];let o=document.createElement(`p`);o.append(e,` `,...t.map(({href:e,text:t})=>Object.assign(document.createElement(`a`),{href:e,target:`_blank`,rel:`noopener`,textContent:t})));let s=Object.assign(document.createElement(`button`),{ariaLabel:n,textContent:`×`,onclick:()=>r.remove()}),c=Object.assign(document.createElement(`div`),{role:`alert`});c.append(o,s),i.append(c),document.body.append(r),setTimeout(()=>r.remove(),1e4)}function g(e){let[t=0,n=0,r=0]=e.split(`.`).map(Number);return t*1e3+n*100+r}function _(e){let t=document.createElement(`canvas`).getContext(`2d`);return t.font=`1000px "${e}"`,Math.round(t.measureText(String.fromCodePoint(n.base,n.selector)).width)-2e3}async function v({family:e,url:t,toast:n},r){let i=new URL(`/version.json`,t).href,a;try{a=g(JSON.parse(await(r.fetchText?r.fetchText(i):fetch(i).then(e=>e.text()))).version)}catch{return}let o=[...g(r.version)<a?[r]:[],..._(e)<a?[m(t,n)]:[]];o.length&&h(n.outdated,o,n.close)}function y(e){let t=[];for(let n of e.filter(e=>e.isConnected)){let e=document.createTreeWalker(n,NodeFilter.SHOW_TEXT);for(let n=e.currentNode;n;n=e.nextNode())n.nodeType===Node.TEXT_NODE&&n.parentElement&&t.push(n)}return t}function b(e){let t=new Set(y(e).filter(e=>i.test(e.nodeValue??``)).map(e=>e.parentElement));for(let n of e){if(n.nodeType!==Node.ELEMENT_NODE)continue;let e=n;e.matches(`input,textarea`)&&t.add(e);for(let n of e.querySelectorAll(`input,textarea`))t.add(n)}return t}function x(e){let t=new CSSStyleSheet,n=[],r,i=0,s=()=>{for(let e of document.querySelectorAll(`[data-furifont-reading]`)){let t=r?r.saltOf(e.textContent??``,e.dataset.furifontReading):0;t?e.dataset.furifontSalt=String(t):delete e.dataset.furifontSalt}},l=e=>{if(!r)return;let t=y(e).filter(e=>/\p{sc=Han}\p{sc=Hiragana}/u.test(e.nodeValue??``)&&!e.parentElement.closest(`script,style,textarea,noscript,[contenteditable]:not([contenteditable=false]),[data-furifont-reading]`));for(let e of t)for(let{at:t,length:n,reading:i,salt:a}of r.find(e.nodeValue??``).reverse()){let r=t?e.splitText(t):e;r.length>n&&r.splitText(n);let o=document.createElement(`span`);o.dataset.furifontReading=i,o.dataset.furifontSalt=String(a),r.replaceWith(o),o.append(r)}},u={dispose:()=>{},sheet:t,family:e,restyle:()=>{let e=Array.from({length:15},(e,t)=>`[data-furifont-salt="${t+1}"]{font-feature-settings:"salt" ${t+1}!important}`).join(``),r=n.map((e,t)=>`[data-furifont="${t}"]{font-family:"${u.family}",${e}!important}`).join(``);t.replaceSync(`${r}[data-furifont-tight]{line-height:normal!important}${e}`)},okurigana:e=>{let n=++i;r=void 0,s(),e&&!t.disabled&&p(e).then(e=>{n===i&&e&&(r=e,s(),l([document.body]))})}},d=e=>{let t=[...b(e)].filter(e=>!e.hasAttribute(`data-furifont`)).map(e=>{let{fontFamily:t,lineHeight:n,fontSize:r}=getComputedStyle(e),i=a(t);return o(i[0]??``)===u.family&&i.shift(),{element:e,stack:i,tight:Number.parseFloat(n)<1.6*Number.parseFloat(r)}}).filter(({stack:e})=>e.length&&!c(e)),r=n.length;for(let{element:e,stack:r,tight:i}of t){let t=r.join(`,`),a=n.includes(t)?n.indexOf(t):n.push(t)-1;e.setAttribute(`data-furifont`,String(a)),i&&e.setAttribute(`data-furifont-tight`,``)}n.length>r&&u.restyle()},f=new MutationObserver(e=>{let t=e.flatMap(e=>e.type===`characterData`?[e.target]:[...e.addedNodes]);d(t),l(t)});return u.dispose=()=>{f.disconnect(),i++,r=void 0,document.adoptedStyleSheets=document.adoptedStyleSheets.filter(e=>e!==t);for(let e of document.querySelectorAll(`[data-furifont],[data-furifont-tight]`))e.removeAttribute(`data-furifont`),e.removeAttribute(`data-furifont-tight`);for(let e of document.querySelectorAll(`[data-furifont-reading]`))e.replaceWith(...e.childNodes);window.furifont===u&&delete window.furifont},window.furifont=u,document.adoptedStyleSheets=[...document.adoptedStyleSheets,t],d([document.body]),f.observe(document.body,{childList:!0,characterData:!0,subtree:!0}),u}async function S(e){let{family:t,url:n,toast:r,okurigana:i,update:a}=e,o=window.furifont;o?.family===t?(o.sheet.disabled=!o.sheet.disabled,o.sheet.disabled||o.okurigana(i)):(o??=x(t),o.family=t,o.restyle(),o.sheet.disabled=!1,await l(e)?(o.okurigana(i),a&&await v(e,a)):(o.sheet.disabled=!0,o.family=``,h(r.message,[m(n,r)],r.close)))}return e.JAPANESE=i,e.UNICODE_RANGE=r,e.createOkuriganaReader=u,e.isMonospace=c,e.loadFurifont=l,e.loadOkuriganaReader=p,e.parseFontStack=a,e.showToast=h,e.toggleFurifont=S,e})({});
|
|
19
|
+
var Furifont=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t={fonts:[{family:`Furifont Sans`,base:`Source Han Sans JP`,face:`sans`,rubyScript:`hiragana`},{family:`Furifont Sans Romaji`,base:`Source Han Sans JP`,face:`sans`,rubyScript:`hepburn`},{family:`Furifont Serif`,base:`Source Han Serif JP`,face:`serif`,rubyScript:`hiragana`},{family:`Furifont Serif Romaji`,base:`Source Han Serif JP`,face:`serif`,rubyScript:`hepburn`}],weights:[{style:`Regular`,weight:400}],variable:{style:`VF`,weights:[250,900]},options:{take:4e4}},n={base:12290,selector:65024},r=`U+2E80-2FDF,U+3000-30FF,U+3190-319F,U+31F0-31FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE00-FE0F,U+FF00-FFEF,U+20000-3FFFF,U+E0100-E01EF`,i=/[\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}]/u;function a(e){return(e.match(/\s*(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|[^,]+)/g)??[]).map(e=>e.trim()).filter(Boolean)}function o(e){return e.replace(/^(["'])(.*)\1$/,`$2`)}let s=/mono|courier|consol|menlo|monaco|等幅/i;function c(e){let t=e.map(o);return t.some(e=>e===`monospace`||e===`ui-monospace`)||s.test(t[0]??``)}async function l({family:e,url:n,fetchFont:i}){let a=(t,n=`400`)=>new FontFace(e,t,{unicodeRange:r,weight:n}).load().catch(()=>void 0),o=await Promise.all(t.weights.map(({style:t,weight:n})=>a(`local("${e} ${t}")${n===400?`,local("${e}")`:``}`,String(n)))),s=t.variable.weights.join(` `),c=o.some(Boolean)?o:[await(i?i(n).then(e=>a(e,s),()=>void 0):a(`url("${n}")`,s))];for(let e of c)e&&document.fonts.add(e);return c.some(Boolean)}function u(e){let t=/* @__PURE__ */ new Map,n=/(?<!\p{sc=Han})\p{sc=Han}+(?=\p{sc=Hiragana})/gu,r=n=>{if(!t.has(n)){let r=/* @__PURE__ */ new Map;for(let[t,i]of Object.entries(e.pairs[n]??{}))for(let e of i)r.set(e,t||null);t.set(n,r.size?{reading:r,longest:Math.max(...[...r.keys()].map(e=>e.length))}:void 0)}return t.get(n)},i=(t,n)=>{let r=t.length>[...t][0].length,i=(r?e.words[t]?.map(e=>[...e.matchAll(/\[([^\]]*)\]/g)].map(e=>e[1]).join(``)):e.readings[t])?.indexOf(n)??-1;return i>=+!!r&&i<15&&e.lone[t]!==n?i+1:0};return{find:e=>{let t=[];for(let{0:a,index:o}of e.matchAll(n)){let n=r(a),s=e.slice(o+a.length,o+a.length+(n?.longest??0)),c;for(let e=s.length;e>0&&c===void 0;e--)c=n?.reading.get(s.slice(0,e));let l=c?i(a,c):0;c&&l&&t.push({at:o,length:a.length,reading:c,salt:l})}return t},saltOf:i}}let d=/* @__PURE__ */ new Map;function f(e,t){let n=d.get(e);return n||(n=(t?t(e):fetch(e).then(t=>t.ok?t.text():Promise.reject(Error(e)))).then(JSON.parse),n.catch(()=>d.delete(e)),d.set(e,n)),n}async function p({readings:e,pairs:t,fetchText:n}){try{let[r,i]=await Promise.all([f(e,n),f(t,n)]);return r.salt===!0?u({pairs:i,readings:r.kanji,words:r.words,lone:r.lone}):void 0}catch{return}}function m(e,t){return{href:new URL(`/#downloads`,e).href,text:t.download}}function h(e,t,n){document.querySelector(`furifont-toast`)?.remove();let r=document.createElement(`furifont-toast`),i=r.attachShadow({mode:`open`}),a=new CSSStyleSheet;a.replaceSync(`:host{all:initial}div{position:fixed;z-index:2147483647;right:16px;bottom:16px;display:flex;gap:16px;align-items:start;max-width:360px;padding:12px 16px;border:1px solid #fafafa2b;background:#0a0a0a;color:#fafafa;font:14px/1.5 system-ui,sans-serif}p{margin:0}a{color:inherit;margin-right:12px}button{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}`),i.adoptedStyleSheets=[a];let o=document.createElement(`p`);o.append(e,` `,...t.map(({href:e,text:t})=>Object.assign(document.createElement(`a`),{href:e,target:`_blank`,rel:`noopener`,textContent:t})));let s=Object.assign(document.createElement(`button`),{ariaLabel:n,textContent:`×`,onclick:()=>r.remove()}),c=Object.assign(document.createElement(`div`),{role:`alert`});c.append(o,s),i.append(c),document.body.append(r),setTimeout(()=>r.remove(),1e4)}function g(e){let[t=0,n=0,r=0]=e.split(`.`).map(Number);return t*1e3+n*100+r}function _(e){let t=document.createElement(`canvas`).getContext(`2d`);return t.font=`1000px "${e}"`,Math.round(t.measureText(String.fromCodePoint(n.base,n.selector)).width)-2e3}async function v({family:e,url:t,toast:n},r){let i=new URL(`/version.json`,t).href,a;try{a=g(JSON.parse(await(r.fetchText?r.fetchText(i):fetch(i).then(e=>e.text()))).version)}catch{return}let o=[...g(r.version)<a?[r]:[],..._(e)<a?[m(t,n)]:[]];o.length&&h(n.outdated,o,n.close)}function y(e){let t=[];for(let n of e.filter(e=>e.isConnected)){let e=document.createTreeWalker(n,NodeFilter.SHOW_TEXT);for(let n=e.currentNode;n;n=e.nextNode())n.nodeType===Node.TEXT_NODE&&n.parentElement&&t.push(n)}return t}function b(e){let t=new Set(y(e).filter(e=>i.test(e.nodeValue??``)).map(e=>e.parentElement));for(let n of e){if(n.nodeType!==Node.ELEMENT_NODE)continue;let e=n;e.matches(`input,textarea`)&&t.add(e);for(let n of e.querySelectorAll(`input,textarea`))t.add(n)}return t}function x(e){let t=new CSSStyleSheet,n=[],r,i=0,s=()=>{for(let e of document.querySelectorAll(`[data-furifont-reading]`)){let t=r?r.saltOf(e.textContent??``,e.dataset.furifontReading):0;t?e.dataset.furifontSalt=String(t):delete e.dataset.furifontSalt}},l=e=>{if(!r)return;let t=y(e).filter(e=>/\p{sc=Han}\p{sc=Hiragana}/u.test(e.nodeValue??``)&&!e.parentElement.closest(`script,style,textarea,noscript,ruby,[contenteditable]:not([contenteditable=false]),[data-furifont-reading]`));for(let e of t)for(let{at:t,length:n,reading:i,salt:a}of r.find(e.nodeValue??``).reverse()){let r=t?e.splitText(t):e;r.length>n&&r.splitText(n);let o=document.createElement(`span`);o.dataset.furifontReading=i,o.dataset.furifontSalt=String(a),r.replaceWith(o),o.append(r)}},u={dispose:()=>{},sheet:t,family:e,restyle:()=>{let e=Array.from({length:15},(e,t)=>`[data-furifont-salt="${t+1}"]{font-feature-settings:"salt" ${t+1}!important}`).join(``),r=n.map((e,t)=>`[data-furifont="${t}"]{font-family:"${u.family}",${e}!important}`).join(``);t.replaceSync(`${r}[data-furifont-tight]{line-height:normal!important}ruby,ruby *{font-feature-settings:"ss01"!important}${e}`)},okurigana:e=>{let n=++i;r=void 0,s(),e&&!t.disabled&&p(e).then(e=>{n===i&&e&&(r=e,s(),l([document.body]))})}},d=e=>{let t=[...b(e)].filter(e=>!e.hasAttribute(`data-furifont`)).map(e=>{let{fontFamily:t,lineHeight:n,fontSize:r}=getComputedStyle(e),i=a(t);return o(i[0]??``)===u.family&&i.shift(),{element:e,stack:i,tight:Number.parseFloat(n)<1.6*Number.parseFloat(r)}}).filter(({stack:e})=>e.length&&!c(e)),r=n.length;for(let{element:e,stack:r,tight:i}of t){let t=r.join(`,`),a=n.includes(t)?n.indexOf(t):n.push(t)-1;e.setAttribute(`data-furifont`,String(a)),i&&e.setAttribute(`data-furifont-tight`,``)}n.length>r&&u.restyle()},f=new MutationObserver(e=>{let t=e.flatMap(e=>e.type===`characterData`?[e.target]:[...e.addedNodes]);d(t),l(t)});return u.dispose=()=>{f.disconnect(),i++,r=void 0,document.adoptedStyleSheets=document.adoptedStyleSheets.filter(e=>e!==t);for(let e of document.querySelectorAll(`[data-furifont],[data-furifont-tight]`))e.removeAttribute(`data-furifont`),e.removeAttribute(`data-furifont-tight`);for(let e of document.querySelectorAll(`[data-furifont-reading]`))e.replaceWith(...e.childNodes);window.furifont===u&&delete window.furifont},window.furifont=u,document.adoptedStyleSheets=[...document.adoptedStyleSheets,t],d([document.body]),f.observe(document.body,{childList:!0,characterData:!0,subtree:!0}),u}async function S(e){let{family:t,url:n,toast:r,okurigana:i,update:a}=e,o=window.furifont;o?.family===t?(o.sheet.disabled=!o.sheet.disabled,o.sheet.disabled||o.okurigana(i)):(o??=x(t),o.family=t,o.restyle(),o.sheet.disabled=!1,await l(e)?(o.okurigana(i),a&&await v(e,a)):(o.sheet.disabled=!0,o.family=``,h(r.message,[m(n,r)],r.close)))}return e.JAPANESE=i,e.UNICODE_RANGE=r,e.createOkuriganaReader=u,e.isMonospace=c,e.loadFurifont=l,e.loadOkuriganaReader=p,e.parseFontStack=a,e.showToast=h,e.toggleFurifont=S,e})({});
|
|
20
20
|
;(function start(manager, toggle, fonts, pairs, script, toasts, menus, detect) {
|
|
21
21
|
var _a;
|
|
22
22
|
const locale = detect(navigator.languages);
|
|
@@ -55,7 +55,7 @@ var Furifont=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Mod
|
|
|
55
55
|
registerOkurigana();
|
|
56
56
|
if (/^ja(?:-|$)/i.test(document.documentElement.lang))
|
|
57
57
|
toggle({ ...options(saved), update: update() });
|
|
58
|
-
})({ getValue: GM_getValue, setValue: GM_setValue, registerMenuCommand: GM_registerMenuCommand, xmlHttpRequest: GM_xmlhttpRequest }, Furifont.toggleFurifont, [{"family":"Furifont Sans","url":"https://furifont.antfu.me/fonts/FurifontSansVF.woff2?v=0.
|
|
58
|
+
})({ getValue: GM_getValue, setValue: GM_setValue, registerMenuCommand: GM_registerMenuCommand, xmlHttpRequest: GM_xmlhttpRequest }, Furifont.toggleFurifont, [{"family":"Furifont Sans","url":"https://furifont.antfu.me/fonts/FurifontSansVF.woff2?v=0.4.1","readings":"https://furifont.antfu.me/fonts/FurifontSansVF.ivs.json?v=0.4.1"},{"family":"Furifont Sans Romaji","url":"https://furifont.antfu.me/fonts/FurifontSansRomajiVF.woff2?v=0.4.1","readings":"https://furifont.antfu.me/fonts/FurifontSansRomajiVF.ivs.json?v=0.4.1"},{"family":"Furifont Serif","url":"https://furifont.antfu.me/fonts/FurifontSerifVF.woff2?v=0.4.1","readings":"https://furifont.antfu.me/fonts/FurifontSerifVF.ivs.json?v=0.4.1"},{"family":"Furifont Serif Romaji","url":"https://furifont.antfu.me/fonts/FurifontSerifRomajiVF.woff2?v=0.4.1","readings":"https://furifont.antfu.me/fonts/FurifontSerifRomajiVF.ivs.json?v=0.4.1"}], "https://furifont.antfu.me/okurigana.json", {"version":"0.4.1","href":"https://furifont.antfu.me/furifont.user.js"}, {"en":{"message":"Furifont could not load its font on this page. Some sites, such as X and GitHub, do not let fonts load from other sites. On those sites, you must install Furifont on your computer.","download":"Download the fonts","close":"Close","outdated":"A newer version of Furifont is out.","userscript":"Update the userscript","bookmarklet":"Get the new bookmarklet"},"ja":{"message":"このページでは Furifont のフォントを読み込めませんでした。X や GitHub のように、他のサイトのフォントを読み込めないサイトがあります。そのようなサイトでは、パソコンに Furifont をインストールする必要があります。","download":"フォントをダウンロード","close":"閉じる","outdated":"Furifont の新しいバージョンがあります。","userscript":"ユーザースクリプトを更新","bookmarklet":"新しいブックマークレットを入手"},"zh-Hans":{"message":"Furifont 无法在此页面加载字体。有些网站(如 X 和 GitHub)不允许加载其他网站的字体。在这些网站上,需要在电脑上安装 Furifont。","download":"下载字体","close":"关闭","outdated":"Furifont 有新版本了。","userscript":"更新用户脚本","bookmarklet":"获取新的书签小工具"},"zh-Hant":{"message":"Furifont 無法在此頁面載入字型。有些網站(如 X 和 GitHub)不允許載入其他網站的字型。在這些網站上,需要在電腦上安裝 Furifont。","download":"下載字型","close":"關閉","outdated":"Furifont 有新版本了。","userscript":"更新使用者腳本","bookmarklet":"取得新的書籤小工具"}}, {"en":{"okuriganaOn":"Okurigana readings: on","okuriganaOff":"Okurigana readings: off"},"ja":{"okuriganaOn":"送り仮名の読み:オン","okuriganaOff":"送り仮名の読み:オフ"},"zh-Hans":{"okuriganaOn":"送假名读音:开","okuriganaOff":"送假名读音:关"},"zh-Hant":{"okuriganaOn":"送假名讀音:開","okuriganaOff":"送假名讀音:關"}}, function detectLocale(languages) {
|
|
59
59
|
for (const tag of languages.map((l) => l.toLowerCase())) {
|
|
60
60
|
if (tag.startsWith("zh"))
|
|
61
61
|
return /-(?:tw|hk|mo|hant)\b/.test(tag) ? "zh-Hant" : "zh-Hans";
|
package/dist/client/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Furifont: furigana built into the font</title><script type="importmap">{"imports":{"#entry":"/_nuxt/
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Furifont: furigana built into the font</title><script type="importmap">{"imports":{"#entry":"/_nuxt/CyBtfuI_.js"}}</script><link rel="stylesheet" href="/_nuxt/entry.DbYzBu7U.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CyBtfuI_.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/y07Wd5I9.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CkUAspOr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4ezFGbh.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cl84O_XS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cmcq_Al0.js"><script type="module" src="/_nuxt/CyBtfuI_.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/CHjPDtV4.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/B2JUvp84.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/Kki0DvjP.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.CaT3AK-0.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/B4Fx_Djw.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.WL1uhYQu.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/X45Acd-Y.js"><meta name="description" content="A Japanese font that shows furigana by itself."><meta property="og:type" content="website"><meta property="og:url" content="https://furifont.antfu.me"><meta property="og:title" content="Furifont: furigana built into the font"><meta property="og:description" content="A Japanese font that shows furigana by itself."><meta property="og:image" content="https://furifont.antfu.me/og.png"><meta property="og:image:width" content="2400"><meta property="og:image:height" content="1260"><meta property="og:image:alt" content="Furifont: furigana built into the font"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Furifont: furigana built into the font"><meta name="twitter:description" content="A Japanese font that shows furigana by itself."><meta name="twitter:image" content="https://furifont.antfu.me/og.png"><link rel="icon" type="image/svg+xml" href="favicon.svg"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{devCustomizeBase:"/__furifont/"},app:{baseURL:"/",buildId:"4f6d63ac-677f-4159-85f5-e2331fac408f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1792114005840,false]</script></body></html>
|