@flanksource/clicky-ui 0.2.7 → 0.2.9
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/dist/components/Combobox.cjs +89 -49
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +3 -0
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +91 -51
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/FilterBar.cjs +42 -44
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +19 -0
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +43 -45
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +35 -0
- package/dist/components/JsonSchemaForm.cjs.map +1 -0
- package/dist/components/JsonSchemaForm.d.ts +3 -0
- package/dist/components/JsonSchemaForm.d.ts.map +1 -0
- package/dist/components/JsonSchemaForm.js +35 -0
- package/dist/components/JsonSchemaForm.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +169 -0
- package/dist/components/json-schema-form-array.cjs.map +1 -0
- package/dist/components/json-schema-form-array.d.ts +8 -0
- package/dist/components/json-schema-form-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-array.js +169 -0
- package/dist/components/json-schema-form-array.js.map +1 -0
- package/dist/components/json-schema-form-fields.cjs +365 -0
- package/dist/components/json-schema-form-fields.cjs.map +1 -0
- package/dist/components/json-schema-form-fields.d.ts +19 -0
- package/dist/components/json-schema-form-fields.d.ts.map +1 -0
- package/dist/components/json-schema-form-fields.js +365 -0
- package/dist/components/json-schema-form-fields.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +154 -0
- package/dist/components/json-schema-form-render.cjs.map +1 -0
- package/dist/components/json-schema-form-render.d.ts +40 -0
- package/dist/components/json-schema-form-render.d.ts.map +1 -0
- package/dist/components/json-schema-form-render.js +154 -0
- package/dist/components/json-schema-form-render.js.map +1 -0
- package/dist/components/json-schema-form-resolve.cjs +121 -0
- package/dist/components/json-schema-form-resolve.cjs.map +1 -0
- package/dist/components/json-schema-form-resolve.d.ts +19 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -0
- package/dist/components/json-schema-form-resolve.js +121 -0
- package/dist/components/json-schema-form-resolve.js.map +1 -0
- package/dist/components/json-schema-form-types.d.ts +108 -0
- package/dist/components/json-schema-form-types.d.ts.map +1 -0
- package/dist/components.cjs +7 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +3 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +8 -1
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +1 -1
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.js +1 -1
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +16 -15
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +2 -1
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +16 -15
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/Icon.cjs +11 -0
- package/dist/data/Icon.cjs.map +1 -1
- package/dist/data/Icon.d.ts +12 -1
- package/dist/data/Icon.d.ts.map +1 -1
- package/dist/data/Icon.js +12 -1
- package/dist/data/Icon.js.map +1 -1
- package/dist/data/LogDetails.cjs +277 -0
- package/dist/data/LogDetails.cjs.map +1 -0
- package/dist/data/LogDetails.d.ts +5 -0
- package/dist/data/LogDetails.d.ts.map +1 -0
- package/dist/data/LogDetails.js +277 -0
- package/dist/data/LogDetails.js.map +1 -0
- package/dist/data/LogsTable.cjs +6 -202
- package/dist/data/LogsTable.cjs.map +1 -1
- package/dist/data/LogsTable.d.ts.map +1 -1
- package/dist/data/LogsTable.js +4 -200
- package/dist/data/LogsTable.js.map +1 -1
- package/dist/data/MatrixTable.cjs +17 -9
- package/dist/data/MatrixTable.cjs.map +1 -1
- package/dist/data/MatrixTable.d.ts +3 -1
- package/dist/data/MatrixTable.d.ts.map +1 -1
- package/dist/data/MatrixTable.js +17 -9
- package/dist/data/MatrixTable.js.map +1 -1
- package/dist/data/Properties.cjs +2 -2
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.js +2 -2
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/cells/TagList.cjs +19 -3
- package/dist/data/cells/TagList.cjs.map +1 -1
- package/dist/data/cells/TagList.d.ts +11 -1
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +19 -3
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/cells/Timestamp.cjs +17 -2
- package/dist/data/cells/Timestamp.cjs.map +1 -1
- package/dist/data/cells/Timestamp.d.ts +2 -0
- package/dist/data/cells/Timestamp.d.ts.map +1 -1
- package/dist/data/cells/Timestamp.js +17 -2
- package/dist/data/cells/Timestamp.js.map +1 -1
- package/dist/data/log-utils.cjs +7 -0
- package/dist/data/log-utils.cjs.map +1 -0
- package/dist/data/log-utils.d.ts +2 -0
- package/dist/data/log-utils.d.ts.map +1 -0
- package/dist/data/log-utils.js +7 -0
- package/dist/data/log-utils.js.map +1 -0
- package/dist/data.cjs +3 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +2 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +5 -2
- package/dist/index.cjs +13 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +3 -2
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +3 -2
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationActionDialog.cjs +1 -1
- package/dist/rpc/OperationActionDialog.cjs.map +1 -1
- package/dist/rpc/OperationActionDialog.js +1 -1
- package/dist/rpc/OperationActionDialog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +21 -14
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +21 -14
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/apiClient.cjs +316 -0
- package/dist/rpc/apiClient.cjs.map +1 -0
- package/dist/rpc/apiClient.d.ts +44 -0
- package/dist/rpc/apiClient.d.ts.map +1 -0
- package/dist/rpc/apiClient.js +316 -0
- package/dist/rpc/apiClient.js.map +1 -0
- package/dist/rpc/useOperations.cjs.map +1 -1
- package/dist/rpc/useOperations.d.ts +2 -1
- package/dist/rpc/useOperations.d.ts.map +1 -1
- package/dist/rpc/useOperations.js.map +1 -1
- package/dist/rpc.cjs +3 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +1 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +3 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.cjs","sources":["../../../src/data/cells/Timestamp.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport type { TimeRangePresetGroup } from \"../../components/TimeRange\";\n\nexport type TimestampMode = \"auto\" | \"absolute\" | \"relative\" | \"time\";\n\nexport type TimestampFormat = \"relative\" | \"time\" | \"short\" | \"iso\";\n\nexport type TimestampOptions = {\n /** Rendering mode for timestamp cells. */\n mode?: TimestampMode;\n /** Show the full timestamp in a tooltip even for absolute/ISO formats. */\n alwaysShowFullOnHover?: boolean;\n /**\n * When the column is on a DataTable with `autoFilter`, DataTable mounts a\n * \"Time range\" picker (matching the trace UI) and filters rows whose\n * timestamp falls outside the selected range. Set `false` to suppress.\n */\n autoRangeFilter?: boolean;\n /** Override the trace-style preset list (\"Last 15 minutes\", etc.). */\n rangePresets?: Array<{ label: string; from: string; to: string } | TimeRangePresetGroup>;\n /** Enable absolute date+time input and timezone selection for range filters. */\n timeEnabled?: boolean;\n /** Default timezone used when encoding absolute date+time range values. */\n timeZone?: string;\n /** Selectable timezones shown when `timeEnabled` is true. */\n timeZones?: string[];\n /**\n * Default range applied on first render. Either side may use date-math\n * (`now-24h`, `now`) or any value parseable by `parseTimestamp`.\n */\n defaultRange?: { from?: string; to?: string };\n};\n\nexport function parseTimestamp(value: unknown): Date | null {\n if (value == null) return null;\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n\n if (typeof value === \"number\") {\n const ms = value < 1e12 ? value * 1000 : value;\n const d = new Date(ms);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const d = new Date(trimmed);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n return null;\n}\n\nconst UNIT_MS: Record<string, number> = {\n s: 1_000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n w: 604_800_000,\n};\n\nconst RELATIVE_PATTERN = /^now\\s*([+-])\\s*(\\d+)\\s*([smhdwMqy])$/;\nconst ANCHORED_PATTERN = /^now\\/([wMqy])(?:\\s*([+-])\\s*(\\d+)\\s*([wMqy]))?$/;\n\n/**\n * Resolves date-math strings to an absolute Date. Recognised forms:\n * - \"now\"\n * - \"now-15m\", \"now-1h\", \"now+30s\", \"now-7d\", \"now-2w\" (units: s/m/h/d/w/M/q/y)\n * - \"now/w\", \"now/M\", \"now/q\", \"now/y\" with optional calendar offsets\n * - any value parseable by `parseTimestamp` (ISO, epoch ms/s, Date)\n * Returns null for unparseable input.\n */\nexport function resolveDateMath(value: unknown, now: Date = new Date()): Date | null {\n if (value == null) return null;\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n if (trimmed.toLowerCase() === \"now\") return new Date(now.getTime());\n\n const anchoredMatch = trimmed.match(ANCHORED_PATTERN);\n if (anchoredMatch) {\n const [, anchor, sign, amount, unit] = anchoredMatch;\n let anchored = startOfPeriod(now, anchor!);\n if (sign && amount && unit) {\n anchored = addPeriod(anchored, unit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n return anchored;\n }\n\n const match = trimmed.match(RELATIVE_PATTERN);\n if (match) {\n const [, sign, amount, unit] = match;\n const calendarUnit = unit!;\n if (isCalendarUnit(calendarUnit)) {\n return addPeriod(now, calendarUnit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n const unitMs = UNIT_MS[calendarUnit.toLowerCase()];\n if (!unitMs) return null;\n const delta = Number(amount) * unitMs * (sign === \"-\" ? -1 : 1);\n return new Date(now.getTime() + delta);\n }\n }\n\n return parseTimestamp(value);\n}\n\nfunction isCalendarUnit(unit: string) {\n return unit === \"M\" || unit === \"q\" || unit === \"y\";\n}\n\nfunction startOfPeriod(date: Date, unit: string) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const day = date.getUTCDate();\n\n if (unit === \"w\") {\n const start = new Date(Date.UTC(year, month, day));\n const dayOfWeek = start.getUTCDay();\n const daysSinceMonday = (dayOfWeek + 6) % 7;\n start.setUTCDate(start.getUTCDate() - daysSinceMonday);\n return start;\n }\n if (unit === \"M\") return new Date(Date.UTC(year, month, 1));\n if (unit === \"q\") return new Date(Date.UTC(year, Math.floor(month / 3) * 3, 1));\n if (unit === \"y\") return new Date(Date.UTC(year, 0, 1));\n return new Date(date.getTime());\n}\n\nfunction addPeriod(date: Date, unit: string, amount: number) {\n const next = new Date(date.getTime());\n if (unit === \"w\") {\n next.setUTCDate(next.getUTCDate() + amount * 7);\n } else if (unit === \"M\") {\n next.setUTCMonth(next.getUTCMonth() + amount);\n } else if (unit === \"q\") {\n next.setUTCMonth(next.getUTCMonth() + amount * 3);\n } else if (unit === \"y\") {\n next.setUTCFullYear(next.getUTCFullYear() + amount);\n } else {\n const unitMs = UNIT_MS[unit.toLowerCase()];\n if (unitMs) next.setTime(next.getTime() + amount * unitMs);\n }\n return next;\n}\n\nconst MS_PER_MINUTE = 60_000;\nconst MS_PER_DAY = 86_400_000;\n\nexport function chooseTimestampFormat(values: Date[]): TimestampFormat {\n if (values.length === 0) return \"iso\";\n\n let min = Infinity;\n let max = -Infinity;\n for (const d of values) {\n const t = d.getTime();\n if (t < min) min = t;\n if (t > max) max = t;\n }\n const span = max - min;\n\n if (span <= MS_PER_MINUTE) return \"relative\";\n\n const minDate = new Date(min);\n const maxDate = new Date(max);\n\n if (\n minDate.getFullYear() === maxDate.getFullYear() &&\n minDate.getMonth() === maxDate.getMonth() &&\n minDate.getDate() === maxDate.getDate()\n ) {\n return \"time\";\n }\n\n if (minDate.getFullYear() === maxDate.getFullYear() && span <= MS_PER_DAY * 365) {\n return \"short\";\n }\n\n return \"iso\";\n}\n\nexport function formatTimestamp(\n date: Date,\n format: TimestampFormat,\n now: Date = new Date(),\n): string {\n switch (format) {\n case \"relative\":\n return formatRelative(date, now);\n case \"time\":\n return date.toLocaleTimeString(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n case \"short\":\n return date.toLocaleString(undefined, {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n case \"iso\":\n default:\n return formatIso(date);\n }\n}\n\nfunction formatIso(date: Date): string {\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const hh = String(date.getHours()).padStart(2, \"0\");\n const min = String(date.getMinutes()).padStart(2, \"0\");\n return `${yyyy}-${mm}-${dd} ${hh}:${min}`;\n}\n\nfunction formatRelative(date: Date, now: Date): string {\n const diffMs = now.getTime() - date.getTime();\n const future = diffMs < 0;\n const abs = Math.abs(diffMs);\n const sec = Math.round(abs / 1000);\n\n let value: string;\n if (sec < 1) value = \"just now\";\n else if (sec < 60) value = `${sec}s`;\n else if (sec < 3600) value = `${Math.round(sec / 60)}m`;\n else if (sec < 86400) value = `${Math.round(sec / 3600)}h`;\n else value = `${Math.round(sec / 86400)}d`;\n\n if (value === \"just now\") return value;\n return future ? `in ${value}` : `${value} ago`;\n}\n\nexport function modeToFormat(mode: TimestampMode, dataFormat: TimestampFormat): TimestampFormat {\n switch (mode) {\n case \"absolute\":\n return \"iso\";\n case \"relative\":\n return \"relative\";\n case \"time\":\n return \"time\";\n case \"auto\":\n default:\n return dataFormat;\n }\n}\n\nexport type TimestampProps = {\n value: unknown;\n format: TimestampFormat;\n showTitleOnHover?: boolean;\n className?: string;\n};\n\nexport function Timestamp({ value, format, showTitleOnHover = true, className }: TimestampProps) {\n const parsed = parseTimestamp(value);\n if (!parsed) return <span className={cn(\"text-muted-foreground\", className)}>—</span>;\n\n const display = formatTimestamp(parsed, format);\n const title = showTitleOnHover ? parsed.toISOString() : undefined;\n\n return (\n <span\n className={cn(\"tabular-nums whitespace-nowrap text-muted-foreground\", className)}\n title={title}\n >\n {display}\n </span>\n );\n}\n"],"names":["jsx","cn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Timestamp.cjs","sources":["../../../src/data/cells/Timestamp.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport type { TimeRangePresetGroup } from \"../../components/TimeRange\";\n\nexport type TimestampMode = \"auto\" | \"absolute\" | \"relative\" | \"time\";\n\nexport type TimestampFormat = \"relative\" | \"time\" | \"short\" | \"iso\";\n\nexport type TimestampOptions = {\n /** Rendering mode for timestamp cells. */\n mode?: TimestampMode;\n /** Show the full timestamp in a tooltip even for absolute/ISO formats. */\n alwaysShowFullOnHover?: boolean;\n /**\n * When the column is on a DataTable with `autoFilter`, DataTable mounts a\n * \"Time range\" picker (matching the trace UI) and filters rows whose\n * timestamp falls outside the selected range. Set `false` to suppress.\n */\n autoRangeFilter?: boolean;\n /** Override the trace-style preset list (\"Last 15 minutes\", etc.). */\n rangePresets?: Array<{ label: string; from: string; to: string } | TimeRangePresetGroup>;\n /** Enable absolute date+time input and timezone selection for range filters. */\n timeEnabled?: boolean;\n /** Default timezone used when encoding absolute date+time range values. */\n timeZone?: string;\n /** Selectable timezones shown when `timeEnabled` is true. */\n timeZones?: string[];\n /**\n * Default range applied on first render. Either side may use date-math\n * (`now-24h`, `now`) or any value parseable by `parseTimestamp`.\n */\n defaultRange?: { from?: string; to?: string };\n};\n\nexport function parseTimestamp(value: unknown): Date | null {\n if (value == null) return null;\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n\n if (typeof value === \"number\") {\n const ms = value < 1e12 ? value * 1000 : value;\n const d = new Date(ms);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const d = new Date(trimmed);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n return null;\n}\n\nconst UNIT_MS: Record<string, number> = {\n s: 1_000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n w: 604_800_000,\n};\n\nconst RELATIVE_PATTERN = /^now\\s*([+-])\\s*(\\d+)\\s*([smhdwMqy])$/;\nconst ANCHORED_PATTERN = /^now\\/([wMqy])(?:\\s*([+-])\\s*(\\d+)\\s*([wMqy]))?$/;\n\n/**\n * Resolves date-math strings to an absolute Date. Recognised forms:\n * - \"now\"\n * - \"now-15m\", \"now-1h\", \"now+30s\", \"now-7d\", \"now-2w\" (units: s/m/h/d/w/M/q/y)\n * - \"now/w\", \"now/M\", \"now/q\", \"now/y\" with optional calendar offsets\n * - any value parseable by `parseTimestamp` (ISO, epoch ms/s, Date)\n * Returns null for unparseable input.\n */\nexport function resolveDateMath(value: unknown, now: Date = new Date()): Date | null {\n if (value == null) return null;\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n if (trimmed.toLowerCase() === \"now\") return new Date(now.getTime());\n\n const anchoredMatch = trimmed.match(ANCHORED_PATTERN);\n if (anchoredMatch) {\n const [, anchor, sign, amount, unit] = anchoredMatch;\n let anchored = startOfPeriod(now, anchor!);\n if (sign && amount && unit) {\n anchored = addPeriod(anchored, unit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n return anchored;\n }\n\n const match = trimmed.match(RELATIVE_PATTERN);\n if (match) {\n const [, sign, amount, unit] = match;\n const calendarUnit = unit!;\n if (isCalendarUnit(calendarUnit)) {\n return addPeriod(now, calendarUnit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n const unitMs = UNIT_MS[calendarUnit.toLowerCase()];\n if (!unitMs) return null;\n const delta = Number(amount) * unitMs * (sign === \"-\" ? -1 : 1);\n return new Date(now.getTime() + delta);\n }\n }\n\n return parseTimestamp(value);\n}\n\nfunction isCalendarUnit(unit: string) {\n return unit === \"M\" || unit === \"q\" || unit === \"y\";\n}\n\nfunction startOfPeriod(date: Date, unit: string) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const day = date.getUTCDate();\n\n if (unit === \"w\") {\n const start = new Date(Date.UTC(year, month, day));\n const dayOfWeek = start.getUTCDay();\n const daysSinceMonday = (dayOfWeek + 6) % 7;\n start.setUTCDate(start.getUTCDate() - daysSinceMonday);\n return start;\n }\n if (unit === \"M\") return new Date(Date.UTC(year, month, 1));\n if (unit === \"q\") return new Date(Date.UTC(year, Math.floor(month / 3) * 3, 1));\n if (unit === \"y\") return new Date(Date.UTC(year, 0, 1));\n return new Date(date.getTime());\n}\n\nfunction addPeriod(date: Date, unit: string, amount: number) {\n const next = new Date(date.getTime());\n if (unit === \"w\") {\n next.setUTCDate(next.getUTCDate() + amount * 7);\n } else if (unit === \"M\") {\n next.setUTCMonth(next.getUTCMonth() + amount);\n } else if (unit === \"q\") {\n next.setUTCMonth(next.getUTCMonth() + amount * 3);\n } else if (unit === \"y\") {\n next.setUTCFullYear(next.getUTCFullYear() + amount);\n } else {\n const unitMs = UNIT_MS[unit.toLowerCase()];\n if (unitMs) next.setTime(next.getTime() + amount * unitMs);\n }\n return next;\n}\n\nconst MS_PER_MINUTE = 60_000;\nconst MS_PER_DAY = 86_400_000;\n\nexport function chooseTimestampFormat(values: Date[]): TimestampFormat {\n if (values.length === 0) return \"iso\";\n\n let min = Infinity;\n let max = -Infinity;\n for (const d of values) {\n const t = d.getTime();\n if (t < min) min = t;\n if (t > max) max = t;\n }\n const span = max - min;\n\n if (span <= MS_PER_MINUTE) return \"relative\";\n\n const minDate = new Date(min);\n const maxDate = new Date(max);\n\n if (\n minDate.getFullYear() === maxDate.getFullYear() &&\n minDate.getMonth() === maxDate.getMonth() &&\n minDate.getDate() === maxDate.getDate()\n ) {\n return \"time\";\n }\n\n if (minDate.getFullYear() === maxDate.getFullYear() && span <= MS_PER_DAY * 365) {\n return \"short\";\n }\n\n return \"iso\";\n}\n\nexport function formatTimestamp(\n date: Date,\n format: TimestampFormat,\n now: Date = new Date(),\n): string {\n switch (format) {\n case \"relative\":\n return formatRelativeTime(date, now);\n case \"time\":\n return date.toLocaleTimeString(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n case \"short\":\n return date.toLocaleString(undefined, {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n case \"iso\":\n default:\n return formatIso(date);\n }\n}\n\nfunction formatIso(date: Date): string {\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const hh = String(date.getHours()).padStart(2, \"0\");\n const min = String(date.getMinutes()).padStart(2, \"0\");\n return `${yyyy}-${mm}-${dd} ${hh}:${min}`;\n}\n\n// formatRelativeTime renders a compact \"30s ago\" / \"in 5m\" / \"just now\" string.\nexport function formatRelativeTime(date: Date, now: Date = new Date()): string {\n const diffMs = now.getTime() - date.getTime();\n const future = diffMs < 0;\n const abs = Math.abs(diffMs);\n const sec = Math.round(abs / 1000);\n\n let value: string;\n if (sec < 1) value = \"just now\";\n else if (sec < 60) value = `${sec}s`;\n else if (sec < 3600) value = `${Math.round(sec / 60)}m`;\n else if (sec < 86400) value = `${Math.round(sec / 3600)}h`;\n else value = `${Math.round(sec / 86400)}d`;\n\n if (value === \"just now\") return value;\n return future ? `in ${value}` : `${value} ago`;\n}\n\n// formatDateTimeRelative renders a value as an absolute locale date+time plus a\n// parenthesised relative hint, e.g. \"Apr 15, 2026, 12:00 PM (2h ago)\". It is the\n// shared \"locale + relative\" presentation used for date-typed values across the\n// form, filter, and combobox surfaces. Unparseable strings pass through\n// unchanged (so a template token or freeform value is preserved); nullish input\n// yields an empty string. The hint is dropped when the value reads \"just now\".\nexport function formatDateTimeRelative(value: unknown, now: Date = new Date()): string {\n const parsed = parseTimestamp(value);\n if (!parsed) return typeof value === \"string\" ? value : \"\";\n const absolute = parsed.toLocaleString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n const relative = formatRelativeTime(parsed, now);\n return relative === \"just now\" ? absolute : `${absolute} (${relative})`;\n}\n\nexport function modeToFormat(mode: TimestampMode, dataFormat: TimestampFormat): TimestampFormat {\n switch (mode) {\n case \"absolute\":\n return \"iso\";\n case \"relative\":\n return \"relative\";\n case \"time\":\n return \"time\";\n case \"auto\":\n default:\n return dataFormat;\n }\n}\n\nexport type TimestampProps = {\n value: unknown;\n format: TimestampFormat;\n showTitleOnHover?: boolean;\n className?: string;\n};\n\nexport function Timestamp({ value, format, showTitleOnHover = true, className }: TimestampProps) {\n const parsed = parseTimestamp(value);\n if (!parsed) return <span className={cn(\"text-muted-foreground\", className)}>—</span>;\n\n const display = formatTimestamp(parsed, format);\n const title = showTitleOnHover ? parsed.toISOString() : undefined;\n\n return (\n <span\n className={cn(\"tabular-nums whitespace-nowrap text-muted-foreground\", className)}\n title={title}\n >\n {display}\n </span>\n );\n}\n"],"names":["jsx","cn"],"mappings":";;;;AAiCO,SAAS,eAAe,OAA6B;AAC1D,MAAI,SAAS,KAAM,QAAO;AAC1B,MAAI,iBAAiB,KAAM,QAAO,OAAO,MAAM,MAAM,QAAA,CAAS,IAAI,OAAO;AAEzE,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,KAAK,QAAQ,OAAO,QAAQ,MAAO;AACzC,UAAM,IAAI,IAAI,KAAK,EAAE;AACrB,WAAO,OAAO,MAAM,EAAE,QAAA,CAAS,IAAI,OAAO;AAAA,EAC5C;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,UAAU,MAAM,KAAA;AACtB,QAAI,CAAC,QAAS,QAAO;AACrB,UAAM,IAAI,IAAI,KAAK,OAAO;AAC1B,WAAO,OAAO,MAAM,EAAE,QAAA,CAAS,IAAI,OAAO;AAAA,EAC5C;AAEA,SAAO;AACT;AAEA,MAAM,UAAkC;AAAA,EACtC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AAUlB,SAAS,gBAAgB,OAAgB,MAAY,oBAAI,QAAqB;AACnF,MAAI,SAAS,KAAM,QAAO;AAE1B,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,UAAU,MAAM,KAAA;AACtB,QAAI,CAAC,QAAS,QAAO;AAErB,QAAI,QAAQ,kBAAkB,cAAc,IAAI,KAAK,IAAI,SAAS;AAElE,UAAM,gBAAgB,QAAQ,MAAM,gBAAgB;AACpD,QAAI,eAAe;AACjB,YAAM,CAAA,EAAG,QAAQ,MAAM,QAAQ,IAAI,IAAI;AACvC,UAAI,WAAW,cAAc,KAAK,MAAO;AACzC,UAAI,QAAQ,UAAU,MAAM;AAC1B,mBAAW,UAAU,UAAU,MAAM,OAAO,MAAM,KAAK,SAAS,MAAM,KAAK,EAAE;AAAA,MAC/E;AACA,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,QAAQ,MAAM,gBAAgB;AAC5C,QAAI,OAAO;AACT,YAAM,GAAG,MAAM,QAAQ,IAAI,IAAI;AAC/B,YAAM,eAAe;AACrB,UAAI,eAAe,YAAY,GAAG;AAChC,eAAO,UAAU,KAAK,cAAc,OAAO,MAAM,KAAK,SAAS,MAAM,KAAK,EAAE;AAAA,MAC9E;AACA,YAAM,SAAS,QAAQ,aAAa,YAAA,CAAa;AACjD,UAAI,CAAC,OAAQ,QAAO;AACpB,YAAM,QAAQ,OAAO,MAAM,IAAI,UAAU,SAAS,MAAM,KAAK;AAC7D,aAAO,IAAI,KAAK,IAAI,QAAA,IAAY,KAAK;AAAA,IACvC;AAAA,EACF;AAEA,SAAO,eAAe,KAAK;AAC7B;AAEA,SAAS,eAAe,MAAc;AACpC,SAAO,SAAS,OAAO,SAAS,OAAO,SAAS;AAClD;AAEA,SAAS,cAAc,MAAY,MAAc;AAC/C,QAAM,OAAO,KAAK,eAAA;AAClB,QAAM,QAAQ,KAAK,YAAA;AACnB,QAAM,MAAM,KAAK,WAAA;AAEjB,MAAI,SAAS,KAAK;AAChB,UAAM,QAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,GAAG,CAAC;AACjD,UAAM,YAAY,MAAM,UAAA;AACxB,UAAM,mBAAmB,YAAY,KAAK;AAC1C,UAAM,WAAW,MAAM,WAAA,IAAe,eAAe;AACrD,WAAO;AAAA,EACT;AACA,MAAI,SAAS,IAAK,QAAO,IAAI,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC,CAAC;AAC1D,MAAI,SAAS,IAAK,QAAO,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AAC9E,MAAI,SAAS,IAAK,QAAO,IAAI,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;AACtD,SAAO,IAAI,KAAK,KAAK,SAAS;AAChC;AAEA,SAAS,UAAU,MAAY,MAAc,QAAgB;AAC3D,QAAM,OAAO,IAAI,KAAK,KAAK,SAAS;AACpC,MAAI,SAAS,KAAK;AAChB,SAAK,WAAW,KAAK,WAAA,IAAe,SAAS,CAAC;AAAA,EAChD,WAAW,SAAS,KAAK;AACvB,SAAK,YAAY,KAAK,YAAA,IAAgB,MAAM;AAAA,EAC9C,WAAW,SAAS,KAAK;AACvB,SAAK,YAAY,KAAK,YAAA,IAAgB,SAAS,CAAC;AAAA,EAClD,WAAW,SAAS,KAAK;AACvB,SAAK,eAAe,KAAK,eAAA,IAAmB,MAAM;AAAA,EACpD,OAAO;AACL,UAAM,SAAS,QAAQ,KAAK,YAAA,CAAa;AACzC,QAAI,OAAQ,MAAK,QAAQ,KAAK,QAAA,IAAY,SAAS,MAAM;AAAA,EAC3D;AACA,SAAO;AACT;AAEA,MAAM,gBAAgB;AACtB,MAAM,aAAa;AAEZ,SAAS,sBAAsB,QAAiC;AACrE,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,MAAI,MAAM;AACV,MAAI,MAAM;AACV,aAAW,KAAK,QAAQ;AACtB,UAAM,IAAI,EAAE,QAAA;AACZ,QAAI,IAAI,IAAK,OAAM;AACnB,QAAI,IAAI,IAAK,OAAM;AAAA,EACrB;AACA,QAAM,OAAO,MAAM;AAEnB,MAAI,QAAQ,cAAe,QAAO;AAElC,QAAM,UAAU,IAAI,KAAK,GAAG;AAC5B,QAAM,UAAU,IAAI,KAAK,GAAG;AAE5B,MACE,QAAQ,YAAA,MAAkB,QAAQ,YAAA,KAClC,QAAQ,SAAA,MAAe,QAAQ,cAC/B,QAAQ,cAAc,QAAQ,WAC9B;AACA,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,kBAAkB,QAAQ,iBAAiB,QAAQ,aAAa,KAAK;AAC/E,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,gBACd,MACA,QACA,MAAY,oBAAI,QACR;AACR,UAAQ,QAAA;AAAA,IACN,KAAK;AACH,aAAO,mBAAmB,MAAM,GAAG;AAAA,IACrC,KAAK;AACH,aAAO,KAAK,mBAAmB,QAAW;AAAA,QACxC,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA,CACT;AAAA,IACH,KAAK;AACH,aAAO,KAAK,eAAe,QAAW;AAAA,QACpC,OAAO;AAAA,QACP,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA,CACT;AAAA,IACH,KAAK;AAAA,IACL;AACE,aAAO,UAAU,IAAI;AAAA,EAAA;AAE3B;AAEA,SAAS,UAAU,MAAoB;AACrC,QAAM,OAAO,KAAK,YAAA;AAClB,QAAM,KAAK,OAAO,KAAK,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG;AACtD,QAAM,KAAK,OAAO,KAAK,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,KAAK,OAAO,KAAK,SAAA,CAAU,EAAE,SAAS,GAAG,GAAG;AAClD,QAAM,MAAM,OAAO,KAAK,WAAA,CAAY,EAAE,SAAS,GAAG,GAAG;AACrD,SAAO,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG;AACzC;AAGO,SAAS,mBAAmB,MAAY,MAAY,oBAAI,QAAgB;AAC7E,QAAM,SAAS,IAAI,QAAA,IAAY,KAAK,QAAA;AACpC,QAAM,SAAS,SAAS;AACxB,QAAM,MAAM,KAAK,IAAI,MAAM;AAC3B,QAAM,MAAM,KAAK,MAAM,MAAM,GAAI;AAEjC,MAAI;AACJ,MAAI,MAAM,EAAG,SAAQ;AAAA,WACZ,MAAM,GAAI,SAAQ,GAAG,GAAG;AAAA,WACxB,MAAM,KAAM,SAAQ,GAAG,KAAK,MAAM,MAAM,EAAE,CAAC;AAAA,WAC3C,MAAM,MAAO,SAAQ,GAAG,KAAK,MAAM,MAAM,IAAI,CAAC;AAAA,eAC1C,GAAG,KAAK,MAAM,MAAM,KAAK,CAAC;AAEvC,MAAI,UAAU,WAAY,QAAO;AACjC,SAAO,SAAS,MAAM,KAAK,KAAK,GAAG,KAAK;AAC1C;AAQO,SAAS,uBAAuB,OAAgB,MAAY,oBAAI,QAAgB;AACrF,QAAM,SAAS,eAAe,KAAK;AACnC,MAAI,CAAC,OAAQ,QAAO,OAAO,UAAU,WAAW,QAAQ;AACxD,QAAM,WAAW,OAAO,eAAe,QAAW;AAAA,IAChD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA,CACT;AACD,QAAM,WAAW,mBAAmB,QAAQ,GAAG;AAC/C,SAAO,aAAa,aAAa,WAAW,GAAG,QAAQ,KAAK,QAAQ;AACtE;AAEO,SAAS,aAAa,MAAqB,YAA8C;AAC9F,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EAAA;AAEb;AASO,SAAS,UAAU,EAAE,OAAO,QAAQ,mBAAmB,MAAM,aAA6B;AAC/F,QAAM,SAAS,eAAe,KAAK;AACnC,MAAI,CAAC,OAAQ,QAAOA,2BAAAA,IAAC,QAAA,EAAK,WAAWC,MAAAA,GAAG,yBAAyB,SAAS,GAAG,UAAA,IAAA,CAAC;AAE9E,QAAM,UAAU,gBAAgB,QAAQ,MAAM;AAC9C,QAAM,QAAQ,mBAAmB,OAAO,YAAA,IAAgB;AAExD,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAAA,GAAG,wDAAwD,SAAS;AAAA,MAC/E;AAAA,MAEC,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;;;;;;;;;"}
|
|
@@ -45,6 +45,8 @@ export declare function parseTimestamp(value: unknown): Date | null;
|
|
|
45
45
|
export declare function resolveDateMath(value: unknown, now?: Date): Date | null;
|
|
46
46
|
export declare function chooseTimestampFormat(values: Date[]): TimestampFormat;
|
|
47
47
|
export declare function formatTimestamp(date: Date, format: TimestampFormat, now?: Date): string;
|
|
48
|
+
export declare function formatRelativeTime(date: Date, now?: Date): string;
|
|
49
|
+
export declare function formatDateTimeRelative(value: unknown, now?: Date): string;
|
|
48
50
|
export declare function modeToFormat(mode: TimestampMode, dataFormat: TimestampFormat): TimestampFormat;
|
|
49
51
|
export type TimestampProps = {
|
|
50
52
|
value: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.d.ts","sourceRoot":"","sources":["../../../src/data/cells/Timestamp.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,CAAC,CAAC;IACzF,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAkB1D;AAaD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,IAAiB,GAAG,IAAI,GAAG,IAAI,CAkCnF;AA4CD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CA8BrE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,IAAiB,GACrB,MAAM,CAqBR;
|
|
1
|
+
{"version":3,"file":"Timestamp.d.ts","sourceRoot":"","sources":["../../../src/data/cells/Timestamp.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,CAAC,CAAC;IACzF,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAkB1D;AAaD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,IAAiB,GAAG,IAAI,GAAG,IAAI,CAkCnF;AA4CD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CA8BrE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,IAAiB,GACrB,MAAM,CAqBR;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAe7E;AAQD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAYrF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,GAAG,eAAe,CAY9F;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAuB,EAAE,SAAS,EAAE,EAAE,cAAc,2CAe9F"}
|
|
@@ -116,7 +116,7 @@ function chooseTimestampFormat(values) {
|
|
|
116
116
|
function formatTimestamp(date, format, now = /* @__PURE__ */ new Date()) {
|
|
117
117
|
switch (format) {
|
|
118
118
|
case "relative":
|
|
119
|
-
return
|
|
119
|
+
return formatRelativeTime(date, now);
|
|
120
120
|
case "time":
|
|
121
121
|
return date.toLocaleTimeString(void 0, {
|
|
122
122
|
hour: "2-digit",
|
|
@@ -143,7 +143,7 @@ function formatIso(date) {
|
|
|
143
143
|
const min = String(date.getMinutes()).padStart(2, "0");
|
|
144
144
|
return `${yyyy}-${mm}-${dd} ${hh}:${min}`;
|
|
145
145
|
}
|
|
146
|
-
function
|
|
146
|
+
function formatRelativeTime(date, now = /* @__PURE__ */ new Date()) {
|
|
147
147
|
const diffMs = now.getTime() - date.getTime();
|
|
148
148
|
const future = diffMs < 0;
|
|
149
149
|
const abs = Math.abs(diffMs);
|
|
@@ -157,6 +157,19 @@ function formatRelative(date, now) {
|
|
|
157
157
|
if (value === "just now") return value;
|
|
158
158
|
return future ? `in ${value}` : `${value} ago`;
|
|
159
159
|
}
|
|
160
|
+
function formatDateTimeRelative(value, now = /* @__PURE__ */ new Date()) {
|
|
161
|
+
const parsed = parseTimestamp(value);
|
|
162
|
+
if (!parsed) return typeof value === "string" ? value : "";
|
|
163
|
+
const absolute = parsed.toLocaleString(void 0, {
|
|
164
|
+
year: "numeric",
|
|
165
|
+
month: "short",
|
|
166
|
+
day: "numeric",
|
|
167
|
+
hour: "2-digit",
|
|
168
|
+
minute: "2-digit"
|
|
169
|
+
});
|
|
170
|
+
const relative = formatRelativeTime(parsed, now);
|
|
171
|
+
return relative === "just now" ? absolute : `${absolute} (${relative})`;
|
|
172
|
+
}
|
|
160
173
|
function modeToFormat(mode, dataFormat) {
|
|
161
174
|
switch (mode) {
|
|
162
175
|
case "absolute":
|
|
@@ -187,6 +200,8 @@ function Timestamp({ value, format, showTitleOnHover = true, className }) {
|
|
|
187
200
|
export {
|
|
188
201
|
Timestamp,
|
|
189
202
|
chooseTimestampFormat,
|
|
203
|
+
formatDateTimeRelative,
|
|
204
|
+
formatRelativeTime,
|
|
190
205
|
formatTimestamp,
|
|
191
206
|
modeToFormat,
|
|
192
207
|
parseTimestamp,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.js","sources":["../../../src/data/cells/Timestamp.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport type { TimeRangePresetGroup } from \"../../components/TimeRange\";\n\nexport type TimestampMode = \"auto\" | \"absolute\" | \"relative\" | \"time\";\n\nexport type TimestampFormat = \"relative\" | \"time\" | \"short\" | \"iso\";\n\nexport type TimestampOptions = {\n /** Rendering mode for timestamp cells. */\n mode?: TimestampMode;\n /** Show the full timestamp in a tooltip even for absolute/ISO formats. */\n alwaysShowFullOnHover?: boolean;\n /**\n * When the column is on a DataTable with `autoFilter`, DataTable mounts a\n * \"Time range\" picker (matching the trace UI) and filters rows whose\n * timestamp falls outside the selected range. Set `false` to suppress.\n */\n autoRangeFilter?: boolean;\n /** Override the trace-style preset list (\"Last 15 minutes\", etc.). */\n rangePresets?: Array<{ label: string; from: string; to: string } | TimeRangePresetGroup>;\n /** Enable absolute date+time input and timezone selection for range filters. */\n timeEnabled?: boolean;\n /** Default timezone used when encoding absolute date+time range values. */\n timeZone?: string;\n /** Selectable timezones shown when `timeEnabled` is true. */\n timeZones?: string[];\n /**\n * Default range applied on first render. Either side may use date-math\n * (`now-24h`, `now`) or any value parseable by `parseTimestamp`.\n */\n defaultRange?: { from?: string; to?: string };\n};\n\nexport function parseTimestamp(value: unknown): Date | null {\n if (value == null) return null;\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n\n if (typeof value === \"number\") {\n const ms = value < 1e12 ? value * 1000 : value;\n const d = new Date(ms);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const d = new Date(trimmed);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n return null;\n}\n\nconst UNIT_MS: Record<string, number> = {\n s: 1_000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n w: 604_800_000,\n};\n\nconst RELATIVE_PATTERN = /^now\\s*([+-])\\s*(\\d+)\\s*([smhdwMqy])$/;\nconst ANCHORED_PATTERN = /^now\\/([wMqy])(?:\\s*([+-])\\s*(\\d+)\\s*([wMqy]))?$/;\n\n/**\n * Resolves date-math strings to an absolute Date. Recognised forms:\n * - \"now\"\n * - \"now-15m\", \"now-1h\", \"now+30s\", \"now-7d\", \"now-2w\" (units: s/m/h/d/w/M/q/y)\n * - \"now/w\", \"now/M\", \"now/q\", \"now/y\" with optional calendar offsets\n * - any value parseable by `parseTimestamp` (ISO, epoch ms/s, Date)\n * Returns null for unparseable input.\n */\nexport function resolveDateMath(value: unknown, now: Date = new Date()): Date | null {\n if (value == null) return null;\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n if (trimmed.toLowerCase() === \"now\") return new Date(now.getTime());\n\n const anchoredMatch = trimmed.match(ANCHORED_PATTERN);\n if (anchoredMatch) {\n const [, anchor, sign, amount, unit] = anchoredMatch;\n let anchored = startOfPeriod(now, anchor!);\n if (sign && amount && unit) {\n anchored = addPeriod(anchored, unit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n return anchored;\n }\n\n const match = trimmed.match(RELATIVE_PATTERN);\n if (match) {\n const [, sign, amount, unit] = match;\n const calendarUnit = unit!;\n if (isCalendarUnit(calendarUnit)) {\n return addPeriod(now, calendarUnit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n const unitMs = UNIT_MS[calendarUnit.toLowerCase()];\n if (!unitMs) return null;\n const delta = Number(amount) * unitMs * (sign === \"-\" ? -1 : 1);\n return new Date(now.getTime() + delta);\n }\n }\n\n return parseTimestamp(value);\n}\n\nfunction isCalendarUnit(unit: string) {\n return unit === \"M\" || unit === \"q\" || unit === \"y\";\n}\n\nfunction startOfPeriod(date: Date, unit: string) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const day = date.getUTCDate();\n\n if (unit === \"w\") {\n const start = new Date(Date.UTC(year, month, day));\n const dayOfWeek = start.getUTCDay();\n const daysSinceMonday = (dayOfWeek + 6) % 7;\n start.setUTCDate(start.getUTCDate() - daysSinceMonday);\n return start;\n }\n if (unit === \"M\") return new Date(Date.UTC(year, month, 1));\n if (unit === \"q\") return new Date(Date.UTC(year, Math.floor(month / 3) * 3, 1));\n if (unit === \"y\") return new Date(Date.UTC(year, 0, 1));\n return new Date(date.getTime());\n}\n\nfunction addPeriod(date: Date, unit: string, amount: number) {\n const next = new Date(date.getTime());\n if (unit === \"w\") {\n next.setUTCDate(next.getUTCDate() + amount * 7);\n } else if (unit === \"M\") {\n next.setUTCMonth(next.getUTCMonth() + amount);\n } else if (unit === \"q\") {\n next.setUTCMonth(next.getUTCMonth() + amount * 3);\n } else if (unit === \"y\") {\n next.setUTCFullYear(next.getUTCFullYear() + amount);\n } else {\n const unitMs = UNIT_MS[unit.toLowerCase()];\n if (unitMs) next.setTime(next.getTime() + amount * unitMs);\n }\n return next;\n}\n\nconst MS_PER_MINUTE = 60_000;\nconst MS_PER_DAY = 86_400_000;\n\nexport function chooseTimestampFormat(values: Date[]): TimestampFormat {\n if (values.length === 0) return \"iso\";\n\n let min = Infinity;\n let max = -Infinity;\n for (const d of values) {\n const t = d.getTime();\n if (t < min) min = t;\n if (t > max) max = t;\n }\n const span = max - min;\n\n if (span <= MS_PER_MINUTE) return \"relative\";\n\n const minDate = new Date(min);\n const maxDate = new Date(max);\n\n if (\n minDate.getFullYear() === maxDate.getFullYear() &&\n minDate.getMonth() === maxDate.getMonth() &&\n minDate.getDate() === maxDate.getDate()\n ) {\n return \"time\";\n }\n\n if (minDate.getFullYear() === maxDate.getFullYear() && span <= MS_PER_DAY * 365) {\n return \"short\";\n }\n\n return \"iso\";\n}\n\nexport function formatTimestamp(\n date: Date,\n format: TimestampFormat,\n now: Date = new Date(),\n): string {\n switch (format) {\n case \"relative\":\n return formatRelative(date, now);\n case \"time\":\n return date.toLocaleTimeString(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n case \"short\":\n return date.toLocaleString(undefined, {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n case \"iso\":\n default:\n return formatIso(date);\n }\n}\n\nfunction formatIso(date: Date): string {\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const hh = String(date.getHours()).padStart(2, \"0\");\n const min = String(date.getMinutes()).padStart(2, \"0\");\n return `${yyyy}-${mm}-${dd} ${hh}:${min}`;\n}\n\nfunction formatRelative(date: Date, now: Date): string {\n const diffMs = now.getTime() - date.getTime();\n const future = diffMs < 0;\n const abs = Math.abs(diffMs);\n const sec = Math.round(abs / 1000);\n\n let value: string;\n if (sec < 1) value = \"just now\";\n else if (sec < 60) value = `${sec}s`;\n else if (sec < 3600) value = `${Math.round(sec / 60)}m`;\n else if (sec < 86400) value = `${Math.round(sec / 3600)}h`;\n else value = `${Math.round(sec / 86400)}d`;\n\n if (value === \"just now\") return value;\n return future ? `in ${value}` : `${value} ago`;\n}\n\nexport function modeToFormat(mode: TimestampMode, dataFormat: TimestampFormat): TimestampFormat {\n switch (mode) {\n case \"absolute\":\n return \"iso\";\n case \"relative\":\n return \"relative\";\n case \"time\":\n return \"time\";\n case \"auto\":\n default:\n return dataFormat;\n }\n}\n\nexport type TimestampProps = {\n value: unknown;\n format: TimestampFormat;\n showTitleOnHover?: boolean;\n className?: string;\n};\n\nexport function Timestamp({ value, format, showTitleOnHover = true, className }: TimestampProps) {\n const parsed = parseTimestamp(value);\n if (!parsed) return <span className={cn(\"text-muted-foreground\", className)}>—</span>;\n\n const display = formatTimestamp(parsed, format);\n const title = showTitleOnHover ? parsed.toISOString() : undefined;\n\n return (\n <span\n className={cn(\"tabular-nums whitespace-nowrap text-muted-foreground\", className)}\n title={title}\n >\n {display}\n </span>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Timestamp.js","sources":["../../../src/data/cells/Timestamp.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport type { TimeRangePresetGroup } from \"../../components/TimeRange\";\n\nexport type TimestampMode = \"auto\" | \"absolute\" | \"relative\" | \"time\";\n\nexport type TimestampFormat = \"relative\" | \"time\" | \"short\" | \"iso\";\n\nexport type TimestampOptions = {\n /** Rendering mode for timestamp cells. */\n mode?: TimestampMode;\n /** Show the full timestamp in a tooltip even for absolute/ISO formats. */\n alwaysShowFullOnHover?: boolean;\n /**\n * When the column is on a DataTable with `autoFilter`, DataTable mounts a\n * \"Time range\" picker (matching the trace UI) and filters rows whose\n * timestamp falls outside the selected range. Set `false` to suppress.\n */\n autoRangeFilter?: boolean;\n /** Override the trace-style preset list (\"Last 15 minutes\", etc.). */\n rangePresets?: Array<{ label: string; from: string; to: string } | TimeRangePresetGroup>;\n /** Enable absolute date+time input and timezone selection for range filters. */\n timeEnabled?: boolean;\n /** Default timezone used when encoding absolute date+time range values. */\n timeZone?: string;\n /** Selectable timezones shown when `timeEnabled` is true. */\n timeZones?: string[];\n /**\n * Default range applied on first render. Either side may use date-math\n * (`now-24h`, `now`) or any value parseable by `parseTimestamp`.\n */\n defaultRange?: { from?: string; to?: string };\n};\n\nexport function parseTimestamp(value: unknown): Date | null {\n if (value == null) return null;\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n\n if (typeof value === \"number\") {\n const ms = value < 1e12 ? value * 1000 : value;\n const d = new Date(ms);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const d = new Date(trimmed);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n\n return null;\n}\n\nconst UNIT_MS: Record<string, number> = {\n s: 1_000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n w: 604_800_000,\n};\n\nconst RELATIVE_PATTERN = /^now\\s*([+-])\\s*(\\d+)\\s*([smhdwMqy])$/;\nconst ANCHORED_PATTERN = /^now\\/([wMqy])(?:\\s*([+-])\\s*(\\d+)\\s*([wMqy]))?$/;\n\n/**\n * Resolves date-math strings to an absolute Date. Recognised forms:\n * - \"now\"\n * - \"now-15m\", \"now-1h\", \"now+30s\", \"now-7d\", \"now-2w\" (units: s/m/h/d/w/M/q/y)\n * - \"now/w\", \"now/M\", \"now/q\", \"now/y\" with optional calendar offsets\n * - any value parseable by `parseTimestamp` (ISO, epoch ms/s, Date)\n * Returns null for unparseable input.\n */\nexport function resolveDateMath(value: unknown, now: Date = new Date()): Date | null {\n if (value == null) return null;\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n if (trimmed.toLowerCase() === \"now\") return new Date(now.getTime());\n\n const anchoredMatch = trimmed.match(ANCHORED_PATTERN);\n if (anchoredMatch) {\n const [, anchor, sign, amount, unit] = anchoredMatch;\n let anchored = startOfPeriod(now, anchor!);\n if (sign && amount && unit) {\n anchored = addPeriod(anchored, unit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n return anchored;\n }\n\n const match = trimmed.match(RELATIVE_PATTERN);\n if (match) {\n const [, sign, amount, unit] = match;\n const calendarUnit = unit!;\n if (isCalendarUnit(calendarUnit)) {\n return addPeriod(now, calendarUnit, Number(amount) * (sign === \"-\" ? -1 : 1));\n }\n const unitMs = UNIT_MS[calendarUnit.toLowerCase()];\n if (!unitMs) return null;\n const delta = Number(amount) * unitMs * (sign === \"-\" ? -1 : 1);\n return new Date(now.getTime() + delta);\n }\n }\n\n return parseTimestamp(value);\n}\n\nfunction isCalendarUnit(unit: string) {\n return unit === \"M\" || unit === \"q\" || unit === \"y\";\n}\n\nfunction startOfPeriod(date: Date, unit: string) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const day = date.getUTCDate();\n\n if (unit === \"w\") {\n const start = new Date(Date.UTC(year, month, day));\n const dayOfWeek = start.getUTCDay();\n const daysSinceMonday = (dayOfWeek + 6) % 7;\n start.setUTCDate(start.getUTCDate() - daysSinceMonday);\n return start;\n }\n if (unit === \"M\") return new Date(Date.UTC(year, month, 1));\n if (unit === \"q\") return new Date(Date.UTC(year, Math.floor(month / 3) * 3, 1));\n if (unit === \"y\") return new Date(Date.UTC(year, 0, 1));\n return new Date(date.getTime());\n}\n\nfunction addPeriod(date: Date, unit: string, amount: number) {\n const next = new Date(date.getTime());\n if (unit === \"w\") {\n next.setUTCDate(next.getUTCDate() + amount * 7);\n } else if (unit === \"M\") {\n next.setUTCMonth(next.getUTCMonth() + amount);\n } else if (unit === \"q\") {\n next.setUTCMonth(next.getUTCMonth() + amount * 3);\n } else if (unit === \"y\") {\n next.setUTCFullYear(next.getUTCFullYear() + amount);\n } else {\n const unitMs = UNIT_MS[unit.toLowerCase()];\n if (unitMs) next.setTime(next.getTime() + amount * unitMs);\n }\n return next;\n}\n\nconst MS_PER_MINUTE = 60_000;\nconst MS_PER_DAY = 86_400_000;\n\nexport function chooseTimestampFormat(values: Date[]): TimestampFormat {\n if (values.length === 0) return \"iso\";\n\n let min = Infinity;\n let max = -Infinity;\n for (const d of values) {\n const t = d.getTime();\n if (t < min) min = t;\n if (t > max) max = t;\n }\n const span = max - min;\n\n if (span <= MS_PER_MINUTE) return \"relative\";\n\n const minDate = new Date(min);\n const maxDate = new Date(max);\n\n if (\n minDate.getFullYear() === maxDate.getFullYear() &&\n minDate.getMonth() === maxDate.getMonth() &&\n minDate.getDate() === maxDate.getDate()\n ) {\n return \"time\";\n }\n\n if (minDate.getFullYear() === maxDate.getFullYear() && span <= MS_PER_DAY * 365) {\n return \"short\";\n }\n\n return \"iso\";\n}\n\nexport function formatTimestamp(\n date: Date,\n format: TimestampFormat,\n now: Date = new Date(),\n): string {\n switch (format) {\n case \"relative\":\n return formatRelativeTime(date, now);\n case \"time\":\n return date.toLocaleTimeString(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n });\n case \"short\":\n return date.toLocaleString(undefined, {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n case \"iso\":\n default:\n return formatIso(date);\n }\n}\n\nfunction formatIso(date: Date): string {\n const yyyy = date.getFullYear();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const hh = String(date.getHours()).padStart(2, \"0\");\n const min = String(date.getMinutes()).padStart(2, \"0\");\n return `${yyyy}-${mm}-${dd} ${hh}:${min}`;\n}\n\n// formatRelativeTime renders a compact \"30s ago\" / \"in 5m\" / \"just now\" string.\nexport function formatRelativeTime(date: Date, now: Date = new Date()): string {\n const diffMs = now.getTime() - date.getTime();\n const future = diffMs < 0;\n const abs = Math.abs(diffMs);\n const sec = Math.round(abs / 1000);\n\n let value: string;\n if (sec < 1) value = \"just now\";\n else if (sec < 60) value = `${sec}s`;\n else if (sec < 3600) value = `${Math.round(sec / 60)}m`;\n else if (sec < 86400) value = `${Math.round(sec / 3600)}h`;\n else value = `${Math.round(sec / 86400)}d`;\n\n if (value === \"just now\") return value;\n return future ? `in ${value}` : `${value} ago`;\n}\n\n// formatDateTimeRelative renders a value as an absolute locale date+time plus a\n// parenthesised relative hint, e.g. \"Apr 15, 2026, 12:00 PM (2h ago)\". It is the\n// shared \"locale + relative\" presentation used for date-typed values across the\n// form, filter, and combobox surfaces. Unparseable strings pass through\n// unchanged (so a template token or freeform value is preserved); nullish input\n// yields an empty string. The hint is dropped when the value reads \"just now\".\nexport function formatDateTimeRelative(value: unknown, now: Date = new Date()): string {\n const parsed = parseTimestamp(value);\n if (!parsed) return typeof value === \"string\" ? value : \"\";\n const absolute = parsed.toLocaleString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n const relative = formatRelativeTime(parsed, now);\n return relative === \"just now\" ? absolute : `${absolute} (${relative})`;\n}\n\nexport function modeToFormat(mode: TimestampMode, dataFormat: TimestampFormat): TimestampFormat {\n switch (mode) {\n case \"absolute\":\n return \"iso\";\n case \"relative\":\n return \"relative\";\n case \"time\":\n return \"time\";\n case \"auto\":\n default:\n return dataFormat;\n }\n}\n\nexport type TimestampProps = {\n value: unknown;\n format: TimestampFormat;\n showTitleOnHover?: boolean;\n className?: string;\n};\n\nexport function Timestamp({ value, format, showTitleOnHover = true, className }: TimestampProps) {\n const parsed = parseTimestamp(value);\n if (!parsed) return <span className={cn(\"text-muted-foreground\", className)}>—</span>;\n\n const display = formatTimestamp(parsed, format);\n const title = showTitleOnHover ? parsed.toISOString() : undefined;\n\n return (\n <span\n className={cn(\"tabular-nums whitespace-nowrap text-muted-foreground\", className)}\n title={title}\n >\n {display}\n </span>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function asRecord(value) {
|
|
4
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
5
|
+
}
|
|
6
|
+
exports.asRecord = asRecord;
|
|
7
|
+
//# sourceMappingURL=log-utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-utils.cjs","sources":["../../src/data/log-utils.ts"],"sourcesContent":["export function asRecord(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n"],"names":[],"mappings":";;AAAO,SAAS,SAAS,OAAqD;AAC5E,SAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC5D,QACD;AACN;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-utils.d.ts","sourceRoot":"","sources":["../../src/data/log-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAI5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-utils.js","sources":["../../src/data/log-utils.ts"],"sourcesContent":["export function asRecord(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n"],"names":[],"mappings":"AAAO,SAAS,SAAS,OAAqD;AAC5E,SAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC5D,QACD;AACN;"}
|
package/dist/data.cjs
CHANGED
|
@@ -319,6 +319,8 @@ exports.DataTable = DataTable.DataTable;
|
|
|
319
319
|
exports.inferColumns = DataTable.inferColumns;
|
|
320
320
|
exports.Timestamp = Timestamp.Timestamp;
|
|
321
321
|
exports.chooseTimestampFormat = Timestamp.chooseTimestampFormat;
|
|
322
|
+
exports.formatDateTimeRelative = Timestamp.formatDateTimeRelative;
|
|
323
|
+
exports.formatRelativeTime = Timestamp.formatRelativeTime;
|
|
322
324
|
exports.formatTimestamp = Timestamp.formatTimestamp;
|
|
323
325
|
exports.modeToFormat = Timestamp.modeToFormat;
|
|
324
326
|
exports.parseTimestamp = Timestamp.parseTimestamp;
|
|
@@ -338,6 +340,7 @@ exports.FilterPillGroup = FilterPill.FilterPillGroup;
|
|
|
338
340
|
exports.FilterSeparator = FilterPill.FilterSeparator;
|
|
339
341
|
exports.Gauge = Gauge.Gauge;
|
|
340
342
|
exports.Icon = Icon.Icon;
|
|
343
|
+
exports.LabelIcon = Icon.LabelIcon;
|
|
341
344
|
exports.setFallbackIconProvider = Icon.setFallbackIconProvider;
|
|
342
345
|
exports.JsonView = JsonView.JsonView;
|
|
343
346
|
exports.KeyValueList = KeyValueList.KeyValueList;
|
package/dist/data.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/data.d.ts
CHANGED
|
@@ -4,13 +4,13 @@ export { AvatarBadge, type AvatarBadgeProps } from './data/AvatarBadge';
|
|
|
4
4
|
export { Badge, badgeVariants, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeStatus, type BadgeTone, type BadgeTruncate, type BadgeVariant, } from './data/Badge';
|
|
5
5
|
export { CodeBlock, type CodeBlockProps } from './data/CodeBlock';
|
|
6
6
|
export { DataTable, inferColumns, type DataTableColumn, type DataTableColumnInput, type DataTableColumnKind, type DataTableProps, type StatusOptions, type TagsOptions, type TimestampOptions, } from './data/DataTable';
|
|
7
|
-
export { Timestamp, chooseTimestampFormat, formatTimestamp, parseTimestamp, modeToFormat, type TimestampFormat, type TimestampMode, type TimestampProps, } from './data/cells/Timestamp';
|
|
7
|
+
export { Timestamp, chooseTimestampFormat, formatDateTimeRelative, formatRelativeTime, formatTimestamp, parseTimestamp, modeToFormat, type TimestampFormat, type TimestampMode, type TimestampProps, } from './data/cells/Timestamp';
|
|
8
8
|
export { TagActionsProvider, TagList, normalizeTags, splitTagToken, tagActionsFromRecord, tagFilterTokens, useTagActions, useTagActionsValue, type NormalizedTag, type TagActionsContextValue, type TagFilterMode, type TagInput, type TagListProps, type TagsValue, } from './data/cells/TagList';
|
|
9
9
|
export { StatusDot, type StatusDotProps, type StatusDotSize } from './data/cells/StatusDot';
|
|
10
10
|
export { normalizeStatus, STATUS_TOKEN_GROUPS } from './data/cells/status-mapping';
|
|
11
11
|
export { FilterPill, FilterPillGroup, FilterSeparator, type FilterPillProps, type FilterPillGroupProps, type FilterMode, } from './data/FilterPill';
|
|
12
12
|
export { Gauge, type GaugeProps, type GaugeTone } from './data/Gauge';
|
|
13
|
-
export { Icon, setFallbackIconProvider, type FallbackIconProps, type IconProps, type IconStyle, type IconTone, type StaticIconComponent, } from './data/Icon';
|
|
13
|
+
export { Icon, LabelIcon, setFallbackIconProvider, type FallbackIconProps, type IconProps, type IconStyle, type IconTone, type LabelIconSpec, type StaticIconComponent, } from './data/Icon';
|
|
14
14
|
export * from './icons';
|
|
15
15
|
export { JsonView, type JsonViewProps } from './data/JsonView';
|
|
16
16
|
export { KeyValueList, type KeyValueListItem, type KeyValueListProps } from './data/KeyValueList';
|
package/dist/data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
|
package/dist/data.js
CHANGED
|
@@ -4,13 +4,13 @@ import { AvatarBadge } from "./data/AvatarBadge.js";
|
|
|
4
4
|
import { Badge, badgeVariants } from "./data/Badge.js";
|
|
5
5
|
import { CodeBlock } from "./data/CodeBlock.js";
|
|
6
6
|
import { DataTable, inferColumns } from "./data/DataTable.js";
|
|
7
|
-
import { Timestamp, chooseTimestampFormat, formatTimestamp, modeToFormat, parseTimestamp } from "./data/cells/Timestamp.js";
|
|
7
|
+
import { Timestamp, chooseTimestampFormat, formatDateTimeRelative, formatRelativeTime, formatTimestamp, modeToFormat, parseTimestamp } from "./data/cells/Timestamp.js";
|
|
8
8
|
import { TagActionsProvider, TagList, normalizeTags, splitTagToken, tagActionsFromRecord, tagFilterTokens, useTagActions, useTagActionsValue } from "./data/cells/TagList.js";
|
|
9
9
|
import { StatusDot } from "./data/cells/StatusDot.js";
|
|
10
10
|
import { STATUS_TOKEN_GROUPS, normalizeStatus } from "./data/cells/status-mapping.js";
|
|
11
11
|
import { FilterPill, FilterPillGroup, FilterSeparator } from "./data/FilterPill.js";
|
|
12
12
|
import { Gauge } from "./data/Gauge.js";
|
|
13
|
-
import { Icon, setFallbackIconProvider } from "./data/Icon.js";
|
|
13
|
+
import { Icon, LabelIcon, setFallbackIconProvider } from "./data/Icon.js";
|
|
14
14
|
import { JsonView } from "./data/JsonView.js";
|
|
15
15
|
import { KeyValueList } from "./data/KeyValueList.js";
|
|
16
16
|
import { Properties } from "./data/Properties.js";
|
|
@@ -329,6 +329,7 @@ export {
|
|
|
329
329
|
JvmStackFrameRow,
|
|
330
330
|
JvmStackTrace,
|
|
331
331
|
KeyValueList,
|
|
332
|
+
LabelIcon,
|
|
332
333
|
LogViewer,
|
|
333
334
|
LogsTable,
|
|
334
335
|
Markdown,
|
|
@@ -858,7 +859,9 @@ export {
|
|
|
858
859
|
deriveCoreBars,
|
|
859
860
|
detectDumpFormat,
|
|
860
861
|
findProcessByPID,
|
|
862
|
+
formatDateTimeRelative,
|
|
861
863
|
formatPropertyLabel,
|
|
864
|
+
formatRelativeTime,
|
|
862
865
|
formatTimestamp,
|
|
863
866
|
frameHasSource,
|
|
864
867
|
getChangeIcon,
|
package/dist/index.cjs
CHANGED
|
@@ -24,6 +24,8 @@ const Combobox = require("./components/Combobox.cjs");
|
|
|
24
24
|
const themeSwitcher = require("./components/theme-switcher.cjs");
|
|
25
25
|
const densitySwitcher = require("./components/density-switcher.cjs");
|
|
26
26
|
const iconMenuPicker = require("./components/icon-menu-picker.cjs");
|
|
27
|
+
const JsonSchemaForm = require("./components/JsonSchemaForm.cjs");
|
|
28
|
+
const jsonSchemaFormResolve = require("./components/json-schema-form-resolve.cjs");
|
|
27
29
|
const SplitPane = require("./layout/SplitPane.cjs");
|
|
28
30
|
const Section = require("./layout/Section.cjs");
|
|
29
31
|
const DropdownMenu = require("./overlay/DropdownMenu.cjs");
|
|
@@ -91,6 +93,7 @@ const OperationEntityPage = require("./rpc/OperationEntityPage.cjs");
|
|
|
91
93
|
const OperationCommandPage = require("./rpc/OperationCommandPage.cjs");
|
|
92
94
|
const EndpointList = require("./rpc/EndpointList.cjs");
|
|
93
95
|
const useOperations = require("./rpc/useOperations.cjs");
|
|
96
|
+
const apiClient = require("./rpc/apiClient.cjs");
|
|
94
97
|
const classify = require("./rpc/classify.cjs");
|
|
95
98
|
const types = require("./rpc/types.cjs");
|
|
96
99
|
const UiActivity = require("./icons/components/UiActivity.cjs");
|
|
@@ -392,6 +395,11 @@ exports.Combobox = Combobox.Combobox;
|
|
|
392
395
|
exports.ThemeSwitcher = themeSwitcher.ThemeSwitcher;
|
|
393
396
|
exports.DensitySwitcher = densitySwitcher.DensitySwitcher;
|
|
394
397
|
exports.IconMenuPicker = iconMenuPicker.IconMenuPicker;
|
|
398
|
+
exports.JsonSchemaForm = JsonSchemaForm.JsonSchemaForm;
|
|
399
|
+
exports.effectiveProperties = jsonSchemaFormResolve.effectiveProperties;
|
|
400
|
+
exports.isOpenStringMap = jsonSchemaFormResolve.isOpenStringMap;
|
|
401
|
+
exports.matchesIf = jsonSchemaFormResolve.matchesIf;
|
|
402
|
+
exports.resolveControl = jsonSchemaFormResolve.resolveControl;
|
|
395
403
|
exports.SplitPane = SplitPane.SplitPane;
|
|
396
404
|
exports.DetailEmptyState = Section.DetailEmptyState;
|
|
397
405
|
exports.Section = Section.Section;
|
|
@@ -408,6 +416,8 @@ exports.DataTable = DataTable.DataTable;
|
|
|
408
416
|
exports.inferColumns = DataTable.inferColumns;
|
|
409
417
|
exports.Timestamp = Timestamp.Timestamp;
|
|
410
418
|
exports.chooseTimestampFormat = Timestamp.chooseTimestampFormat;
|
|
419
|
+
exports.formatDateTimeRelative = Timestamp.formatDateTimeRelative;
|
|
420
|
+
exports.formatRelativeTime = Timestamp.formatRelativeTime;
|
|
411
421
|
exports.formatTimestamp = Timestamp.formatTimestamp;
|
|
412
422
|
exports.modeToFormat = Timestamp.modeToFormat;
|
|
413
423
|
exports.parseTimestamp = Timestamp.parseTimestamp;
|
|
@@ -427,6 +437,7 @@ exports.FilterPillGroup = FilterPill.FilterPillGroup;
|
|
|
427
437
|
exports.FilterSeparator = FilterPill.FilterSeparator;
|
|
428
438
|
exports.Gauge = Gauge.Gauge;
|
|
429
439
|
exports.Icon = Icon.Icon;
|
|
440
|
+
exports.LabelIcon = Icon.LabelIcon;
|
|
430
441
|
exports.setFallbackIconProvider = Icon.setFallbackIconProvider;
|
|
431
442
|
exports.JsonView = JsonView.JsonView;
|
|
432
443
|
exports.KeyValueList = KeyValueList.KeyValueList;
|
|
@@ -512,6 +523,8 @@ exports.EndpointList = EndpointList.EndpointList;
|
|
|
512
523
|
exports.useOpenAPI = useOperations.useOpenAPI;
|
|
513
524
|
exports.useOperationById = useOperations.useOperationById;
|
|
514
525
|
exports.useOperations = useOperations.useOperations;
|
|
526
|
+
exports.OperationsApiClientError = apiClient.OperationsApiClientError;
|
|
527
|
+
exports.createOperationsApiClient = apiClient.createOperationsApiClient;
|
|
515
528
|
exports.filterOperationsByDomain = classify.filterOperationsByDomain;
|
|
516
529
|
exports.findDetailEndpoint = classify.findDetailEndpoint;
|
|
517
530
|
exports.findListEndpoint = classify.findListEndpoint;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,8 @@ import { Combobox } from "./components/Combobox.js";
|
|
|
22
22
|
import { ThemeSwitcher } from "./components/theme-switcher.js";
|
|
23
23
|
import { DensitySwitcher } from "./components/density-switcher.js";
|
|
24
24
|
import { IconMenuPicker } from "./components/icon-menu-picker.js";
|
|
25
|
+
import { JsonSchemaForm } from "./components/JsonSchemaForm.js";
|
|
26
|
+
import { effectiveProperties, isOpenStringMap, matchesIf, resolveControl } from "./components/json-schema-form-resolve.js";
|
|
25
27
|
import { SplitPane } from "./layout/SplitPane.js";
|
|
26
28
|
import { DetailEmptyState, Section } from "./layout/Section.js";
|
|
27
29
|
import { DropdownMenu } from "./overlay/DropdownMenu.js";
|
|
@@ -33,13 +35,13 @@ import { AvatarBadge } from "./data/AvatarBadge.js";
|
|
|
33
35
|
import { Badge, badgeVariants } from "./data/Badge.js";
|
|
34
36
|
import { CodeBlock } from "./data/CodeBlock.js";
|
|
35
37
|
import { DataTable, inferColumns } from "./data/DataTable.js";
|
|
36
|
-
import { Timestamp, chooseTimestampFormat, formatTimestamp, modeToFormat, parseTimestamp } from "./data/cells/Timestamp.js";
|
|
38
|
+
import { Timestamp, chooseTimestampFormat, formatDateTimeRelative, formatRelativeTime, formatTimestamp, modeToFormat, parseTimestamp } from "./data/cells/Timestamp.js";
|
|
37
39
|
import { TagActionsProvider, TagList, normalizeTags, splitTagToken, tagActionsFromRecord, tagFilterTokens, useTagActions, useTagActionsValue } from "./data/cells/TagList.js";
|
|
38
40
|
import { StatusDot } from "./data/cells/StatusDot.js";
|
|
39
41
|
import { STATUS_TOKEN_GROUPS, normalizeStatus } from "./data/cells/status-mapping.js";
|
|
40
42
|
import { FilterPill, FilterPillGroup, FilterSeparator } from "./data/FilterPill.js";
|
|
41
43
|
import { Gauge } from "./data/Gauge.js";
|
|
42
|
-
import { Icon, setFallbackIconProvider } from "./data/Icon.js";
|
|
44
|
+
import { Icon, LabelIcon, setFallbackIconProvider } from "./data/Icon.js";
|
|
43
45
|
import { JsonView } from "./data/JsonView.js";
|
|
44
46
|
import { KeyValueList } from "./data/KeyValueList.js";
|
|
45
47
|
import { Properties } from "./data/Properties.js";
|
|
@@ -89,6 +91,7 @@ import { OperationEntityPage } from "./rpc/OperationEntityPage.js";
|
|
|
89
91
|
import { OperationCommandPage } from "./rpc/OperationCommandPage.js";
|
|
90
92
|
import { EndpointList } from "./rpc/EndpointList.js";
|
|
91
93
|
import { useOpenAPI, useOperationById, useOperations } from "./rpc/useOperations.js";
|
|
94
|
+
import { OperationsApiClientError, createOperationsApiClient } from "./rpc/apiClient.js";
|
|
92
95
|
import { filterOperationsByDomain, findDetailEndpoint, findListEndpoint, normalizeRows, parseJsonBody } from "./rpc/classify.js";
|
|
93
96
|
import { isPositionalParam } from "./rpc/types.js";
|
|
94
97
|
import { UiActivity } from "./icons/components/UiActivity.js";
|
|
@@ -395,10 +398,12 @@ export {
|
|
|
395
398
|
Icon,
|
|
396
399
|
IconMenuPicker,
|
|
397
400
|
InlineError,
|
|
401
|
+
JsonSchemaForm,
|
|
398
402
|
JsonView,
|
|
399
403
|
JvmStackFrameRow,
|
|
400
404
|
JvmStackTrace,
|
|
401
405
|
KeyValueList,
|
|
406
|
+
LabelIcon,
|
|
402
407
|
LogViewer,
|
|
403
408
|
LogsTable,
|
|
404
409
|
Markdown,
|
|
@@ -410,6 +415,7 @@ export {
|
|
|
410
415
|
OperationCatalog,
|
|
411
416
|
OperationCommandPage,
|
|
412
417
|
OperationEntityPage,
|
|
418
|
+
OperationsApiClientError,
|
|
413
419
|
PrettyStackTrace,
|
|
414
420
|
ProgressBar,
|
|
415
421
|
Properties,
|
|
@@ -943,8 +949,10 @@ export {
|
|
|
943
949
|
countProcesses,
|
|
944
950
|
countStackByState,
|
|
945
951
|
countThreadsByState,
|
|
952
|
+
createOperationsApiClient,
|
|
946
953
|
deriveCoreBars,
|
|
947
954
|
detectDumpFormat,
|
|
955
|
+
effectiveProperties,
|
|
948
956
|
filterOperationsByDomain,
|
|
949
957
|
findDetailEndpoint,
|
|
950
958
|
findListEndpoint,
|
|
@@ -952,8 +960,10 @@ export {
|
|
|
952
960
|
fnv1a32,
|
|
953
961
|
formatBytes,
|
|
954
962
|
formatBytesPerSecond,
|
|
963
|
+
formatDateTimeRelative,
|
|
955
964
|
formatDuration,
|
|
956
965
|
formatPropertyLabel,
|
|
966
|
+
formatRelativeTime,
|
|
957
967
|
formatShort,
|
|
958
968
|
formatTimestamp,
|
|
959
969
|
formatUnit,
|
|
@@ -961,9 +971,11 @@ export {
|
|
|
961
971
|
getChangeIcon,
|
|
962
972
|
inferColumns,
|
|
963
973
|
isApplicationStackFrame,
|
|
974
|
+
isOpenStringMap,
|
|
964
975
|
isPositionalParam,
|
|
965
976
|
isTerminalStatus,
|
|
966
977
|
logLevelColor,
|
|
978
|
+
matchesIf,
|
|
967
979
|
modeToFormat,
|
|
968
980
|
normalizeErrorDiagnostics,
|
|
969
981
|
normalizeLogsTableRows,
|
|
@@ -983,6 +995,7 @@ export {
|
|
|
983
995
|
processStateColor,
|
|
984
996
|
processStateIcon,
|
|
985
997
|
resolveBreakdown,
|
|
998
|
+
resolveControl,
|
|
986
999
|
resolveSeries,
|
|
987
1000
|
resolveSize,
|
|
988
1001
|
segment,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -246,7 +246,8 @@ function UnknownSurface({ surfaceKey }) {
|
|
|
246
246
|
/* @__PURE__ */ jsxRuntime.jsx("code", { children: surfaceKey })
|
|
247
247
|
] });
|
|
248
248
|
}
|
|
249
|
-
const AUTORUN_QUERY_PARAM = "
|
|
249
|
+
const AUTORUN_QUERY_PARAM = "autoRun";
|
|
250
|
+
const LEGACY_AUTORUN_QUERY_PARAM = "__autoRun";
|
|
250
251
|
const ARG_QUERY_PREFIX = "__arg";
|
|
251
252
|
function buildCommandHref(basePath, resolved) {
|
|
252
253
|
var _a, _b;
|
|
@@ -335,7 +336,7 @@ function readCommandQueryParams() {
|
|
|
335
336
|
let autoRun = false;
|
|
336
337
|
const positional = [];
|
|
337
338
|
for (const [key, value] of search.entries()) {
|
|
338
|
-
if (key === AUTORUN_QUERY_PARAM) {
|
|
339
|
+
if (key === AUTORUN_QUERY_PARAM || key === LEGACY_AUTORUN_QUERY_PARAM) {
|
|
339
340
|
autoRun = value === "1" || value === "true";
|
|
340
341
|
continue;
|
|
341
342
|
}
|