ranuts 0.3.0-alpha.1 → 0.4.0-alpha.2
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/CLAUDE.md +23 -12
- package/dist/{color-Dohr9BXX.js → color-Bh_QUad2.js} +1 -1
- package/dist/i18n-D1p8_7wC.js +1 -0
- package/dist/index.js +1 -1
- package/dist/src/node/index.js +1 -1
- package/dist/src/sw/index.d.ts +109 -0
- package/dist/src/sw/index.js +1 -0
- package/dist/src/utils/dom.d.ts +23 -0
- package/dist/src/utils/file.d.ts +7 -2
- package/dist/src/utils/i18n/index.js +1 -1
- package/dist/src/utils/i18n.d.ts +64 -14
- package/dist/src/utils/idb.d.ts +40 -0
- package/dist/src/utils/index.d.ts +15 -10
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/paginate.d.ts +73 -0
- package/dist/src/utils/speech.d.ts +86 -0
- package/dist/src/utils/str.d.ts +35 -0
- package/dist/src/utils/time.d.ts +73 -3
- package/dist/src/utils/worker.d.ts +49 -0
- package/dist/test/sw.test.d.ts +1 -0
- package/dist/test/utils/autosize.test.d.ts +1 -0
- package/dist/test/utils/i18n.test.d.ts +1 -0
- package/dist/test/utils/idb-collection.test.d.ts +1 -0
- package/dist/test/utils/paginate.test.d.ts +1 -0
- package/dist/test/utils/speech.test.d.ts +1 -0
- package/dist/test/utils/time.test.d.ts +1 -0
- package/dist/test/utils/truncate.test.d.ts +1 -0
- package/dist/test/utils/worker-serve.test.d.ts +1 -0
- package/dist/umd/index.umd.cjs +1 -1
- package/dist/umd/utils/utils.umd.cjs +1 -1
- package/dist/utils-vTF6lLZZ.js +1 -0
- package/docs/API.md +65 -13
- package/package.json +5 -1
- package/dist/i18n-Cf5TtRb4.js +0 -1
- package/dist/utils-BDtXHcK8.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,t}from"./enums-BAgbyGdH.js";import{G as n,K as r,U as i,X as a,Z as o}from"./color-Bh_QUad2.js";import{F as s,K as c,N as u,S as l,_ as d,j as h}from"./i18n-D1p8_7wC.js";var p=(e="")=>{if(0===e.length)return 0;if(e.endsWith("%")){const t=Number(e.replace("%",""));return t>1?t/100:t}return Number(e)},f=(e,t=0,n=1)=>Math.min(n,Math.max(t,e)),m=class e{getDecimalLength=e=>{const[t,n]=e.toString().split(".");return n?n.length:0};amend=(e,t=15)=>parseFloat(Number(e).toPrecision(t));power=(e,t)=>Math.pow(10,Math.max(this.getDecimalLength(e),this.getDecimalLength(t)));static handleMethod=(t,n)=>{const{power:r,amend:i}=new e,a=r(t,n),o=i(t*a),s=i(n*a);return e=>{switch(e){case"+":return(o+s)/a;case"-":return(o-s)/a;case"*":return o*s/(a*a);case"/":return o/s}}};static add=(e,t)=>this.handleMethod(e,t)("+");static divide=(e,t)=>this.handleMethod(e,t)("/");static multiply=(e,t)=>this.handleMethod(e,t)("*");static subtract=(e,t)=>this.handleMethod(e,t)("-")};function g(e,t,n){function r(e){const[t,n]=e.toString().split(".");return n?n.length:0}const i=(e,t=15)=>parseFloat(Number(e).toPrecision(t)),a=Math.pow(10,Math.max(r(e),r(n)));let o=0;switch(e=i(e*a),n=i(n*a),t){case"+":o=(e+n)/a;break;case"-":o=(e-n)/a;break;case"*":o=e*n/(a*a);break;case"/":o=e/n}return o=i(o),{result:o,next:(e,t)=>g(o,e,t)}}var y=(e,t="zh-CN",n=2,r=2)=>{let i=["","K","M","B","T"],a=3;if("zh-CN"===t&&(i=[""," 万"," 亿"," 万亿"],a=4),"zh-HK"===t&&(i=[""," 萬"," 億"," 萬億"],a=4),!/^[+-]?\d+(?:\.\d+)?$/.test(e))return"--";const o=parseInt(e).toString().length,s=Math.min(Math.floor((o-1)/a),i.length-1),c=m.divide(Number(e),10**(s*a))?.toFixed(n);return Number(c).toFixed(r)+i[s]},w=(e,t)=>o(e).startsWith("+")||o(e).startsWith("-")?o(e):t?Number(t||0)>0?`+${o(e)}`:o(e):Number(e||0)>0?`+${o(e)}`:o(e),b={"零":0,"〇":0,"一":1,"二":2,"两":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9},S={"十":10,"百":100,"千":1e3},C=e=>{const t=a(e.trim());if(/^\d+$/.test(t))return Number.parseInt(t,10);if(0===t.length)return null;let n=0,r=0,i=0;for(const a of t)if(void 0!==b[a])i=b[a];else if(void 0!==S[a])r+=(i||("十"===a?1:0))*S[a],i=0;else{if("万"!==a&&"萬"!==a)return null;n=1e4*(n+r+i),r=0,i=0}return n+r+i},v={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},E=e=>{const t=e.trim().toUpperCase();if(!/^[IVXLCDM]+$/.test(t))return null;let n=0;for(let r=0;r<t.length;r++){const e=v[t[r]],i=v[t[r+1]];i&&e<i?n-=e:n+=e}return n},U={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12,thirteen:13,fourteen:14,fifteen:15,sixteen:16,seventeen:17,eighteen:18,nineteen:19,twenty:20},O=e=>{const t=e.trim().toLowerCase();return/^\d+$/.test(t)?Number.parseInt(t,10):void 0!==U[t]?U[t]:E(t)},A=()=>{if("undefined"==typeof window)return;const e=window;return e.SpeechRecognition??e.webkitSpeechRecognition},k=()=>void 0!==A(),M=(e={})=>{const{lang:t,continuous:n=!0,interimResults:r=!0,onResult:i,onError:a,onStart:o,onEnd:s}=e,c=A();let u=null;const l=()=>{u=null,s?.()},d={supported:void 0!==c,get active(){return null!==u},start(){if(!c||u)return;const e=new c;e.lang="function"==typeof t?t():t??"",e.continuous=n,e.interimResults=r,e.maxAlternatives=1,e.onresult=e=>{let t="",n=!0;for(let r=0;r<e.results.length;r++){const i=e.results[r];t+=i?.[0]?.transcript??"",!1===i?.isFinal&&(n=!1)}i?.(t,n)},e.onerror=e=>{return a?.({kind:(t=e.error,"not-allowed"===t||"service-not-allowed"===t?"denied":"no-speech"===t?"noSpeech":"aborted"===t?"aborted":"failed"),detail:e.error});var t},e.onstart=()=>o?.(),e.onend=l,u=e;try{e.start()}catch(d){u=null,a?.({kind:"failed",detail:d instanceof Error?d.message:String(d)}),s?.()}},stop(){u?.stop()},abort(){u?.abort()},toggle(){u?d.stop():d.start()}};return d},T=e=>"function"==typeof e,B=12e4,L="__ranuts_bridge__",F="default",P=new class{bridges=/* @__PURE__ */new Set;attachedWindow=null;handleMessage=e=>{for(const t of Array.from(this.bridges))t.receive(e)};add(e){this.bridges.add(e),"undefined"!=typeof window&&this.attachedWindow!==window&&(window.addEventListener("message",this.handleMessage),this.attachedWindow=window)}remove(e){this.bridges.delete(e),0===this.bridges.size&&this.attachedWindow&&(this.attachedWindow.removeEventListener("message",this.handleMessage),this.attachedWindow=null)}},R=class{targetWindow;targetOrigin;messageHandlers;pendingRequests;channel;senderId;available;constructor(e,t="*",n=F){this.targetOrigin=t,this.channel=n,this.senderId=i(12),this.messageHandlers=/* @__PURE__ */new Map,this.pendingRequests=/* @__PURE__ */new Map,this.available="undefined"!=typeof window,this.available?(this.targetWindow=e??window,P.add(this)):this.targetWindow=void 0}post(e,t){const n={...t,__bridge:L,channel:this.channel,senderId:this.senderId};e.postMessage(n,this.targetOrigin)}receive=e=>{if(!this.available)return;if("*"!==this.targetOrigin&&e.origin!==this.targetOrigin)return;if(e.source&&e.source!==this.targetWindow)return;const t=e.data;if(!t||"object"!=typeof t||"__ranuts_bridge__"!==t.__bridge)return;if((t.channel??"default")!==this.channel)return;const{type:n,payload:r,id:i,isResponse:a,isError:o,senderId:s}=t;if(a&&i){const e=this.pendingRequests.get(i);return void(e&&(o?e.reject(new Error("string"==typeof r?r:"Bridge request failed")):e.resolve(r),this.pendingRequests.delete(i)))}if(s&&s===this.senderId)return;if("string"!=typeof n||!this.messageHandlers.has(n))return;const c=this.messageHandlers.get(n);if(T(c)){const t=e.source??this.targetWindow;Promise.resolve(c(r)).then(e=>{i&&this.post(t,{type:n,payload:e,id:i,isResponse:!0})}).catch(e=>{i&&this.post(t,{type:n,payload:e instanceof Error?e.message:String(e),id:i,isResponse:!0,isError:!0})})}};on=(e,t)=>{this.messageHandlers.set(e,t)};off=e=>{this.messageHandlers.delete(e)};send=async(e,t)=>{if(!this.available)return Promise.reject(/* @__PURE__ */new Error("PostMessageBridge is unavailable outside a browser environment"));const n=i(10);return new Promise((r,i)=>{const a=setTimeout(()=>{this.pendingRequests.has(n)&&(this.pendingRequests.delete(n),i(/* @__PURE__ */new Error("Request timeout")))},B),o=e=>{clearTimeout(a),i(e)};this.pendingRequests.set(n,{resolve:e=>{clearTimeout(a),r(e)},reject:o});try{this.post(this.targetWindow,{type:e,payload:t,id:n})}catch(s){this.pendingRequests.delete(n),o(s instanceof Error?s:/* @__PURE__ */new Error("Failed to post message"))}})};broadcast=e=>{if(this.available)try{this.post(this.targetWindow,{type:e.type,payload:e.payload})}catch{}};destroy=()=>{P.remove(this),this.messageHandlers.clear(),this.pendingRequests.forEach(e=>{e.reject(/* @__PURE__ */new Error("Bridge destroyed"))}),this.pendingRequests.clear()}},D=class e{static instance;bridges=/* @__PURE__ */new Map;constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}connectClient=({id:e,targetOrigin:t,targetWindow:n,channel:r})=>{const a=new R(n,t,r);if(e||(e=i(10)),this.bridges.has(e))throw new Error(`Bridge ${e} already exists`);return this.bridges.set(e,a),{bridge:a,id:e}};getClient=e=>this.bridges.get(e);removeClient=e=>{const t=this.bridges.get(e);t&&(t.destroy(),this.bridges.delete(e))};removeAllClient=()=>{this.bridges.forEach(e=>{e.destroy()}),this.bridges.clear()};broadcast=e=>{this.bridges.forEach(t=>{t.broadcast(e)})};sendTo=(e,t,n)=>{const r=this.getClient(e);return r?r.send(t,n):Promise.reject(/* @__PURE__ */new Error(`Bridge ${e} not found`))}},H=D.getInstance(),x={connect:({id:e,targetWindow:t,targetOrigin:n,channel:r})=>H.connectClient({id:e,targetWindow:t,targetOrigin:n,channel:r}),remove:e=>{e&&H.removeClient(e)},removeAll:()=>{H.removeAllClient()},broadcast:e=>H.broadcast(e),call:({id:e,type:t,payload:n})=>H.sendTo(e,t,n),broadcastToAll:e=>{if("undefined"==typeof window)return;const t={__bridge:L,channel:F,type:e.type,payload:e.payload};return window.postMessage(t,"*")}},I={init:e=>{const t=new Map(Object.entries(e).filter(e=>T(e[1]))),n=async e=>{const n=e.data;if(!n||"object"!=typeof n||"__ranuts_bridge__"!==n.__bridge)return;const{type:r,payload:i,id:a}=n,o=n.channel??"default";if("string"!=typeof r||!t.has(r))return;const s=t.get(r);if(!s)return;const c=t=>{a&&e.source?.postMessage({__bridge:L,channel:o,type:r,id:a,isResponse:!0,...t},{targetOrigin:e.origin})};try{c({payload:await s(i)})}catch(u){c({payload:u instanceof Error?u.message:String(u),isError:!0})}};window.removeEventListener("message",n),window.addEventListener("message",n);return{destroy:()=>{window.removeEventListener("message",n)}}}},j="__ranuts_port_init__",N=e=>{const t=/* @__PURE__ */new Map,n=/* @__PURE__ */new Map,r=r=>{const i=r.data;if(!i||"object"!=typeof i||"string"!=typeof i.type)return;const{type:a,payload:o,id:s,isResponse:c,isError:u}=i;if(c&&s){const e=n.get(s);return void(e&&(u?e.reject(new Error("string"==typeof o?o:"Bridge request failed")):e.resolve(o),n.delete(s)))}if(!t.has(a))return;const l=t.get(a);T(l)&&Promise.resolve(l(o)).then(t=>{s&&e.postMessage({type:a,payload:t,id:s,isResponse:!0})}).catch(t=>{s&&e.postMessage({type:a,payload:t instanceof Error?t.message:String(t),id:s,isResponse:!0,isError:!0})})};return e.addEventListener("message",r),e.start(),{on:(e,n)=>{t.set(e,n)},off:e=>{t.delete(e)},send:(t,r)=>{const a=i(10);return new Promise((i,o)=>{const s=setTimeout(()=>{n.has(a)&&(n.delete(a),o(/* @__PURE__ */new Error("Request timeout")))},B),c=e=>{clearTimeout(s),o(e)};n.set(a,{resolve:e=>{clearTimeout(s),i(e)},reject:c});try{e.postMessage({type:t,payload:r,id:a})}catch(u){n.delete(a),c(u instanceof Error?u:/* @__PURE__ */new Error("Failed to post message"))}})},broadcast:t=>{try{e.postMessage({type:t.type,payload:t.payload})}catch{}},destroy:()=>{e.removeEventListener("message",r),t.clear(),n.forEach(e=>e.reject(/* @__PURE__ */new Error("Bridge destroyed"))),n.clear(),e.close()}}},z=({targetWindow:e,targetOrigin:t="*",name:n="default"})=>{const r=new MessageChannel;return e.postMessage({[j]:!0,name:n},t,[r.port2]),N(r.port1)},K=({targetOrigin:e="*",name:t="default"}={})=>"undefined"==typeof window?Promise.reject(/* @__PURE__ */new Error("acceptPortBridge is unavailable outside a browser environment")):new Promise(n=>{const r=i=>{if("*"!==e&&i.origin!==e)return;const a=i.data;if(!a||"object"!=typeof a||!0!==a[j]||a.name!==t)return;const o=i.ports?.[0];o&&(window.removeEventListener("message",r),n(N(o)))};window.addEventListener("message",r)}),_=e=>{let t,n=!1,r=e;return(...e)=>(n||(t="function"==typeof r?r(...e):r,n=!0,r=void 0),t)},W=_,q=e=>{let t=null;const n=()=>(t??=e().catch(e=>{throw t=null,e}),t);return n.reset=()=>{t=null},Object.defineProperty(n,"started",{get:()=>null!==t}),n};function V(e={}){if("object"!=typeof e)throw new TypeError("param must be object");return Object.entries(e).reduce((e,[t,n])=>(void 0===n||null==n||e.append(decodeURIComponent(t),decodeURIComponent(n)),e),new URLSearchParams).toString()}var $=(e,t=c,n=4)=>{try{const t="string"==typeof e?JSON.parse(e.replace(/'/g,'"')):e;return JSON.stringify(t,null,n)??""}catch(r){return t(r),""}},X=(e,t)=>{const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n},Y=(e,t)=>{if(e&&t)for(const n in t)e[n]=t[n];return e};function G(e,t,n,r){if(void 0===e)return c;if(!(t in e)&&!r)return c;const i=t in e,a=e[t],o=n(a);if("function"!=typeof o)return c;e[t]=o;let s=!1;return()=>{s||(s=!0,e[t]===o&&(i?e[t]=a:delete e[t]))}}var J=(e,t)=>{const n=Object.getOwnPropertyDescriptors(t);for(const r of Object.keys(n)){const t=n[r];if(t.get){const n=t.get;Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:_(n)})}else{if("object"!=typeof t.value)throw new Error("Exposed values must be either a getter or an nested object");Object.defineProperty(e,r,{configurable:!1,enumerable:!0,writable:!1,value:J({},t.value)})}}return Object.freeze(e)},Q=(e,t)=>{"undefined"!=typeof window&&(window[e]=t),"undefined"!=typeof global&&(global[e]=t)};function Z(e){return Object.prototype.toString.call(e)}function ee(e,t,n=/* @__PURE__ */new Map){if(e===t)return!0;if(null==e||null==t)return e===t;if(e!=e&&t!=t)return!0;const r=typeof e;if(r!==typeof t)return!1;if("object"!==r)return e===t;const i=Z(e);if(i!==Z(t))return!1;if(n.has(e))return n.get(e)===t;if(n.set(e,t),"[object Array]"===i){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!ee(e[r],t[r],n))return!1;return!0}if("[object Date]"===i)return+e===+t;if("[object RegExp]"===i)return e.toString()===t.toString();if("[object Map]"===i){if(e.size!==t.size)return!1;let r=!0;return e.forEach((e,i)=>{r&&(t.has(i)&&ee(e,t.get(i),n)||(r=!1))}),r}if("[object Set]"===i){if(e.size!==t.size)return!1;const r=Array.from(e),i=Array.from(t);return r.every(e=>i.some(t=>ee(e,t,n)))}const a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;for(const s of a)if(!Object.prototype.hasOwnProperty.call(t,s)||!ee(e[s],t[s],n))return!1;return!0}var te=(e,t=/* @__PURE__ */new WeakMap)=>{if(null===e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(Array.isArray(e)){const n=[];t.set(e,n);for(let r=0;r<e.length;r++)n[r]=te(e[r],t);return n}if(e instanceof Map){const n=/* @__PURE__ */new Map;return t.set(e,n),e.forEach((e,r)=>{n.set("object"==typeof r&&null!==r?te(r,t):r,te(e,t))}),n}if(e instanceof Set){const n=/* @__PURE__ */new Set;return t.set(e,n),e.forEach(e=>{n.add(te(e,t))}),n}if("object"==typeof e&&e.constructor===Object){const n={};return t.set(e,n),[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)].forEach(r=>{n[r]=te(e[r],t)}),n}try{const n=new(0,Object.getPrototypeOf(e).constructor);t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=te(e[r],t));return n}catch{return console.warn(`Unable to deeply clone object of type ${Object.prototype.toString.call(e)}. Fallback to shallow copy.`),{...e}}},ne={172351395:{name:"EBML",type:"Container"},646:{name:"EBMLVersion",type:"Uint"},759:{name:"EBMLReadVersion",type:"Uint"},754:{name:"EBMLMaxIDLength",type:"Uint"},755:{name:"EBMLMaxSizeLength",type:"Uint"},642:{name:"DocType",type:"String"},647:{name:"DocTypeVersion",type:"Uint"},645:{name:"DocTypeReadVersion",type:"Uint"},108:{name:"Void",type:"Binary"},63:{name:"CRC-32",type:"Binary"},190023271:{name:"SignatureSlot",type:"Container"},16010:{name:"SignatureAlgo",type:"Uint"},16026:{name:"SignatureHash",type:"Uint"},16037:{name:"SignaturePublicKey",type:"Binary"},16053:{name:"Signature",type:"Binary"},15963:{name:"SignatureElements",type:"Container"},15995:{name:"SignatureElementList",type:"Container"},9522:{name:"SignedElement",type:"Binary"},139690087:{name:"Segment",type:"Container"},21863284:{name:"SeekHead",type:"Container"},3515:{name:"Seek",type:"Container"},5035:{name:"SeekID",type:"Binary"},5036:{name:"SeekPosition",type:"Uint"},88713574:{name:"Info",type:"Container"},13220:{name:"SegmentUID",type:"Binary"},13188:{name:"SegmentFilename",type:"String"},1882403:{name:"PrevUID",type:"Binary"},1868715:{name:"PrevFilename",type:"String"},2013475:{name:"NextUID",type:"Binary"},1999803:{name:"NextFilename",type:"String"},1092:{name:"SegmentFamily",type:"Binary"},10532:{name:"ChapterTranslate",type:"Container"},10748:{name:"ChapterTranslateEditionUID",type:"Uint"},10687:{name:"ChapterTranslateCodec",type:"Uint"},10661:{name:"ChapterTranslateID",type:"Binary"},710577:{name:"TimecodeScale",type:"Uint"},1161:{name:"Duration",type:"Float"},1121:{name:"DateUTC",type:"Date"},15273:{name:"Title",type:"String"},3456:{name:"MuxingApp",type:"String"},5953:{name:"WritingApp",type:"String"},103:{name:"Timecode",type:"Uint"},6228:{name:"SilentTracks",type:"Container"},6359:{name:"SilentTrackNumber",type:"Uint"},39:{name:"Position",type:"Uint"},43:{name:"PrevSize",type:"Uint"},35:{name:"SimpleBlock",type:"Binary"},32:{name:"BlockGroup",type:"Container"},33:{name:"Block",type:"Binary"},34:{name:"BlockVirtual",type:"Binary"},13729:{name:"BlockAdditions",type:"Container"},38:{name:"BlockMore",type:"Container"},110:{name:"BlockAddID",type:"Uint"},37:{name:"BlockAdditional",type:"Binary"},27:{name:"BlockDuration",type:"Uint"},122:{name:"ReferencePriority",type:"Uint"},123:{name:"ReferenceBlock",type:"Int"},125:{name:"ReferenceVirtual",type:"Int"},36:{name:"CodecState",type:"Binary"},13730:{name:"DiscardPadding",type:"Int"},14:{name:"Slices",type:"Container"},104:{name:"TimeSlice",type:"Container"},76:{name:"LaceNumber",type:"Uint"},77:{name:"FrameNumber",type:"Uint"},75:{name:"BlockAdditionID",type:"Uint"},78:{name:"Delay",type:"Uint"},79:{name:"SliceDuration",type:"Uint"},72:{name:"ReferenceFrame",type:"Container"},73:{name:"ReferenceOffset",type:"Uint"},74:{name:"ReferenceTimeCode",type:"Uint"},47:{name:"EncryptedBlock",type:"Binary"},106212971:{name:"Tracks",type:"Container"},46:{name:"TrackEntry",type:"Container"},87:{name:"TrackNumber",type:"Uint"},13253:{name:"TrackUID",type:"Uint"},3:{name:"TrackType",type:"Uint"},57:{name:"FlagEnabled",type:"Uint"},8:{name:"FlagDefault",type:"Uint"},5546:{name:"FlagForced",type:"Uint"},28:{name:"FlagLacing",type:"Uint"},11751:{name:"MinCache",type:"Uint"},11768:{name:"MaxCache",type:"Uint"},254851:{name:"DefaultDuration",type:"Uint"},216698:{name:"DefaultDecodedFieldDuration",type:"Uint"},209231:{name:"TrackTimecodeScale",type:"Float"},4991:{name:"TrackOffset",type:"Int"},5614:{name:"MaxBlockAdditionID",type:"Uint"},4974:{name:"Name",type:"String"},177564:{name:"Language",type:"String"},6:{name:"CodecID",type:"String"},9122:{name:"CodecPrivate",type:"Binary"},362120:{name:"CodecName",type:"String"},13382:{name:"AttachmentLink",type:"Uint"},1742487:{name:"CodecSettings",type:"String"},1785920:{name:"CodecInfoURL",type:"String"},438848:{name:"CodecDownloadURL",type:"String"},42:{name:"CodecDecodeAll",type:"Uint"},12203:{name:"TrackOverlay",type:"Uint"},5802:{name:"CodecDelay",type:"Uint"},5819:{name:"SeekPreRoll",type:"Uint"},9764:{name:"TrackTranslate",type:"Container"},9980:{name:"TrackTranslateEditionUID",type:"Uint"},9919:{name:"TrackTranslateCodec",type:"Uint"},9893:{name:"TrackTranslateTrackID",type:"Binary"},96:{name:"Video",type:"Container"},26:{name:"FlagInterlaced",type:"Uint"},5048:{name:"StereoMode",type:"Uint"},5056:{name:"AlphaMode",type:"Uint"},5049:{name:"OldStereoMode",type:"Uint"},48:{name:"PixelWidth",type:"Uint"},58:{name:"PixelHeight",type:"Uint"},5290:{name:"PixelCropBottom",type:"Uint"},5307:{name:"PixelCropTop",type:"Uint"},5324:{name:"PixelCropLeft",type:"Uint"},5341:{name:"PixelCropRight",type:"Uint"},5296:{name:"DisplayWidth",type:"Uint"},5306:{name:"DisplayHeight",type:"Uint"},5298:{name:"DisplayUnit",type:"Uint"},5299:{name:"AspectRatioType",type:"Uint"},963876:{name:"ColourSpace",type:"Binary"},1029411:{name:"GammaValue",type:"Float"},230371:{name:"FrameRate",type:"Float"},97:{name:"Audio",type:"Container"},53:{name:"SamplingFrequency",type:"Float"},14517:{name:"OutputSamplingFrequency",type:"Float"},31:{name:"Channels",type:"Uint"},15739:{name:"ChannelPositions",type:"Binary"},8804:{name:"BitDepth",type:"Uint"},98:{name:"TrackOperation",type:"Container"},99:{name:"TrackCombinePlanes",type:"Container"},100:{name:"TrackPlane",type:"Container"},101:{name:"TrackPlaneUID",type:"Uint"},102:{name:"TrackPlaneType",type:"Uint"},105:{name:"TrackJoinBlocks",type:"Container"},109:{name:"TrackJoinUID",type:"Uint"},64:{name:"TrickTrackUID",type:"Uint"},65:{name:"TrickTrackSegmentUID",type:"Binary"},70:{name:"TrickTrackFlag",type:"Uint"},71:{name:"TrickMasterTrackUID",type:"Uint"},68:{name:"TrickMasterTrackSegmentUID",type:"Binary"},11648:{name:"ContentEncodings",type:"Container"},8768:{name:"ContentEncoding",type:"Container"},4145:{name:"ContentEncodingOrder",type:"Uint"},4146:{name:"ContentEncodingScope",type:"Uint"},4147:{name:"ContentEncodingType",type:"Uint"},4148:{name:"ContentCompression",type:"Container"},596:{name:"ContentCompAlgo",type:"Uint"},597:{name:"ContentCompSettings",type:"Binary"},4149:{name:"ContentEncryption",type:"Container"},2017:{name:"ContentEncAlgo",type:"Uint"},2018:{name:"ContentEncKeyID",type:"Binary"},2019:{name:"ContentSignature",type:"Binary"},2020:{name:"ContentSigKeyID",type:"Binary"},2021:{name:"ContentSigAlgo",type:"Uint"},2022:{name:"ContentSigHashAlgo",type:"Uint"},206814059:{name:"Cues",type:"Container"},59:{name:"CuePoint",type:"Container"},51:{name:"CueTime",type:"Uint"},55:{name:"CueTrackPositions",type:"Container"},119:{name:"CueTrack",type:"Uint"},113:{name:"CueClusterPosition",type:"Uint"},112:{name:"CueRelativePosition",type:"Uint"},50:{name:"CueDuration",type:"Uint"},4984:{name:"CueBlockNumber",type:"Uint"},106:{name:"CueCodecState",type:"Uint"},91:{name:"CueReference",type:"Container"},22:{name:"CueRefTime",type:"Uint"},23:{name:"CueRefCluster",type:"Uint"},4959:{name:"CueRefNumber",type:"Uint"},107:{name:"CueRefCodecState",type:"Uint"},155296873:{name:"Attachments",type:"Container"},8615:{name:"AttachedFile",type:"Container"},1662:{name:"FileDescription",type:"String"},1646:{name:"FileName",type:"String"},1632:{name:"FileMimeType",type:"String"},1628:{name:"FileData",type:"Binary"},1710:{name:"FileUID",type:"Uint"},1653:{name:"FileReferral",type:"Binary"},1633:{name:"FileUsedStartTime",type:"Uint"},1634:{name:"FileUsedEndTime",type:"Uint"},4433776:{name:"Chapters",type:"Container"},1465:{name:"EditionEntry",type:"Container"},1468:{name:"EditionUID",type:"Uint"},1469:{name:"EditionFlagHidden",type:"Uint"},1499:{name:"EditionFlagDefault",type:"Uint"},1501:{name:"EditionFlagOrdered",type:"Uint"},54:{name:"ChapterAtom",type:"Container"},13252:{name:"ChapterUID",type:"Uint"},5716:{name:"ChapterStringUID",type:"String"},17:{name:"ChapterTimeStart",type:"Uint"},18:{name:"ChapterTimeEnd",type:"Uint"},24:{name:"ChapterFlagHidden",type:"Uint"},1432:{name:"ChapterFlagEnabled",type:"Uint"},11879:{name:"ChapterSegmentUID",type:"Binary"},11964:{name:"ChapterSegmentEditionUID",type:"Uint"},9155:{name:"ChapterPhysicalEquiv",type:"Uint"},15:{name:"ChapterTrack",type:"Container"},9:{name:"ChapterTrackNumber",type:"Uint"},0:{name:"ChapterDisplay",type:"Container"},5:{name:"ChapString",type:"String"},892:{name:"ChapLanguage",type:"String"},894:{name:"ChapCountry",type:"String"},10564:{name:"ChapProcess",type:"Container"},10581:{name:"ChapProcessCodecID",type:"Uint"},1293:{name:"ChapProcessPrivate",type:"Binary"},10513:{name:"ChapProcessCommand",type:"Container"},10530:{name:"ChapProcessTime",type:"Uint"},10547:{name:"ChapProcessData",type:"Binary"},39109479:{name:"Tags",type:"Container"},13171:{name:"Tag",type:"Container"},9152:{name:"Targets",type:"Container"},10442:{name:"TargetTypeValue",type:"Uint"},9162:{name:"TargetType",type:"String"},9157:{name:"TagTrackUID",type:"Uint"},9161:{name:"TagEditionUID",type:"Uint"},9156:{name:"TagChapterUID",type:"Uint"},9158:{name:"TagAttachmentUID",type:"Uint"},10184:{name:"SimpleTag",type:"Container"},1443:{name:"TagName",type:"String"},1146:{name:"TagLanguage",type:"String"},1156:{name:"TagDefault",type:"Uint"},1159:{name:"TagString",type:"String"},1157:{name:"TagBinary",type:"Binary"}},re=class{name;type;source;data;constructor(e="Unknown",t="Unknown"){this.name=e,this.type=t}updateBySource(){}setSource(e){this.source=e,this.updateBySource()}updateByData(){}setData(e){this.data=e,this.updateByData()}};function ie(e){return e.length%2==1?"0"+e:e}var ae=class extends re{constructor(e,t){super(e,t||"Uint")}updateBySource(){this.data="";for(let e=0;e<this.source.length;e++){const t=this.source[e].toString(16);this.data+=ie(t)}}updateByData(){const e=this.data.length/2;this.source=new Uint8Array(e);for(let t=0;t<e;t++){const e=this.data.substr(2*t,2);this.source[t]=parseInt(e,16)}}getValue(){return parseInt(this.data,16)}setValue(e){this.setData(ie(e.toString(16)))}},oe=class extends re{constructor(e,t){super(e,t||"Float")}getFloatArrayType(){return this.source&&4===this.source.length?Float32Array:Float64Array}updateBySource(){const e=this.source.reverse(),t=new(this.getFloatArrayType())(e.buffer);this.data=t[0]}updateByData(){const e=new(this.getFloatArrayType())([this.data]),t=new Uint8Array(e.buffer);this.source=t.reverse()}getValue(){return this.data}setValue(e){this.setData(e)}},se=class e extends re{offset=0;data=[];constructor(e,t){super(e,t||"Container")}readByte(){return this.source[this.offset++]}readUint(){const e=this.readByte(),t=8-e.toString(2).length;let n=e-(1<<7-t);for(let r=0;r<t;r++)n*=256,n+=this.readByte();return n}updateBySource(){let t;for(this.data=[],this.offset=0;this.offset<this.source.length;this.offset=t){const n=this.readUint(),r=this.readUint();t=Math.min(this.offset+r,this.source.length);const i=this.source.slice(this.offset,t),a=ne[n]||{name:"Unknown",type:"Unknown"};let o=re;switch(a.type){case"Container":o=e;break;case"Uint":o=ae;break;case"Float":o=oe}const s=new o(a.name,a.type);s.setSource(i),this.data.push({id:n,idHex:n.toString(16),data:s})}}writeUint(e,t=!1){let n=1,r=128;for(;e>=r&&n<8;)n++,r*=128;if(!t){let t=r+e;for(let e=n-1;e>=0;e--){const n=t%256;this.source[this.offset+e]=n,t=(t-n)/256}}this.offset+=n}writeSections(e=!1){this.offset=0;for(let t=0;t<this.data.length;t++){const n=this.data[t],r=n.data.source,i=r.length;this.writeUint(n.id,e),this.writeUint(i,e),e||this.source.set(r,this.offset),this.offset+=i}return this.offset}updateByData(){const e=this.writeSections(!0);this.source=new Uint8Array(e),this.writeSections()}getSectionById(e){for(let t=0;t<this.data.length;t++){const n=this.data[t];if(n.id===e)return n.data}}},ce=class extends se{constructor(e){super("File","File"),this.setSource(e)}fixDuration(e){const t=this.getSectionById(139690087);if(!t)return!1;const n=t.getSectionById(88713574);if(!n)return!1;const r=n.getSectionById(710577);if(!r)return!1;let i=n.getSectionById(1161);if(i){if(!(i.getValue()<=0))return!1;i.setValue(e)}else i=new oe("Duration","Float"),i.setValue(e),n.data.push({id:1161,data:i});return r.setValue(1e6),n.updateByData(),t.updateByData(),this.updateByData(),!0}toBlob(e="video/webm"){return new Blob([this.source.buffer],{type:e})}};var ue=class{startTime;chunks;mediaRecorder;blob;constructor(){this.startTime=Date.now(),this.chunks=[],navigator.mediaDevices.getUserMedia({audio:!0}).then(e=>{this.init(e)}).catch(e=>{})}init(e){const t=function(){const e=["audio/webm","audio/mp4","audio/ogg","audio/wav","audio/aac"];for(let t=0;t<e.length;t++)if(MediaRecorder.isTypeSupported(e[t]))return e[t]}();this.mediaRecorder=new MediaRecorder(e,{mimeType:t}),this.mediaRecorder?.addEventListener("dataavailable",async e=>{if(e.data.size>0&&this.chunks.push(e.data),"inactive"===this.mediaRecorder?.state){const e=Date.now()-this.startTime;this.blob=new Blob(this.chunks,{type:t}),"audio/webm"===t&&(this.blob=await((e,t,n="video/webm")=>new Promise((r,i)=>{try{const a=new FileReader;a.addEventListener("loadend",()=>{try{const i=a.result,o=new ce(new Uint8Array(i));o.fixDuration(t)?r(o.toBlob(n)):r(e)}catch(o){i(o)}}),a.addEventListener("error",()=>i()),a.readAsArrayBuffer(e)}catch(a){i(a)}}))(this.blob,e,this.blob.type)),this.chunks=[]}}),this.mediaRecorder?.start()}start(){return"paused"===this.mediaRecorder?.state&&this.mediaRecorder.resume(),this.mediaRecorder}pause(){return"recording"===this.mediaRecorder?.state&&this.mediaRecorder.pause(),this.mediaRecorder}stop(){return this.mediaRecorder?.stop(),this.blob}},le=new e,de=(e,t={})=>{const{subscriber:n,equals:r}=t;let i=e;return[()=>i,e=>{var t,a;(t=i,a=e,!1!==r&&("function"==typeof r?r(t,a):Object.is(t,a)))||(i=e,n&&le.call(n))}]},he=()=>{const e=document.createElement("canvas").getContext("webgl2");return e?function(e){const t=e.getExtension("WEBGL_debug_renderer_info");return t?{vendor:e.getParameter(t.UNMASKED_VENDOR_WEBGL),renderer:e.getParameter(t.UNMASKED_RENDERER_WEBGL)}:null}(e):null},pe=()=>{const e=document.createElement("canvas"),t=e.getContext("2d"),n="BrowserLeaks,com <canvas> 1.0";return t?(t.textBaseline="top",t.font="14px 'Arial'",t.textBaseline="alphabetic",t.fillStyle="#f60",t.fillRect(125,1,62,20),t.fillStyle="#069",t.fillText(n,2,15),t.fillStyle="rgba(102, 204, 0, 0.7)",t.fillText(n,4,17),e.toDataURL()):null},fe=()=>new Promise((e,t)=>{s||t("window is undefined");const n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,44100,44100),r=n.createOscillator();r.type="triangle",r.frequency.setValueAtTime(1e4,n.currentTime);const i=n.createDynamicsCompressor();!function(e,t){if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t);else if(e.length===+e.length)for(let n=0,r=e.length;n<r;n++)t(e[n],n,e);else for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(e[n],Number(n),e)}([["threshold",-50],["knee",40],["ratio",12],["reduction",-20],["attack",0],["release",.25]],function(e){if(i[e[0]]&&"number"!=typeof i[e[0]]){const{setValueAtTime:t}=i[e[0]];t(e[1],n.currentTime)}}),r.connect(i),i.connect(n.destination),r.start(0),n.startRendering();const a=setTimeout(function(){return n.oncomplete=()=>{},t("audioTimeout"),"audioTimeout"},100);n.oncomplete=n=>{try{clearTimeout(a);const t=n.renderedBuffer.getChannelData(0).slice(4500,5e3).reduce(function(e,t){return e+Math.abs(t)},0).toString();return r.disconnect(),i.disconnect(),e(t),t}catch(o){return void t(o)}}}),me="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function ge(e,t,n,r){let i,a,o;const s=t||[0],c=(n=n||0)>>>3,u=-1===r?3:0;for(i=0;i<e.length;i+=1)o=i+c,a=o>>>2,s.length<=a&&s.push(0),s[a]|=e[i]<<8*(u+r*(o%4));return{value:s,binLen:8*e.length+n}}function ye(e,t,n){switch(t){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw new Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(e){case"HEX":return function(e,t,r){return function(e,t,n,r){let i,a,o,s;if(0!=e.length%2)throw new Error("String of HEX type must be in byte increments");const c=t||[0],u=(n=n||0)>>>3,l=-1===r?3:0;for(i=0;i<e.length;i+=2){if(a=parseInt(e.substr(i,2),16),isNaN(a))throw new Error("String of HEX type contains invalid characters");for(s=(i>>>1)+u,o=s>>>2;c.length<=o;)c.push(0);c[o]|=a<<8*(l+r*(s%4))}return{value:c,binLen:4*e.length+n}}(e,t,r,n)};case"TEXT":return function(e,r,i){return function(e,t,n,r,i){let a,o,s,c,u,l,d,h,p=0;const f=n||[0],m=(r=r||0)>>>3;if("UTF8"===t)for(d=-1===i?3:0,s=0;s<e.length;s+=1)for(a=e.charCodeAt(s),o=[],128>a?o.push(a):2048>a?(o.push(192|a>>>6),o.push(128|63&a)):55296>a||57344<=a?o.push(224|a>>>12,128|a>>>6&63,128|63&a):(s+=1,a=65536+((1023&a)<<10|1023&e.charCodeAt(s)),o.push(240|a>>>18,128|a>>>12&63,128|a>>>6&63,128|63&a)),c=0;c<o.length;c+=1){for(l=p+m,u=l>>>2;f.length<=u;)f.push(0);f[u]|=o[c]<<8*(d+i*(l%4)),p+=1}else for(d=-1===i?2:0,h="UTF16LE"===t&&1!==i||"UTF16LE"!==t&&1===i,s=0;s<e.length;s+=1){for(a=e.charCodeAt(s),!0===h&&(c=255&a,a=c<<8|a>>>8),l=p+m,u=l>>>2;f.length<=u;)f.push(0);f[u]|=a<<8*(d+i*(l%4)),p+=2}return{value:f,binLen:8*p+r}}(e,t,r,i,n)};case"B64":return function(e,t,r){return function(e,t,n,r){let i,a,o,s,c,u,l,d=0;const h=t||[0],p=(n=n||0)>>>3,f=-1===r?3:0,m=e.indexOf("=");if(-1===e.search(/^[a-z\d=+/]+$/i))throw new Error("Invalid character in base-64 string");if(e=e.replace(/=/g,""),-1!==m&&m<e.length)throw new Error("Invalid '=' found in base-64 string");for(a=0;a<e.length;a+=4){for(c=e.substr(a,4),s=0,o=0;o<c.length;o+=1)i=me.indexOf(c.charAt(o)),s|=i<<18-6*o;for(o=0;o<c.length-1;o+=1){for(l=d+p,u=l>>>2;h.length<=u;)h.push(0);h[u]|=(s>>>16-8*o&255)<<8*(f+r*(l%4)),d+=1}}return{value:h,binLen:8*d+n}}(e,t,r,n)};case"BYTES":return function(e,t,r){return function(e,t,n,r){let i,a,o,s;const c=t||[0],u=(n=n||0)>>>3,l=-1===r?3:0;for(a=0;a<e.length;a+=1)i=e.charCodeAt(a),s=a+u,o=s>>>2,c.length<=o&&c.push(0),c[o]|=i<<8*(l+r*(s%4));return{value:c,binLen:8*e.length+n}}(e,t,r,n)};case"ARRAYBUFFER":return function(e,t,r){return function(e,t,n,r){return ge(new Uint8Array(e),t,n,r)}(e,t,r,n)};case"UINT8ARRAY":return function(e,t,r){return ge(e,t,r,n)};default:throw new Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function we(e,t,n,r){switch(e){case"HEX":return function(e){return function(e,t,n,r){const i="0123456789abcdef";let a,o,s="";const c=t/8,u=-1===n?3:0;for(a=0;a<c;a+=1)o=e[a>>>2]>>>8*(u+n*(a%4)),s+=i.charAt(o>>>4&15)+i.charAt(15&o);return r.outputUpper?s.toUpperCase():s}(e,t,n,r)};case"B64":return function(e){return function(e,t,n,r){let i,a,o,s,c,u="";const l=t/8,d=-1===n?3:0;for(i=0;i<l;i+=3)for(s=i+1<l?e[i+1>>>2]:0,c=i+2<l?e[i+2>>>2]:0,o=(e[i>>>2]>>>8*(d+n*(i%4))&255)<<16|(s>>>8*(d+n*((i+1)%4))&255)<<8|c>>>8*(d+n*((i+2)%4))&255,a=0;a<4;a+=1)u+=8*i+6*a<=t?me.charAt(o>>>6*(3-a)&63):r.b64Pad;return u}(e,t,n,r)};case"BYTES":return function(e){return function(e,t,n){let r,i,a="";const o=t/8,s=-1===n?3:0;for(r=0;r<o;r+=1)i=e[r>>>2]>>>8*(s+n*(r%4))&255,a+=String.fromCharCode(i);return a}(e,t,n)};case"ARRAYBUFFER":return function(e){return function(e,t,n){let r;const i=t/8,a=new ArrayBuffer(i),o=new Uint8Array(a),s=-1===n?3:0;for(r=0;r<i;r+=1)o[r]=e[r>>>2]>>>8*(s+n*(r%4))&255;return a}(e,t,n)};case"UINT8ARRAY":return function(e){return function(e,t,n){let r;const i=t/8,a=-1===n?3:0,o=new Uint8Array(i);for(r=0;r<i;r+=1)o[r]=e[r>>>2]>>>8*(a+n*(r%4))&255;return o}(e,t,n)};default:throw new Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}var be=4294967296,Se=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ce=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],ve=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],Ee="Chosen SHA variant is not supported",Ue="Cannot set numRounds with MAC";function Oe(e,t){let n,r;const i=e.binLen>>>3,a=t.binLen>>>3,o=i<<3,s=4-i<<3;if(i%4!=0){for(n=0;n<a;n+=4)r=i+n>>>2,e.value[r]|=t.value[n>>>2]<<o,e.value.push(0),e.value[r+1]|=t.value[n>>>2]>>>s;return(e.value.length<<2)-4>=a+i&&e.value.pop(),{value:e.value,binLen:e.binLen+t.binLen}}return{value:e.value.concat(t.value),binLen:e.binLen+t.binLen}}function Ae(e){const t={outputUpper:!1,b64Pad:"=",outputLen:-1},n=e||{},r="Output length must be a multiple of 8";if(t.outputUpper=n.outputUpper||!1,n.b64Pad&&(t.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(r);t.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(r);t.outputLen=n.shakeLen}if("boolean"!=typeof t.outputUpper)throw new Error("Invalid outputUpper formatting option");if("string"!=typeof t.b64Pad)throw new Error("Invalid b64Pad formatting option");return t}function ke(e,t,n,r){const i=e+" must include a value and format";if(!t){if(!r)throw new Error(i);return r}if(void 0===t.value||!t.format)throw new Error(i);return ye(t.format,t.encoding||"UTF8",n)(t.value)}var Me=class{shaVariant;inputFormat;utfType;numRounds;keyWithIPad;keyWithOPad;remainder;remainderLen;updateCalled;processedLen;macKeySet;constructor(e,t,n){const r=n||{};if(this.inputFormat=t,this.utfType=r.encoding||"UTF8",this.numRounds=r.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error("numRounds must a integer >= 1");this.shaVariant=e,this.remainder=[],this.remainderLen=0,this.updateCalled=!1,this.processedLen=0,this.macKeySet=!1,this.keyWithIPad=[],this.keyWithOPad=[]}update(e){let t,n=0;const r=this.variantBlockSize>>>5,i=this.converterFunc(e,this.remainder,this.remainderLen),a=i.binLen,o=i.value,s=a>>>5;for(t=0;t<s;t+=r)n+this.variantBlockSize<=a&&(this.intermediateState=this.roundFunc(o.slice(t,t+r),this.intermediateState),n+=this.variantBlockSize);return this.processedLen+=n,this.remainder=o.slice(n>>>5),this.remainderLen=a%this.variantBlockSize,this.updateCalled=!0,this}getHash(e,t){let n,r,i=this.outputBinLen;const a=Ae(t);if(this.isVariableLen){if(-1===a.outputLen)throw new Error("Output length must be specified in options");i=a.outputLen}const o=we(e,i,this.bigEndianMod,a);if(this.macKeySet&&this.getMAC)return o(this.getMAC(a));for(r=this.finalizeFunc(this.remainder.slice(),this.remainderLen,this.processedLen,this.stateCloneFunc(this.intermediateState),i),n=1;n<this.numRounds;n+=1)this.isVariableLen&&i%32!=0&&(r[r.length-1]&=16777215>>>24-i%32),r=this.finalizeFunc(r,i,0,this.newStateFunc(this.shaVariant),i);return o(r)}setHMACKey(e,t,n){if(!this.HMACSupported)throw new Error("Variant does not support HMAC");if(this.updateCalled)throw new Error("Cannot set MAC key after calling update");const r=ye(t,(n||{}).encoding||"UTF8",this.bigEndianMod);this._setHMACKey(r(e))}_setHMACKey(e){const t=this.variantBlockSize>>>3,n=t/4-1;let r;if(1!==this.numRounds)throw new Error(Ue);if(this.macKeySet)throw new Error("MAC key already set");for(t<e.binLen/8&&(e.value=this.finalizeFunc(e.value,e.binLen,0,this.newStateFunc(this.shaVariant),this.outputBinLen));e.value.length<=n;)e.value.push(0);for(r=0;r<=n;r+=1)this.keyWithIPad[r]=909522486^e.value[r],this.keyWithOPad[r]=1549556828^e.value[r];this.intermediateState=this.roundFunc(this.keyWithIPad,this.intermediateState),this.processedLen=this.variantBlockSize,this.macKeySet=!0}getHMAC(e,t){const n=Ae(t);return we(e,this.outputBinLen,this.bigEndianMod,n)(this._getHMAC())}_getHMAC(){let e;if(!this.macKeySet)throw new Error("Cannot call getHMAC without first setting MAC key");const t=this.finalizeFunc(this.remainder.slice(),this.remainderLen,this.processedLen,this.stateCloneFunc(this.intermediateState),this.outputBinLen);return e=this.roundFunc(this.keyWithOPad,this.newStateFunc(this.shaVariant)),e=this.finalizeFunc(t,this.outputBinLen,this.variantBlockSize,e,this.outputBinLen),e}};function Te(e,t){return e<<t|e>>>32-t}function Be(e,t){return e>>>t|e<<32-t}function Le(e,t){return e>>>t}function Fe(e,t,n){return e^t^n}function Pe(e,t,n){return e&t^~e&n}function Re(e,t,n){return e&t^e&n^t&n}function De(e){return Be(e,2)^Be(e,13)^Be(e,22)}function He(e,t){const n=(65535&e)+(65535&t);return((e>>>16)+(t>>>16)+(n>>>16)&65535)<<16|65535&n}function xe(e,t,n,r){const i=(65535&e)+(65535&t)+(65535&n)+(65535&r);return((e>>>16)+(t>>>16)+(n>>>16)+(r>>>16)+(i>>>16)&65535)<<16|65535&i}function Ie(e,t,n,r,i){const a=(65535&e)+(65535&t)+(65535&n)+(65535&r)+(65535&i);return((e>>>16)+(t>>>16)+(n>>>16)+(r>>>16)+(i>>>16)+(a>>>16)&65535)<<16|65535&a}function je(e){return Be(e,17)^Be(e,19)^Le(e,10)}function Ne(e){return Be(e,7)^Be(e,18)^Le(e,3)}function ze(e){return Be(e,6)^Be(e,11)^Be(e,25)}function Ke(e){return[1732584193,4023233417,2562383102,271733878,3285377520]}function _e(e,t){let n,r,i,a,o,s,c;const u=[];for(n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],c=0;c<80;c+=1)u[c]=c<16?e[c]:Te(u[c-3]^u[c-8]^u[c-14]^u[c-16],1),s=c<20?Ie(Te(n,5),Pe(r,i,a),o,1518500249,u[c]):c<40?Ie(Te(n,5),Fe(r,i,a),o,1859775393,u[c]):c<60?Ie(Te(n,5),Re(r,i,a),o,2400959708,u[c]):Ie(Te(n,5),Fe(r,i,a),o,3395469782,u[c]),o=a,a=i,i=Te(r,30),r=n,n=s;return t[0]=He(n,t[0]),t[1]=He(r,t[1]),t[2]=He(i,t[2]),t[3]=He(a,t[3]),t[4]=He(o,t[4]),t}function We(e,t,n,r){let i;const a=15+(t+65>>>9<<4),o=t+n;for(;e.length<=a;)e.push(0);for(e[t>>>5]|=128<<24-t%32,e[a]=4294967295&o,e[a-1]=o/be|0,i=0;i<e.length;i+=16)r=_e(e.slice(i,i+16),r);return r}var qe=class extends Me{intermediateState;variantBlockSize;bigEndianMod;outputBinLen;isVariableLen;HMACSupported;converterFunc;roundFunc;finalizeFunc;stateCloneFunc;newStateFunc;getMAC;constructor(e,t,n){if("SHA-1"!==e)throw new Error(Ee);super(e,t,n);const r=n||{};this.HMACSupported=!0,this.getMAC=this._getHMAC,this.bigEndianMod=-1,this.converterFunc=ye(this.inputFormat,this.utfType,this.bigEndianMod),this.roundFunc=_e,this.stateCloneFunc=function(e){return e.slice()},this.newStateFunc=Ke,this.finalizeFunc=We,this.intermediateState=[1732584193,4023233417,2562383102,271733878,3285377520],this.variantBlockSize=512,this.outputBinLen=160,this.isVariableLen=!1,r.hmacKey&&this._setHMACKey(ke("hmacKey",r.hmacKey,this.bigEndianMod))}};function Ve(e){let t;return t="SHA-224"===e?Ce.slice():ve.slice(),t}function $e(e,t){let n,r,i,a,o,s,c,u,l,d,h;const p=[];for(n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],u=t[7],h=0;h<64;h+=1)p[h]=h<16?e[h]:xe(je(p[h-2]),p[h-7],Ne(p[h-15]),p[h-16]),l=Ie(u,ze(o),Pe(o,s,c),Se[h],p[h]),d=He(De(n),Re(n,r,i)),u=c,c=s,s=o,o=He(a,l),a=i,i=r,r=n,n=He(l,d);return t[0]=He(n,t[0]),t[1]=He(r,t[1]),t[2]=He(i,t[2]),t[3]=He(a,t[3]),t[4]=He(o,t[4]),t[5]=He(s,t[5]),t[6]=He(c,t[6]),t[7]=He(u,t[7]),t}var Xe=class extends Me{intermediateState;variantBlockSize;bigEndianMod;outputBinLen;isVariableLen;HMACSupported;converterFunc;roundFunc;finalizeFunc;stateCloneFunc;newStateFunc;getMAC;constructor(e,t,n){if("SHA-224"!==e&&"SHA-256"!==e)throw new Error(Ee);super(e,t,n);const r=n||{};this.getMAC=this._getHMAC,this.HMACSupported=!0,this.bigEndianMod=-1,this.converterFunc=ye(this.inputFormat,this.utfType,this.bigEndianMod),this.roundFunc=$e,this.stateCloneFunc=function(e){return e.slice()},this.newStateFunc=Ve,this.finalizeFunc=function(t,n,r,i){return function(e,t,n,r,i){let a,o;const s=15+(t+65>>>9<<4),c=t+n;for(;e.length<=s;)e.push(0);for(e[t>>>5]|=128<<24-t%32,e[s]=4294967295&c,e[s-1]=c/be|0,a=0;a<e.length;a+=16)r=$e(e.slice(a,a+16),r);return o="SHA-224"===i?[r[0],r[1],r[2],r[3],r[4],r[5],r[6]]:r,o}(t,n,r,i,e)},this.intermediateState=Ve(e),this.variantBlockSize=512,this.outputBinLen="SHA-224"===e?224:256,this.isVariableLen=!1,r.hmacKey&&this._setHMACKey(ke("hmacKey",r.hmacKey,this.bigEndianMod))}},Ye=class{highOrder;lowOrder;constructor(e,t){this.highOrder=e,this.lowOrder=t}};function Ge(e,t){let n;return t>32?(n=64-t,new Ye(e.lowOrder<<t|e.highOrder>>>n,e.highOrder<<t|e.lowOrder>>>n)):0!==t?(n=32-t,new Ye(e.highOrder<<t|e.lowOrder>>>n,e.lowOrder<<t|e.highOrder>>>n)):e}function Je(e,t){let n;return t<32?(n=32-t,new Ye(e.highOrder>>>t|e.lowOrder<<n,e.lowOrder>>>t|e.highOrder<<n)):(n=64-t,new Ye(e.lowOrder>>>t|e.highOrder<<n,e.highOrder>>>t|e.lowOrder<<n))}function Qe(e,t){return new Ye(e.highOrder>>>t,e.lowOrder>>>t|e.highOrder<<32-t)}function Ze(e,t,n){return new Ye(e.highOrder&t.highOrder^~e.highOrder&n.highOrder,e.lowOrder&t.lowOrder^~e.lowOrder&n.lowOrder)}function et(e,t,n){return new Ye(e.highOrder&t.highOrder^e.highOrder&n.highOrder^t.highOrder&n.highOrder,e.lowOrder&t.lowOrder^e.lowOrder&n.lowOrder^t.lowOrder&n.lowOrder)}function tt(e){const t=Je(e,28),n=Je(e,34),r=Je(e,39);return new Ye(t.highOrder^n.highOrder^r.highOrder,t.lowOrder^n.lowOrder^r.lowOrder)}function nt(e,t){let n,r;n=(65535&e.lowOrder)+(65535&t.lowOrder),r=(e.lowOrder>>>16)+(t.lowOrder>>>16)+(n>>>16);const i=(65535&r)<<16|65535&n;n=(65535&e.highOrder)+(65535&t.highOrder)+(r>>>16),r=(e.highOrder>>>16)+(t.highOrder>>>16)+(n>>>16);return new Ye((65535&r)<<16|65535&n,i)}function rt(e,t,n,r){let i,a;i=(65535&e.lowOrder)+(65535&t.lowOrder)+(65535&n.lowOrder)+(65535&r.lowOrder),a=(e.lowOrder>>>16)+(t.lowOrder>>>16)+(n.lowOrder>>>16)+(r.lowOrder>>>16)+(i>>>16);const o=(65535&a)<<16|65535&i;i=(65535&e.highOrder)+(65535&t.highOrder)+(65535&n.highOrder)+(65535&r.highOrder)+(a>>>16),a=(e.highOrder>>>16)+(t.highOrder>>>16)+(n.highOrder>>>16)+(r.highOrder>>>16)+(i>>>16);return new Ye((65535&a)<<16|65535&i,o)}function it(e,t,n,r,i){let a,o;a=(65535&e.lowOrder)+(65535&t.lowOrder)+(65535&n.lowOrder)+(65535&r.lowOrder)+(65535&i.lowOrder),o=(e.lowOrder>>>16)+(t.lowOrder>>>16)+(n.lowOrder>>>16)+(r.lowOrder>>>16)+(i.lowOrder>>>16)+(a>>>16);const s=(65535&o)<<16|65535&a;a=(65535&e.highOrder)+(65535&t.highOrder)+(65535&n.highOrder)+(65535&r.highOrder)+(65535&i.highOrder)+(o>>>16),o=(e.highOrder>>>16)+(t.highOrder>>>16)+(n.highOrder>>>16)+(r.highOrder>>>16)+(i.highOrder>>>16)+(a>>>16);return new Ye((65535&o)<<16|65535&a,s)}function at(e,t){return new Ye(e.highOrder^t.highOrder,e.lowOrder^t.lowOrder)}function ot(e,t,n,r,i){return new Ye(e.highOrder^t.highOrder^n.highOrder^r.highOrder^i.highOrder,e.lowOrder^t.lowOrder^n.lowOrder^r.lowOrder^i.lowOrder)}function st(e){const t=Je(e,19),n=Je(e,61),r=Qe(e,6);return new Ye(t.highOrder^n.highOrder^r.highOrder,t.lowOrder^n.lowOrder^r.lowOrder)}function ct(e){const t=Je(e,1),n=Je(e,8),r=Qe(e,7);return new Ye(t.highOrder^n.highOrder^r.highOrder,t.lowOrder^n.lowOrder^r.lowOrder)}function ut(e){const t=Je(e,14),n=Je(e,18),r=Je(e,41);return new Ye(t.highOrder^n.highOrder^r.highOrder,t.lowOrder^n.lowOrder^r.lowOrder)}var lt=[new Ye(Se[0],3609767458),new Ye(Se[1],602891725),new Ye(Se[2],3964484399),new Ye(Se[3],2173295548),new Ye(Se[4],4081628472),new Ye(Se[5],3053834265),new Ye(Se[6],2937671579),new Ye(Se[7],3664609560),new Ye(Se[8],2734883394),new Ye(Se[9],1164996542),new Ye(Se[10],1323610764),new Ye(Se[11],3590304994),new Ye(Se[12],4068182383),new Ye(Se[13],991336113),new Ye(Se[14],633803317),new Ye(Se[15],3479774868),new Ye(Se[16],2666613458),new Ye(Se[17],944711139),new Ye(Se[18],2341262773),new Ye(Se[19],2007800933),new Ye(Se[20],1495990901),new Ye(Se[21],1856431235),new Ye(Se[22],3175218132),new Ye(Se[23],2198950837),new Ye(Se[24],3999719339),new Ye(Se[25],766784016),new Ye(Se[26],2566594879),new Ye(Se[27],3203337956),new Ye(Se[28],1034457026),new Ye(Se[29],2466948901),new Ye(Se[30],3758326383),new Ye(Se[31],168717936),new Ye(Se[32],1188179964),new Ye(Se[33],1546045734),new Ye(Se[34],1522805485),new Ye(Se[35],2643833823),new Ye(Se[36],2343527390),new Ye(Se[37],1014477480),new Ye(Se[38],1206759142),new Ye(Se[39],344077627),new Ye(Se[40],1290863460),new Ye(Se[41],3158454273),new Ye(Se[42],3505952657),new Ye(Se[43],106217008),new Ye(Se[44],3606008344),new Ye(Se[45],1432725776),new Ye(Se[46],1467031594),new Ye(Se[47],851169720),new Ye(Se[48],3100823752),new Ye(Se[49],1363258195),new Ye(Se[50],3750685593),new Ye(Se[51],3785050280),new Ye(Se[52],3318307427),new Ye(Se[53],3812723403),new Ye(Se[54],2003034995),new Ye(Se[55],3602036899),new Ye(Se[56],1575990012),new Ye(Se[57],1125592928),new Ye(Se[58],2716904306),new Ye(Se[59],442776044),new Ye(Se[60],593698344),new Ye(Se[61],3733110249),new Ye(Se[62],2999351573),new Ye(Se[63],3815920427),new Ye(3391569614,3928383900),new Ye(3515267271,566280711),new Ye(3940187606,3454069534),new Ye(4118630271,4000239992),new Ye(116418474,1914138554),new Ye(174292421,2731055270),new Ye(289380356,3203993006),new Ye(460393269,320620315),new Ye(685471733,587496836),new Ye(852142971,1086792851),new Ye(1017036298,365543100),new Ye(1126000580,2618297676),new Ye(1288033470,3409855158),new Ye(1501505948,4234509866),new Ye(1607167915,987167468),new Ye(1816402316,1246189591)];function dt(e){return"SHA-384"===e?[new Ye(3418070365,Ce[0]),new Ye(1654270250,Ce[1]),new Ye(2438529370,Ce[2]),new Ye(355462360,Ce[3]),new Ye(1731405415,Ce[4]),new Ye(41048885895,Ce[5]),new Ye(3675008525,Ce[6]),new Ye(1203062813,Ce[7])]:[new Ye(ve[0],4089235720),new Ye(ve[1],2227873595),new Ye(ve[2],4271175723),new Ye(ve[3],1595750129),new Ye(ve[4],2917565137),new Ye(ve[5],725511199),new Ye(ve[6],4215389547),new Ye(ve[7],327033209)]}function ht(e,t){let n,r,i,a,o,s,c,u,l,d,h,p;const f=[];for(n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],u=t[7],h=0;h<80;h+=1)h<16?(p=2*h,f[h]=new Ye(e[p],e[p+1])):f[h]=rt(st(f[h-2]),f[h-7],ct(f[h-15]),f[h-16]),l=it(u,ut(o),Ze(o,s,c),lt[h],f[h]),d=nt(tt(n),et(n,r,i)),u=c,c=s,s=o,o=nt(a,l),a=i,i=r,r=n,n=nt(l,d);return t[0]=nt(n,t[0]),t[1]=nt(r,t[1]),t[2]=nt(i,t[2]),t[3]=nt(a,t[3]),t[4]=nt(o,t[4]),t[5]=nt(s,t[5]),t[6]=nt(c,t[6]),t[7]=nt(u,t[7]),t}var pt=class extends Me{intermediateState;variantBlockSize;bigEndianMod;outputBinLen;isVariableLen;HMACSupported;converterFunc;roundFunc;finalizeFunc;stateCloneFunc;newStateFunc;getMAC;constructor(e,t,n){if("SHA-384"!==e&&"SHA-512"!==e)throw new Error(Ee);super(e,t,n);const r=n||{};this.getMAC=this._getHMAC,this.HMACSupported=!0,this.bigEndianMod=-1,this.converterFunc=ye(this.inputFormat,this.utfType,this.bigEndianMod),this.roundFunc=ht,this.stateCloneFunc=function(e){return e.slice()},this.newStateFunc=dt,this.finalizeFunc=function(t,n,r,i){return function(e,t,n,r,i){let a,o;const s=31+(t+129>>>10<<5),c=t+n;for(;e.length<=s;)e.push(0);for(e[t>>>5]|=128<<24-t%32,e[s]=4294967295&c,e[s-1]=c/be|0,a=0;a<e.length;a+=32)r=ht(e.slice(a,a+32),r);return o="SHA-384"===i?[r[0].highOrder,r[0].lowOrder,r[1].highOrder,r[1].lowOrder,r[2].highOrder,r[2].lowOrder,r[3].highOrder,r[3].lowOrder,r[4].highOrder,r[4].lowOrder,r[5].highOrder,r[5].lowOrder]:[r[0].highOrder,r[0].lowOrder,r[1].highOrder,r[1].lowOrder,r[2].highOrder,r[2].lowOrder,r[3].highOrder,r[3].lowOrder,r[4].highOrder,r[4].lowOrder,r[5].highOrder,r[5].lowOrder,r[6].highOrder,r[6].lowOrder,r[7].highOrder,r[7].lowOrder],o}(t,n,r,i,e)},this.intermediateState=dt(e),this.variantBlockSize=1024,this.outputBinLen="SHA-384"===e?384:512,this.isVariableLen=!1,r.hmacKey&&this._setHMACKey(ke("hmacKey",r.hmacKey,this.bigEndianMod))}},ft=[new Ye(0,1),new Ye(0,32898),new Ye(2147483648,32906),new Ye(2147483648,2147516416),new Ye(0,32907),new Ye(0,2147483649),new Ye(2147483648,2147516545),new Ye(2147483648,32777),new Ye(0,138),new Ye(0,136),new Ye(0,2147516425),new Ye(0,2147483658),new Ye(0,2147516555),new Ye(2147483648,139),new Ye(2147483648,32905),new Ye(2147483648,32771),new Ye(2147483648,32770),new Ye(2147483648,128),new Ye(0,32778),new Ye(2147483648,2147483658),new Ye(2147483648,2147516545),new Ye(2147483648,32896),new Ye(0,2147483649),new Ye(2147483648,2147516424)],mt=[[0,36,3,41,18],[1,44,10,45,2],[62,6,43,15,61],[28,55,25,21,56],[27,20,39,8,14]];function gt(e){let t;const n=[];for(t=0;t<5;t+=1)n[t]=[new Ye(0,0),new Ye(0,0),new Ye(0,0),new Ye(0,0),new Ye(0,0)];return n}function yt(e){let t;const n=[];for(t=0;t<5;t+=1)n[t]=e[t].slice();return n}function wt(e,t){let n,r,i,a;const o=[],s=[];if(null!=e)for(r=0;r<e.length;r+=2)t[(r>>>1)%5][(r>>>1)/5|0]=at(t[(r>>>1)%5][(r>>>1)/5|0],new Ye(e[r+1],e[r]));for(n=0;n<24;n+=1){for(a=gt(),r=0;r<5;r+=1)o[r]=ot(t[r][0],t[r][1],t[r][2],t[r][3],t[r][4]);for(r=0;r<5;r+=1)s[r]=at(o[(r+4)%5],Ge(o[(r+1)%5],1));for(r=0;r<5;r+=1)for(i=0;i<5;i+=1)t[r][i]=at(t[r][i],s[r]);for(r=0;r<5;r+=1)for(i=0;i<5;i+=1)a[i][(2*r+3*i)%5]=Ge(t[r][i],mt[r][i]);for(r=0;r<5;r+=1)for(i=0;i<5;i+=1)t[r][i]=at(a[r][i],new Ye(~a[(r+1)%5][i].highOrder&a[(r+2)%5][i].highOrder,~a[(r+1)%5][i].lowOrder&a[(r+2)%5][i].lowOrder));t[0][0]=at(t[0][0],ft[n])}return t}function bt(e){let t,n,r=0;const i=[0,0],a=[4294967295&e,e/be&2097151];for(t=6;t>=0;t--)n=a[t>>2]>>>8*t&255,0===n&&0===r||(i[r+1>>2]|=n<<8*(r+1),r+=1);return r=0!==r?r:1,i[0]|=r,{value:r+1>4?i:[i[0]],binLen:8+8*r}}function St(e){return Oe(bt(e.binLen),e)}function Ct(e,t){let n,r=bt(t);r=Oe(r,e);const i=t>>>2,a=(i-r.value.length%i)%i;for(n=0;n<a;n++)r.value.push(0);return r.value}var vt=class extends Me{intermediateState;variantBlockSize;bigEndianMod;outputBinLen;isVariableLen;HMACSupported;converterFunc;roundFunc;finalizeFunc;stateCloneFunc;newStateFunc;getMAC;constructor(e,t,n){let r=6,i=0;super(e,t,n);const a=n||{};if(1!==this.numRounds){if(a.kmacKey||a.hmacKey)throw new Error(Ue);if("CSHAKE128"===this.shaVariant||"CSHAKE256"===this.shaVariant)throw new Error("Cannot set numRounds for CSHAKE variants")}switch(this.bigEndianMod=1,this.converterFunc=ye(this.inputFormat,this.utfType,this.bigEndianMod),this.roundFunc=wt,this.stateCloneFunc=yt,this.newStateFunc=gt,this.intermediateState=gt(),this.isVariableLen=!1,e){case"SHA3-224":this.variantBlockSize=i=1152,this.outputBinLen=224,this.HMACSupported=!0,this.getMAC=this._getHMAC;break;case"SHA3-256":this.variantBlockSize=i=1088,this.outputBinLen=256,this.HMACSupported=!0,this.getMAC=this._getHMAC;break;case"SHA3-384":this.variantBlockSize=i=832,this.outputBinLen=384,this.HMACSupported=!0,this.getMAC=this._getHMAC;break;case"SHA3-512":this.variantBlockSize=i=576,this.outputBinLen=512,this.HMACSupported=!0,this.getMAC=this._getHMAC;break;case"SHAKE128":r=31,this.variantBlockSize=i=1344,this.outputBinLen=-1,this.isVariableLen=!0,this.HMACSupported=!1,this.getMAC=null;break;case"SHAKE256":r=31,this.variantBlockSize=i=1088,this.outputBinLen=-1,this.isVariableLen=!0,this.HMACSupported=!1,this.getMAC=null;break;case"KMAC128":r=4,this.variantBlockSize=i=1344,this._initializeKMAC(n),this.outputBinLen=-1,this.isVariableLen=!0,this.HMACSupported=!1,this.getMAC=this._getKMAC;break;case"KMAC256":r=4,this.variantBlockSize=i=1088,this._initializeKMAC(n),this.outputBinLen=-1,this.isVariableLen=!0,this.HMACSupported=!1,this.getMAC=this._getKMAC;break;case"CSHAKE128":this.variantBlockSize=i=1344,r=this._initializeCSHAKE(n),this.outputBinLen=-1,this.isVariableLen=!0,this.HMACSupported=!1,this.getMAC=null;break;case"CSHAKE256":this.variantBlockSize=i=1088,r=this._initializeCSHAKE(n),this.outputBinLen=-1,this.isVariableLen=!0,this.HMACSupported=!1,this.getMAC=null;break;default:throw new Error(Ee)}this.finalizeFunc=function(e,t,n,a,o){return function(e,t,n,r,i,a,o){let s,c,u=0;const l=[],d=i>>>5,h=t>>>5;for(s=0;s<h&&t>=i;s+=d)r=wt(e.slice(s,s+d),r),t-=i;for(e=e.slice(s),t%=i;e.length<d;)e.push(0);for(s=t>>>3,e[s>>2]^=a<<s%4*8,e[d-1]^=2147483648,r=wt(e,r);32*l.length<o&&(c=r[u%5][u/5|0],l.push(c.lowOrder),!(32*l.length>=o));)l.push(c.highOrder),u+=1,0==64*u%i&&(wt(null,r),u=0);return l}(e,t,0,a,i,r,o)},a.hmacKey&&this._setHMACKey(ke("hmacKey",a.hmacKey,this.bigEndianMod))}_initializeCSHAKE(e,t){const n=function(e){const t=e||{};return{funcName:ke("funcName",t.funcName,1,{value:[],binLen:0}),customization:ke("Customization",t.customization,1,{value:[],binLen:0})}}(e||{});t&&(n.funcName=t);const r=Oe(St(n.funcName),St(n.customization));if(0!==n.customization.binLen||0!==n.funcName.binLen){const e=Ct(r,this.variantBlockSize>>>3);for(let t=0;t<e.length;t+=this.variantBlockSize>>>5)this.intermediateState=this.roundFunc(e.slice(t,t+(this.variantBlockSize>>>5)),this.intermediateState),this.processedLen+=this.variantBlockSize;return 4}return 31}_initializeKMAC(e){const t=function(e){const t=e||{};return{kmacKey:ke("kmacKey",t.kmacKey,1),funcName:{value:[1128353099],binLen:32},customization:ke("Customization",t.customization,1,{value:[],binLen:0})}}(e||{});this._initializeCSHAKE(e,t.funcName);const n=Ct(St(t.kmacKey),this.variantBlockSize>>>3);for(let r=0;r<n.length;r+=this.variantBlockSize>>>5)this.intermediateState=this.roundFunc(n.slice(r,r+(this.variantBlockSize>>>5)),this.intermediateState),this.processedLen+=this.variantBlockSize;this.macKeySet=!0}_getKMAC(e){const t=Oe({value:this.remainder.slice(),binLen:this.remainderLen},function(e){let t,n,r=0;const i=[0,0],a=[4294967295&e,e/be&2097151];for(t=6;t>=0;t--)n=a[t>>2]>>>8*t&255,0===n&&0===r||(i[r>>2]|=n<<8*r,r+=1);return r=0!==r?r:1,i[r>>2]|=r<<8*r,{value:r+1>4?i:[i[0]],binLen:8+8*r}}(e.outputLen));return this.finalizeFunc(t.value,t.binLen,this.processedLen,this.stateCloneFunc(this.intermediateState),e.outputLen)}},Et=class{shaObj;constructor(e,t,n){if("SHA-1"===e)this.shaObj=new qe(e,t,n);else if("SHA-224"===e||"SHA-256"===e)this.shaObj=new Xe(e,t,n);else if("SHA-384"===e||"SHA-512"===e)this.shaObj=new pt(e,t,n);else{if("SHA3-224"!==e&&"SHA3-256"!==e&&"SHA3-384"!==e&&"SHA3-512"!==e&&"SHAKE128"!==e&&"SHAKE256"!==e&&"CSHAKE128"!==e&&"CSHAKE256"!==e&&"KMAC128"!==e&&"KMAC256"!==e)throw new Error(Ee);this.shaObj=new vt(e,t,n)}}update(e){return this.shaObj.update(e),this}getHash(e,t){return this.shaObj.getHash(e,t)}setHMACKey(e,t,n){this.shaObj.setHMACKey(e,t,n)}getHMAC(e,t){return this.shaObj.getHMAC(e,t)}},Ut=class{static generate(e,t){const n={digits:6,algorithm:"SHA-1",period:30,timestamp:Date.now(),...t},r=Math.floor(n.timestamp/1e3),i=this.leftpad(this.dec2hex(Math.floor(r/n.period)),16,"0"),a=new Et(n.algorithm,"HEX");a.setHMACKey(this.base32tohex(e),"HEX"),a.update(i);const o=a.getHMAC("HEX"),s=this.hex2dec(o.substring(o.length-1));let c=(this.hex2dec(o.slice(2*s,2*s+8))&this.hex2dec("7fffffff"))+"";const u=Math.max(c.length-n.digits,0);c=c.substring(u,u+n.digits);return{otp:c,expires:Math.ceil((n.timestamp+1)/(1e3*n.period))*n.period*1e3}}static hex2dec(e){return parseInt(e,16)}static dec2hex(e){return(e<15.5?"0":"")+Math.round(e).toString(16)}static base32tohex(e){let t="",n="";const r=e.endsWith("=")?e.slice(0,e.lastIndexOf("=")):e;for(let i=0;i<r.length;i++){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".indexOf(e.charAt(i).toUpperCase());if(-1===n)throw new Error("Invalid base32 character in key");t+=this.leftpad(n.toString(2),5,"0")}for(let i=0;i+8<=t.length;i+=8){const e=t.slice(i,i+8);n+=this.leftpad(parseInt(e,2).toString(16),2,"0")}return n}static leftpad(e,t,n){return t+1>=e.length&&(e=Array(t+1-e.length).join(n)+e),e}};function Ot(e){if(!Array.isArray(e))throw new TypeError("Middleware stack must be an array!");for(const t of e)if("function"!=typeof t)throw new TypeError("Middleware must be composed of functions!");return function(t,n){let r=-1;return function i(a){if(a<=r)return Promise.reject(/* @__PURE__ */new Error("next() called multiple times"));r=a;let o=e[a];a===e.length&&n&&(o=n);if(!o)return Promise.resolve();try{return Promise.resolve(o(t,i.bind(null,a+1)))}catch(s){return Promise.reject(s)}}(0)}}var At=["log","info","warn","error","assert"],kt=(e=c)=>{if("undefined"==typeof console)return c;const t=At.map(t=>G(console,t,n=>{if("function"!=typeof n)return;const r=n;return function(...n){e(t,...n),r.apply(console,n)}}));return()=>t.forEach(e=>e())},Mt=(e,t=500)=>{let n,r=null,i=null;const a=()=>{if(r=null,!i)return;const t=i,a=n;i=null,n=void 0,e.apply(a,t)},o=function(...e){n=this,i=e,null!==r&&clearTimeout(r),r=setTimeout(a,t)};return o.cancel=()=>{null!==r&&clearTimeout(r),r=null,i=null,n=void 0},o.flush=()=>{null!==r&&(clearTimeout(r),a())},o.pending=()=>null!==r,o},Tt=(e,t)=>{if("undefined"==typeof document)return;const n=e.classList;n.contains(t)||n.add(t)},Bt=(e,t)=>{if("undefined"==typeof document)return;const n=e.classList;n.contains(t)&&n.remove(t)},Lt=e=>{if("undefined"==typeof document)return;const t=document.createDocumentFragment();return e.forEach(e=>t.appendChild(e)),t},Ft=/["'&<>]/;function Pt(e){const t=""+e,n=Ft.exec(t);if(!n)return t;let r,i="",a=0,o=0;for(a=n.index;a<t.length;a++){switch(t.charCodeAt(a)){case 34:r=""";break;case 38:r="&";break;case 39:r="'";break;case 60:r="<";break;case 62:r=">";break;default:continue}o!==a&&(i+=t.substring(o,a)),o=a+1,i+=r}return o!==a?i+t.substring(o,a):i}var Rt=(e=375)=>{let t=e;const{documentElement:n}=document,r=window.matchMedia("(orientation: portrait)");let i,a=667/375;function o(){const e=!r.matches;let i=window.screen.width,o=window.screen.height;i<o&&([i,o]=[o,i]);let s=n.clientWidth,c=o;s/c>=a?(s=c*a,n.classList.remove("adjustHeight"),n.classList.add("adjustWidth")):(c=s/a,n.classList.remove("adjustWidth"),n.classList.add("adjustHeight"));let u=s/t*16;e&&(u/=a),n.style.fontSize=`${u}px`;const l=window.getComputedStyle(n).fontSize.replace("px","")||0;u!==l&&(n.style.fontSize=u/Number(l)*u+"px")}u()===h.IPAD&&(a=1024/768,t=768),window.addEventListener("resize",function(){clearTimeout(i),i=setTimeout(o,300)},!1),window.addEventListener("pageshow",function(e){e.persisted&&(clearTimeout(i),i=setTimeout(o,300))},!1),window.addEventListener("orientationchange",function(){o()},!1),o()},Dt=e=>{const t=e.style.height,n=e=>{const t=parseFloat(e);return Number.isFinite(t)?t:0},r=()=>{e.style.height="auto";const t=getComputedStyle(e),r="border-box"===t.boxSizing?0:n(t.borderTopWidth)+n(t.borderBottomWidth);e.style.height=`${e.scrollHeight+r}px`};return e.addEventListener("input",r),r(),()=>{e.removeEventListener("input",r),e.style.height=t}},Ht=(e=c)=>{if("undefined"==typeof window)return c;const t=t=>e(t),n=t=>e(t);return window.addEventListener("unhandledrejection",t,!0),window.addEventListener("error",n,!0),()=>{window.removeEventListener("unhandledrejection",t,!0),window.removeEventListener("error",n,!0)}},xt=class{ac;constructor(){this.ac=new AbortController}get signal(){return this.ac.signal}on(e,t,n,r){return e.addEventListener(t,n,{...r,signal:this.ac.signal}),this}delegate(e,t,n,r,i){return e.addEventListener(n,n=>{const i=n.target?.closest(t);i&&e.contains(i)&&r(n,i)},{...i,signal:this.ac.signal}),this}abort(){this.ac.abort(),this.ac=new AbortController}},It={easeIn:function(e,t,n,r){return e>=r&&(e=r),n*(e/=r)*e+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),-n*(e/=r)*(e-2)+t}},jt={easeIn:function(e,t,n,r){return e>=r&&(e=r),n*(e/=r)*e*e+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),n*((e=e/r-1)*e*e+1)+t}},Nt={easeIn:function(e,t,n,r){return e>=r&&(e=r),n*(e/=r)*e*e*e+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),-n*((e=e/r-1)*e*e*e-1)+t}},zt={easeIn:function(e,t,n,r){return e>=r&&(e=r),n*(e/=r)*e*e*e*e+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),n*((e=e/r-1)*e*e*e*e+1)+t}},Kt={easeIn:function(e,t,n,r){return e>=r&&(e=r),-n*Math.cos(e/r*(Math.PI/2))+n+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),n*Math.sin(e/r*(Math.PI/2))+t}},_t={easeIn:function(e,t,n,r){return e>=r&&(e=r),0===e?t:n*Math.pow(2,10*(e/r-1))+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),e===r?t+n:n*(1-Math.pow(2,-10*e/r))+t}},Wt={easeIn:function(e,t,n,r){return e>=r&&(e=r),-n*(Math.sqrt(1-(e/=r)*e)-1)+t},easeOut:function(e,t,n,r){return e>=r&&(e=r),n*Math.sqrt(1-(e=e/r-1)*e)+t}},qt=e=>t*e,Vt=(e,t)=>[+(Math.cos(e)*t).toFixed(8),+(Math.sin(e)*t).toFixed(8)],$t=(e,t)=>{const n=-e/t;return[n,-n*e+t]},Xt=(e,t,n,r,i)=>{e.beginPath();const a=qt(90/Math.PI/t*i),o=n+a,s=r-a;e.arc(0,0,t,o,s,!1),e.lineTo(...Vt((n+r)/2,i/2/Math.abs(Math.sin((n-r)/2)))),e.closePath()},Yt=(e,...[t,n,r,i,a])=>{const o=Math.min(r,i),s=Math.PI;a>o/2&&(a=o/2),e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+a,n),e.lineTo(t+r-a,n),e.arc(t+r-a,n+a,a,-s/2,0),e.lineTo(t+r,n+i-a),e.arc(t+r-a,n+i-a,a,0,s/2),e.lineTo(t+a,n+i),e.arc(t+a,n+i-a,a,s/2,s),e.lineTo(t,n+a),e.arc(t+a,n+a,a,s,-s/2),e.closePath()},Gt=(e,t,n,r,i,a)=>{const o=/linear-gradient\((.+)\)/.exec(a)[1].split(",").map(e=>e.trim());let s=o.shift(),c=[0,0,0,0];if(s.includes("deg")){const e=Number(s.slice(0,-3))%360;s=`${e}`;const a=e=>Math.tan(e/180*Math.PI);e>=0&&e<45?c=[t,n+i,t+r,n+i-r*a(e-0)]:e>=45&&e<90?c=[t,n+i,t+r-i*a(e-45),n]:e>=90&&e<135?c=[t+r,n+i,t+r-i*a(e-90),n]:e>=135&&e<180?c=[t+r,n+i,t,n+r*a(e-135)]:e>=180&&e<225?c=[t+r,n,t,n+r*a(e-180)]:e>=225&&e<270?c=[t+r,n,t+i*a(e-225),n+i]:e>=270&&e<315?c=[t,n,t+i*a(e-270),n+i]:e>=315&&e<360&&(c=[t,n,t+r,n+i-r*a(e-315)])}else s.includes("top")?c=[t,n+i,t,n]:s.includes("bottom")?c=[t,n,t,n+i]:s.includes("left")?c=[t+r,n,t,n]:s.includes("right")&&(c=[t,n,t+r,n]);const u=e.createLinearGradient(...c.map(e=>e|0));return o.reduce((e,t,n)=>{const r=t.split(" ");return 1===r.length?e.addColorStop(n,r[0]):2===r.length&&e.addColorStop(Number(r[1]),r[0]),e},u)},Jt=e=>new Promise((t,n)=>{const r=new Image;r.onload=()=>t(r),r.onerror=e=>n(e),r.src=e}),Qt=(e,t)=>{const n=document.createElement("canvas"),r=n.getContext("2d"),{width:i,height:a}=e;return n.width=i,n.height=a,Yt(r,0,0,i,a,t),r.clip(),r.drawImage(e,0,0,i,a),n},Zt=(e,t)=>{const n=document.createElement("canvas"),r=n.getContext("2d"),{width:i,height:a}=e;if(n.width=i,n.height=a,"string"==typeof r.filter)r.filter=`opacity(${100*t}%)`,r.drawImage(e,0,0,i,a);else{r.drawImage(e,0,0,i,a);const n=r.getImageData(0,0,i,a),{data:o}=n,s=o.length;for(let e=0;e<s;e+=4){const n=o[e+3];0!==n&&(o[e+3]=n*t)}r.putImageData(n,0,0)}return n},en=(e,t)=>{t=t||e/3;const n=Math.ceil(e),r=t*t,i=2*r,a=1/(2*Math.PI*r),o=[];let s=0;for(let c=-n;c<=n;c++)for(let e=-n;e<=n;e++){const t=a*Math.exp(-(c*c+e*e)/i);o.push(t),s+=t}for(let c=0;c<o.length;c++)o[c]/=s;return o},tn=(e,t,n)=>new Promise((r,i)=>{if("undefined"==typeof window)return void i(/* @__PURE__ */new Error("isImageSize is browser-only: window is undefined"));const a=window.URL||window.webkitURL,o=new Image,s=a.createObjectURL(e),c=()=>a.revokeObjectURL(s);o.onload=()=>{c();const e=void 0===t||o.width===t,i=void 0===n||o.height===n;r(e&&i)},o.onerror=()=>{c(),i(/* @__PURE__ */new Error("failed to decode image"))},o.src=s}),nn=e=>new Promise((t,n)=>{const r=new FileReader;r.onload=function(){t({success:!0,data:r.result,message:""})},r.onerror=e=>{n({success:!1,data:e,message:""})},r.readAsDataURL(e)}),rn=/* @__PURE__ */new Map,an=/* @__PURE__ */new Map,on="data-adopted-style",sn="data-adopted-sheet",cn=(e,t,n)=>{if("undefined"==typeof CSSStyleSheet)return!1;try{if(!n.has(t)){const e=new CSSStyleSheet;e.replaceSync(t),n.set(t,e)}const r=n.get(t);return e.adoptedStyleSheets.includes(r)||(e.adoptedStyleSheets=[...e.adoptedStyleSheets,r]),!0}catch{return!1}},un=(e,t,n=on)=>{if("undefined"!=typeof document&&t&&!cn(e,t,rn)&&!e.querySelector(`style[${n}]`)){const r=document.createElement("style");r.setAttribute(n,""),r.textContent=t,e.appendChild(r)}},ln=(e,t,n=sn)=>{if("undefined"!=typeof document&&t&&!cn(e,t,an)&&!Array.from(e.querySelectorAll(`style[${n}]`)).some(e=>e.textContent===t)){const r=document.createElement("style");r.setAttribute(n,""),r.textContent=t,e.appendChild(r)}},dn=e=>({status:"success",code:0,data:e,error:!1}),hn=(e,t=null)=>({status:"error",code:1,data:t,error:!0,message:e}),pn=class{database;version;dbName;stores;upgrade;constructor({dbName:e,version:t,stores:n,upgrade:r}){this.dbName=e,this.version=t||1,this.stores=n||[],this.upgrade=r}openDataBase=()=>new Promise((e,t)=>{if("undefined"==typeof indexedDB)return void t(hn("indexedDB is not available"));const n=indexedDB.open(this.dbName,this.version);n.onsuccess=()=>{this.database=n.result,this.version=this.database.version,this.database.onversionchange=()=>{this.database?.close(),this.database=void 0},e(dn({db:this.database}))},n.onerror=()=>{if(n.error&&"VersionError"===n.error.name){const[,r]=(n.error.message||"").match(/\d+/g)||[];if(Number(r)>this.version)return this.version=Number(r),void this.refreshDatabase().then(e,t)}t(hn("open database error",n.error))},n.onupgradeneeded=e=>{const t=n.result;this.database=t,this.version=t.version;for(const r of this.stores){const e=t.objectStoreNames.contains(r.name)?n.transaction?.objectStore(r.name):t.createObjectStore(r.name,r.options);for(const t of r.indexes||[])e&&!e.indexNames.contains(t.name)&&e.createIndex(t.name,t.keyPath,t.options)}this.upgrade?.(t,e,n.transaction)}});closeDataBase=()=>{this.database?.close(),this.database=void 0};refreshDatabase=()=>(this.closeDataBase(),this.openDataBase());deleteDatabase=({dbName:e}={})=>new Promise((t,n)=>{const r=indexedDB.deleteDatabase(e??this.dbName);r.onsuccess=()=>t(dn(null)),r.onerror=()=>n(hn("delete database error",r.error))});getObjectStore=(e,t="readonly")=>{if(this.database)return this.database.transaction([e],t).objectStore(e)};run=(e,t,n,r,i)=>new Promise((a,o)=>{let s;try{const r=this.database?.transaction(e,t).objectStore(e);s=r&&n(r)}catch(u){return void o(hn(`${r} error`,u))}if(!s)return void o(hn(`${r} error`));const c=s;c.onsuccess=()=>a(dn(i(c))),c.onerror=()=>o(hn(`${r} error`,c.error))});add=({storeName:e,data:t})=>this.run(e,"readwrite",e=>e.add(t),"add",()=>t);update=({storeName:e,data:t})=>this.run(e,"readwrite",e=>e.put(t),"update",()=>null);readByKey=({storeName:e,key:t})=>this.run(e,"readonly",e=>e.get(t),"read",e=>e.result);readAll=({storeName:e,query:t,count:n})=>this.run(e,"readonly",e=>e.getAll(t,n),"read all",e=>e.result);count=({storeName:e,query:t})=>this.run(e,"readonly",e=>e.count(t),"count",e=>e.result);readByCursor=({storeName:e,keyRange:t,direction:n})=>new Promise((r,i)=>{const a=(this.database?.transaction(e,"readonly").objectStore(e))?.openCursor(t,n),o=[];a?(a.onsuccess=()=>{const e=a.result;e?(o.push(e.value),e.continue()):r(dn(o))},a.onerror=()=>i(hn("read cursor error",a.error))):i(hn("read cursor error"))});delete=({storeName:e,key:t})=>this.run(e,"readwrite",e=>e.delete(t),"delete",()=>null);clear=({storeName:e})=>this.run(e,"readwrite",e=>e.clear(),"clear",()=>null);collection=e=>{const t=(e,t)=>e.then(e=>e.data??t).catch(()=>t),n=e=>e.then(()=>!0).catch(()=>!1);return{name:e,get:t=>this.readByKey({storeName:e,key:t}).then(e=>e.data??null).catch(()=>null),all:()=>t(this.readByCursor({storeName:e}),[]),count:()=>t(this.count({storeName:e}),0),add:t=>n(this.add({storeName:e,data:t})),put:t=>n(this.update({storeName:e,data:t})),remove:t=>n(this.delete({storeName:e,key:t})),clear:()=>n(this.clear({storeName:e}))}}},fn=({dbName:e,storeName:t="files",key:n="pending"})=>{const r=()=>new Promise(n=>{if("undefined"==typeof indexedDB)return void n(null);let r;try{r=indexedDB.open(e,1)}catch{return void n(null)}r.onupgradeneeded=()=>{r.result.objectStoreNames.contains(t)||r.result.createObjectStore(t)},r.onerror=()=>n(null),r.onblocked=()=>n(null),r.onsuccess=()=>n(r.result)});return{put:async e=>{const i=await r();return!!i&&new Promise(r=>{try{const a=i.transaction(t,"readwrite");a.objectStore(t).put(e,n),a.oncomplete=()=>{i.close(),r(!0)},a.onerror=a.onabort=()=>{i.close(),r(!1)}}catch{i.close(),r(!1)}})},take:async()=>{const e=await r();return e?new Promise(r=>{try{const i=e.transaction(t,"readwrite"),a=i.objectStore(t),o=a.get(n);let s=null;o.onsuccess=()=>{s=o.result??null,null!==s&&a.delete(n)},i.oncomplete=()=>{e.close(),r(s)},i.onerror=i.onabort=()=>{e.close(),r(null)}}catch{e.close(),r(null)}}):null}}},mn=e=>{const t=Array.from({length:e.length});let n=0;for(let r=0;r<e.length;r++)t[r]=n,n+=e[r]||0;return t},gn=(e,t)=>{if(0===e.length)return 0;let n=0,r=e.length-1,i=0;for(;n<=r;){const a=n+r>>1;e[a]<=t?(i=a,n=a+1):r=a-1}return i},yn=(e,t,n)=>{const r=t+e.length,i=n.map(e=>({value:e.value,s:Math.max(e.start,t)-t,e:Math.min(e.end,r)-t})).filter(e=>e.e>e.s).sort((e,t)=>e.s-t.s||e.e-t.e),a=[],o=(n,r,i)=>{a.push({text:e.slice(n,r),start:t+n,end:t+r,value:i})};let s=0;for(const c of i){let e=c.s;if(e<s){if(c.e<=s)continue;e=s}e>s&&o(s,e,null),o(e,c.e,c.value),s=c.e}return s<e.length&&o(s,e.length,null),0===a.length&&o(0,e.length,null),a},wn=(()=>{const e=/* @__PURE__ */new Uint8Array(128);for(let t=0;t<78;t++)e["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.,!?;:'\"()[]{}".charCodeAt(t)]=1;return e})(),bn=e=>e<128&&1===wn[e],Sn={pages:[],charsPerLine:0,linesPerPage:0,charsPerPage:0},Cn=(e,t,n,r={})=>{const i=e.replace(/(?:\r\n|\r|\n)+/g,"\n")||"",a=i.length,o=r.minBox??30,{charWidth:s,lineHeight:c}=n,u=n.narrowRatio??.5625;if(t.width<o||t.height<o||s<=0||c<=0)return{...Sn,total:a};const l=Math.floor(t.width/s),d=Math.floor(t.height/c),h=l*d;if(l<=0||d<=0)return{...Sn,total:a};const p=e=>{let t=e,n=e;for(;t<a;){const e=i.charCodeAt(t);if(bn(e))t++;else{if(32===e){n=t,t++;break}t++}}return n},f=e=>{let t=e,n=e;for(;t>0;){const e=i.charCodeAt(t-1);if(bn(e))n=t-1,t--;else{if(32===e)break;t--}}return n},m=[];let g=0;for(;a>g;){let e=0,t=0;const n=g;let r=h;for(;e<d&&t<h&&g<a;){const n=i.charCodeAt(g);if(10===n||13===n){e++,t=0,g++,r--;continue}const a=bn(n);if(t>=l){if(a){const n=f(g);if(p(g)-n>l){e++,t=0;continue}}e++,t=0}else g++,t+=a?u:1,r--}if(g<a&&bn(i.charCodeAt(g))){const e=f(g);p(g)-e>r&&e>n&&(g=e)}if(g===n)break;m.push({text:i.slice(n,g),start:n,end:g,index:m.length})}return{pages:m,total:a,charsPerLine:l,linesPerPage:d,charsPerPage:h}},vn=e=>{const t=e.search(/[?#]/);return-1===t?[e,""]:[e.slice(0,t),e.slice(t)]},En=e=>{const t=e.locales.length>0?e.locales:[{code:"en"}],n=(e=>{const t=e.trim().replace(/\/+$/,"");return t?t.startsWith("/")?t:`/${t}`:""})(e.base??""),r=e.defaultLocale??(t.find(e=>!e.prefix)??t[0]).code,i=t.filter(e=>e.prefix).sort((e,t)=>t.prefix.length-e.prefix.length),a=e=>{const t=e||"/";return n?t===n?"/":t.startsWith(`${n}/`)?t.slice(n.length):t.startsWith("/")?t:`/${t}`:t.startsWith("/")?t:`/${t}`},o=e=>{const t=e.split("/").filter(Boolean)[0],n=t?i.find(e=>e.prefix===t):void 0;if(!n)return{code:r,rest:e};const a=e.slice(n.prefix.length+1)||"/";return{code:n.code,rest:a.startsWith("/")?a:`/${a}`}},s=(e,i=r)=>{const[s,c]=vn(e),{rest:u}=o(a(s)),{prefix:l}=(e=>t.find(t=>t.code===e)??{code:r})(i);return`${n}${l?`/${l}${u}`:u}${c}`||"/"};return{base:n,defaultLocale:r,localeFromPath:e=>o(a(vn(e)[0])).code,stripLocale:e=>{const[t,r]=vn(e);return`${n}${o(a(t)).rest}${r}`},href:s,hrefForLocale:(e,t)=>s(e,t),alternates:e=>t.map(t=>({code:t.code,href:s(e,t.code)}))}},Un=(e,t,n)=>new Promise((r,i)=>{if("undefined"==typeof FileReader)return void i(/* @__PURE__ */new Error("FileReader is not available"));const a=new FileReader;a.onload=()=>r(a.result),a.onerror=()=>i(a.error??/* @__PURE__ */new Error("read file error")),a.onabort=()=>i(/* @__PURE__ */new Error("read file aborted")),"arrayBuffer"===t?a.readAsArrayBuffer(e):"text"===t?a.readAsText(e,n):"dataURL"===t?a.readAsDataURL(e):a.readAsBinaryString(e)}),On=e=>Un(e,"arrayBuffer"),An=async e=>new Uint8Array(await On(e)),kn=(e,t)=>Un(e,"text",t),Mn=e=>Un(e,"dataURL"),Tn=class{worker=null;nextOperationId=1;pending=/* @__PURE__ */new Map;options;constructor(e){this.options=e}get active(){return null!==this.worker}get pendingCount(){return this.pending.size}send=(e,t,n)=>{const r=this.nextOperationId++;return new Promise((i,a)=>{const o={resolve:i,reject:a,onProgress:t};this.options.timeout&&(o.timer=setTimeout(()=>{this.pending.delete(r),a(/* @__PURE__ */new Error(`worker request timed out after ${this.options.timeout}ms`))},this.options.timeout)),this.pending.set(r,o);try{this.getWorker().postMessage({...e,operationId:r},n??[])}catch(s){this.settle(r),a(s instanceof Error?s:new Error(String(s)))}})};dispose=()=>{this.worker?.terminate(),this.worker=null,this.rejectAll(/* @__PURE__ */new Error("worker disposed"))};getWorker=()=>(this.worker||(this.worker=this.options.create(),this.worker.onmessage=e=>this.handleMessage(e.data),this.worker.onerror=e=>this.rejectAll(new Error(e.message||"worker crashed"))),this.worker);settle=e=>{const t=this.pending.get(e);return t?.timer&&clearTimeout(t.timer),this.pending.delete(e),t};handleMessage=e=>{const t=this.pending.get(e.operationId);if(!t)return;const{isProgress:n,getProgress:r,isError:i,getErrorMessage:a}=this.options;if(n?n(e):"progress"===e.type){const n=r?r(e):e.progress;return void t.onProgress?.(n)}if(this.settle(e.operationId),i?i(e):"error"===e.type){const n=a?a(e):e.message;t.reject(new Error(n||"worker error"))}else t.resolve(e)};rejectAll=e=>{for(const[t,n]of this.pending)n.timer&&clearTimeout(n.timer),n.reject(e),this.pending.delete(t)}},Bn=(e,t={})=>{const n=t.scope??globalThis;if(!n||"function"!=typeof n.addEventListener)return()=>{};const r=t.resultType??"result",i=t=>{const i=t.data;if(!i||"number"!=typeof i.operationId)return;const{operationId:a}=i,o=e=>n.postMessage({...e,operationId:a}),s={progress:e=>o({type:"progress",progress:e})};Promise.resolve().then(()=>e(i,s)).then(e=>o("object"==typeof e&&null!==e?e:{type:r,result:e}),e=>o({type:"error",message:e instanceof Error?e.message:String(e)}))};return n.addEventListener("message",i),()=>n.removeEventListener("message",i)},Ln=()=>"undefined"!=typeof window,Fn=(e,t={})=>{const{timeout:n=8e3,fallbackDelay:r=2500}=t;if(!Ln())return()=>{};const i=window.requestIdleCallback;if(i){const t=i(e,{timeout:n});return()=>window.cancelIdleCallback?.(t)}const a=setTimeout(e,r);return()=>clearTimeout(a)},Pn=(e={})=>{const{optOutKey:t,slowTypes:n=["slow-2g","2g"]}=e;if(!Ln())return!1;if(t)try{if(localStorage.getItem(t))return!1}catch{}const r=navigator.connection;return!r?.saveData&&(!r?.effectiveType||!n.includes(r.effectiveType))},Rn=async e=>{if("undefined"==typeof caches)return!1;try{return Boolean(await caches.match(e))}catch{return!1}},Dn=async e=>{try{if(await Rn(e))return;await fetch(e,{cache:"force-cache"})}catch{}},Hn=async(e,t={})=>{if(!(0===e.length||t.serviceWorkerMessage&&((e,t)=>{try{const n="undefined"!=typeof navigator&&"serviceWorker"in navigator?navigator.serviceWorker.controller:null;return!!n&&(n.postMessage({type:t,urls:e}),!0)}catch{return!1}})(e,t.serviceWorkerMessage)))for(const n of e)await Dn(n)},xn=(e,t={})=>Pn(t)?Fn(()=>{Hn(e,t)},t):()=>{},In=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},jn=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Nn=(e,t,n={})=>{const{message:r=`operation timed out after ${t}ms`,onTimeout:i}=n;return new Promise((n,a)=>{const o=setTimeout(()=>{i?.(),a(new jn(r))},t);e.then(e=>{clearTimeout(o),n(e)},e=>{clearTimeout(o),a(e)})})},zn=(e,t,n,r)=>new Promise((i,a)=>{const o=setTimeout(()=>{r?.(),i(n)},t);e.then(e=>{clearTimeout(o),i(e)},e=>{clearTimeout(o),a(e)})}),Kn=e=>new Promise(t=>setTimeout(t,e)),_n=67324752,Wn=33639248,qn=101010256,Vn=30,$n=46,Xn=0,Yn=8,Gn=(e,t)=>e[t]|e[t+1]<<8,Jn=(e,t)=>(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0,Qn=/* @__PURE__ */(()=>{const e=/* @__PURE__ */new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)n=1&n?3988292384^n>>>1:n>>>1;e[t]=n}return e})(),Zn=e=>{let t=4294967295;for(let n=0;n<e.length;n++)t=(Qn[255&(t^e[n])]??0)^t>>>8;return(4294967295^t)>>>0},er=async e=>{if("undefined"==typeof DecompressionStream)throw new Error("DecompressionStream is not available in this runtime");const t=new DecompressionStream("deflate-raw"),n=t.writable.getWriter(),r=t.readable.getReader();n.write(e),n.close();const i=[];for(;;){const{done:e,value:t}=await r.read();if(e)break;t&&i.push(t)}return tr(i)},tr=e=>{let t=0;for(const i of e)t+=i.length;const n=new Uint8Array(t);let r=0;for(const i of e)n.set(i,r),r+=i.length;return n},nr=e=>{const t=(e=>{const t=Math.max(0,e.length-65558);for(let n=e.length-22;n>=t;n--)if(Jn(e,n)===qn)return n;return-1})(e);if(-1===t)return[];const n=Gn(e,t+10),r=[];let i=Jn(e,t+16);for(let a=0;a<n&&!(i+$n>e.length)&&Jn(e,i)===Wn;a++){const t=Gn(e,i+10),n=Gn(e,i+12),a=Gn(e,i+14),o=Jn(e,i+16),s=Jn(e,i+20),c=Jn(e,i+24),u=Gn(e,i+28),l=Gn(e,i+30),d=Gn(e,i+32),h=Jn(e,i+42),p=e.slice(i+$n,i+$n+u),f=new TextDecoder("utf-8",{fatal:!1}).decode(p),m=h+Vn<=e.length,g=m?Gn(e,h+26):0,y=m?Gn(e,h+28):0,w=i;i+=$n+u+l+d,r.push({name:f,compression:t,crc:o,compressedSize:s,uncompressedSize:c,modTime:n,modDate:a,directory:f.endsWith("/"),dataStart:h+Vn+g+y,nameBytes:p,localOffset:h,centralStart:w,centralEnd:i})}return r},rr=(e,t)=>nr(e).some(e=>e.name===t),ir=async(e,t)=>{const n="string"==typeof t?nr(e).find(e=>e.name===t):t;if(!n||n.directory)return null;if(n.dataStart+n.compressedSize>e.length)return null;const r=e.slice(n.dataStart,n.dataStart+n.compressedSize);if(0===n.compression)return r;if(8!==n.compression)return null;try{return await er(r)}catch{return null}},ar=(e,t,n,r=0,i=0)=>{const a=new Uint8Array(Vn+e.length),o=new DataView(a.buffer);return o.setUint32(0,_n,!0),o.setUint16(4,20,!0),o.setUint16(6,0,!0),o.setUint16(8,0,!0),o.setUint16(10,r,!0),o.setUint16(12,i,!0),o.setUint32(14,n,!0),o.setUint32(18,t,!0),o.setUint32(22,t,!0),o.setUint16(26,e.length,!0),a.set(e,Vn),a},or=(e,t,n,r,i=0,a=0)=>{const o=new Uint8Array($n+e.length),s=new DataView(o.buffer);return s.setUint32(0,Wn,!0),s.setUint16(4,20,!0),s.setUint16(6,20,!0),s.setUint16(8,0,!0),s.setUint16(10,0,!0),s.setUint16(12,i,!0),s.setUint16(14,a,!0),s.setUint32(16,n,!0),s.setUint32(20,t,!0),s.setUint32(24,t,!0),s.setUint16(28,e.length,!0),s.setUint32(42,r,!0),o.set(e,$n),o},sr=e=>"string"==typeof e?(new TextEncoder).encode(e):e,cr=async(e,t={})=>{const{filter:n,transform:r,inject:i}=t,a=nr(e);if(0===a.length)return e;const o=/* @__PURE__ */new Map;if(r)for(const g of a)if(!g.directory&&(!n||n(g)))try{const t=await ir(e,g);if(!t)continue;const n=await r(t,g);if(null==n)continue;const i=sr(n);if(i.length===t.length&&i.every((e,n)=>e===t[n]))continue;o.set(g,i)}catch{}const s=(i??[]).map(({name:e,data:t})=>({nameBytes:(new TextEncoder).encode(e),data:sr(t)}));if(0===o.size&&0===s.length)return e;const c=[],u=[];let l=0;for(const g of a){u.push(l);const t=o.get(g);if(t){const e=ar(g.nameBytes,t.length,Zn(t),g.modTime,g.modDate);c.push(e,t),l+=e.length+t.length;continue}const n=new Uint8Array(Vn+g.nameBytes.length),r=new DataView(n.buffer);r.setUint32(0,_n,!0),r.setUint16(4,20,!0),r.setUint16(6,0,!0),r.setUint16(8,g.compression,!0),r.setUint16(10,g.modTime,!0),r.setUint16(12,g.modDate,!0),r.setUint32(14,g.crc,!0),r.setUint32(18,g.compressedSize,!0),r.setUint32(22,g.uncompressedSize,!0),r.setUint16(26,g.nameBytes.length,!0),n.set(g.nameBytes,Vn);const i=e.slice(g.dataStart,g.dataStart+g.compressedSize);c.push(n,i),l+=n.length+i.length}const d=[];for(const g of s){d.push(l);const e=ar(g.nameBytes,g.data.length,Zn(g.data));c.push(e,g.data),l+=e.length+g.data.length}const h=l;for(let g=0;g<a.length;g++){const t=a[g],n=o.get(t);if(n){const e=or(t.nameBytes,n.length,Zn(n),u[g],t.modTime,t.modDate);c.push(e),l+=e.length;continue}const r=new Uint8Array(e.slice(t.centralStart,t.centralEnd)),i=new DataView(r.buffer);i.setUint16(8,-9&Gn(r,8),!0),i.setUint32(42,u[g],!0),c.push(r),l+=r.length}for(let g=0;g<s.length;g++){const e=s[g],t=or(e.nameBytes,e.data.length,Zn(e.data),d[g]);c.push(t),l+=t.length}const p=a.length+s.length,f=new Uint8Array(22),m=new DataView(f.buffer);return m.setUint32(0,qn,!0),m.setUint16(8,p,!0),m.setUint16(10,p,!0),m.setUint32(12,l-h,!0),m.setUint32(16,h,!0),c.push(f),tr(c)},ur=e=>{const t=[],n=[];let r=0;for(const s of e){const e=(new TextEncoder).encode(s.name),i=sr(s.data),a=Zn(i),o=ar(e,i.length,a);n.push(or(e,i.length,a,r)),t.push(o,i),r+=o.length+i.length}const i=r;for(const s of n)t.push(s),r+=s.length;const a=new Uint8Array(22),o=new DataView(a.buffer);return o.setUint32(0,qn,!0),o.setUint16(8,e.length,!0),o.setUint16(10,e.length,!0),o.setUint32(12,r-i,!0),o.setUint32(16,i,!0),t.push(a),tr(t)};function lr(){if("undefined"!=typeof window){const[e]=performance.getEntriesByType("navigation"),[t={},n={}]=performance.getEntriesByType("paint"),{startTime:r}=t,{startTime:i}=n,{domainLookupEnd:a,domainLookupStart:o,connectEnd:s,connectStart:c,secureConnectionStart:u,loadEventStart:l,domInteractive:d,domContentLoadedEventEnd:h,duration:p,responseStart:f,requestStart:m,responseEnd:g,fetchStart:y,transferSize:w,encodedBodySize:b,redirectEnd:S,redirectStart:C,redirectCount:v}=e;return{dnsSearch:a-o,tcpConnect:s-c,sslConnect:s-u,request:f-m,response:g-f,parseDomTree:d-g,resource:l-h,domReady:h-y,interactive:d-y,complete:l-y,httpHead:w-b,redirect:v,redirectTime:S-C,duration:p,fp:r,fcp:i}}}var dr={},hr=e=>{"string"==typeof e?dr.url=e:Object.assign(dr,e)},pr=()=>dr.url??"",fr=({url:e,type:t="application/json; charset=UTF-8",payload:n={}})=>{const r=e||pr();return!!r&&((({url:e="",type:t="application/json; charset=UTF-8",payload:n={}})=>{if("undefined"==typeof navigator||!navigator.sendBeacon||!e)return!1;const r=new Blob([JSON.stringify(n)],{type:t});return navigator.sendBeacon(e,r)})({url:r,type:t,payload:n})||(({url:e="",payload:t={}})=>{if("undefined"==typeof document||!e)return!1;const n=new Image;return n.width=1,n.height=1,n.src=`${e}?${V(t)}`,!0})({url:r,payload:n}))};function mr(e={}){if("undefined"==typeof window)return{};const{width:t,height:n}=l();return{id:r(),path:window.location.href,time:Date.now(),referrer:document.referrer,ratio:`${t}x${n}`,userAgent:window.navigator.userAgent,...dr.userIdCookie?{userId:d(dr.userIdCookie)}:{},...e}}var gr=(e={})=>{if("undefined"==typeof window)return c;const{requestHook:t=c,responseHook:n=c,errorHook:r=c}=e;return G(window,"fetch",e=>{if("function"!=typeof e)return;const i=e;return(e,a)=>(t(e,a),i.apply(window,[e,a]).then(t=>(n(e,a,t),t)).catch(t=>{throw r(e,t),t}))})},yr=(e={})=>{if("undefined"==typeof window||"undefined"==typeof XMLHttpRequest)return c;const t=XMLHttpRequest.prototype,{requestHook:n=c,responseHook:r=c,errorHook:i=c}=e,a=G(t,"open",e=>{if("function"!=typeof e)return;const t=e;return function(...e){n(e),t.apply(this,e)}}),o=G(t,"send",e=>{if("function"!=typeof e)return;const t=e;return function(...e){this.addEventListener("loadend",()=>r(this),{once:!0}),this.addEventListener("error",()=>i(this),{once:!0}),t.apply(this,e)}});return()=>{o(),a()}};function wr(e,t=300){let n,r=0,i=null,a=null;const o=()=>{if(i=null,!a)return;const t=a,o=n;a=null,n=void 0,r=Date.now(),e.apply(o,t)},s=function(...e){const s=t-(Date.now()-r);n=this,a=e,s<=0?(null!==i&&(clearTimeout(i),i=null),o()):null===i&&(i=setTimeout(o,s))};return s.cancel=()=>{null!==i&&clearTimeout(i),i=null,a=null,n=void 0},s.pending=()=>null!==i,s}var br={click:!0,error:!0,fetch:!0,xhr:!0,performance:!0,console:!1},Sr=class{options;teardown=[];send=c;constructor(e){this.options=e,hr({url:e.url,userIdCookie:e.userIdCookie}),this.send=wr(e=>fr(e),e.throttleMs??300)}get running(){return this.teardown.length>0}start=()=>{if(this.running)return this.stop;const e={...br,...this.options.channels};return e.performance&&this.reportPerformance(),e.click&&this.teardown.push(this.reportClick()),e.error&&this.teardown.push(this.reportError()),e.fetch&&this.teardown.push(this.reportFetch()),e.xhr&&this.teardown.push(this.reportXhr()),e.console&&this.teardown.push(this.reportConsole()),this.stop};stop=()=>{const e=this.teardown.splice(0,this.teardown.length);for(const t of e)t()};event=(e,t)=>({payload:{...mr(),data:t,type:e}});log=e=>{this.send({payload:{...mr(),...e}})};reportPerformance=()=>{fr({payload:{...lr(),...mr(),type:"performance"}})};reportClick=()=>((e=c)=>{if("undefined"==typeof document)return c;const t=t=>e(t);return document.addEventListener("click",t,!0),()=>document.removeEventListener("click",t,!0)})(e=>{const{pageX:t,pageY:n,screenX:r,screenY:i,type:a}=e;this.send(this.event("click",{pageX:t,pageY:n,screenX:r,screenY:i,type:a}))});reportError=()=>Ht((...e)=>this.send(this.event("error",{...e})));reportFetch=()=>gr({requestHook:(...e)=>this.send(this.event("fetchRequest",{...e})),responseHook:(...e)=>this.send(this.event("fetchResponse",{...e})),errorHook:(...e)=>this.send(this.event("fetchError",{...e}))});reportXhr=()=>yr({requestHook:(...e)=>this.send(this.event("xhrRequest",{...e})),responseHook:(...e)=>this.send(this.event("xhrResponse",{...e})),errorHook:(...e)=>this.send(this.event("xhrError",{...e}))});reportConsole=()=>kt((...e)=>this.send(this.event("console",{...e})))},Cr=/* @__PURE__ */new Map([[100,"Continue"],[101,"Switching Protocols"],[102,"Processing"],[103,"Early Hints"],[200,"OK"],[201,"Created"],[202,"Accepted"],[203,"Non-Authoritative Information"],[204,"No Content"],[205,"Reset Content"],[206,"Partial Content"],[207,"Multi-Status"],[208,"Already Reported"],[226,"IM Used"],[300,"Multiple Choices"],[301,"Moved Permanently"],[302,"Found"],[303,"See Other"],[304,"Not Modified"],[305,"Use Proxy"],[307,"Temporary Redirect"],[308,"Permanent Redirect"],[400,"Bad Request"],[401,"Unauthorized"],[402,"Payment Required"],[403,"Forbidden"],[404,"Not Found"],[405,"Method Not Allowed"],[406,"Not Acceptable"],[407,"Proxy Authentication Required"],[408,"Request Timeout"],[409,"Conflict"],[410,"Gone"],[411,"Length Required"],[412,"Precondition Failed"],[413,"Payload Too Large"],[414,"URI Too Long"],[415,"Unsupported Media Type"],[416,"Range Not Satisfiable"],[417,"Expectation Failed"],[418,"I'm a Teapot"],[421,"Misdirected Request"],[422,"Unprocessable Entity"],[423,"Locked"],[424,"Failed Dependency"],[425,"Too Early"],[426,"Upgrade Required"],[428,"Precondition Required"],[429,"Too Many Requests"],[431,"Request Header Fields Too Large"],[451,"Unavailable For Legal Reasons"],[500,"Internal Server Error"],[501,"Not Implemented"],[502,"Bad Gateway"],[503,"Service Unavailable"],[504,"Gateway Timeout"],[505,"HTTP Version Not Supported"],[506,"Variant Also Negotiates"],[507,"Insufficient Storage"],[508,"Loop Detected"],[509,"Bandwidth Limit Exceeded"],[510,"Not Extended"],[511,"Network Authentication Required"]]),vr={message:Cr,code:function(e){const t=/* @__PURE__ */new Map;for(const[n,r]of e)t.set(r.toLowerCase(),n);return t}(Cr),codes:function(e){const t=[];for(const[n,r]of e)t.push(n);return t}(Cr),redirect:{300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0},empty:{204:!0,205:!0,304:!0},retry:{502:!0,503:!0,504:!0}};function Er(e){if(!vr.message.has(e))throw new Error("invalid status code: "+e);return vr.message.get(e)}function Ur(e){if("number"==typeof e)return Er(e);if("string"!=typeof e)throw new TypeError("code must be a number or string");const t=parseInt(e,10);return!isNaN(t)&&vr.codes.includes(t)?Er(t):function(e){const t=e.toLowerCase();if(vr.code.has(t),!vr.code.has(t))throw new Error('invalid status message: "'+e+'"');return vr.code.get(t)}(e)}var Or=class{running=0;executed=0;simultaneous;queue=[];idleWaiters=[];constructor({simultaneous:e=1}={}){this.simultaneous=Math.max(1,e)}get pending(){return this.queue.length}get idle(){return 0===this.queue.length&&0===this.running}add=e=>"function"!=typeof e?Promise.reject(/* @__PURE__ */new TypeError("QuestQueue.add expects a function")):new Promise((t,n)=>{this.queue.push({task:e,resolve:t,reject:n}),this.next()});allSettled=e=>Promise.allSettled(e.map(e=>this.add(e)));onIdle=()=>this.idle?Promise.resolve():new Promise(e=>this.idleWaiters.push(e));clear=()=>{const e=this.queue.splice(0,this.queue.length);for(const t of e)t.reject(/* @__PURE__ */new Error("QuestQueue cleared"));this.settleIdle()};next=()=>{for(;this.running<this.simultaneous&&this.queue.length>0;){const e=this.queue.shift();this.running++,Promise.resolve().then(e.task).then(e.resolve,e.reject).finally(()=>{this.running--,this.executed++,this.settleIdle(),this.next()})}};settleIdle=()=>{if(!this.idle)return;const e=this.idleWaiters.splice(0,this.idleWaiters.length);for(const t of e)t()}},Ar=/* @__PURE__ */new Set,kr=({type:e,content:t})=>new Promise((r,i)=>{const a=n(`${e}:${t}`);if(Ar.has(a))return void r({success:!0});const o=document.createElement("script");if(o.onload=function(){Ar.add(a),r({success:!0})},o.onerror=function(e){i({success:!1,error:e})},"content"===e)return o.textContent=t,document.body.append(o),Ar.add(a),void r({success:!0});o.src=t,document.body.append(o)}),Mr=(e,t,n)=>{const r=(e=Array.isArray(e)?e:[e]).map(e=>{let n;if(e.toLowerCase().endsWith(".css")){const t=document.createElement("link");t.type="text/css",t.rel="stylesheet",t.href=e,n=t}else n=document.createElement("script"),n.type="text/javascript",n.src=e;const r=document.getElementsByTagName("body")[0];return(t||r).appendChild(n),new Promise(e=>{n.onload=()=>{e()}})});return new Promise(e=>{Promise.all(r).then(()=>{n&&n(),e()})})};export{Qt as $,K as $t,Pn as A,pe as At,An as B,J as Bt,rr as C,Bt as Ct,Nn as D,Ot as Dt,Kn as E,kt as Et,Tn as F,te as Ft,yn as G,_ as Gt,Cn as H,G as Ht,Bn as I,X as It,sn as J,D as Jt,pn as K,q as Kt,On as L,$ as Lt,Hn as M,de as Mt,xn as N,le as Nt,zn as O,Ut as Ot,Fn as P,ue as Pt,nn as Q,R as Qt,Mn as R,ee as Rt,cr as S,Pt as St,In as T,Mt as Tt,mn as U,Q as Ut,En as V,V as Vt,gn as W,W as Wt,ln as X,F as Xt,on as Y,x as Yt,un as Z,I as Zt,Zn as _,xt as _t,vr as a,m as an,qt as at,nr as b,Dt as bt,gr as c,C as cn,$t as ct,pr as d,p as dn,jt as dt,H as en,Jt as et,fr as f,f as fn,_t as ft,Xn as g,Kt as gt,Yn as h,zt as ht,Ur as i,k as in,Xt as it,Dn as j,he as jt,Rn as k,fe as kt,yr as l,O as ln,Yt as lt,lr as m,Nt as mt,Mr as n,z as nn,tn as nt,Sr as o,w as on,Vt as ot,hr as p,y as pn,It as pt,fn as q,L as qt,Or as r,M as rn,Zt as rt,wr as s,g as sn,Gt as st,kr as t,N as tn,en as tt,mr as u,E as un,Wt as ut,ur as v,Ht as vt,jn as w,Rt as wt,ir as x,Lt as xt,er as y,Tt as yt,kn as z,Y as zt};
|
package/docs/API.md
CHANGED
|
@@ -8,14 +8,15 @@ constraints, conventions) read [../CLAUDE.md](../CLAUDE.md) first.
|
|
|
8
8
|
Import from the **subpath** that owns the symbol, e.g. `import { debounce } from
|
|
9
9
|
'ranuts/utils'`. The root `ranuts` barrel re-exports the utils + visual surface.
|
|
10
10
|
|
|
11
|
-
**
|
|
11
|
+
**369 exports** across 6 entry points. Generated at 2026-08-02T12:10:00.120Z.
|
|
12
12
|
|
|
13
13
|
## Entry points
|
|
14
14
|
|
|
15
|
-
- [`ranuts/utils`](#ranutsutils) — Browser and general-purpose utilities · _browser + node_ ·
|
|
15
|
+
- [`ranuts/utils`](#ranutsutils) — Browser and general-purpose utilities · _browser + node_ · 287 exports
|
|
16
|
+
- [`ranuts/sw`](#ranutssw) — Service Worker caching strategies and the precache protocol · _service worker only_ · 9 exports
|
|
16
17
|
- [`ranuts/node`](#ranutsnode) — Node server utilities (fs / http / ws / middleware) · _node only_ · 26 exports
|
|
17
18
|
- [`ranuts/visual`](#ranutsvisual) — 2D rendering engine (Canvas / WebGL / WebGPU) · _browser only_ · 12 exports
|
|
18
|
-
- [`ranuts/i18n`](#ranutsi18n) — Framework-agnostic i18n engine (also re-exported from ranuts/utils) · _browser + node_ ·
|
|
19
|
+
- [`ranuts/i18n`](#ranutsi18n) — Framework-agnostic i18n engine (also re-exported from ranuts/utils) · _browser + node_ · 9 exports
|
|
19
20
|
- [`ranuts/vnode`](#ranutsvnode) — Snabbdom-style virtual DOM · _browser_ · 26 exports
|
|
20
21
|
|
|
21
22
|
## `ranuts/utils`
|
|
@@ -36,6 +37,7 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
36
37
|
- `appendUrl(url: string, params?: Record<string, string>) => string` — Turn an object into a query string and append it to a URL
|
|
37
38
|
- `arrayBufferToString(buffer: ArrayBuffer | Uint8Array) => string` — Decode bytes into a string using the sniffed encoding. Required when reading
|
|
38
39
|
- `audioVendor() => Promise<string>` — Audio fingerprint. 1. Generate an audio stream (triangle wave), run an FFT over it and hash the result with SHA. 2. Generate an audio stream (sine wave), run it through dynamic compression and hash with MD5.
|
|
40
|
+
- `autosizeTextarea(element: HTMLTextAreaElement) => (() => void)` — Make a `<textarea>` grow and shrink with its content, so a long message is
|
|
39
41
|
- `buildOffsets(lengths: readonly number[]) => number[]` — The global start offset of every chunk in the concatenated coordinate
|
|
40
42
|
- `canvasVendor() => string | null`
|
|
41
43
|
- `changeHumpToLowerCase(str: string) => string`
|
|
@@ -52,11 +54,12 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
52
54
|
- `createData(params?: Record<string, unknown>) => Record<string, unknown>` — Build the standard envelope that accompanies a report — page URL, referrer,
|
|
53
55
|
- `createDocumentFragment(list: Element[]) => DocumentFragment | undefined` — Create a DocumentFragment
|
|
54
56
|
- `createHandoff<T>({ dbName, storeName, key }: HandoffOptions) => Handoff<T>` — A one-shot value handoff between two pages of the same origin, backed by
|
|
55
|
-
- `createI18n(config?: I18nConfig) => I18nCore
|
|
57
|
+
- `createI18n<TDict extends StringValues<TDict> = MessageDict>(config?: I18nConfig<TDict>) => I18nCore<TDict>` — Create and register the global i18n singleton.
|
|
56
58
|
- `createLocalePath(config: LocalePathConfig) => LocalePath` — Create the set of locale path conversion functions.
|
|
57
59
|
- `createObjectURL(src: Blob | ArrayBuffer | Response) => Promise<string>`
|
|
58
60
|
- `createPortBridge(port: MessagePort) => PortBridge` — Build a bridge on any MessagePort (a Web Worker, a SharedWorker, or a port from a completed handshake).
|
|
59
61
|
- `createSignal<T = unknown>(value: T, options?: SignalOptions<T>) => [() => T, (newValue: T) => void]` — Create a minimal signal with optional event broadcasting, returned as
|
|
62
|
+
- `createSpeechRecognizer(options?: SpeechRecognizerOptions) => SpeechRecognizer` — Create a dictation session over the Web Speech API.
|
|
60
63
|
- `createStore<T>(prefix?: string) => JsonStore<T>` — A prefixed, JSON-serialising view over localStorage.
|
|
61
64
|
- `createZip(files: ReadonlyArray<{ name: string; data: Uint8Array | string; }>) => Uint8Array` — Build a ZIP from scratch, every entry STORED. No compression, so this is
|
|
62
65
|
- `currentDevice() => CurrentDevice`
|
|
@@ -70,8 +73,10 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
70
73
|
- `escapeHtml(string?: string | number | null) => string`
|
|
71
74
|
- `fanShapedByArc(ctx: CanvasRenderingContext2D, maxRadius: number, start: number, end: number, gutter: number) => void` — Trace a pie slice with arc(), including the gutter between slices.
|
|
72
75
|
- `filterObj(obj: Record<string, unknown>, list: Array<string>) => Record<string, unknown>` — Return a new object without the properties whose values appear in `list` — typically used to drop empty strings and nulls
|
|
73
|
-
- `formatDate(value?:
|
|
76
|
+
- `formatDate(value?: DateInput, pattern?: string) => string` — Format a date with a token pattern. Accepts a timestamp, a date string, a
|
|
77
|
+
- `formatDuration(seconds: number) => string` — Format an elapsed number of **seconds** as a colon-separated clock duration,
|
|
74
78
|
- `formatJson(value: string | object, onError?: (error: Error) => void, indent?: number) => string` — Pretty-print JSON. Accepts an object or a JSON string (single quotes are
|
|
79
|
+
- `formatRelative(value: DateInput, options?: FormatRelativeOptions) => string` — Format a point in time relative to another — "3 days ago", "in 2 hours".
|
|
75
80
|
- `getAllQueryString(url?: string) => Record<string, string>` — Parse a URL's query string into an object. Defaults to the current
|
|
76
81
|
- `getAngle(deg: number) => number` — Degrees to radians
|
|
77
82
|
- `getArcPointerByDeg(deg: number, r: number) => [number, number]` — The point on a circle at a given angle
|
|
@@ -117,6 +122,7 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
117
122
|
- `isInIframe() => boolean` — Whether this page is running inside an iframe. Returns false under SSR.
|
|
118
123
|
- `isMobile() => boolean` — Whether this is a mobile device
|
|
119
124
|
- `isSafari() => boolean | undefined | string`
|
|
125
|
+
- `isSpeechRecognitionSupported() => boolean` — Whether this runtime can recognize speech. Checked at call time, so it is safe
|
|
120
126
|
- `isString(obj: unknown) => boolean`
|
|
121
127
|
- `isUrlCached(url: string) => Promise<boolean>` — Whether a URL is already in CacheStorage. When probing a group of files,
|
|
122
128
|
- `isWeiXin() => boolean` — Whether this is the WeChat in-app browser
|
|
@@ -137,6 +143,7 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
137
143
|
- `once<T extends Func>(fn: T | unknown) => ((...args: Parameters<T>) => ReturnType<T>)` — Run once — evaluate on the first call, cache the result, and return that
|
|
138
144
|
- `opacity(img: ImgSource, opacity: number) => ImgSource` — Apply an overall opacity to an image, returning an offscreen canvas.
|
|
139
145
|
- `openPortBridge({ targetWindow, targetOrigin, name, }: OpenPortBridgeOptions) => PortBridge` — Initiator: create a MessageChannel, hand one port to the target window and keep the other.
|
|
146
|
+
- `paginateText(text: string, box: TextBox, metrics: TextGridMetrics, options?: PaginateOptions) => PaginateResult` — Cut text into pages that fit `box`, given the type metrics.
|
|
140
147
|
- `parseChineseNumber(value: string) => number | null` — Chinese numerals to Arabic, covering 「十五」「二十三」「一百零三」「一千零一」「三万」.
|
|
141
148
|
- `parseEnglishNumber(value: string) => number | null` — English ordinals to numbers, tried in order: Arabic digits, number words
|
|
142
149
|
- `parseRomanNumber(value: string) => number | null` — Roman numerals to Arabic (either case, handling subtractive forms such as IV / IX). Returns null for invalid input.
|
|
@@ -153,7 +160,7 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
153
160
|
- `readFileAsArrayBuffer(blob: Blob) => Promise<ArrayBuffer>` — Read a File / Blob as an ArrayBuffer
|
|
154
161
|
- `readFileAsDataURL(blob: Blob) => Promise<string>` — Read a File / Blob as a data: URL (image previews and the like)
|
|
155
162
|
- `readFileAsText(blob: Blob, encoding?: string) => Promise<string>` — Read a File / Blob as text
|
|
156
|
-
- `readFileAsUint8Array(blob: Blob) => Promise<Uint8Array
|
|
163
|
+
- `readFileAsUint8Array(blob: Blob) => Promise<Uint8Array<ArrayBuffer>>` — Read a File / Blob as a Uint8Array (pair with checkEncoding / arrayBufferToString for encoding sniffing)
|
|
157
164
|
- `readZipEntries(bytes: Uint8Array) => ZipEntry[]` — Read an archive's central directory. Returns `[]` for anything that is not
|
|
158
165
|
- `readZipEntry(bytes: Uint8Array, entry: string | ZipEntry) => Promise<Uint8Array | null>` — Extract one entry's decompressed bytes. Resolves `null` when the entry is
|
|
159
166
|
- `removeClassToElement(element: Element, removeClass: string) => void` — Remove a class from an element
|
|
@@ -174,6 +181,7 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
174
181
|
- `roundRectByArc(ctx: CanvasRenderingContext2D, ...[x, y, w, h, r]: number[]) => void` — Trace a rounded rectangle with arc(). A corner radius larger than half the
|
|
175
182
|
- `scriptOnLoad(urls: string[], append?: HTMLElement, callback?: () => void) => Promise<void>` — Insert script/link tags dynamically
|
|
176
183
|
- `segmentByRanges<T>(text: string, chunkStart: number, ranges: readonly OffsetRange<T>[]) => Segment<T>[]` — Split one chunk of text into a sequence of plain / matched spans according
|
|
184
|
+
- `serveWorker<Req extends WorkerRequestBase, Res extends object = object, Progress = unknown>(handler: (request: Req, context: WorkerHandlerContext<Progress>) =>…` — Serve requests inside a Web Worker, mirroring {@link WorkerClient} on the
|
|
177
185
|
- `setAttributeByGlobal(name: string, value: unknown) => void` — Define a property on the global object
|
|
178
186
|
- `setFontSize2html(designWidth?: number) => void` — Set the root font size from the design mock's width
|
|
179
187
|
- `setMime(ext: string, mimeType: string) => Map<string, string>`
|
|
@@ -189,7 +197,8 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
189
197
|
- `toString(value: string | number) => string`
|
|
190
198
|
- `transformNumber(value: string, locale?: string, precision?: number, fixed?: number) => string`
|
|
191
199
|
- `transformText(content: string | ArrayBuffer) => TransformText | undefined`
|
|
192
|
-
- `
|
|
200
|
+
- `truncate(value: string, options: TruncateOptions | number) => string` — Shorten a string to a maximum length, marking the cut with an ellipsis.
|
|
201
|
+
- `useI18n<TDict extends StringValues<TDict> = MessageDict>() => I18nCore<TDict> | null` — The active global instance, or null when none was created. Pass the same
|
|
193
202
|
- `watchMediaQuery(query: string, callback: (matches: boolean) => void) => (() => void)` — Watch a media query. The callback **fires once synchronously with the
|
|
194
203
|
- `webglVendor() => { vendor: string; renderer: string; } | null`
|
|
195
204
|
- `whenIdle(callback: () => void, options?: WhenIdleOptions) => (() => void)` — Run a callback while the browser is idle, falling back to setTimeout where
|
|
@@ -207,7 +216,7 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
207
216
|
- `class EventManager` — EventManager — a scoped listener registry built on AbortController.
|
|
208
217
|
- `class Hsl`
|
|
209
218
|
- `class Hsla`
|
|
210
|
-
- `class I18nCore`
|
|
219
|
+
- `class I18nCore` — The engine. Optionally parameterised by your dictionary shape.
|
|
211
220
|
- `class Mathjs` — Arithmetic that works around floating-point precision.
|
|
212
221
|
- `class Monitor` — Front-end telemetry: page-load performance, clicks, errors, fetch/XHR traffic
|
|
213
222
|
- `class PostMessageBridge` — Bridge registration event, consumed by the client
|
|
@@ -229,9 +238,11 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
229
238
|
- `interface CallToPayload`
|
|
230
239
|
- `interface Debounced`
|
|
231
240
|
- `interface Deferred` — Promise primitives that JavaScript does not ship: an externally settled promise and a
|
|
241
|
+
- `interface FormatRelativeOptions`
|
|
232
242
|
- `interface Handoff`
|
|
233
243
|
- `interface HandoffOptions`
|
|
234
244
|
- `interface I18nConfig`
|
|
245
|
+
- `interface IDBCollection` — A store name bound once, values unwrapped, failures folded into the empty case
|
|
235
246
|
- `interface IDBResult` — The uniform result shape of every IndexedDB operation. Every method
|
|
236
247
|
- `interface IDBStoreSchema` — Declarative schema for object stores. `openDataBase` creates the missing
|
|
237
248
|
- `interface JsonStore`
|
|
@@ -244,6 +255,8 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
244
255
|
- `interface NetworkAllowanceOptions`
|
|
245
256
|
- `interface OffsetRange` — An annotation in global coordinates: the half-open interval `[start, end)` plus any payload
|
|
246
257
|
- `interface OpenPortBridgeOptions`
|
|
258
|
+
- `interface PaginateOptions`
|
|
259
|
+
- `interface PaginateResult`
|
|
247
260
|
- `interface PendingRequest`
|
|
248
261
|
- `interface PortBridge` — A point-to-point bridge over MessagePort.
|
|
249
262
|
- `interface PrefetchOptions`
|
|
@@ -251,26 +264,41 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
251
264
|
- `interface ResolveLocaleOptions`
|
|
252
265
|
- `interface RewriteZipOptions`
|
|
253
266
|
- `interface Segment` — One piece of the split result: `value === null` marks a plain span covered by no range
|
|
267
|
+
- `interface ServeWorkerOptions`
|
|
254
268
|
- `interface SingleFlight`
|
|
269
|
+
- `interface SpeechError`
|
|
270
|
+
- `interface SpeechRecognizer`
|
|
271
|
+
- `interface SpeechRecognizerOptions`
|
|
255
272
|
- `interface SpeedType` — The ease-in / ease-out pair of one easing family
|
|
273
|
+
- `interface TextBox` — The box each page must fit into, in px.
|
|
274
|
+
- `interface TextGridMetrics`
|
|
275
|
+
- `interface TextPage`
|
|
256
276
|
- `interface Throttled`
|
|
257
277
|
- `interface TransformText`
|
|
278
|
+
- `interface TruncateOptions`
|
|
258
279
|
- `interface WebDBOptions`
|
|
259
280
|
- `interface WhenIdleOptions`
|
|
260
281
|
- `interface WorkerClientOptions`
|
|
282
|
+
- `interface WorkerHandlerContext` — Handed to the handler so it can stream progress for the request it is currently serving
|
|
283
|
+
- `interface WorkerRequestBase` — A request always carries the id the client stamped on it
|
|
261
284
|
- `interface WorkerResponseBase` — A response must at least echo the request id so the two can be paired
|
|
262
285
|
- `interface ZipEntry` — One entry as described by the archive's central directory.
|
|
263
286
|
|
|
264
287
|
### Types
|
|
265
288
|
|
|
266
289
|
- `type CurrentDevice`
|
|
290
|
+
- `type DateInput` — Accepted everywhere a moment in time is taken; `undefined` means "now".
|
|
267
291
|
- `type EasingFn` — One easing function: (elapsed, from, delta, duration) => current value
|
|
268
292
|
- `type ImgSource` — A bitmap container usable both as a drawImage source and as a render target
|
|
269
293
|
- `type LocaleChangeHandler`
|
|
270
|
-
- `type LocaleMessages`
|
|
294
|
+
- `type LocaleMessages` — Locale → dictionary. Parameterised by the dictionary shape so an app can hand in its own
|
|
271
295
|
- `type MessageDict`
|
|
296
|
+
- `type RelativeStyle` — `'compact'` is ours; the other three are `Intl.RelativeTimeFormat` styles.
|
|
297
|
+
- `type SpeechErrorKind` — `denied` means the user or the browser refused the microphone — worth surfacing.
|
|
298
|
+
- `type StringValues` — "An object whose values are all strings" — the constraint the dictionary type parameter
|
|
272
299
|
- `type TextLanguage` — Coarse language bucket: Chinese / English / other only
|
|
273
300
|
- `type TranslateParams`
|
|
301
|
+
- `type TruncatePosition` — Which end of the string gets dropped when it is too long.
|
|
274
302
|
|
|
275
303
|
### Constants
|
|
276
304
|
|
|
@@ -301,6 +329,29 @@ import { /* … */ } from 'ranuts/utils';
|
|
|
301
329
|
- `const ZIP_DEFLATE: 8`
|
|
302
330
|
- `const ZIP_STORED: 0` — Compression methods this module understands.
|
|
303
331
|
|
|
332
|
+
## `ranuts/sw`
|
|
333
|
+
|
|
334
|
+
Service Worker caching strategies and the precache protocol · runtime: **service worker only** · source: `src/sw/index.ts`
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
import { /* … */ } from 'ranuts/sw';
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Functions
|
|
341
|
+
|
|
342
|
+
- `cacheFirst(request: Request, options: CacheStrategyOptions) => Promise<Response>` — Cache-first: serve the stored copy when there is one, otherwise fetch and
|
|
343
|
+
- `dropCachesExcept(keep: readonly string[], options?: { scope?: SWScope; }) => Promise<string[]>` — Delete every cache except the ones named. Call it on `activate` so a new
|
|
344
|
+
- `networkFirst(request: Request, options: CacheStrategyOptions) => Promise<Response>` — Network-first: go to the network, store what comes back, and fall back to the
|
|
345
|
+
- `precache(cacheName: string, urls: readonly string[], options?: { scope?: SWScope; }) => Promise<void>` — Fill a cache with a list of URLs, skipping what is already there. Failures are
|
|
346
|
+
- `servePrecache(options: ServePrecacheOptions) => (() => void)` — Answer the precache messages that `prefetchUrls({ serviceWorkerMessage })`
|
|
347
|
+
|
|
348
|
+
### Interfaces
|
|
349
|
+
|
|
350
|
+
- `interface CacheStrategyOptions`
|
|
351
|
+
- `interface PrecacheMessageEvent` — The bit of `ExtendableMessageEvent` used here, declared locally rather than pulled from
|
|
352
|
+
- `interface ServePrecacheOptions`
|
|
353
|
+
- `interface SWScope` — Minimal view of the SW global the helpers touch, so they can be unit-tested with a stub.
|
|
354
|
+
|
|
304
355
|
## `ranuts/node`
|
|
305
356
|
|
|
306
357
|
Node server utilities (fs / http / ws / middleware) · runtime: **node only** · source: `src/node/index.ts`
|
|
@@ -392,12 +443,12 @@ import { /* … */ } from 'ranuts/i18n';
|
|
|
392
443
|
|
|
393
444
|
### Functions
|
|
394
445
|
|
|
395
|
-
- `createI18n(config?: I18nConfig) => I18nCore
|
|
396
|
-
- `useI18n() => I18nCore | null` —
|
|
446
|
+
- `createI18n<TDict extends StringValues<TDict> = MessageDict>(config?: I18nConfig<TDict>) => I18nCore<TDict>` — Create and register the global i18n singleton.
|
|
447
|
+
- `useI18n<TDict extends StringValues<TDict> = MessageDict>() => I18nCore<TDict> | null` — The active global instance, or null when none was created. Pass the same
|
|
397
448
|
|
|
398
449
|
### Classes
|
|
399
450
|
|
|
400
|
-
- `class I18nCore`
|
|
451
|
+
- `class I18nCore` — The engine. Optionally parameterised by your dictionary shape.
|
|
401
452
|
|
|
402
453
|
### Interfaces
|
|
403
454
|
|
|
@@ -406,8 +457,9 @@ import { /* … */ } from 'ranuts/i18n';
|
|
|
406
457
|
### Types
|
|
407
458
|
|
|
408
459
|
- `type LocaleChangeHandler`
|
|
409
|
-
- `type LocaleMessages`
|
|
460
|
+
- `type LocaleMessages` — Locale → dictionary. Parameterised by the dictionary shape so an app can hand in its own
|
|
410
461
|
- `type MessageDict`
|
|
462
|
+
- `type StringValues` — "An object whose values are all strings" — the constraint the dictionary type parameter
|
|
411
463
|
- `type TranslateParams`
|
|
412
464
|
|
|
413
465
|
## `ranuts/vnode`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ranuts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-alpha.2",
|
|
4
4
|
"description": "Tree-shakeable TypeScript utility library: DOM/BOM helpers, string/object/number/color utils, debounce/throttle/compose, a 2D rendering engine and a virtual DOM.",
|
|
5
5
|
"main": "dist/index.umd.cjs",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"types": "./dist/src/utils/visual/index.d.ts",
|
|
30
30
|
"import": "./dist/src/utils/visual/index.js"
|
|
31
31
|
},
|
|
32
|
+
"./sw": {
|
|
33
|
+
"types": "./dist/src/sw/index.d.ts",
|
|
34
|
+
"import": "./dist/src/sw/index.js"
|
|
35
|
+
},
|
|
32
36
|
"./i18n": {
|
|
33
37
|
"types": "./dist/src/utils/i18n.d.ts",
|
|
34
38
|
"import": "./dist/src/utils/i18n/index.js"
|
package/dist/i18n-Cf5TtRb4.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=()=>{};function t(e){return e<10?`0${e}`:e}var n=(e,t=2)=>String(e).padStart(t,"0"),r=/YYYY|YY|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|SSS|A|a|\[([^\]]*)]/g,s=(e,t="YYYY-MM-DD HH:mm:ss")=>{const s=null==e?/* @__PURE__ */new Date:new Date(e);if(Number.isNaN(s.getTime()))return"Invalid Date";const i=s.getHours(),a=i%12||12,o={YYYY:String(s.getFullYear()),YY:n(s.getFullYear()%100),MM:n(s.getMonth()+1),M:String(s.getMonth()+1),DD:n(s.getDate()),D:String(s.getDate()),HH:n(i),H:String(i),hh:n(a),h:String(a),mm:n(s.getMinutes()),m:String(s.getMinutes()),ss:n(s.getSeconds()),s:String(s.getSeconds()),SSS:n(s.getMilliseconds(),3),A:i<12?"AM":"PM",a:i<12?"am":"pm"};return t.replace(r,(e,t)=>void 0!==t?t:o[e])};function i(e){const t=e?new Date(e):/* @__PURE__ */new Date;return t.format=(e="YYYY-MM-DD HH:mm:ss")=>s(t,e),t}var a=e=>{if(0===e)return"00:00";if(!e)return"";const n=Math.trunc(e/3600),r=Math.trunc(e%3600/60),s=t(Math.trunc(e-3600*n-60*r));return 0===n?`${t(r)}:${s}`:`${t(n)}:${t(r)}:${s}`},o=()=>{if("undefined"!=typeof document)return performance.now();if("undefined"!=typeof process){const[e,t]=process.hrtime();return 1e3*e+t/1e6}return Date.now()},c=/* @__PURE__ */function(e){return e.IPAD="ipad",e.ANDROID="android",e.IPhONE="iphone",e.PC="pc",e}({}),u=()=>{if("undefined"!=typeof window){const e=navigator.userAgent.toLowerCase();return/ipad|ipod/.test(e)?"ipad":/android/.test(e)?"android":/iphone/.test(e)?"iphone":"pc"}return"pc"},d="undefined"!=typeof window,l="(max-width: 768px)",h=e=>"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia(e).matches,f=(e,t)=>{if("undefined"==typeof window||"function"!=typeof window.matchMedia)return t(!1),()=>{};const n=window.matchMedia(e),r=()=>t(n.matches);if(r(),"function"==typeof n.addEventListener)return n.addEventListener("change",r),()=>n.removeEventListener("change",r);const s=n;return s.addListener(r),()=>s.removeListener(r)},g=()=>!!d&&window.navigator.userAgent.toLowerCase().includes("micromessenger"),w=()=>{if(!d)return!1;const e=window.navigator.userAgent;return!!/Android|webOS|iPhone|iPod|iPad|BlackBerry/i.test(e)},p=()=>{if(!d)return!1;const e=/iphone/i.test(window.navigator.userAgent),t=window.devicePixelRatio&&2===window.devicePixelRatio,n=window.devicePixelRatio&&3===window.devicePixelRatio,r=360===window.screen.width&&780===window.screen.height,s=375===window.screen.width&&812===window.screen.height,i=390===window.screen.width&&844===window.screen.height,a=414===window.screen.width&&896===window.screen.height,o=428===window.screen.width&&926===window.screen.height;switch(!0){case e&&n&&r:case e&&n&&s:case e&&n&&i:case e&&t&&a:case e&&n&&a:case e&&n&&o:return!0;default:return!1}},m=(t=e)=>{const n=()=>{t(),d&&window.removeEventListener("popstate",n)};d&&window.history.pushState(null,"",window.location.href),setTimeout(()=>{d&&window.addEventListener("popstate",n)},500)},y=e=>{const t=document.cookie.split("; ");for(let n=0;n<t.length;n++){const r=t[n].split("=");if(r[0]===e)return decodeURIComponent(r[1])}return""},v=(e,t)=>new Promise(function(n,r){const s=new XMLHttpRequest;s.open(t.method||"GET",e,!0),s.responseType=t.responseType||"arraybuffer",s.onload=function(){200===s.status?n({success:!0,data:s.response,message:""}):r({success:!1,data:s.status,message:`The request status is${s.status}`})},s.onerror=function(e){r({success:!1,data:e,message:""})},s.onprogress=e=>{t.onProgress&&t.onProgress(e)},s.withCredentials=t.withCredentials||!1,t.headers&&Object.keys(t.headers).forEach(function(e){t.headers?.[e]&&s.setRequestHeader(e,t.headers[e])}),s.send(t.body)}),A=e=>{const t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||1;return(d&&window.devicePixelRatio||1)/t},_=async e=>{if("string"==typeof e)return e;if(e instanceof Blob)return URL.createObjectURL(e);if(e instanceof ArrayBuffer)return URL.createObjectURL(new Blob([e]));if(e instanceof Response){const t=await e.blob();return URL.createObjectURL(t)}return e},D=(e=10)=>{const t=[];let n,r=0;return new Promise(s=>{const i=()=>{const a=o(),c=a-r;0!==r&&t.push(c),r=a,t.length>e&&(s(1/(t.reduce((e,t)=>e+t)/e)),cancelAnimationFrame(n)),n=requestAnimationFrame(i)};t.length<=e&&(n=requestAnimationFrame(i))})},x=e=>{const t={},n=(e=>{const t=e??("undefined"==typeof window?"":window.location.href),n=t.indexOf("?");if(-1===n)return"";const r=t.slice(n+1),s=r.indexOf("#");return-1===s?r:r.slice(0,s)})(e);if(!n)return t;for(const r of n.split("&")){if(!r)continue;const e=r.indexOf("="),n=-1===e?r:r.slice(0,e),s=-1===e?"":r.slice(e+1);if(n)try{t[decodeURIComponent(n.replace(/\+/g," "))]=decodeURIComponent(s.replace(/\+/g," "))}catch{t[n]=s}}return t},S=e=>x(e),M=(e,t)=>{const n=x(t)[e];if(void 0===n)return!1;const r=n.toLowerCase();return""===r||"1"===r||"true"===r},b=()=>{if("undefined"==typeof window)return!1;try{return window.parent!==window}catch{return!0}};function L(e,t={}){let n=e;0===n.indexOf("//")&&(n=n.replace("//","https://"));const r=new URL(n);return t&&Object.keys(t).forEach(e=>{t[e]&&r.searchParams.set(e,t[e])}),r.href}var R=e=>{const t=document.createElement("img");t.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",t.width=0,t.height=0,t.style.opacity="0",e.dataTransfer&&e.dataTransfer.setDragImage(t,0,0)};function P(e){if("undefined"!=typeof window){const t=new RegExp(`(^| )${e}(?:=([^;]*))?(;|$)`).exec(document.cookie);if(t&&t[2])return t[2]}return""}var O=()=>"undefined"!=typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0},k=()=>{if("undefined"!=typeof window)return window.navigator.connection},Y=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x7E]|%(?:[^\da-f]|[\da-f][^\da-f]|$))+/gi,F=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g;function I(e){return String(e).replace(F,"$1�$2").replace(Y,encodeURI)}var B=e=>new Promise((t,n)=>{const r=new Image,s=/* @__PURE__ */(new Date).getTime();r.src=e||`https://github.com/favicon.ico?d=${s}`,r.onload=()=>{t(/* @__PURE__ */(new Date).getTime()-s)},r.onerror=e=>{n(e)}}),C=(e,...t)=>n=>new Promise((r,s)=>{setTimeout(async()=>{try{r(await e(...t))}catch(n){s(n)}},n)}),H=async e=>{const{url:t,duration:n=3e3,count:r=5}=e;let s=0,i=0;const a=[];for(let o=0;o<r;o++){const e=await C(B,t)(n);a.push(e)}return s=Math.max(...a)-Math.min(...a),i=a.reduce((e,t)=>e+t)/a.length,{ping:i,jitter:s}},$=()=>{if("undefined"!=typeof navigator)return navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&!navigator.userAgent.includes("CriOS")&&!navigator.userAgent.includes("FxiOS")},E=()=>{try{return"undefined"==typeof localStorage?null:localStorage}catch{return null}},T=(e,t)=>{try{E()?.setItem(e,t)}catch{}},U=e=>{try{return E()?.getItem(e)??""}catch{return""}},N=e=>{try{E()?.removeItem(e)}catch{}},j=(e="")=>{const t=t=>`${e}${t}`;return{keyOf:t,get:(e,n)=>{const r=U(t(e));if(!r)return n;try{return JSON.parse(r)}catch{return n}},set:(e,n)=>{let r;try{r=JSON.stringify(n)}catch{return!1}return T(t(e),r),U(t(e))===r},remove:e=>N(t(e))}},z=(e,t=2e4)=>{const n=e.slice(0,t);let r=0,s=0;for(const i of n){const e=i.codePointAt(0)??0;e>=19968&&e<=40959||e>=13312&&e<=19903?r++:(e>=65&&e<=90||e>=97&&e<=122)&&s++}return 0===r&&0===s?"other":r>=s?"zh":s>3*r?"en":"zh"},q=()=>{if("undefined"==typeof navigator)return"other";const e=(navigator.language||"").toLowerCase();return e.startsWith("zh")?"zh":e.startsWith("en")?"en":"other"},K=e=>{const{supported:t,query:n,cookie:r,storageKey:s,useNavigator:i=!0,url:a}=e,o=e.fallback??t[0]??"en";if(0===t.length)return o;const c=t.map(e=>e.toLowerCase()),u=e=>{if(!e)return;const n=e.trim().toLowerCase();if(!n)return;const r=c.indexOf(n);if(-1!==r)return t[r];const s=n.split("-")[0],i=c.findIndex(e=>e===s||e.split("-")[0]===s);return-1===i?void 0:t[i]},d=[];if(n&&d.push(x(a)[n]),r&&d.push(P(r)),s&&d.push(U(s)),i&&"undefined"!=typeof navigator){const{languages:e,language:t}=navigator;d.push(...e??[],t)}for(const l of d){const e=u(l);if(e)return e}return o},W=Object.freeze({}),G=class{_locale;_fallback;_messages;_persist;_storageKey;_handlers=/* @__PURE__ */new Set;constructor(e={}){this._messages={...e.messages},this._fallback=e.fallbackLocale??"en",this._persist=e.persist??!1,this._storageKey=e.storageKey??"ran-locale",this._locale=this._resolveInitialLocale(e)}_resolveInitialLocale(e){const t=Object.keys(this._messages),n=this._persist&&U(this._storageKey)||null;if(n&&(this._messages[n]||0===t.length))return n;if(e.locale)return e.locale;if(e.detectNavigator){const e=K({supported:t,useNavigator:!0,fallback:""});if(e)return e}return this._fallback}get locale(){return this._locale}getLocale(){return this._locale}setLocale(e){e!==this._locale&&(this._locale=e,this._persist&&T(this._storageKey,e),this._notify())}addMessages(e,t){this._messages[e]={...this._messages[e],...t}}getMessages(e=this._locale){return this._messages[e]??{}}get availableLocales(){return Object.keys(this._messages)}t(e,t){const n=this._messages[this._locale]?.[e]??this._messages[this._fallback]?.[e]??e;return this._interpolate(n,t)}_interpolate(e,t){const n=t??W;return e.replace(/\{\{|\}\}|\{(\w+)\}/g,(e,t)=>"{{"===e?"{":"}}"===e?"}":null!=n[t]?String(n[t]):e)}onChange(e){return this._handlers.add(e),()=>{this._handlers.delete(e)}}_notify(){for(const e of this._handlers)e(this._locale)}destroy(){this._handlers.clear()}},J=null;function Q(e={}){return J=new G(e)}function V(){return J}export{m as A,s as B,B as C,M as D,H as E,d as F,a as H,w as I,g as L,l as M,u as N,R as O,p as P,h as R,O as S,$ as T,i as U,o as V,e as W,y as _,q as a,A as b,U as c,L as d,k as f,x as g,I as h,z as i,c as j,v as k,N as l,C as m,Q as n,K as o,_ as p,V as r,j as s,G as t,T as u,P as v,b as w,S as x,D as y,f as z};
|