@unblind/units 0.1.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +209 -0
- package/README.md +3 -0
- package/dist/index.d.mts +151 -0
- package/dist/index.d.ts +151 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/datetime/formats.ts","../src/datetime/formatter.ts","../src/utils/featureToggles.ts","../src/datetime/common.ts","../src/datetime/moment_wrapper.ts","../src/types/time.ts","../src/i18n/dates.ts","../src/valueFormats/valueFormats.ts","../src/i18n/index.ts","../src/valueFormats/arithmeticFormatters.ts","../src/valueFormats/dateTimeFormatters.ts","../src/valueFormats/symbolFormatters.ts","../src/valueFormats/categories.ts"],"sourcesContent":["import { systemDateFormats } from \"./datetime/formats\";\nimport { dateTimeFormat, dateTimeFormatTimeAgo } from \"./datetime/formatter\";\nimport { getValueFormat } from \"./valueFormats/valueFormats\";\n\nexport {\n getValueFormat,\n dateTimeFormat,\n dateTimeFormatTimeAgo,\n systemDateFormats,\n};\n","export interface SystemDateFormatSettings {\n fullDate: string;\n interval: {\n millisecond: string;\n second: string;\n minute: string;\n hour: string;\n day: string;\n month: string;\n year: string;\n };\n useBrowserLocale: boolean;\n}\n\nconst DEFAULT_SYSTEM_DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss';\nconst DEFAULT_SYSTEM_DATE_MS_FORMAT = 'YYYY-MM-DD HH:mm:ss.SSS';\n\nexport class SystemDateFormatsState {\n fullDate = DEFAULT_SYSTEM_DATE_FORMAT;\n fullDateMS = DEFAULT_SYSTEM_DATE_MS_FORMAT;\n interval = {\n millisecond: 'HH:mm:ss.SSS',\n second: 'HH:mm:ss',\n minute: 'HH:mm',\n hour: 'MM/DD HH:mm',\n day: 'MM/DD',\n month: 'YYYY-MM',\n year: 'YYYY',\n };\n\n update(settings: SystemDateFormatSettings) {\n this.fullDate = settings.fullDate;\n this.interval = settings.interval;\n\n if (settings.useBrowserLocale) {\n this.useBrowserLocale();\n }\n }\n\n useBrowserLocale() {\n this.fullDate = localTimeFormat({\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n\n // ES5 doesn't support `DateTimeFormatOptions.fractionalSecondDigits` so we have to use\n // a hack with string replacement.\n this.fullDateMS = this.fullDate.replace('ss', 'ss.SSS');\n\n this.interval.millisecond = localTimeFormat(\n { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false },\n null,\n this.interval.second\n ).replace('ss', 'ss.SSS');\n this.interval.second = localTimeFormat(\n { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false },\n null,\n this.interval.second\n );\n this.interval.minute = localTimeFormat(\n { hour: '2-digit', minute: '2-digit', hour12: false },\n null,\n this.interval.minute\n );\n this.interval.hour = localTimeFormat(\n { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false },\n null,\n this.interval.hour\n );\n this.interval.day = localTimeFormat({ month: '2-digit', day: '2-digit', hour12: false }, null, this.interval.day);\n this.interval.month = localTimeFormat(\n { year: 'numeric', month: '2-digit', hour12: false },\n null,\n this.interval.month\n );\n }\n\n getTimeFieldUnit(useMsResolution?: boolean) {\n return `time:${useMsResolution ? this.fullDateMS : this.fullDate}`;\n }\n}\n\n/**\n * localTimeFormat helps to generate date formats for momentjs based on browser's locale\n *\n * @param locale browser locale, or default\n * @param options DateTimeFormatOptions to format date\n * @param fallback default format if Intl API is not present\n */\nexport function localTimeFormat(\n options: Intl.DateTimeFormatOptions,\n locale?: string | string[] | null,\n fallback?: string\n): string {\n if (missingIntlDateTimeFormatSupport()) {\n return fallback ?? DEFAULT_SYSTEM_DATE_FORMAT;\n }\n\n if (!locale && navigator) {\n locale = [...navigator.languages];\n }\n\n // https://momentjs.com/docs/#/displaying/format/\n let dateTimeFormat: Intl.DateTimeFormat;\n\n try {\n dateTimeFormat = new Intl.DateTimeFormat(locale || undefined, options);\n } catch {\n dateTimeFormat = new Intl.DateTimeFormat('en-US', options);\n }\n const parts = dateTimeFormat.formatToParts(new Date());\n const hour12 = dateTimeFormat.resolvedOptions().hour12;\n\n const mapping: { [key: string]: string } = {\n year: 'YYYY',\n month: 'MM',\n day: 'DD',\n hour: hour12 ? 'hh' : 'HH',\n minute: 'mm',\n second: 'ss',\n weekday: 'ddd',\n era: 'N',\n dayPeriod: 'A',\n timeZoneName: 'Z',\n };\n\n return parts.map((part) => mapping[part.type] || part.value).join('');\n}\n\nexport const systemDateFormats = new SystemDateFormatsState();\n\nconst missingIntlDateTimeFormatSupport = (): boolean => {\n return !('DateTimeFormat' in Intl) || !('formatToParts' in Intl.DateTimeFormat.prototype);\n};\n","/* eslint-disable id-blacklist, no-restricted-imports */\nimport moment, { Moment } from \"moment-timezone\";\n\nimport { TimeZone } from \"../types/time\";\nimport { getFeatureToggle } from \"../utils/featureToggles\";\n\nimport { DateTimeOptions, getTimeZone } from \"./common\";\nimport { systemDateFormats } from \"./formats\";\nimport { DateTimeInput, toUtc, dateTimeAsMoment } from \"./moment_wrapper\";\nimport { formatDate } from \"../i18n/dates\";\n\n/**\n * Converts a Grafana DateTimeInput to a plain Javascript Date object.\n */\nfunction toDate(dateInUtc: DateTimeInput): Date {\n if (dateInUtc instanceof Date) {\n return dateInUtc;\n }\n\n if (typeof dateInUtc === \"string\" || typeof dateInUtc === \"number\") {\n return new Date(dateInUtc);\n }\n\n return dateTimeAsMoment(dateInUtc).toDate();\n}\n\n/**\n * Converts a Grafana timezone string to an IANA timezone string.\n */\nexport function toIANATimezone(grafanaTimezone: string) {\n // Intl APIs will use the browser's timezone by default (if tz is undefined)\n if (grafanaTimezone === \"browser\") {\n return undefined;\n }\n\n const zone = moment.tz.zone(grafanaTimezone);\n if (!zone) {\n // If the timezone is invalid, we default to the browser's timezone\n return undefined;\n }\n\n return grafanaTimezone;\n}\n\nfunction getIntlOptions(\n date: Date,\n options?: DateTimeOptionsWithFormat,\n): Intl.DateTimeFormatOptions & { timeZone?: string } {\n const timeZone = getTimeZone(options);\n\n const intlOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\", // ↔ dateStyle: 'short'\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\", // ↔ timeStyle: 'short'\n minute: \"numeric\",\n timeZone: toIANATimezone(timeZone),\n };\n\n // If the time has seconds, ensure they're included in the format\n const hasSeconds = date.getSeconds() !== 0;\n if (hasSeconds) {\n intlOptions.second = \"numeric\";\n }\n\n if (options?.defaultWithMS) {\n intlOptions.second = \"numeric\";\n intlOptions.fractionalSecondDigits = 3; // Include milliseconds\n }\n\n return intlOptions;\n}\n\n/**\n * The type describing the options that can be passed to the {@link dateTimeFormat}\n * helper function to control how the date and time value passed to the function is\n * formatted.\n *\n * @public\n */\nexport interface DateTimeOptionsWithFormat extends DateTimeOptions {\n /**\n * Set this value to `true` if you want to include milliseconds when formatting date and time\n */\n defaultWithMS?: boolean;\n}\n\ntype DateTimeFormatter<T extends DateTimeOptions = DateTimeOptions> = (\n dateInUtc: DateTimeInput,\n options?: T,\n) => string;\n\n// NOTE:\n// These date formatting functions now just wrap the @grafana/i18n formatting functions\n// (which themselves wrap the browserIntl APIs). In the future we may deprecate these\n// in favor of using @grafana/i18n directly.\n\n/**\n * Helper function to format date and time according to the specified options.\n * If no options are supplied, then the date is formatting according to the user's locale preference.\n *\n * @param dateInUtc - date in UTC format, e.g. string formatted with UTC offset, UNIX epoch in seconds etc.\n * @param options\n *\n * @public\n */\nexport const dateTimeFormat: DateTimeFormatter<DateTimeOptionsWithFormat> = (\n dateInUtc,\n options?,\n) => {\n // If a custom format is provided (or the toggle isn't enabled), use the previous implementation\n if (!getFeatureToggle(\"localeFormatPreference\") || options?.format) {\n return toTz(dateInUtc, getTimeZone(options)).format(getFormat(options));\n }\n\n const dateAsDate = toDate(dateInUtc);\n const intlOptions = getIntlOptions(dateAsDate, options); // TODO - if invalid timezone, use browser timezone\n return formatDate(dateAsDate, intlOptions);\n};\n\n/**\n * Helper function to format date and time according to the standard ISO format e.g. 2013-02-04T22:44:30.652Z.\n * If no options are supplied, then default values are used. For more details, see {@link DateTimeOptionsWithFormat}.\n *\n * @param dateInUtc - date in UTC format, e.g. string formatted with UTC offset, UNIX epoch in seconds etc.\n * @param options\n *\n * @public\n */\nexport const dateTimeFormatISO: DateTimeFormatter = (dateInUtc, options?) =>\n toTz(dateInUtc, getTimeZone(options)).format();\n\n/**\n * Helper function to return elapsed time since passed date. The returned value will be formatted\n * in a human readable format e.g. 4 years ago. If no options are supplied, then default values are used.\n * For more details, see {@link DateTimeOptions}.\n *\n * @param dateInUtc - date in UTC format, e.g. string formatted with UTC offset, UNIX epoch in seconds etc.\n * @param options\n *\n * @public\n */\nexport const dateTimeFormatTimeAgo: DateTimeFormatter = (dateInUtc, options?) =>\n toTz(dateInUtc, getTimeZone(options)).fromNow();\n\n/**\n * Helper function to format date and time according to the Grafana default formatting, but it\n * also appends the time zone abbreviation at the end e.g. 2020-05-20 13:37:00 CET. If no options\n * are supplied, then default values are used. For more details please see {@link DateTimeOptions}.\n *\n * @param dateInUtc - date in UTC format, e.g. string formatted with UTC offset, UNIX epoch in seconds etc.\n * @param options\n *\n * @public\n */\nexport const dateTimeFormatWithAbbrevation: DateTimeFormatter = (\n dateInUtc,\n options?,\n) => {\n // If a custom format is provided (or the toggle isn't enabled), use the previous implementation\n if (!getFeatureToggle(\"localeFormatPreference\") || options?.format) {\n return toTz(dateInUtc, getTimeZone(options)).format(\n `${systemDateFormats.fullDate} z`,\n );\n }\n\n const dateAsDate = toDate(dateInUtc);\n const intlOptions = getIntlOptions(dateAsDate, options);\n intlOptions.timeZoneName = \"short\";\n\n return formatDate(dateAsDate, intlOptions);\n};\n\n/**\n * Helper function to return only the time zone abbreviation for a given date and time value. If no options\n * are supplied, then default values are used. For more details please see {@link DateTimeOptions}.\n *\n * @param dateInUtc - date in UTC format, e.g. string formatted with UTC offset, UNIX epoch in seconds etc.\n * @param options\n *\n * @public\n */\nexport const timeZoneAbbrevation: DateTimeFormatter = (dateInUtc, options?) =>\n toTz(dateInUtc, getTimeZone(options)).format(\"z\");\n\nconst getFormat = <T extends DateTimeOptionsWithFormat>(\n options?: T,\n): string => {\n if (options?.defaultWithMS) {\n return options?.format ?? systemDateFormats.fullDateMS;\n }\n return options?.format ?? systemDateFormats.fullDate;\n};\n\nconst toTz = (dateInUtc: DateTimeInput, timeZone: TimeZone): Moment => {\n const date = dateInUtc;\n const zone = moment.tz.zone(timeZone);\n\n if (zone && zone.name) {\n return dateTimeAsMoment(toUtc(date)).tz(zone.name);\n }\n\n switch (timeZone) {\n case \"utc\":\n return dateTimeAsMoment(toUtc(date));\n default:\n return dateTimeAsMoment(toUtc(date)).local();\n }\n};\n","type FeatureToggleName = any;\n\n/**\n * Check a featureToggle\n * @param featureName featureToggle name\n * @param def default value if featureToggles aren't defined, false if not provided\n * @returns featureToggle value or def.\n */\nexport function getFeatureToggle(featureName: FeatureToggleName, def = false) {\n return (\n (window as any).grafanaBootData?.settings.featureToggles[featureName] ?? def\n );\n}\n","import { isEmpty } from \"lodash\";\n\nimport { TimeZone, DefaultTimeZone } from \"../types/time\";\n\n/**\n * Used for helper functions handling time zones.\n *\n * @public\n */\nexport interface TimeZoneOptions {\n /**\n * Specify this if you want to override the timeZone used when parsing or formatting\n * a date and time value. If no timeZone is set, the default timeZone for the current\n * user is used.\n */\n timeZone?: TimeZone;\n}\n\n/**\n * The type describing date and time options. Used for all the helper functions\n * available to parse or format date and time values.\n *\n * @public\n */\nexport interface DateTimeOptions extends TimeZoneOptions {\n /**\n * Specify a {@link https://momentjs.com/docs/#/displaying/format | momentjs} format to\n * use a custom formatting pattern or parsing pattern. If no format is set,\n * then system configured default format is used.\n */\n format?: string;\n}\n\n/**\n * The type to describe the time zone resolver function that will be used to access\n * the default time zone of a user.\n *\n * @public\n */\nexport type TimeZoneResolver = () => TimeZone | undefined;\n\nlet defaultTimeZoneResolver: TimeZoneResolver = () => DefaultTimeZone;\n\n/**\n * Used by Grafana internals to set the {@link TimeZoneResolver} to access the current\n * user timeZone.\n *\n * @internal\n */\nexport const setTimeZoneResolver = (resolver: TimeZoneResolver) => {\n defaultTimeZoneResolver = resolver ?? defaultTimeZoneResolver;\n};\n\n/**\n * Used to get the current selected time zone. If a valid time zone is passed in the\n * options it will be returned. If no valid time zone is passed either the time zone\n * configured for the user account will be returned or the default for Grafana.\n *\n * @public\n */\nexport const getTimeZone = <T extends TimeZoneOptions>(\n options?: T,\n): TimeZone => {\n if (options?.timeZone && !isEmpty(options.timeZone)) {\n return options.timeZone;\n }\n return defaultTimeZoneResolver() ?? DefaultTimeZone;\n};\n","import moment, {\n Moment,\n MomentInput,\n DurationInputArg1,\n DurationInputArg2,\n} from \"moment\";\nimport { tz } from \"moment-timezone\";\n\nimport { TimeZone } from \"../types/time\";\n/* eslint-disable id-blacklist, no-restricted-imports */\nexport interface DateTimeBuiltinFormat {\n __momentBuiltinFormatBrand: any;\n}\nexport const ISO_8601: DateTimeBuiltinFormat = moment.ISO_8601;\nexport type DateTimeInput =\n | Date\n | string\n | number\n | Array<string | number>\n | DateTime\n | null; // | undefined;\nexport type FormatInput = string | DateTimeBuiltinFormat | undefined;\nexport type DurationInput = string | number | DateTimeDuration;\nexport type DurationUnit =\n | \"year\"\n | \"years\"\n | \"y\"\n | \"month\"\n | \"months\"\n | \"M\"\n | \"week\"\n | \"weeks\"\n | \"isoWeek\"\n | \"w\"\n | \"day\"\n | \"days\"\n | \"d\"\n | \"hour\"\n | \"hours\"\n | \"h\"\n | \"minute\"\n | \"minutes\"\n | \"m\"\n | \"second\"\n | \"seconds\"\n | \"s\"\n | \"millisecond\"\n | \"milliseconds\"\n | \"ms\"\n | \"quarter\"\n | \"quarters\"\n | \"Q\";\n\nexport interface DateTimeLocale {\n firstDayOfWeek: () => number;\n}\n\nexport interface DateTimeDuration {\n asHours: () => number;\n hours: () => number;\n minutes: () => number;\n seconds: () => number;\n asSeconds: () => number;\n}\n\nexport interface DateTime extends Object {\n add: (amount?: DateTimeInput, unit?: DurationUnit) => DateTime;\n set: (unit: DurationUnit | \"date\", amount: DateTimeInput) => void;\n diff: (\n amount: DateTimeInput,\n unit?: DurationUnit,\n truncate?: boolean,\n ) => number;\n endOf: (unitOfTime: DurationUnit) => DateTime;\n format: (formatInput?: FormatInput) => string;\n fromNow: (withoutSuffix?: boolean) => string;\n from: (formaInput: DateTimeInput) => string;\n isSame: (input?: DateTimeInput, granularity?: DurationUnit) => boolean;\n isBefore: (input?: DateTimeInput) => boolean;\n isValid: () => boolean;\n local: () => DateTime;\n locale: (locale: string) => DateTime;\n startOf: (unitOfTime: DurationUnit) => DateTime;\n subtract: (amount?: DateTimeInput, unit?: DurationUnit) => DateTime;\n toDate: () => Date;\n toISOString: (keepOffset?: boolean) => string;\n isoWeekday: (day?: number | string) => number | string;\n valueOf: () => number;\n unix: () => number;\n utc: () => DateTime;\n utcOffset: () => number;\n hour?: () => number;\n minute?: () => number;\n}\n\nexport const setLocale = (language: string) => {\n moment.locale(language);\n};\n\nexport const getLocale = () => {\n return moment.locale();\n};\n\nexport const getLocaleData = (): DateTimeLocale => {\n return moment.localeData();\n};\n\nexport const isDateTimeInput = (value: unknown): value is DateTimeInput => {\n return (\n value === null ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n value instanceof Date ||\n (Array.isArray(value) &&\n value.every((v) => typeof v === \"string\" || typeof v === \"number\")) ||\n isDateTime(value)\n );\n};\n\nexport const isDateTime = (value: unknown): value is DateTime => {\n return moment.isMoment(value);\n};\n\nexport const toUtc = (\n input?: DateTimeInput,\n formatInput?: FormatInput,\n): DateTime => {\n return moment.utc(input as MomentInput, formatInput) as DateTime;\n};\n\nexport const toDuration = (\n input?: DurationInput,\n unit?: DurationUnit,\n): DateTimeDuration => {\n // moment built-in types are a bit flaky, for example `isoWeek` is not in the type definition but it's present in the js source.\n return moment.duration(\n input as DurationInputArg1,\n unit as DurationInputArg2,\n ) as DateTimeDuration;\n};\n\nexport const dateTime = (\n input?: DateTimeInput,\n formatInput?: FormatInput,\n): DateTime => {\n return moment(input as MomentInput, formatInput) as DateTime;\n};\n\nexport const dateTimeAsMoment = (input?: DateTimeInput) => {\n return dateTime(input) as Moment;\n};\n\nexport const dateTimeForTimeZone = (\n timezone?: TimeZone,\n input?: DateTimeInput,\n formatInput?: FormatInput,\n): DateTime => {\n if (timezone && timezone !== \"browser\") {\n let result: moment.Moment;\n\n if (typeof input === \"string\" && formatInput) {\n result = tz(input, formatInput, timezone);\n } else {\n result = tz(input as any, timezone);\n }\n\n if (isDateTime(result)) {\n return result;\n }\n }\n\n return dateTime(input, formatInput);\n};\n\nexport const getWeekdayIndex = (day: string) => {\n return moment\n .weekdays()\n .findIndex((wd) => wd.toLowerCase() === day.toLowerCase());\n};\n\nexport const getWeekdayIndexByEnglishName = (day: string) =>\n [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ].findIndex((wd) => wd.toLowerCase() === day.toLowerCase());\n\nexport const setWeekStart = (weekStart?: string) => {\n const suffix = \"-weekStart\";\n const language = getLocale().replace(suffix, \"\");\n const dow = weekStart ? getWeekdayIndexByEnglishName(weekStart) : -1;\n if (dow !== -1) {\n moment.updateLocale(language + suffix, {\n parentLocale: language,\n week: {\n dow,\n },\n });\n } else {\n setLocale(language);\n }\n};\n","import { dateTime, DateTime } from \"../datetime/moment_wrapper\";\n\n/**\n * Use UTC/GMT timezone\n */\nexport type TimeZoneUtc = \"utc\";\n\n/**\n * Use the timezone defined by end user web browser\n */\nexport type TimeZoneBrowser = \"browser\";\n\n/**\n * A specific timezone from https://en.wikipedia.org/wiki/Tz_database\n */\nexport type TimeZone = TimeZoneUtc | TimeZoneBrowser | string;\n\nexport const defaultTimeZone: TimeZone = \"browser\";\nexport const DefaultTimeZone = defaultTimeZone;\n\nexport interface RawTimeRange {\n from: DateTime | string;\n to: DateTime | string;\n}\n\nexport interface TimeRange {\n from: DateTime;\n to: DateTime;\n raw: RawTimeRange;\n}\n\n/**\n * Type to describe relative time to now in seconds.\n * @internal\n */\nexport interface RelativeTimeRange {\n from: number;\n to: number;\n}\n\nexport interface AbsoluteTimeRange {\n from: number;\n to: number;\n}\n\nexport interface IntervalValues {\n interval: string; // 10s,5m\n intervalMs: number;\n}\n\nexport interface TimeOption {\n from: string;\n to: string;\n display: string;\n invalid?: boolean;\n section?: number;\n}\n\nexport interface TimeOptions {\n [key: string]: TimeOption[];\n}\n\nexport type TimeFragment = string | DateTime;\n\nexport const TIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\n\nexport function getDefaultTimeRange(): TimeRange {\n const now = dateTime();\n\n return {\n from: dateTime(now).subtract(6, \"hour\"),\n to: now,\n raw: { from: \"now-6h\", to: \"now\" },\n };\n}\n\n/**\n * Returns the default relative time range.\n *\n * @public\n */\nexport function getDefaultRelativeTimeRange(): RelativeTimeRange {\n return {\n from: 600,\n to: 0,\n };\n}\n\n/**\n * Simple helper to quickly create a TimeRange object either from string representations of a dateTime or directly\n * DateTime objects.\n */\nexport function makeTimeRange(\n from: DateTime | string,\n to: DateTime | string,\n): TimeRange {\n const fromDateTime = typeof from === \"string\" ? dateTime(from) : from;\n const toDateTime = typeof to === \"string\" ? dateTime(to) : to;\n return {\n from: fromDateTime,\n to: toDateTime,\n raw: {\n from: fromDateTime,\n to: toDateTime,\n },\n };\n}\n","import deepEqual from \"fast-deep-equal\";\nimport memoize, { AnyFn, Memoized } from \"micro-memoize\";\n\nconst deepMemoize: typeof memoize = (fn) => memoize(fn, { isEqual: deepEqual });\n\nfunction clearMemoizedCache(fn: Memoized<AnyFn>) {\n fn.cache.keys.length = 0;\n fn.cache.values.length = 0;\n}\n\nlet regionalFormat: string | undefined;\n\nconst createDateTimeFormatter = deepMemoize(\n (locale: string | undefined, options: Intl.DateTimeFormatOptions) => {\n try {\n return new Intl.DateTimeFormat(locale, options);\n } catch {\n return new Intl.DateTimeFormat(\"en-US\", options);\n }\n },\n);\n\nconst createDurationFormatter = deepMemoize(\n (locale: string | undefined, options: Intl.DurationFormatOptions) => {\n return new Intl.DurationFormat(locale, options);\n },\n);\n\nexport const formatDate = deepMemoize(\n (\n _value: number | Date | string,\n format: Intl.DateTimeFormatOptions = {},\n ): string => {\n const value = typeof _value === \"string\" ? new Date(_value) : _value;\n const dateFormatter = createDateTimeFormatter(regionalFormat, format);\n return dateFormatter.format(value);\n },\n);\n\nexport const formatDuration = deepMemoize(\n (\n duration: Intl.DurationInput,\n options: Intl.DurationFormatOptions = {},\n ): string => {\n const dateFormatter = createDurationFormatter(regionalFormat, options);\n return dateFormatter.format(duration);\n },\n);\n\nexport const formatDateRange = (\n _from: number | Date | string,\n _to: number | Date | string,\n format: Intl.DateTimeFormatOptions = {},\n): string => {\n const from = typeof _from === \"string\" ? new Date(_from) : _from;\n const to = typeof _to === \"string\" ? new Date(_to) : _to;\n\n const dateFormatter = createDateTimeFormatter(regionalFormat, format);\n return dateFormatter.formatRange(from, to);\n};\n\nexport const initRegionalFormat = (regionalFormatArg: string) => {\n // We don't expect this to be called with a different locale during the lifetime of the app,\n // so this is mostly here so we can change it during tests and clear out previously memoized values.\n clearMemoizedCache(formatDate);\n clearMemoizedCache(formatDuration);\n\n regionalFormat = regionalFormatArg;\n};\n","import { clamp } from \"lodash\";\n\nimport { DecimalCount } from \"../types/displayValue\";\nimport { TimeZone } from \"../types/time\";\n\nimport { getCategories } from \"./categories\";\nimport { toDateTimeValueFormatter } from \"./dateTimeFormatters\";\nimport {\n getOffsetFromSIPrefix,\n SIPrefix,\n currency,\n fullCurrency,\n} from \"./symbolFormatters\";\n\nexport interface FormattedValue {\n text: string;\n prefix?: string;\n suffix?: string;\n}\n\nexport function formattedValueToString(val: FormattedValue): string {\n return `${val.prefix ?? \"\"}${val.text}${val.suffix ?? \"\"}`;\n}\n\nexport type ValueFormatter = (\n value: number,\n decimals?: DecimalCount,\n scaledDecimals?: DecimalCount,\n timeZone?: TimeZone,\n showMs?: boolean,\n) => FormattedValue;\n\nexport interface ValueFormat {\n name: string;\n id: string;\n fn: ValueFormatter;\n}\n\nexport interface ValueFormatCategory {\n name: string;\n formats: ValueFormat[];\n}\n\nexport interface ValueFormatterIndex {\n [id: string]: ValueFormatter;\n}\n\n// Globals & formats cache\nlet categories: ValueFormatCategory[] = [];\nconst index: ValueFormatterIndex = {};\nlet hasBuiltIndex = false;\n\nexport function toFixed(value: number, decimals?: DecimalCount): string {\n if (value === null) {\n return \"\";\n }\n\n if (\n value === Number.NEGATIVE_INFINITY ||\n value === Number.POSITIVE_INFINITY\n ) {\n return value.toLocaleString();\n }\n\n if (decimals === null || decimals === undefined) {\n decimals = getDecimalsForValue(value);\n }\n\n if (value === 0) {\n return value.toFixed(decimals);\n }\n\n const factor = decimals ? Math.pow(10, Math.max(0, decimals)) : 1;\n const formatted = String(Math.round(value * factor) / factor);\n\n // if exponent return directly\n if (formatted.indexOf(\"e\") !== -1 || value === 0) {\n return formatted;\n }\n\n const decimalPos = formatted.indexOf(\".\");\n const precision = decimalPos === -1 ? 0 : formatted.length - decimalPos - 1;\n if (precision < decimals) {\n return (\n (precision ? formatted : formatted + \".\") +\n String(factor).slice(1, decimals - precision + 1)\n );\n }\n\n return formatted;\n}\n\nfunction getDecimalsForValue(value: number): number {\n const absValue = Math.abs(value);\n const log10 = Math.floor(Math.log(absValue) / Math.LN10);\n let dec = -log10 + 1;\n const magn = Math.pow(10, -dec);\n const norm = absValue / magn; // norm is between 1.0 and 10.0\n\n // special case for 2.5, requires an extra decimal\n if (norm > 2.25) {\n ++dec;\n }\n\n if (value % 1 === 0) {\n dec = 0;\n }\n\n const decimals = Math.max(0, dec);\n return decimals;\n}\n\nexport function toFixedScaled(\n value: number,\n decimals: DecimalCount,\n ext?: string,\n): FormattedValue {\n return {\n text: toFixed(value, decimals),\n suffix: appendPluralIf(ext, Math.abs(value) > 1),\n };\n}\n\nfunction appendPluralIf(\n ext: string | undefined,\n condition: boolean,\n): string | undefined {\n if (!condition) {\n return ext;\n }\n\n switch (ext) {\n case \" min\":\n case \" hour\":\n case \" day\":\n case \" week\":\n case \" year\":\n return `${ext}s`;\n default:\n return ext;\n }\n}\n\nexport function toFixedUnit(unit: string, asPrefix?: boolean): ValueFormatter {\n return (size: number, decimals?: DecimalCount) => {\n if (size === null) {\n return { text: \"\" };\n }\n const text = toFixed(size, decimals);\n if (unit) {\n if (asPrefix) {\n return { text, prefix: unit };\n }\n return { text, suffix: \" \" + unit };\n }\n return { text };\n };\n}\n\nexport function isBooleanUnit(unit?: string) {\n return unit && unit.startsWith(\"bool\");\n}\n\nexport function booleanValueFormatter(t: string, f: string): ValueFormatter {\n return (value) => {\n return { text: value ? t : f };\n };\n}\n\nconst logb = (b: number, x: number) => Math.log10(x) / Math.log10(b);\n\nexport function scaledUnits(\n factor: number,\n extArray: string[],\n offset = 0,\n): ValueFormatter {\n return (size: number, decimals?: DecimalCount) => {\n if (size === null || size === undefined) {\n return { text: \"\" };\n }\n\n if (\n size === Number.NEGATIVE_INFINITY ||\n size === Number.POSITIVE_INFINITY ||\n isNaN(size)\n ) {\n return { text: size.toLocaleString() };\n }\n\n const siIndex = size === 0 ? 0 : Math.floor(logb(factor, Math.abs(size)));\n const suffix = extArray[clamp(offset + siIndex, 0, extArray.length - 1)];\n\n return {\n text: toFixed(\n size / factor ** clamp(siIndex, -offset, extArray.length - offset - 1),\n decimals,\n ),\n suffix,\n };\n };\n}\n\nexport function locale(value: number, decimals: DecimalCount): FormattedValue {\n if (value == null) {\n return { text: \"\" };\n }\n return {\n text: value.toLocaleString(undefined, {\n maximumFractionDigits: decimals ?? undefined,\n }),\n };\n}\n\nexport function simpleCountUnit(symbol: string): ValueFormatter {\n const units = [\"\", \"K\", \"M\", \"B\", \"T\"];\n const scaler = scaledUnits(1000, units);\n return (\n size: number,\n decimals?: DecimalCount,\n scaledDecimals?: DecimalCount,\n ) => {\n if (size === null) {\n return { text: \"\" };\n }\n const v = scaler(size, decimals, scaledDecimals);\n v.suffix += \" \" + symbol;\n return v;\n };\n}\n\nexport function stringFormater(value: number): FormattedValue {\n return { text: `${value}` };\n}\n\nfunction buildFormats() {\n categories = getCategories();\n\n for (const cat of categories) {\n for (const format of cat.formats) {\n index[format.id] = format.fn;\n }\n }\n\n // Resolve units pointing to old IDs\n [{ from: \"farenheit\", to: \"fahrenheit\" }].forEach((alias) => {\n const f = index[alias.to];\n if (f) {\n index[alias.from] = f;\n }\n });\n\n hasBuiltIndex = true;\n}\n\nexport function getValueFormat(id?: string | null): ValueFormatter {\n if (!id) {\n return toFixedUnit(\"\");\n }\n\n if (!hasBuiltIndex) {\n buildFormats();\n }\n\n const fmt = index[id];\n\n if (!fmt && id) {\n let idx = id.indexOf(\":\");\n\n if (idx > 0) {\n const key = id.substring(0, idx);\n const sub = id.substring(idx + 1);\n\n if (key === \"prefix\") {\n return toFixedUnit(sub, true);\n }\n\n if (key === \"suffix\") {\n return toFixedUnit(sub, false);\n }\n\n if (key === \"time\") {\n return toDateTimeValueFormatter(sub);\n }\n\n if (key === \"si\") {\n const offset = getOffsetFromSIPrefix(sub.charAt(0));\n const unit = offset === 0 ? sub : sub.substring(1);\n return SIPrefix(unit, offset);\n }\n\n if (key === \"count\") {\n return simpleCountUnit(sub);\n }\n\n // Supported formats:\n // currency:$ -> scaled currency ($1.2K)\n // currency:financial:$ -> full currency ($1,234)\n // currency:financial:€:suffix -> full currency with suffix (1,234€)\n if (key === \"currency\") {\n const keySplit = sub.split(\":\");\n\n if (keySplit[0] === \"financial\" && keySplit.length >= 2) {\n const symbol = keySplit[1];\n if (!symbol) {\n return toFixedUnit(\"\"); // fallback for empty symbol\n }\n const asSuffix = keySplit[2] === \"suffix\";\n return fullCurrency(symbol, asSuffix);\n } else {\n return currency(sub);\n }\n }\n\n if (key === \"bool\") {\n idx = sub.indexOf(\"/\");\n if (idx >= 0) {\n const t = sub.substring(0, idx);\n const f = sub.substring(idx + 1);\n return booleanValueFormatter(t, f);\n }\n return booleanValueFormatter(sub, \"-\");\n }\n }\n\n return toFixedUnit(id);\n }\n\n return fmt as ValueFormatter;\n}\n\nexport function getValueFormatterIndex(): ValueFormatterIndex {\n if (!hasBuiltIndex) {\n buildFormats();\n }\n\n return index;\n}\n\nexport function getValueFormats() {\n if (!hasBuiltIndex) {\n buildFormats();\n }\n\n return categories.map((cat) => {\n return {\n text: cat.name,\n submenu: cat.formats.map((format) => {\n return {\n text: format.name,\n value: format.id,\n };\n }),\n };\n });\n}\n","import i18n from \"i18next\";\n\nlet initialized = false;\n\nfunction initI18nOnce() {\n if (initialized) return;\n\n i18n.init({\n lng: \"en\",\n fallbackLng: \"en\",\n\n // No translations at all\n resources: {},\n\n returnEmptyString: false,\n returnNull: false,\n\n interpolation: {\n escapeValue: false,\n },\n });\n\n initialized = true;\n}\n\nexport const t = (\n key: string,\n defaultMessage: string,\n values?: Record<string, unknown>,\n) => {\n initI18nOnce();\n return i18n.t(key, defaultMessage, values);\n};\n","import { DecimalCount } from \"../types/displayValue\";\n\nimport { toFixed, FormattedValue } from \"./valueFormats\";\n\nexport function toPercent(\n size: number | null,\n decimals: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n return { text: toFixed(size, decimals), suffix: \"%\" };\n}\n\nexport function toPercentUnit(\n size: number | null,\n decimals: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n return { text: toFixed(100 * size, decimals), suffix: \"%\" };\n}\n\nexport function toHex0x(\n value: number | null,\n decimals: DecimalCount,\n): FormattedValue {\n if (value == null) {\n return { text: \"\" };\n }\n const asHex = toHex(value, decimals);\n if (asHex.text.substring(0, 1) === \"-\") {\n asHex.text = \"-0x\" + asHex.text.substring(1);\n } else {\n asHex.text = \"0x\" + asHex.text;\n }\n return asHex;\n}\n\nexport function toHex(\n value: number | null,\n decimals: DecimalCount,\n): FormattedValue {\n if (value == null) {\n return { text: \"\" };\n }\n return {\n text: parseFloat(toFixed(value, decimals)).toString(16).toUpperCase(),\n };\n}\n\nexport function sci(\n value: number | null,\n decimals: DecimalCount,\n): FormattedValue {\n if (value == null) {\n return { text: \"\" };\n }\n return { text: value.toExponential(decimals ?? undefined) };\n}\n","import { localTimeFormat, systemDateFormats } from \"../datetime/formats\";\nimport { dateTimeFormat, dateTimeFormatTimeAgo } from \"../datetime/formatter\";\nimport {\n toDuration as duration,\n toUtc,\n dateTime,\n} from \"../datetime/moment_wrapper\";\nimport { DecimalCount } from \"../types/displayValue\";\nimport { TimeZone } from \"../types/time\";\n\nimport {\n toFixed,\n toFixedScaled,\n FormattedValue,\n ValueFormatter,\n} from \"./valueFormats\";\n\ninterface IntervalsInSeconds {\n [interval: string]: number;\n}\n\nexport enum Interval {\n Year = \"year\",\n Month = \"month\",\n Week = \"week\",\n Day = \"day\",\n Hour = \"hour\",\n Minute = \"minute\",\n Second = \"second\",\n Millisecond = \"millisecond\",\n}\n\nconst UNITS = [\n Interval.Year,\n Interval.Month,\n Interval.Week,\n Interval.Day,\n Interval.Hour,\n Interval.Minute,\n Interval.Second,\n Interval.Millisecond,\n];\n\nconst INTERVALS_IN_SECONDS: IntervalsInSeconds = {\n [Interval.Year]: 31536000,\n [Interval.Month]: 2592000,\n [Interval.Week]: 604800,\n [Interval.Day]: 86400,\n [Interval.Hour]: 3600,\n [Interval.Minute]: 60,\n [Interval.Second]: 1,\n [Interval.Millisecond]: 0.001,\n};\n\nexport function toNanoSeconds(\n size: number,\n decimals?: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (Math.abs(size) < 1000) {\n return { text: toFixed(size, decimals), suffix: \" ns\" };\n } else if (Math.abs(size) < 1000000) {\n return toFixedScaled(size / 1000, decimals, \" µs\");\n } else if (Math.abs(size) < 1000000000) {\n return toFixedScaled(size / 1000000, decimals, \" ms\");\n } else if (Math.abs(size) < 60000000000) {\n return toFixedScaled(size / 1000000000, decimals, \" s\");\n } else if (Math.abs(size) < 3600000000000) {\n return toFixedScaled(size / 60000000000, decimals, \" min\");\n } else if (Math.abs(size) < 86400000000000) {\n return toFixedScaled(size / 3600000000000, decimals, \" hour\");\n } else {\n return toFixedScaled(size / 86400000000000, decimals, \" day\");\n }\n}\n\nexport function toMicroSeconds(\n size: number,\n decimals?: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (Math.abs(size) < 1000) {\n return { text: toFixed(size, decimals), suffix: \" µs\" };\n } else if (Math.abs(size) < 1000000) {\n return toFixedScaled(size / 1000, decimals, \" ms\");\n } else {\n return toFixedScaled(size / 1000000, decimals, \" s\");\n }\n}\n\nexport function toMilliSeconds(\n size: number,\n decimals?: DecimalCount,\n scaledDecimals?: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (Math.abs(size) < 1000) {\n return { text: toFixed(size, decimals), suffix: \" ms\" };\n } else if (Math.abs(size) < 60000) {\n // Less than 1 min\n return toFixedScaled(size / 1000, decimals, \" s\");\n } else if (Math.abs(size) < 3600000) {\n // Less than 1 hour, divide in minutes\n return toFixedScaled(size / 60000, decimals, \" min\");\n } else if (Math.abs(size) < 86400000) {\n // Less than one day, divide in hours\n return toFixedScaled(size / 3600000, decimals, \" hour\");\n } else if (Math.abs(size) < 31536000000) {\n // Less than one year, divide in days\n return toFixedScaled(size / 86400000, decimals, \" day\");\n }\n\n return toFixedScaled(size / 31536000000, decimals, \" year\");\n}\n\nexport function toSeconds(\n size: number,\n decimals?: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n // If 0, use s unit instead of ns\n if (size === 0) {\n return { text: \"0\", suffix: \" s\" };\n }\n\n // Less than 1 µs, divide in ns\n if (Math.abs(size) < 0.000001) {\n return toFixedScaled(size * 1e9, decimals, \" ns\");\n }\n // Less than 1 ms, divide in µs\n if (Math.abs(size) < 0.001) {\n return toFixedScaled(size * 1e6, decimals, \" µs\");\n }\n // Less than 1 second, divide in ms\n if (Math.abs(size) < 1) {\n return toFixedScaled(size * 1e3, decimals, \" ms\");\n }\n\n if (Math.abs(size) < 60) {\n return { text: toFixed(size, decimals), suffix: \" s\" };\n } else if (Math.abs(size) < 3600) {\n // Less than 1 hour, divide in minutes\n return toFixedScaled(size / 60, decimals, \" min\");\n } else if (Math.abs(size) < 86400) {\n // Less than one day, divide in hours\n return toFixedScaled(size / 3600, decimals, \" hour\");\n } else if (Math.abs(size) < 604800) {\n // Less than one week, divide in days\n return toFixedScaled(size / 86400, decimals, \" day\");\n } else if (Math.abs(size) < 31536000) {\n // Less than one year, divide in week\n return toFixedScaled(size / 604800, decimals, \" week\");\n }\n\n return toFixedScaled(size / 3.15569e7, decimals, \" year\");\n}\n\nexport function toMinutes(\n size: number,\n decimals?: DecimalCount,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (Math.abs(size) < 60) {\n return { text: toFixed(size, decimals), suffix: \" min\" };\n } else if (Math.abs(size) < 1440) {\n return toFixedScaled(size / 60, decimals, \" hour\");\n } else if (Math.abs(size) < 10080) {\n return toFixedScaled(size / 1440, decimals, \" day\");\n } else if (Math.abs(size) < 604800) {\n return toFixedScaled(size / 10080, decimals, \" week\");\n } else {\n return toFixedScaled(size / 5.25948e5, decimals, \" year\");\n }\n}\n\nexport function toHours(size: number, decimals?: DecimalCount): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (Math.abs(size) < 24) {\n return { text: toFixed(size, decimals), suffix: \" hour\" };\n } else if (Math.abs(size) < 168) {\n return toFixedScaled(size / 24, decimals, \" day\");\n } else if (Math.abs(size) < 8760) {\n return toFixedScaled(size / 168, decimals, \" week\");\n } else {\n return toFixedScaled(size / 8760, decimals, \" year\");\n }\n}\n\nexport function toDays(size: number, decimals?: DecimalCount): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (Math.abs(size) < 7) {\n return toFixedScaled(size, decimals, \" day\");\n } else if (Math.abs(size) < 365) {\n return toFixedScaled(size / 7, decimals, \" week\");\n } else {\n return toFixedScaled(size / 365, decimals, \" year\");\n }\n}\n\nexport function toDuration(\n size: number,\n decimals: DecimalCount,\n timeScale: Interval,\n): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n if (size === 0) {\n return { text: \"0\", suffix: \" \" + timeScale + \"s\" };\n }\n\n if (size < 0) {\n const v = toDuration(-size, decimals, timeScale);\n if (!v.suffix) {\n v.suffix = \"\";\n }\n v.suffix += \" ago\";\n return v;\n }\n\n // convert $size to milliseconds\n // intervals_in_seconds uses seconds (duh), convert them to milliseconds here to minimize floating point errors\n size *= (INTERVALS_IN_SECONDS[timeScale] as unknown as number) * 1000;\n\n const strings = [];\n\n // after first value >= 1 print only $decimals more\n let decrementDecimals = false;\n let decimalsCount = 0;\n\n if (decimals !== null && decimals !== undefined) {\n decimalsCount = decimals;\n }\n\n for (let i = 0; i < UNITS.length && decimalsCount >= 0; i++) {\n const interval =\n (INTERVALS_IN_SECONDS[UNITS[i] as unknown as string] as number) * 1000;\n const value = size / interval;\n if (value >= 1 || decrementDecimals) {\n decrementDecimals = true;\n const floor = Math.floor(value);\n const unit = UNITS[i] + (floor !== 1 ? \"s\" : \"\");\n strings.push(floor + \" \" + unit);\n size = size % interval;\n decimalsCount--;\n }\n }\n\n return { text: strings.join(\", \") };\n}\n\nexport function toClock(size: number, decimals?: DecimalCount): FormattedValue {\n if (size === null) {\n return { text: \"\" };\n }\n\n // < 1 second\n if (size < 1000) {\n return {\n text: toUtc(size).format(\"SSS\\\\m\\\\s\"),\n };\n }\n\n // < 1 minute\n if (size < 60000) {\n let format = \"ss\\\\s:SSS\\\\m\\\\s\";\n if (decimals === 0) {\n format = \"ss\\\\s\";\n }\n return { text: toUtc(size).format(format) };\n }\n\n // < 1 hour\n if (size < 3600000) {\n let format = \"mm\\\\m:ss\\\\s:SSS\\\\m\\\\s\";\n if (decimals === 0) {\n format = \"mm\\\\m\";\n } else if (decimals === 1) {\n format = \"mm\\\\m:ss\\\\s\";\n }\n return { text: toUtc(size).format(format) };\n }\n\n let format = \"mm\\\\m:ss\\\\s:SSS\\\\m\\\\s\";\n\n const hours = `${Math.floor(duration(size, \"milliseconds\").asHours())}h`;\n\n if (decimals === 0) {\n format = \"\";\n } else if (decimals === 1) {\n format = \"mm\\\\m\";\n } else if (decimals === 2) {\n format = \"mm\\\\m:ss\\\\s\";\n }\n\n const text = format ? `${hours}:${toUtc(size).format(format)}` : hours;\n return { text };\n}\n\nexport function toDurationInMilliseconds(\n size: number,\n decimals: DecimalCount,\n): FormattedValue {\n return toDuration(size, decimals, Interval.Millisecond);\n}\n\nexport function toDurationInSeconds(\n size: number,\n decimals: DecimalCount,\n): FormattedValue {\n return toDuration(size, decimals, Interval.Second);\n}\n\nexport function toDurationInHoursMinutesSeconds(size: number): FormattedValue {\n if (size < 0) {\n const v = toDurationInHoursMinutesSeconds(-size);\n if (!v.suffix) {\n v.suffix = \"\";\n }\n v.suffix += \" ago\";\n return v;\n }\n const strings = [];\n const numHours = Math.floor(size / 3600);\n const numMinutes = Math.floor((size % 3600) / 60);\n const numSeconds = Math.floor((size % 3600) % 60);\n numHours > 9 ? strings.push(\"\" + numHours) : strings.push(\"0\" + numHours);\n numMinutes > 9\n ? strings.push(\"\" + numMinutes)\n : strings.push(\"0\" + numMinutes);\n numSeconds > 9\n ? strings.push(\"\" + numSeconds)\n : strings.push(\"0\" + numSeconds);\n return { text: strings.join(\":\") };\n}\n\nexport function toDurationInDaysHoursMinutesSeconds(\n size: number,\n): FormattedValue {\n if (size < 0) {\n const v = toDurationInDaysHoursMinutesSeconds(-size);\n if (!v.suffix) {\n v.suffix = \"\";\n }\n v.suffix += \" ago\";\n return v;\n }\n let dayString = \"\";\n const numDays = Math.floor(size / (24 * 3600));\n if (numDays > 0) {\n dayString = numDays + \" d \";\n }\n const hmsString = toDurationInHoursMinutesSeconds(size - numDays * 24 * 3600);\n return { text: dayString + hmsString.text };\n}\n\nexport function toTimeTicks(\n size: number,\n decimals: DecimalCount,\n): FormattedValue {\n return toSeconds(size / 100, decimals);\n}\n\nexport function toClockMilliseconds(\n size: number,\n decimals: DecimalCount,\n): FormattedValue {\n return toClock(size, decimals);\n}\n\nexport function toClockSeconds(\n size: number,\n decimals: DecimalCount,\n): FormattedValue {\n return toClock(size * 1000, decimals);\n}\n\nexport function toDateTimeValueFormatter(\n pattern: string,\n todayPattern?: string,\n): ValueFormatter {\n return (\n value: number,\n decimals: DecimalCount,\n scaledDecimals: DecimalCount,\n timeZone?: TimeZone,\n ): FormattedValue => {\n if (todayPattern) {\n if (dateTime().isSame(value, \"day\")) {\n return {\n text: dateTimeFormat(value, { format: todayPattern, timeZone }),\n };\n }\n }\n return { text: dateTimeFormat(value, { format: pattern, timeZone }) };\n };\n}\n\nexport const dateTimeAsIso = toDateTimeValueFormatter(\"YYYY-MM-DD HH:mm:ss\");\nexport const dateTimeAsIsoNoDateIfToday = toDateTimeValueFormatter(\n \"YYYY-MM-DD HH:mm:ss\",\n \"HH:mm:ss\",\n);\nexport const dateTimeAsUS = toDateTimeValueFormatter(\"MM/DD/YYYY h:mm:ss a\");\nexport const dateTimeAsUSNoDateIfToday = toDateTimeValueFormatter(\n \"MM/DD/YYYY h:mm:ss a\",\n \"h:mm:ss a\",\n);\n\nexport function getDateTimeAsLocalFormat() {\n return toDateTimeValueFormatter(\n localTimeFormat({\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n }),\n );\n}\n\nexport function getDateTimeAsLocalFormatNoDateIfToday() {\n return toDateTimeValueFormatter(\n localTimeFormat({\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n }),\n localTimeFormat({\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n }),\n );\n}\n\nexport function dateTimeSystemFormatter(\n value: number,\n decimals: DecimalCount,\n scaledDecimals: DecimalCount,\n timeZone?: TimeZone,\n showMs?: boolean,\n): FormattedValue {\n return {\n text: dateTimeFormat(value, {\n format: showMs\n ? systemDateFormats.fullDateMS\n : systemDateFormats.fullDate,\n timeZone,\n }),\n };\n}\n\nexport function dateTimeFromNow(\n value: number,\n decimals: DecimalCount,\n scaledDecimals: DecimalCount,\n timeZone?: TimeZone,\n): FormattedValue {\n return { text: dateTimeFormatTimeAgo(value, { timeZone }) };\n}\n","import { DecimalCount } from \"../types/displayValue\";\n\nimport { scaledUnits, ValueFormatter } from \"./valueFormats\";\n\nexport function currency(symbol: string, asSuffix?: boolean): ValueFormatter {\n const units = [\"\", \"K\", \"M\", \"B\", \"T\"];\n const scaler = scaledUnits(1000, units);\n return (\n value: number,\n decimals?: DecimalCount,\n scaledDecimals?: DecimalCount,\n ) => {\n if (value == null) {\n return { text: \"\" };\n }\n const isNegative = value < 0;\n if (isNegative) {\n value = Math.abs(value);\n }\n const scaled = scaler(value, decimals, scaledDecimals);\n if (asSuffix) {\n scaled.suffix =\n scaled.suffix !== undefined ? `${scaled.suffix}${symbol}` : undefined;\n } else {\n scaled.prefix = symbol;\n }\n if (isNegative) {\n scaled.prefix = `-${scaled.prefix?.length ? scaled.prefix : \"\"}`;\n }\n return scaled;\n };\n}\n\n/**\n * Formats currency values without scaling abbreviations(K: Thousands, M: Millions, B: Billions), displaying full numeric values.\n * Uses cached Intl.NumberFormat objects for performance.\n *\n * @param symbol - Currency symbol (e.g., '$', '€', '£')\n * @param asSuffix - If true, places symbol after number\n *\n * @example\n * fullCurrency('$')(1234.56, 2) // { prefix: '$', text: '1,234.56' } - forces 2 decimals\n * fullCurrency('€', true)(42.5) // { suffix: '€', text: '42.5' }\n */\nexport function fullCurrency(\n symbol: string,\n asSuffix?: boolean,\n): ValueFormatter {\n const locale = Intl.NumberFormat().resolvedOptions().locale;\n const defaultFormatter = new Intl.NumberFormat(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n });\n const formattersCache = new Map<number, Intl.NumberFormat>();\n\n return (value: number | null, decimals?: DecimalCount) => {\n if (value === null) {\n return { text: \"\" };\n }\n\n const numericValue: number = value;\n\n let text: string;\n if (decimals !== undefined && decimals !== null) {\n let formatter = formattersCache.get(decimals);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n formattersCache.set(decimals, formatter);\n }\n text = formatter.format(numericValue);\n } else {\n text = defaultFormatter.format(numericValue);\n }\n\n return {\n prefix: asSuffix ? \"\" : symbol,\n suffix: asSuffix ? symbol : \"\",\n text,\n };\n };\n}\n\nconst SI_PREFIXES = [\n \"f\",\n \"p\",\n \"n\",\n \"µ\",\n \"m\",\n \"\",\n \"k\",\n \"M\",\n \"G\",\n \"T\",\n \"P\",\n \"E\",\n \"Z\",\n \"Y\",\n];\nconst SI_BASE_INDEX = SI_PREFIXES.indexOf(\"\");\n\nexport function getOffsetFromSIPrefix(c: string): number {\n const charIndex = SI_PREFIXES.findIndex(\n (prefix) => prefix.normalize(\"NFKD\") === c.normalize(\"NFKD\"),\n );\n return charIndex < 0 ? 0 : charIndex - SI_BASE_INDEX;\n}\n\nconst BIN_PREFIXES = [\"\", \"Ki\", \"Mi\", \"Gi\", \"Ti\", \"Pi\", \"Ei\", \"Zi\", \"Yi\"];\n\nexport function binaryPrefix(unit: string, offset = 0): ValueFormatter {\n const units = BIN_PREFIXES.map((p) => \" \" + p + unit);\n return scaledUnits(1024, units, offset);\n}\n\nexport function SIPrefix(unit: string, offset = 0): ValueFormatter {\n const units = SI_PREFIXES.map((p) => \" \" + p + unit);\n return scaledUnits(1000, units, SI_BASE_INDEX + offset);\n}\n","import { t } from \"../i18n\";\nimport {\n toHex,\n sci,\n toHex0x,\n toPercent,\n toPercentUnit,\n} from \"./arithmeticFormatters\";\nimport {\n dateTimeAsIso,\n dateTimeAsIsoNoDateIfToday,\n dateTimeAsUS,\n dateTimeAsUSNoDateIfToday,\n getDateTimeAsLocalFormat,\n getDateTimeAsLocalFormatNoDateIfToday,\n dateTimeFromNow,\n toClockMilliseconds,\n toClockSeconds,\n toDays,\n toDurationInDaysHoursMinutesSeconds,\n toDurationInHoursMinutesSeconds,\n toDurationInMilliseconds,\n toDurationInSeconds,\n toHours,\n toMicroSeconds,\n toMilliSeconds,\n toMinutes,\n toNanoSeconds,\n toSeconds,\n toTimeTicks,\n dateTimeSystemFormatter,\n} from \"./dateTimeFormatters\";\nimport { binaryPrefix, currency, SIPrefix } from \"./symbolFormatters\";\nimport {\n locale,\n scaledUnits,\n simpleCountUnit,\n toFixedUnit,\n ValueFormatCategory,\n stringFormater,\n booleanValueFormatter,\n} from \"./valueFormats\";\n\nexport const getCategories = (): ValueFormatCategory[] => [\n {\n name: t(\"grafana-data.valueFormats.categories.misc.name\", \"Misc\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-number\",\n \"Number\",\n ),\n id: \"none\",\n fn: toFixedUnit(\"\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-string\",\n \"String\",\n ),\n id: \"string\",\n fn: stringFormater,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-short\",\n \"short\",\n ),\n id: \"short\",\n fn: scaledUnits(1000, [\n \"\",\n \" K\",\n \" Mil\",\n \" Bil\",\n \" Tri\",\n \" Quadr\",\n \" Quint\",\n \" Sext\",\n \" Sept\",\n ]),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-si-short\",\n \"SI short\",\n ),\n id: \"sishort\",\n fn: SIPrefix(\"\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-percent-100\",\n \"Percent (0-100)\",\n ),\n id: \"percent\",\n fn: toPercent,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-percent-1\",\n \"Percent (0.0-1.0)\",\n ),\n id: \"percentunit\",\n fn: toPercentUnit,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-humidity\",\n \"Humidity (%H)\",\n ),\n id: \"humidity\",\n fn: toFixedUnit(\"%H\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-decibel\",\n \"Decibel\",\n ),\n id: \"dB\",\n fn: toFixedUnit(\"dB\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-candala\",\n \"Candela (cd)\",\n ),\n id: \"candela\",\n fn: SIPrefix(\"cd\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-hexadecimal-0x\",\n \"Hexadecimal (0x)\",\n ),\n id: \"hex0x\",\n fn: toHex0x,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-hexadecimal\",\n \"Hexadecimal\",\n ),\n id: \"hex\",\n fn: toHex,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-scientific\",\n \"Scientific notation\",\n ),\n id: \"sci\",\n fn: sci,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-locale\",\n \"Locale format\",\n ),\n id: \"locale\",\n fn: locale,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.misc.formats.name-pixels\",\n \"Pixels\",\n ),\n id: \"pixel\",\n fn: toFixedUnit(\"px\"),\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.acceleration.name\",\n \"Acceleration\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.acceleration.formats.name-meters-sec\",\n \"Meters/sec²\",\n ),\n id: \"accMS2\",\n fn: toFixedUnit(\"m/sec²\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.acceleration.formats.name-feet-sec\",\n \"Feet/sec²\",\n ),\n id: \"accFS2\",\n fn: toFixedUnit(\"f/sec²\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.acceleration.formats.name-g-unit\",\n \"G unit\",\n ),\n id: \"accG\",\n fn: toFixedUnit(\"g\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.angle.name\", \"Angle\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.angle.formats.name-degrees\",\n \"Degrees (°)\",\n ),\n id: \"degree\",\n fn: toFixedUnit(\"°\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.angle.formats.name-radians\",\n \"Radians\",\n ),\n id: \"radian\",\n fn: toFixedUnit(\"rad\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.angle.formats.name-gradian\",\n \"Gradian\",\n ),\n id: \"grad\",\n fn: toFixedUnit(\"grad\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.angle.formats.name-arc-minutes\",\n \"Arc Minutes\",\n ),\n id: \"arcmin\",\n fn: toFixedUnit(\"arcmin\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.angle.formats.name-arc-seconds\",\n \"Arc Seconds\",\n ),\n id: \"arcsec\",\n fn: toFixedUnit(\"arcsec\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.area.name\", \"Area\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.area.formats.name-square-meters\",\n \"Square Meters (m²)\",\n ),\n id: \"areaM2\",\n fn: toFixedUnit(\"m²\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.area.formats.name-square-feet\",\n \"Square Feet (ft²)\",\n ),\n id: \"areaF2\",\n fn: toFixedUnit(\"ft²\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.area.formats.name-square-miles\",\n \"Square Miles (mi²)\",\n ),\n id: \"areaMI2\",\n fn: toFixedUnit(\"mi²\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.area.formats.name-acres\",\n \"Acres (ac)\",\n ),\n id: \"acres\",\n fn: toFixedUnit(\"ac\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.area.formats.name-hectares\",\n \"Hectares (ha)\",\n ),\n id: \"hectares\",\n fn: toFixedUnit(\"ha\"),\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.name\",\n \"Computation\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-flops\",\n \"FLOP/s\",\n ),\n id: \"flops\",\n fn: SIPrefix(\"FLOPS\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-mflops\",\n \"MFLOP/s\",\n ),\n id: \"mflops\",\n fn: SIPrefix(\"FLOPS\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-gflops\",\n \"GFLOP/s\",\n ),\n id: \"gflops\",\n fn: SIPrefix(\"FLOPS\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-tflops\",\n \"TFLOP/s\",\n ),\n id: \"tflops\",\n fn: SIPrefix(\"FLOPS\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-pflops\",\n \"PFLOP/s\",\n ),\n id: \"pflops\",\n fn: SIPrefix(\"FLOPS\", 5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-eflops\",\n \"EFLOP/s\",\n ),\n id: \"eflops\",\n fn: SIPrefix(\"FLOPS\", 6),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-zflops\",\n \"ZFLOP/s\",\n ),\n id: \"zflops\",\n fn: SIPrefix(\"FLOPS\", 7),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.computation.formats.name-yflops\",\n \"YFLOP/s\",\n ),\n id: \"yflops\",\n fn: SIPrefix(\"FLOPS\", 8),\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.name\",\n \"Concentration\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-ppm\",\n \"parts-per-million (ppm)\",\n ),\n id: \"ppm\",\n fn: toFixedUnit(\"ppm\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-ppb\",\n \"parts-per-billion (ppb)\",\n ),\n id: \"conppb\",\n fn: toFixedUnit(\"ppb\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-ng-m3\",\n \"nanogram per cubic meter (ng/m³)\",\n ),\n id: \"conngm3\",\n fn: toFixedUnit(\"ng/m³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-ng-nm3\",\n \"nanogram per normal cubic meter (ng/Nm³)\",\n ),\n id: \"conngNm3\",\n fn: toFixedUnit(\"ng/Nm³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-ug-m3\",\n \"microgram per cubic meter (μg/m³)\",\n ),\n id: \"conμgm3\",\n fn: toFixedUnit(\"μg/m³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-ug-nm3\",\n \"microgram per normal cubic meter (μg/Nm³)\",\n ),\n id: \"conμgNm3\",\n fn: toFixedUnit(\"μg/Nm³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-mg-m3\",\n \"milligram per cubic meter (mg/m³)\",\n ),\n id: \"conmgm3\",\n fn: toFixedUnit(\"mg/m³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-mg-nm3\",\n \"milligram per normal cubic meter (mg/Nm³)\",\n ),\n id: \"conmgNm3\",\n fn: toFixedUnit(\"mg/Nm³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-g-m3\",\n \"gram per cubic meter (g/m³)\",\n ),\n id: \"congm3\",\n fn: toFixedUnit(\"g/m³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-g-nm3\",\n \"gram per normal cubic meter (g/Nm³)\",\n ),\n id: \"congNm3\",\n fn: toFixedUnit(\"g/Nm³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-mg-dl\",\n \"milligrams per decilitre (mg/dL)\",\n ),\n id: \"conmgdL\",\n fn: toFixedUnit(\"mg/dL\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.concentration.formats.name-mmol-l\",\n \"millimoles per litre (mmol/L)\",\n ),\n id: \"conmmolL\",\n fn: toFixedUnit(\"mmol/L\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.currency.name\", \"Currency\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-usd\",\n \"Dollars ($)\",\n ),\n id: \"currencyUSD\",\n fn: currency(\"$\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-gbp\",\n \"Pounds (£)\",\n ),\n id: \"currencyGBP\",\n fn: currency(\"£\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-eur\",\n \"Euro (€)\",\n ),\n id: \"currencyEUR\",\n fn: currency(\"€\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-jpy\",\n \"Yen (¥)\",\n ),\n id: \"currencyJPY\",\n fn: currency(\"¥\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-rub\",\n \"Rubles (₽)\",\n ),\n id: \"currencyRUB\",\n fn: currency(\"₽\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-uah\",\n \"Hryvnias (₴)\",\n ),\n id: \"currencyUAH\",\n fn: currency(\"₴\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-brl\",\n \"Real (R$)\",\n ),\n id: \"currencyBRL\",\n fn: currency(\"R$\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-dkk\",\n \"Danish Krone (kr)\",\n ),\n id: \"currencyDKK\",\n fn: currency(\"kr\", true),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-isk\",\n \"Icelandic Króna (kr)\",\n ),\n id: \"currencyISK\",\n fn: currency(\"kr\", true),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-nok\",\n \"Norwegian Krone (kr)\",\n ),\n id: \"currencyNOK\",\n fn: currency(\"kr\", true),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-sek\",\n \"Swedish Krona (kr)\",\n ),\n id: \"currencySEK\",\n fn: currency(\"kr\", true),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-czk\",\n \"Czech koruna (czk)\",\n ),\n id: \"currencyCZK\",\n fn: currency(\"czk\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-chf\",\n \"Swiss franc (CHF)\",\n ),\n id: \"currencyCHF\",\n fn: currency(\"CHF\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-pln\",\n \"Polish Złoty (PLN)\",\n ),\n id: \"currencyPLN\",\n fn: currency(\"PLN\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-btc\",\n \"Bitcoin (฿)\",\n ),\n id: \"currencyBTC\",\n fn: currency(\"฿\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-mbtc\",\n \"Milli Bitcoin (฿)\",\n ),\n id: \"currencymBTC\",\n fn: currency(\"mBTC\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-ubtc\",\n \"Micro Bitcoin (฿)\",\n ),\n id: \"currencyμBTC\",\n fn: currency(\"μBTC\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-zar\",\n \"South African Rand (R)\",\n ),\n id: \"currencyZAR\",\n fn: currency(\"R\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-inr\",\n \"Indian Rupee (₹)\",\n ),\n id: \"currencyINR\",\n fn: currency(\"₹\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-krw\",\n \"South Korean Won (₩)\",\n ),\n id: \"currencyKRW\",\n fn: currency(\"₩\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-idr\",\n \"Indonesian Rupiah (Rp)\",\n ),\n id: \"currencyIDR\",\n fn: currency(\"Rp\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-php\",\n \"Philippine Peso (PHP)\",\n ),\n id: \"currencyPHP\",\n fn: currency(\"PHP\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-vnd\",\n \"Vietnamese Dong (VND)\",\n ),\n id: \"currencyVND\",\n fn: currency(\"đ\", true),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-try\",\n \"Turkish Lira (₺)\",\n ),\n id: \"currencyTRY\",\n fn: currency(\"₺\", true),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-myr\",\n \"Malaysian Ringgit (RM)\",\n ),\n id: \"currencyMYR\",\n fn: currency(\"RM\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-xpf\",\n \"CFP franc (XPF)\",\n ),\n id: \"currencyXPF\",\n fn: currency(\"XPF\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-bgn\",\n \"Bulgarian Lev (BGN)\",\n ),\n id: \"currencyBGN\",\n fn: currency(\"BGN\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-pyg\",\n \"Guaraní (₲)\",\n ),\n id: \"currencyPYG\",\n fn: currency(\"₲\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-uyu\",\n \"Uruguay Peso (UYU)\",\n ),\n id: \"currencyUYU\",\n fn: currency(\"UYU\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.currency.formats.name-ils\",\n \"Israeli New Shekels (₪)\",\n ),\n id: \"currencyILS\",\n fn: currency(\"₪\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.data.name\", \"Data\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-bytes-iec\",\n \"bytes(IEC)\",\n ),\n id: \"bytes\",\n fn: binaryPrefix(\"B\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-bytes-si\",\n \"bytes(SI)\",\n ),\n id: \"decbytes\",\n fn: SIPrefix(\"B\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-bits-iec\",\n \"bits(IEC)\",\n ),\n id: \"bits\",\n fn: binaryPrefix(\"b\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-bits-si\",\n \"bits(SI)\",\n ),\n id: \"decbits\",\n fn: SIPrefix(\"b\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-kibibytes\",\n \"kibibytes\",\n ),\n id: \"kbytes\",\n fn: binaryPrefix(\"B\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-kilobytes\",\n \"kilobytes\",\n ),\n id: \"deckbytes\",\n fn: SIPrefix(\"B\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-mebibytes\",\n \"mebibytes\",\n ),\n id: \"mbytes\",\n fn: binaryPrefix(\"B\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-megabytes\",\n \"megabytes\",\n ),\n id: \"decmbytes\",\n fn: SIPrefix(\"B\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-gibibytes\",\n \"gibibytes\",\n ),\n id: \"gbytes\",\n fn: binaryPrefix(\"B\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-gigabytes\",\n \"gigabytes\",\n ),\n id: \"decgbytes\",\n fn: SIPrefix(\"B\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-tebibytes\",\n \"tebibytes\",\n ),\n id: \"tbytes\",\n fn: binaryPrefix(\"B\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-terabytes\",\n \"terabytes\",\n ),\n id: \"dectbytes\",\n fn: SIPrefix(\"B\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-pebibytes\",\n \"pebibytes\",\n ),\n id: \"pbytes\",\n fn: binaryPrefix(\"B\", 5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data.formats.name-petabytes\",\n \"petabytes\",\n ),\n id: \"decpbytes\",\n fn: SIPrefix(\"B\", 5),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.data-rate.name\", \"Data rate\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-packets-sec\",\n \"packets/sec\",\n ),\n id: \"pps\",\n fn: SIPrefix(\"p/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-bytes-sec-iec\",\n \"bytes/sec(IEC)\",\n ),\n id: \"binBps\",\n fn: binaryPrefix(\"B/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-bytes-sec-si\",\n \"bytes/sec(SI)\",\n ),\n id: \"Bps\",\n fn: SIPrefix(\"B/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-bits-sec-iec\",\n \"bits/sec(IEC)\",\n ),\n id: \"binbps\",\n fn: binaryPrefix(\"b/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-bits-sec-si\",\n \"bits/sec(SI)\",\n ),\n id: \"bps\",\n fn: SIPrefix(\"b/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-kibibytes-sec\",\n \"kibibytes/sec\",\n ),\n id: \"KiBs\",\n fn: binaryPrefix(\"B/s\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-kibibits-sec\",\n \"kibibits/sec\",\n ),\n id: \"Kibits\",\n fn: binaryPrefix(\"b/s\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-kilobytes-sec\",\n \"kilobytes/sec\",\n ),\n id: \"KBs\",\n fn: SIPrefix(\"B/s\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-kilobits-sec\",\n \"kilobits/sec\",\n ),\n id: \"Kbits\",\n fn: SIPrefix(\"b/s\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-mebibytes-sec\",\n \"mebibytes/sec\",\n ),\n id: \"MiBs\",\n fn: binaryPrefix(\"B/s\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-mebibits-sec\",\n \"mebibits/sec\",\n ),\n id: \"Mibits\",\n fn: binaryPrefix(\"b/s\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-megabytes-sec\",\n \"megabytes/sec\",\n ),\n id: \"MBs\",\n fn: SIPrefix(\"B/s\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-megabits-sec\",\n \"megabits/sec\",\n ),\n id: \"Mbits\",\n fn: SIPrefix(\"b/s\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-gibibytes-sec\",\n \"gibibytes/sec\",\n ),\n id: \"GiBs\",\n fn: binaryPrefix(\"B/s\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-gibibits-sec\",\n \"gibibits/sec\",\n ),\n id: \"Gibits\",\n fn: binaryPrefix(\"b/s\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-gigabytes-sec\",\n \"gigabytes/sec\",\n ),\n id: \"GBs\",\n fn: SIPrefix(\"B/s\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-gigabits-sec\",\n \"gigabits/sec\",\n ),\n id: \"Gbits\",\n fn: SIPrefix(\"b/s\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-tebibytes-sec\",\n \"tebibytes/sec\",\n ),\n id: \"TiBs\",\n fn: binaryPrefix(\"B/s\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-tebibits-sec\",\n \"tebibits/sec\",\n ),\n id: \"Tibits\",\n fn: binaryPrefix(\"b/s\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-terabytes-sec\",\n \"terabytes/sec\",\n ),\n id: \"TBs\",\n fn: SIPrefix(\"B/s\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-terabits-sec\",\n \"terabits/sec\",\n ),\n id: \"Tbits\",\n fn: SIPrefix(\"b/s\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-pebibytes-sec\",\n \"pebibytes/sec\",\n ),\n id: \"PiBs\",\n fn: binaryPrefix(\"B/s\", 5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-pebibits-sec\",\n \"pebibits/sec\",\n ),\n id: \"Pibits\",\n fn: binaryPrefix(\"b/s\", 5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-petabytes-sec\",\n \"petabytes/sec\",\n ),\n id: \"PBs\",\n fn: SIPrefix(\"B/s\", 5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.data-rate.formats.name-petabits-sec\",\n \"petabits/sec\",\n ),\n id: \"Pbits\",\n fn: SIPrefix(\"b/s\", 5),\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.name\",\n \"Date & time\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-iso\",\n \"Datetime ISO\",\n ),\n id: \"dateTimeAsIso\",\n fn: dateTimeAsIso,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-iso-no-date\",\n \"Datetime ISO (No date if today)\",\n ),\n id: \"dateTimeAsIsoNoDateIfToday\",\n fn: dateTimeAsIsoNoDateIfToday,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-us\",\n \"Datetime US\",\n ),\n id: \"dateTimeAsUS\",\n fn: dateTimeAsUS,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-us-no-date\",\n \"Datetime US (No date if today)\",\n ),\n id: \"dateTimeAsUSNoDateIfToday\",\n fn: dateTimeAsUSNoDateIfToday,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-local\",\n \"Datetime local\",\n ),\n id: \"dateTimeAsLocal\",\n fn: getDateTimeAsLocalFormat(),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-local-no-date\",\n \"Datetime local (No date if today)\",\n ),\n id: \"dateTimeAsLocalNoDateIfToday\",\n fn: getDateTimeAsLocalFormatNoDateIfToday(),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-datetime-default\",\n \"Datetime default\",\n ),\n id: \"dateTimeAsSystem\",\n fn: dateTimeSystemFormatter,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.date-time.formats.name-from-now\",\n \"From Now\",\n ),\n id: \"dateTimeFromNow\",\n fn: dateTimeFromNow,\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.energy.name\", \"Energy\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-watt\",\n \"Watt (W)\",\n ),\n id: \"watt\",\n fn: SIPrefix(\"W\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kilowatt\",\n \"Kilowatt (kW)\",\n ),\n id: \"kwatt\",\n fn: SIPrefix(\"W\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-megawatt\",\n \"Megawatt (MW)\",\n ),\n id: \"megwatt\",\n fn: SIPrefix(\"W\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-gigawatt\",\n \"Gigawatt (GW)\",\n ),\n id: \"gwatt\",\n fn: SIPrefix(\"W\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-milliwatt\",\n \"Milliwatt (mW)\",\n ),\n id: \"mwatt\",\n fn: SIPrefix(\"W\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-watt-square-meter\",\n \"Watt per square meter (W/m²)\",\n ),\n id: \"Wm2\",\n fn: SIPrefix(\"W/m²\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-volt-ampere\",\n \"Volt-Ampere (VA)\",\n ),\n id: \"voltamp\",\n fn: SIPrefix(\"VA\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kilovolt-ampere\",\n \"Kilovolt-Ampere (kVA)\",\n ),\n id: \"kvoltamp\",\n fn: SIPrefix(\"VA\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-volt-ampere-reactive\",\n \"Volt-Ampere reactive (VAr)\",\n ),\n id: \"voltampreact\",\n fn: SIPrefix(\"VAr\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kilovolt-ampere-reactive\",\n \"Kilovolt-Ampere reactive (kVAr)\",\n ),\n id: \"kvoltampreact\",\n fn: SIPrefix(\"VAr\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-watt-hour\",\n \"Watt-hour (Wh)\",\n ),\n id: \"watth\",\n fn: SIPrefix(\"Wh\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-watt-hour-per-kg\",\n \"Watt-hour per Kilogram (Wh/kg)\",\n ),\n id: \"watthperkg\",\n fn: SIPrefix(\"Wh/kg\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kilowatt-hour\",\n \"Kilowatt-hour (kWh)\",\n ),\n id: \"kwatth\",\n fn: SIPrefix(\"Wh\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kilowatt-min\",\n \"Kilowatt-min (kWm)\",\n ),\n id: \"kwattm\",\n fn: SIPrefix(\"W-Min\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-megawatt-hour\",\n \"Megawatt-hour (MWh)\",\n ),\n id: \"mwatth\",\n fn: SIPrefix(\"Wh\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-ampere-hour\",\n \"Ampere-hour (Ah)\",\n ),\n id: \"amph\",\n fn: SIPrefix(\"Ah\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kiloampere-hour\",\n \"Kiloampere-hour (kAh)\",\n ),\n id: \"kamph\",\n fn: SIPrefix(\"Ah\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-milliampere-hour\",\n \"Milliampere-hour (mAh)\",\n ),\n id: \"mamph\",\n fn: SIPrefix(\"Ah\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-joule\",\n \"Joule (J)\",\n ),\n id: \"joule\",\n fn: SIPrefix(\"J\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-electron-volt\",\n \"Electron volt (eV)\",\n ),\n id: \"ev\",\n fn: SIPrefix(\"eV\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-ampere\",\n \"Ampere (A)\",\n ),\n id: \"amp\",\n fn: SIPrefix(\"A\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kiloampere\",\n \"Kiloampere (kA)\",\n ),\n id: \"kamp\",\n fn: SIPrefix(\"A\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-milliampere\",\n \"Milliampere (mA)\",\n ),\n id: \"mamp\",\n fn: SIPrefix(\"A\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-volt\",\n \"Volt (V)\",\n ),\n id: \"volt\",\n fn: SIPrefix(\"V\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kilovolt\",\n \"Kilovolt (kV)\",\n ),\n id: \"kvolt\",\n fn: SIPrefix(\"V\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-millivolt\",\n \"Millivolt (mV)\",\n ),\n id: \"mvolt\",\n fn: SIPrefix(\"V\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-decibel-milliwatt\",\n \"Decibel-milliwatt (dBm)\",\n ),\n id: \"dBm\",\n fn: SIPrefix(\"dBm\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-milliohm\",\n \"Milliohm (mΩ)\",\n ),\n id: \"mohm\",\n fn: SIPrefix(\"Ω\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-ohm\",\n \"Ohm (Ω)\",\n ),\n id: \"ohm\",\n fn: SIPrefix(\"Ω\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-kiloohm\",\n \"Kiloohm (kΩ)\",\n ),\n id: \"kohm\",\n fn: SIPrefix(\"Ω\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-megaohm\",\n \"Megaohm (MΩ)\",\n ),\n id: \"Mohm\",\n fn: SIPrefix(\"Ω\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-farad\",\n \"Farad (F)\",\n ),\n id: \"farad\",\n fn: SIPrefix(\"F\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-microfarad\",\n \"Microfarad (µF)\",\n ),\n id: \"µfarad\",\n fn: SIPrefix(\"F\", -2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-nanofarad\",\n \"Nanofarad (nF)\",\n ),\n id: \"nfarad\",\n fn: SIPrefix(\"F\", -3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-picofarad\",\n \"Picofarad (pF)\",\n ),\n id: \"pfarad\",\n fn: SIPrefix(\"F\", -4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-femtofarad\",\n \"Femtofarad (fF)\",\n ),\n id: \"ffarad\",\n fn: SIPrefix(\"F\", -5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-henry\",\n \"Henry (H)\",\n ),\n id: \"henry\",\n fn: SIPrefix(\"H\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-millihenry\",\n \"Millihenry (mH)\",\n ),\n id: \"mhenry\",\n fn: SIPrefix(\"H\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-microhenry\",\n \"Microhenry (µH)\",\n ),\n id: \"µhenry\",\n fn: SIPrefix(\"H\", -2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.energy.formats.name-lumens\",\n \"Lumens (Lm)\",\n ),\n id: \"lumens\",\n fn: SIPrefix(\"Lm\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.flow.name\", \"Flow\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-gallons-min\",\n \"Gallons/min (gpm)\",\n ),\n id: \"flowgpm\",\n fn: toFixedUnit(\"gpm\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-cubic-meters-sec\",\n \"Cubic meters/sec (cms)\",\n ),\n id: \"flowcms\",\n fn: toFixedUnit(\"cms\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-cubic-feet-sec\",\n \"Cubic feet/sec (cfs)\",\n ),\n id: \"flowcfs\",\n fn: toFixedUnit(\"cfs\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-cubic-feet-min\",\n \"Cubic feet/min (cfm)\",\n ),\n id: \"flowcfm\",\n fn: toFixedUnit(\"cfm\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-litre-hour\",\n \"Litre/hour\",\n ),\n id: \"litreh\",\n fn: toFixedUnit(\"L/h\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-litre-min\",\n \"Litre/min (L/min)\",\n ),\n id: \"flowlpm\",\n fn: toFixedUnit(\"L/min\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-millilitre-min\",\n \"milliLitre/min (mL/min)\",\n ),\n id: \"flowmlpm\",\n fn: toFixedUnit(\"mL/min\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.flow.formats.name-lux\",\n \"Lux (lx)\",\n ),\n id: \"lux\",\n fn: toFixedUnit(\"lux\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.force.name\", \"Force\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.force.formats.name-newton-meters\",\n \"Newton-meters (Nm)\",\n ),\n id: \"forceNm\",\n fn: SIPrefix(\"Nm\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.force.formats.name-kilonewton-meters\",\n \"Kilonewton-meters (kNm)\",\n ),\n id: \"forcekNm\",\n fn: SIPrefix(\"Nm\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.force.formats.name-newtons\",\n \"Newtons (N)\",\n ),\n id: \"forceN\",\n fn: SIPrefix(\"N\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.force.formats.name-kilonewtons\",\n \"Kilonewtons (kN)\",\n ),\n id: \"forcekN\",\n fn: SIPrefix(\"N\", 1),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.hash-rate.name\", \"Hash rate\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-hashes-sec\",\n \"hashes/sec\",\n ),\n id: \"Hs\",\n fn: SIPrefix(\"H/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-kilohashes-sec\",\n \"kilohashes/sec\",\n ),\n id: \"KHs\",\n fn: SIPrefix(\"H/s\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-megahashes-sec\",\n \"megahashes/sec\",\n ),\n id: \"MHs\",\n fn: SIPrefix(\"H/s\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-gigahashes-sec\",\n \"gigahashes/sec\",\n ),\n id: \"GHs\",\n fn: SIPrefix(\"H/s\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-terahashes-sec\",\n \"terahashes/sec\",\n ),\n id: \"THs\",\n fn: SIPrefix(\"H/s\", 4),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-petahashes-sec\",\n \"petahashes/sec\",\n ),\n id: \"PHs\",\n fn: SIPrefix(\"H/s\", 5),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.hash-rate.formats.name-exahashes-sec\",\n \"exahashes/sec\",\n ),\n id: \"EHs\",\n fn: SIPrefix(\"H/s\", 6),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.mass.name\", \"Mass\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.mass.formats.name-milligram\",\n \"milligram (mg)\",\n ),\n id: \"massmg\",\n fn: SIPrefix(\"g\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.mass.formats.name-gram\",\n \"gram (g)\",\n ),\n id: \"massg\",\n fn: SIPrefix(\"g\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.mass.formats.name-pound\",\n \"pound (lb)\",\n ),\n id: \"masslb\",\n fn: toFixedUnit(\"lb\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.mass.formats.name-kilogram\",\n \"kilogram (kg)\",\n ),\n id: \"masskg\",\n fn: SIPrefix(\"g\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.mass.formats.name-metric-ton\",\n \"metric ton (t)\",\n ),\n id: \"masst\",\n fn: toFixedUnit(\"t\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.length.name\", \"Length\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.length.formats.name-millimeter\",\n \"millimeter (mm)\",\n ),\n id: \"lengthmm\",\n fn: SIPrefix(\"m\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.length.formats.name-inch\",\n \"inch (in)\",\n ),\n id: \"lengthin\",\n fn: toFixedUnit(\"in\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.length.formats.name-feet\",\n \"feet (ft)\",\n ),\n id: \"lengthft\",\n fn: toFixedUnit(\"ft\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.length.formats.name-meter\",\n \"meter (m)\",\n ),\n id: \"lengthm\",\n fn: SIPrefix(\"m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.length.formats.name-kilometer\",\n \"kilometer (km)\",\n ),\n id: \"lengthkm\",\n fn: SIPrefix(\"m\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.length.formats.name-mile\",\n \"mile (mi)\",\n ),\n id: \"lengthmi\",\n fn: toFixedUnit(\"mi\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.pressure.name\", \"Pressure\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-millibars\",\n \"Millibars\",\n ),\n id: \"pressurembar\",\n fn: SIPrefix(\"bar\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-bars\",\n \"Bars\",\n ),\n id: \"pressurebar\",\n fn: SIPrefix(\"bar\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-kilobars\",\n \"Kilobars\",\n ),\n id: \"pressurekbar\",\n fn: SIPrefix(\"bar\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-pascals\",\n \"Pascals\",\n ),\n id: \"pressurepa\",\n fn: SIPrefix(\"Pa\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-hectopascals\",\n \"Hectopascals\",\n ),\n id: \"pressurehpa\",\n fn: toFixedUnit(\"hPa\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-kilopascals\",\n \"Kilopascals\",\n ),\n id: \"pressurekpa\",\n fn: toFixedUnit(\"kPa\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-inches-mercury\",\n \"Inches of mercury\",\n ),\n id: \"pressurehg\",\n fn: toFixedUnit('\"Hg'),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.pressure.formats.name-psi\",\n \"PSI\",\n ),\n id: \"pressurepsi\",\n fn: scaledUnits(1000, [\"psi\", \"ksi\", \"Mpsi\"]),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.radiation.name\", \"Radiation\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-becquerel\",\n \"Becquerel (Bq)\",\n ),\n id: \"radbq\",\n fn: SIPrefix(\"Bq\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-curie\",\n \"curie (Ci)\",\n ),\n id: \"radci\",\n fn: SIPrefix(\"Ci\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-gray\",\n \"Gray (Gy)\",\n ),\n id: \"radgy\",\n fn: SIPrefix(\"Gy\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-rad\",\n \"rad\",\n ),\n id: \"radrad\",\n fn: SIPrefix(\"rad\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-sievert\",\n \"Sievert (Sv)\",\n ),\n id: \"radsv\",\n fn: SIPrefix(\"Sv\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-millisievert\",\n \"milliSievert (mSv)\",\n ),\n id: \"radmsv\",\n fn: SIPrefix(\"Sv\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-microsievert\",\n \"microSievert (µSv)\",\n ),\n id: \"radusv\",\n fn: SIPrefix(\"Sv\", -2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-rem\",\n \"rem\",\n ),\n id: \"radrem\",\n fn: SIPrefix(\"rem\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-exposure\",\n \"Exposure (C/kg)\",\n ),\n id: \"radexpckg\",\n fn: SIPrefix(\"C/kg\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-roentgen\",\n \"roentgen (R)\",\n ),\n id: \"radr\",\n fn: SIPrefix(\"R\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-sievert-hour\",\n \"Sievert/hour (Sv/h)\",\n ),\n id: \"radsvh\",\n fn: SIPrefix(\"Sv/h\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-millisievert-hour\",\n \"milliSievert/hour (mSv/h)\",\n ),\n id: \"radmsvh\",\n fn: SIPrefix(\"Sv/h\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.radiation.formats.name-microsievert-hour\",\n \"microSievert/hour (µSv/h)\",\n ),\n id: \"radusvh\",\n fn: SIPrefix(\"Sv/h\", -2),\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.name\",\n \"Rotational Speed\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-rpm\",\n \"Revolutions per minute (rpm)\",\n ),\n id: \"rotrpm\",\n fn: toFixedUnit(\"rpm\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-hertz\",\n \"Hertz (Hz)\",\n ),\n id: \"rothz\",\n fn: SIPrefix(\"Hz\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-kilohertz\",\n \"Kilohertz (kHz)\",\n ),\n id: \"rotkhz\",\n fn: SIPrefix(\"Hz\", 1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-megahertz\",\n \"Megahertz (MHz)\",\n ),\n id: \"rotmhz\",\n fn: SIPrefix(\"Hz\", 2),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-gigahertz\",\n \"Gigahertz (GHz)\",\n ),\n id: \"rotghz\",\n fn: SIPrefix(\"Hz\", 3),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-radians-sec\",\n \"Radians per second (rad/s)\",\n ),\n id: \"rotrads\",\n fn: toFixedUnit(\"rad/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.rotational-speed.formats.name-degrees-sec\",\n \"Degrees per second (°/s)\",\n ),\n id: \"rotdegs\",\n fn: toFixedUnit(\"°/s\"),\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.temperature.name\",\n \"Temperature\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.temperature.formats.name-celsius\",\n \"Celsius (°C)\",\n ),\n id: \"celsius\",\n fn: toFixedUnit(\"°C\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.temperature.formats.name-fahrenheit\",\n \"Fahrenheit (°F)\",\n ),\n id: \"fahrenheit\",\n fn: toFixedUnit(\"°F\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.temperature.formats.name-kelvin\",\n \"Kelvin (K)\",\n ),\n id: \"kelvin\",\n fn: toFixedUnit(\"K\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.time.name\", \"Time\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-hertz\",\n \"Hertz (1/s)\",\n ),\n id: \"hertz\",\n fn: SIPrefix(\"Hz\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-nanoseconds\",\n \"nanoseconds (ns)\",\n ),\n id: \"ns\",\n fn: toNanoSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-microseconds\",\n \"microseconds (µs)\",\n ),\n id: \"µs\",\n fn: toMicroSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-milliseconds\",\n \"milliseconds (ms)\",\n ),\n id: \"ms\",\n fn: toMilliSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-seconds\",\n \"seconds (s)\",\n ),\n id: \"s\",\n fn: toSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-minutes\",\n \"minutes (m)\",\n ),\n id: \"m\",\n fn: toMinutes,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-hours\",\n \"hours (h)\",\n ),\n id: \"h\",\n fn: toHours,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-days\",\n \"days (d)\",\n ),\n id: \"d\",\n fn: toDays,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-duration-ms\",\n \"duration (ms)\",\n ),\n id: \"dtdurationms\",\n fn: toDurationInMilliseconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-duration-s\",\n \"duration (s)\",\n ),\n id: \"dtdurations\",\n fn: toDurationInSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-duration-hms\",\n \"duration (hh:mm:ss)\",\n ),\n id: \"dthms\",\n fn: toDurationInHoursMinutesSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-duration-dhms\",\n \"duration (d hh:mm:ss)\",\n ),\n id: \"dtdhms\",\n fn: toDurationInDaysHoursMinutesSeconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-timeticks\",\n \"Timeticks (s/100)\",\n ),\n id: \"timeticks\",\n fn: toTimeTicks,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-clock-ms\",\n \"clock (ms)\",\n ),\n id: \"clockms\",\n fn: toClockMilliseconds,\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.time.formats.name-clock-s\",\n \"clock (s)\",\n ),\n id: \"clocks\",\n fn: toClockSeconds,\n },\n ],\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.name\",\n \"Throughput\",\n ),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-counts-sec\",\n \"counts/sec (cps)\",\n ),\n id: \"cps\",\n fn: simpleCountUnit(\"c/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-ops-sec\",\n \"ops/sec (ops)\",\n ),\n id: \"ops\",\n fn: simpleCountUnit(\"ops/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-requests-sec\",\n \"requests/sec (rps)\",\n ),\n id: \"reqps\",\n fn: simpleCountUnit(\"req/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-reads-sec\",\n \"reads/sec (rps)\",\n ),\n id: \"rps\",\n fn: simpleCountUnit(\"rd/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-writes-sec\",\n \"writes/sec (wps)\",\n ),\n id: \"wps\",\n fn: simpleCountUnit(\"wr/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-io-ops-sec\",\n \"I/O ops/sec (iops)\",\n ),\n id: \"iops\",\n fn: simpleCountUnit(\"io/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-events-sec\",\n \"events/sec (eps)\",\n ),\n id: \"eps\",\n fn: simpleCountUnit(\"evt/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-messages-sec\",\n \"messages/sec (mps)\",\n ),\n id: \"mps\",\n fn: simpleCountUnit(\"msg/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-records-sec\",\n \"records/sec (rps)\",\n ),\n id: \"recps\",\n fn: simpleCountUnit(\"rec/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-rows-sec\",\n \"rows/sec (rps)\",\n ),\n id: \"rowsps\",\n fn: simpleCountUnit(\"rows/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-counts-min\",\n \"counts/min (cpm)\",\n ),\n id: \"cpm\",\n fn: simpleCountUnit(\"c/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-ops-min\",\n \"ops/min (opm)\",\n ),\n id: \"opm\",\n fn: simpleCountUnit(\"ops/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-requests-min\",\n \"requests/min (rpm)\",\n ),\n id: \"reqpm\",\n fn: simpleCountUnit(\"req/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-reads-min\",\n \"reads/min (rpm)\",\n ),\n id: \"rpm\",\n fn: simpleCountUnit(\"rd/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-writes-min\",\n \"writes/min (wpm)\",\n ),\n id: \"wpm\",\n fn: simpleCountUnit(\"wr/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-events-min\",\n \"events/min (epm)\",\n ),\n id: \"epm\",\n fn: simpleCountUnit(\"evts/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-messages-min\",\n \"messages/min (mpm)\",\n ),\n id: \"mpm\",\n fn: simpleCountUnit(\"msgs/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-records-min\",\n \"records/min (rpm)\",\n ),\n id: \"recpm\",\n fn: simpleCountUnit(\"rec/m\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.throughput.formats.name-rows-min\",\n \"rows/min (rpm)\",\n ),\n id: \"rowspm\",\n fn: simpleCountUnit(\"rows/m\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.velocity.name\", \"Velocity\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.velocity.formats.name-meters-second\",\n \"meters/second (m/s)\",\n ),\n id: \"velocityms\",\n fn: toFixedUnit(\"m/s\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.velocity.formats.name-kilometers-hour\",\n \"kilometers/hour (km/h)\",\n ),\n id: \"velocitykmh\",\n fn: toFixedUnit(\"km/h\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.velocity.formats.name-miles-hour\",\n \"miles/hour (mph)\",\n ),\n id: \"velocitymph\",\n fn: toFixedUnit(\"mph\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.velocity.formats.name-knot\",\n \"knot (kn)\",\n ),\n id: \"velocityknot\",\n fn: toFixedUnit(\"kn\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.volume.name\", \"Volume\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.volume.formats.name-millilitre\",\n \"millilitre (mL)\",\n ),\n id: \"mlitre\",\n fn: SIPrefix(\"L\", -1),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.volume.formats.name-litre\",\n \"litre (L)\",\n ),\n id: \"litre\",\n fn: SIPrefix(\"L\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.volume.formats.name-cubic-meter\",\n \"cubic meter\",\n ),\n id: \"m3\",\n fn: toFixedUnit(\"m³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.volume.formats.name-normal-cubic-meter\",\n \"Normal cubic meter\",\n ),\n id: \"Nm3\",\n fn: toFixedUnit(\"Nm³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.volume.formats.name-cubic-decimeter\",\n \"cubic decimeter\",\n ),\n id: \"dm3\",\n fn: toFixedUnit(\"dm³\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.volume.formats.name-gallons\",\n \"gallons\",\n ),\n id: \"gallons\",\n fn: toFixedUnit(\"gal\"),\n },\n ],\n },\n {\n name: t(\"grafana-data.valueFormats.categories.boolean.name\", \"Boolean\"),\n formats: [\n {\n name: t(\n \"grafana-data.valueFormats.categories.boolean.formats.name-true-false\",\n \"True / False\",\n ),\n id: \"bool\",\n fn: booleanValueFormatter(\"True\", \"False\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.boolean.formats.name-yes-no\",\n \"Yes / No\",\n ),\n id: \"bool_yes_no\",\n fn: booleanValueFormatter(\"Yes\", \"No\"),\n },\n {\n name: t(\n \"grafana-data.valueFormats.categories.boolean.formats.name-on-off\",\n \"On / Off\",\n ),\n id: \"bool_on_off\",\n fn: booleanValueFormatter(\"On\", \"Off\"),\n },\n ],\n },\n];\n"],"mappings":"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F,EACA,GAAI,SACJ,GAAIE,EACN,EACA,CACE,KAAMF,EACJ,+DACA,OACF,EACA,GAAI,QACJ,GAAIG,EAAY,IAAM,CACpB,GACA,KACA,OACA,OACA,OACA,SACA,SACA,QACA,OACF,CAAC,CACH,EACA,CACE,KAAMH,EACJ,kEACA,UACF,EACA,GAAI,UACJ,GAAII,EAAS,EAAE,CACjB,EACA,CACE,KAAMJ,EACJ,qEACA,iBACF,EACA,GAAI,UACJ,GAAIK,EACN,EACA,CACE,KAAML,EACJ,mEACA,mBACF,EACA,GAAI,cACJ,GAAIM,EACN,EACA,CACE,KAAMN,EACJ,kEACA,eACF,EACA,GAAI,WACJ,GAAIC,EAAY,IAAI,CACtB,EACA,CACE,KAAMD,EACJ,iEACA,SACF,EACA,GAAI,KACJ,GAAIC,EAAY,IAAI,CACtB,EACA,CACE,KAAMD,EACJ,iEACA,cACF,EACA,GAAI,UACJ,GAAII,EAAS,IAAI,CACnB,EACA,CACE,KAAMJ,EACJ,wEACA,kBACF,EACA,GAAI,QACJ,GAAIO,EACN,EACA,CACE,KAAMP,EACJ,qEACA,aACF,EACA,GAAI,MACJ,GAAIQ,CACN,EACA,CACE,KAAMR,EACJ,oEACA,qBACF,EACA,GAAI,MACJ,GAAIS,EACN,EACA,CACE,KAAMT,EACJ,gEACA,eACF,EACA,GAAI,SACJ,GAAIU,EACN,EACA,CACE,KAAMV,EACJ,gEACA,QACF,EACA,GAAI,QACJ,GAAIC,EAAY,IAAI,CACtB,CACF,CACF,EACA,CACE,KAAMD,EACJ,yDACA,cACF,EACA,QAAS,CACP,CACE,KAAMA,EACJ,4EACA,gBACF,EACA,GAAI,SACJ,GAAIC,EAAY,WAAQ,CAC1B,EACA,CACE,KAAMD,EACJ,0EACA,cACF,EACA,GAAI,SACJ,GAAIC,EAAY,WAAQ,CAC1B,EACA,CACE,KAAMD,EACJ,wEACA,QACF,EACA,GAAI,OACJ,GAAIC,EAAY,GAAG,CACrB,CACF,CACF,EACA,CACE,KAAMD,EAAE,kDAAmD,OAAO,EAClE,QAAS,CACP,CACE,KAAMA,EACJ,kEACA,gBACF,EACA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CACtB,EACA,CACE,KAAMD,EACJ,2EACA,oBACF,EACA,GAAI,aACJ,GAAIC,EAAY,OAAI,CACtB,EACA,CACE,KAAMD,EACJ,uEACA,YACF,EACA,GAAI,SACJ,GAAIC,EAAY,GAAG,CACrB,CACF,CACF,EACA,CACE,KAAMD,EAAE,iDAAkD,MAAM,EAChE,QAAS,CACP,CACE,KAAMA,EACJ,+DACA,aACF,EACA,GAAI,QACJ,GAAII,EAAS,IAAI,CACnB,EACA,CACE,KAAMJ,EACJ,qEACA,kBACF,EACA,GAAI,KACJ,GAAIqB,EACN,EACA,CACE,KAAMrB,EACJ,sEACA,sBACF,EACA,GAAI,QACJ,GAAIsB,EACN,EACA,CACE,KAAMtB,EACJ,sEACA,mBACF,EACA,GAAI,KACJ,GAAIuB,EACN,EACA,CACE,KAAMvB,EACJ,iEACA,aACF,EACA,GAAI,IACJ,GAAIwB,CACN,EACA,CACE,KAAMxB,EACJ,iEACA,aACF,EACA,GAAI,IACJ,GAAIyB,EACN,EACA,CACE,KAAMzB,EACJ,+DACA,WACF,EACA,GAAI,IACJ,GAAI0B,EACN,EACA,CACE,KAAM1B,EACJ,8DACA,UACF,EACA,GAAI,IACJ,GAAI2B,EACN,EACA,CACE,KAAM3B,EACJ,qEACA,eACF,EACA,GAAI,eACJ,GAAI4B,EACN,EACA,CACE,KAAM5B,EACJ,oEACA,cACF,EACA,GAAI,cACJ,GAAI6B,EACN,EACA,CACE,KAAM7B,EACJ,sEACA,qBACF,EACA,GAAI,QACJ,GAAI8B,CACN,EACA,CACE,KAAM9B,EACJ,uEACA,uBACF,EACA,GAAI,SACJ,GAAI+B,CACN,EACA,CACE,KAAM/B,EACJ,mEACA,mBACF,EACA,GAAI,YACJ,GAAIgC,EACN,EACA,CACE,KAAMhC,EACJ,kEACA,YACF,EACA,GAAI,UACJ,GAAIiC,EACN,EACA,CACE,KAAMjC,EACJ,iEACA,WACF,EACA,GAAI,SACJ,GAAIkC,EACN,CACF,CACF,EACA,CACE,KAAMlC,EACJ,uDACA,YACF,EACA,QAAS,CACP,CACE,KAAMA,EACJ,0EACA,kBACF,E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","names":["index_exports","__export","dateTimeFormat","dateTimeFormatTimeAgo","getValueFormat","systemDateFormats","__toCommonJS","DEFAULT_SYSTEM_DATE_FORMAT","DEFAULT_SYSTEM_DATE_MS_FORMAT","SystemDateFormatsState","settings","localTimeFormat","useMsResolution","options","locale","fallback","missingIntlDateTimeFormatSupport","dateTimeFormat","parts","mapping","part","systemDateFormats","import_moment_timezone","getFeatureToggle","featureName","def","import_lodash","import_moment","import_moment_timezone","ISO_8601","moment","toUtc","input","formatInput","moment","toDuration","unit","dateTime","dateTimeAsMoment","defaultTimeZone","DefaultTimeZone","defaultTimeZoneResolver","DefaultTimeZone","getTimeZone","options","defaultTimeZoneResolver","DefaultTimeZone","import_fast_deep_equal","import_micro_memoize","deepMemoize","fn","memoize","deepEqual","regionalFormat","createDateTimeFormatter","deepMemoize","locale","options","createDurationFormatter","formatDate","_value","format","value","formatDuration","duration","toDate","dateInUtc","dateTimeAsMoment","toIANATimezone","grafanaTimezone","moment","getIntlOptions","date","options","timeZone","getTimeZone","intlOptions","dateTimeFormat","getFeatureToggle","toTz","getFormat","dateAsDate","formatDate","dateTimeFormatTimeAgo","dateInUtc","options","toTz","getTimeZone","getFormat","options","systemDateFormats","toTz","dateInUtc","timeZone","date","zone","moment","dateTimeAsMoment","toUtc","import_lodash","import_i18next","initialized","initI18nOnce","i18n","t","key","defaultMessage","values","toPercent","size","decimals","toFixed","toPercentUnit","toHex0x","value","asHex","toHex","sci","UNITS","INTERVALS_IN_SECONDS","toNanoSeconds","size","decimals","toFixed","toFixedScaled","toMicroSeconds","toMilliSeconds","scaledDecimals","toSeconds","toMinutes","toHours","toDays","toDuration","timeScale","v","strings","decrementDecimals","decimalsCount","i","interval","value","floor","unit","toClock","toUtc","format","hours","toDurationInMilliseconds","toDurationInSeconds","toDurationInHoursMinutesSeconds","numHours","numMinutes","numSeconds","toDurationInDaysHoursMinutesSeconds","dayString","numDays","hmsString","toTimeTicks","toClockMilliseconds","toClockSeconds","toDateTimeValueFormatter","pattern","todayPattern","timeZone","dateTime","dateTimeFormat","dateTimeAsIso","dateTimeAsIsoNoDateIfToday","dateTimeAsUS","dateTimeAsUSNoDateIfToday","getDateTimeAsLocalFormat","localTimeFormat","getDateTimeAsLocalFormatNoDateIfToday","dateTimeSystemFormatter","showMs","systemDateFormats","dateTimeFromNow","dateTimeFormatTimeAgo","currency","symbol","asSuffix","scaler","scaledUnits","value","decimals","scaledDecimals","isNegative","scaled","fullCurrency","locale","defaultFormatter","formattersCache","numericValue","text","formatter","SI_PREFIXES","SI_BASE_INDEX","getOffsetFromSIPrefix","c","charIndex","prefix","BIN_PREFIXES","binaryPrefix","unit","offset","units","p","SIPrefix","getCategories","t","toFixedUnit","stringFormater","scaledUnits","SIPrefix","toPercent","toPercentUnit","toHex0x","toHex","sci","locale","currency","binaryPrefix","dateTimeAsIso","dateTimeAsIsoNoDateIfToday","dateTimeAsUS","dateTimeAsUSNoDateIfToday","getDateTimeAsLocalFormat","getDateTimeAsLocalFormatNoDateIfToday","dateTimeSystemFormatter","dateTimeFromNow","toNanoSeconds","toMicroSeconds","toMilliSeconds","toSeconds","toMinutes","toHours","toDays","toDurationInMilliseconds","toDurationInSeconds","toDurationInHoursMinutesSeconds","toDurationInDaysHoursMinutesSeconds","toTimeTicks","toClockMilliseconds","toClockSeconds","simpleCountUnit","booleanValueFormatter","categories","index","hasBuiltIndex","toFixed","value","decimals","getDecimalsForValue","factor","formatted","decimalPos","precision","absValue","dec","magn","toFixedScaled","ext","appendPluralIf","condition","toFixedUnit","unit","asPrefix","size","text","booleanValueFormatter","t","f","value","logb","b","x","scaledUnits","factor","extArray","offset","size","decimals","siIndex","suffix","toFixed","locale","simpleCountUnit","symbol","scaler","scaledDecimals","v","stringFormater","buildFormats","categories","getCategories","cat","format","index","alias","hasBuiltIndex","getValueFormat","id","toFixedUnit","fmt","idx","key","sub","toDateTimeValueFormatter","getOffsetFromSIPrefix","unit","SIPrefix","keySplit","asSuffix","fullCurrency","currency"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var W="YYYY-MM-DD HH:mm:ss",Ca="YYYY-MM-DD HH:mm:ss.SSS",H=class{fullDate=W;fullDateMS=Ca;interval={millisecond:"HH:mm:ss.SSS",second:"HH:mm:ss",minute:"HH:mm",hour:"MM/DD HH:mm",day:"MM/DD",month:"YYYY-MM",year:"YYYY"};update(t){this.fullDate=t.fullDate,this.interval=t.interval,t.useBrowserLocale&&this.useBrowserLocale()}useBrowserLocale(){this.fullDate=h({year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),this.fullDateMS=this.fullDate.replace("ss","ss.SSS"),this.interval.millisecond=h({hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1},null,this.interval.second).replace("ss","ss.SSS"),this.interval.second=h({hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1},null,this.interval.second),this.interval.minute=h({hour:"2-digit",minute:"2-digit",hour12:!1},null,this.interval.minute),this.interval.hour=h({month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1},null,this.interval.hour),this.interval.day=h({month:"2-digit",day:"2-digit",hour12:!1},null,this.interval.day),this.interval.month=h({year:"numeric",month:"2-digit",hour12:!1},null,this.interval.month)}getTimeFieldUnit(t){return`time:${t?this.fullDateMS:this.fullDate}`}};function h(e,t,n){if(Ha())return n??W;!t&&navigator&&(t=[...navigator.languages]);let o;try{o=new Intl.DateTimeFormat(t||void 0,e)}catch{o=new Intl.DateTimeFormat("en-US",e)}let s=o.formatToParts(new Date),f={year:"YYYY",month:"MM",day:"DD",hour:o.resolvedOptions().hour12?"hh":"HH",minute:"mm",second:"ss",weekday:"ddd",era:"N",dayPeriod:"A",timeZoneName:"Z"};return s.map(F=>f[F.type]||F.value).join("")}var D=new H,Ha=()=>!("DateTimeFormat"in Intl)||!("formatToParts"in Intl.DateTimeFormat.prototype);import q from"moment-timezone";function U(e,t=!1){return window.grafanaBootData?.settings.featureToggles[e]??t}import{isEmpty as Ba}from"lodash";import I from"moment";import{tz as oe}from"moment-timezone";var me=I.ISO_8601;var v=(e,t)=>I.utc(e,t),E=(e,t)=>I.duration(e,t),k=(e,t)=>I(e,t),M=e=>k(e);var Aa="browser",A=Aa;var Oa=()=>A;var w=e=>e?.timeZone&&!Ba(e.timeZone)?e.timeZone:Oa()??A;import La from"fast-deep-equal";import Pa from"micro-memoize";var N=e=>Pa(e,{isEqual:La});var K,Ya=N((e,t)=>{try{return new Intl.DateTimeFormat(e,t)}catch{return new Intl.DateTimeFormat("en-US",t)}}),Ra=N((e,t)=>new Intl.DurationFormat(e,t)),G=N((e,t={})=>{let n=typeof e=="string"?new Date(e):e;return Ya(K,t).format(n)}),be=N((e,t={})=>Ra(K,t).format(e));function Za(e){return e instanceof Date?e:typeof e=="string"||typeof e=="number"?new Date(e):M(e).toDate()}function Wa(e){if(!(e==="browser"||!q.tz.zone(e)))return e}function Ua(e,t){let n=w(t),o={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",timeZone:Wa(n)};return e.getSeconds()!==0&&(o.second="numeric"),t?.defaultWithMS&&(o.second="numeric",o.fractionalSecondDigits=3),o}var S=(e,t)=>{if(!U("localeFormatPreference")||t?.format)return _(e,w(t)).format(Ea(t));let n=Za(e),o=Ua(n,t);return G(n,o)};var B=(e,t)=>_(e,w(t)).fromNow();var Ea=e=>e?.defaultWithMS?e?.format??D.fullDateMS:e?.format??D.fullDate,_=(e,t)=>{let n=e,o=q.tz.zone(t);return o&&o.name?M(v(n)).tz(o.name):t==="utc"?M(v(n)):M(v(n)).local()};import{clamp as ka}from"lodash";import j from"i18next";var $=!1;function Ka(){$||(j.init({lng:"en",fallbackLng:"en",resources:{},returnEmptyString:!1,returnNull:!1,interpolation:{escapeValue:!1}}),$=!0)}var a=(e,t,n)=>(Ka(),j.t(e,t,n));function X(e,t){return e===null?{text:""}:{text:p(e,t),suffix:"%"}}function J(e,t){return e===null?{text:""}:{text:p(100*e,t),suffix:"%"}}function Q(e,t){if(e==null)return{text:""};let n=O(e,t);return n.text.substring(0,1)==="-"?n.text="-0x"+n.text.substring(1):n.text="0x"+n.text,n}function O(e,t){return e==null?{text:""}:{text:parseFloat(p(e,t)).toString(16).toUpperCase()}}function z(e,t){return e==null?{text:""}:{text:e.toExponential(t??void 0)}}var L=["year","month","week","day","hour","minute","second","millisecond"],aa={year:31536e3,month:2592e3,week:604800,day:86400,hour:3600,minute:60,second:1,millisecond:.001};function ea(e,t){return e===null?{text:""}:Math.abs(e)<1e3?{text:p(e,t),suffix:" ns"}:Math.abs(e)<1e6?c(e/1e3,t," \xB5s"):Math.abs(e)<1e9?c(e/1e6,t," ms"):Math.abs(e)<6e10?c(e/1e9,t," s"):Math.abs(e)<36e11?c(e/6e10,t," min"):Math.abs(e)<864e11?c(e/36e11,t," hour"):c(e/864e11,t," day")}function ta(e,t){return e===null?{text:""}:Math.abs(e)<1e3?{text:p(e,t),suffix:" \xB5s"}:Math.abs(e)<1e6?c(e/1e3,t," ms"):c(e/1e6,t," s")}function ra(e,t,n){return e===null?{text:""}:Math.abs(e)<1e3?{text:p(e,t),suffix:" ms"}:Math.abs(e)<6e4?c(e/1e3,t," s"):Math.abs(e)<36e5?c(e/6e4,t," min"):Math.abs(e)<864e5?c(e/36e5,t," hour"):Math.abs(e)<31536e6?c(e/864e5,t," day"):c(e/31536e6,t," year")}function P(e,t){return e===null?{text:""}:e===0?{text:"0",suffix:" s"}:Math.abs(e)<1e-6?c(e*1e9,t," ns"):Math.abs(e)<.001?c(e*1e6,t," \xB5s"):Math.abs(e)<1?c(e*1e3,t," ms"):Math.abs(e)<60?{text:p(e,t),suffix:" s"}:Math.abs(e)<3600?c(e/60,t," min"):Math.abs(e)<86400?c(e/3600,t," hour"):Math.abs(e)<604800?c(e/86400,t," day"):Math.abs(e)<31536e3?c(e/604800,t," week"):c(e/31556900,t," year")}function na(e,t){return e===null?{text:""}:Math.abs(e)<60?{text:p(e,t),suffix:" min"}:Math.abs(e)<1440?c(e/60,t," hour"):Math.abs(e)<10080?c(e/1440,t," day"):Math.abs(e)<604800?c(e/10080,t," week"):c(e/525948,t," year")}function oa(e,t){return e===null?{text:""}:Math.abs(e)<24?{text:p(e,t),suffix:" hour"}:Math.abs(e)<168?c(e/24,t," day"):Math.abs(e)<8760?c(e/168,t," week"):c(e/8760,t," year")}function ma(e,t){return e===null?{text:""}:Math.abs(e)<7?c(e,t," day"):Math.abs(e)<365?c(e/7,t," week"):c(e/365,t," year")}function Y(e,t,n){if(e===null)return{text:""};if(e===0)return{text:"0",suffix:" "+n+"s"};if(e<0){let f=Y(-e,t,n);return f.suffix||(f.suffix=""),f.suffix+=" ago",f}e*=aa[n]*1e3;let o=[],s=!1,i=0;t!=null&&(i=t);for(let f=0;f<L.length&&i>=0;f++){let F=aa[L[f]]*1e3,g=e/F;if(g>=1||s){s=!0;let x=Math.floor(g),Va=L[f]+(x!==1?"s":"");o.push(x+" "+Va),e=e%F,i--}}return{text:o.join(", ")}}function sa(e,t){if(e===null)return{text:""};if(e<1e3)return{text:v(e).format("SSS\\m\\s")};if(e<6e4){let i="ss\\s:SSS\\m\\s";return t===0&&(i="ss\\s"),{text:v(e).format(i)}}if(e<36e5){let i="mm\\m:ss\\s:SSS\\m\\s";return t===0?i="mm\\m":t===1&&(i="mm\\m:ss\\s"),{text:v(e).format(i)}}let n="mm\\m:ss\\s:SSS\\m\\s",o=`${Math.floor(E(e,"milliseconds").asHours())}h`;return t===0?n="":t===1?n="mm\\m":t===2&&(n="mm\\m:ss\\s"),{text:n?`${o}:${v(e).format(n)}`:o}}function ia(e,t){return Y(e,t,"millisecond")}function fa(e,t){return Y(e,t,"second")}function V(e){if(e<0){let i=V(-e);return i.suffix||(i.suffix=""),i.suffix+=" ago",i}let t=[],n=Math.floor(e/3600),o=Math.floor(e%3600/60),s=Math.floor(e%3600%60);return n>9?t.push(""+n):t.push("0"+n),o>9?t.push(""+o):t.push("0"+o),s>9?t.push(""+s):t.push("0"+s),{text:t.join(":")}}function R(e){if(e<0){let s=R(-e);return s.suffix||(s.suffix=""),s.suffix+=" ago",s}let t="",n=Math.floor(e/(24*3600));n>0&&(t=n+" d ");let o=V(e-n*24*3600);return{text:t+o.text}}function ua(e,t){return P(e/100,t)}function ca(e,t){return sa(e,t)}function la(e,t){return sa(e*1e3,t)}function b(e,t){return(n,o,s,i)=>t&&k().isSame(n,"day")?{text:S(n,{format:t,timeZone:i})}:{text:S(n,{format:e,timeZone:i})}}var da=b("YYYY-MM-DD HH:mm:ss"),ga=b("YYYY-MM-DD HH:mm:ss","HH:mm:ss"),pa=b("MM/DD/YYYY h:mm:ss a"),Fa=b("MM/DD/YYYY h:mm:ss a","h:mm:ss a");function ha(){return b(h({year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}))}function va(){return b(h({year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),h({hour:"2-digit",minute:"2-digit",second:"2-digit"}))}function ba(e,t,n,o,s){return{text:S(e,{format:s?D.fullDateMS:D.fullDate,timeZone:o})}}function ya(e,t,n,o){return{text:B(e,{timeZone:o})}}function u(e,t){let o=y(1e3,["","K","M","B","T"]);return(s,i,f)=>{if(s==null)return{text:""};let F=s<0;F&&(s=Math.abs(s));let g=o(s,i,f);return t?g.suffix=g.suffix!==void 0?`${g.suffix}${e}`:void 0:g.prefix=e,F&&(g.prefix=`-${g.prefix?.length?g.prefix:""}`),g}}function xa(e,t){let n=Intl.NumberFormat().resolvedOptions().locale,o=new Intl.NumberFormat(n,{minimumFractionDigits:0,maximumFractionDigits:1}),s=new Map;return(i,f)=>{if(i===null)return{text:""};let F=i,g;if(f!=null){let x=s.get(f);x||(x=new Intl.NumberFormat(n,{minimumFractionDigits:f,maximumFractionDigits:f}),s.set(f,x)),g=x.format(F)}else g=o.format(F);return{prefix:t?"":e,suffix:t?e:"",text:g}}}var Z=["f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"],Da=Z.indexOf("");function Ta(e){let t=Z.findIndex(n=>n.normalize("NFKD")===e.normalize("NFKD"));return t<0?0:t-Da}var Ga=["","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi"];function d(e,t=0){let n=Ga.map(o=>" "+o+e);return y(1024,n,t)}function r(e,t=0){let n=Z.map(o=>" "+o+e);return y(1e3,n,Da+t)}var Ma=()=>[{name:a("grafana-data.valueFormats.categories.misc.name","Misc"),formats:[{name:a("grafana-data.valueFormats.categories.misc.formats.name-number","Number"),id:"none",fn:m("")},{name:a("grafana-data.valueFormats.categories.misc.formats.name-string","String"),id:"string",fn:Ia},{name:a("grafana-data.valueFormats.categories.misc.formats.name-short","short"),id:"short",fn:y(1e3,[""," K"," Mil"," Bil"," Tri"," Quadr"," Quint"," Sext"," Sept"])},{name:a("grafana-data.valueFormats.categories.misc.formats.name-si-short","SI short"),id:"sishort",fn:r("")},{name:a("grafana-data.valueFormats.categories.misc.formats.name-percent-100","Percent (0-100)"),id:"percent",fn:X},{name:a("grafana-data.valueFormats.categories.misc.formats.name-percent-1","Percent (0.0-1.0)"),id:"percentunit",fn:J},{name:a("grafana-data.valueFormats.categories.misc.formats.name-humidity","Humidity (%H)"),id:"humidity",fn:m("%H")},{name:a("grafana-data.valueFormats.categories.misc.formats.name-decibel","Decibel"),id:"dB",fn:m("dB")},{name:a("grafana-data.valueFormats.categories.misc.formats.name-candala","Candela (cd)"),id:"candela",fn:r("cd")},{name:a("grafana-data.valueFormats.categories.misc.formats.name-hexadecimal-0x","Hexadecimal (0x)"),id:"hex0x",fn:Q},{name:a("grafana-data.valueFormats.categories.misc.formats.name-hexadecimal","Hexadecimal"),id:"hex",fn:O},{name:a("grafana-data.valueFormats.categories.misc.formats.name-scientific","Scientific notation"),id:"sci",fn:z},{name:a("grafana-data.valueFormats.categories.misc.formats.name-locale","Locale format"),id:"locale",fn:Sa},{name:a("grafana-data.valueFormats.categories.misc.formats.name-pixels","Pixels"),id:"pixel",fn:m("px")}]},{name:a("grafana-data.valueFormats.categories.acceleration.name","Acceleration"),formats:[{name:a("grafana-data.valueFormats.categories.acceleration.formats.name-meters-sec","Meters/sec\xB2"),id:"accMS2",fn:m("m/sec\xB2")},{name:a("grafana-data.valueFormats.categories.acceleration.formats.name-feet-sec","Feet/sec\xB2"),id:"accFS2",fn:m("f/sec\xB2")},{name:a("grafana-data.valueFormats.categories.acceleration.formats.name-g-unit","G unit"),id:"accG",fn:m("g")}]},{name:a("grafana-data.valueFormats.categories.angle.name","Angle"),formats:[{name:a("grafana-data.valueFormats.categories.angle.formats.name-degrees","Degrees (\xB0)"),id:"degree",fn:m("\xB0")},{name:a("grafana-data.valueFormats.categories.angle.formats.name-radians","Radians"),id:"radian",fn:m("rad")},{name:a("grafana-data.valueFormats.categories.angle.formats.name-gradian","Gradian"),id:"grad",fn:m("grad")},{name:a("grafana-data.valueFormats.categories.angle.formats.name-arc-minutes","Arc Minutes"),id:"arcmin",fn:m("arcmin")},{name:a("grafana-data.valueFormats.categories.angle.formats.name-arc-seconds","Arc Seconds"),id:"arcsec",fn:m("arcsec")}]},{name:a("grafana-data.valueFormats.categories.area.name","Area"),formats:[{name:a("grafana-data.valueFormats.categories.area.formats.name-square-meters","Square Meters (m\xB2)"),id:"areaM2",fn:m("m\xB2")},{name:a("grafana-data.valueFormats.categories.area.formats.name-square-feet","Square Feet (ft\xB2)"),id:"areaF2",fn:m("ft\xB2")},{name:a("grafana-data.valueFormats.categories.area.formats.name-square-miles","Square Miles (mi\xB2)"),id:"areaMI2",fn:m("mi\xB2")},{name:a("grafana-data.valueFormats.categories.area.formats.name-acres","Acres (ac)"),id:"acres",fn:m("ac")},{name:a("grafana-data.valueFormats.categories.area.formats.name-hectares","Hectares (ha)"),id:"hectares",fn:m("ha")}]},{name:a("grafana-data.valueFormats.categories.computation.name","Computation"),formats:[{name:a("grafana-data.valueFormats.categories.computation.formats.name-flops","FLOP/s"),id:"flops",fn:r("FLOPS")},{name:a("grafana-data.valueFormats.categories.computation.formats.name-mflops","MFLOP/s"),id:"mflops",fn:r("FLOPS",2)},{name:a("grafana-data.valueFormats.categories.computation.formats.name-gflops","GFLOP/s"),id:"gflops",fn:r("FLOPS",3)},{name:a("grafana-data.valueFormats.categories.computation.formats.name-tflops","TFLOP/s"),id:"tflops",fn:r("FLOPS",4)},{name:a("grafana-data.valueFormats.categories.computation.formats.name-pflops","PFLOP/s"),id:"pflops",fn:r("FLOPS",5)},{name:a("grafana-data.valueFormats.categories.computation.formats.name-eflops","EFLOP/s"),id:"eflops",fn:r("FLOPS",6)},{name:a("grafana-data.valueFormats.categories.computation.formats.name-zflops","ZFLOP/s"),id:"zflops",fn:r("FLOPS",7)},{name:a("grafana-data.valueFormats.categories.computation.formats.name-yflops","YFLOP/s"),id:"yflops",fn:r("FLOPS",8)}]},{name:a("grafana-data.valueFormats.categories.concentration.name","Concentration"),formats:[{name:a("grafana-data.valueFormats.categories.concentration.formats.name-ppm","parts-per-million (ppm)"),id:"ppm",fn:m("ppm")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-ppb","parts-per-billion (ppb)"),id:"conppb",fn:m("ppb")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-ng-m3","nanogram per cubic meter (ng/m\xB3)"),id:"conngm3",fn:m("ng/m\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-ng-nm3","nanogram per normal cubic meter (ng/Nm\xB3)"),id:"conngNm3",fn:m("ng/Nm\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-ug-m3","microgram per cubic meter (\u03BCg/m\xB3)"),id:"con\u03BCgm3",fn:m("\u03BCg/m\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-ug-nm3","microgram per normal cubic meter (\u03BCg/Nm\xB3)"),id:"con\u03BCgNm3",fn:m("\u03BCg/Nm\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-mg-m3","milligram per cubic meter (mg/m\xB3)"),id:"conmgm3",fn:m("mg/m\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-mg-nm3","milligram per normal cubic meter (mg/Nm\xB3)"),id:"conmgNm3",fn:m("mg/Nm\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-g-m3","gram per cubic meter (g/m\xB3)"),id:"congm3",fn:m("g/m\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-g-nm3","gram per normal cubic meter (g/Nm\xB3)"),id:"congNm3",fn:m("g/Nm\xB3")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-mg-dl","milligrams per decilitre (mg/dL)"),id:"conmgdL",fn:m("mg/dL")},{name:a("grafana-data.valueFormats.categories.concentration.formats.name-mmol-l","millimoles per litre (mmol/L)"),id:"conmmolL",fn:m("mmol/L")}]},{name:a("grafana-data.valueFormats.categories.currency.name","Currency"),formats:[{name:a("grafana-data.valueFormats.categories.currency.formats.name-usd","Dollars ($)"),id:"currencyUSD",fn:u("$")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-gbp","Pounds (\xA3)"),id:"currencyGBP",fn:u("\xA3")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-eur","Euro (\u20AC)"),id:"currencyEUR",fn:u("\u20AC")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-jpy","Yen (\xA5)"),id:"currencyJPY",fn:u("\xA5")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-rub","Rubles (\u20BD)"),id:"currencyRUB",fn:u("\u20BD")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-uah","Hryvnias (\u20B4)"),id:"currencyUAH",fn:u("\u20B4")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-brl","Real (R$)"),id:"currencyBRL",fn:u("R$")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-dkk","Danish Krone (kr)"),id:"currencyDKK",fn:u("kr",!0)},{name:a("grafana-data.valueFormats.categories.currency.formats.name-isk","Icelandic Kr\xF3na (kr)"),id:"currencyISK",fn:u("kr",!0)},{name:a("grafana-data.valueFormats.categories.currency.formats.name-nok","Norwegian Krone (kr)"),id:"currencyNOK",fn:u("kr",!0)},{name:a("grafana-data.valueFormats.categories.currency.formats.name-sek","Swedish Krona (kr)"),id:"currencySEK",fn:u("kr",!0)},{name:a("grafana-data.valueFormats.categories.currency.formats.name-czk","Czech koruna (czk)"),id:"currencyCZK",fn:u("czk")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-chf","Swiss franc (CHF)"),id:"currencyCHF",fn:u("CHF")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-pln","Polish Z\u0142oty (PLN)"),id:"currencyPLN",fn:u("PLN")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-btc","Bitcoin (\u0E3F)"),id:"currencyBTC",fn:u("\u0E3F")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-mbtc","Milli Bitcoin (\u0E3F)"),id:"currencymBTC",fn:u("mBTC")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-ubtc","Micro Bitcoin (\u0E3F)"),id:"currency\u03BCBTC",fn:u("\u03BCBTC")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-zar","South African Rand (R)"),id:"currencyZAR",fn:u("R")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-inr","Indian Rupee (\u20B9)"),id:"currencyINR",fn:u("\u20B9")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-krw","South Korean Won (\u20A9)"),id:"currencyKRW",fn:u("\u20A9")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-idr","Indonesian Rupiah (Rp)"),id:"currencyIDR",fn:u("Rp")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-php","Philippine Peso (PHP)"),id:"currencyPHP",fn:u("PHP")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-vnd","Vietnamese Dong (VND)"),id:"currencyVND",fn:u("\u0111",!0)},{name:a("grafana-data.valueFormats.categories.currency.formats.name-try","Turkish Lira (\u20BA)"),id:"currencyTRY",fn:u("\u20BA",!0)},{name:a("grafana-data.valueFormats.categories.currency.formats.name-myr","Malaysian Ringgit (RM)"),id:"currencyMYR",fn:u("RM")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-xpf","CFP franc (XPF)"),id:"currencyXPF",fn:u("XPF")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-bgn","Bulgarian Lev (BGN)"),id:"currencyBGN",fn:u("BGN")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-pyg","Guaran\xED (\u20B2)"),id:"currencyPYG",fn:u("\u20B2")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-uyu","Uruguay Peso (UYU)"),id:"currencyUYU",fn:u("UYU")},{name:a("grafana-data.valueFormats.categories.currency.formats.name-ils","Israeli New Shekels (\u20AA)"),id:"currencyILS",fn:u("\u20AA")}]},{name:a("grafana-data.valueFormats.categories.data.name","Data"),formats:[{name:a("grafana-data.valueFormats.categories.data.formats.name-bytes-iec","bytes(IEC)"),id:"bytes",fn:d("B")},{name:a("grafana-data.valueFormats.categories.data.formats.name-bytes-si","bytes(SI)"),id:"decbytes",fn:r("B")},{name:a("grafana-data.valueFormats.categories.data.formats.name-bits-iec","bits(IEC)"),id:"bits",fn:d("b")},{name:a("grafana-data.valueFormats.categories.data.formats.name-bits-si","bits(SI)"),id:"decbits",fn:r("b")},{name:a("grafana-data.valueFormats.categories.data.formats.name-kibibytes","kibibytes"),id:"kbytes",fn:d("B",1)},{name:a("grafana-data.valueFormats.categories.data.formats.name-kilobytes","kilobytes"),id:"deckbytes",fn:r("B",1)},{name:a("grafana-data.valueFormats.categories.data.formats.name-mebibytes","mebibytes"),id:"mbytes",fn:d("B",2)},{name:a("grafana-data.valueFormats.categories.data.formats.name-megabytes","megabytes"),id:"decmbytes",fn:r("B",2)},{name:a("grafana-data.valueFormats.categories.data.formats.name-gibibytes","gibibytes"),id:"gbytes",fn:d("B",3)},{name:a("grafana-data.valueFormats.categories.data.formats.name-gigabytes","gigabytes"),id:"decgbytes",fn:r("B",3)},{name:a("grafana-data.valueFormats.categories.data.formats.name-tebibytes","tebibytes"),id:"tbytes",fn:d("B",4)},{name:a("grafana-data.valueFormats.categories.data.formats.name-terabytes","terabytes"),id:"dectbytes",fn:r("B",4)},{name:a("grafana-data.valueFormats.categories.data.formats.name-pebibytes","pebibytes"),id:"pbytes",fn:d("B",5)},{name:a("grafana-data.valueFormats.categories.data.formats.name-petabytes","petabytes"),id:"decpbytes",fn:r("B",5)}]},{name:a("grafana-data.valueFormats.categories.data-rate.name","Data rate"),formats:[{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-packets-sec","packets/sec"),id:"pps",fn:r("p/s")},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-bytes-sec-iec","bytes/sec(IEC)"),id:"binBps",fn:d("B/s")},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-bytes-sec-si","bytes/sec(SI)"),id:"Bps",fn:r("B/s")},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-bits-sec-iec","bits/sec(IEC)"),id:"binbps",fn:d("b/s")},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-bits-sec-si","bits/sec(SI)"),id:"bps",fn:r("b/s")},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-kibibytes-sec","kibibytes/sec"),id:"KiBs",fn:d("B/s",1)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-kibibits-sec","kibibits/sec"),id:"Kibits",fn:d("b/s",1)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-kilobytes-sec","kilobytes/sec"),id:"KBs",fn:r("B/s",1)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-kilobits-sec","kilobits/sec"),id:"Kbits",fn:r("b/s",1)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-mebibytes-sec","mebibytes/sec"),id:"MiBs",fn:d("B/s",2)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-mebibits-sec","mebibits/sec"),id:"Mibits",fn:d("b/s",2)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-megabytes-sec","megabytes/sec"),id:"MBs",fn:r("B/s",2)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-megabits-sec","megabits/sec"),id:"Mbits",fn:r("b/s",2)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-gibibytes-sec","gibibytes/sec"),id:"GiBs",fn:d("B/s",3)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-gibibits-sec","gibibits/sec"),id:"Gibits",fn:d("b/s",3)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-gigabytes-sec","gigabytes/sec"),id:"GBs",fn:r("B/s",3)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-gigabits-sec","gigabits/sec"),id:"Gbits",fn:r("b/s",3)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-tebibytes-sec","tebibytes/sec"),id:"TiBs",fn:d("B/s",4)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-tebibits-sec","tebibits/sec"),id:"Tibits",fn:d("b/s",4)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-terabytes-sec","terabytes/sec"),id:"TBs",fn:r("B/s",4)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-terabits-sec","terabits/sec"),id:"Tbits",fn:r("b/s",4)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-pebibytes-sec","pebibytes/sec"),id:"PiBs",fn:d("B/s",5)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-pebibits-sec","pebibits/sec"),id:"Pibits",fn:d("b/s",5)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-petabytes-sec","petabytes/sec"),id:"PBs",fn:r("B/s",5)},{name:a("grafana-data.valueFormats.categories.data-rate.formats.name-petabits-sec","petabits/sec"),id:"Pbits",fn:r("b/s",5)}]},{name:a("grafana-data.valueFormats.categories.date-time.name","Date & time"),formats:[{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-iso","Datetime ISO"),id:"dateTimeAsIso",fn:da},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-iso-no-date","Datetime ISO (No date if today)"),id:"dateTimeAsIsoNoDateIfToday",fn:ga},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-us","Datetime US"),id:"dateTimeAsUS",fn:pa},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-us-no-date","Datetime US (No date if today)"),id:"dateTimeAsUSNoDateIfToday",fn:Fa},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-local","Datetime local"),id:"dateTimeAsLocal",fn:ha()},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-local-no-date","Datetime local (No date if today)"),id:"dateTimeAsLocalNoDateIfToday",fn:va()},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-datetime-default","Datetime default"),id:"dateTimeAsSystem",fn:ba},{name:a("grafana-data.valueFormats.categories.date-time.formats.name-from-now","From Now"),id:"dateTimeFromNow",fn:ya}]},{name:a("grafana-data.valueFormats.categories.energy.name","Energy"),formats:[{name:a("grafana-data.valueFormats.categories.energy.formats.name-watt","Watt (W)"),id:"watt",fn:r("W")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kilowatt","Kilowatt (kW)"),id:"kwatt",fn:r("W",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-megawatt","Megawatt (MW)"),id:"megwatt",fn:r("W",2)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-gigawatt","Gigawatt (GW)"),id:"gwatt",fn:r("W",3)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-milliwatt","Milliwatt (mW)"),id:"mwatt",fn:r("W",-1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-watt-square-meter","Watt per square meter (W/m\xB2)"),id:"Wm2",fn:r("W/m\xB2")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-volt-ampere","Volt-Ampere (VA)"),id:"voltamp",fn:r("VA")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kilovolt-ampere","Kilovolt-Ampere (kVA)"),id:"kvoltamp",fn:r("VA",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-volt-ampere-reactive","Volt-Ampere reactive (VAr)"),id:"voltampreact",fn:r("VAr")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kilovolt-ampere-reactive","Kilovolt-Ampere reactive (kVAr)"),id:"kvoltampreact",fn:r("VAr",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-watt-hour","Watt-hour (Wh)"),id:"watth",fn:r("Wh")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-watt-hour-per-kg","Watt-hour per Kilogram (Wh/kg)"),id:"watthperkg",fn:r("Wh/kg")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kilowatt-hour","Kilowatt-hour (kWh)"),id:"kwatth",fn:r("Wh",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kilowatt-min","Kilowatt-min (kWm)"),id:"kwattm",fn:r("W-Min",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-megawatt-hour","Megawatt-hour (MWh)"),id:"mwatth",fn:r("Wh",2)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-ampere-hour","Ampere-hour (Ah)"),id:"amph",fn:r("Ah")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kiloampere-hour","Kiloampere-hour (kAh)"),id:"kamph",fn:r("Ah",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-milliampere-hour","Milliampere-hour (mAh)"),id:"mamph",fn:r("Ah",-1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-joule","Joule (J)"),id:"joule",fn:r("J")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-electron-volt","Electron volt (eV)"),id:"ev",fn:r("eV")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-ampere","Ampere (A)"),id:"amp",fn:r("A")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kiloampere","Kiloampere (kA)"),id:"kamp",fn:r("A",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-milliampere","Milliampere (mA)"),id:"mamp",fn:r("A",-1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-volt","Volt (V)"),id:"volt",fn:r("V")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kilovolt","Kilovolt (kV)"),id:"kvolt",fn:r("V",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-millivolt","Millivolt (mV)"),id:"mvolt",fn:r("V",-1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-decibel-milliwatt","Decibel-milliwatt (dBm)"),id:"dBm",fn:r("dBm")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-milliohm","Milliohm (m\u03A9)"),id:"mohm",fn:r("\u03A9",-1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-ohm","Ohm (\u03A9)"),id:"ohm",fn:r("\u03A9")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-kiloohm","Kiloohm (k\u03A9)"),id:"kohm",fn:r("\u03A9",1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-megaohm","Megaohm (M\u03A9)"),id:"Mohm",fn:r("\u03A9",2)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-farad","Farad (F)"),id:"farad",fn:r("F")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-microfarad","Microfarad (\xB5F)"),id:"\xB5farad",fn:r("F",-2)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-nanofarad","Nanofarad (nF)"),id:"nfarad",fn:r("F",-3)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-picofarad","Picofarad (pF)"),id:"pfarad",fn:r("F",-4)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-femtofarad","Femtofarad (fF)"),id:"ffarad",fn:r("F",-5)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-henry","Henry (H)"),id:"henry",fn:r("H")},{name:a("grafana-data.valueFormats.categories.energy.formats.name-millihenry","Millihenry (mH)"),id:"mhenry",fn:r("H",-1)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-microhenry","Microhenry (\xB5H)"),id:"\xB5henry",fn:r("H",-2)},{name:a("grafana-data.valueFormats.categories.energy.formats.name-lumens","Lumens (Lm)"),id:"lumens",fn:r("Lm")}]},{name:a("grafana-data.valueFormats.categories.flow.name","Flow"),formats:[{name:a("grafana-data.valueFormats.categories.flow.formats.name-gallons-min","Gallons/min (gpm)"),id:"flowgpm",fn:m("gpm")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-cubic-meters-sec","Cubic meters/sec (cms)"),id:"flowcms",fn:m("cms")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-cubic-feet-sec","Cubic feet/sec (cfs)"),id:"flowcfs",fn:m("cfs")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-cubic-feet-min","Cubic feet/min (cfm)"),id:"flowcfm",fn:m("cfm")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-litre-hour","Litre/hour"),id:"litreh",fn:m("L/h")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-litre-min","Litre/min (L/min)"),id:"flowlpm",fn:m("L/min")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-millilitre-min","milliLitre/min (mL/min)"),id:"flowmlpm",fn:m("mL/min")},{name:a("grafana-data.valueFormats.categories.flow.formats.name-lux","Lux (lx)"),id:"lux",fn:m("lux")}]},{name:a("grafana-data.valueFormats.categories.force.name","Force"),formats:[{name:a("grafana-data.valueFormats.categories.force.formats.name-newton-meters","Newton-meters (Nm)"),id:"forceNm",fn:r("Nm")},{name:a("grafana-data.valueFormats.categories.force.formats.name-kilonewton-meters","Kilonewton-meters (kNm)"),id:"forcekNm",fn:r("Nm",1)},{name:a("grafana-data.valueFormats.categories.force.formats.name-newtons","Newtons (N)"),id:"forceN",fn:r("N")},{name:a("grafana-data.valueFormats.categories.force.formats.name-kilonewtons","Kilonewtons (kN)"),id:"forcekN",fn:r("N",1)}]},{name:a("grafana-data.valueFormats.categories.hash-rate.name","Hash rate"),formats:[{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-hashes-sec","hashes/sec"),id:"Hs",fn:r("H/s")},{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-kilohashes-sec","kilohashes/sec"),id:"KHs",fn:r("H/s",1)},{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-megahashes-sec","megahashes/sec"),id:"MHs",fn:r("H/s",2)},{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-gigahashes-sec","gigahashes/sec"),id:"GHs",fn:r("H/s",3)},{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-terahashes-sec","terahashes/sec"),id:"THs",fn:r("H/s",4)},{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-petahashes-sec","petahashes/sec"),id:"PHs",fn:r("H/s",5)},{name:a("grafana-data.valueFormats.categories.hash-rate.formats.name-exahashes-sec","exahashes/sec"),id:"EHs",fn:r("H/s",6)}]},{name:a("grafana-data.valueFormats.categories.mass.name","Mass"),formats:[{name:a("grafana-data.valueFormats.categories.mass.formats.name-milligram","milligram (mg)"),id:"massmg",fn:r("g",-1)},{name:a("grafana-data.valueFormats.categories.mass.formats.name-gram","gram (g)"),id:"massg",fn:r("g")},{name:a("grafana-data.valueFormats.categories.mass.formats.name-pound","pound (lb)"),id:"masslb",fn:m("lb")},{name:a("grafana-data.valueFormats.categories.mass.formats.name-kilogram","kilogram (kg)"),id:"masskg",fn:r("g",1)},{name:a("grafana-data.valueFormats.categories.mass.formats.name-metric-ton","metric ton (t)"),id:"masst",fn:m("t")}]},{name:a("grafana-data.valueFormats.categories.length.name","Length"),formats:[{name:a("grafana-data.valueFormats.categories.length.formats.name-millimeter","millimeter (mm)"),id:"lengthmm",fn:r("m",-1)},{name:a("grafana-data.valueFormats.categories.length.formats.name-inch","inch (in)"),id:"lengthin",fn:m("in")},{name:a("grafana-data.valueFormats.categories.length.formats.name-feet","feet (ft)"),id:"lengthft",fn:m("ft")},{name:a("grafana-data.valueFormats.categories.length.formats.name-meter","meter (m)"),id:"lengthm",fn:r("m")},{name:a("grafana-data.valueFormats.categories.length.formats.name-kilometer","kilometer (km)"),id:"lengthkm",fn:r("m",1)},{name:a("grafana-data.valueFormats.categories.length.formats.name-mile","mile (mi)"),id:"lengthmi",fn:m("mi")}]},{name:a("grafana-data.valueFormats.categories.pressure.name","Pressure"),formats:[{name:a("grafana-data.valueFormats.categories.pressure.formats.name-millibars","Millibars"),id:"pressurembar",fn:r("bar",-1)},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-bars","Bars"),id:"pressurebar",fn:r("bar")},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-kilobars","Kilobars"),id:"pressurekbar",fn:r("bar",1)},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-pascals","Pascals"),id:"pressurepa",fn:r("Pa")},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-hectopascals","Hectopascals"),id:"pressurehpa",fn:m("hPa")},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-kilopascals","Kilopascals"),id:"pressurekpa",fn:m("kPa")},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-inches-mercury","Inches of mercury"),id:"pressurehg",fn:m('"Hg')},{name:a("grafana-data.valueFormats.categories.pressure.formats.name-psi","PSI"),id:"pressurepsi",fn:y(1e3,["psi","ksi","Mpsi"])}]},{name:a("grafana-data.valueFormats.categories.radiation.name","Radiation"),formats:[{name:a("grafana-data.valueFormats.categories.radiation.formats.name-becquerel","Becquerel (Bq)"),id:"radbq",fn:r("Bq")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-curie","curie (Ci)"),id:"radci",fn:r("Ci")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-gray","Gray (Gy)"),id:"radgy",fn:r("Gy")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-rad","rad"),id:"radrad",fn:r("rad")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-sievert","Sievert (Sv)"),id:"radsv",fn:r("Sv")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-millisievert","milliSievert (mSv)"),id:"radmsv",fn:r("Sv",-1)},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-microsievert","microSievert (\xB5Sv)"),id:"radusv",fn:r("Sv",-2)},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-rem","rem"),id:"radrem",fn:r("rem")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-exposure","Exposure (C/kg)"),id:"radexpckg",fn:r("C/kg")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-roentgen","roentgen (R)"),id:"radr",fn:r("R")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-sievert-hour","Sievert/hour (Sv/h)"),id:"radsvh",fn:r("Sv/h")},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-millisievert-hour","milliSievert/hour (mSv/h)"),id:"radmsvh",fn:r("Sv/h",-1)},{name:a("grafana-data.valueFormats.categories.radiation.formats.name-microsievert-hour","microSievert/hour (\xB5Sv/h)"),id:"radusvh",fn:r("Sv/h",-2)}]},{name:a("grafana-data.valueFormats.categories.rotational-speed.name","Rotational Speed"),formats:[{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-rpm","Revolutions per minute (rpm)"),id:"rotrpm",fn:m("rpm")},{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-hertz","Hertz (Hz)"),id:"rothz",fn:r("Hz")},{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-kilohertz","Kilohertz (kHz)"),id:"rotkhz",fn:r("Hz",1)},{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-megahertz","Megahertz (MHz)"),id:"rotmhz",fn:r("Hz",2)},{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-gigahertz","Gigahertz (GHz)"),id:"rotghz",fn:r("Hz",3)},{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-radians-sec","Radians per second (rad/s)"),id:"rotrads",fn:m("rad/s")},{name:a("grafana-data.valueFormats.categories.rotational-speed.formats.name-degrees-sec","Degrees per second (\xB0/s)"),id:"rotdegs",fn:m("\xB0/s")}]},{name:a("grafana-data.valueFormats.categories.temperature.name","Temperature"),formats:[{name:a("grafana-data.valueFormats.categories.temperature.formats.name-celsius","Celsius (\xB0C)"),id:"celsius",fn:m("\xB0C")},{name:a("grafana-data.valueFormats.categories.temperature.formats.name-fahrenheit","Fahrenheit (\xB0F)"),id:"fahrenheit",fn:m("\xB0F")},{name:a("grafana-data.valueFormats.categories.temperature.formats.name-kelvin","Kelvin (K)"),id:"kelvin",fn:m("K")}]},{name:a("grafana-data.valueFormats.categories.time.name","Time"),formats:[{name:a("grafana-data.valueFormats.categories.time.formats.name-hertz","Hertz (1/s)"),id:"hertz",fn:r("Hz")},{name:a("grafana-data.valueFormats.categories.time.formats.name-nanoseconds","nanoseconds (ns)"),id:"ns",fn:ea},{name:a("grafana-data.valueFormats.categories.time.formats.name-microseconds","microseconds (\xB5s)"),id:"\xB5s",fn:ta},{name:a("grafana-data.valueFormats.categories.time.formats.name-milliseconds","milliseconds (ms)"),id:"ms",fn:ra},{name:a("grafana-data.valueFormats.categories.time.formats.name-seconds","seconds (s)"),id:"s",fn:P},{name:a("grafana-data.valueFormats.categories.time.formats.name-minutes","minutes (m)"),id:"m",fn:na},{name:a("grafana-data.valueFormats.categories.time.formats.name-hours","hours (h)"),id:"h",fn:oa},{name:a("grafana-data.valueFormats.categories.time.formats.name-days","days (d)"),id:"d",fn:ma},{name:a("grafana-data.valueFormats.categories.time.formats.name-duration-ms","duration (ms)"),id:"dtdurationms",fn:ia},{name:a("grafana-data.valueFormats.categories.time.formats.name-duration-s","duration (s)"),id:"dtdurations",fn:fa},{name:a("grafana-data.valueFormats.categories.time.formats.name-duration-hms","duration (hh:mm:ss)"),id:"dthms",fn:V},{name:a("grafana-data.valueFormats.categories.time.formats.name-duration-dhms","duration (d hh:mm:ss)"),id:"dtdhms",fn:R},{name:a("grafana-data.valueFormats.categories.time.formats.name-timeticks","Timeticks (s/100)"),id:"timeticks",fn:ua},{name:a("grafana-data.valueFormats.categories.time.formats.name-clock-ms","clock (ms)"),id:"clockms",fn:ca},{name:a("grafana-data.valueFormats.categories.time.formats.name-clock-s","clock (s)"),id:"clocks",fn:la}]},{name:a("grafana-data.valueFormats.categories.throughput.name","Throughput"),formats:[{name:a("grafana-data.valueFormats.categories.throughput.formats.name-counts-sec","counts/sec (cps)"),id:"cps",fn:l("c/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-ops-sec","ops/sec (ops)"),id:"ops",fn:l("ops/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-requests-sec","requests/sec (rps)"),id:"reqps",fn:l("req/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-reads-sec","reads/sec (rps)"),id:"rps",fn:l("rd/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-writes-sec","writes/sec (wps)"),id:"wps",fn:l("wr/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-io-ops-sec","I/O ops/sec (iops)"),id:"iops",fn:l("io/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-events-sec","events/sec (eps)"),id:"eps",fn:l("evt/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-messages-sec","messages/sec (mps)"),id:"mps",fn:l("msg/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-records-sec","records/sec (rps)"),id:"recps",fn:l("rec/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-rows-sec","rows/sec (rps)"),id:"rowsps",fn:l("rows/s")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-counts-min","counts/min (cpm)"),id:"cpm",fn:l("c/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-ops-min","ops/min (opm)"),id:"opm",fn:l("ops/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-requests-min","requests/min (rpm)"),id:"reqpm",fn:l("req/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-reads-min","reads/min (rpm)"),id:"rpm",fn:l("rd/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-writes-min","writes/min (wpm)"),id:"wpm",fn:l("wr/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-events-min","events/min (epm)"),id:"epm",fn:l("evts/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-messages-min","messages/min (mpm)"),id:"mpm",fn:l("msgs/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-records-min","records/min (rpm)"),id:"recpm",fn:l("rec/m")},{name:a("grafana-data.valueFormats.categories.throughput.formats.name-rows-min","rows/min (rpm)"),id:"rowspm",fn:l("rows/m")}]},{name:a("grafana-data.valueFormats.categories.velocity.name","Velocity"),formats:[{name:a("grafana-data.valueFormats.categories.velocity.formats.name-meters-second","meters/second (m/s)"),id:"velocityms",fn:m("m/s")},{name:a("grafana-data.valueFormats.categories.velocity.formats.name-kilometers-hour","kilometers/hour (km/h)"),id:"velocitykmh",fn:m("km/h")},{name:a("grafana-data.valueFormats.categories.velocity.formats.name-miles-hour","miles/hour (mph)"),id:"velocitymph",fn:m("mph")},{name:a("grafana-data.valueFormats.categories.velocity.formats.name-knot","knot (kn)"),id:"velocityknot",fn:m("kn")}]},{name:a("grafana-data.valueFormats.categories.volume.name","Volume"),formats:[{name:a("grafana-data.valueFormats.categories.volume.formats.name-millilitre","millilitre (mL)"),id:"mlitre",fn:r("L",-1)},{name:a("grafana-data.valueFormats.categories.volume.formats.name-litre","litre (L)"),id:"litre",fn:r("L")},{name:a("grafana-data.valueFormats.categories.volume.formats.name-cubic-meter","cubic meter"),id:"m3",fn:m("m\xB3")},{name:a("grafana-data.valueFormats.categories.volume.formats.name-normal-cubic-meter","Normal cubic meter"),id:"Nm3",fn:m("Nm\xB3")},{name:a("grafana-data.valueFormats.categories.volume.formats.name-cubic-decimeter","cubic decimeter"),id:"dm3",fn:m("dm\xB3")},{name:a("grafana-data.valueFormats.categories.volume.formats.name-gallons","gallons"),id:"gallons",fn:m("gal")}]},{name:a("grafana-data.valueFormats.categories.boolean.name","Boolean"),formats:[{name:a("grafana-data.valueFormats.categories.boolean.formats.name-true-false","True / False"),id:"bool",fn:T("True","False")},{name:a("grafana-data.valueFormats.categories.boolean.formats.name-yes-no","Yes / No"),id:"bool_yes_no",fn:T("Yes","No")},{name:a("grafana-data.valueFormats.categories.boolean.formats.name-on-off","On / Off"),id:"bool_on_off",fn:T("On","Off")}]}];var wa=[],C={},Na=!1;function p(e,t){if(e===null)return"";if(e===Number.NEGATIVE_INFINITY||e===Number.POSITIVE_INFINITY)return e.toLocaleString();if(t==null&&(t=qa(e)),e===0)return e.toFixed(t);let n=t?Math.pow(10,Math.max(0,t)):1,o=String(Math.round(e*n)/n);if(o.indexOf("e")!==-1||e===0)return o;let s=o.indexOf("."),i=s===-1?0:o.length-s-1;return i<t?(i?o:o+".")+String(n).slice(1,t-i+1):o}function qa(e){let t=Math.abs(e),o=-Math.floor(Math.log(t)/Math.LN10)+1,s=Math.pow(10,-o);return t/s>2.25&&++o,e%1===0&&(o=0),Math.max(0,o)}function c(e,t,n){return{text:p(e,t),suffix:_a(n,Math.abs(e)>1)}}function _a(e,t){if(!t)return e;switch(e){case" min":case" hour":case" day":case" week":case" year":return`${e}s`;default:return e}}function m(e,t){return(n,o)=>{if(n===null)return{text:""};let s=p(n,o);return e?t?{text:s,prefix:e}:{text:s,suffix:" "+e}:{text:s}}}function T(e,t){return n=>({text:n?e:t})}var $a=(e,t)=>Math.log10(t)/Math.log10(e);function y(e,t,n=0){return(o,s)=>{if(o==null)return{text:""};if(o===Number.NEGATIVE_INFINITY||o===Number.POSITIVE_INFINITY||isNaN(o))return{text:o.toLocaleString()};let i=o===0?0:Math.floor($a(e,Math.abs(o))),f=t[ka(n+i,0,t.length-1)];return{text:p(o/e**ka(i,-n,t.length-n-1),s),suffix:f}}}function Sa(e,t){return e==null?{text:""}:{text:e.toLocaleString(void 0,{maximumFractionDigits:t??void 0})}}function l(e){let n=y(1e3,["","K","M","B","T"]);return(o,s,i)=>{if(o===null)return{text:""};let f=n(o,s,i);return f.suffix+=" "+e,f}}function Ia(e){return{text:`${e}`}}function ja(){wa=Ma();for(let e of wa)for(let t of e.formats)C[t.id]=t.fn;[{from:"farenheit",to:"fahrenheit"}].forEach(e=>{let t=C[e.to];t&&(C[e.from]=t)}),Na=!0}function Xa(e){if(!e)return m("");Na||ja();let t=C[e];if(!t&&e){let n=e.indexOf(":");if(n>0){let o=e.substring(0,n),s=e.substring(n+1);if(o==="prefix")return m(s,!0);if(o==="suffix")return m(s,!1);if(o==="time")return b(s);if(o==="si"){let i=Ta(s.charAt(0)),f=i===0?s:s.substring(1);return r(f,i)}if(o==="count")return l(s);if(o==="currency"){let i=s.split(":");if(i[0]==="financial"&&i.length>=2){let f=i[1];if(!f)return m("");let F=i[2]==="suffix";return xa(f,F)}else return u(s)}if(o==="bool"){if(n=s.indexOf("/"),n>=0){let i=s.substring(0,n),f=s.substring(n+1);return T(i,f)}return T(s,"-")}}return m(e)}return t}export{S as dateTimeFormat,B as dateTimeFormatTimeAgo,Xa as getValueFormat,D as systemDateFormats};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|