{"version":3,"file":"filters-b72668bc.js","sources":["../../../app/javascript/mixins/filters.js"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { getNumberPrecision } from '@/composeables/helpers';\n\nexport default {\n methods: {\n percentage(val) {\n if (typeof val === 'undefined' || val === null || val === '' || val === 'N/A') {\n return '';\n }\n return parseFloat(val) > 0 ? `+${val}%` : `${val}%`;\n },\n\n decimals(value, minDecimals = 4, maxDecimals = 4) {\n if (typeof value === 'undefined' || value === null || value === '' || isNaN(value)) {\n return '';\n }\n return new Intl.NumberFormat('en-US', {\n minimumFractionDigits: minDecimals,\n maximumFractionDigits: maxDecimals\n }).format(value);\n },\n\n roundSmallPercent(value, minDecimals = 2, maxDecimals = 4) {\n if (typeof value === 'undefined' || value === null || value === '') {\n return '';\n }\n if (value < 0.01) {\n minDecimals = 4;\n maxDecimals = 4;\n }\n return new Intl.NumberFormat('en-US', {\n minimumFractionDigits: minDecimals,\n maximumFractionDigits: maxDecimals\n }).format(value);\n },\n\n rounded(value, decimalPlaces = 2) {\n if (typeof value === 'undefined' || value === null || value === '' || isNaN(value)) {\n return '';\n }\n var decimalNumber = typeof value === 'string' ? parseFloat(value) : value;\n\n return new Intl.NumberFormat('en-US', {\n minimumFractionDigits: decimalPlaces,\n maximumFractionDigits: decimalPlaces\n }).format(decimalNumber);\n },\n\n roundedPercent(value, decimalPlaces = 2) {\n const r = this.rounded(value, decimalPlaces);\n return r ? r + '%' : '';\n },\n\n usdCryptoPrice(value) {\n if (typeof value === 'undefined' || value === null || value === '') {\n return '';\n }\n var decimals = getNumberPrecision(value);\n var prefix = value < 0 ? '-' : '';\n value = value < 0 ? value * -1 : value;\n var price = new Intl.NumberFormat('en-US', {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n }).format(value);\n if (price != 0) return prefix + '$' + price;\n\n price = this.formatSmallNumbers(value);\n return prefix + '$' + price;\n },\n\n btcCryptoPrice(value) {\n if (typeof value === 'undefined' || value === null || value === '') {\n return '';\n }\n var inSats = false;\n if (value <= 0.0001) {\n inSats = true;\n value = value * 100000000;\n }\n var rounded = new Intl.NumberFormat('en-US', {\n minimumFractionDigits: 6,\n maximumFractionDigits: 6\n }).format(value);\n\n return inSats ? `${rounded} sats` : `${rounded} BTC`;\n },\n\n truncate(value, maxChars) {\n if (value && value.length > maxChars) {\n return value.slice(0, maxChars) + '...';\n }\n return value;\n },\n\n readableDate(date) {\n if (!date || date == '0000-00-00') {\n return '';\n }\n return DateTime.fromISO(date).toFormat('LLL dd, yyyy');\n },\n\n readableDateTime(date) {\n if (!date) {\n return '';\n }\n return DateTime.fromJSDate(date).toFormat('LLL dd, yyyy h:mma');\n },\n\n minimalTimeWithinToday(date) {\n //return empty if null\n if (!date) {\n return '';\n }\n // if today then remove YYYY-MM-DD\n let datetime = null;\n if (isNaN(date)) {\n datetime = DateTime.fromISO(date);\n } else {\n datetime = DateTime.fromMillis(date);\n }\n if (datetime.toFormat('yyyy-MM-dd') === DateTime.now().toFormat('yyyy-MM-dd')) {\n return datetime.toFormat('h:mma');\n }\n\n // if same year, remove the year\n if (datetime.toFormat('yyyy') === DateTime.now().toFormat('yyyy')) {\n return datetime.toFormat('LLL dd, h:mm a');\n }\n return datetime.toFormat('LLL dd, yyyy h:mm a');\n },\n\n relativeTime(date) {\n return DateTime.fromISO(date).setZone('UTC').toRelative();\n },\n\n formatPrice(num) {\n const precision = getNumberPrecision(num);\n const dec = Math.pow(10, precision);\n var price = (Math.round(Number(num) * dec) / dec).toLocaleString(undefined, {\n minimumFractionDigits: precision\n });\n if (price != 0) return price;\n return this.formatSmallNumbers(num);\n },\n\n formatNumber(num, digits = 2, prefix = '') {\n if (typeof num === 'undefined' || num === null || num === '' || num == 0 || num == 0.0) {\n return '';\n }\n var si = [\n { value: 1, symbol: '' },\n { value: 1e3, symbol: 'k' },\n { value: 1e6, symbol: 'M' },\n { value: 1e9, symbol: 'B' },\n { value: 1e12, symbol: 'T' },\n { value: 1e15, symbol: 'P' },\n { value: 1e18, symbol: 'E' },\n { value: 1e21, symbol: 'Z' },\n { value: 1e24, symbol: 'Y' },\n { value: 1e27, symbol: 'R' },\n { value: 1e30, symbol: 'Q' }\n ];\n var negative = [\n { value: -1, symbol: '' },\n { value: -1e3, symbol: 'k' },\n { value: -1e6, symbol: 'M' },\n { value: -1e9, symbol: 'B' },\n { value: -1e12, symbol: 'T' },\n { value: -1e15, symbol: 'P' },\n { value: -1e18, symbol: 'E' },\n { value: -1e21, symbol: 'Z' },\n { value: -1e24, symbol: 'Y' },\n { value: -1e27, symbol: 'R' },\n { value: -1e30, symbol: 'Q' }\n ];\n var rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n var i;\n if (num >= 0) {\n for (i = si.length - 1; i > 0; i--) {\n if (num >= si[i].value) {\n break;\n }\n }\n } else {\n for (i = si.length - 1; i > 0; i--) {\n if (num <= negative[i].value) {\n break;\n }\n }\n }\n return prefix + (num / si[i].value).toFixed(digits).replace(rx, '$1') + si[i].symbol;\n },\n\n slugify(str, separator = '-') {\n return str\n .trim()\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, separator);\n },\n\n roundedBtc(value, decimalPlaces = 2) {\n if (typeof value === 'undefined' || value === null || value === '' || isNaN(value)) {\n return '';\n }\n var decimalNumber = typeof value === 'string' ? parseFloat(value) : value;\n if (value < 1) {\n decimalPlaces = getNumberPrecision(value);\n }\n let price_btc = new Intl.NumberFormat('en-US', {\n minimumFractionDigits: decimalPlaces,\n maximumFractionDigits: decimalPlaces\n }).format(decimalNumber);\n if (price_btc != 0) return price_btc;\n\n return this.formatSmallNumbers(value);\n },\n\n titleize(str, separator = '-') {\n return str\n .split(separator)\n .map(word => {\n return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();\n })\n .join(' ');\n },\n\n upperCase(str, separator = '-') {\n return str\n .split(separator)\n .map(word => {\n return word.toUpperCase();\n })\n .join(' ');\n },\n toChatTime(timestamp, format = '') {\n let datetime = '';\n if (typeof timestamp === 'string') {\n datetime = DateTime.fromISO(timestamp);\n } else {\n datetime = DateTime.fromJSDate(timestamp);\n }\n if (format == 'channel') {\n if (datetime > DateTime.now().startOf('day')) {\n return datetime.toLocaleString(DateTime.TIME_SIMPLE) + ' today';\n } else {\n return datetime.toFormat('h:mm a') + ' on ' + datetime.toFormat('MMMM dd, yyyy');\n }\n } else if (format == 'chat_start') {\n if (datetime > DateTime.now().startOf('day')) {\n return 'Today';\n } else {\n return datetime.toFormat('MMMM dd, yyyy');\n }\n } else if (datetime > DateTime.now().startOf('day')) {\n if (format === 'simple') {\n return datetime.toLocaleString(DateTime.TIME_SIMPLE);\n } else {\n return 'Today at ' + datetime.toLocaleString(DateTime.TIME_SIMPLE);\n }\n } else {\n return datetime.toFormat('MM/dd/yyyy');\n }\n },\n formatSmallNumbers(num) {\n var i = 1;\n let n = num,\n limit = Math.pow(10, 12);\n while (n < 10 && i <= limit) {\n n = n * 10;\n i *= 10;\n }\n if (i > limit) return 0;\n return (parseInt(n) / i).toFixed(Math.round(Math.log(i) / Math.log(10)));\n }\n }\n};\n"],"names":["FilterMixin","val","value","minDecimals","maxDecimals","decimalPlaces","decimalNumber","r","decimals","getNumberPrecision","prefix","price","inSats","rounded","maxChars","date","DateTime","datetime","num","precision","dec","digits","si","negative","rx","i","str","separator","price_btc","word","timestamp","format","n","limit"],"mappings":"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"}