import {
setupDevtoolsPlugin
} from "./chunk-TQOCY6B2.js" ;
import {
Fragment ,
Text ,
computed2 as computed ,
createVNode ,
effectScope ,
getCurrentInstance ,
h ,
inject ,
isRef ,
onBeforeMount ,
onMounted ,
onUnmounted ,
ref ,
shallowRef ,
watch
} from "./chunk-GACSD46C.js" ;
import "./chunk-4EOJPDL2.js" ;
// node_modules/@intlify/shared/dist/shared.esm-bundler.js
var inBrowser = typeof window !== "undefined" ;
var mark ;
var measure ;
if ( true ) {
const perf = inBrowser && window . performance ;
if ( perf && perf . mark && perf . measure && perf . clearMarks && perf . clearMeasures ) {
mark = ( tag ) => perf . mark ( tag ) ;
measure = ( name , startTag , endTag ) => {
perf . measure ( name , startTag , endTag ) ;
perf . clearMarks ( startTag ) ;
perf . clearMarks ( endTag ) ;
} ;
}
}
var RE_ARGS = /\{([0-9a-zA-Z]+)\}/g ;
function format ( message , ... args ) {
if ( args . length === 1 && isObject ( args [ 0 ] ) ) {
args = args [ 0 ] ;
}
if ( ! args || ! args . hasOwnProperty ) {
args = { } ;
}
return message . replace ( RE_ARGS , ( match , identifier ) => {
return args . hasOwnProperty ( identifier ) ? args [ identifier ] : "" ;
} ) ;
}
var hasSymbol = typeof Symbol === "function" && typeof Symbol . toStringTag === "symbol" ;
var makeSymbol = ( name ) => hasSymbol ? Symbol ( name ) : name ;
var generateFormatCacheKey = ( locale , key , source ) => friendlyJSONstringify ( { l : locale , k : key , s : source } ) ;
var friendlyJSONstringify = ( json ) => JSON . stringify ( json ) . replace ( /\u2028/g , "\\u2028" ) . replace ( /\u2029/g , "\\u2029" ) . replace ( /\u0027/g , "\\u0027" ) ;
var isNumber = ( val ) => typeof val === "number" && isFinite ( val ) ;
var isDate = ( val ) => toTypeString ( val ) === "[object Date]" ;
var isRegExp = ( val ) => toTypeString ( val ) === "[object RegExp]" ;
var isEmptyObject = ( val ) => isPlainObject ( val ) && Object . keys ( val ) . length === 0 ;
function warn ( msg , err ) {
if ( typeof console !== "undefined" ) {
console . warn ( ` [intlify] ` + msg ) ;
if ( err ) {
console . warn ( err . stack ) ;
}
}
}
var assign = Object . assign ;
var _ globalThis ;
var getGlobalThis = ( ) => {
return _ globalThis || ( _ globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : { } ) ;
} ;
function escapeHtml ( rawText ) {
return rawText . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /"/g , """ ) . replace ( /'/g , "'" ) ;
}
var hasOwnProperty = Object . prototype . hasOwnProperty ;
function hasOwn ( obj , key ) {
return hasOwnProperty . call ( obj , key ) ;
}
var isArray = Array . isArray ;
var isFunction = ( val ) => typeof val === "function" ;
var isString = ( val ) => typeof val === "string" ;
var isBoolean = ( val ) => typeof val === "boolean" ;
var isObject = ( val ) => (
// eslint-disable-line
val !== null && typeof val === "object"
) ;
var objectToString = Object . prototype . toString ;
var toTypeString = ( value ) => objectToString . call ( value ) ;
var isPlainObject = ( val ) => toTypeString ( val ) === "[object Object]" ;
var toDisplayString = ( val ) => {
return val == null ? "" : isArray ( val ) || isPlainObject ( val ) && val . toString === objectToString ? JSON . stringify ( val , null , 2 ) : String ( val ) ;
} ;
var RANGE = 2 ;
function generateCodeFrame ( source , start = 0 , end = source . length ) {
const lines = source . split ( /\r?\n/ ) ;
let count = 0 ;
const res = [ ] ;
for ( let i = 0 ; i < lines . length ; i ++ ) {
count += lines [ i ] . length + 1 ;
if ( count >= start ) {
for ( let j = i - RANGE ; j <= i + RANGE || end > count ; j ++ ) {
if ( j < 0 || j >= lines . length )
continue ;
const line = j + 1 ;
res . push ( ` ${ line } ${ " " . repeat ( 3 - String ( line ) . length ) } | ${ lines [ j ] } ` ) ;
const lineLength = lines [ j ] . length ;
if ( j === i ) {
const pad = start - ( count - lineLength ) + 1 ;
const length = Math . max ( 1 , end > count ? lineLength - pad : end - start ) ;
res . push ( ` | ` + " " . repeat ( pad ) + "^" . repeat ( length ) ) ;
} else if ( j > i ) {
if ( end > count ) {
const length = Math . max ( Math . min ( end - count , lineLength ) , 1 ) ;
res . push ( ` | ` + "^" . repeat ( length ) ) ;
}
count += lineLength + 1 ;
}
}
break ;
}
}
return res . join ( "\n" ) ;
}
function createEmitter ( ) {
const events = /* @__PURE__ */ new Map ( ) ;
const emitter = {
events ,
on ( event , handler ) {
const handlers = events . get ( event ) ;
const added = handlers && handlers . push ( handler ) ;
if ( ! added ) {
events . set ( event , [ handler ] ) ;
}
} ,
off ( event , handler ) {
const handlers = events . get ( event ) ;
if ( handlers ) {
handlers . splice ( handlers . indexOf ( handler ) >>> 0 , 1 ) ;
}
} ,
emit ( event , payload ) {
( events . get ( event ) || [ ] ) . slice ( ) . map ( ( handler ) => handler ( payload ) ) ;
( events . get ( "*" ) || [ ] ) . slice ( ) . map ( ( handler ) => handler ( event , payload ) ) ;
}
} ;
return emitter ;
}
// node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js
var CompileErrorCodes = {
// tokenizer error codes
EXPECTED_TOKEN : 1 ,
INVALID_TOKEN_IN_PLACEHOLDER : 2 ,
UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER : 3 ,
UNKNOWN_ESCAPE_SEQUENCE : 4 ,
INVALID_UNICODE_ESCAPE_SEQUENCE : 5 ,
UNBALANCED_CLOSING_BRACE : 6 ,
UNTERMINATED_CLOSING_BRACE : 7 ,
EMPTY_PLACEHOLDER : 8 ,
NOT_ALLOW_NEST_PLACEHOLDER : 9 ,
INVALID_LINKED_FORMAT : 10 ,
// parser error codes
MUST_HAVE_MESSAGES_IN_PLURAL : 11 ,
UNEXPECTED_EMPTY_LINKED_MODIFIER : 12 ,
UNEXPECTED_EMPTY_LINKED_KEY : 13 ,
UNEXPECTED_LEXICAL_ANALYSIS : 14 ,
// Special value for higher-order compilers to pick up the last code
// to avoid collision of error codes. This should always be kept as the last
// item.
__ EXTEND_POINT__ : 15
} ;
var errorMessages = {
// tokenizer error messages
[ CompileErrorCodes . EXPECTED_TOKEN ] : ` Expected token: '{0}' ` ,
[ CompileErrorCodes . INVALID_TOKEN_IN_PLACEHOLDER ] : ` Invalid token in placeholder: '{0}' ` ,
[ CompileErrorCodes . UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER ] : ` Unterminated single quote in placeholder ` ,
[ CompileErrorCodes . UNKNOWN_ESCAPE_SEQUENCE ] : ` Unknown escape sequence: \\ {0} ` ,
[ CompileErrorCodes . INVALID_UNICODE_ESCAPE_SEQUENCE ] : ` Invalid unicode escape sequence: {0} ` ,
[ CompileErrorCodes . UNBALANCED_CLOSING_BRACE ] : ` Unbalanced closing brace ` ,
[ CompileErrorCodes . UNTERMINATED_CLOSING_BRACE ] : ` Unterminated closing brace ` ,
[ CompileErrorCodes . EMPTY_PLACEHOLDER ] : ` Empty placeholder ` ,
[ CompileErrorCodes . NOT_ALLOW_NEST_PLACEHOLDER ] : ` Not allowed nest placeholder ` ,
[ CompileErrorCodes . INVALID_LINKED_FORMAT ] : ` Invalid linked format ` ,
// parser error messages
[ CompileErrorCodes . MUST_HAVE_MESSAGES_IN_PLURAL ] : ` Plural must have messages ` ,
[ CompileErrorCodes . UNEXPECTED_EMPTY_LINKED_MODIFIER ] : ` Unexpected empty linked modifier ` ,
[ CompileErrorCodes . UNEXPECTED_EMPTY_LINKED_KEY ] : ` Unexpected empty linked key ` ,
[ CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS ] : ` Unexpected lexical analysis in token: '{0}' `
} ;
function createCompileError ( code3 , loc , options = { } ) {
const { domain , messages , args } = options ;
const msg = true ? format ( ( messages || errorMessages ) [ code3 ] || "" , ... args || [ ] ) : code3 ;
const error = new SyntaxError ( String ( msg ) ) ;
error . code = code3 ;
if ( loc ) {
error . location = loc ;
}
error . domain = domain ;
return error ;
}
function defaultOnError ( error ) {
throw error ;
}
function createPosition ( line , column , offset ) {
return { line , column , offset } ;
}
function createLocation ( start , end , source ) {
const loc = { start , end } ;
if ( source != null ) {
loc . source = source ;
}
return loc ;
}
var CHAR_SP = " " ;
var CHAR_CR = "\r" ;
var CHAR_LF = "\n" ;
var CHAR_LS = String . fromCharCode ( 8232 ) ;
var CHAR_PS = String . fromCharCode ( 8233 ) ;
function createScanner ( str ) {
const _ buf = str ;
let _ index = 0 ;
let _ line = 1 ;
let _ column = 1 ;
let _ peekOffset = 0 ;
const isCRLF = ( index2 ) => _ buf [ index2 ] === CHAR_CR && _ buf [ index2 + 1 ] === CHAR_LF ;
const isLF = ( index2 ) => _ buf [ index2 ] === CHAR_LF ;
const isPS = ( index2 ) => _ buf [ index2 ] === CHAR_PS ;
const isLS = ( index2 ) => _ buf [ index2 ] === CHAR_LS ;
const isLineEnd = ( index2 ) => isCRLF ( index2 ) || isLF ( index2 ) || isPS ( index2 ) || isLS ( index2 ) ;
const index = ( ) => _ index ;
const line = ( ) => _ line ;
const column = ( ) => _ column ;
const peekOffset = ( ) => _ peekOffset ;
const charAt = ( offset ) => isCRLF ( offset ) || isPS ( offset ) || isLS ( offset ) ? CHAR_LF : _ buf [ offset ] ;
const currentChar = ( ) => charAt ( _ index ) ;
const currentPeek = ( ) => charAt ( _ index + _ peekOffset ) ;
function next ( ) {
_ peekOffset = 0 ;
if ( isLineEnd ( _ index ) ) {
_ line ++ ;
_ column = 0 ;
}
if ( isCRLF ( _ index ) ) {
_ index ++ ;
}
_ index ++ ;
_ column ++ ;
return _ buf [ _ index ] ;
}
function peek ( ) {
if ( isCRLF ( _ index + _ peekOffset ) ) {
_ peekOffset ++ ;
}
_ peekOffset ++ ;
return _ buf [ _ index + _ peekOffset ] ;
}
function reset ( ) {
_ index = 0 ;
_ line = 1 ;
_ column = 1 ;
_ peekOffset = 0 ;
}
function resetPeek ( offset = 0 ) {
_ peekOffset = offset ;
}
function skipToPeek ( ) {
const target = _ index + _ peekOffset ;
while ( target !== _ index ) {
next ( ) ;
}
_ peekOffset = 0 ;
}
return {
index ,
line ,
column ,
peekOffset ,
charAt ,
currentChar ,
currentPeek ,
next ,
peek ,
reset ,
resetPeek ,
skipToPeek
} ;
}
var EOF = void 0 ;
var LITERAL_DELIMITER = "'" ;
var ERROR_DOMAIN$1 = "tokenizer" ;
function createTokenizer ( source , options = { } ) {
const location = options . location !== false ;
const _ scnr = createScanner ( source ) ;
const currentOffset = ( ) => _ scnr . index ( ) ;
const currentPosition = ( ) => createPosition ( _ scnr . line ( ) , _ scnr . column ( ) , _ scnr . index ( ) ) ;
const _ initLoc = currentPosition ( ) ;
const _ initOffset = currentOffset ( ) ;
const _ context = {
currentType : 14 ,
offset : _ initOffset ,
startLoc : _ initLoc ,
endLoc : _ initLoc ,
lastType : 14 ,
lastOffset : _ initOffset ,
lastStartLoc : _ initLoc ,
lastEndLoc : _ initLoc ,
braceNest : 0 ,
inLinked : false ,
text : ""
} ;
const context = ( ) => _ context ;
const { onError } = options ;
function emitError ( code3 , pos , offset , ... args ) {
const ctx = context ( ) ;
pos . column += offset ;
pos . offset += offset ;
if ( onError ) {
const loc = createLocation ( ctx . startLoc , pos ) ;
const err = createCompileError ( code3 , loc , {
domain : ERROR_DOMAIN$1 ,
args
} ) ;
onError ( err ) ;
}
}
function getToken ( context2 , type , value ) {
context2 . endLoc = currentPosition ( ) ;
context2 . currentType = type ;
const token = { type } ;
if ( location ) {
token . loc = createLocation ( context2 . startLoc , context2 . endLoc ) ;
}
if ( value != null ) {
token . value = value ;
}
return token ;
}
const getEndToken = ( context2 ) => getToken (
context2 ,
14
/* EOF */
) ;
function eat ( scnr , ch ) {
if ( scnr . currentChar ( ) === ch ) {
scnr . next ( ) ;
return ch ;
} else {
emitError ( CompileErrorCodes . EXPECTED_TOKEN , currentPosition ( ) , 0 , ch ) ;
return "" ;
}
}
function peekSpaces ( scnr ) {
let buf = "" ;
while ( scnr . currentPeek ( ) === CHAR_SP || scnr . currentPeek ( ) === CHAR_LF ) {
buf += scnr . currentPeek ( ) ;
scnr . peek ( ) ;
}
return buf ;
}
function skipSpaces ( scnr ) {
const buf = peekSpaces ( scnr ) ;
scnr . skipToPeek ( ) ;
return buf ;
}
function isIdentifierStart ( ch ) {
if ( ch === EOF ) {
return false ;
}
const cc = ch . charCodeAt ( 0 ) ;
return cc >= 97 && cc <= 122 || // a-z
cc >= 65 && cc <= 90 || // A-Z
cc === 95 ;
}
function isNumberStart ( ch ) {
if ( ch === EOF ) {
return false ;
}
const cc = ch . charCodeAt ( 0 ) ;
return cc >= 48 && cc <= 57 ;
}
function isNamedIdentifierStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( currentType !== 2 ) {
return false ;
}
peekSpaces ( scnr ) ;
const ret = isIdentifierStart ( scnr . currentPeek ( ) ) ;
scnr . resetPeek ( ) ;
return ret ;
}
function isListIdentifierStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( currentType !== 2 ) {
return false ;
}
peekSpaces ( scnr ) ;
const ch = scnr . currentPeek ( ) === "-" ? scnr . peek ( ) : scnr . currentPeek ( ) ;
const ret = isNumberStart ( ch ) ;
scnr . resetPeek ( ) ;
return ret ;
}
function isLiteralStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( currentType !== 2 ) {
return false ;
}
peekSpaces ( scnr ) ;
const ret = scnr . currentPeek ( ) === LITERAL_DELIMITER ;
scnr . resetPeek ( ) ;
return ret ;
}
function isLinkedDotStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( currentType !== 8 ) {
return false ;
}
peekSpaces ( scnr ) ;
const ret = scnr . currentPeek ( ) === "." ;
scnr . resetPeek ( ) ;
return ret ;
}
function isLinkedModifierStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( currentType !== 9 ) {
return false ;
}
peekSpaces ( scnr ) ;
const ret = isIdentifierStart ( scnr . currentPeek ( ) ) ;
scnr . resetPeek ( ) ;
return ret ;
}
function isLinkedDelimiterStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( ! ( currentType === 8 || currentType === 12 ) ) {
return false ;
}
peekSpaces ( scnr ) ;
const ret = scnr . currentPeek ( ) === ":" ;
scnr . resetPeek ( ) ;
return ret ;
}
function isLinkedReferStart ( scnr , context2 ) {
const { currentType } = context2 ;
if ( currentType !== 10 ) {
return false ;
}
const fn = ( ) => {
const ch = scnr . currentPeek ( ) ;
if ( ch === "{" ) {
return isIdentifierStart ( scnr . peek ( ) ) ;
} else if ( ch === "@" || ch === "%" || ch === "|" || ch === ":" || ch === "." || ch === CHAR_SP || ! ch ) {
return false ;
} else if ( ch === CHAR_LF ) {
scnr . peek ( ) ;
return fn ( ) ;
} else {
return isIdentifierStart ( ch ) ;
}
} ;
const ret = fn ( ) ;
scnr . resetPeek ( ) ;
return ret ;
}
function isPluralStart ( scnr ) {
peekSpaces ( scnr ) ;
const ret = scnr . currentPeek ( ) === "|" ;
scnr . resetPeek ( ) ;
return ret ;
}
function detectModuloStart ( scnr ) {
const spaces = peekSpaces ( scnr ) ;
const ret = scnr . currentPeek ( ) === "%" && scnr . peek ( ) === "{" ;
scnr . resetPeek ( ) ;
return {
isModulo : ret ,
hasSpace : spaces . length > 0
} ;
}
function isTextStart ( scnr , reset = true ) {
const fn = ( hasSpace = false , prev = "" , detectModulo = false ) => {
const ch = scnr . currentPeek ( ) ;
if ( ch === "{" ) {
return prev === "%" ? false : hasSpace ;
} else if ( ch === "@" || ! ch ) {
return prev === "%" ? true : hasSpace ;
} else if ( ch === "%" ) {
scnr . peek ( ) ;
return fn ( hasSpace , "%" , true ) ;
} else if ( ch === "|" ) {
return prev === "%" || detectModulo ? true : ! ( prev === CHAR_SP || prev === CHAR_LF ) ;
} else if ( ch === CHAR_SP ) {
scnr . peek ( ) ;
return fn ( true , CHAR_SP , detectModulo ) ;
} else if ( ch === CHAR_LF ) {
scnr . peek ( ) ;
return fn ( true , CHAR_LF , detectModulo ) ;
} else {
return true ;
}
} ;
const ret = fn ( ) ;
reset && scnr . resetPeek ( ) ;
return ret ;
}
function takeChar ( scnr , fn ) {
const ch = scnr . currentChar ( ) ;
if ( ch === EOF ) {
return EOF ;
}
if ( fn ( ch ) ) {
scnr . next ( ) ;
return ch ;
}
return null ;
}
function takeIdentifierChar ( scnr ) {
const closure = ( ch ) => {
const cc = ch . charCodeAt ( 0 ) ;
return cc >= 97 && cc <= 122 || // a-z
cc >= 65 && cc <= 90 || // A-Z
cc >= 48 && cc <= 57 || // 0-9
cc === 95 || // _
cc === 36 ;
} ;
return takeChar ( scnr , closure ) ;
}
function takeDigit ( scnr ) {
const closure = ( ch ) => {
const cc = ch . charCodeAt ( 0 ) ;
return cc >= 48 && cc <= 57 ;
} ;
return takeChar ( scnr , closure ) ;
}
function takeHexDigit ( scnr ) {
const closure = ( ch ) => {
const cc = ch . charCodeAt ( 0 ) ;
return cc >= 48 && cc <= 57 || // 0-9
cc >= 65 && cc <= 70 || // A-F
cc >= 97 && cc <= 102 ;
} ;
return takeChar ( scnr , closure ) ;
}
function getDigits ( scnr ) {
let ch = "" ;
let num = "" ;
while ( ch = takeDigit ( scnr ) ) {
num += ch ;
}
return num ;
}
function readModulo ( scnr ) {
skipSpaces ( scnr ) ;
const ch = scnr . currentChar ( ) ;
if ( ch !== "%" ) {
emitError ( CompileErrorCodes . EXPECTED_TOKEN , currentPosition ( ) , 0 , ch ) ;
}
scnr . next ( ) ;
return "%" ;
}
function readText ( scnr ) {
let buf = "" ;
while ( true ) {
const ch = scnr . currentChar ( ) ;
if ( ch === "{" || ch === "}" || ch === "@" || ch === "|" || ! ch ) {
break ;
} else if ( ch === "%" ) {
if ( isTextStart ( scnr ) ) {
buf += ch ;
scnr . next ( ) ;
} else {
break ;
}
} else if ( ch === CHAR_SP || ch === CHAR_LF ) {
if ( isTextStart ( scnr ) ) {
buf += ch ;
scnr . next ( ) ;
} else if ( isPluralStart ( scnr ) ) {
break ;
} else {
buf += ch ;
scnr . next ( ) ;
}
} else {
buf += ch ;
scnr . next ( ) ;
}
}
return buf ;
}
function readNamedIdentifier ( scnr ) {
skipSpaces ( scnr ) ;
let ch = "" ;
let name = "" ;
while ( ch = takeIdentifierChar ( scnr ) ) {
name += ch ;
}
if ( scnr . currentChar ( ) === EOF ) {
emitError ( CompileErrorCodes . UNTERMINATED_CLOSING_BRACE , currentPosition ( ) , 0 ) ;
}
return name ;
}
function readListIdentifier ( scnr ) {
skipSpaces ( scnr ) ;
let value = "" ;
if ( scnr . currentChar ( ) === "-" ) {
scnr . next ( ) ;
value += ` - ${ getDigits ( scnr ) } ` ;
} else {
value += getDigits ( scnr ) ;
}
if ( scnr . currentChar ( ) === EOF ) {
emitError ( CompileErrorCodes . UNTERMINATED_CLOSING_BRACE , currentPosition ( ) , 0 ) ;
}
return value ;
}
function readLiteral ( scnr ) {
skipSpaces ( scnr ) ;
eat ( scnr , ` ' ` ) ;
let ch = "" ;
let literal = "" ;
const fn = ( x ) => x !== LITERAL_DELIMITER && x !== CHAR_LF ;
while ( ch = takeChar ( scnr , fn ) ) {
if ( ch === "\\" ) {
literal += readEscapeSequence ( scnr ) ;
} else {
literal += ch ;
}
}
const current = scnr . currentChar ( ) ;
if ( current === CHAR_LF || current === EOF ) {
emitError ( CompileErrorCodes . UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER , currentPosition ( ) , 0 ) ;
if ( current === CHAR_LF ) {
scnr . next ( ) ;
eat ( scnr , ` ' ` ) ;
}
return literal ;
}
eat ( scnr , ` ' ` ) ;
return literal ;
}
function readEscapeSequence ( scnr ) {
const ch = scnr . currentChar ( ) ;
switch ( ch ) {
case "\\" :
case ` ' ` :
scnr . next ( ) ;
return ` \\ ${ ch } ` ;
case "u" :
return readUnicodeEscapeSequence ( scnr , ch , 4 ) ;
case "U" :
return readUnicodeEscapeSequence ( scnr , ch , 6 ) ;
default :
emitError ( CompileErrorCodes . UNKNOWN_ESCAPE_SEQUENCE , currentPosition ( ) , 0 , ch ) ;
return "" ;
}
}
function readUnicodeEscapeSequence ( scnr , unicode , digits ) {
eat ( scnr , unicode ) ;
let sequence = "" ;
for ( let i = 0 ; i < digits ; i ++ ) {
const ch = takeHexDigit ( scnr ) ;
if ( ! ch ) {
emitError ( CompileErrorCodes . INVALID_UNICODE_ESCAPE_SEQUENCE , currentPosition ( ) , 0 , ` \\ ${ unicode } ${ sequence } ${ scnr . currentChar ( ) } ` ) ;
break ;
}
sequence += ch ;
}
return ` \\ ${ unicode } ${ sequence } ` ;
}
function readInvalidIdentifier ( scnr ) {
skipSpaces ( scnr ) ;
let ch = "" ;
let identifiers = "" ;
const closure = ( ch2 ) => ch2 !== "{" && ch2 !== "}" && ch2 !== CHAR_SP && ch2 !== CHAR_LF ;
while ( ch = takeChar ( scnr , closure ) ) {
identifiers += ch ;
}
return identifiers ;
}
function readLinkedModifier ( scnr ) {
let ch = "" ;
let name = "" ;
while ( ch = takeIdentifierChar ( scnr ) ) {
name += ch ;
}
return name ;
}
function readLinkedRefer ( scnr ) {
const fn = ( detect = false , buf ) => {
const ch = scnr . currentChar ( ) ;
if ( ch === "{" || ch === "%" || ch === "@" || ch === "|" || ! ch ) {
return buf ;
} else if ( ch === CHAR_SP ) {
return buf ;
} else if ( ch === CHAR_LF ) {
buf += ch ;
scnr . next ( ) ;
return fn ( detect , buf ) ;
} else {
buf += ch ;
scnr . next ( ) ;
return fn ( true , buf ) ;
}
} ;
return fn ( false , "" ) ;
}
function readPlural ( scnr ) {
skipSpaces ( scnr ) ;
const plural = eat (
scnr ,
"|"
/* Pipe */
) ;
skipSpaces ( scnr ) ;
return plural ;
}
function readTokenInPlaceholder ( scnr , context2 ) {
let token = null ;
const ch = scnr . currentChar ( ) ;
switch ( ch ) {
case "{" :
if ( context2 . braceNest >= 1 ) {
emitError ( CompileErrorCodes . NOT_ALLOW_NEST_PLACEHOLDER , currentPosition ( ) , 0 ) ;
}
scnr . next ( ) ;
token = getToken (
context2 ,
2 ,
"{"
/* BraceLeft */
) ;
skipSpaces ( scnr ) ;
context2 . braceNest ++ ;
return token ;
case "}" :
if ( context2 . braceNest > 0 && context2 . currentType === 2 ) {
emitError ( CompileErrorCodes . EMPTY_PLACEHOLDER , currentPosition ( ) , 0 ) ;
}
scnr . next ( ) ;
token = getToken (
context2 ,
3 ,
"}"
/* BraceRight */
) ;
context2 . braceNest -- ;
context2 . braceNest > 0 && skipSpaces ( scnr ) ;
if ( context2 . inLinked && context2 . braceNest === 0 ) {
context2 . inLinked = false ;
}
return token ;
case "@" :
if ( context2 . braceNest > 0 ) {
emitError ( CompileErrorCodes . UNTERMINATED_CLOSING_BRACE , currentPosition ( ) , 0 ) ;
}
token = readTokenInLinked ( scnr , context2 ) || getEndToken ( context2 ) ;
context2 . braceNest = 0 ;
return token ;
default :
let validNamedIdentifier = true ;
let validListIdentifier = true ;
let validLiteral = true ;
if ( isPluralStart ( scnr ) ) {
if ( context2 . braceNest > 0 ) {
emitError ( CompileErrorCodes . UNTERMINATED_CLOSING_BRACE , currentPosition ( ) , 0 ) ;
}
token = getToken ( context2 , 1 , readPlural ( scnr ) ) ;
context2 . braceNest = 0 ;
context2 . inLinked = false ;
return token ;
}
if ( context2 . braceNest > 0 && ( context2 . currentType === 5 || context2 . currentType === 6 || context2 . currentType === 7 ) ) {
emitError ( CompileErrorCodes . UNTERMINATED_CLOSING_BRACE , currentPosition ( ) , 0 ) ;
context2 . braceNest = 0 ;
return readToken ( scnr , context2 ) ;
}
if ( validNamedIdentifier = isNamedIdentifierStart ( scnr , context2 ) ) {
token = getToken ( context2 , 5 , readNamedIdentifier ( scnr ) ) ;
skipSpaces ( scnr ) ;
return token ;
}
if ( validListIdentifier = isListIdentifierStart ( scnr , context2 ) ) {
token = getToken ( context2 , 6 , readListIdentifier ( scnr ) ) ;
skipSpaces ( scnr ) ;
return token ;
}
if ( validLiteral = isLiteralStart ( scnr , context2 ) ) {
token = getToken ( context2 , 7 , readLiteral ( scnr ) ) ;
skipSpaces ( scnr ) ;
return token ;
}
if ( ! validNamedIdentifier && ! validListIdentifier && ! validLiteral ) {
token = getToken ( context2 , 13 , readInvalidIdentifier ( scnr ) ) ;
emitError ( CompileErrorCodes . INVALID_TOKEN_IN_PLACEHOLDER , currentPosition ( ) , 0 , token . value ) ;
skipSpaces ( scnr ) ;
return token ;
}
break ;
}
return token ;
}
function readTokenInLinked ( scnr , context2 ) {
const { currentType } = context2 ;
let token = null ;
const ch = scnr . currentChar ( ) ;
if ( ( currentType === 8 || currentType === 9 || currentType === 12 || currentType === 10 ) && ( ch === CHAR_LF || ch === CHAR_SP ) ) {
emitError ( CompileErrorCodes . INVALID_LINKED_FORMAT , currentPosition ( ) , 0 ) ;
}
switch ( ch ) {
case "@" :
scnr . next ( ) ;
token = getToken (
context2 ,
8 ,
"@"
/* LinkedAlias */
) ;
context2 . inLinked = true ;
return token ;
case "." :
skipSpaces ( scnr ) ;
scnr . next ( ) ;
return getToken (
context2 ,
9 ,
"."
/* LinkedDot */
) ;
case ":" :
skipSpaces ( scnr ) ;
scnr . next ( ) ;
return getToken (
context2 ,
10 ,
":"
/* LinkedDelimiter */
) ;
default :
if ( isPluralStart ( scnr ) ) {
token = getToken ( context2 , 1 , readPlural ( scnr ) ) ;
context2 . braceNest = 0 ;
context2 . inLinked = false ;
return token ;
}
if ( isLinkedDotStart ( scnr , context2 ) || isLinkedDelimiterStart ( scnr , context2 ) ) {
skipSpaces ( scnr ) ;
return readTokenInLinked ( scnr , context2 ) ;
}
if ( isLinkedModifierStart ( scnr , context2 ) ) {
skipSpaces ( scnr ) ;
return getToken ( context2 , 12 , readLinkedModifier ( scnr ) ) ;
}
if ( isLinkedReferStart ( scnr , context2 ) ) {
skipSpaces ( scnr ) ;
if ( ch === "{" ) {
return readTokenInPlaceholder ( scnr , context2 ) || token ;
} else {
return getToken ( context2 , 11 , readLinkedRefer ( scnr ) ) ;
}
}
if ( currentType === 8 ) {
emitError ( CompileErrorCodes . INVALID_LINKED_FORMAT , currentPosition ( ) , 0 ) ;
}
context2 . braceNest = 0 ;
context2 . inLinked = false ;
return readToken ( scnr , context2 ) ;
}
}
function readToken ( scnr , context2 ) {
let token = {
type : 14
/* EOF */
} ;
if ( context2 . braceNest > 0 ) {
return readTokenInPlaceholder ( scnr , context2 ) || getEndToken ( context2 ) ;
}
if ( context2 . inLinked ) {
return readTokenInLinked ( scnr , context2 ) || getEndToken ( context2 ) ;
}
const ch = scnr . currentChar ( ) ;
switch ( ch ) {
case "{" :
return readTokenInPlaceholder ( scnr , context2 ) || getEndToken ( context2 ) ;
case "}" :
emitError ( CompileErrorCodes . UNBALANCED_CLOSING_BRACE , currentPosition ( ) , 0 ) ;
scnr . next ( ) ;
return getToken (
context2 ,
3 ,
"}"
/* BraceRight */
) ;
case "@" :
return readTokenInLinked ( scnr , context2 ) || getEndToken ( context2 ) ;
default :
if ( isPluralStart ( scnr ) ) {
token = getToken ( context2 , 1 , readPlural ( scnr ) ) ;
context2 . braceNest = 0 ;
context2 . inLinked = false ;
return token ;
}
const { isModulo , hasSpace } = detectModuloStart ( scnr ) ;
if ( isModulo ) {
return hasSpace ? getToken ( context2 , 0 , readText ( scnr ) ) : getToken ( context2 , 4 , readModulo ( scnr ) ) ;
}
if ( isTextStart ( scnr ) ) {
return getToken ( context2 , 0 , readText ( scnr ) ) ;
}
break ;
}
return token ;
}
function nextToken ( ) {
const { currentType , offset , startLoc , endLoc } = _ context ;
_ context . lastType = currentType ;
_ context . lastOffset = offset ;
_ context . lastStartLoc = startLoc ;
_ context . lastEndLoc = endLoc ;
_ context . offset = currentOffset ( ) ;
_ context . startLoc = currentPosition ( ) ;
if ( _ scnr . currentChar ( ) === EOF ) {
return getToken (
_ context ,
14
/* EOF */
) ;
}
return readToken ( _ scnr , _ context ) ;
}
return {
nextToken ,
currentOffset ,
currentPosition ,
context
} ;
}
var ERROR_DOMAIN = "parser" ;
var KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g ;
function fromEscapeSequence ( match , codePoint4 , codePoint6 ) {
switch ( match ) {
case ` \\ \\ ` :
return ` \\ ` ;
case ` \\ ' ` :
return ` ' ` ;
default : {
const codePoint = parseInt ( codePoint4 || codePoint6 , 16 ) ;
if ( codePoint <= 55295 || codePoint >= 57344 ) {
return String . fromCodePoint ( codePoint ) ;
}
return "�" ;
}
}
}
function createParser ( options = { } ) {
const location = options . location !== false ;
const { onError } = options ;
function emitError ( tokenzer , code3 , start , offset , ... args ) {
const end = tokenzer . currentPosition ( ) ;
end . offset += offset ;
end . column += offset ;
if ( onError ) {
const loc = createLocation ( start , end ) ;
const err = createCompileError ( code3 , loc , {
domain : ERROR_DOMAIN ,
args
} ) ;
onError ( err ) ;
}
}
function startNode ( type , offset , loc ) {
const node = {
type ,
start : offset ,
end : offset
} ;
if ( location ) {
node . loc = { start : loc , end : loc } ;
}
return node ;
}
function endNode ( node , offset , pos , type ) {
node . end = offset ;
if ( type ) {
node . type = type ;
}
if ( location && node . loc ) {
node . loc . end = pos ;
}
}
function parseText ( tokenizer , value ) {
const context = tokenizer . context ( ) ;
const node = startNode ( 3 , context . offset , context . startLoc ) ;
node . value = value ;
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
function parseList ( tokenizer , index ) {
const context = tokenizer . context ( ) ;
const { lastOffset : offset , lastStartLoc : loc } = context ;
const node = startNode ( 5 , offset , loc ) ;
node . index = parseInt ( index , 10 ) ;
tokenizer . nextToken ( ) ;
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
function parseNamed ( tokenizer , key ) {
const context = tokenizer . context ( ) ;
const { lastOffset : offset , lastStartLoc : loc } = context ;
const node = startNode ( 4 , offset , loc ) ;
node . key = key ;
tokenizer . nextToken ( ) ;
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
function parseLiteral ( tokenizer , value ) {
const context = tokenizer . context ( ) ;
const { lastOffset : offset , lastStartLoc : loc } = context ;
const node = startNode ( 9 , offset , loc ) ;
node . value = value . replace ( KNOWN_ESCAPES , fromEscapeSequence ) ;
tokenizer . nextToken ( ) ;
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
function parseLinkedModifier ( tokenizer ) {
const token = tokenizer . nextToken ( ) ;
const context = tokenizer . context ( ) ;
const { lastOffset : offset , lastStartLoc : loc } = context ;
const node = startNode ( 8 , offset , loc ) ;
if ( token . type !== 12 ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_EMPTY_LINKED_MODIFIER , context . lastStartLoc , 0 ) ;
node . value = "" ;
endNode ( node , offset , loc ) ;
return {
nextConsumeToken : token ,
node
} ;
}
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
node . value = token . value || "" ;
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return {
node
} ;
}
function parseLinkedKey ( tokenizer , value ) {
const context = tokenizer . context ( ) ;
const node = startNode ( 7 , context . offset , context . startLoc ) ;
node . value = value ;
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
function parseLinked ( tokenizer ) {
const context = tokenizer . context ( ) ;
const linkedNode = startNode ( 6 , context . offset , context . startLoc ) ;
let token = tokenizer . nextToken ( ) ;
if ( token . type === 9 ) {
const parsed = parseLinkedModifier ( tokenizer ) ;
linkedNode . modifier = parsed . node ;
token = parsed . nextConsumeToken || tokenizer . nextToken ( ) ;
}
if ( token . type !== 10 ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
token = tokenizer . nextToken ( ) ;
if ( token . type === 2 ) {
token = tokenizer . nextToken ( ) ;
}
switch ( token . type ) {
case 11 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
linkedNode . key = parseLinkedKey ( tokenizer , token . value || "" ) ;
break ;
case 5 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
linkedNode . key = parseNamed ( tokenizer , token . value || "" ) ;
break ;
case 6 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
linkedNode . key = parseList ( tokenizer , token . value || "" ) ;
break ;
case 7 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
linkedNode . key = parseLiteral ( tokenizer , token . value || "" ) ;
break ;
default :
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_EMPTY_LINKED_KEY , context . lastStartLoc , 0 ) ;
const nextContext = tokenizer . context ( ) ;
const emptyLinkedKeyNode = startNode ( 7 , nextContext . offset , nextContext . startLoc ) ;
emptyLinkedKeyNode . value = "" ;
endNode ( emptyLinkedKeyNode , nextContext . offset , nextContext . startLoc ) ;
linkedNode . key = emptyLinkedKeyNode ;
endNode ( linkedNode , nextContext . offset , nextContext . startLoc ) ;
return {
nextConsumeToken : token ,
node : linkedNode
} ;
}
endNode ( linkedNode , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return {
node : linkedNode
} ;
}
function parseMessage ( tokenizer ) {
const context = tokenizer . context ( ) ;
const startOffset = context . currentType === 1 ? tokenizer . currentOffset ( ) : context . offset ;
const startLoc = context . currentType === 1 ? context . endLoc : context . startLoc ;
const node = startNode ( 2 , startOffset , startLoc ) ;
node . items = [ ] ;
let nextToken = null ;
do {
const token = nextToken || tokenizer . nextToken ( ) ;
nextToken = null ;
switch ( token . type ) {
case 0 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
node . items . push ( parseText ( tokenizer , token . value || "" ) ) ;
break ;
case 6 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
node . items . push ( parseList ( tokenizer , token . value || "" ) ) ;
break ;
case 5 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
node . items . push ( parseNamed ( tokenizer , token . value || "" ) ) ;
break ;
case 7 :
if ( token . value == null ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , getTokenCaption ( token ) ) ;
}
node . items . push ( parseLiteral ( tokenizer , token . value || "" ) ) ;
break ;
case 8 :
const parsed = parseLinked ( tokenizer ) ;
node . items . push ( parsed . node ) ;
nextToken = parsed . nextConsumeToken || null ;
break ;
}
} while ( context . currentType !== 14 && context . currentType !== 1 ) ;
const endOffset = context . currentType === 1 ? context . lastOffset : tokenizer . currentOffset ( ) ;
const endLoc = context . currentType === 1 ? context . lastEndLoc : tokenizer . currentPosition ( ) ;
endNode ( node , endOffset , endLoc ) ;
return node ;
}
function parsePlural ( tokenizer , offset , loc , msgNode ) {
const context = tokenizer . context ( ) ;
let hasEmptyMessage = msgNode . items . length === 0 ;
const node = startNode ( 1 , offset , loc ) ;
node . cases = [ ] ;
node . cases . push ( msgNode ) ;
do {
const msg = parseMessage ( tokenizer ) ;
if ( ! hasEmptyMessage ) {
hasEmptyMessage = msg . items . length === 0 ;
}
node . cases . push ( msg ) ;
} while ( context . currentType !== 14 ) ;
if ( hasEmptyMessage ) {
emitError ( tokenizer , CompileErrorCodes . MUST_HAVE_MESSAGES_IN_PLURAL , loc , 0 ) ;
}
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
function parseResource ( tokenizer ) {
const context = tokenizer . context ( ) ;
const { offset , startLoc } = context ;
const msgNode = parseMessage ( tokenizer ) ;
if ( context . currentType === 14 ) {
return msgNode ;
} else {
return parsePlural ( tokenizer , offset , startLoc , msgNode ) ;
}
}
function parse2 ( source ) {
const tokenizer = createTokenizer ( source , assign ( { } , options ) ) ;
const context = tokenizer . context ( ) ;
const node = startNode ( 0 , context . offset , context . startLoc ) ;
if ( location && node . loc ) {
node . loc . source = source ;
}
node . body = parseResource ( tokenizer ) ;
if ( context . currentType !== 14 ) {
emitError ( tokenizer , CompileErrorCodes . UNEXPECTED_LEXICAL_ANALYSIS , context . lastStartLoc , 0 , source [ context . offset ] || "" ) ;
}
endNode ( node , tokenizer . currentOffset ( ) , tokenizer . currentPosition ( ) ) ;
return node ;
}
return { parse : parse2 } ;
}
function getTokenCaption ( token ) {
if ( token . type === 14 ) {
return "EOF" ;
}
const name = ( token . value || "" ) . replace ( /\r?\n/gu , "\\n" ) ;
return name . length > 10 ? name . slice ( 0 , 9 ) + "…" : name ;
}
function createTransformer ( ast , options = { } ) {
const _ context = {
ast ,
helpers : /* @__PURE__ */ new Set ( )
} ;
const context = ( ) => _ context ;
const helper = ( name ) => {
_ context . helpers . add ( name ) ;
return name ;
} ;
return { context , helper } ;
}
function traverseNodes ( nodes , transformer ) {
for ( let i = 0 ; i < nodes . length ; i ++ ) {
traverseNode ( nodes [ i ] , transformer ) ;
}
}
function traverseNode ( node , transformer ) {
switch ( node . type ) {
case 1 :
traverseNodes ( node . cases , transformer ) ;
transformer . helper (
"plural"
/* PLURAL */
) ;
break ;
case 2 :
traverseNodes ( node . items , transformer ) ;
break ;
case 6 :
const linked = node ;
traverseNode ( linked . key , transformer ) ;
transformer . helper (
"linked"
/* LINKED */
) ;
transformer . helper (
"type"
/* TYPE */
) ;
break ;
case 5 :
transformer . helper (
"interpolate"
/* INTERPOLATE */
) ;
transformer . helper (
"list"
/* LIST */
) ;
break ;
case 4 :
transformer . helper (
"interpolate"
/* INTERPOLATE */
) ;
transformer . helper (
"named"
/* NAMED */
) ;
break ;
}
}
function transform ( ast , options = { } ) {
const transformer = createTransformer ( ast ) ;
transformer . helper (
"normalize"
/* NORMALIZE */
) ;
ast . body && traverseNode ( ast . body , transformer ) ;
const context = transformer . context ( ) ;
ast . helpers = Array . from ( context . helpers ) ;
}
function createCodeGenerator ( ast , options ) {
const { sourceMap , filename , breakLineCode , needIndent : _ needIndent } = options ;
const _ context = {
source : ast . loc . source ,
filename ,
code : "" ,
column : 1 ,
line : 1 ,
offset : 0 ,
map : void 0 ,
breakLineCode ,
needIndent : _ needIndent ,
indentLevel : 0
} ;
const context = ( ) => _ context ;
function push ( code3 , node ) {
_ context . code += code3 ;
}
function _ newline ( n , withBreakLine = true ) {
const _ breakLineCode = withBreakLine ? breakLineCode : "" ;
push ( _ needIndent ? _ breakLineCode + ` ` . repeat ( n ) : _ breakLineCode ) ;
}
function indent ( withNewLine = true ) {
const level = ++ _ context . indentLevel ;
withNewLine && _ newline ( level ) ;
}
function deindent ( withNewLine = true ) {
const level = -- _ context . indentLevel ;
withNewLine && _ newline ( level ) ;
}
function newline ( ) {
_ newline ( _ context . indentLevel ) ;
}
const helper = ( key ) => ` _ ${ key } ` ;
const needIndent = ( ) => _ context . needIndent ;
return {
context ,
push ,
indent ,
deindent ,
newline ,
helper ,
needIndent
} ;
}
function generateLinkedNode ( generator , node ) {
const { helper } = generator ;
generator . push ( ` ${ helper (
"linked"
/* LINKED */
) } ( ` );
generateNode ( generator , node . key ) ;
if ( node . modifier ) {
generator . push ( ` , ` ) ;
generateNode ( generator , node . modifier ) ;
generator . push ( ` , _type ` ) ;
} else {
generator . push ( ` , undefined, _type ` ) ;
}
generator . push ( ` ) ` ) ;
}
function generateMessageNode ( generator , node ) {
const { helper , needIndent } = generator ;
generator . push ( ` ${ helper (
"normalize"
/* NORMALIZE */
) } ( [ ` );
generator . indent ( needIndent ( ) ) ;
const length = node . items . length ;
for ( let i = 0 ; i < length ; i ++ ) {
generateNode ( generator , node . items [ i ] ) ;
if ( i === length - 1 ) {
break ;
}
generator . push ( ", " ) ;
}
generator . deindent ( needIndent ( ) ) ;
generator . push ( "])" ) ;
}
function generatePluralNode ( generator , node ) {
const { helper , needIndent } = generator ;
if ( node . cases . length > 1 ) {
generator . push ( ` ${ helper (
"plural"
/* PLURAL */
) } ( [ ` );
generator . indent ( needIndent ( ) ) ;
const length = node . cases . length ;
for ( let i = 0 ; i < length ; i ++ ) {
generateNode ( generator , node . cases [ i ] ) ;
if ( i === length - 1 ) {
break ;
}
generator . push ( ", " ) ;
}
generator . deindent ( needIndent ( ) ) ;
generator . push ( ` ]) ` ) ;
}
}
function generateResource ( generator , node ) {
if ( node . body ) {
generateNode ( generator , node . body ) ;
} else {
generator . push ( "null" ) ;
}
}
function generateNode ( generator , node ) {
const { helper } = generator ;
switch ( node . type ) {
case 0 :
generateResource ( generator , node ) ;
break ;
case 1 :
generatePluralNode ( generator , node ) ;
break ;
case 2 :
generateMessageNode ( generator , node ) ;
break ;
case 6 :
generateLinkedNode ( generator , node ) ;
break ;
case 8 :
generator . push ( JSON . stringify ( node . value ) , node ) ;
break ;
case 7 :
generator . push ( JSON . stringify ( node . value ) , node ) ;
break ;
case 5 :
generator . push ( ` ${ helper (
"interpolate"
/* INTERPOLATE */
) } ( $ { helper (
"list"
/* LIST */
) } ( $ { node . index } ) ) ` , node);
break ;
case 4 :
generator . push ( ` ${ helper (
"interpolate"
/* INTERPOLATE */
) } ( $ { helper (
"named"
/* NAMED */
) } ( $ { JSON . stringify ( node . key ) } ) ) ` , node);
break ;
case 9 :
generator . push ( JSON . stringify ( node . value ) , node ) ;
break ;
case 3 :
generator . push ( JSON . stringify ( node . value ) , node ) ;
break ;
default :
if ( true ) {
throw new Error ( ` unhandled codegen node type: ${ node . type } ` ) ;
}
}
}
var generate = ( ast , options = { } ) => {
const mode = isString ( options . mode ) ? options . mode : "normal" ;
const filename = isString ( options . filename ) ? options . filename : "message.intl" ;
const sourceMap = ! ! options . sourceMap ;
const breakLineCode = options . breakLineCode != null ? options . breakLineCode : mode === "arrow" ? ";" : "\n" ;
const needIndent = options . needIndent ? options . needIndent : mode !== "arrow" ;
const helpers = ast . helpers || [ ] ;
const generator = createCodeGenerator ( ast , {
mode ,
filename ,
sourceMap ,
breakLineCode ,
needIndent
} ) ;
generator . push ( mode === "normal" ? ` function __msg__ (ctx) { ` : ` (ctx) => { ` ) ;
generator . indent ( needIndent ) ;
if ( helpers . length > 0 ) {
generator . push ( ` const { ${ helpers . map ( ( s ) => ` ${ s } : _ ${ s } ` ) . join ( ", " ) } } = ctx ` ) ;
generator . newline ( ) ;
}
generator . push ( ` return ` ) ;
generateNode ( generator , ast ) ;
generator . deindent ( needIndent ) ;
generator . push ( ` } ` ) ;
const { code : code3 , map } = generator . context ( ) ;
return {
ast ,
code : code3 ,
map : map ? map . toJSON ( ) : void 0
// eslint-disable-line @typescript-eslint/no-explicit-any
} ;
} ;
function baseCompile ( source , options = { } ) {
const assignedOptions = assign ( { } , options ) ;
const parser = createParser ( assignedOptions ) ;
const ast = parser . parse ( source ) ;
transform ( ast , assignedOptions ) ;
return generate ( ast , assignedOptions ) ;
}
// node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js
var IntlifyDevToolsHooks = {
I18nInit : "i18n:init" ,
FunctionTranslate : "function:translate"
} ;
// node_modules/@intlify/core-base/dist/core-base.esm-bundler.js
var pathStateMachine = [ ] ;
pathStateMachine [
0
/* BEFORE_PATH */
] = {
[
"w"
/* WORKSPACE */
] : [
0
/* BEFORE_PATH */
] ,
[
"i"
/* IDENT */
] : [
3 ,
0
/* APPEND */
] ,
[
"["
/* LEFT_BRACKET */
] : [
4
/* IN_SUB_PATH */
] ,
[
"o"
/* END_OF_FAIL */
] : [
7
/* AFTER_PATH */
]
} ;
pathStateMachine [
1
/* IN_PATH */
] = {
[
"w"
/* WORKSPACE */
] : [
1
/* IN_PATH */
] ,
[
"."
/* DOT */
] : [
2
/* BEFORE_IDENT */
] ,
[
"["
/* LEFT_BRACKET */
] : [
4
/* IN_SUB_PATH */
] ,
[
"o"
/* END_OF_FAIL */
] : [
7
/* AFTER_PATH */
]
} ;
pathStateMachine [
2
/* BEFORE_IDENT */
] = {
[
"w"
/* WORKSPACE */
] : [
2
/* BEFORE_IDENT */
] ,
[
"i"
/* IDENT */
] : [
3 ,
0
/* APPEND */
] ,
[
"0"
/* ZERO */
] : [
3 ,
0
/* APPEND */
]
} ;
pathStateMachine [
3
/* IN_IDENT */
] = {
[
"i"
/* IDENT */
] : [
3 ,
0
/* APPEND */
] ,
[
"0"
/* ZERO */
] : [
3 ,
0
/* APPEND */
] ,
[
"w"
/* WORKSPACE */
] : [
1 ,
1
/* PUSH */
] ,
[
"."
/* DOT */
] : [
2 ,
1
/* PUSH */
] ,
[
"["
/* LEFT_BRACKET */
] : [
4 ,
1
/* PUSH */
] ,
[
"o"
/* END_OF_FAIL */
] : [
7 ,
1
/* PUSH */
]
} ;
pathStateMachine [
4
/* IN_SUB_PATH */
] = {
[
"'"
/* SINGLE_QUOTE */
] : [
5 ,
0
/* APPEND */
] ,
[
'"'
/* DOUBLE_QUOTE */
] : [
6 ,
0
/* APPEND */
] ,
[
"["
/* LEFT_BRACKET */
] : [
4 ,
2
/* INC_SUB_PATH_DEPTH */
] ,
[
"]"
/* RIGHT_BRACKET */
] : [
1 ,
3
/* PUSH_SUB_PATH */
] ,
[
"o"
/* END_OF_FAIL */
] : 8 ,
[
"l"
/* ELSE */
] : [
4 ,
0
/* APPEND */
]
} ;
pathStateMachine [
5
/* IN_SINGLE_QUOTE */
] = {
[
"'"
/* SINGLE_QUOTE */
] : [
4 ,
0
/* APPEND */
] ,
[
"o"
/* END_OF_FAIL */
] : 8 ,
[
"l"
/* ELSE */
] : [
5 ,
0
/* APPEND */
]
} ;
pathStateMachine [
6
/* IN_DOUBLE_QUOTE */
] = {
[
'"'
/* DOUBLE_QUOTE */
] : [
4 ,
0
/* APPEND */
] ,
[
"o"
/* END_OF_FAIL */
] : 8 ,
[
"l"
/* ELSE */
] : [
6 ,
0
/* APPEND */
]
} ;
var literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/ ;
function isLiteral ( exp ) {
return literalValueRE . test ( exp ) ;
}
function stripQuotes ( str ) {
const a = str . charCodeAt ( 0 ) ;
const b = str . charCodeAt ( str . length - 1 ) ;
return a === b && ( a === 34 || a === 39 ) ? str . slice ( 1 , - 1 ) : str ;
}
function getPathCharType ( ch ) {
if ( ch === void 0 || ch === null ) {
return "o" ;
}
const code3 = ch . charCodeAt ( 0 ) ;
switch ( code3 ) {
case 91 :
case 93 :
case 46 :
case 34 :
case 39 :
return ch ;
case 95 :
case 36 :
case 45 :
return "i" ;
case 9 :
case 10 :
case 13 :
case 160 :
case 65279 :
case 8232 :
case 8233 :
return "w" ;
}
return "i" ;
}
function formatSubPath ( path ) {
const trimmed = path . trim ( ) ;
if ( path . charAt ( 0 ) === "0" && isNaN ( parseInt ( path ) ) ) {
return false ;
}
return isLiteral ( trimmed ) ? stripQuotes ( trimmed ) : "*" + trimmed ;
}
function parse ( path ) {
const keys = [ ] ;
let index = - 1 ;
let mode = 0 ;
let subPathDepth = 0 ;
let c ;
let key ;
let newChar ;
let type ;
let transition ;
let action ;
let typeMap ;
const actions = [ ] ;
actions [
0
/* APPEND */
] = ( ) => {
if ( key === void 0 ) {
key = newChar ;
} else {
key += newChar ;
}
} ;
actions [
1
/* PUSH */
] = ( ) => {
if ( key !== void 0 ) {
keys . push ( key ) ;
key = void 0 ;
}
} ;
actions [
2
/* INC_SUB_PATH_DEPTH */
] = ( ) => {
actions [
0
/* APPEND */
] ( ) ;
subPathDepth ++ ;
} ;
actions [
3
/* PUSH_SUB_PATH */
] = ( ) => {
if ( subPathDepth > 0 ) {
subPathDepth -- ;
mode = 4 ;
actions [
0
/* APPEND */
] ( ) ;
} else {
subPathDepth = 0 ;
if ( key === void 0 ) {
return false ;
}
key = formatSubPath ( key ) ;
if ( key === false ) {
return false ;
} else {
actions [
1
/* PUSH */
] ( ) ;
}
}
} ;
function maybeUnescapeQuote ( ) {
const nextChar = path [ index + 1 ] ;
if ( mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"' ) {
index ++ ;
newChar = "\\" + nextChar ;
actions [
0
/* APPEND */
] ( ) ;
return true ;
}
}
while ( mode !== null ) {
index ++ ;
c = path [ index ] ;
if ( c === "\\" && maybeUnescapeQuote ( ) ) {
continue ;
}
type = getPathCharType ( c ) ;
typeMap = pathStateMachine [ mode ] ;
transition = typeMap [ type ] || typeMap [
"l"
/* ELSE */
] || 8 ;
if ( transition === 8 ) {
return ;
}
mode = transition [ 0 ] ;
if ( transition [ 1 ] !== void 0 ) {
action = actions [ transition [ 1 ] ] ;
if ( action ) {
newChar = c ;
if ( action ( ) === false ) {
return ;
}
}
}
if ( mode === 7 ) {
return keys ;
}
}
}
var cache = /* @__PURE__ */ new Map ( ) ;
function resolveWithKeyValue ( obj , path ) {
return isObject ( obj ) ? obj [ path ] : null ;
}
function resolveValue ( obj , path ) {
if ( ! isObject ( obj ) ) {
return null ;
}
let hit = cache . get ( path ) ;
if ( ! hit ) {
hit = parse ( path ) ;
if ( hit ) {
cache . set ( path , hit ) ;
}
}
if ( ! hit ) {
return null ;
}
const len = hit . length ;
let last = obj ;
let i = 0 ;
while ( i < len ) {
const val = last [ hit [ i ] ] ;
if ( val === void 0 ) {
return null ;
}
last = val ;
i ++ ;
}
return last ;
}
var DEFAULT_MODIFIER = ( str ) => str ;
var DEFAULT_MESSAGE = ( ctx ) => "" ;
var DEFAULT_MESSAGE_DATA_TYPE = "text" ;
var DEFAULT_NORMALIZE = ( values ) => values . length === 0 ? "" : values . join ( "" ) ;
var DEFAULT_INTERPOLATE = toDisplayString ;
function pluralDefault ( choice , choicesLength ) {
choice = Math . abs ( choice ) ;
if ( choicesLength === 2 ) {
return choice ? choice > 1 ? 1 : 0 : 1 ;
}
return choice ? Math . min ( choice , 2 ) : 0 ;
}
function getPluralIndex ( options ) {
const index = isNumber ( options . pluralIndex ) ? options . pluralIndex : - 1 ;
return options . named && ( isNumber ( options . named . count ) || isNumber ( options . named . n ) ) ? isNumber ( options . named . count ) ? options . named . count : isNumber ( options . named . n ) ? options . named . n : index : index ;
}
function normalizeNamed ( pluralIndex , props ) {
if ( ! props . count ) {
props . count = pluralIndex ;
}
if ( ! props . n ) {
props . n = pluralIndex ;
}
}
function createMessageContext ( options = { } ) {
const locale = options . locale ;
const pluralIndex = getPluralIndex ( options ) ;
const pluralRule = isObject ( options . pluralRules ) && isString ( locale ) && isFunction ( options . pluralRules [ locale ] ) ? options . pluralRules [ locale ] : pluralDefault ;
const orgPluralRule = isObject ( options . pluralRules ) && isString ( locale ) && isFunction ( options . pluralRules [ locale ] ) ? pluralDefault : void 0 ;
const plural = ( messages ) => {
return messages [ pluralRule ( pluralIndex , messages . length , orgPluralRule ) ] ;
} ;
const _ list = options . list || [ ] ;
const list = ( index ) => _ list [ index ] ;
const _ named = options . named || { } ;
isNumber ( options . pluralIndex ) && normalizeNamed ( pluralIndex , _ named ) ;
const named = ( key ) => _ named [ key ] ;
function message ( key ) {
const msg = isFunction ( options . messages ) ? options . messages ( key ) : isObject ( options . messages ) ? options . messages [ key ] : false ;
return ! msg ? options . parent ? options . parent . message ( key ) : DEFAULT_MESSAGE : msg ;
}
const _ modifier = ( name ) => options . modifiers ? options . modifiers [ name ] : DEFAULT_MODIFIER ;
const normalize = isPlainObject ( options . processor ) && isFunction ( options . processor . normalize ) ? options . processor . normalize : DEFAULT_NORMALIZE ;
const interpolate = isPlainObject ( options . processor ) && isFunction ( options . processor . interpolate ) ? options . processor . interpolate : DEFAULT_INTERPOLATE ;
const type = isPlainObject ( options . processor ) && isString ( options . processor . type ) ? options . processor . type : DEFAULT_MESSAGE_DATA_TYPE ;
const linked = ( key , ... args ) => {
const [ arg1 , arg2 ] = args ;
let type2 = "text" ;
let modifier = "" ;
if ( args . length === 1 ) {
if ( isObject ( arg1 ) ) {
modifier = arg1 . modifier || modifier ;
type2 = arg1 . type || type2 ;
} else if ( isString ( arg1 ) ) {
modifier = arg1 || modifier ;
}
} else if ( args . length === 2 ) {
if ( isString ( arg1 ) ) {
modifier = arg1 || modifier ;
}
if ( isString ( arg2 ) ) {
type2 = arg2 || type2 ;
}
}
let msg = message ( key ) ( ctx ) ;
if ( type2 === "vnode" && isArray ( msg ) && modifier ) {
msg = msg [ 0 ] ;
}
return modifier ? _ modifier ( modifier ) ( msg , type2 ) : msg ;
} ;
const ctx = {
[
"list"
/* LIST */
] : list ,
[
"named"
/* NAMED */
] : named ,
[
"plural"
/* PLURAL */
] : plural ,
[
"linked"
/* LINKED */
] : linked ,
[
"message"
/* MESSAGE */
] : message ,
[
"type"
/* TYPE */
] : type ,
[
"interpolate"
/* INTERPOLATE */
] : interpolate ,
[
"normalize"
/* NORMALIZE */
] : normalize
} ;
return ctx ;
}
var devtools = null ;
function setDevToolsHook ( hook ) {
devtools = hook ;
}
function initI18nDevTools ( i18n , version , meta ) {
devtools && devtools . emit ( IntlifyDevToolsHooks . I18nInit , {
timestamp : Date . now ( ) ,
i18n ,
version ,
meta
} ) ;
}
var translateDevTools = createDevToolsHook ( IntlifyDevToolsHooks . FunctionTranslate ) ;
function createDevToolsHook ( hook ) {
return ( payloads ) => devtools && devtools . emit ( hook , payloads ) ;
}
var CoreWarnCodes = {
NOT_FOUND_KEY : 1 ,
FALLBACK_TO_TRANSLATE : 2 ,
CANNOT_FORMAT_NUMBER : 3 ,
FALLBACK_TO_NUMBER_FORMAT : 4 ,
CANNOT_FORMAT_DATE : 5 ,
FALLBACK_TO_DATE_FORMAT : 6 ,
__ EXTEND_POINT__ : 7
} ;
var warnMessages = {
[ CoreWarnCodes . NOT_FOUND_KEY ] : ` Not found '{key}' key in '{locale}' locale messages. ` ,
[ CoreWarnCodes . FALLBACK_TO_TRANSLATE ] : ` Fall back to translate '{key}' key with '{target}' locale. ` ,
[ CoreWarnCodes . CANNOT_FORMAT_NUMBER ] : ` Cannot format a number value due to not supported Intl.NumberFormat. ` ,
[ CoreWarnCodes . FALLBACK_TO_NUMBER_FORMAT ] : ` Fall back to number format '{key}' key with '{target}' locale. ` ,
[ CoreWarnCodes . CANNOT_FORMAT_DATE ] : ` Cannot format a date value due to not supported Intl.DateTimeFormat. ` ,
[ CoreWarnCodes . FALLBACK_TO_DATE_FORMAT ] : ` Fall back to datetime format '{key}' key with '{target}' locale. `
} ;
function getWarnMessage ( code3 , ... args ) {
return format ( warnMessages [ code3 ] , ... args ) ;
}
function fallbackWithSimple ( ctx , fallback , start ) {
return [ ... /* @__PURE__ */ new Set ( [
start ,
... isArray ( fallback ) ? fallback : isObject ( fallback ) ? Object . keys ( fallback ) : isString ( fallback ) ? [ fallback ] : [ start ]
] ) ] ;
}
function fallbackWithLocaleChain ( ctx , fallback , start ) {
const startLocale = isString ( start ) ? start : DEFAULT_LOCALE ;
const context = ctx ;
if ( ! context . __ localeChainCache ) {
context . __ localeChainCache = /* @__PURE__ */ new Map ( ) ;
}
let chain = context . __ localeChainCache . get ( startLocale ) ;
if ( ! chain ) {
chain = [ ] ;
let block = [ start ] ;
while ( isArray ( block ) ) {
block = appendBlockToChain ( chain , block , fallback ) ;
}
const defaults = isArray ( fallback ) || ! isPlainObject ( fallback ) ? fallback : fallback [ "default" ] ? fallback [ "default" ] : null ;
block = isString ( defaults ) ? [ defaults ] : defaults ;
if ( isArray ( block ) ) {
appendBlockToChain ( chain , block , false ) ;
}
context . __ localeChainCache . set ( startLocale , chain ) ;
}
return chain ;
}
function appendBlockToChain ( chain , block , blocks ) {
let follow = true ;
for ( let i = 0 ; i < block . length && isBoolean ( follow ) ; i ++ ) {
const locale = block [ i ] ;
if ( isString ( locale ) ) {
follow = appendLocaleToChain ( chain , block [ i ] , blocks ) ;
}
}
return follow ;
}
function appendLocaleToChain ( chain , locale , blocks ) {
let follow ;
const tokens = locale . split ( "-" ) ;
do {
const target = tokens . join ( "-" ) ;
follow = appendItemToChain ( chain , target , blocks ) ;
tokens . splice ( - 1 , 1 ) ;
} while ( tokens . length && follow === true ) ;
return follow ;
}
function appendItemToChain ( chain , target , blocks ) {
let follow = false ;
if ( ! chain . includes ( target ) ) {
follow = true ;
if ( target ) {
follow = target [ target . length - 1 ] !== "!" ;
const locale = target . replace ( /!/g , "" ) ;
chain . push ( locale ) ;
if ( ( isArray ( blocks ) || isPlainObject ( blocks ) ) && blocks [ locale ] ) {
follow = blocks [ locale ] ;
}
}
}
return follow ;
}
var VERSION = "9.2.2" ;
var NOT_REOSLVED = - 1 ;
var DEFAULT_LOCALE = "en-US" ;
var MISSING_RESOLVE_VALUE = "" ;
var capitalize = ( str ) => ` ${ str . charAt ( 0 ) . toLocaleUpperCase ( ) } ${ str . substr ( 1 ) } ` ;
function getDefaultLinkedModifiers ( ) {
return {
upper : ( val , type ) => {
return type === "text" && isString ( val ) ? val . toUpperCase ( ) : type === "vnode" && isObject ( val ) && "__v_isVNode" in val ? val . children . toUpperCase ( ) : val ;
} ,
lower : ( val , type ) => {
return type === "text" && isString ( val ) ? val . toLowerCase ( ) : type === "vnode" && isObject ( val ) && "__v_isVNode" in val ? val . children . toLowerCase ( ) : val ;
} ,
capitalize : ( val , type ) => {
return type === "text" && isString ( val ) ? capitalize ( val ) : type === "vnode" && isObject ( val ) && "__v_isVNode" in val ? capitalize ( val . children ) : val ;
}
} ;
}
var _ compiler ;
function registerMessageCompiler ( compiler ) {
_ compiler = compiler ;
}
var _ resolver ;
function registerMessageResolver ( resolver ) {
_ resolver = resolver ;
}
var _ fallbacker ;
function registerLocaleFallbacker ( fallbacker ) {
_ fallbacker = fallbacker ;
}
var _ additionalMeta = null ;
var setAdditionalMeta = ( meta ) => {
_ additionalMeta = meta ;
} ;
var getAdditionalMeta = ( ) => _ additionalMeta ;
var _ fallbackContext = null ;
var setFallbackContext = ( context ) => {
_ fallbackContext = context ;
} ;
var getFallbackContext = ( ) => _ fallbackContext ;
var _ cid = 0 ;
function createCoreContext ( options = { } ) {
const version = isString ( options . version ) ? options . version : VERSION ;
const locale = isString ( options . locale ) ? options . locale : DEFAULT_LOCALE ;
const fallbackLocale = isArray ( options . fallbackLocale ) || isPlainObject ( options . fallbackLocale ) || isString ( options . fallbackLocale ) || options . fallbackLocale === false ? options . fallbackLocale : locale ;
const messages = isPlainObject ( options . messages ) ? options . messages : { [ locale ] : { } } ;
const datetimeFormats = isPlainObject ( options . datetimeFormats ) ? options . datetimeFormats : { [ locale ] : { } } ;
const numberFormats = isPlainObject ( options . numberFormats ) ? options . numberFormats : { [ locale ] : { } } ;
const modifiers = assign ( { } , options . modifiers || { } , getDefaultLinkedModifiers ( ) ) ;
const pluralRules = options . pluralRules || { } ;
const missing = isFunction ( options . missing ) ? options . missing : null ;
const missingWarn = isBoolean ( options . missingWarn ) || isRegExp ( options . missingWarn ) ? options . missingWarn : true ;
const fallbackWarn = isBoolean ( options . fallbackWarn ) || isRegExp ( options . fallbackWarn ) ? options . fallbackWarn : true ;
const fallbackFormat = ! ! options . fallbackFormat ;
const unresolving = ! ! options . unresolving ;
const postTranslation = isFunction ( options . postTranslation ) ? options . postTranslation : null ;
const processor = isPlainObject ( options . processor ) ? options . processor : null ;
const warnHtmlMessage = isBoolean ( options . warnHtmlMessage ) ? options . warnHtmlMessage : true ;
const escapeParameter = ! ! options . escapeParameter ;
const messageCompiler = isFunction ( options . messageCompiler ) ? options . messageCompiler : _ compiler ;
const messageResolver = isFunction ( options . messageResolver ) ? options . messageResolver : _ resolver || resolveWithKeyValue ;
const localeFallbacker = isFunction ( options . localeFallbacker ) ? options . localeFallbacker : _ fallbacker || fallbackWithSimple ;
const fallbackContext = isObject ( options . fallbackContext ) ? options . fallbackContext : void 0 ;
const onWarn = isFunction ( options . onWarn ) ? options . onWarn : warn ;
const internalOptions = options ;
const __ datetimeFormatters = isObject ( internalOptions . __ datetimeFormatters ) ? internalOptions . __ datetimeFormatters : /* @__PURE__ */ new Map ( ) ;
const __ numberFormatters = isObject ( internalOptions . __ numberFormatters ) ? internalOptions . __ numberFormatters : /* @__PURE__ */ new Map ( ) ;
const __ meta = isObject ( internalOptions . __ meta ) ? internalOptions . __ meta : { } ;
_ cid ++ ;
const context = {
version ,
cid : _ cid ,
locale ,
fallbackLocale ,
messages ,
modifiers ,
pluralRules ,
missing ,
missingWarn ,
fallbackWarn ,
fallbackFormat ,
unresolving ,
postTranslation ,
processor ,
warnHtmlMessage ,
escapeParameter ,
messageCompiler ,
messageResolver ,
localeFallbacker ,
fallbackContext ,
onWarn ,
__ meta
} ;
{
context . datetimeFormats = datetimeFormats ;
context . numberFormats = numberFormats ;
context . __ datetimeFormatters = __ datetimeFormatters ;
context . __ numberFormatters = __ numberFormatters ;
}
if ( true ) {
context . __ v_emitter = internalOptions . __ v_emitter != null ? internalOptions . __ v_emitter : void 0 ;
}
if ( true ) {
initI18nDevTools ( context , version , __ meta ) ;
}
return context ;
}
function isTranslateFallbackWarn ( fallback , key ) {
return fallback instanceof RegExp ? fallback . test ( key ) : fallback ;
}
function isTranslateMissingWarn ( missing , key ) {
return missing instanceof RegExp ? missing . test ( key ) : missing ;
}
function handleMissing ( context , key , locale , missingWarn , type ) {
const { missing , onWarn } = context ;
if ( true ) {
const emitter = context . __ v_emitter ;
if ( emitter ) {
emitter . emit ( "missing" , {
locale ,
key ,
type ,
groupId : ` ${ type } : ${ key } `
} ) ;
}
}
if ( missing !== null ) {
const ret = missing ( context , locale , key , type ) ;
return isString ( ret ) ? ret : key ;
} else {
if ( isTranslateMissingWarn ( missingWarn , key ) ) {
onWarn ( getWarnMessage ( CoreWarnCodes . NOT_FOUND_KEY , { key , locale } ) ) ;
}
return key ;
}
}
function updateFallbackLocale ( ctx , locale , fallback ) {
const context = ctx ;
context . __ localeChainCache = /* @__PURE__ */ new Map ( ) ;
ctx . localeFallbacker ( ctx , fallback , locale ) ;
}
var RE_HTML_TAG = /<\/?[\w\s="/.':;#-\/]+>/ ;
var WARN_MESSAGE = ` Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS. ` ;
function checkHtmlMessage ( source , options ) {
const warnHtmlMessage = isBoolean ( options . warnHtmlMessage ) ? options . warnHtmlMessage : true ;
if ( warnHtmlMessage && RE_HTML_TAG . test ( source ) ) {
warn ( format ( WARN_MESSAGE , { source } ) ) ;
}
}
var defaultOnCacheKey = ( source ) => source ;
var compileCache = /* @__PURE__ */ Object . create ( null ) ;
function compileToFunction ( source , options = { } ) {
{
checkHtmlMessage ( source , options ) ;
const onCacheKey = options . onCacheKey || defaultOnCacheKey ;
const key = onCacheKey ( source ) ;
const cached = compileCache [ key ] ;
if ( cached ) {
return cached ;
}
let occurred = false ;
const onError = options . onError || defaultOnError ;
options . onError = ( err ) => {
occurred = true ;
onError ( err ) ;
} ;
const { code : code3 } = baseCompile ( source , options ) ;
const msg = new Function ( ` return ${ code3 } ` ) ( ) ;
return ! occurred ? compileCache [ key ] = msg : msg ;
}
}
var code = CompileErrorCodes . __ EXTEND_POINT__ ;
var inc = ( ) => ++ code ;
var CoreErrorCodes = {
INVALID_ARGUMENT : code ,
INVALID_DATE_ARGUMENT : inc ( ) ,
INVALID_ISO_DATE_ARGUMENT : inc ( ) ,
__ EXTEND_POINT__ : inc ( )
// 18
} ;
function createCoreError ( code3 ) {
return createCompileError ( code3 , null , true ? { messages : errorMessages2 } : void 0 ) ;
}
var errorMessages2 = {
[ CoreErrorCodes . INVALID_ARGUMENT ] : "Invalid arguments" ,
[ CoreErrorCodes . INVALID_DATE_ARGUMENT ] : "The date provided is an invalid Date object.Make sure your Date represents a valid date." ,
[ CoreErrorCodes . INVALID_ISO_DATE_ARGUMENT ] : "The argument provided is not a valid ISO date string"
} ;
var NOOP_MESSAGE_FUNCTION = ( ) => "" ;
var isMessageFunction = ( val ) => isFunction ( val ) ;
function translate ( context , ... args ) {
const { fallbackFormat , postTranslation , unresolving , messageCompiler , fallbackLocale , messages } = context ;
const [ key , options ] = parseTranslateArgs ( ... args ) ;
const missingWarn = isBoolean ( options . missingWarn ) ? options . missingWarn : context . missingWarn ;
const fallbackWarn = isBoolean ( options . fallbackWarn ) ? options . fallbackWarn : context . fallbackWarn ;
const escapeParameter = isBoolean ( options . escapeParameter ) ? options . escapeParameter : context . escapeParameter ;
const resolvedMessage = ! ! options . resolvedMessage ;
const defaultMsgOrKey = isString ( options . default ) || isBoolean ( options . default ) ? ! isBoolean ( options . default ) ? options . default : ! messageCompiler ? ( ) => key : key : fallbackFormat ? ! messageCompiler ? ( ) => key : key : "" ;
const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== "" ;
const locale = isString ( options . locale ) ? options . locale : context . locale ;
escapeParameter && escapeParams ( options ) ;
let [ formatScope , targetLocale , message ] = ! resolvedMessage ? resolveMessageFormat ( context , key , locale , fallbackLocale , fallbackWarn , missingWarn ) : [
key ,
locale ,
messages [ locale ] || { }
] ;
let format2 = formatScope ;
let cacheBaseKey = key ;
if ( ! resolvedMessage && ! ( isString ( format2 ) || isMessageFunction ( format2 ) ) ) {
if ( enableDefaultMsg ) {
format2 = defaultMsgOrKey ;
cacheBaseKey = format2 ;
}
}
if ( ! resolvedMessage && ( ! ( isString ( format2 ) || isMessageFunction ( format2 ) ) || ! isString ( targetLocale ) ) ) {
return unresolving ? NOT_REOSLVED : key ;
}
if ( isString ( format2 ) && context . messageCompiler == null ) {
warn ( ` The message format compilation is not supported in this build. Because message compiler isn't included. You need to pre-compilation all message format. So translate function return ' ${ key } '. ` ) ;
return key ;
}
let occurred = false ;
const errorDetector = ( ) => {
occurred = true ;
} ;
const msg = ! isMessageFunction ( format2 ) ? compileMessageFormat ( context , key , targetLocale , format2 , cacheBaseKey , errorDetector ) : format2 ;
if ( occurred ) {
return format2 ;
}
const ctxOptions = getMessageContextOptions ( context , targetLocale , message , options ) ;
const msgContext = createMessageContext ( ctxOptions ) ;
const messaged = evaluateMessage ( context , msg , msgContext ) ;
const ret = postTranslation ? postTranslation ( messaged , key ) : messaged ;
if ( true ) {
const payloads = {
timestamp : Date . now ( ) ,
key : isString ( key ) ? key : isMessageFunction ( format2 ) ? format2 . key : "" ,
locale : targetLocale || ( isMessageFunction ( format2 ) ? format2 . locale : "" ) ,
format : isString ( format2 ) ? format2 : isMessageFunction ( format2 ) ? format2 . source : "" ,
message : ret
} ;
payloads . meta = assign ( { } , context . __ meta , getAdditionalMeta ( ) || { } ) ;
translateDevTools ( payloads ) ;
}
return ret ;
}
function escapeParams ( options ) {
if ( isArray ( options . list ) ) {
options . list = options . list . map ( ( item ) => isString ( item ) ? escapeHtml ( item ) : item ) ;
} else if ( isObject ( options . named ) ) {
Object . keys ( options . named ) . forEach ( ( key ) => {
if ( isString ( options . named [ key ] ) ) {
options . named [ key ] = escapeHtml ( options . named [ key ] ) ;
}
} ) ;
}
}
function resolveMessageFormat ( context , key , locale , fallbackLocale , fallbackWarn , missingWarn ) {
const { messages , onWarn , messageResolver : resolveValue2 , localeFallbacker } = context ;
const locales = localeFallbacker ( context , fallbackLocale , locale ) ;
let message = { } ;
let targetLocale ;
let format2 = null ;
let from = locale ;
let to = null ;
const type = "translate" ;
for ( let i = 0 ; i < locales . length ; i ++ ) {
targetLocale = to = locales [ i ] ;
if ( locale !== targetLocale && isTranslateFallbackWarn ( fallbackWarn , key ) ) {
onWarn ( getWarnMessage ( CoreWarnCodes . FALLBACK_TO_TRANSLATE , {
key ,
target : targetLocale
} ) ) ;
}
if ( locale !== targetLocale ) {
const emitter = context . __ v_emitter ;
if ( emitter ) {
emitter . emit ( "fallback" , {
type ,
key ,
from ,
to ,
groupId : ` ${ type } : ${ key } `
} ) ;
}
}
message = messages [ targetLocale ] || { } ;
let start = null ;
let startTag ;
let endTag ;
if ( inBrowser ) {
start = window . performance . now ( ) ;
startTag = "intlify-message-resolve-start" ;
endTag = "intlify-message-resolve-end" ;
mark && mark ( startTag ) ;
}
if ( ( format2 = resolveValue2 ( message , key ) ) === null ) {
format2 = message [ key ] ;
}
if ( inBrowser ) {
const end = window . performance . now ( ) ;
const emitter = context . __ v_emitter ;
if ( emitter && start && format2 ) {
emitter . emit ( "message-resolve" , {
type : "message-resolve" ,
key ,
message : format2 ,
time : end - start ,
groupId : ` ${ type } : ${ key } `
} ) ;
}
if ( startTag && endTag && mark && measure ) {
mark ( endTag ) ;
measure ( "intlify message resolve" , startTag , endTag ) ;
}
}
if ( isString ( format2 ) || isFunction ( format2 ) )
break ;
const missingRet = handleMissing (
context ,
// eslint-disable-line @typescript-eslint/no-explicit-any
key ,
targetLocale ,
missingWarn ,
type
) ;
if ( missingRet !== key ) {
format2 = missingRet ;
}
from = to ;
}
return [ format2 , targetLocale , message ] ;
}
function compileMessageFormat ( context , key , targetLocale , format2 , cacheBaseKey , errorDetector ) {
const { messageCompiler , warnHtmlMessage } = context ;
if ( isMessageFunction ( format2 ) ) {
const msg2 = format2 ;
msg2 . locale = msg2 . locale || targetLocale ;
msg2 . key = msg2 . key || key ;
return msg2 ;
}
if ( messageCompiler == null ) {
const msg2 = ( ) => format2 ;
msg2 . locale = targetLocale ;
msg2 . key = key ;
return msg2 ;
}
let start = null ;
let startTag ;
let endTag ;
if ( inBrowser ) {
start = window . performance . now ( ) ;
startTag = "intlify-message-compilation-start" ;
endTag = "intlify-message-compilation-end" ;
mark && mark ( startTag ) ;
}
const msg = messageCompiler ( format2 , getCompileOptions ( context , targetLocale , cacheBaseKey , format2 , warnHtmlMessage , errorDetector ) ) ;
if ( inBrowser ) {
const end = window . performance . now ( ) ;
const emitter = context . __ v_emitter ;
if ( emitter && start ) {
emitter . emit ( "message-compilation" , {
type : "message-compilation" ,
message : format2 ,
time : end - start ,
groupId : ` ${ "translate" } : ${ key } `
} ) ;
}
if ( startTag && endTag && mark && measure ) {
mark ( endTag ) ;
measure ( "intlify message compilation" , startTag , endTag ) ;
}
}
msg . locale = targetLocale ;
msg . key = key ;
msg . source = format2 ;
return msg ;
}
function evaluateMessage ( context , msg , msgCtx ) {
let start = null ;
let startTag ;
let endTag ;
if ( inBrowser ) {
start = window . performance . now ( ) ;
startTag = "intlify-message-evaluation-start" ;
endTag = "intlify-message-evaluation-end" ;
mark && mark ( startTag ) ;
}
const messaged = msg ( msgCtx ) ;
if ( inBrowser ) {
const end = window . performance . now ( ) ;
const emitter = context . __ v_emitter ;
if ( emitter && start ) {
emitter . emit ( "message-evaluation" , {
type : "message-evaluation" ,
value : messaged ,
time : end - start ,
groupId : ` ${ "translate" } : ${ msg . key } `
} ) ;
}
if ( startTag && endTag && mark && measure ) {
mark ( endTag ) ;
measure ( "intlify message evaluation" , startTag , endTag ) ;
}
}
return messaged ;
}
function parseTranslateArgs ( ... args ) {
const [ arg1 , arg2 , arg3 ] = args ;
const options = { } ;
if ( ! isString ( arg1 ) && ! isNumber ( arg1 ) && ! isMessageFunction ( arg1 ) ) {
throw createCoreError ( CoreErrorCodes . INVALID_ARGUMENT ) ;
}
const key = isNumber ( arg1 ) ? String ( arg1 ) : isMessageFunction ( arg1 ) ? arg1 : arg1 ;
if ( isNumber ( arg2 ) ) {
options . plural = arg2 ;
} else if ( isString ( arg2 ) ) {
options . default = arg2 ;
} else if ( isPlainObject ( arg2 ) && ! isEmptyObject ( arg2 ) ) {
options . named = arg2 ;
} else if ( isArray ( arg2 ) ) {
options . list = arg2 ;
}
if ( isNumber ( arg3 ) ) {
options . plural = arg3 ;
} else if ( isString ( arg3 ) ) {
options . default = arg3 ;
} else if ( isPlainObject ( arg3 ) ) {
assign ( options , arg3 ) ;
}
return [ key , options ] ;
}
function getCompileOptions ( context , locale , key , source , warnHtmlMessage , errorDetector ) {
return {
warnHtmlMessage ,
onError : ( err ) => {
errorDetector && errorDetector ( err ) ;
if ( true ) {
const message = ` Message compilation error: ${ err . message } ` ;
const codeFrame = err . location && generateCodeFrame ( source , err . location . start . offset , err . location . end . offset ) ;
const emitter = context . __ v_emitter ;
if ( emitter ) {
emitter . emit ( "compile-error" , {
message : source ,
error : err . message ,
start : err . location && err . location . start . offset ,
end : err . location && err . location . end . offset ,
groupId : ` ${ "translate" } : ${ key } `
} ) ;
}
console . error ( codeFrame ? ` ${ message }
$ { codeFrame } ` : message);
} else {
throw err ;
}
} ,
onCacheKey : ( source2 ) => generateFormatCacheKey ( locale , key , source2 )
} ;
}
function getMessageContextOptions ( context , locale , message , options ) {
const { modifiers , pluralRules , messageResolver : resolveValue2 , fallbackLocale , fallbackWarn , missingWarn , fallbackContext } = context ;
const resolveMessage = ( key ) => {
let val = resolveValue2 ( message , key ) ;
if ( val == null && fallbackContext ) {
const [ , , message2 ] = resolveMessageFormat ( fallbackContext , key , locale , fallbackLocale , fallbackWarn , missingWarn ) ;
val = resolveValue2 ( message2 , key ) ;
}
if ( isString ( val ) ) {
let occurred = false ;
const errorDetector = ( ) => {
occurred = true ;
} ;
const msg = compileMessageFormat ( context , key , locale , val , key , errorDetector ) ;
return ! occurred ? msg : NOOP_MESSAGE_FUNCTION ;
} else if ( isMessageFunction ( val ) ) {
return val ;
} else {
return NOOP_MESSAGE_FUNCTION ;
}
} ;
const ctxOptions = {
locale ,
modifiers ,
pluralRules ,
messages : resolveMessage
} ;
if ( context . processor ) {
ctxOptions . processor = context . processor ;
}
if ( options . list ) {
ctxOptions . list = options . list ;
}
if ( options . named ) {
ctxOptions . named = options . named ;
}
if ( isNumber ( options . plural ) ) {
ctxOptions . pluralIndex = options . plural ;
}
return ctxOptions ;
}
var intlDefined = typeof Intl !== "undefined" ;
var Availabilities = {
dateTimeFormat : intlDefined && typeof Intl . DateTimeFormat !== "undefined" ,
numberFormat : intlDefined && typeof Intl . NumberFormat !== "undefined"
} ;
function datetime ( context , ... args ) {
const { datetimeFormats , unresolving , fallbackLocale , onWarn , localeFallbacker } = context ;
const { __ datetimeFormatters } = context ;
if ( ! Availabilities . dateTimeFormat ) {
onWarn ( getWarnMessage ( CoreWarnCodes . CANNOT_FORMAT_DATE ) ) ;
return MISSING_RESOLVE_VALUE ;
}
const [ key , value , options , overrides ] = parseDateTimeArgs ( ... args ) ;
const missingWarn = isBoolean ( options . missingWarn ) ? options . missingWarn : context . missingWarn ;
const fallbackWarn = isBoolean ( options . fallbackWarn ) ? options . fallbackWarn : context . fallbackWarn ;
const part = ! ! options . part ;
const locale = isString ( options . locale ) ? options . locale : context . locale ;
const locales = localeFallbacker (
context ,
// eslint-disable-line @typescript-eslint/no-explicit-any
fallbackLocale ,
locale
) ;
if ( ! isString ( key ) || key === "" ) {
return new Intl . DateTimeFormat ( locale , overrides ) . format ( value ) ;
}
let datetimeFormat = { } ;
let targetLocale ;
let format2 = null ;
let from = locale ;
let to = null ;
const type = "datetime format" ;
for ( let i = 0 ; i < locales . length ; i ++ ) {
targetLocale = to = locales [ i ] ;
if ( locale !== targetLocale && isTranslateFallbackWarn ( fallbackWarn , key ) ) {
onWarn ( getWarnMessage ( CoreWarnCodes . FALLBACK_TO_DATE_FORMAT , {
key ,
target : targetLocale
} ) ) ;
}
if ( locale !== targetLocale ) {
const emitter = context . __ v_emitter ;
if ( emitter ) {
emitter . emit ( "fallback" , {
type ,
key ,
from ,
to ,
groupId : ` ${ type } : ${ key } `
} ) ;
}
}
datetimeFormat = datetimeFormats [ targetLocale ] || { } ;
format2 = datetimeFormat [ key ] ;
if ( isPlainObject ( format2 ) )
break ;
handleMissing ( context , key , targetLocale , missingWarn , type ) ;
from = to ;
}
if ( ! isPlainObject ( format2 ) || ! isString ( targetLocale ) ) {
return unresolving ? NOT_REOSLVED : key ;
}
let id = ` ${ targetLocale } __ ${ key } ` ;
if ( ! isEmptyObject ( overrides ) ) {
id = ` ${ id } __ ${ JSON . stringify ( overrides ) } ` ;
}
let formatter = __ datetimeFormatters . get ( id ) ;
if ( ! formatter ) {
formatter = new Intl . DateTimeFormat ( targetLocale , assign ( { } , format2 , overrides ) ) ;
__ datetimeFormatters . set ( id , formatter ) ;
}
return ! part ? formatter . format ( value ) : formatter . formatToParts ( value ) ;
}
var DATETIME_FORMAT_OPTIONS_KEYS = [
"localeMatcher" ,
"weekday" ,
"era" ,
"year" ,
"month" ,
"day" ,
"hour" ,
"minute" ,
"second" ,
"timeZoneName" ,
"formatMatcher" ,
"hour12" ,
"timeZone" ,
"dateStyle" ,
"timeStyle" ,
"calendar" ,
"dayPeriod" ,
"numberingSystem" ,
"hourCycle" ,
"fractionalSecondDigits"
] ;
function parseDateTimeArgs ( ... args ) {
const [ arg1 , arg2 , arg3 , arg4 ] = args ;
const options = { } ;
let overrides = { } ;
let value ;
if ( isString ( arg1 ) ) {
const matches = arg1 . match ( /(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/ ) ;
if ( ! matches ) {
throw createCoreError ( CoreErrorCodes . INVALID_ISO_DATE_ARGUMENT ) ;
}
const dateTime = matches [ 3 ] ? matches [ 3 ] . trim ( ) . startsWith ( "T" ) ? ` ${ matches [ 1 ] . trim ( ) } ${ matches [ 3 ] . trim ( ) } ` : ` ${ matches [ 1 ] . trim ( ) } T ${ matches [ 3 ] . trim ( ) } ` : matches [ 1 ] . trim ( ) ;
value = new Date ( dateTime ) ;
try {
value . toISOString ( ) ;
} catch ( e ) {
throw createCoreError ( CoreErrorCodes . INVALID_ISO_DATE_ARGUMENT ) ;
}
} else if ( isDate ( arg1 ) ) {
if ( isNaN ( arg1 . getTime ( ) ) ) {
throw createCoreError ( CoreErrorCodes . INVALID_DATE_ARGUMENT ) ;
}
value = arg1 ;
} else if ( isNumber ( arg1 ) ) {
value = arg1 ;
} else {
throw createCoreError ( CoreErrorCodes . INVALID_ARGUMENT ) ;
}
if ( isString ( arg2 ) ) {
options . key = arg2 ;
} else if ( isPlainObject ( arg2 ) ) {
Object . keys ( arg2 ) . forEach ( ( key ) => {
if ( DATETIME_FORMAT_OPTIONS_KEYS . includes ( key ) ) {
overrides [ key ] = arg2 [ key ] ;
} else {
options [ key ] = arg2 [ key ] ;
}
} ) ;
}
if ( isString ( arg3 ) ) {
options . locale = arg3 ;
} else if ( isPlainObject ( arg3 ) ) {
overrides = arg3 ;
}
if ( isPlainObject ( arg4 ) ) {
overrides = arg4 ;
}
return [ options . key || "" , value , options , overrides ] ;
}
function clearDateTimeFormat ( ctx , locale , format2 ) {
const context = ctx ;
for ( const key in format2 ) {
const id = ` ${ locale } __ ${ key } ` ;
if ( ! context . __ datetimeFormatters . has ( id ) ) {
continue ;
}
context . __ datetimeFormatters . delete ( id ) ;
}
}
function number ( context , ... args ) {
const { numberFormats , unresolving , fallbackLocale , onWarn , localeFallbacker } = context ;
const { __ numberFormatters } = context ;
if ( ! Availabilities . numberFormat ) {
onWarn ( getWarnMessage ( CoreWarnCodes . CANNOT_FORMAT_NUMBER ) ) ;
return MISSING_RESOLVE_VALUE ;
}
const [ key , value , options , overrides ] = parseNumberArgs ( ... args ) ;
const missingWarn = isBoolean ( options . missingWarn ) ? options . missingWarn : context . missingWarn ;
const fallbackWarn = isBoolean ( options . fallbackWarn ) ? options . fallbackWarn : context . fallbackWarn ;
const part = ! ! options . part ;
const locale = isString ( options . locale ) ? options . locale : context . locale ;
const locales = localeFallbacker (
context ,
// eslint-disable-line @typescript-eslint/no-explicit-any
fallbackLocale ,
locale
) ;
if ( ! isString ( key ) || key === "" ) {
return new Intl . NumberFormat ( locale , overrides ) . format ( value ) ;
}
let numberFormat = { } ;
let targetLocale ;
let format2 = null ;
let from = locale ;
let to = null ;
const type = "number format" ;
for ( let i = 0 ; i < locales . length ; i ++ ) {
targetLocale = to = locales [ i ] ;
if ( locale !== targetLocale && isTranslateFallbackWarn ( fallbackWarn , key ) ) {
onWarn ( getWarnMessage ( CoreWarnCodes . FALLBACK_TO_NUMBER_FORMAT , {
key ,
target : targetLocale
} ) ) ;
}
if ( locale !== targetLocale ) {
const emitter = context . __ v_emitter ;
if ( emitter ) {
emitter . emit ( "fallback" , {
type ,
key ,
from ,
to ,
groupId : ` ${ type } : ${ key } `
} ) ;
}
}
numberFormat = numberFormats [ targetLocale ] || { } ;
format2 = numberFormat [ key ] ;
if ( isPlainObject ( format2 ) )
break ;
handleMissing ( context , key , targetLocale , missingWarn , type ) ;
from = to ;
}
if ( ! isPlainObject ( format2 ) || ! isString ( targetLocale ) ) {
return unresolving ? NOT_REOSLVED : key ;
}
let id = ` ${ targetLocale } __ ${ key } ` ;
if ( ! isEmptyObject ( overrides ) ) {
id = ` ${ id } __ ${ JSON . stringify ( overrides ) } ` ;
}
let formatter = __ numberFormatters . get ( id ) ;
if ( ! formatter ) {
formatter = new Intl . NumberFormat ( targetLocale , assign ( { } , format2 , overrides ) ) ;
__ numberFormatters . set ( id , formatter ) ;
}
return ! part ? formatter . format ( value ) : formatter . formatToParts ( value ) ;
}
var NUMBER_FORMAT_OPTIONS_KEYS = [
"localeMatcher" ,
"style" ,
"currency" ,
"currencyDisplay" ,
"currencySign" ,
"useGrouping" ,
"minimumIntegerDigits" ,
"minimumFractionDigits" ,
"maximumFractionDigits" ,
"minimumSignificantDigits" ,
"maximumSignificantDigits" ,
"compactDisplay" ,
"notation" ,
"signDisplay" ,
"unit" ,
"unitDisplay" ,
"roundingMode" ,
"roundingPriority" ,
"roundingIncrement" ,
"trailingZeroDisplay"
] ;
function parseNumberArgs ( ... args ) {
const [ arg1 , arg2 , arg3 , arg4 ] = args ;
const options = { } ;
let overrides = { } ;
if ( ! isNumber ( arg1 ) ) {
throw createCoreError ( CoreErrorCodes . INVALID_ARGUMENT ) ;
}
const value = arg1 ;
if ( isString ( arg2 ) ) {
options . key = arg2 ;
} else if ( isPlainObject ( arg2 ) ) {
Object . keys ( arg2 ) . forEach ( ( key ) => {
if ( NUMBER_FORMAT_OPTIONS_KEYS . includes ( key ) ) {
overrides [ key ] = arg2 [ key ] ;
} else {
options [ key ] = arg2 [ key ] ;
}
} ) ;
}
if ( isString ( arg3 ) ) {
options . locale = arg3 ;
} else if ( isPlainObject ( arg3 ) ) {
overrides = arg3 ;
}
if ( isPlainObject ( arg4 ) ) {
overrides = arg4 ;
}
return [ options . key || "" , value , options , overrides ] ;
}
function clearNumberFormat ( ctx , locale , format2 ) {
const context = ctx ;
for ( const key in format2 ) {
const id = ` ${ locale } __ ${ key } ` ;
if ( ! context . __ numberFormatters . has ( id ) ) {
continue ;
}
context . __ numberFormatters . delete ( id ) ;
}
}
{
if ( typeof __ INTLIFY_PROD_DEVTOOLS__ !== "boolean" ) {
getGlobalThis ( ) . __ INTLIFY_PROD_DEVTOOLS__ = false ;
}
}
// node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js
var VueDevToolsLabels = {
[
"vue-devtools-plugin-vue-i18n"
/* PLUGIN */
] : "Vue I18n devtools" ,
[
"vue-i18n-resource-inspector"
/* CUSTOM_INSPECTOR */
] : "I18n Resources" ,
[
"vue-i18n-timeline"
/* TIMELINE */
] : "Vue I18n"
} ;
var VueDevToolsPlaceholders = {
[
"vue-i18n-resource-inspector"
/* CUSTOM_INSPECTOR */
] : "Search for scopes ..."
} ;
var VueDevToolsTimelineColors = {
[
"vue-i18n-timeline"
/* TIMELINE */
] : 16764185
} ;
// node_modules/vue-i18n/dist/vue-i18n.esm-bundler.js
var VERSION2 = "9.2.2" ;
function initFeatureFlags ( ) {
let needWarn = false ;
if ( typeof __ VUE_I18N_FULL_INSTALL__ !== "boolean" ) {
needWarn = true ;
getGlobalThis ( ) . __ VUE_I18N_FULL_INSTALL__ = true ;
}
if ( typeof __ VUE_I18N_LEGACY_API__ !== "boolean" ) {
needWarn = true ;
getGlobalThis ( ) . __ VUE_I18N_LEGACY_API__ = true ;
}
if ( typeof __ INTLIFY_PROD_DEVTOOLS__ !== "boolean" ) {
getGlobalThis ( ) . __ INTLIFY_PROD_DEVTOOLS__ = false ;
}
if ( needWarn ) {
console . warn ( ` You are running the esm-bundler build of vue-i18n. It is recommended to configure your bundler to explicitly replace feature flag globals with boolean literals to get proper tree-shaking in the final bundle. ` ) ;
}
}
var code$1 = CoreWarnCodes . __ EXTEND_POINT__ ;
var inc$1 = ( ) => ++ code$1 ;
var I18nWarnCodes = {
FALLBACK_TO_ROOT : code$1 ,
NOT_SUPPORTED_PRESERVE : inc$1 ( ) ,
NOT_SUPPORTED_FORMATTER : inc$1 ( ) ,
NOT_SUPPORTED_PRESERVE_DIRECTIVE : inc$1 ( ) ,
NOT_SUPPORTED_GET_CHOICE_INDEX : inc$1 ( ) ,
COMPONENT_NAME_LEGACY_COMPATIBLE : inc$1 ( ) ,
NOT_FOUND_PARENT_SCOPE : inc$1 ( )
// 13
} ;
var warnMessages2 = {
[ I18nWarnCodes . FALLBACK_TO_ROOT ] : ` Fall back to {type} '{key}' with root locale. ` ,
[ I18nWarnCodes . NOT_SUPPORTED_PRESERVE ] : ` Not supported 'preserve'. ` ,
[ I18nWarnCodes . NOT_SUPPORTED_FORMATTER ] : ` Not supported 'formatter'. ` ,
[ I18nWarnCodes . NOT_SUPPORTED_PRESERVE_DIRECTIVE ] : ` Not supported 'preserveDirectiveContent'. ` ,
[ I18nWarnCodes . NOT_SUPPORTED_GET_CHOICE_INDEX ] : ` Not supported 'getChoiceIndex'. ` ,
[ I18nWarnCodes . COMPONENT_NAME_LEGACY_COMPATIBLE ] : ` Component name legacy compatible: '{name}' -> 'i18n' ` ,
[ I18nWarnCodes . NOT_FOUND_PARENT_SCOPE ] : ` Not found parent scope. use the global scope. `
} ;
function getWarnMessage2 ( code3 , ... args ) {
return format ( warnMessages2 [ code3 ] , ... args ) ;
}
var code2 = CompileErrorCodes . __ EXTEND_POINT__ ;
var inc2 = ( ) => ++ code2 ;
var I18nErrorCodes = {
// composer module errors
UNEXPECTED_RETURN_TYPE : code2 ,
// legacy module errors
INVALID_ARGUMENT : inc2 ( ) ,
// i18n module errors
MUST_BE_CALL_SETUP_TOP : inc2 ( ) ,
NOT_INSLALLED : inc2 ( ) ,
NOT_AVAILABLE_IN_LEGACY_MODE : inc2 ( ) ,
// directive module errors
REQUIRED_VALUE : inc2 ( ) ,
INVALID_VALUE : inc2 ( ) ,
// vue-devtools errors
CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN : inc2 ( ) ,
NOT_INSLALLED_WITH_PROVIDE : inc2 ( ) ,
// unexpected error
UNEXPECTED_ERROR : inc2 ( ) ,
// not compatible legacy vue-i18n constructor
NOT_COMPATIBLE_LEGACY_VUE_I18N : inc2 ( ) ,
// bridge support vue 2.x only
BRIDGE_SUPPORT_VUE_2_ONLY : inc2 ( ) ,
// need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``
MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION : inc2 ( ) ,
// Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly
NOT_AVAILABLE_COMPOSITION_IN_LEGACY : inc2 ( ) ,
// for enhancement
__ EXTEND_POINT__ : inc2 ( )
// 29
} ;
function createI18nError ( code3 , ... args ) {
return createCompileError ( code3 , null , true ? { messages : errorMessages3 , args } : void 0 ) ;
}
var errorMessages3 = {
[ I18nErrorCodes . UNEXPECTED_RETURN_TYPE ] : "Unexpected return type in composer" ,
[ I18nErrorCodes . INVALID_ARGUMENT ] : "Invalid argument" ,
[ I18nErrorCodes . MUST_BE_CALL_SETUP_TOP ] : "Must be called at the top of a `setup` function" ,
[ I18nErrorCodes . NOT_INSLALLED ] : "Need to install with `app.use` function" ,
[ I18nErrorCodes . UNEXPECTED_ERROR ] : "Unexpected error" ,
[ I18nErrorCodes . NOT_AVAILABLE_IN_LEGACY_MODE ] : "Not available in legacy mode" ,
[ I18nErrorCodes . REQUIRED_VALUE ] : ` Required in value: {0} ` ,
[ I18nErrorCodes . INVALID_VALUE ] : ` Invalid value ` ,
[ I18nErrorCodes . CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN ] : ` Cannot setup vue-devtools plugin ` ,
[ I18nErrorCodes . NOT_INSLALLED_WITH_PROVIDE ] : "Need to install with `provide` function" ,
[ I18nErrorCodes . NOT_COMPATIBLE_LEGACY_VUE_I18N ] : "Not compatible legacy VueI18n." ,
[ I18nErrorCodes . BRIDGE_SUPPORT_VUE_2_ONLY ] : "vue-i18n-bridge support Vue 2.x only" ,
[ I18nErrorCodes . MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION ] : "Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode" ,
[ I18nErrorCodes . NOT_AVAILABLE_COMPOSITION_IN_LEGACY ] : "Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly"
} ;
var TransrateVNodeSymbol = makeSymbol ( "__transrateVNode" ) ;
var DatetimePartsSymbol = makeSymbol ( "__datetimeParts" ) ;
var NumberPartsSymbol = makeSymbol ( "__numberParts" ) ;
var EnableEmitter = makeSymbol ( "__enableEmitter" ) ;
var DisableEmitter = makeSymbol ( "__disableEmitter" ) ;
var SetPluralRulesSymbol = makeSymbol ( "__setPluralRules" ) ;
makeSymbol ( "__intlifyMeta" ) ;
var InejctWithOption = makeSymbol ( "__injectWithOption" ) ;
var __ VUE_I18N_BRIDGE__ = "__VUE_I18N_BRIDGE__" ;
function handleFlatJson ( obj ) {
if ( ! isObject ( obj ) ) {
return obj ;
}
for ( const key in obj ) {
if ( ! hasOwn ( obj , key ) ) {
continue ;
}
if ( ! key . includes ( "." ) ) {
if ( isObject ( obj [ key ] ) ) {
handleFlatJson ( obj [ key ] ) ;
}
} else {
const subKeys = key . split ( "." ) ;
const lastIndex = subKeys . length - 1 ;
let currentObj = obj ;
for ( let i = 0 ; i < lastIndex ; i ++ ) {
if ( ! ( subKeys [ i ] in currentObj ) ) {
currentObj [ subKeys [ i ] ] = { } ;
}
currentObj = currentObj [ subKeys [ i ] ] ;
}
currentObj [ subKeys [ lastIndex ] ] = obj [ key ] ;
delete obj [ key ] ;
if ( isObject ( currentObj [ subKeys [ lastIndex ] ] ) ) {
handleFlatJson ( currentObj [ subKeys [ lastIndex ] ] ) ;
}
}
}
return obj ;
}
function getLocaleMessages ( locale , options ) {
const { messages , __ i18n , messageResolver , flatJson } = options ;
const ret = isPlainObject ( messages ) ? messages : isArray ( __ i18n ) ? { } : { [ locale ] : { } } ;
if ( isArray ( __ i18n ) ) {
__ i18n . forEach ( ( custom ) => {
if ( "locale" in custom && "resource" in custom ) {
const { locale : locale2 , resource } = custom ;
if ( locale2 ) {
ret [ locale2 ] = ret [ locale2 ] || { } ;
deepCopy ( resource , ret [ locale2 ] ) ;
} else {
deepCopy ( resource , ret ) ;
}
} else {
isString ( custom ) && deepCopy ( JSON . parse ( custom ) , ret ) ;
}
} ) ;
}
if ( messageResolver == null && flatJson ) {
for ( const key in ret ) {
if ( hasOwn ( ret , key ) ) {
handleFlatJson ( ret [ key ] ) ;
}
}
}
return ret ;
}
var isNotObjectOrIsArray = ( val ) => ! isObject ( val ) || isArray ( val ) ;
function deepCopy ( src , des ) {
if ( isNotObjectOrIsArray ( src ) || isNotObjectOrIsArray ( des ) ) {
throw createI18nError ( I18nErrorCodes . INVALID_VALUE ) ;
}
for ( const key in src ) {
if ( hasOwn ( src , key ) ) {
if ( isNotObjectOrIsArray ( src [ key ] ) || isNotObjectOrIsArray ( des [ key ] ) ) {
des [ key ] = src [ key ] ;
} else {
deepCopy ( src [ key ] , des [ key ] ) ;
}
}
}
}
function getComponentOptions ( instance ) {
return instance . type ;
}
function adjustI18nResources ( global2 , options , componentOptions ) {
let messages = isObject ( options . messages ) ? options . messages : { } ;
if ( "__i18nGlobal" in componentOptions ) {
messages = getLocaleMessages ( global2 . locale . value , {
messages ,
__ i18n : componentOptions . __ i18nGlobal
} ) ;
}
const locales = Object . keys ( messages ) ;
if ( locales . length ) {
locales . forEach ( ( locale ) => {
global2 . mergeLocaleMessage ( locale , messages [ locale ] ) ;
} ) ;
}
{
if ( isObject ( options . datetimeFormats ) ) {
const locales2 = Object . keys ( options . datetimeFormats ) ;
if ( locales2 . length ) {
locales2 . forEach ( ( locale ) => {
global2 . mergeDateTimeFormat ( locale , options . datetimeFormats [ locale ] ) ;
} ) ;
}
}
if ( isObject ( options . numberFormats ) ) {
const locales2 = Object . keys ( options . numberFormats ) ;
if ( locales2 . length ) {
locales2 . forEach ( ( locale ) => {
global2 . mergeNumberFormat ( locale , options . numberFormats [ locale ] ) ;
} ) ;
}
}
}
}
function createTextNode ( key ) {
return createVNode ( Text , null , key , 0 ) ;
}
var DEVTOOLS_META = "__INTLIFY_META__" ;
var composerID = 0 ;
function defineCoreMissingHandler ( missing ) {
return ( ctx , locale , key , type ) => {
return missing ( locale , key , getCurrentInstance ( ) || void 0 , type ) ;
} ;
}
var getMetaInfo = ( ) => {
const instance = getCurrentInstance ( ) ;
let meta = null ;
return instance && ( meta = getComponentOptions ( instance ) [ DEVTOOLS_META ] ) ? { [ DEVTOOLS_META ] : meta } : null ;
} ;
function createComposer ( options = { } , VueI18nLegacy ) {
const { __ root } = options ;
const _ isGlobal = __ root === void 0 ;
let _ inheritLocale = isBoolean ( options . inheritLocale ) ? options . inheritLocale : true ;
const _ locale = ref (
// prettier-ignore
__ root && _ inheritLocale ? __ root . locale . value : isString ( options . locale ) ? options . locale : DEFAULT_LOCALE
) ;
const _ fallbackLocale = ref (
// prettier-ignore
__ root && _ inheritLocale ? __ root . fallbackLocale . value : isString ( options . fallbackLocale ) || isArray ( options . fallbackLocale ) || isPlainObject ( options . fallbackLocale ) || options . fallbackLocale === false ? options . fallbackLocale : _ locale . value
) ;
const _ messages = ref ( getLocaleMessages ( _ locale . value , options ) ) ;
const _ datetimeFormats = ref ( isPlainObject ( options . datetimeFormats ) ? options . datetimeFormats : { [ _ locale . value ] : { } } ) ;
const _ numberFormats = ref ( isPlainObject ( options . numberFormats ) ? options . numberFormats : { [ _ locale . value ] : { } } ) ;
let _ missingWarn = __ root ? __ root . missingWarn : isBoolean ( options . missingWarn ) || isRegExp ( options . missingWarn ) ? options . missingWarn : true ;
let _ fallbackWarn = __ root ? __ root . fallbackWarn : isBoolean ( options . fallbackWarn ) || isRegExp ( options . fallbackWarn ) ? options . fallbackWarn : true ;
let _ fallbackRoot = __ root ? __ root . fallbackRoot : isBoolean ( options . fallbackRoot ) ? options . fallbackRoot : true ;
let _ fallbackFormat = ! ! options . fallbackFormat ;
let _ missing = isFunction ( options . missing ) ? options . missing : null ;
let _ runtimeMissing = isFunction ( options . missing ) ? defineCoreMissingHandler ( options . missing ) : null ;
let _ postTranslation = isFunction ( options . postTranslation ) ? options . postTranslation : null ;
let _ warnHtmlMessage = __ root ? __ root . warnHtmlMessage : isBoolean ( options . warnHtmlMessage ) ? options . warnHtmlMessage : true ;
let _ escapeParameter = ! ! options . escapeParameter ;
const _ modifiers = __ root ? __ root . modifiers : isPlainObject ( options . modifiers ) ? options . modifiers : { } ;
let _ pluralRules = options . pluralRules || __ root && __ root . pluralRules ;
let _ context ;
const getCoreContext = ( ) => {
_ isGlobal && setFallbackContext ( null ) ;
const ctxOptions = {
version : VERSION2 ,
locale : _ locale . value ,
fallbackLocale : _ fallbackLocale . value ,
messages : _ messages . value ,
modifiers : _ modifiers ,
pluralRules : _ pluralRules ,
missing : _ runtimeMissing === null ? void 0 : _ runtimeMissing ,
missingWarn : _ missingWarn ,
fallbackWarn : _ fallbackWarn ,
fallbackFormat : _ fallbackFormat ,
unresolving : true ,
postTranslation : _ postTranslation === null ? void 0 : _ postTranslation ,
warnHtmlMessage : _ warnHtmlMessage ,
escapeParameter : _ escapeParameter ,
messageResolver : options . messageResolver ,
__ meta : { framework : "vue" }
} ;
{
ctxOptions . datetimeFormats = _ datetimeFormats . value ;
ctxOptions . numberFormats = _ numberFormats . value ;
ctxOptions . __ datetimeFormatters = isPlainObject ( _ context ) ? _ context . __ datetimeFormatters : void 0 ;
ctxOptions . __ numberFormatters = isPlainObject ( _ context ) ? _ context . __ numberFormatters : void 0 ;
}
if ( true ) {
ctxOptions . __ v_emitter = isPlainObject ( _ context ) ? _ context . __ v_emitter : void 0 ;
}
const ctx = createCoreContext ( ctxOptions ) ;
_ isGlobal && setFallbackContext ( ctx ) ;
return ctx ;
} ;
_ context = getCoreContext ( ) ;
updateFallbackLocale ( _ context , _ locale . value , _ fallbackLocale . value ) ;
function trackReactivityValues ( ) {
return [
_ locale . value ,
_ fallbackLocale . value ,
_ messages . value ,
_ datetimeFormats . value ,
_ numberFormats . value
] ;
}
const locale = computed ( {
get : ( ) => _ locale . value ,
set : ( val ) => {
_ locale . value = val ;
_ context . locale = _ locale . value ;
}
} ) ;
const fallbackLocale = computed ( {
get : ( ) => _ fallbackLocale . value ,
set : ( val ) => {
_ fallbackLocale . value = val ;
_ context . fallbackLocale = _ fallbackLocale . value ;
updateFallbackLocale ( _ context , _ locale . value , val ) ;
}
} ) ;
const messages = computed ( ( ) => _ messages . value ) ;
const datetimeFormats = computed ( ( ) => _ datetimeFormats . value ) ;
const numberFormats = computed ( ( ) => _ numberFormats . value ) ;
function getPostTranslationHandler ( ) {
return isFunction ( _ postTranslation ) ? _ postTranslation : null ;
}
function setPostTranslationHandler ( handler ) {
_ postTranslation = handler ;
_ context . postTranslation = handler ;
}
function getMissingHandler ( ) {
return _ missing ;
}
function setMissingHandler ( handler ) {
if ( handler !== null ) {
_ runtimeMissing = defineCoreMissingHandler ( handler ) ;
}
_ missing = handler ;
_ context . missing = _ runtimeMissing ;
}
function isResolvedTranslateMessage ( type , arg ) {
return type !== "translate" || ! arg . resolvedMessage ;
}
const wrapWithDeps = ( fn , argumentParser , warnType , fallbackSuccess , fallbackFail , successCondition ) => {
trackReactivityValues ( ) ;
let ret ;
if ( true ) {
try {
setAdditionalMeta ( getMetaInfo ( ) ) ;
if ( ! _ isGlobal ) {
_ context . fallbackContext = __ root ? getFallbackContext ( ) : void 0 ;
}
ret = fn ( _ context ) ;
} finally {
setAdditionalMeta ( null ) ;
if ( ! _ isGlobal ) {
_ context . fallbackContext = void 0 ;
}
}
} else {
ret = fn ( _ context ) ;
}
if ( isNumber ( ret ) && ret === NOT_REOSLVED ) {
const [ key , arg2 ] = argumentParser ( ) ;
if ( __ root && isString ( key ) && isResolvedTranslateMessage ( warnType , arg2 ) ) {
if ( _ fallbackRoot && ( isTranslateFallbackWarn ( _ fallbackWarn , key ) || isTranslateMissingWarn ( _ missingWarn , key ) ) ) {
warn ( getWarnMessage2 ( I18nWarnCodes . FALLBACK_TO_ROOT , {
key ,
type : warnType
} ) ) ;
}
if ( true ) {
const { __ v_emitter : emitter } = _ context ;
if ( emitter && _ fallbackRoot ) {
emitter . emit ( "fallback" , {
type : warnType ,
key ,
to : "global" ,
groupId : ` ${ warnType } : ${ key } `
} ) ;
}
}
}
return __ root && _ fallbackRoot ? fallbackSuccess ( __ root ) : fallbackFail ( key ) ;
} else if ( successCondition ( ret ) ) {
return ret ;
} else {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_RETURN_TYPE ) ;
}
} ;
function t ( ... args ) {
return wrapWithDeps ( ( context ) => Reflect . apply ( translate , null , [ context , ... args ] ) , ( ) => parseTranslateArgs ( ... args ) , "translate" , ( root ) => Reflect . apply ( root . t , root , [ ... args ] ) , ( key ) => key , ( val ) => isString ( val ) ) ;
}
function rt ( ... args ) {
const [ arg1 , arg2 , arg3 ] = args ;
if ( arg3 && ! isObject ( arg3 ) ) {
throw createI18nError ( I18nErrorCodes . INVALID_ARGUMENT ) ;
}
return t ( ... [ arg1 , arg2 , assign ( { resolvedMessage : true } , arg3 || { } ) ] ) ;
}
function d ( ... args ) {
return wrapWithDeps ( ( context ) => Reflect . apply ( datetime , null , [ context , ... args ] ) , ( ) => parseDateTimeArgs ( ... args ) , "datetime format" , ( root ) => Reflect . apply ( root . d , root , [ ... args ] ) , ( ) => MISSING_RESOLVE_VALUE , ( val ) => isString ( val ) ) ;
}
function n ( ... args ) {
return wrapWithDeps ( ( context ) => Reflect . apply ( number , null , [ context , ... args ] ) , ( ) => parseNumberArgs ( ... args ) , "number format" , ( root ) => Reflect . apply ( root . n , root , [ ... args ] ) , ( ) => MISSING_RESOLVE_VALUE , ( val ) => isString ( val ) ) ;
}
function normalize ( values ) {
return values . map ( ( val ) => isString ( val ) || isNumber ( val ) || isBoolean ( val ) ? createTextNode ( String ( val ) ) : val ) ;
}
const interpolate = ( val ) => val ;
const processor = {
normalize ,
interpolate ,
type : "vnode"
} ;
function transrateVNode ( ... args ) {
return wrapWithDeps (
( context ) => {
let ret ;
const _ context2 = context ;
try {
_ context2 . processor = processor ;
ret = Reflect . apply ( translate , null , [ _ context2 , ... args ] ) ;
} finally {
_ context2 . processor = null ;
}
return ret ;
} ,
( ) => parseTranslateArgs ( ... args ) ,
"translate" ,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
( root ) => root [ TransrateVNodeSymbol ] ( ... args ) ,
( key ) => [ createTextNode ( key ) ] ,
( val ) => isArray ( val )
) ;
}
function numberParts ( ... args ) {
return wrapWithDeps (
( context ) => Reflect . apply ( number , null , [ context , ... args ] ) ,
( ) => parseNumberArgs ( ... args ) ,
"number format" ,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
( root ) => root [ NumberPartsSymbol ] ( ... args ) ,
( ) => [ ] ,
( val ) => isString ( val ) || isArray ( val )
) ;
}
function datetimeParts ( ... args ) {
return wrapWithDeps (
( context ) => Reflect . apply ( datetime , null , [ context , ... args ] ) ,
( ) => parseDateTimeArgs ( ... args ) ,
"datetime format" ,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
( root ) => root [ DatetimePartsSymbol ] ( ... args ) ,
( ) => [ ] ,
( val ) => isString ( val ) || isArray ( val )
) ;
}
function setPluralRules ( rules ) {
_ pluralRules = rules ;
_ context . pluralRules = _ pluralRules ;
}
function te ( key , locale2 ) {
const targetLocale = isString ( locale2 ) ? locale2 : _ locale . value ;
const message = getLocaleMessage ( targetLocale ) ;
return _ context . messageResolver ( message , key ) !== null ;
}
function resolveMessages ( key ) {
let messages2 = null ;
const locales = fallbackWithLocaleChain ( _ context , _ fallbackLocale . value , _ locale . value ) ;
for ( let i = 0 ; i < locales . length ; i ++ ) {
const targetLocaleMessages = _ messages . value [ locales [ i ] ] || { } ;
const messageValue = _ context . messageResolver ( targetLocaleMessages , key ) ;
if ( messageValue != null ) {
messages2 = messageValue ;
break ;
}
}
return messages2 ;
}
function tm ( key ) {
const messages2 = resolveMessages ( key ) ;
return messages2 != null ? messages2 : __ root ? __ root . tm ( key ) || { } : { } ;
}
function getLocaleMessage ( locale2 ) {
return _ messages . value [ locale2 ] || { } ;
}
function setLocaleMessage ( locale2 , message ) {
_ messages . value [ locale2 ] = message ;
_ context . messages = _ messages . value ;
}
function mergeLocaleMessage ( locale2 , message ) {
_ messages . value [ locale2 ] = _ messages . value [ locale2 ] || { } ;
deepCopy ( message , _ messages . value [ locale2 ] ) ;
_ context . messages = _ messages . value ;
}
function getDateTimeFormat ( locale2 ) {
return _ datetimeFormats . value [ locale2 ] || { } ;
}
function setDateTimeFormat ( locale2 , format2 ) {
_ datetimeFormats . value [ locale2 ] = format2 ;
_ context . datetimeFormats = _ datetimeFormats . value ;
clearDateTimeFormat ( _ context , locale2 , format2 ) ;
}
function mergeDateTimeFormat ( locale2 , format2 ) {
_ datetimeFormats . value [ locale2 ] = assign ( _ datetimeFormats . value [ locale2 ] || { } , format2 ) ;
_ context . datetimeFormats = _ datetimeFormats . value ;
clearDateTimeFormat ( _ context , locale2 , format2 ) ;
}
function getNumberFormat ( locale2 ) {
return _ numberFormats . value [ locale2 ] || { } ;
}
function setNumberFormat ( locale2 , format2 ) {
_ numberFormats . value [ locale2 ] = format2 ;
_ context . numberFormats = _ numberFormats . value ;
clearNumberFormat ( _ context , locale2 , format2 ) ;
}
function mergeNumberFormat ( locale2 , format2 ) {
_ numberFormats . value [ locale2 ] = assign ( _ numberFormats . value [ locale2 ] || { } , format2 ) ;
_ context . numberFormats = _ numberFormats . value ;
clearNumberFormat ( _ context , locale2 , format2 ) ;
}
composerID ++ ;
if ( __ root && inBrowser ) {
watch ( __ root . locale , ( val ) => {
if ( _ inheritLocale ) {
_ locale . value = val ;
_ context . locale = val ;
updateFallbackLocale ( _ context , _ locale . value , _ fallbackLocale . value ) ;
}
} ) ;
watch ( __ root . fallbackLocale , ( val ) => {
if ( _ inheritLocale ) {
_ fallbackLocale . value = val ;
_ context . fallbackLocale = val ;
updateFallbackLocale ( _ context , _ locale . value , _ fallbackLocale . value ) ;
}
} ) ;
}
const composer = {
id : composerID ,
locale ,
fallbackLocale ,
get inheritLocale ( ) {
return _ inheritLocale ;
} ,
set inheritLocale ( val ) {
_ inheritLocale = val ;
if ( val && __ root ) {
_ locale . value = __ root . locale . value ;
_ fallbackLocale . value = __ root . fallbackLocale . value ;
updateFallbackLocale ( _ context , _ locale . value , _ fallbackLocale . value ) ;
}
} ,
get availableLocales ( ) {
return Object . keys ( _ messages . value ) . sort ( ) ;
} ,
messages ,
get modifiers ( ) {
return _ modifiers ;
} ,
get pluralRules ( ) {
return _ pluralRules || { } ;
} ,
get isGlobal ( ) {
return _ isGlobal ;
} ,
get missingWarn ( ) {
return _ missingWarn ;
} ,
set missingWarn ( val ) {
_ missingWarn = val ;
_ context . missingWarn = _ missingWarn ;
} ,
get fallbackWarn ( ) {
return _ fallbackWarn ;
} ,
set fallbackWarn ( val ) {
_ fallbackWarn = val ;
_ context . fallbackWarn = _ fallbackWarn ;
} ,
get fallbackRoot ( ) {
return _ fallbackRoot ;
} ,
set fallbackRoot ( val ) {
_ fallbackRoot = val ;
} ,
get fallbackFormat ( ) {
return _ fallbackFormat ;
} ,
set fallbackFormat ( val ) {
_ fallbackFormat = val ;
_ context . fallbackFormat = _ fallbackFormat ;
} ,
get warnHtmlMessage ( ) {
return _ warnHtmlMessage ;
} ,
set warnHtmlMessage ( val ) {
_ warnHtmlMessage = val ;
_ context . warnHtmlMessage = val ;
} ,
get escapeParameter ( ) {
return _ escapeParameter ;
} ,
set escapeParameter ( val ) {
_ escapeParameter = val ;
_ context . escapeParameter = val ;
} ,
t ,
getLocaleMessage ,
setLocaleMessage ,
mergeLocaleMessage ,
getPostTranslationHandler ,
setPostTranslationHandler ,
getMissingHandler ,
setMissingHandler ,
[ SetPluralRulesSymbol ] : setPluralRules
} ;
{
composer . datetimeFormats = datetimeFormats ;
composer . numberFormats = numberFormats ;
composer . rt = rt ;
composer . te = te ;
composer . tm = tm ;
composer . d = d ;
composer . n = n ;
composer . getDateTimeFormat = getDateTimeFormat ;
composer . setDateTimeFormat = setDateTimeFormat ;
composer . mergeDateTimeFormat = mergeDateTimeFormat ;
composer . getNumberFormat = getNumberFormat ;
composer . setNumberFormat = setNumberFormat ;
composer . mergeNumberFormat = mergeNumberFormat ;
composer [ InejctWithOption ] = options . __ injectWithOption ;
composer [ TransrateVNodeSymbol ] = transrateVNode ;
composer [ DatetimePartsSymbol ] = datetimeParts ;
composer [ NumberPartsSymbol ] = numberParts ;
}
if ( true ) {
composer [ EnableEmitter ] = ( emitter ) => {
_ context . __ v_emitter = emitter ;
} ;
composer [ DisableEmitter ] = ( ) => {
_ context . __ v_emitter = void 0 ;
} ;
}
return composer ;
}
function convertComposerOptions ( options ) {
const locale = isString ( options . locale ) ? options . locale : DEFAULT_LOCALE ;
const fallbackLocale = isString ( options . fallbackLocale ) || isArray ( options . fallbackLocale ) || isPlainObject ( options . fallbackLocale ) || options . fallbackLocale === false ? options . fallbackLocale : locale ;
const missing = isFunction ( options . missing ) ? options . missing : void 0 ;
const missingWarn = isBoolean ( options . silentTranslationWarn ) || isRegExp ( options . silentTranslationWarn ) ? ! options . silentTranslationWarn : true ;
const fallbackWarn = isBoolean ( options . silentFallbackWarn ) || isRegExp ( options . silentFallbackWarn ) ? ! options . silentFallbackWarn : true ;
const fallbackRoot = isBoolean ( options . fallbackRoot ) ? options . fallbackRoot : true ;
const fallbackFormat = ! ! options . formatFallbackMessages ;
const modifiers = isPlainObject ( options . modifiers ) ? options . modifiers : { } ;
const pluralizationRules = options . pluralizationRules ;
const postTranslation = isFunction ( options . postTranslation ) ? options . postTranslation : void 0 ;
const warnHtmlMessage = isString ( options . warnHtmlInMessage ) ? options . warnHtmlInMessage !== "off" : true ;
const escapeParameter = ! ! options . escapeParameterHtml ;
const inheritLocale = isBoolean ( options . sync ) ? options . sync : true ;
if ( options . formatter ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_FORMATTER ) ) ;
}
if ( options . preserveDirectiveContent ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_PRESERVE_DIRECTIVE ) ) ;
}
let messages = options . messages ;
if ( isPlainObject ( options . sharedMessages ) ) {
const sharedMessages = options . sharedMessages ;
const locales = Object . keys ( sharedMessages ) ;
messages = locales . reduce ( ( messages2 , locale2 ) => {
const message = messages2 [ locale2 ] || ( messages2 [ locale2 ] = { } ) ;
assign ( message , sharedMessages [ locale2 ] ) ;
return messages2 ;
} , messages || { } ) ;
}
const { __ i18n , __ root , __ injectWithOption } = options ;
const datetimeFormats = options . datetimeFormats ;
const numberFormats = options . numberFormats ;
const flatJson = options . flatJson ;
return {
locale ,
fallbackLocale ,
messages ,
flatJson ,
datetimeFormats ,
numberFormats ,
missing ,
missingWarn ,
fallbackWarn ,
fallbackRoot ,
fallbackFormat ,
modifiers ,
pluralRules : pluralizationRules ,
postTranslation ,
warnHtmlMessage ,
escapeParameter ,
messageResolver : options . messageResolver ,
inheritLocale ,
__ i18n ,
__ root ,
__ injectWithOption
} ;
}
function createVueI18n ( options = { } , VueI18nLegacy ) {
{
const composer = createComposer ( convertComposerOptions ( options ) ) ;
const vueI18n = {
// id
id : composer . id ,
// locale
get locale ( ) {
return composer . locale . value ;
} ,
set locale ( val ) {
composer . locale . value = val ;
} ,
// fallbackLocale
get fallbackLocale ( ) {
return composer . fallbackLocale . value ;
} ,
set fallbackLocale ( val ) {
composer . fallbackLocale . value = val ;
} ,
// messages
get messages ( ) {
return composer . messages . value ;
} ,
// datetimeFormats
get datetimeFormats ( ) {
return composer . datetimeFormats . value ;
} ,
// numberFormats
get numberFormats ( ) {
return composer . numberFormats . value ;
} ,
// availableLocales
get availableLocales ( ) {
return composer . availableLocales ;
} ,
// formatter
get formatter ( ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_FORMATTER ) ) ;
return {
interpolate ( ) {
return [ ] ;
}
} ;
} ,
set formatter ( val ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_FORMATTER ) ) ;
} ,
// missing
get missing ( ) {
return composer . getMissingHandler ( ) ;
} ,
set missing ( handler ) {
composer . setMissingHandler ( handler ) ;
} ,
// silentTranslationWarn
get silentTranslationWarn ( ) {
return isBoolean ( composer . missingWarn ) ? ! composer . missingWarn : composer . missingWarn ;
} ,
set silentTranslationWarn ( val ) {
composer . missingWarn = isBoolean ( val ) ? ! val : val ;
} ,
// silentFallbackWarn
get silentFallbackWarn ( ) {
return isBoolean ( composer . fallbackWarn ) ? ! composer . fallbackWarn : composer . fallbackWarn ;
} ,
set silentFallbackWarn ( val ) {
composer . fallbackWarn = isBoolean ( val ) ? ! val : val ;
} ,
// modifiers
get modifiers ( ) {
return composer . modifiers ;
} ,
// formatFallbackMessages
get formatFallbackMessages ( ) {
return composer . fallbackFormat ;
} ,
set formatFallbackMessages ( val ) {
composer . fallbackFormat = val ;
} ,
// postTranslation
get postTranslation ( ) {
return composer . getPostTranslationHandler ( ) ;
} ,
set postTranslation ( handler ) {
composer . setPostTranslationHandler ( handler ) ;
} ,
// sync
get sync ( ) {
return composer . inheritLocale ;
} ,
set sync ( val ) {
composer . inheritLocale = val ;
} ,
// warnInHtmlMessage
get warnHtmlInMessage ( ) {
return composer . warnHtmlMessage ? "warn" : "off" ;
} ,
set warnHtmlInMessage ( val ) {
composer . warnHtmlMessage = val !== "off" ;
} ,
// escapeParameterHtml
get escapeParameterHtml ( ) {
return composer . escapeParameter ;
} ,
set escapeParameterHtml ( val ) {
composer . escapeParameter = val ;
} ,
// preserveDirectiveContent
get preserveDirectiveContent ( ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_PRESERVE_DIRECTIVE ) ) ;
return true ;
} ,
set preserveDirectiveContent ( val ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_PRESERVE_DIRECTIVE ) ) ;
} ,
// pluralizationRules
get pluralizationRules ( ) {
return composer . pluralRules || { } ;
} ,
// for internal
__ composer : composer ,
// t
t ( ... args ) {
const [ arg1 , arg2 , arg3 ] = args ;
const options2 = { } ;
let list = null ;
let named = null ;
if ( ! isString ( arg1 ) ) {
throw createI18nError ( I18nErrorCodes . INVALID_ARGUMENT ) ;
}
const key = arg1 ;
if ( isString ( arg2 ) ) {
options2 . locale = arg2 ;
} else if ( isArray ( arg2 ) ) {
list = arg2 ;
} else if ( isPlainObject ( arg2 ) ) {
named = arg2 ;
}
if ( isArray ( arg3 ) ) {
list = arg3 ;
} else if ( isPlainObject ( arg3 ) ) {
named = arg3 ;
}
return Reflect . apply ( composer . t , composer , [
key ,
list || named || { } ,
options2
] ) ;
} ,
rt ( ... args ) {
return Reflect . apply ( composer . rt , composer , [ ... args ] ) ;
} ,
// tc
tc ( ... args ) {
const [ arg1 , arg2 , arg3 ] = args ;
const options2 = { plural : 1 } ;
let list = null ;
let named = null ;
if ( ! isString ( arg1 ) ) {
throw createI18nError ( I18nErrorCodes . INVALID_ARGUMENT ) ;
}
const key = arg1 ;
if ( isString ( arg2 ) ) {
options2 . locale = arg2 ;
} else if ( isNumber ( arg2 ) ) {
options2 . plural = arg2 ;
} else if ( isArray ( arg2 ) ) {
list = arg2 ;
} else if ( isPlainObject ( arg2 ) ) {
named = arg2 ;
}
if ( isString ( arg3 ) ) {
options2 . locale = arg3 ;
} else if ( isArray ( arg3 ) ) {
list = arg3 ;
} else if ( isPlainObject ( arg3 ) ) {
named = arg3 ;
}
return Reflect . apply ( composer . t , composer , [
key ,
list || named || { } ,
options2
] ) ;
} ,
// te
te ( key , locale ) {
return composer . te ( key , locale ) ;
} ,
// tm
tm ( key ) {
return composer . tm ( key ) ;
} ,
// getLocaleMessage
getLocaleMessage ( locale ) {
return composer . getLocaleMessage ( locale ) ;
} ,
// setLocaleMessage
setLocaleMessage ( locale , message ) {
composer . setLocaleMessage ( locale , message ) ;
} ,
// mergeLocaleMessage
mergeLocaleMessage ( locale , message ) {
composer . mergeLocaleMessage ( locale , message ) ;
} ,
// d
d ( ... args ) {
return Reflect . apply ( composer . d , composer , [ ... args ] ) ;
} ,
// getDateTimeFormat
getDateTimeFormat ( locale ) {
return composer . getDateTimeFormat ( locale ) ;
} ,
// setDateTimeFormat
setDateTimeFormat ( locale , format2 ) {
composer . setDateTimeFormat ( locale , format2 ) ;
} ,
// mergeDateTimeFormat
mergeDateTimeFormat ( locale , format2 ) {
composer . mergeDateTimeFormat ( locale , format2 ) ;
} ,
// n
n ( ... args ) {
return Reflect . apply ( composer . n , composer , [ ... args ] ) ;
} ,
// getNumberFormat
getNumberFormat ( locale ) {
return composer . getNumberFormat ( locale ) ;
} ,
// setNumberFormat
setNumberFormat ( locale , format2 ) {
composer . setNumberFormat ( locale , format2 ) ;
} ,
// mergeNumberFormat
mergeNumberFormat ( locale , format2 ) {
composer . mergeNumberFormat ( locale , format2 ) ;
} ,
// getChoiceIndex
// eslint-disable-next-line @typescript-eslint/no-unused-vars
getChoiceIndex ( choice , choicesLength ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_GET_CHOICE_INDEX ) ) ;
return - 1 ;
} ,
// for internal
__ onComponentInstanceCreated ( target ) {
const { componentInstanceCreatedListener } = options ;
if ( componentInstanceCreatedListener ) {
componentInstanceCreatedListener ( target , vueI18n ) ;
}
}
} ;
if ( true ) {
vueI18n . __ enableEmitter = ( emitter ) => {
const __ composer = composer ;
__ composer [ EnableEmitter ] && __ composer [ EnableEmitter ] ( emitter ) ;
} ;
vueI18n . __ disableEmitter = ( ) => {
const __ composer = composer ;
__ composer [ DisableEmitter ] && __ composer [ DisableEmitter ] ( ) ;
} ;
}
return vueI18n ;
}
}
var baseFormatProps = {
tag : {
type : [ String , Object ]
} ,
locale : {
type : String
} ,
scope : {
type : String ,
// NOTE: avoid https://github.com/microsoft/rushstack/issues/1050
validator : ( val ) => val === "parent" || val === "global" ,
default : "parent"
/* ComponetI18nScope */
} ,
i18n : {
type : Object
}
} ;
function getInterpolateArg ( { slots } , keys ) {
if ( keys . length === 1 && keys [ 0 ] === "default" ) {
const ret = slots . default ? slots . default ( ) : [ ] ;
return ret . reduce ( ( slot , current ) => {
return slot = [
... slot ,
... isArray ( current . children ) ? current . children : [ current ]
] ;
} , [ ] ) ;
} else {
return keys . reduce ( ( arg , key ) => {
const slot = slots [ key ] ;
if ( slot ) {
arg [ key ] = slot ( ) ;
}
return arg ;
} , { } ) ;
}
}
function getFragmentableTag ( tag ) {
return Fragment ;
}
var Translation = (
/* defineComponent */
{
/* eslint-disable */
name : "i18n-t" ,
props : assign ( {
keypath : {
type : String ,
required : true
} ,
plural : {
type : [ Number , String ] ,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
validator : ( val ) => isNumber ( val ) || ! isNaN ( val )
}
} , baseFormatProps ) ,
/* eslint-enable */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
setup ( props , context ) {
const { slots , attrs } = context ;
const i18n = props . i18n || useI18n ( {
useScope : props . scope ,
__ useComponent : true
} ) ;
return ( ) => {
const keys = Object . keys ( slots ) . filter ( ( key ) => key !== "_" ) ;
const options = { } ;
if ( props . locale ) {
options . locale = props . locale ;
}
if ( props . plural !== void 0 ) {
options . plural = isString ( props . plural ) ? + props . plural : props . plural ;
}
const arg = getInterpolateArg ( context , keys ) ;
const children = i18n [ TransrateVNodeSymbol ] ( props . keypath , arg , options ) ;
const assignedAttrs = assign ( { } , attrs ) ;
const tag = isString ( props . tag ) || isObject ( props . tag ) ? props . tag : getFragmentableTag ( ) ;
return h ( tag , assignedAttrs , children ) ;
} ;
}
}
) ;
function isVNode ( target ) {
return isArray ( target ) && ! isString ( target [ 0 ] ) ;
}
function renderFormatter ( props , context , slotKeys , partFormatter ) {
const { slots , attrs } = context ;
return ( ) => {
const options = { part : true } ;
let overrides = { } ;
if ( props . locale ) {
options . locale = props . locale ;
}
if ( isString ( props . format ) ) {
options . key = props . format ;
} else if ( isObject ( props . format ) ) {
if ( isString ( props . format . key ) ) {
options . key = props . format . key ;
}
overrides = Object . keys ( props . format ) . reduce ( ( options2 , prop ) => {
return slotKeys . includes ( prop ) ? assign ( { } , options2 , { [ prop ] : props . format [ prop ] } ) : options2 ;
} , { } ) ;
}
const parts = partFormatter ( ... [ props . value , options , overrides ] ) ;
let children = [ options . key ] ;
if ( isArray ( parts ) ) {
children = parts . map ( ( part , index ) => {
const slot = slots [ part . type ] ;
const node = slot ? slot ( { [ part . type ] : part . value , index , parts } ) : [ part . value ] ;
if ( isVNode ( node ) ) {
node [ 0 ] . key = ` ${ part . type } - ${ index } ` ;
}
return node ;
} ) ;
} else if ( isString ( parts ) ) {
children = [ parts ] ;
}
const assignedAttrs = assign ( { } , attrs ) ;
const tag = isString ( props . tag ) || isObject ( props . tag ) ? props . tag : getFragmentableTag ( ) ;
return h ( tag , assignedAttrs , children ) ;
} ;
}
var NumberFormat = (
/* defineComponent */
{
/* eslint-disable */
name : "i18n-n" ,
props : assign ( {
value : {
type : Number ,
required : true
} ,
format : {
type : [ String , Object ]
}
} , baseFormatProps ) ,
/* eslint-enable */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
setup ( props , context ) {
const i18n = props . i18n || useI18n ( { useScope : "parent" , __ useComponent : true } ) ;
return renderFormatter ( props , context , NUMBER_FORMAT_OPTIONS_KEYS , ( ... args ) => (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
i18n [ NumberPartsSymbol ] ( ... args )
) ) ;
}
}
) ;
var DatetimeFormat = (
/*defineComponent */
{
/* eslint-disable */
name : "i18n-d" ,
props : assign ( {
value : {
type : [ Number , Date ] ,
required : true
} ,
format : {
type : [ String , Object ]
}
} , baseFormatProps ) ,
/* eslint-enable */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
setup ( props , context ) {
const i18n = props . i18n || useI18n ( { useScope : "parent" , __ useComponent : true } ) ;
return renderFormatter ( props , context , DATETIME_FORMAT_OPTIONS_KEYS , ( ... args ) => (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
i18n [ DatetimePartsSymbol ] ( ... args )
) ) ;
}
}
) ;
function getComposer$2 ( i18n , instance ) {
const i18nInternal = i18n ;
if ( i18n . mode === "composition" ) {
return i18nInternal . __ getInstance ( instance ) || i18n . global ;
} else {
const vueI18n = i18nInternal . __ getInstance ( instance ) ;
return vueI18n != null ? vueI18n . __ composer : i18n . global . __ composer ;
}
}
function vTDirective ( i18n ) {
const _ process = ( binding ) => {
const { instance , modifiers , value } = binding ;
if ( ! instance || ! instance . $ ) {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_ERROR ) ;
}
const composer = getComposer$2 ( i18n , instance . $ ) ;
if ( modifiers . preserve ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_SUPPORTED_PRESERVE ) ) ;
}
const parsedValue = parseValue ( value ) ;
return [
Reflect . apply ( composer . t , composer , [ ... makeParams ( parsedValue ) ] ) ,
composer
] ;
} ;
const register = ( el , binding ) => {
const [ textContent , composer ] = _ process ( binding ) ;
if ( inBrowser && i18n . global === composer ) {
el . __ i18nWatcher = watch ( composer . locale , ( ) => {
binding . instance && binding . instance . $forceUpdate ( ) ;
} ) ;
}
el . __ composer = composer ;
el . textContent = textContent ;
} ;
const unregister = ( el ) => {
if ( inBrowser && el . __ i18nWatcher ) {
el . __ i18nWatcher ( ) ;
el . __ i18nWatcher = void 0 ;
delete el . __ i18nWatcher ;
}
if ( el . __ composer ) {
el . __ composer = void 0 ;
delete el . __ composer ;
}
} ;
const update = ( el , { value } ) => {
if ( el . __ composer ) {
const composer = el . __ composer ;
const parsedValue = parseValue ( value ) ;
el . textContent = Reflect . apply ( composer . t , composer , [
... makeParams ( parsedValue )
] ) ;
}
} ;
const getSSRProps = ( binding ) => {
const [ textContent ] = _ process ( binding ) ;
return { textContent } ;
} ;
return {
created : register ,
unmounted : unregister ,
beforeUpdate : update ,
getSSRProps
} ;
}
function parseValue ( value ) {
if ( isString ( value ) ) {
return { path : value } ;
} else if ( isPlainObject ( value ) ) {
if ( ! ( "path" in value ) ) {
throw createI18nError ( I18nErrorCodes . REQUIRED_VALUE , "path" ) ;
}
return value ;
} else {
throw createI18nError ( I18nErrorCodes . INVALID_VALUE ) ;
}
}
function makeParams ( value ) {
const { path , locale , args , choice , plural } = value ;
const options = { } ;
const named = args || { } ;
if ( isString ( locale ) ) {
options . locale = locale ;
}
if ( isNumber ( choice ) ) {
options . plural = choice ;
}
if ( isNumber ( plural ) ) {
options . plural = plural ;
}
return [ path , named , options ] ;
}
function apply ( app , i18n , ... options ) {
const pluginOptions = isPlainObject ( options [ 0 ] ) ? options [ 0 ] : { } ;
const useI18nComponentName = ! ! pluginOptions . useI18nComponentName ;
const globalInstall = isBoolean ( pluginOptions . globalInstall ) ? pluginOptions . globalInstall : true ;
if ( globalInstall && useI18nComponentName ) {
warn ( getWarnMessage2 ( I18nWarnCodes . COMPONENT_NAME_LEGACY_COMPATIBLE , {
name : Translation . name
} ) ) ;
}
if ( globalInstall ) {
app . component ( ! useI18nComponentName ? Translation . name : "i18n" , Translation ) ;
app . component ( NumberFormat . name , NumberFormat ) ;
app . component ( DatetimeFormat . name , DatetimeFormat ) ;
}
{
app . directive ( "t" , vTDirective ( i18n ) ) ;
}
}
var VUE_I18N_COMPONENT_TYPES = "vue-i18n: composer properties" ;
var devtoolsApi ;
async function enableDevTools ( app , i18n ) {
return new Promise ( ( resolve , reject ) => {
try {
setupDevtoolsPlugin ( {
id : "vue-devtools-plugin-vue-i18n" ,
label : VueDevToolsLabels [
"vue-devtools-plugin-vue-i18n"
/* PLUGIN */
] ,
packageName : "vue-i18n" ,
homepage : "https://vue-i18n.intlify.dev" ,
logo : "https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png" ,
componentStateTypes : [ VUE_I18N_COMPONENT_TYPES ] ,
app
// eslint-disable-line @typescript-eslint/no-explicit-any
} , ( api ) => {
devtoolsApi = api ;
api . on . visitComponentTree ( ( { componentInstance , treeNode } ) => {
updateComponentTreeTags ( componentInstance , treeNode , i18n ) ;
} ) ;
api . on . inspectComponent ( ( { componentInstance , instanceData } ) => {
if ( componentInstance . vnode . el && componentInstance . vnode . el . __ VUE_I18N__ && instanceData ) {
if ( i18n . mode === "legacy" ) {
if ( componentInstance . vnode . el . __ VUE_I18N__ !== i18n . global . __ composer ) {
inspectComposer ( instanceData , componentInstance . vnode . el . __ VUE_I18N__ ) ;
}
} else {
inspectComposer ( instanceData , componentInstance . vnode . el . __ VUE_I18N__ ) ;
}
}
} ) ;
api . addInspector ( {
id : "vue-i18n-resource-inspector" ,
label : VueDevToolsLabels [
"vue-i18n-resource-inspector"
/* CUSTOM_INSPECTOR */
] ,
icon : "language" ,
treeFilterPlaceholder : VueDevToolsPlaceholders [
"vue-i18n-resource-inspector"
/* CUSTOM_INSPECTOR */
]
} ) ;
api . on . getInspectorTree ( ( payload ) => {
if ( payload . app === app && payload . inspectorId === "vue-i18n-resource-inspector" ) {
registerScope ( payload , i18n ) ;
}
} ) ;
const roots = /* @__PURE__ */ new Map ( ) ;
api . on . getInspectorState ( async ( payload ) => {
if ( payload . app === app && payload . inspectorId === "vue-i18n-resource-inspector" ) {
api . unhighlightElement ( ) ;
inspectScope ( payload , i18n ) ;
if ( payload . nodeId === "global" ) {
if ( ! roots . has ( payload . app ) ) {
const [ root ] = await api . getComponentInstances ( payload . app ) ;
roots . set ( payload . app , root ) ;
}
api . highlightElement ( roots . get ( payload . app ) ) ;
} else {
const instance = getComponentInstance ( payload . nodeId , i18n ) ;
instance && api . highlightElement ( instance ) ;
}
}
} ) ;
api . on . editInspectorState ( ( payload ) => {
if ( payload . app === app && payload . inspectorId === "vue-i18n-resource-inspector" ) {
editScope ( payload , i18n ) ;
}
} ) ;
api . addTimelineLayer ( {
id : "vue-i18n-timeline" ,
label : VueDevToolsLabels [
"vue-i18n-timeline"
/* TIMELINE */
] ,
color : VueDevToolsTimelineColors [
"vue-i18n-timeline"
/* TIMELINE */
]
} ) ;
resolve ( true ) ;
} ) ;
} catch ( e ) {
console . error ( e ) ;
reject ( false ) ;
}
} ) ;
}
function getI18nScopeLable ( instance ) {
return instance . type . name || instance . type . displayName || instance . type . __ file || "Anonymous" ;
}
function updateComponentTreeTags ( instance , treeNode , i18n ) {
const global2 = i18n . mode === "composition" ? i18n . global : i18n . global . __ composer ;
if ( instance && instance . vnode . el && instance . vnode . el . __ VUE_I18N__ ) {
if ( instance . vnode . el . __ VUE_I18N__ !== global2 ) {
const tag = {
label : ` i18n ( ${ getI18nScopeLable ( instance ) } Scope) ` ,
textColor : 0 ,
backgroundColor : 16764185
} ;
treeNode . tags . push ( tag ) ;
}
}
}
function inspectComposer ( instanceData , composer ) {
const type = VUE_I18N_COMPONENT_TYPES ;
instanceData . state . push ( {
type ,
key : "locale" ,
editable : true ,
value : composer . locale . value
} ) ;
instanceData . state . push ( {
type ,
key : "availableLocales" ,
editable : false ,
value : composer . availableLocales
} ) ;
instanceData . state . push ( {
type ,
key : "fallbackLocale" ,
editable : true ,
value : composer . fallbackLocale . value
} ) ;
instanceData . state . push ( {
type ,
key : "inheritLocale" ,
editable : true ,
value : composer . inheritLocale
} ) ;
instanceData . state . push ( {
type ,
key : "messages" ,
editable : false ,
value : getLocaleMessageValue ( composer . messages . value )
} ) ;
{
instanceData . state . push ( {
type ,
key : "datetimeFormats" ,
editable : false ,
value : composer . datetimeFormats . value
} ) ;
instanceData . state . push ( {
type ,
key : "numberFormats" ,
editable : false ,
value : composer . numberFormats . value
} ) ;
}
}
function getLocaleMessageValue ( messages ) {
const value = { } ;
Object . keys ( messages ) . forEach ( ( key ) => {
const v = messages [ key ] ;
if ( isFunction ( v ) && "source" in v ) {
value [ key ] = getMessageFunctionDetails ( v ) ;
} else if ( isObject ( v ) ) {
value [ key ] = getLocaleMessageValue ( v ) ;
} else {
value [ key ] = v ;
}
} ) ;
return value ;
}
var ESC = {
"<" : "<" ,
">" : ">" ,
'"' : """ ,
"&" : "&"
} ;
function escape ( s ) {
return s . replace ( /[<>"&]/g , escapeChar ) ;
}
function escapeChar ( a ) {
return ESC [ a ] || a ;
}
function getMessageFunctionDetails ( func ) {
const argString = func . source ? ` (" ${ escape ( func . source ) } ") ` : ` (?) ` ;
return {
_ custom : {
type : "function" ,
display : ` <span>ƒ</span> ${ argString } `
}
} ;
}
function registerScope ( payload , i18n ) {
payload . rootNodes . push ( {
id : "global" ,
label : "Global Scope"
} ) ;
const global2 = i18n . mode === "composition" ? i18n . global : i18n . global . __ composer ;
for ( const [ keyInstance , instance ] of i18n . __ instances ) {
const composer = i18n . mode === "composition" ? instance : instance . __ composer ;
if ( global2 === composer ) {
continue ;
}
payload . rootNodes . push ( {
id : composer . id . toString ( ) ,
label : ` ${ getI18nScopeLable ( keyInstance ) } Scope `
} ) ;
}
}
function getComponentInstance ( nodeId , i18n ) {
let instance = null ;
if ( nodeId !== "global" ) {
for ( const [ component , composer ] of i18n . __ instances . entries ( ) ) {
if ( composer . id . toString ( ) === nodeId ) {
instance = component ;
break ;
}
}
}
return instance ;
}
function getComposer$1 ( nodeId , i18n ) {
if ( nodeId === "global" ) {
return i18n . mode === "composition" ? i18n . global : i18n . global . __ composer ;
} else {
const instance = Array . from ( i18n . __ instances . values ( ) ) . find ( ( item ) => item . id . toString ( ) === nodeId ) ;
if ( instance ) {
return i18n . mode === "composition" ? instance : instance . __ composer ;
} else {
return null ;
}
}
}
function inspectScope ( payload , i18n ) {
const composer = getComposer$1 ( payload . nodeId , i18n ) ;
if ( composer ) {
payload . state = makeScopeInspectState ( composer ) ;
}
return null ;
}
function makeScopeInspectState ( composer ) {
const state = { } ;
const localeType = "Locale related info" ;
const localeStates = [
{
type : localeType ,
key : "locale" ,
editable : true ,
value : composer . locale . value
} ,
{
type : localeType ,
key : "fallbackLocale" ,
editable : true ,
value : composer . fallbackLocale . value
} ,
{
type : localeType ,
key : "availableLocales" ,
editable : false ,
value : composer . availableLocales
} ,
{
type : localeType ,
key : "inheritLocale" ,
editable : true ,
value : composer . inheritLocale
}
] ;
state [ localeType ] = localeStates ;
const localeMessagesType = "Locale messages info" ;
const localeMessagesStates = [
{
type : localeMessagesType ,
key : "messages" ,
editable : false ,
value : getLocaleMessageValue ( composer . messages . value )
}
] ;
state [ localeMessagesType ] = localeMessagesStates ;
{
const datetimeFormatsType = "Datetime formats info" ;
const datetimeFormatsStates = [
{
type : datetimeFormatsType ,
key : "datetimeFormats" ,
editable : false ,
value : composer . datetimeFormats . value
}
] ;
state [ datetimeFormatsType ] = datetimeFormatsStates ;
const numberFormatsType = "Datetime formats info" ;
const numberFormatsStates = [
{
type : numberFormatsType ,
key : "numberFormats" ,
editable : false ,
value : composer . numberFormats . value
}
] ;
state [ numberFormatsType ] = numberFormatsStates ;
}
return state ;
}
function addTimelineEvent ( event , payload ) {
if ( devtoolsApi ) {
let groupId ;
if ( payload && "groupId" in payload ) {
groupId = payload . groupId ;
delete payload . groupId ;
}
devtoolsApi . addTimelineEvent ( {
layerId : "vue-i18n-timeline" ,
event : {
title : event ,
groupId ,
time : Date . now ( ) ,
meta : { } ,
data : payload || { } ,
logType : event === "compile-error" ? "error" : event === "fallback" || event === "missing" ? "warning" : "default"
}
} ) ;
}
}
function editScope ( payload , i18n ) {
const composer = getComposer$1 ( payload . nodeId , i18n ) ;
if ( composer ) {
const [ field ] = payload . path ;
if ( field === "locale" && isString ( payload . state . value ) ) {
composer . locale . value = payload . state . value ;
} else if ( field === "fallbackLocale" && ( isString ( payload . state . value ) || isArray ( payload . state . value ) || isObject ( payload . state . value ) ) ) {
composer . fallbackLocale . value = payload . state . value ;
} else if ( field === "inheritLocale" && isBoolean ( payload . state . value ) ) {
composer . inheritLocale = payload . state . value ;
}
}
}
function defineMixin ( vuei18n , composer , i18n ) {
return {
beforeCreate ( ) {
const instance = getCurrentInstance ( ) ;
if ( ! instance ) {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_ERROR ) ;
}
const options = this . $options ;
if ( options . i18n ) {
const optionsI18n = options . i18n ;
if ( options . __ i18n ) {
optionsI18n . __ i18n = options . __ i18n ;
}
optionsI18n . __ root = composer ;
if ( this === this . $root ) {
this . $i18n = mergeToRoot ( vuei18n , optionsI18n ) ;
} else {
optionsI18n . __ injectWithOption = true ;
this . $i18n = createVueI18n ( optionsI18n ) ;
}
} else if ( options . __ i18n ) {
if ( this === this . $root ) {
this . $i18n = mergeToRoot ( vuei18n , options ) ;
} else {
this . $i18n = createVueI18n ( {
__ i18n : options . __ i18n ,
__ injectWithOption : true ,
__ root : composer
} ) ;
}
} else {
this . $i18n = vuei18n ;
}
if ( options . __ i18nGlobal ) {
adjustI18nResources ( composer , options , options ) ;
}
vuei18n . __ onComponentInstanceCreated ( this . $i18n ) ;
i18n . __ setInstance ( instance , this . $i18n ) ;
this . $t = ( ... args ) => this . $i18n . t ( ... args ) ;
this . $rt = ( ... args ) => this . $i18n . rt ( ... args ) ;
this . $tc = ( ... args ) => this . $i18n . tc ( ... args ) ;
this . $te = ( key , locale ) => this . $i18n . te ( key , locale ) ;
this . $d = ( ... args ) => this . $i18n . d ( ... args ) ;
this . $n = ( ... args ) => this . $i18n . n ( ... args ) ;
this . $tm = ( key ) => this . $i18n . tm ( key ) ;
} ,
mounted ( ) {
if ( this . $el && this . $i18n ) {
this . $el . __ VUE_I18N__ = this . $i18n . __ composer ;
const emitter = this . __ v_emitter = createEmitter ( ) ;
const _ vueI18n = this . $i18n ;
_ vueI18n . __ enableEmitter && _ vueI18n . __ enableEmitter ( emitter ) ;
emitter . on ( "*" , addTimelineEvent ) ;
}
} ,
unmounted ( ) {
const instance = getCurrentInstance ( ) ;
if ( ! instance ) {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_ERROR ) ;
}
if ( this . $el && this . $el . __ VUE_I18N__ ) {
if ( this . __ v_emitter ) {
this . __ v_emitter . off ( "*" , addTimelineEvent ) ;
delete this . __ v_emitter ;
}
if ( this . $i18n ) {
const _ vueI18n = this . $i18n ;
_ vueI18n . __ disableEmitter && _ vueI18n . __ disableEmitter ( ) ;
delete this . $el . __ VUE_I18N__ ;
}
}
delete this . $t ;
delete this . $rt ;
delete this . $tc ;
delete this . $te ;
delete this . $d ;
delete this . $n ;
delete this . $tm ;
i18n . __ deleteInstance ( instance ) ;
delete this . $i18n ;
}
} ;
}
function mergeToRoot ( root , options ) {
root . locale = options . locale || root . locale ;
root . fallbackLocale = options . fallbackLocale || root . fallbackLocale ;
root . missing = options . missing || root . missing ;
root . silentTranslationWarn = options . silentTranslationWarn || root . silentFallbackWarn ;
root . silentFallbackWarn = options . silentFallbackWarn || root . silentFallbackWarn ;
root . formatFallbackMessages = options . formatFallbackMessages || root . formatFallbackMessages ;
root . postTranslation = options . postTranslation || root . postTranslation ;
root . warnHtmlInMessage = options . warnHtmlInMessage || root . warnHtmlInMessage ;
root . escapeParameterHtml = options . escapeParameterHtml || root . escapeParameterHtml ;
root . sync = options . sync || root . sync ;
root . __ composer [ SetPluralRulesSymbol ] ( options . pluralizationRules || root . pluralizationRules ) ;
const messages = getLocaleMessages ( root . locale , {
messages : options . messages ,
__ i18n : options . __ i18n
} ) ;
Object . keys ( messages ) . forEach ( ( locale ) => root . mergeLocaleMessage ( locale , messages [ locale ] ) ) ;
if ( options . datetimeFormats ) {
Object . keys ( options . datetimeFormats ) . forEach ( ( locale ) => root . mergeDateTimeFormat ( locale , options . datetimeFormats [ locale ] ) ) ;
}
if ( options . numberFormats ) {
Object . keys ( options . numberFormats ) . forEach ( ( locale ) => root . mergeNumberFormat ( locale , options . numberFormats [ locale ] ) ) ;
}
return root ;
}
var I18nInjectionKey = makeSymbol ( "global-vue-i18n" ) ;
function createI18n ( options = { } , VueI18nLegacy ) {
const __ legacyMode = __ VUE_I18N_LEGACY_API__ && isBoolean ( options . legacy ) ? options . legacy : __ VUE_I18N_LEGACY_API__ ;
const __ globalInjection = isBoolean ( options . globalInjection ) ? options . globalInjection : true ;
const __ allowComposition = __ VUE_I18N_LEGACY_API__ && __ legacyMode ? ! ! options . allowComposition : true ;
const __ instances = /* @__PURE__ */ new Map ( ) ;
const [ globalScope , __ global ] = createGlobal ( options , __ legacyMode ) ;
const symbol = makeSymbol ( true ? "vue-i18n" : "" ) ;
function __ getInstance ( component ) {
return __ instances . get ( component ) || null ;
}
function __ setInstance ( component , instance ) {
__ instances . set ( component , instance ) ;
}
function __ deleteInstance ( component ) {
__ instances . delete ( component ) ;
}
{
const i18n = {
// mode
get mode ( ) {
return __ VUE_I18N_LEGACY_API__ && __ legacyMode ? "legacy" : "composition" ;
} ,
// allowComposition
get allowComposition ( ) {
return __ allowComposition ;
} ,
// install plugin
async install ( app , ... options2 ) {
if ( true ) {
app . __ VUE_I18N__ = i18n ;
}
app . __ VUE_I18N_SYMBOL__ = symbol ;
app . provide ( app . __ VUE_I18N_SYMBOL__ , i18n ) ;
if ( ! __ legacyMode && __ globalInjection ) {
injectGlobalFields ( app , i18n . global ) ;
}
if ( __ VUE_I18N_FULL_INSTALL__ ) {
apply ( app , i18n , ... options2 ) ;
}
if ( __ VUE_I18N_LEGACY_API__ && __ legacyMode ) {
app . mixin ( defineMixin ( __ global , __ global . __ composer , i18n ) ) ;
}
const unmountApp = app . unmount ;
app . unmount = ( ) => {
i18n . dispose ( ) ;
unmountApp ( ) ;
} ;
if ( true ) {
const ret = await enableDevTools ( app , i18n ) ;
if ( ! ret ) {
throw createI18nError ( I18nErrorCodes . CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN ) ;
}
const emitter = createEmitter ( ) ;
if ( __ legacyMode ) {
const _ vueI18n = __ global ;
_ vueI18n . __ enableEmitter && _ vueI18n . __ enableEmitter ( emitter ) ;
} else {
const _ composer = __ global ;
_ composer [ EnableEmitter ] && _ composer [ EnableEmitter ] ( emitter ) ;
}
emitter . on ( "*" , addTimelineEvent ) ;
}
} ,
// global accessor
get global ( ) {
return __ global ;
} ,
dispose ( ) {
globalScope . stop ( ) ;
} ,
// @internal
__ instances ,
// @internal
__ getInstance ,
// @internal
__ setInstance ,
// @internal
__ deleteInstance
} ;
return i18n ;
}
}
function useI18n ( options = { } ) {
const instance = getCurrentInstance ( ) ;
if ( instance == null ) {
throw createI18nError ( I18nErrorCodes . MUST_BE_CALL_SETUP_TOP ) ;
}
if ( ! instance . isCE && instance . appContext . app != null && ! instance . appContext . app . __ VUE_I18N_SYMBOL__ ) {
throw createI18nError ( I18nErrorCodes . NOT_INSLALLED ) ;
}
const i18n = getI18nInstance ( instance ) ;
const global2 = getGlobalComposer ( i18n ) ;
const componentOptions = getComponentOptions ( instance ) ;
const scope = getScope ( options , componentOptions ) ;
if ( __ VUE_I18N_LEGACY_API__ ) {
if ( i18n . mode === "legacy" && ! options . __ useComponent ) {
if ( ! i18n . allowComposition ) {
throw createI18nError ( I18nErrorCodes . NOT_AVAILABLE_IN_LEGACY_MODE ) ;
}
return useI18nForLegacy ( instance , scope , global2 , options ) ;
}
}
if ( scope === "global" ) {
adjustI18nResources ( global2 , options , componentOptions ) ;
return global2 ;
}
if ( scope === "parent" ) {
let composer2 = getComposer ( i18n , instance , options . __ useComponent ) ;
if ( composer2 == null ) {
if ( true ) {
warn ( getWarnMessage2 ( I18nWarnCodes . NOT_FOUND_PARENT_SCOPE ) ) ;
}
composer2 = global2 ;
}
return composer2 ;
}
const i18nInternal = i18n ;
let composer = i18nInternal . __ getInstance ( instance ) ;
if ( composer == null ) {
const composerOptions = assign ( { } , options ) ;
if ( "__i18n" in componentOptions ) {
composerOptions . __ i18n = componentOptions . __ i18n ;
}
if ( global2 ) {
composerOptions . __ root = global2 ;
}
composer = createComposer ( composerOptions ) ;
setupLifeCycle ( i18nInternal , instance , composer ) ;
i18nInternal . __ setInstance ( instance , composer ) ;
}
return composer ;
}
var castToVueI18n = ( i18n ) => {
if ( ! ( __ VUE_I18N_BRIDGE__ in i18n ) ) {
throw createI18nError ( I18nErrorCodes . NOT_COMPATIBLE_LEGACY_VUE_I18N ) ;
}
return i18n ;
} ;
function createGlobal ( options , legacyMode , VueI18nLegacy ) {
const scope = effectScope ( ) ;
{
const obj = __ VUE_I18N_LEGACY_API__ && legacyMode ? scope . run ( ( ) => createVueI18n ( options ) ) : scope . run ( ( ) => createComposer ( options ) ) ;
if ( obj == null ) {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_ERROR ) ;
}
return [ scope , obj ] ;
}
}
function getI18nInstance ( instance ) {
{
const i18n = inject ( ! instance . isCE ? instance . appContext . app . __ VUE_I18N_SYMBOL__ : I18nInjectionKey ) ;
if ( ! i18n ) {
throw createI18nError ( ! instance . isCE ? I18nErrorCodes . UNEXPECTED_ERROR : I18nErrorCodes . NOT_INSLALLED_WITH_PROVIDE ) ;
}
return i18n ;
}
}
function getScope ( options , componentOptions ) {
return isEmptyObject ( options ) ? "__i18n" in componentOptions ? "local" : "global" : ! options . useScope ? "local" : options . useScope ;
}
function getGlobalComposer ( i18n ) {
return i18n . mode === "composition" ? i18n . global : i18n . global . __ composer ;
}
function getComposer ( i18n , target , useComponent = false ) {
let composer = null ;
const root = target . root ;
let current = target . parent ;
while ( current != null ) {
const i18nInternal = i18n ;
if ( i18n . mode === "composition" ) {
composer = i18nInternal . __ getInstance ( current ) ;
} else {
if ( __ VUE_I18N_LEGACY_API__ ) {
const vueI18n = i18nInternal . __ getInstance ( current ) ;
if ( vueI18n != null ) {
composer = vueI18n . __ composer ;
if ( useComponent && composer && ! composer [ InejctWithOption ] ) {
composer = null ;
}
}
}
}
if ( composer != null ) {
break ;
}
if ( root === current ) {
break ;
}
current = current . parent ;
}
return composer ;
}
function setupLifeCycle ( i18n , target , composer ) {
let emitter = null ;
{
onMounted ( ( ) => {
if ( target . vnode . el ) {
target . vnode . el . __ VUE_I18N__ = composer ;
emitter = createEmitter ( ) ;
const _ composer = composer ;
_ composer [ EnableEmitter ] && _ composer [ EnableEmitter ] ( emitter ) ;
emitter . on ( "*" , addTimelineEvent ) ;
}
} , target ) ;
onUnmounted ( ( ) => {
if ( target . vnode . el && target . vnode . el . __ VUE_I18N__ ) {
emitter && emitter . off ( "*" , addTimelineEvent ) ;
const _ composer = composer ;
_ composer [ DisableEmitter ] && _ composer [ DisableEmitter ] ( ) ;
delete target . vnode . el . __ VUE_I18N__ ;
}
i18n . __ deleteInstance ( target ) ;
} , target ) ;
}
}
function useI18nForLegacy ( instance , scope , root , options = { } ) {
const isLocale = scope === "local" ;
const _ composer = shallowRef ( null ) ;
if ( isLocale && instance . proxy && ! ( instance . proxy . $options . i18n || instance . proxy . $options . __ i18n ) ) {
throw createI18nError ( I18nErrorCodes . MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION ) ;
}
const _ inheritLocale = isBoolean ( options . inheritLocale ) ? options . inheritLocale : true ;
const _ locale = ref (
// prettier-ignore
isLocale && _ inheritLocale ? root . locale . value : isString ( options . locale ) ? options . locale : DEFAULT_LOCALE
) ;
const _ fallbackLocale = ref (
// prettier-ignore
isLocale && _ inheritLocale ? root . fallbackLocale . value : isString ( options . fallbackLocale ) || isArray ( options . fallbackLocale ) || isPlainObject ( options . fallbackLocale ) || options . fallbackLocale === false ? options . fallbackLocale : _ locale . value
) ;
const _ messages = ref ( getLocaleMessages ( _ locale . value , options ) ) ;
const _ datetimeFormats = ref ( isPlainObject ( options . datetimeFormats ) ? options . datetimeFormats : { [ _ locale . value ] : { } } ) ;
const _ numberFormats = ref ( isPlainObject ( options . numberFormats ) ? options . numberFormats : { [ _ locale . value ] : { } } ) ;
const _ missingWarn = isLocale ? root . missingWarn : isBoolean ( options . missingWarn ) || isRegExp ( options . missingWarn ) ? options . missingWarn : true ;
const _ fallbackWarn = isLocale ? root . fallbackWarn : isBoolean ( options . fallbackWarn ) || isRegExp ( options . fallbackWarn ) ? options . fallbackWarn : true ;
const _ fallbackRoot = isLocale ? root . fallbackRoot : isBoolean ( options . fallbackRoot ) ? options . fallbackRoot : true ;
const _ fallbackFormat = ! ! options . fallbackFormat ;
const _ missing = isFunction ( options . missing ) ? options . missing : null ;
const _ postTranslation = isFunction ( options . postTranslation ) ? options . postTranslation : null ;
const _ warnHtmlMessage = isLocale ? root . warnHtmlMessage : isBoolean ( options . warnHtmlMessage ) ? options . warnHtmlMessage : true ;
const _ escapeParameter = ! ! options . escapeParameter ;
const _ modifiers = isLocale ? root . modifiers : isPlainObject ( options . modifiers ) ? options . modifiers : { } ;
const _ pluralRules = options . pluralRules || isLocale && root . pluralRules ;
function trackReactivityValues ( ) {
return [
_ locale . value ,
_ fallbackLocale . value ,
_ messages . value ,
_ datetimeFormats . value ,
_ numberFormats . value
] ;
}
const locale = computed ( {
get : ( ) => {
return _ composer . value ? _ composer . value . locale . value : _ locale . value ;
} ,
set : ( val ) => {
if ( _ composer . value ) {
_ composer . value . locale . value = val ;
}
_ locale . value = val ;
}
} ) ;
const fallbackLocale = computed ( {
get : ( ) => {
return _ composer . value ? _ composer . value . fallbackLocale . value : _ fallbackLocale . value ;
} ,
set : ( val ) => {
if ( _ composer . value ) {
_ composer . value . fallbackLocale . value = val ;
}
_ fallbackLocale . value = val ;
}
} ) ;
const messages = computed ( ( ) => {
if ( _ composer . value ) {
return _ composer . value . messages . value ;
} else {
return _ messages . value ;
}
} ) ;
const datetimeFormats = computed ( ( ) => _ datetimeFormats . value ) ;
const numberFormats = computed ( ( ) => _ numberFormats . value ) ;
function getPostTranslationHandler ( ) {
return _ composer . value ? _ composer . value . getPostTranslationHandler ( ) : _ postTranslation ;
}
function setPostTranslationHandler ( handler ) {
if ( _ composer . value ) {
_ composer . value . setPostTranslationHandler ( handler ) ;
}
}
function getMissingHandler ( ) {
return _ composer . value ? _ composer . value . getMissingHandler ( ) : _ missing ;
}
function setMissingHandler ( handler ) {
if ( _ composer . value ) {
_ composer . value . setMissingHandler ( handler ) ;
}
}
function warpWithDeps ( fn ) {
trackReactivityValues ( ) ;
return fn ( ) ;
}
function t ( ... args ) {
return _ composer . value ? warpWithDeps ( ( ) => Reflect . apply ( _ composer . value . t , null , [ ... args ] ) ) : warpWithDeps ( ( ) => "" ) ;
}
function rt ( ... args ) {
return _ composer . value ? Reflect . apply ( _ composer . value . rt , null , [ ... args ] ) : "" ;
}
function d ( ... args ) {
return _ composer . value ? warpWithDeps ( ( ) => Reflect . apply ( _ composer . value . d , null , [ ... args ] ) ) : warpWithDeps ( ( ) => "" ) ;
}
function n ( ... args ) {
return _ composer . value ? warpWithDeps ( ( ) => Reflect . apply ( _ composer . value . n , null , [ ... args ] ) ) : warpWithDeps ( ( ) => "" ) ;
}
function tm ( key ) {
return _ composer . value ? _ composer . value . tm ( key ) : { } ;
}
function te ( key , locale2 ) {
return _ composer . value ? _ composer . value . te ( key , locale2 ) : false ;
}
function getLocaleMessage ( locale2 ) {
return _ composer . value ? _ composer . value . getLocaleMessage ( locale2 ) : { } ;
}
function setLocaleMessage ( locale2 , message ) {
if ( _ composer . value ) {
_ composer . value . setLocaleMessage ( locale2 , message ) ;
_ messages . value [ locale2 ] = message ;
}
}
function mergeLocaleMessage ( locale2 , message ) {
if ( _ composer . value ) {
_ composer . value . mergeLocaleMessage ( locale2 , message ) ;
}
}
function getDateTimeFormat ( locale2 ) {
return _ composer . value ? _ composer . value . getDateTimeFormat ( locale2 ) : { } ;
}
function setDateTimeFormat ( locale2 , format2 ) {
if ( _ composer . value ) {
_ composer . value . setDateTimeFormat ( locale2 , format2 ) ;
_ datetimeFormats . value [ locale2 ] = format2 ;
}
}
function mergeDateTimeFormat ( locale2 , format2 ) {
if ( _ composer . value ) {
_ composer . value . mergeDateTimeFormat ( locale2 , format2 ) ;
}
}
function getNumberFormat ( locale2 ) {
return _ composer . value ? _ composer . value . getNumberFormat ( locale2 ) : { } ;
}
function setNumberFormat ( locale2 , format2 ) {
if ( _ composer . value ) {
_ composer . value . setNumberFormat ( locale2 , format2 ) ;
_ numberFormats . value [ locale2 ] = format2 ;
}
}
function mergeNumberFormat ( locale2 , format2 ) {
if ( _ composer . value ) {
_ composer . value . mergeNumberFormat ( locale2 , format2 ) ;
}
}
const wrapper = {
get id ( ) {
return _ composer . value ? _ composer . value . id : - 1 ;
} ,
locale ,
fallbackLocale ,
messages ,
datetimeFormats ,
numberFormats ,
get inheritLocale ( ) {
return _ composer . value ? _ composer . value . inheritLocale : _ inheritLocale ;
} ,
set inheritLocale ( val ) {
if ( _ composer . value ) {
_ composer . value . inheritLocale = val ;
}
} ,
get availableLocales ( ) {
return _ composer . value ? _ composer . value . availableLocales : Object . keys ( _ messages . value ) ;
} ,
get modifiers ( ) {
return _ composer . value ? _ composer . value . modifiers : _ modifiers ;
} ,
get pluralRules ( ) {
return _ composer . value ? _ composer . value . pluralRules : _ pluralRules ;
} ,
get isGlobal ( ) {
return _ composer . value ? _ composer . value . isGlobal : false ;
} ,
get missingWarn ( ) {
return _ composer . value ? _ composer . value . missingWarn : _ missingWarn ;
} ,
set missingWarn ( val ) {
if ( _ composer . value ) {
_ composer . value . missingWarn = val ;
}
} ,
get fallbackWarn ( ) {
return _ composer . value ? _ composer . value . fallbackWarn : _ fallbackWarn ;
} ,
set fallbackWarn ( val ) {
if ( _ composer . value ) {
_ composer . value . missingWarn = val ;
}
} ,
get fallbackRoot ( ) {
return _ composer . value ? _ composer . value . fallbackRoot : _ fallbackRoot ;
} ,
set fallbackRoot ( val ) {
if ( _ composer . value ) {
_ composer . value . fallbackRoot = val ;
}
} ,
get fallbackFormat ( ) {
return _ composer . value ? _ composer . value . fallbackFormat : _ fallbackFormat ;
} ,
set fallbackFormat ( val ) {
if ( _ composer . value ) {
_ composer . value . fallbackFormat = val ;
}
} ,
get warnHtmlMessage ( ) {
return _ composer . value ? _ composer . value . warnHtmlMessage : _ warnHtmlMessage ;
} ,
set warnHtmlMessage ( val ) {
if ( _ composer . value ) {
_ composer . value . warnHtmlMessage = val ;
}
} ,
get escapeParameter ( ) {
return _ composer . value ? _ composer . value . escapeParameter : _ escapeParameter ;
} ,
set escapeParameter ( val ) {
if ( _ composer . value ) {
_ composer . value . escapeParameter = val ;
}
} ,
t ,
getPostTranslationHandler ,
setPostTranslationHandler ,
getMissingHandler ,
setMissingHandler ,
rt ,
d ,
n ,
tm ,
te ,
getLocaleMessage ,
setLocaleMessage ,
mergeLocaleMessage ,
getDateTimeFormat ,
setDateTimeFormat ,
mergeDateTimeFormat ,
getNumberFormat ,
setNumberFormat ,
mergeNumberFormat
} ;
function sync ( composer ) {
composer . locale . value = _ locale . value ;
composer . fallbackLocale . value = _ fallbackLocale . value ;
Object . keys ( _ messages . value ) . forEach ( ( locale2 ) => {
composer . mergeLocaleMessage ( locale2 , _ messages . value [ locale2 ] ) ;
} ) ;
Object . keys ( _ datetimeFormats . value ) . forEach ( ( locale2 ) => {
composer . mergeDateTimeFormat ( locale2 , _ datetimeFormats . value [ locale2 ] ) ;
} ) ;
Object . keys ( _ numberFormats . value ) . forEach ( ( locale2 ) => {
composer . mergeNumberFormat ( locale2 , _ numberFormats . value [ locale2 ] ) ;
} ) ;
composer . escapeParameter = _ escapeParameter ;
composer . fallbackFormat = _ fallbackFormat ;
composer . fallbackRoot = _ fallbackRoot ;
composer . fallbackWarn = _ fallbackWarn ;
composer . missingWarn = _ missingWarn ;
composer . warnHtmlMessage = _ warnHtmlMessage ;
}
onBeforeMount ( ( ) => {
if ( instance . proxy == null || instance . proxy . $i18n == null ) {
throw createI18nError ( I18nErrorCodes . NOT_AVAILABLE_COMPOSITION_IN_LEGACY ) ;
}
const composer = _ composer . value = instance . proxy . $i18n . __ composer ;
if ( scope === "global" ) {
_ locale . value = composer . locale . value ;
_ fallbackLocale . value = composer . fallbackLocale . value ;
_ messages . value = composer . messages . value ;
_ datetimeFormats . value = composer . datetimeFormats . value ;
_ numberFormats . value = composer . numberFormats . value ;
} else if ( isLocale ) {
sync ( composer ) ;
}
} ) ;
return wrapper ;
}
var globalExportProps = [
"locale" ,
"fallbackLocale" ,
"availableLocales"
] ;
var globalExportMethods = [ "t" , "rt" , "d" , "n" , "tm" ] ;
function injectGlobalFields ( app , composer ) {
const i18n = /* @__PURE__ */ Object . create ( null ) ;
globalExportProps . forEach ( ( prop ) => {
const desc = Object . getOwnPropertyDescriptor ( composer , prop ) ;
if ( ! desc ) {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_ERROR ) ;
}
const wrap = isRef ( desc . value ) ? {
get ( ) {
return desc . value . value ;
} ,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
set ( val ) {
desc . value . value = val ;
}
} : {
get ( ) {
return desc . get && desc . get ( ) ;
}
} ;
Object . defineProperty ( i18n , prop , wrap ) ;
} ) ;
app . config . globalProperties . $i18n = i18n ;
globalExportMethods . forEach ( ( method ) => {
const desc = Object . getOwnPropertyDescriptor ( composer , method ) ;
if ( ! desc || ! desc . value ) {
throw createI18nError ( I18nErrorCodes . UNEXPECTED_ERROR ) ;
}
Object . defineProperty ( app . config . globalProperties , ` $ ${ method } ` , desc ) ;
} ) ;
}
registerMessageCompiler ( compileToFunction ) ;
registerMessageResolver ( resolveValue ) ;
registerLocaleFallbacker ( fallbackWithLocaleChain ) ;
{
initFeatureFlags ( ) ;
}
if ( true ) {
const target = getGlobalThis ( ) ;
target . __ INTLIFY__ = true ;
setDevToolsHook ( target . __ INTLIFY_DEVTOOLS_GLOBAL_HOOK__ ) ;
}
if ( true )
;
export {
DatetimeFormat ,
I18nInjectionKey ,
NumberFormat ,
Translation ,
VERSION2 as VERSION ,
castToVueI18n ,
createI18n ,
useI18n ,
vTDirective
} ;
/ * ! B u n d l e d l i c e n s e i n f o r m a t i o n :
@ intlify / shared / dist / shared . esm - bundler . js :
( * !
* shared v9 . 2.2
* ( c ) 2022 kazuya kawaguchi
* Released under the MIT License .
* )
@ intlify / message - compiler / dist / message - compiler . esm - bundler . js :
( * !
* message - compiler v9 . 2.2
* ( c ) 2022 kazuya kawaguchi
* Released under the MIT License .
* )
@ intlify / devtools - if / d i s t / d e v t o o l s - i f . e s m - b u n d l e r . j s :
( * !
* devtools - if v9 . 2.2
* ( c ) 2022 kazuya kawaguchi
* Released under the MIT License .
* )
@ intlify / core - base / dist / core - base . esm - bundler . js :
( * !
* core - base v9 . 2.2
* ( c ) 2022 kazuya kawaguchi
* Released under the MIT License .
* )
@ intlify / vue - devtools / dist / vue - devtools . esm - bundler . js :
( * !
* vue - devtools v9 . 2.2
* ( c ) 2022 kazuya kawaguchi
* Released under the MIT License .
* )
vue - i18n / dist / vue - i18n . esm - bundler . js :
( * !
* vue - i18n v9 . 2.2
* ( c ) 2022 kazuya kawaguchi
* Released under the MIT License .
* )
* /
//# sourceMappingURL=vue-i18n.js.map