{"version":3,"sources":["formatters/global.js","formatters/any.js","formatters/array.js","formatters/boolean.js","formatters/date.js","formatters/number.js","formatters/string.js","formatters/object.js"],"names":["dmx","isValidDate","date","toString","resetTime","setHours","setMinutes","setSeconds","setMilliseconds","formatDate","pad","s","n","slice","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","Formatters","default","value","defaultValue","bool","Boolean","string","String","number","Number","parseDate","obj","isDefined","isEmpty","type","length","Array","isArray","key","hasOwnProperty","toBool","toJSON","JSON","stringify","toNumber","toBigInt","BigInt","toTimestamp","Math","floor","getTime","toDate","toUTCDate","toISOString","toISODate","toISOTime","incMilliseconds","propCheck","toKeyedObject","array","staticKey","test","staticVal","reduce","item","index","scope","$index","$key","$value","parse","DataScope","this","hasItems","contains","includes","join","separator","count","top","last","undefined","first","get","begin","end","reverse","randomize","rnd","randomizer","seed","hashCode","t","r","i","filter","expression","repeatItems","map","where","prop","operator","caseInsensitive","val","toLowerCase","startsWith","endsWith","search","stringLen","searchLen","outer","j","char","charCodeAt","values","static","groupBy","push","unique","from","Set","sort","a","b","min","apply","max","sum","avg","then","trueValue","falseValue","l10n","en","months","monthsShort","days","daysShort","getYear","str","getDay","addYears","setFullYear","addMonths","setMonth","addWeeks","setDate","addDays","addHours","addMinutes","addSeconds","addMilliseconds","yearsUntil","str1","str2","date1","date2","monthsUntil","weeksUntil","daysUntil","round","hoursUntil","minutesUntil","secondsUntil","millisecondsUntil","timeUntil","incHours","seconds","minutes","hours","format","year","month","day","weekday","milliseconds","replace","part","inRange","abs","ceil","pow","exponent","per","amount","perOf","total","precision","factor","temp","neg","toFixed","decimals","formatNumber","delimiter","isNaN","isFinite","x","split","x1","x2","re","formatPercentage","num","formatCurrency","unit","formatSize","binary","base","suffix","notContains","matchAll","word","fuzzySearch","inArray","some","notInArray","regexp","lowercase","uppercase","toUpperCase","slugify","a2","a3","a5","a7","a9","aa","ae","b2","b3","b5","b6","b9","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f8","f9","fa","fb","fc","fd","ff","camelize","trim","c","capitalize","substr","dasherize","humanize","underscore","titlecase","camelcase","start","substring","RegExp","escapeRegExp","trimLeft","trimRight","concat","string2","trunc","charsAllowed","useWordBoundary","append","lastSpace","lastIndexOf","stripTags","padStart","filler","padEnd","repeat","wordCount","parseJSON","encodeURIComponent","encodeURI","keys","object","Object","hasKey","hasValue","getValueOrKey"],"mappings":"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AAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA4H,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,KAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,KAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,I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","file":"dmxFormatter.js","sourcesContent":["dmx.isValidDate = function (date) {\r\n return date && date.toString() != 'Invalid Date';\r\n};\r\n\r\ndmx.resetTime = function (date) {\r\n date.setHours(0);\r\n date.setMinutes(0);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n return date;\r\n};\r\n\r\ndmx.formatDate = function (date) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n return (\r\n pad(4, date.getFullYear()) +\r\n '-' +\r\n pad(2, date.getMonth() + 1) +\r\n '-' +\r\n pad(2, date.getDate()) +\r\n ' ' +\r\n pad(2, date.getHours()) +\r\n ':' +\r\n pad(2, date.getMinutes()) +\r\n ':' +\r\n pad(2, date.getSeconds()) +\r\n '.' +\r\n pad(3, date.getMilliseconds())\r\n );\r\n}\r\n\r\n\r\ndmx.Formatters('global', {\r\n\r\n // default(value:Any, defaultValue:Any):Any\r\n default (value, defaultValue) {\r\n return value == null ? defaultValue : value;\r\n },\r\n\r\n // bool(value:Any):Boolean\r\n bool (value) {\r\n return Boolean(value);\r\n },\r\n\r\n // string(value:Any):String\r\n string (value) {\r\n if (value == null) return '';\r\n return String(value);\r\n },\r\n\r\n // number(value:Any):String\r\n number (value) {\r\n return Number(value);\r\n },\r\n\r\n // date(value:Any):String\r\n date (value) {\r\n const date = dmx.parseDate(value);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return dmx.formatDate(date);\r\n },\r\n\r\n});\r\n","dmx.Formatters('any', {\r\n\r\n // default(defaultValue:Any):Any\r\n default (obj, defaultValue) {\r\n return obj == null ? defaultValue : obj;\r\n },\r\n\r\n isDefined (obj) {\r\n return obj != null;\r\n },\r\n\r\n isEmpty (obj) {\r\n const type = typeof obj;\r\n if (type == 'undefined') return true;\r\n if (type == 'string') return obj.length == 0;\r\n if (type == 'number') return obj == 0;\r\n if (type == 'boolean') return obj == false;\r\n if (type == 'object') {\r\n if (Array.isArray(obj)) return obj.length == 0;\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key)) return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n // toBool():Boolean\r\n toBool (obj) {\r\n return Boolean(obj);\r\n },\r\n\r\n // toJSON():String\r\n toJSON (obj) {\r\n return JSON.stringify(obj);\r\n },\r\n\r\n // toNumber():Number\r\n toNumber (obj) {\r\n return Number(obj);\r\n },\r\n\r\n toBigInt (obj) {\r\n return BigInt(obj);\r\n },\r\n\r\n // toString():String\r\n toString (obj) {\r\n if (obj == null) return '';\r\n return String(obj);\r\n },\r\n\r\n // toTimestamp():Number\r\n toTimestamp (obj) { // UNIX timestamp\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return Math.floor(date.getTime() / 1000);\r\n },\r\n\r\n // toDate():String\r\n toDate (obj) {\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // toUTCDate():String\r\n toUTCDate (obj) {\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.toISOString();\r\n },\r\n\r\n // toISODate():String\r\n toISODate (obj) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return `${pad(4, date.getFullYear())}-${pad(2, date.getMonth() + 1)}-${pad(2, date.getDate())}`;\r\n },\r\n\r\n // toISOTime(incMilliseconds:Boolean):String\r\n toISOTime (obj, incMilliseconds) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return `${pad(2, date.getHours())}:${pad(2, date.getMinutes())}:${pad(2, date.getSeconds())}${incMilliseconds ? '.' + pad(3, date.getMilliseconds()) : ''}`;\r\n },\r\n});\r\n","dmx.propCheck = /^\\w+$/;\r\n\r\ndmx.Formatters('array', {\r\n\r\n //toKeyedObject(): object\r\n toKeyedObject (array, key, value) {\r\n const staticKey = dmx.propCheck.test(key);\r\n const staticVal = dmx.propCheck.test(value);\r\n\r\n return array.reduce((obj, item, index) => {\r\n const scope = { ...item, $index: index, $key: index, $value: item };\r\n const k = staticKey ? item[key] : dmx.parse(key, dmx.DataScope(scope, this));\r\n obj[k] = staticVal ? item[value] : dmx.parse(value, dmx.DataScope(scope, this));\r\n return obj;\r\n }, {});\r\n },\r\n\r\n // hasItems():Boolean\r\n hasItems (array) {\r\n return !!array.length;\r\n },\r\n\r\n // contains(value:Any):Boolean\r\n contains (array, value) {\r\n return array.includes(value);\r\n },\r\n\r\n // join(separator:String):String\r\n join (array, separator) {\r\n return array.join(separator);\r\n },\r\n\r\n // count():Number\r\n count (array) {\r\n return array.length;\r\n },\r\n\r\n // top(count:Number):Array\r\n top (array, count = 1) {\r\n if (!array.length) return [];\r\n return array.slice(0, count);\r\n },\r\n\r\n // last(count:Number):Array\r\n // last():*\r\n last (array, count) {\r\n if (!array.length) return count == null ? undefined : [];\r\n return count == null ? array[array.length - 1] : array.slice(-count);\r\n },\r\n\r\n // first():*\r\n first (array) {\r\n return array[0];\r\n },\r\n\r\n // get(index:Number):*\r\n get (array, index) {\r\n return array[index];\r\n },\r\n\r\n // slice([begin:Number], [end:Number])\r\n slice (array, begin, end) {\r\n if (!array.length) return [];\r\n return array.slice(begin, end);\r\n },\r\n\r\n // reverse():Array\r\n reverse (array) {\r\n if (!array.length) return [];\r\n return array.slice(0).reverse();\r\n },\r\n\r\n // randomize():Array\r\n randomize (array) {\r\n if (!array.length) return [];\r\n\r\n const rnd = dmx.randomizer(this.seed * dmx.hashCode(array));\r\n let i = array.length, t, r;\r\n\r\n array = array.slice(0);\r\n\r\n while (0 !== i) {\r\n r = Math.floor(rnd() * i--);\r\n t = array[i];\r\n array[i] = array[r];\r\n array[r] = t;\r\n }\r\n\r\n return array;\r\n },\r\n\r\n // Collection formatters (requires array with objects in them)\r\n\r\n // filter(expression:Expression):Array\r\n filter (array, expression) {\r\n if (!array.length) return [];\r\n if (expression[0] == '$') array = dmx.repeatItems(array);\r\n return array.filter((item) => dmx.parse(expression, dmx.DataScope(item, this)));\r\n },\r\n\r\n // map(expression:Expression):Array\r\n map (array, expression) {\r\n if (!array.length) return [];\r\n if (expression[0] == '$') array = dmx.repeatItems(array);\r\n return array.map((item) => dmx.parse(expression, dmx.DataScope(item, this)));\r\n },\r\n\r\n // where(prop:String, value:String, [operator:String]):Array\r\n where (array, prop, value, operator = '==', caseInsensitive = false) {\r\n if (!array.length) return [];\r\n if (prop[0] == '$') array = dmx.repeatItems(array);\r\n\r\n return array.filter((item) => {\r\n var val = dmx.propCheck.test(prop) ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n\r\n switch (operator) {\r\n case 'startsWith':\r\n if (caseInsensitive) return String(val).toLowerCase().startsWith(value.toLowerCase());\r\n return String(val).startsWith(value);\r\n case 'endsWith':\r\n if (caseInsensitive) return String(val).toLowerCase().endsWith(value.toLowerCase());\r\n return String(val).endsWith(value);\r\n case 'contains':\r\n if (caseInsensitive) return String(val).toLowerCase().includes(value.toLowerCase());\r\n return String(val).includes(value);\r\n case 'notContains':\r\n if (caseInsensitive) return !String(val).toLowerCase().includes(value.toLowerCase());\r\n return !String(val).includes(value);\r\n case 'inArray':\r\n if (caseInsensitive) return Array.isArray(value) && value.includes(val.toLowerCase());\r\n return Array.isArray(value) && value.includes(val);\r\n case 'notInArray':\r\n if (caseInsensitive) return !(Array.isArray(value) && value.includes(val.toLowerCase()));\r\n return !(Array.isArray(value) && value.includes(val));\r\n case 'fuzzySearch':\r\n return (function (string, search) {\r\n if (search == null) return false;\r\n\r\n const stringLen = string.length;\r\n const searchLen = search.length;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n if (searchLen > stringLen) return false;\r\n if (searchLen === stringLen) return string === search;\r\n\r\n outer: for (let i = 0, j = 0; i < searchLen; i++) {\r\n const char = search.charCodeAt(i);\r\n\r\n while (j < stringLen) {\r\n if (string.charCodeAt(j++) === char) {\r\n continue outer;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n })(String(val), value);\r\n case '==':\r\n return val == value;\r\n case '===':\r\n return val === value;\r\n case '!=':\r\n return val != value;\r\n case '!==':\r\n return val !== value;\r\n case '<':\r\n return val < value;\r\n case '<=':\r\n return val <= value;\r\n case '>':\r\n return val > value;\r\n case '>=':\r\n return val >= value;\r\n }\r\n\r\n return true;\r\n });\r\n },\r\n\r\n // values(prop:String):Array\r\n values (array, prop) {\r\n if (!array.length) return [];\r\n\r\n const static = dmx.propCheck.test(prop);\r\n\r\n return array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, this));\r\n });\r\n },\r\n\r\n // groupBy(prop:String):Object\r\n groupBy (array, prop) {\r\n if (!array.length) return {};\r\n\r\n const static = dmx.propCheck.test(prop);\r\n\r\n return array.reduce((obj, item) => {\r\n const key = static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, this));\r\n \r\n if (obj[key]) {\r\n obj[key].push(item);\r\n } else {\r\n obj[key] = [item];\r\n }\r\n\r\n return obj;\r\n }, {});\r\n },\r\n\r\n // unique([prop:String]):Array\r\n unique (array, prop) {\r\n if (!array.length) return [];\r\n\r\n if (prop) {\r\n const static = dmx.propCheck.test(prop);\r\n\r\n array = array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n });\r\n }\r\n\r\n return Array.from(new Set(array));\r\n },\r\n\r\n // sortOn([prop:String]):Array\r\n sort (array, prop) {\r\n if (!array.length) return [];\r\n\r\n const static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.slice(0).sort((a, b) => {\r\n if (prop) {\r\n a = static ? a[prop] : dmx.parse(prop, dmx.DataScope(a, this));\r\n b = static ? b[prop] : dmx.parse(prop, dmx.DataScope(b, this));\r\n }\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n });\r\n },\r\n\r\n // min([prop:String]):Number\r\n min (array, prop) {\r\n if (!array.length) return undefined;\r\n\r\n if (prop) {\r\n const static = dmx.propCheck.test(prop);\r\n\r\n array = array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n });\r\n }\r\n\r\n return Math.min.apply(null, array);\r\n },\r\n\r\n // max([prop:String]):Number\r\n max (array, prop) {\r\n if (!array.length) return undefined;\r\n\r\n if (prop) {\r\n const static = dmx.propCheck.test(prop);\r\n\r\n array = array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n });\r\n }\r\n\r\n return Math.max.apply(null, array);\r\n },\r\n\r\n // sum([prop:String]):Number\r\n sum (array, prop) {\r\n if (!array.length) return 0;\r\n\r\n const static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.reduce((sum, value) => {\r\n if (prop) value = static ? value[prop] : dmx.parse(prop, dmx.DataScope(value, this));\r\n return sum + Number(value);\r\n }, 0);\r\n },\r\n\r\n // avg([prop:String]):Number\r\n avg (array, prop) {\r\n if (!array.length) return 0;\r\n\r\n const static = !prop || dmx.propCheck.test(prop);\r\n\r\n return (array.reduce((sum, value) => {\r\n if (prop) value = static ? value[prop] : dmx.parse(prop, dmx.DataScope(value, this));\r\n return sum + Number(value);\r\n }, 0) / array.length);\r\n },\r\n\r\n});\r\n","dmx.Formatters('boolean', {\r\n\r\n // then(trueValue:Any, falseValue:Any):Any\r\n then (bool, trueValue, falseValue) {\r\n return bool ? trueValue : falseValue;\r\n },\r\n\r\n});\r\n","dmx.l10n = dmx.l10n || {};\r\ndmx.l10n.en = dmx.l10n.en || {};\r\n\r\ndmx.l10n.en.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\ndmx.l10n.en.monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\ndmx.l10n.en.days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\ndmx.l10n.en.daysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n\r\ndmx.Formatters('string', {\r\n // getYear():Number\r\n getYear (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getFullYear();\r\n },\r\n\r\n // getMonth():Number\r\n getMonth (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getMonth() + 1;\r\n },\r\n\r\n // getDate():Number\r\n getDate (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getDate();\r\n },\r\n\r\n // getDay():Number\r\n getDay (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getDay();\r\n },\r\n\r\n // getHours():Number\r\n getHours (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getHours();\r\n },\r\n\r\n // getMinutes():Number\r\n getMinutes (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getMinutes();\r\n },\r\n\r\n // getSeconds():Number\r\n getSeconds (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getSeconds();\r\n },\r\n\r\n // getMilliseconds():Number\r\n getMilliseconds (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getMilliseconds();\r\n },\r\n\r\n // addYears(n:Number):String\r\n addYears (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setFullYear(date.getFullYear() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addMonths(n:Number):String\r\n addMonths (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setMonth(date.getMonth() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addWeeks(n:Number):String\r\n addWeeks (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setDate(date.getDate() + (Number(n) * 7));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addDays(n:Number):String\r\n addDays (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setDate(date.getDate() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addHours(n:Number):String\r\n addHours (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setHours(date.getHours() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addMinutes(n:Number):String\r\n addMinutes (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setMinutes(date.getMinutes() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addSeconds(n:Number):String\r\n addSeconds (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setSeconds(date.getSeconds() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addMilliseconds(n:Number):String\r\n addMilliseconds (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setMilliseconds(date.getMilliseconds() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // yearsUntil(date:String):Number\r\n yearsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return date2.getFullYear() - date1.getFullYear();\r\n },\r\n\r\n // monthsUntil(date:String):Number\r\n monthsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return date2.getFullYear() * 12 + date2.getMonth() - (date1.getFullYear() * 12 + date1.getMonth());\r\n },\r\n\r\n // weeksUntil(date:String):String\r\n weeksUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 604800000); // 7 * 24 * 60 * 60 * 1000\r\n },\r\n\r\n // daysUntil(date:String):Number\r\n daysUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n const resetTime = (date) => {\r\n date.setHours(0);\r\n date.setMinutes(0);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n return date;\r\n };\r\n return Math.round((resetTime(date2) - resetTime(date1)) / 86400000); // 24 * 60 * 60 * 1000\r\n },\r\n\r\n // hoursUntil(date:String):Number\r\n hoursUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 3600000); // 60 * 60 * 1000\r\n },\r\n\r\n // minutesUntil(date:String):Number\r\n minutesUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 60000); // 60 * 1000\r\n },\r\n\r\n // secondsUntil(date:String):Number\r\n secondsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 1000);\r\n },\r\n\r\n // millisecondsUntil(date:String):Number\r\n millisecondsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return date2 - date1;\r\n },\r\n\r\n // timeUntil(date:String, incHours:Boolean):String\r\n timeUntil (str1, str2, incHours) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n let seconds = Math.floor((date2 - date1) / 1000);\r\n let minutes = Math.floor(seconds / 60);\r\n let hours = Math.floor(minutes / 60);\r\n seconds -= minutes * 60;\r\n if (incHours) {\r\n minutes -= hours * 60;\r\n return hours + ':' + pad(2, minutes) + ':' + pad(2, seconds);\r\n }\r\n return minutes + ':' + pad(2, seconds);\r\n },\r\n\r\n // formatDate(format:String):String\r\n formatDate (str, format) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n const year = date.getFullYear();\r\n const month = date.getMonth();\r\n const day = date.getDate();\r\n const weekday = date.getDay();\r\n const hours = date.getHours();\r\n const minutes = date.getMinutes();\r\n const seconds = date.getSeconds();\r\n const milliseconds = date.getMilliseconds();\r\n return format.replace(/([yMdHhmsSaAvw])(\\1+)?/g, (part) => {\r\n switch (part) {\r\n case 'yyyy':\r\n return pad(4, year);\r\n case 'yy':\r\n return pad(2, year);\r\n case 'y':\r\n return year;\r\n case 'MMMM':\r\n return dmx.l10n.en.months[month];\r\n case 'MMM':\r\n return dmx.l10n.en.monthsShort[month];\r\n case 'MM':\r\n return pad(2, month + 1);\r\n case 'M':\r\n return month + 1;\r\n case 'dddd':\r\n return dmx.l10n.en.days[weekday];\r\n case 'ddd':\r\n return dmx.l10n.en.daysShort[weekday];\r\n case 'dd':\r\n return pad(2, day);\r\n case 'd':\r\n return day;\r\n case 'HH':\r\n return pad(2, hours);\r\n case 'H':\r\n return hours;\r\n case 'hh':\r\n return pad(2, hours % 12 || 12);\r\n case 'h':\r\n return hours % 12 || 12;\r\n case 'mm':\r\n return pad(2, minutes);\r\n case 'm':\r\n return minutes;\r\n case 'ss':\r\n return pad(2, seconds);\r\n case 's':\r\n return seconds;\r\n case 'a':\r\n return hours < 12 ? 'am' : 'pm';\r\n case 'A':\r\n return hours < 12 ? 'AM' : 'PM';\r\n case 'v':\r\n case 'SSS':\r\n return pad(3, milliseconds);\r\n case 'w':\r\n return weekday;\r\n }\r\n return part;\r\n });\r\n },\r\n});\r\n","dmx.Formatters('number', {\r\n\r\n // inRange(min:Number, max:Number):Boolean\r\n inRange (number, min, max) {\r\n return number >= min && number <= max;\r\n },\r\n\r\n // abs():Number\r\n abs (number) {\r\n return Math.abs(number);\r\n },\r\n\r\n // ceil():Number\r\n ceil (number) {\r\n return Math.ceil(number);\r\n },\r\n\r\n // floor():Number\r\n floor (number) {\r\n return Math.floor(number);\r\n },\r\n\r\n // max(max:Number):Number\r\n max (number, max) {\r\n return Math.max(number, max);\r\n },\r\n\r\n // min(min:Number):Number\r\n min (number, min) {\r\n return Math.min(number, min);\r\n },\r\n\r\n // pow(exponent:Number):Number\r\n pow (number, exponent) {\r\n return Math.pow(number, exponent);\r\n },\r\n\r\n // per(amount:Number):Number\r\n per (number, amount) {\r\n return (number * amount) / 100;\r\n },\r\n\r\n // perOf(total:Number):Number\r\n perOf (number, total) {\r\n return number / total;\r\n },\r\n\r\n // round([precision:Number]):Number\r\n round (number, precision = 0) {\r\n let factor = Math.pow(10, precision);\r\n let temp = number * factor;\r\n let rounded = Math.round(temp);\r\n return rounded / factor;\r\n },\r\n\r\n // pad(length:Number):String\r\n pad (number, length) {\r\n let neg = number < 0 ? '-' : '';\r\n let str = String(Math.abs(number));\r\n while (str.length < length) {\r\n str = '0' + str;\r\n }\r\n return neg + str;\r\n },\r\n\r\n // toFixed([decimals:Number]):String\r\n toFixed (number, decimals) {\r\n return number.toFixed(decimals);\r\n },\r\n\r\n // formatNumber([decimals:Number], [separator:String], [delimiter:String]):String\r\n formatNumber (number, decimals, separator = '.', delimiter = '') {\r\n if (isNaN(number)) return 'Invalid Number';\r\n if (!isFinite(number)) return (number < 0 ? '-' : '') + '\\u221E';\r\n\r\n separator = separator || '.';\r\n delimiter = delimiter || '';\r\n\r\n let neg = number < 0;\r\n number = Math.abs(number);\r\n let x = (decimals != null && decimals >= 0 ? number.toFixed(decimals) : number.toString()).split('.');\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? separator + x[1] : '';\r\n\r\n if (delimiter) {\r\n let re = /(\\d+)(\\d{3})/;\r\n while (re.test(x1)) {\r\n x1 = x1.replace(re, '$1' + delimiter + '$2');\r\n }\r\n }\r\n\r\n return (neg ? '-' : '') + x1 + x2;\r\n },\r\n\r\n // formatPercentage([decimals:Number]):String\r\n formatPercentage (number, decimals) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Percentage';\r\n\r\n let num = number * 100;\r\n if (decimals != null && decimals >= 0) {\r\n num = num.toFixed(decimals);\r\n }\r\n return num + '%';\r\n },\r\n\r\n // formatCurrency([unit:String], [separator:String], [delimiter:String], [precision:Number]):String\r\n formatCurrency (number, unit = '$', separator = '.', delimiter = ',', precision = 2) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Amount';\r\n\r\n let neg = number < 0;\r\n let x = Math.abs(number).toFixed(precision).split('.');\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? separator + x[1] : '';\r\n\r\n if (delimiter) {\r\n let re = /(\\d+)(\\d{3})/;\r\n while (re.test(x1)) {\r\n x1 = x1.replace(re, '$1' + delimiter + '$2');\r\n }\r\n }\r\n\r\n return (neg ? '-' : '') + unit + x1 + x2;\r\n },\r\n\r\n // formatSize([decimals:Number], [binary:Boolean]):String\r\n formatSize (number, decimals = 2, binary = false) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Size';\r\n\r\n let base = binary ? 1024 : 1000;\r\n let suffix = binary ? ['KiB', 'MiB', 'GiB', 'TiB'] : ['KB', 'MB', 'GB', 'TB'];\r\n\r\n for (let i = 3; i >= 0; i--) {\r\n let n = Math.pow(base, i + 1);\r\n if (number >= n) {\r\n number /= n;\r\n if (decimals >= 0) {\r\n number = number.toFixed(decimals);\r\n }\r\n return number + ' ' + suffix[i];\r\n }\r\n }\r\n\r\n return number + ' B';\r\n },\r\n\r\n});\r\n","dmx.Formatters('string', {\r\n\r\n // startWith(search:String):Boolean\r\n startsWith (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return string.startsWith(search);\r\n },\r\n\r\n // endsWith(search:String):Boolean\r\n endsWith (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return string.endsWith(search);\r\n },\r\n\r\n // contains(search:String):Boolean\r\n contains (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n \r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return string.includes(search);\r\n },\r\n\r\n // notContains(search:String):Boolean\r\n notContains (string, search, caseInsensitive) {\r\n if (search == null) return true;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return !string.includes(search);\r\n },\r\n\r\n search (string, search, matchAll, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return String(search).split(/\\s+/)[matchAll ? 'every' : 'some']((word) => {\r\n return string.includes(word);\r\n });\r\n },\r\n\r\n // fuzzySearch(search:String):Boolean\r\n fuzzySearch (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n const stringLen = string.length;\r\n const searchLen = search.length;\r\n\r\n if (searchLen > stringLen) {\r\n return false;\r\n }\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n if (searchLen === stringLen) {\r\n return string === search;\r\n }\r\n\r\n outer: for (let i = 0, j = 0; i < searchLen; i++) {\r\n const char = search.charCodeAt(i);\r\n \r\n while (j < stringLen) {\r\n if (string.charCodeAt(j++) === char) {\r\n continue outer;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n inArray (string, array, caseInsensitive) {\r\n if (!Array.isArray(array)) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n }\r\n\r\n return array.some((item) => {\r\n if (caseInsensitive) {\r\n item = item.toLowerCase();\r\n }\r\n\r\n return item === string;\r\n });\r\n },\r\n\r\n notInArray (string, array, caseInsensitive) {\r\n if (!Array.isArray(array)) return true;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n }\r\n\r\n return !array.some((item) => {\r\n if (caseInsensitive) {\r\n item = item.toLowerCase();\r\n }\r\n\r\n return item === string;\r\n });\r\n },\r\n\r\n // test(regexp:RegExp):Boolean\r\n test (string, regexp) {\r\n return regexp.test(string);\r\n },\r\n\r\n // lowercase():String\r\n lowercase (string) {\r\n return string.toLowerCase();\r\n },\r\n\r\n // uppercase():String\r\n uppercase (string) {\r\n return string.toUpperCase();\r\n },\r\n\r\n // slugify():String\r\n slugify (string) {\r\n const map = {\"2d\":\"-\",\"20\":\"-\",\"24\":\"s\",\"26\":\"and\",\"30\":\"0\",\"31\":\"1\",\"32\":\"2\",\"33\":\"3\",\"34\":\"4\",\"35\":\"5\",\"36\":\"6\",\"37\":\"7\",\"38\":\"8\",\"39\":\"9\",\"41\":\"A\",\"42\":\"B\",\"43\":\"C\",\"44\":\"D\",\"45\":\"E\",\"46\":\"F\",\"47\":\"G\",\"48\":\"H\",\"49\":\"I\",\"50\":\"P\",\"51\":\"Q\",\"52\":\"R\",\"53\":\"S\",\"54\":\"T\",\"55\":\"U\",\"56\":\"V\",\"57\":\"W\",\"58\":\"X\",\"59\":\"Y\",\"61\":\"a\",\"62\":\"b\",\"63\":\"c\",\"64\":\"d\",\"65\":\"e\",\"66\":\"f\",\"67\":\"g\",\"68\":\"h\",\"69\":\"i\",\"70\":\"p\",\"71\":\"q\",\"72\":\"r\",\"73\":\"s\",\"74\":\"t\",\"75\":\"u\",\"76\":\"v\",\"77\":\"w\",\"78\":\"x\",\"79\":\"y\",\"100\":\"A\",\"101\":\"a\",\"102\":\"A\",\"103\":\"a\",\"104\":\"A\",\"105\":\"a\",\"106\":\"C\",\"107\":\"c\",\"108\":\"C\",\"109\":\"c\",\"110\":\"D\",\"111\":\"d\",\"112\":\"E\",\"113\":\"e\",\"114\":\"E\",\"115\":\"e\",\"116\":\"E\",\"117\":\"e\",\"118\":\"E\",\"119\":\"e\",\"120\":\"G\",\"121\":\"g\",\"122\":\"G\",\"123\":\"g\",\"124\":\"H\",\"125\":\"h\",\"126\":\"H\",\"127\":\"h\",\"128\":\"I\",\"129\":\"i\",\"130\":\"I\",\"131\":\"i\",\"132\":\"IJ\",\"133\":\"ij\",\"134\":\"J\",\"135\":\"j\",\"136\":\"K\",\"137\":\"k\",\"138\":\"k\",\"139\":\"L\",\"140\":\"l\",\"141\":\"L\",\"142\":\"l\",\"143\":\"N\",\"144\":\"n\",\"145\":\"N\",\"146\":\"n\",\"147\":\"N\",\"148\":\"n\",\"149\":\"n\",\"150\":\"O\",\"151\":\"o\",\"152\":\"OE\",\"153\":\"oe\",\"154\":\"R\",\"155\":\"r\",\"156\":\"R\",\"157\":\"r\",\"158\":\"R\",\"159\":\"r\",\"160\":\"S\",\"161\":\"s\",\"162\":\"T\",\"163\":\"t\",\"164\":\"T\",\"165\":\"t\",\"166\":\"T\",\"167\":\"t\",\"168\":\"U\",\"169\":\"u\",\"170\":\"U\",\"171\":\"u\",\"172\":\"U\",\"173\":\"u\",\"174\":\"W\",\"175\":\"w\",\"176\":\"Y\",\"177\":\"y\",\"178\":\"Y\",\"179\":\"Z\",\"180\":\"b\",\"181\":\"B\",\"182\":\"b\",\"183\":\"b\",\"184\":\"b\",\"185\":\"b\",\"186\":\"C\",\"187\":\"C\",\"188\":\"c\",\"189\":\"D\",\"190\":\"E\",\"191\":\"F\",\"192\":\"f\",\"193\":\"G\",\"194\":\"Y\",\"195\":\"h\",\"196\":\"i\",\"197\":\"I\",\"198\":\"K\",\"199\":\"k\",\"200\":\"A\",\"201\":\"a\",\"202\":\"A\",\"203\":\"a\",\"204\":\"E\",\"205\":\"e\",\"206\":\"E\",\"207\":\"e\",\"208\":\"I\",\"209\":\"i\",\"210\":\"R\",\"211\":\"r\",\"212\":\"R\",\"213\":\"r\",\"214\":\"U\",\"215\":\"u\",\"216\":\"U\",\"217\":\"u\",\"218\":\"S\",\"219\":\"s\",\"220\":\"n\",\"221\":\"d\",\"222\":\"8\",\"223\":\"8\",\"224\":\"Z\",\"225\":\"z\",\"226\":\"A\",\"227\":\"a\",\"228\":\"E\",\"229\":\"e\",\"230\":\"O\",\"231\":\"o\",\"232\":\"Y\",\"233\":\"y\",\"234\":\"l\",\"235\":\"n\",\"236\":\"t\",\"237\":\"j\",\"238\":\"db\",\"239\":\"qp\",\"240\":\"<\",\"241\":\"?\",\"242\":\"?\",\"243\":\"B\",\"244\":\"U\",\"245\":\"A\",\"246\":\"E\",\"247\":\"e\",\"248\":\"J\",\"249\":\"j\",\"250\":\"a\",\"251\":\"a\",\"252\":\"a\",\"253\":\"b\",\"254\":\"c\",\"255\":\"e\",\"256\":\"d\",\"257\":\"d\",\"258\":\"e\",\"259\":\"e\",\"260\":\"g\",\"261\":\"g\",\"262\":\"g\",\"263\":\"Y\",\"264\":\"x\",\"265\":\"u\",\"266\":\"h\",\"267\":\"h\",\"268\":\"i\",\"269\":\"i\",\"270\":\"w\",\"271\":\"m\",\"272\":\"n\",\"273\":\"n\",\"274\":\"N\",\"275\":\"o\",\"276\":\"oe\",\"277\":\"m\",\"278\":\"o\",\"279\":\"r\",\"280\":\"R\",\"281\":\"R\",\"282\":\"S\",\"283\":\"f\",\"284\":\"f\",\"285\":\"f\",\"286\":\"f\",\"287\":\"t\",\"288\":\"t\",\"289\":\"u\",\"290\":\"Z\",\"291\":\"Z\",\"292\":\"3\",\"293\":\"3\",\"294\":\"?\",\"295\":\"?\",\"296\":\"5\",\"297\":\"C\",\"298\":\"O\",\"299\":\"B\",\"363\":\"a\",\"364\":\"e\",\"365\":\"i\",\"366\":\"o\",\"367\":\"u\",\"368\":\"c\",\"369\":\"d\",\"386\":\"A\",\"388\":\"E\",\"389\":\"H\",\"390\":\"i\",\"391\":\"A\",\"392\":\"B\",\"393\":\"r\",\"394\":\"A\",\"395\":\"E\",\"396\":\"Z\",\"397\":\"H\",\"398\":\"O\",\"399\":\"I\",\"400\":\"E\",\"401\":\"E\",\"402\":\"T\",\"403\":\"r\",\"404\":\"E\",\"405\":\"S\",\"406\":\"I\",\"407\":\"I\",\"408\":\"J\",\"409\":\"jb\",\"410\":\"A\",\"411\":\"B\",\"412\":\"V\",\"413\":\"G\",\"414\":\"D\",\"415\":\"E\",\"416\":\"ZH\",\"417\":\"Z\",\"418\":\"I\",\"419\":\"Y\",\"420\":\"R\",\"421\":\"S\",\"422\":\"T\",\"423\":\"U\",\"424\":\"F\",\"425\":\"H\",\"426\":\"TS\",\"427\":\"CH\",\"428\":\"SH\",\"429\":\"SCH\",\"430\":\"a\",\"431\":\"b\",\"432\":\"v\",\"433\":\"g\",\"434\":\"d\",\"435\":\"e\",\"436\":\"zh\",\"437\":\"z\",\"438\":\"i\",\"439\":\"y\",\"440\":\"r\",\"441\":\"s\",\"442\":\"t\",\"443\":\"u\",\"444\":\"f\",\"445\":\"h\",\"446\":\"ts\",\"447\":\"ch\",\"448\":\"sh\",\"449\":\"sch\",\"450\":\"e\",\"451\":\"e\",\"452\":\"h\",\"453\":\"r\",\"454\":\"e\",\"455\":\"s\",\"456\":\"i\",\"457\":\"i\",\"458\":\"j\",\"459\":\"jb\",\"460\":\"W\",\"461\":\"w\",\"462\":\"Tb\",\"463\":\"tb\",\"464\":\"IC\",\"465\":\"ic\",\"466\":\"A\",\"467\":\"a\",\"468\":\"IA\",\"469\":\"ia\",\"470\":\"Y\",\"471\":\"y\",\"472\":\"O\",\"473\":\"o\",\"474\":\"V\",\"475\":\"v\",\"476\":\"V\",\"477\":\"v\",\"478\":\"Oy\",\"479\":\"oy\",\"480\":\"C\",\"481\":\"c\",\"490\":\"R\",\"491\":\"r\",\"492\":\"F\",\"493\":\"f\",\"494\":\"H\",\"495\":\"h\",\"496\":\"X\",\"497\":\"x\",\"498\":\"3\",\"499\":\"3\",\"500\":\"d\",\"501\":\"d\",\"502\":\"d\",\"503\":\"d\",\"504\":\"R\",\"505\":\"R\",\"506\":\"R\",\"507\":\"R\",\"508\":\"JT\",\"509\":\"JT\",\"510\":\"E\",\"511\":\"e\",\"512\":\"JT\",\"513\":\"jt\",\"514\":\"JX\",\"515\":\"JX\",\"531\":\"U\",\"532\":\"D\",\"533\":\"Q\",\"534\":\"N\",\"535\":\"T\",\"536\":\"2\",\"537\":\"F\",\"538\":\"r\",\"539\":\"p\",\"540\":\"z\",\"541\":\"2\",\"542\":\"n\",\"543\":\"x\",\"544\":\"U\",\"545\":\"B\",\"546\":\"j\",\"547\":\"t\",\"548\":\"n\",\"549\":\"C\",\"550\":\"R\",\"551\":\"8\",\"552\":\"R\",\"553\":\"O\",\"554\":\"P\",\"555\":\"O\",\"556\":\"S\",\"561\":\"w\",\"562\":\"f\",\"563\":\"q\",\"564\":\"n\",\"565\":\"t\",\"566\":\"q\",\"567\":\"t\",\"568\":\"n\",\"569\":\"p\",\"570\":\"h\",\"571\":\"a\",\"572\":\"n\",\"573\":\"a\",\"574\":\"u\",\"575\":\"j\",\"576\":\"u\",\"577\":\"2\",\"578\":\"n\",\"579\":\"2\",\"580\":\"n\",\"581\":\"g\",\"582\":\"l\",\"583\":\"uh\",\"584\":\"p\",\"585\":\"o\",\"586\":\"S\",\"587\":\"u\",\"4a\":\"J\",\"4b\":\"K\",\"4c\":\"L\",\"4d\":\"M\",\"4e\":\"N\",\"4f\":\"O\",\"5a\":\"Z\",\"6a\":\"j\",\"6b\":\"k\",\"6c\":\"l\",\"6d\":\"m\",\"6e\":\"n\",\"6f\":\"o\",\"7a\":\"z\",\"a2\":\"c\",\"a3\":\"f\",\"a5\":\"Y\",\"a7\":\"s\",\"a9\":\"c\",\"aa\":\"a\",\"ae\":\"r\",\"b2\":\"2\",\"b3\":\"3\",\"b5\":\"u\",\"b6\":\"p\",\"b9\":\"1\",\"c0\":\"A\",\"c1\":\"A\",\"c2\":\"A\",\"c3\":\"A\",\"c4\":\"A\",\"c5\":\"A\",\"c6\":\"AE\",\"c7\":\"C\",\"c8\":\"E\",\"c9\":\"E\",\"ca\":\"E\",\"cb\":\"E\",\"cc\":\"I\",\"cd\":\"I\",\"ce\":\"I\",\"cf\":\"I\",\"d0\":\"D\",\"d1\":\"N\",\"d2\":\"O\",\"d3\":\"O\",\"d4\":\"O\",\"d5\":\"O\",\"d6\":\"O\",\"d7\":\"X\",\"d8\":\"O\",\"d9\":\"U\",\"da\":\"U\",\"db\":\"U\",\"dc\":\"U\",\"dd\":\"Y\",\"de\":\"p\",\"df\":\"b\",\"e0\":\"a\",\"e1\":\"a\",\"e2\":\"a\",\"e3\":\"a\",\"e4\":\"a\",\"e5\":\"a\",\"e6\":\"ae\",\"e7\":\"c\",\"e8\":\"e\",\"e9\":\"e\",\"ea\":\"e\",\"eb\":\"e\",\"ec\":\"i\",\"ed\":\"i\",\"ee\":\"i\",\"ef\":\"i\",\"f0\":\"o\",\"f1\":\"n\",\"f2\":\"o\",\"f3\":\"o\",\"f4\":\"o\",\"f5\":\"o\",\"f6\":\"o\",\"f8\":\"o\",\"f9\":\"u\",\"fa\":\"u\",\"fb\":\"u\",\"fc\":\"u\",\"fd\":\"y\",\"ff\":\"y\",\"10a\":\"C\",\"10b\":\"c\",\"10c\":\"C\",\"10d\":\"c\",\"10e\":\"D\",\"10f\":\"d\",\"11a\":\"E\",\"11b\":\"e\",\"11c\":\"G\",\"11d\":\"g\",\"11e\":\"G\",\"11f\":\"g\",\"12a\":\"I\",\"12b\":\"i\",\"12c\":\"I\",\"12d\":\"i\",\"12e\":\"I\",\"12f\":\"i\",\"13a\":\"l\",\"13b\":\"L\",\"13c\":\"l\",\"13d\":\"L\",\"13e\":\"l\",\"13f\":\"L\",\"14a\":\"n\",\"14b\":\"n\",\"14c\":\"O\",\"14d\":\"o\",\"14e\":\"O\",\"14f\":\"o\",\"15a\":\"S\",\"15b\":\"s\",\"15c\":\"S\",\"15d\":\"s\",\"15e\":\"S\",\"15f\":\"s\",\"16a\":\"U\",\"16b\":\"u\",\"16c\":\"U\",\"16d\":\"u\",\"16e\":\"U\",\"16f\":\"u\",\"17a\":\"z\",\"17b\":\"Z\",\"17c\":\"z\",\"17d\":\"Z\",\"17e\":\"z\",\"17f\":\"f\",\"18a\":\"D\",\"18b\":\"d\",\"18c\":\"d\",\"18d\":\"q\",\"18e\":\"E\",\"18f\":\"e\",\"19a\":\"l\",\"19b\":\"h\",\"19c\":\"w\",\"19d\":\"N\",\"19e\":\"n\",\"19f\":\"O\",\"1a0\":\"O\",\"1a1\":\"o\",\"1a2\":\"P\",\"1a3\":\"P\",\"1a4\":\"P\",\"1a5\":\"p\",\"1a6\":\"R\",\"1a7\":\"S\",\"1a8\":\"s\",\"1a9\":\"E\",\"1aa\":\"l\",\"1ab\":\"t\",\"1ac\":\"T\",\"1ad\":\"t\",\"1ae\":\"T\",\"1af\":\"U\",\"1b0\":\"u\",\"1b1\":\"U\",\"1b2\":\"U\",\"1b3\":\"Y\",\"1b4\":\"y\",\"1b5\":\"Z\",\"1b6\":\"z\",\"1b7\":\"3\",\"1b8\":\"3\",\"1b9\":\"3\",\"1ba\":\"3\",\"1bb\":\"2\",\"1bc\":\"5\",\"1bd\":\"5\",\"1be\":\"5\",\"1bf\":\"p\",\"1c4\":\"DZ\",\"1c5\":\"Dz\",\"1c6\":\"dz\",\"1c7\":\"Lj\",\"1c8\":\"Lj\",\"1c9\":\"lj\",\"1ca\":\"NJ\",\"1cb\":\"Nj\",\"1cc\":\"nj\",\"1cd\":\"A\",\"1ce\":\"a\",\"1cf\":\"I\",\"1d0\":\"i\",\"1d1\":\"O\",\"1d2\":\"o\",\"1d3\":\"U\",\"1d4\":\"u\",\"1d5\":\"U\",\"1d6\":\"u\",\"1d7\":\"U\",\"1d8\":\"u\",\"1d9\":\"U\",\"1da\":\"u\",\"1db\":\"U\",\"1dc\":\"u\",\"1dd\":\"e\",\"1de\":\"A\",\"1df\":\"a\",\"1e0\":\"A\",\"1e1\":\"a\",\"1e2\":\"AE\",\"1e3\":\"ae\",\"1e4\":\"G\",\"1e5\":\"g\",\"1e6\":\"G\",\"1e7\":\"g\",\"1e8\":\"K\",\"1e9\":\"k\",\"1ea\":\"Q\",\"1eb\":\"q\",\"1ec\":\"Q\",\"1ed\":\"q\",\"1ee\":\"3\",\"1ef\":\"3\",\"1f0\":\"J\",\"1f1\":\"dz\",\"1f2\":\"dZ\",\"1f3\":\"DZ\",\"1f4\":\"g\",\"1f5\":\"G\",\"1f6\":\"h\",\"1f7\":\"p\",\"1f8\":\"N\",\"1f9\":\"n\",\"1fa\":\"A\",\"1fb\":\"a\",\"1fc\":\"AE\",\"1fd\":\"ae\",\"1fe\":\"O\",\"1ff\":\"o\",\"20a\":\"I\",\"20b\":\"i\",\"20c\":\"O\",\"20d\":\"o\",\"20e\":\"O\",\"20f\":\"o\",\"21a\":\"T\",\"21b\":\"t\",\"21c\":\"3\",\"21d\":\"3\",\"21e\":\"H\",\"21f\":\"h\",\"22a\":\"O\",\"22b\":\"o\",\"22c\":\"O\",\"22d\":\"o\",\"22e\":\"O\",\"22f\":\"o\",\"23a\":\"A\",\"23b\":\"C\",\"23c\":\"c\",\"23d\":\"L\",\"23e\":\"T\",\"23f\":\"s\",\"24a\":\"Q\",\"24b\":\"q\",\"24c\":\"R\",\"24d\":\"r\",\"24e\":\"Y\",\"24f\":\"y\",\"25a\":\"e\",\"25b\":\"3\",\"25c\":\"3\",\"25d\":\"3\",\"25e\":\"3\",\"25f\":\"j\",\"26a\":\"i\",\"26b\":\"I\",\"26c\":\"I\",\"26d\":\"I\",\"26e\":\"h\",\"26f\":\"w\",\"27a\":\"R\",\"27b\":\"r\",\"27c\":\"R\",\"27d\":\"R\",\"27e\":\"r\",\"27f\":\"r\",\"28a\":\"u\",\"28b\":\"v\",\"28c\":\"A\",\"28d\":\"M\",\"28e\":\"Y\",\"28f\":\"Y\",\"29a\":\"B\",\"29b\":\"G\",\"29c\":\"H\",\"29d\":\"j\",\"29e\":\"K\",\"29f\":\"L\",\"2a0\":\"q\",\"2a1\":\"?\",\"2a2\":\"c\",\"2a3\":\"dz\",\"2a4\":\"d3\",\"2a5\":\"dz\",\"2a6\":\"ts\",\"2a7\":\"tf\",\"2a8\":\"tc\",\"2a9\":\"fn\",\"2aa\":\"ls\",\"2ab\":\"lz\",\"2ac\":\"ww\",\"2ae\":\"u\",\"2af\":\"u\",\"2b0\":\"h\",\"2b1\":\"h\",\"2b2\":\"j\",\"2b3\":\"r\",\"2b4\":\"r\",\"2b5\":\"r\",\"2b6\":\"R\",\"2b7\":\"W\",\"2b8\":\"Y\",\"2df\":\"x\",\"2e0\":\"Y\",\"2e1\":\"1\",\"2e2\":\"s\",\"2e3\":\"x\",\"2e4\":\"c\",\"36a\":\"h\",\"36b\":\"m\",\"36c\":\"r\",\"36d\":\"t\",\"36e\":\"v\",\"36f\":\"x\",\"37b\":\"c\",\"37c\":\"c\",\"37d\":\"c\",\"38a\":\"I\",\"38c\":\"O\",\"38e\":\"Y\",\"38f\":\"O\",\"39a\":\"K\",\"39b\":\"A\",\"39c\":\"M\",\"39d\":\"N\",\"39e\":\"E\",\"39f\":\"O\",\"3a0\":\"TT\",\"3a1\":\"P\",\"3a3\":\"E\",\"3a4\":\"T\",\"3a5\":\"Y\",\"3a6\":\"O\",\"3a7\":\"X\",\"3a8\":\"Y\",\"3a9\":\"O\",\"3aa\":\"I\",\"3ab\":\"Y\",\"3ac\":\"a\",\"3ad\":\"e\",\"3ae\":\"n\",\"3af\":\"i\",\"3b0\":\"v\",\"3b1\":\"a\",\"3b2\":\"b\",\"3b3\":\"y\",\"3b4\":\"d\",\"3b5\":\"e\",\"3b6\":\"c\",\"3b7\":\"n\",\"3b8\":\"0\",\"3b9\":\"1\",\"3ba\":\"k\",\"3bb\":\"j\",\"3bc\":\"u\",\"3bd\":\"v\",\"3be\":\"c\",\"3bf\":\"o\",\"3c0\":\"tt\",\"3c1\":\"p\",\"3c2\":\"s\",\"3c3\":\"o\",\"3c4\":\"t\",\"3c5\":\"u\",\"3c6\":\"q\",\"3c7\":\"X\",\"3c8\":\"Y\",\"3c9\":\"w\",\"3ca\":\"i\",\"3cb\":\"u\",\"3cc\":\"o\",\"3cd\":\"u\",\"3ce\":\"w\",\"3d0\":\"b\",\"3d1\":\"e\",\"3d2\":\"Y\",\"3d3\":\"Y\",\"3d4\":\"Y\",\"3d5\":\"O\",\"3d6\":\"w\",\"3d7\":\"x\",\"3d8\":\"Q\",\"3d9\":\"q\",\"3da\":\"C\",\"3db\":\"c\",\"3dc\":\"F\",\"3dd\":\"f\",\"3de\":\"N\",\"3df\":\"N\",\"3e2\":\"W\",\"3e3\":\"w\",\"3e4\":\"q\",\"3e5\":\"q\",\"3e6\":\"h\",\"3e7\":\"e\",\"3e8\":\"S\",\"3e9\":\"s\",\"3ea\":\"X\",\"3eb\":\"x\",\"3ec\":\"6\",\"3ed\":\"6\",\"3ee\":\"t\",\"3ef\":\"t\",\"3f0\":\"x\",\"3f1\":\"e\",\"3f2\":\"c\",\"3f3\":\"j\",\"3f4\":\"O\",\"3f5\":\"E\",\"3f6\":\"E\",\"3f7\":\"p\",\"3f8\":\"p\",\"3f9\":\"C\",\"3fa\":\"M\",\"3fb\":\"M\",\"3fc\":\"p\",\"3fd\":\"C\",\"3fe\":\"C\",\"3ff\":\"C\",\"40a\":\"Hb\",\"40b\":\"Th\",\"40c\":\"K\",\"40d\":\"N\",\"40e\":\"Y\",\"40f\":\"U\",\"41a\":\"K\",\"41b\":\"L\",\"41c\":\"M\",\"41d\":\"N\",\"41e\":\"O\",\"41f\":\"P\",\"42a\":\"\",\"42b\":\"Y\",\"42c\":\"\",\"42d\":\"E\",\"42e\":\"U\",\"42f\":\"YA\",\"43a\":\"k\",\"43b\":\"l\",\"43c\":\"m\",\"43d\":\"n\",\"43e\":\"o\",\"43f\":\"p\",\"44a\":\"\",\"44b\":\"y\",\"44c\":\"\",\"44d\":\"e\",\"44e\":\"u\",\"44f\":\"ya\",\"45a\":\"Hb\",\"45b\":\"h\",\"45c\":\"k\",\"45d\":\"n\",\"45e\":\"y\",\"45f\":\"u\",\"46a\":\"mY\",\"46b\":\"my\",\"46c\":\"Im\",\"46d\":\"Im\",\"46e\":\"3\",\"46f\":\"3\",\"47a\":\"O\",\"47b\":\"o\",\"47c\":\"W\",\"47d\":\"w\",\"47e\":\"W\",\"47f\":\"W\",\"48a\":\"H\",\"48b\":\"H\",\"48c\":\"B\",\"48d\":\"b\",\"48e\":\"P\",\"48f\":\"p\",\"49a\":\"K\",\"49b\":\"k\",\"49c\":\"K\",\"49d\":\"k\",\"49e\":\"K\",\"49f\":\"k\",\"4a0\":\"K\",\"4a1\":\"k\",\"4a2\":\"H\",\"4a3\":\"h\",\"4a4\":\"H\",\"4a5\":\"h\",\"4a6\":\"Ih\",\"4a7\":\"ih\",\"4a8\":\"O\",\"4a9\":\"o\",\"4aa\":\"C\",\"4ab\":\"c\",\"4ac\":\"T\",\"4ad\":\"t\",\"4ae\":\"Y\",\"4af\":\"y\",\"4b0\":\"Y\",\"4b1\":\"y\",\"4b2\":\"X\",\"4b3\":\"x\",\"4b4\":\"TI\",\"4b5\":\"ti\",\"4b6\":\"H\",\"4b7\":\"h\",\"4b8\":\"H\",\"4b9\":\"h\",\"4ba\":\"H\",\"4bb\":\"h\",\"4bc\":\"E\",\"4bd\":\"e\",\"4be\":\"E\",\"4bf\":\"e\",\"4c0\":\"I\",\"4c1\":\"X\",\"4c2\":\"x\",\"4c3\":\"K\",\"4c4\":\"k\",\"4c5\":\"jt\",\"4c6\":\"jt\",\"4c7\":\"H\",\"4c8\":\"h\",\"4c9\":\"H\",\"4ca\":\"h\",\"4cb\":\"H\",\"4cc\":\"h\",\"4cd\":\"M\",\"4ce\":\"m\",\"4cf\":\"l\",\"4d0\":\"A\",\"4d1\":\"a\",\"4d2\":\"A\",\"4d3\":\"a\",\"4d4\":\"AE\",\"4d5\":\"ae\",\"4d6\":\"E\",\"4d7\":\"e\",\"4d8\":\"e\",\"4d9\":\"e\",\"4da\":\"E\",\"4db\":\"e\",\"4dc\":\"X\",\"4dd\":\"X\",\"4de\":\"3\",\"4df\":\"3\",\"4e0\":\"3\",\"4e1\":\"3\",\"4e2\":\"N\",\"4e3\":\"n\",\"4e4\":\"N\",\"4e5\":\"n\",\"4e6\":\"O\",\"4e7\":\"o\",\"4e8\":\"O\",\"4e9\":\"o\",\"4ea\":\"O\",\"4eb\":\"o\",\"4ec\":\"E\",\"4ed\":\"e\",\"4ee\":\"Y\",\"4ef\":\"y\",\"4f0\":\"Y\",\"4f1\":\"y\",\"4f2\":\"Y\",\"4f3\":\"y\",\"4f4\":\"H\",\"4f5\":\"h\",\"4f6\":\"R\",\"4f7\":\"r\",\"4f8\":\"bI\",\"4f9\":\"bi\",\"4fa\":\"F\",\"4fb\":\"f\",\"4fc\":\"X\",\"4fd\":\"x\",\"4fe\":\"X\",\"4ff\":\"x\",\"50a\":\"H\",\"50b\":\"h\",\"50c\":\"G\",\"50d\":\"g\",\"50e\":\"T\",\"50f\":\"t\",\"51a\":\"Q\",\"51b\":\"q\",\"51c\":\"W\",\"51d\":\"w\",\"53a\":\"d\",\"53b\":\"r\",\"53c\":\"L\",\"53d\":\"Iu\",\"53e\":\"O\",\"53f\":\"y\",\"54a\":\"m\",\"54b\":\"o\",\"54c\":\"N\",\"54d\":\"U\",\"54e\":\"Y\",\"54f\":\"S\",\"56a\":\"d\",\"56b\":\"h\",\"56c\":\"l\",\"56d\":\"lu\",\"56e\":\"d\",\"56f\":\"y\",\"57a\":\"w\",\"57b\":\"2\",\"57c\":\"n\",\"57d\":\"u\",\"57e\":\"y\",\"57f\":\"un\"};\r\n\r\n let str = '';\r\n for (let i = 0; i < string.length; i++) {\r\n str += map[string.charCodeAt(i).toString(16)] || '';\r\n }\r\n\r\n return str.toLowerCase().replace(/-+/g, '-').replace(/^-|-$/, '');\r\n },\r\n\r\n // camelize():String\r\n camelize (string) {\r\n return string.trim().replace(/(\\-|_|\\s)+(.)?/g, (a, b, c) => {\r\n return (c ? c.toUpperCase() : '');\r\n });\r\n },\r\n\r\n // capitalize():String\r\n capitalize (string) {\r\n return string.substr(0, 1).toUpperCase() + string.substr(1).toLowerCase();\r\n },\r\n\r\n // dasherize():String\r\n dasherize (string) {\r\n return string.replace(/[_\\s]+/g, '-').replace(/([A-Z])/g, '-$1').replace(/-+/g, '-').toLowerCase();\r\n },\r\n\r\n // humanize():String\r\n humanize (string) {\r\n let str = string.replace(/([a-z\\d])([A-Z+])/g, '$1_$2').replace(/[-\\s]+/g, '_').replace(/_+/g, ' ').trim();\r\n return str.substr(0, 1).toUpperCase() + str.substr(1).toLowerCase();\r\n },\r\n\r\n // underscore():String\r\n underscore (string) {\r\n return string.trim().replace(/([a-z\\d])([A-Z]+)/g, '$1_$1').replace(/[-\\s]+/g, '_').toLowerCase();\r\n },\r\n\r\n // titlecase():String\r\n titlecase (string) {\r\n return string.replace(/(?:^|\\s)\\S/g, (a) => {\r\n return a.toUpperCase();\r\n });\r\n },\r\n\r\n // camelcase():String\r\n camelcase (string) {\r\n return string.toLowerCase().replace(/\\s+(\\S)/g, (a, b) => {\r\n return b.toUpperCase();\r\n });\r\n },\r\n\r\n // substr(start:Number, [length:Number]):String\r\n substr (string, start, length) {\r\n return string.substr(start, length);\r\n },\r\n\r\n // substring(start:Number, [end:Number]):String\r\n substring (string, start, end) {\r\n return string.slice(start, end);\r\n },\r\n\r\n // replace(search:String|RegExp, replace:String):String\r\n replace (string, search, replace, caseInsensitive) {\r\n if (typeof search == 'string') {\r\n search = new RegExp(dmx.escapeRegExp(search), 'g' + (caseInsensitive ? 'i' : ''));\r\n }\r\n\r\n return string.replace(search, replace);\r\n },\r\n\r\n // trim():String\r\n trim (string) {\r\n return string.trim();\r\n },\r\n\r\n // trimLeft():String\r\n trimLeft (string) {\r\n return string.replace(/^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]*/, '');\r\n },\r\n\r\n // trimRight():String\r\n trimRight (string) {\r\n return string.replace(/[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]*$/, '');\r\n },\r\n\r\n // concat(string2:String):String\r\n concat (string, string2) {\r\n if (string2 == null) string2 = '';\r\n return string.concat(string2);\r\n },\r\n\r\n // trunc(charsAllowed:Number, [useWordBoundary:Boolean], [append:String]):String\r\n trunc (string, charsAllowed, useWordBoundary, append = '…') {\r\n if (string.length > charsAllowed) {\r\n string = string.substr(0, charsAllowed);\r\n\r\n if (useWordBoundary) {\r\n let lastSpace = string.lastIndexOf(' ');\r\n if (lastSpace !== -1) {\r\n string = string.substr(0, lastSpace);\r\n }\r\n }\r\n\r\n string += append;\r\n }\r\n\r\n return string;\r\n },\r\n\r\n // stripTags():String\r\n stripTags (string) {\r\n return string.replace(/<[^>]+>/g, '');\r\n },\r\n\r\n // padStart(length:Number, [filler:String]):String\r\n padStart (string, length, filler = ' ') {\r\n return string.padStart(length, filler);\r\n },\r\n\r\n // padEnd(length:Number, [filler:String]):String\r\n padEnd (string, length, filler = ' ') {\r\n return string.padEnd(length, filler);\r\n },\r\n\r\n // repeat(count:Number):String\r\n repeat (string, count) {\r\n return string.repeat(count);\r\n },\r\n\r\n // wordCount():Number\r\n wordCount (string) {\r\n return string.trim().split(/\\s+/).length;\r\n },\r\n\r\n // length():Number\r\n length (string) {\r\n return string.length;\r\n },\r\n\r\n // split(separator:String|RegExp):Array\r\n split (string, separator) {\r\n return string.split(separator);\r\n },\r\n\r\n parseJSON (string) {\r\n return JSON.parse(string);\r\n },\r\n\r\n encodeURIComponent (string) {\r\n return encodeURIComponent(string);\r\n },\r\n\r\n encodeURI (string) {\r\n return encodeURI(string);\r\n },\r\n\r\n});\r\n","dmx.Formatters('object', {\r\n\r\n // keys():Array\r\n keys (object) {\r\n return Object.keys(object);\r\n },\r\n\r\n // values():Array\r\n values (object) {\r\n return Object.keys(object).map(key => object[key]);\r\n },\r\n\r\n // hasKey(key:String):Boolean\r\n hasKey (object, key) {\r\n return Object.keys(object).includes(key);\r\n },\r\n\r\n // hasValue(value:Any):Boolean\r\n hasValue (object, value) {\r\n return Object.values(object).includes(value);\r\n },\r\n\r\n //getValueOrKey():any\r\n getValueOrKey (object, key) {\r\n return object[key] != null ? object[key] : key;\r\n },\r\n\r\n});\r\n"]}