{
  "version": 3,
  "sources": ["../../src/document/crdt/useIsCrdt.ts", "../../src/document/components/chrome/DebugLoadingPerf.tsx", "../../src/document/components/chrome/DebugLoadingPerf.styles.ts"],
  "sourcesContent": ["import { EngineChange } from \"document/EngineChanges.ts\"\nimport { useEngineState } from \"document/useEngineState.ts\"\nimport { useAndAssertVekterEngine } from \"document/useVekterEngine.ts\"\n\nexport function useIsCrdt(): boolean {\n\tconst engine = useAndAssertVekterEngine()\n\treturn useEngineState(() => engine.stores.treeStore.mode === \"crdt\", [engine], EngineChange.TreeStore)\n}\n", "import { IconClose } from \"@framerjs/fresco\"\nimport { assert } from \"@framerjs/shared\"\nimport { cx } from \"@linaria/core\"\nimport type React from \"react\"\nimport { useEffect, useMemo, useState } from \"react\"\nimport {\n\tloadingStartTime,\n\tMARK_LABELS,\n\tperfEmitter,\n\ttype DynamicMark,\n\ttype LoadingInfo,\n\ttype LoadingSource,\n\ttype Mark,\n} from \"utils/performanceTracker.ts\"\nimport * as styles from \"./DebugLoadingPerf.styles.ts\"\n\nexport const debugLoadingQueryParam = \"__debugGlobalLoading\"\n\nexport let forceShowLoadingDebug = new URLSearchParams(window.location.search).has(debugLoadingQueryParam)\n\nconst removeForceShowDebugLoading = () => {\n\tconst url = new URL(window.location.href)\n\turl.searchParams.delete(debugLoadingQueryParam)\n\tforceShowLoadingDebug = false\n\twindow.history.replaceState(window.history.state, \"\", url.toString())\n}\n\nfunction humanBytes(bytes: number): string {\n\tif (bytes < 1024) return `${bytes} B`\n\tif (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n\treturn `${(bytes / 1024 / 1024).toFixed(2)} MB`\n}\n\nconst STRATEGY_LABELS: Record<LoadingInfo[\"strategy\"], string> = {\n\tincremental: \"Incremental (cached + updates)\",\n\tsnapshot: \"Snapshot (full download via sync)\",\n\t\"up-to-date\": \"Up-to-date (fully cached)\",\n\t\"full-load\": \"Full load (no cache)\",\n}\n\nconst SOURCE_LABELS: Record<LoadingSource, string> = {\n\t\"prefetch-sync\": \"Prefetch Sync\",\n\t\"prefetch-tree\": \"Prefetch Tree\",\n\tsync: \"Sync\",\n\t\"tree-download\": \"Tree Download\",\n\t\"loaded-data\": \"Loaded Data\",\n}\n\n/** When a mark is at or past this % of the bar, draw its inline label to the left of the tick. */\nconst TIMELINE_LABEL_FLIP_PCT_THRESHOLD = 88\n\nfunction parseTimelinePct(leftPct: string): number {\n\tconst n = Number.parseFloat(leftPct)\n\treturn Number.isFinite(n) ? n : 0\n}\n\ninterface NavigationDerivedMarks {\n\tpageLoadStart: number\n\tinitialRequestStart?: number\n\tfirstByte?: number\n\t/** `requestStart - startTime` on the navigation entry (ms from navigation start). */\n\trequestStartFromNavigationMs: number\n\t/** `responseStart - startTime` on the navigation entry (ms from navigation start to first byte). */\n\tresponseStartFromNavigationMs: number\n}\n\nfunction readNavigationEntry(): PerformanceNavigationTiming | undefined {\n\tconst navigation = performance.getEntriesByType(\"navigation\")[0]\n\tif (!(navigation instanceof PerformanceNavigationTiming)) return undefined\n\treturn navigation\n}\n\nfunction timelineMarkClassNames(ms: number): { tick: string; label: string } {\n\tconst negative = ms < 0\n\treturn {\n\t\ttick: negative ? styles.timelineTickNegative : styles.timelineTick,\n\t\tlabel: negative ? styles.markLabelInlineNegative : styles.markLabelInline,\n\t}\n}\n\n/** Navigation / Resource Timing milestones (yellow, distinct from client perf marks). */\nconst serverTimelineMarkClassNames = {\n\ttick: styles.timelineTickServer,\n\tlabel: styles.markLabelInlineServer,\n} as const\n\nfunction TimelineMilestone(props: {\n\tleftPct: string\n\ttickClass: string\n\tlabelClass: string\n\tchildren: React.ReactNode\n}) {\n\tconst flipLabel = parseTimelinePct(props.leftPct) >= TIMELINE_LABEL_FLIP_PCT_THRESHOLD\n\treturn (\n\t\t<div className={styles.timelineMarkAnchor} style={{ left: props.leftPct }}>\n\t\t\t<div className={cx(styles.timelineMarkTick, props.tickClass)} />\n\t\t\t<div\n\t\t\t\tclassName={cx(\n\t\t\t\t\tprops.labelClass,\n\t\t\t\t\tflipLabel ? styles.markLabelPositionBeforeTick : styles.markLabelPositionAfterTick,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport const DebugLoadingPerf = () => {\n\tconst [marks, setMetrics] = useState<[name: Mark, timestamp: number][]>([])\n\tconst [dynamicMarks, setDynamicMarks] = useState<DynamicMark[]>([])\n\tconst [loadingInfo, setLoadingInfo] = useState<LoadingInfo | undefined>()\n\tconst [wsInitialUpdates, setWsInitialUpdates] = useState<number | undefined>()\n\tconst [isHidden, setHidden] = useState(false)\n\n\tuseEffect(() => {\n\t\tif (!perfEmitter) return\n\t\tconst marksHandler = () => {\n\t\t\tassert(perfEmitter)\n\t\t\tconst sortedMarks = Object.entries(perfEmitter?.currentMarks()) as [Mark, number][]\n\t\t\tsortedMarks.sort(([, a], [, b]) => a - b)\n\t\t\tsetMetrics(sortedMarks)\n\t\t}\n\t\tconst dynamicMarksHandler = () => {\n\t\t\tassert(perfEmitter)\n\t\t\tconst sortedDynamicMarks = perfEmitter.currentDynamicMarks().sort((a, b) => a.value - b.value)\n\t\t\tsetDynamicMarks(sortedDynamicMarks)\n\t\t}\n\t\tconst infoHandler = (info: LoadingInfo) => setLoadingInfo(info)\n\t\tconst wsInitHandler = (count: number) => setWsInitialUpdates(count)\n\n\t\tperfEmitter?.on(\"performance:mark\", marksHandler)\n\t\tperfEmitter?.on(\"performance:dynamicMark\", dynamicMarksHandler)\n\t\tperfEmitter?.on(\"loading:info\", infoHandler)\n\t\tperfEmitter?.on(\"ws:init\", wsInitHandler)\n\n\t\treturn () => {\n\t\t\tperfEmitter?.off(\"performance:mark\", marksHandler)\n\t\t\tperfEmitter?.off(\"performance:dynamicMark\", dynamicMarksHandler)\n\t\t\tperfEmitter?.off(\"loading:info\", infoHandler)\n\t\t\tperfEmitter?.off(\"ws:init\", wsInitHandler)\n\t\t}\n\t}, [])\n\n\tconst navigationDerived = useMemo<NavigationDerivedMarks | undefined>(() => {\n\t\tif (marks.length === 0) return undefined\n\n\t\tconst navigation = readNavigationEntry()\n\t\tif (!navigation) return undefined\n\n\t\tconst navStart = navigation.startTime\n\t\tconst pageLoadStart = navStart - loadingStartTime\n\t\tconst initialRequestStart = navigation.requestStart - loadingStartTime\n\t\tconst firstByte = navigation.responseStart - loadingStartTime\n\t\tconst requestStartFromNavigationMs = navigation.requestStart - navStart\n\t\tconst responseStartFromNavigationMs = navigation.responseStart - navStart\n\n\t\treturn {\n\t\t\tpageLoadStart,\n\t\t\tinitialRequestStart,\n\t\t\tfirstByte,\n\t\t\trequestStartFromNavigationMs,\n\t\t\tresponseStartFromNavigationMs,\n\t\t}\n\t}, [marks])\n\n\tconst { totalDuration, minDuration, timeMarkers, timelineRange } = useMemo(() => {\n\t\tconst latestStaticMark = marks[marks.length - 1]?.[1] ?? 0\n\t\tconst latestDynamicMark = dynamicMarks[dynamicMarks.length - 1]?.value ?? 0\n\t\tconst totalDuration = Math.max(latestStaticMark, latestDynamicMark)\n\t\tconst navCandidates: number[] = []\n\t\tif (navigationDerived) {\n\t\t\tnavCandidates.push(navigationDerived.pageLoadStart)\n\t\t\tif (navigationDerived.initialRequestStart !== undefined) navCandidates.push(navigationDerived.initialRequestStart)\n\t\t\tif (navigationDerived.firstByte !== undefined) navCandidates.push(navigationDerived.firstByte)\n\t\t}\n\t\tconst minDuration = navCandidates.length > 0 ? Math.min(0, ...navCandidates) : 0\n\t\tconst timeMarkers = [] as React.ReactNode[]\n\t\tconst range = totalDuration - minDuration\n\n\t\tif (range > 0) {\n\t\t\tconst step = Math.max(200, Math.ceil(range / 5 / 100) * 100)\n\t\t\tconst firstTick = Math.floor(minDuration / step) * step\n\n\t\t\tfor (let time = firstTick; time <= totalDuration; time += step) {\n\t\t\t\tconst positionP = Math.min(100, Math.max(0, ((time - minDuration) / range) * 100))\n\t\t\t\tconst position = `${positionP}%`\n\t\t\t\tconst edgeAxis = positionP >= TIMELINE_LABEL_FLIP_PCT_THRESHOLD\n\t\t\t\ttimeMarkers.push(\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={time}\n\t\t\t\t\t\tclassName={cx(styles.timeMarkerGroup, edgeAxis && styles.timeMarkerGroupEdge)}\n\t\t\t\t\t\tstyle={{ left: position }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={styles.timeLabel}>{time}ms</div>\n\t\t\t\t\t\t<div className={styles.timeAxisTick} />\n\t\t\t\t\t</div>,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tconst timelineRange = totalDuration - minDuration\n\n\t\treturn {\n\t\t\ttotalDuration,\n\t\t\tminDuration,\n\t\t\ttimeMarkers,\n\t\t\ttimelineRange,\n\t\t}\n\t}, [marks, dynamicMarks, navigationDerived])\n\n\tif (!perfEmitter) return\n\tif (isHidden) return\n\n\tconst handleClose = () => {\n\t\tsetHidden(true)\n\t\tremoveForceShowDebugLoading()\n\t}\n\n\tconst title = (\n\t\t<div className={styles.titleContainer}>\n\t\t\t<h3 style={{ margin: 0 }}>Loading Performance Events</h3>\n\t\t\t<button onClick={handleClose} type=\"button\" className={styles.closeButton}>\n\t\t\t\t<IconClose />\n\t\t\t</button>\n\t\t</div>\n\t)\n\n\tif (Object.keys(marks).length === 0) {\n\t\treturn (\n\t\t\t<div className={styles.debugLoadingBarsContainer}>\n\t\t\t\t{title}\n\t\t\t\t<div style={{ padding: \"20px 0\", textAlign: \"center\" }}>Collecting loading performance data\u2026</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst navMarkLeft = (ms: number): string => {\n\t\tif (timelineRange <= 0) return \"0%\"\n\t\treturn `${Math.min(100, Math.max(0, ((ms - minDuration) / timelineRange) * 100))}%`\n\t}\n\n\tconst initialRequestMs = navigationDerived?.initialRequestStart\n\tconst firstByteMs = navigationDerived?.firstByte\n\n\treturn (\n\t\t<div className={styles.debugLoadingBarsContainer}>\n\t\t\t{title}\n\n\t\t\t<div className={styles.timelineContainer}>\n\t\t\t\t<div className={styles.timeAxis}>{timeMarkers}</div>\n\n\t\t\t\t{navigationDerived && timelineRange > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className={styles.loadingBarContainer}>\n\t\t\t\t\t\t\t<div className={styles.loadingBarLabel}>\n\t\t\t\t\t\t\t\t<span>Page Load</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={styles.loadingBarTimeline}>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarBackground} />\n\t\t\t\t\t\t\t\t<TimelineMilestone\n\t\t\t\t\t\t\t\t\tleftPct={navMarkLeft(navigationDerived.pageLoadStart)}\n\t\t\t\t\t\t\t\t\ttickClass={serverTimelineMarkClassNames.tick}\n\t\t\t\t\t\t\t\t\tlabelClass={serverTimelineMarkClassNames.label}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{Math.round(navigationDerived.pageLoadStart)}ms\n\t\t\t\t\t\t\t\t</TimelineMilestone>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{initialRequestMs !== undefined && (\n\t\t\t\t\t\t\t<div className={styles.loadingBarContainer}>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarLabel}>\n\t\t\t\t\t\t\t\t\t<span>Initial Request</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarTimeline}>\n\t\t\t\t\t\t\t\t\t<div className={styles.loadingBarBackground} />\n\t\t\t\t\t\t\t\t\t<TimelineMilestone\n\t\t\t\t\t\t\t\t\t\tleftPct={navMarkLeft(initialRequestMs)}\n\t\t\t\t\t\t\t\t\t\ttickClass={serverTimelineMarkClassNames.tick}\n\t\t\t\t\t\t\t\t\t\tlabelClass={serverTimelineMarkClassNames.label}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{Math.round(initialRequestMs)}ms ({Math.round(navigationDerived.requestStartFromNavigationMs)}ms)\n\t\t\t\t\t\t\t\t\t</TimelineMilestone>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{firstByteMs !== undefined && (\n\t\t\t\t\t\t\t<div className={styles.loadingBarContainer}>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarLabel}>\n\t\t\t\t\t\t\t\t\t<span>TTFB</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarTimeline}>\n\t\t\t\t\t\t\t\t\t<div className={styles.loadingBarBackground} />\n\t\t\t\t\t\t\t\t\t<TimelineMilestone\n\t\t\t\t\t\t\t\t\t\tleftPct={navMarkLeft(firstByteMs)}\n\t\t\t\t\t\t\t\t\t\ttickClass={serverTimelineMarkClassNames.tick}\n\t\t\t\t\t\t\t\t\t\tlabelClass={serverTimelineMarkClassNames.label}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{Math.round(firstByteMs)}ms ({Math.round(navigationDerived.responseStartFromNavigationMs)}ms)\n\t\t\t\t\t\t\t\t\t</TimelineMilestone>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t{marks.map(([name, timestamp]) => {\n\t\t\t\t\tconst c = timelineMarkClassNames(timestamp)\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={name} className={styles.loadingBarContainer}>\n\t\t\t\t\t\t\t<div className={styles.loadingBarLabel}>\n\t\t\t\t\t\t\t\t<span>{MARK_LABELS[name] || name}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={styles.loadingBarTimeline}>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarBackground} />\n\t\t\t\t\t\t\t\t{timelineRange > 0 && (\n\t\t\t\t\t\t\t\t\t<TimelineMilestone leftPct={navMarkLeft(timestamp)} tickClass={c.tick} labelClass={c.label}>\n\t\t\t\t\t\t\t\t\t\t{Math.round(timestamp)}ms\n\t\t\t\t\t\t\t\t\t</TimelineMilestone>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\t{dynamicMarks.map(dynamicMark => {\n\t\t\t\t\tconst c = timelineMarkClassNames(dynamicMark.value)\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={dynamicMark.name} className={styles.loadingBarContainer}>\n\t\t\t\t\t\t\t<div className={styles.loadingBarLabel}>\n\t\t\t\t\t\t\t\t<span>{dynamicMark.label}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={styles.loadingBarTimeline}>\n\t\t\t\t\t\t\t\t<div className={styles.loadingBarBackground} />\n\t\t\t\t\t\t\t\t{timelineRange > 0 && (\n\t\t\t\t\t\t\t\t\t<TimelineMilestone leftPct={navMarkLeft(dynamicMark.value)} tickClass={c.tick} labelClass={c.label}>\n\t\t\t\t\t\t\t\t\t\t{Math.round(dynamicMark.value)}ms\n\t\t\t\t\t\t\t\t\t</TimelineMilestone>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{perfEmitter.isComplete() && totalDuration > 0 && (\n\t\t\t\t<div className={styles.footer}>\n\t\t\t\t\t<strong>\n\t\t\t\t\t\tLoading complete\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\tTotal Duration: {Math.round(totalDuration)} ms\n\t\t\t\t\t</strong>\n\t\t\t\t\t{loadingInfo && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t<strong>Format:</strong> {loadingInfo.format.toUpperCase()}\n\t\t\t\t\t\t\t{\" \u00B7 \"}\n\t\t\t\t\t\t\t<strong>Strategy:</strong> {STRATEGY_LABELS[loadingInfo.strategy]}\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t<strong>Sources:</strong>{\" \"}\n\t\t\t\t\t\t\t{loadingInfo.sources.map((s, i) => (\n\t\t\t\t\t\t\t\t<span key={s}>\n\t\t\t\t\t\t\t\t\t{i > 0 && (\n\t\t\t\t\t\t\t\t\t\t<span style={{ color: loadingInfo.sources.length > 1 ? \"#ff6b6b\" : undefined }}>{\" \u2192 \"}</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span style={{ color: loadingInfo.sources.length > 1 ? \"#ff6b6b\" : undefined }}>\n\t\t\t\t\t\t\t\t\t\t{SOURCE_LABELS[s]}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{loadingInfo.sources.length > 1 && <span style={{ color: \"#ff6b6b\" }}> (fallback!)</span>}\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t<strong>Snapshot:</strong> {humanBytes(loadingInfo.snapshotBytes)} ({loadingInfo.snapshotSource}\n\t\t\t\t\t\t\t{loadingInfo.snapshotSource === \"cached\" && loadingInfo.cacheBackend\n\t\t\t\t\t\t\t\t? `, ${loadingInfo.cacheBackend}`\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{(loadingInfo.cachedRows > 0 || loadingInfo.downloadedRows > 0) && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t<strong>Rows:</strong>{\" \"}\n\t\t\t\t\t\t\t\t\t{loadingInfo.cachedRowBytes > 0 && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{humanBytes(loadingInfo.cachedRowBytes)} ({loadingInfo.cachedRows} cached\n\t\t\t\t\t\t\t\t\t\t\t{loadingInfo.cacheBackend ? `, ${loadingInfo.cacheBackend}` : \"\"})\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{loadingInfo.cachedRowBytes > 0 && loadingInfo.downloadedRowBytes > 0 && \" + \"}\n\t\t\t\t\t\t\t\t\t{loadingInfo.downloadedRowBytes > 0 && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{humanBytes(loadingInfo.downloadedRowBytes)} ({loadingInfo.downloadedRows} downloaded)\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{loadingInfo.cachedRowBytes === 0 && loadingInfo.downloadedRowBytes === 0 && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{loadingInfo.cachedRows} cached\n\t\t\t\t\t\t\t\t\t\t\t{loadingInfo.cacheBackend ? ` (${loadingInfo.cacheBackend})` : \"\"} + {loadingInfo.downloadedRows}{\" \"}\n\t\t\t\t\t\t\t\t\t\t\tdownloaded\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{wsInitialUpdates !== undefined && wsInitialUpdates > 0 && <> + {wsInitialUpdates} initial WS updates</>}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n", "import \"DebugLoadingPerf.styles_1jxhlfe.wyw.css\"; export const footer = \"footer_f2ywo1o\";\nexport const debugLoadingBarsContainer = \"debugLoadingBarsContainer_detfbl9\";\nexport const timelineContainer = \"timelineContainer_t108y22p\";\nexport const timeAxis = \"timeAxis_tb4gmkd\";\nexport const timeMarkerGroup = \"timeMarkerGroup_tonjw98\";\nexport const timeMarkerGroupEdge = \"timeMarkerGroupEdge_t10u9o24\";\nexport const timeAxisTick = \"timeAxisTick_t1ibmh89\";\nexport const timeLabel = \"timeLabel_t1ds2c68\";\nexport const loadingBarContainer = \"loadingBarContainer_llg81dw\";\nexport const loadingBarLabel = \"loadingBarLabel_ll7ecvs\";\nexport const loadingBarTimeline = \"loadingBarTimeline_lb4zcg1\";\nexport const closeButton = \"closeButton_c7lx86n\";\nexport const loadingBarBackground = \"loadingBarBackground_l1q3vhpk\";\nexport const timelineMarkAnchor = \"timelineMarkAnchor_t140f5hm\";\nexport const timelineMarkTick = \"timelineMarkTick_t15pepg7\";\nexport const timelineTick = \"timelineTick_t1v5yx5z\";\nexport const timelineTickNegative = \"timelineTickNegative_tl2hltp\";\nexport const timelineTickServer = \"timelineTickServer_t1rvyldc\";\nexport const markLabelInline = \"markLabelInline_m1iitua3\";\nexport const markLabelInlineNegative = \"markLabelInlineNegative_m1itl3i8\";\nexport const markLabelInlineServer = \"markLabelInlineServer_m1iqaxff\";\nexport const markLabelPositionAfterTick = \"markLabelPositionAfterTick_mg41i0d\";\nexport const markLabelPositionBeforeTick = \"markLabelPositionBeforeTick_m1tahqtu\";\nexport const titleContainer = \"titleContainer_t1rvhy3a\";"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,YAAqB;AACpC,QAAM,SAAS,yBAAyB;AACxC,SAAO,eAAe,MAAM,OAAO,OAAO,UAAU,SAAS,QAAQ,CAAC,MAAM,8BAAyB;AACtG;;;ACHA,mBAA6C;;;ACJY,IAAM,SAAS;AACjE,IAAM,4BAA4B;AAClC,IAAM,oBAAoB;AAC1B,IAAM,WAAW;AACjB,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,eAAe;AACrB,IAAM,YAAY;AAClB,IAAM,sBAAsB;AAC5B,IAAM,kBAAkB;AACxB,IAAM,qBAAqB;AAC3B,IAAM,cAAc;AACpB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,eAAe;AACrB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,kBAAkB;AACxB,IAAM,0BAA0B;AAChC,IAAM,wBAAwB;AAC9B,IAAM,6BAA6B;AACnC,IAAM,8BAA8B;AACpC,IAAM,iBAAiB;;;ADuE5B;AA9EK,IAAM,yBAAyB;AAE/B,IAAI,wBAAwB,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,sBAAsB;AAEzG,IAAM,8BAA8B,MAAM;AACzC,QAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,MAAI,aAAa,OAAO,sBAAsB;AAC9C,0BAAwB;AACxB,SAAO,QAAQ,aAAa,OAAO,QAAQ,OAAO,IAAI,IAAI,SAAS,CAAC;AACrE;AAEA,SAAS,WAAW,OAAuB;AAC1C,MAAI,QAAQ,KAAM,QAAO,GAAG,KAAK;AACjC,MAAI,QAAQ,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAC5D,SAAO,IAAI,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAC3C;AAEA,IAAM,kBAA2D;AAAA,EAChE,aAAa;AAAA,EACb,UAAU;AAAA,EACV,cAAc;AAAA,EACd,aAAa;AACd;AAEA,IAAM,gBAA+C;AAAA,EACpD,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAChB;AAGA,IAAM,oCAAoC;AAE1C,SAAS,iBAAiB,SAAyB;AAClD,QAAM,IAAI,OAAO,WAAW,OAAO;AACnC,SAAO,OAAO,SAAS,CAAC,IAAI,IAAI;AACjC;AAYA,SAAS,sBAA+D;AACvE,QAAM,aAAa,YAAY,iBAAiB,YAAY,EAAE,CAAC;AAC/D,MAAI,EAAE,sBAAsB,6BAA8B,QAAO;AACjE,SAAO;AACR;AAEA,SAAS,uBAAuB,IAA6C;AAC5E,QAAM,WAAW,KAAK;AACtB,SAAO;AAAA,IACN,MAAM,WAAkB,uBAA8B;AAAA,IACtD,OAAO,WAAkB,0BAAiC;AAAA,EAC3D;AACD;AAGA,IAAM,+BAA+B;AAAA,EACpC,MAAa;AAAA,EACb,OAAc;AACf;AAEA,SAAS,kBAAkB,OAKxB;AACF,QAAM,YAAY,iBAAiB,MAAM,OAAO,KAAK;AACrD,SACC,6CAAC,SAAI,WAAkB,oBAAoB,OAAO,EAAE,MAAM,MAAM,QAAQ,GACvE;AAAA,gDAAC,SAAI,WAAW,WAAU,kBAAkB,MAAM,SAAS,GAAG;AAAA,IAC9D;AAAA,MAAC;AAAA;AAAA,QACA,WAAW;AAAA,UACV,MAAM;AAAA,UACN,YAAmB,8BAAqC;AAAA,QACzD;AAAA,QAEC,gBAAM;AAAA;AAAA,IACR;AAAA,KACD;AAEF;AAEO,IAAM,mBAAmB,MAAM;AACrC,QAAM,CAAC,OAAO,UAAU,QAAI,uBAA4C,CAAC,CAAC;AAC1E,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAwB,CAAC,CAAC;AAClE,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAkC;AACxE,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAA6B;AAC7E,QAAM,CAAC,UAAU,SAAS,QAAI,uBAAS,KAAK;AAE5C,8BAAU,MAAM;AACf,QAAI,CAAC,YAAa;AAClB,UAAM,eAAe,MAAM;AAC1B,aAAO,WAAW;AAClB,YAAM,cAAc,OAAO,QAAQ,aAAa,aAAa,CAAC;AAC9D,kBAAY,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC;AACxC,iBAAW,WAAW;AAAA,IACvB;AACA,UAAM,sBAAsB,MAAM;AACjC,aAAO,WAAW;AAClB,YAAM,qBAAqB,YAAY,oBAAoB,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAC7F,sBAAgB,kBAAkB;AAAA,IACnC;AACA,UAAM,cAAc,CAAC,SAAsB,eAAe,IAAI;AAC9D,UAAM,gBAAgB,CAAC,UAAkB,oBAAoB,KAAK;AAElE,iBAAa,GAAG,oBAAoB,YAAY;AAChD,iBAAa,GAAG,2BAA2B,mBAAmB;AAC9D,iBAAa,GAAG,gBAAgB,WAAW;AAC3C,iBAAa,GAAG,WAAW,aAAa;AAExC,WAAO,MAAM;AACZ,mBAAa,IAAI,oBAAoB,YAAY;AACjD,mBAAa,IAAI,2BAA2B,mBAAmB;AAC/D,mBAAa,IAAI,gBAAgB,WAAW;AAC5C,mBAAa,IAAI,WAAW,aAAa;AAAA,IAC1C;AAAA,EACD,GAAG,CAAC,CAAC;AAEL,QAAM,wBAAoB,sBAA4C,MAAM;AAC3E,QAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,UAAM,aAAa,oBAAoB;AACvC,QAAI,CAAC,WAAY,QAAO;AAExB,UAAM,WAAW,WAAW;AAC5B,UAAM,gBAAgB,WAAW;AACjC,UAAM,sBAAsB,WAAW,eAAe;AACtD,UAAM,YAAY,WAAW,gBAAgB;AAC7C,UAAM,+BAA+B,WAAW,eAAe;AAC/D,UAAM,gCAAgC,WAAW,gBAAgB;AAEjE,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,EAAE,eAAe,aAAa,aAAa,cAAc,QAAI,sBAAQ,MAAM;AAChF,UAAM,mBAAmB,MAAM,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK;AACzD,UAAM,oBAAoB,aAAa,aAAa,SAAS,CAAC,GAAG,SAAS;AAC1E,UAAMA,iBAAgB,KAAK,IAAI,kBAAkB,iBAAiB;AAClE,UAAM,gBAA0B,CAAC;AACjC,QAAI,mBAAmB;AACtB,oBAAc,KAAK,kBAAkB,aAAa;AAClD,UAAI,kBAAkB,wBAAwB,OAAW,eAAc,KAAK,kBAAkB,mBAAmB;AACjH,UAAI,kBAAkB,cAAc,OAAW,eAAc,KAAK,kBAAkB,SAAS;AAAA,IAC9F;AACA,UAAMC,eAAc,cAAc,SAAS,IAAI,KAAK,IAAI,GAAG,GAAG,aAAa,IAAI;AAC/E,UAAMC,eAAc,CAAC;AACrB,UAAM,QAAQF,iBAAgBC;AAE9B,QAAI,QAAQ,GAAG;AACd,YAAM,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG;AAC3D,YAAM,YAAY,KAAK,MAAMA,eAAc,IAAI,IAAI;AAEnD,eAAS,OAAO,WAAW,QAAQD,gBAAe,QAAQ,MAAM;AAC/D,cAAM,YAAY,KAAK,IAAI,KAAK,KAAK,IAAI,IAAK,OAAOC,gBAAe,QAAS,GAAG,CAAC;AACjF,cAAM,WAAW,GAAG,SAAS;AAC7B,cAAM,WAAW,aAAa;AAC9B,QAAAC,aAAY;AAAA,UACX;AAAA,YAAC;AAAA;AAAA,cAEA,WAAW,WAAU,iBAAiB,YAAmB,mBAAmB;AAAA,cAC5E,OAAO,EAAE,MAAM,SAAS;AAAA,cAExB;AAAA,6DAAC,SAAI,WAAkB,WAAY;AAAA;AAAA,kBAAK;AAAA,mBAAE;AAAA,gBAC1C,4CAAC,SAAI,WAAkB,cAAc;AAAA;AAAA;AAAA,YALhC;AAAA,UAMN;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,UAAMC,iBAAgBH,iBAAgBC;AAEtC,WAAO;AAAA,MACN,eAAAD;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,eAAAC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,OAAO,cAAc,iBAAiB,CAAC;AAE3C,MAAI,CAAC,YAAa;AAClB,MAAI,SAAU;AAEd,QAAM,cAAc,MAAM;AACzB,cAAU,IAAI;AACd,gCAA4B;AAAA,EAC7B;AAEA,QAAM,QACL,6CAAC,SAAI,WAAkB,gBACtB;AAAA,gDAAC,QAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,wCAA0B;AAAA,IACpD,4CAAC,YAAO,SAAS,aAAa,MAAK,UAAS,WAAkB,aAC7D,sDAAC,aAAU,GACZ;AAAA,KACD;AAGD,MAAI,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AACpC,WACC,6CAAC,SAAI,WAAkB,2BACrB;AAAA;AAAA,MACD,4CAAC,SAAI,OAAO,EAAE,SAAS,UAAU,WAAW,SAAS,GAAG,uDAAoC;AAAA,OAC7F;AAAA,EAEF;AAEA,QAAM,cAAc,CAAC,OAAuB;AAC3C,QAAI,iBAAiB,EAAG,QAAO;AAC/B,WAAO,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,IAAK,KAAK,eAAe,gBAAiB,GAAG,CAAC,CAAC;AAAA,EACjF;AAEA,QAAM,mBAAmB,mBAAmB;AAC5C,QAAM,cAAc,mBAAmB;AAEvC,SACC,6CAAC,SAAI,WAAkB,2BACrB;AAAA;AAAA,IAED,6CAAC,SAAI,WAAkB,mBACtB;AAAA,kDAAC,SAAI,WAAkB,UAAW,uBAAY;AAAA,MAE7C,qBAAqB,gBAAgB,KACrC,4EACC;AAAA,qDAAC,SAAI,WAAkB,qBACtB;AAAA,sDAAC,SAAI,WAAkB,iBACtB,sDAAC,UAAK,uBAAS,GAChB;AAAA,UACA,6CAAC,SAAI,WAAkB,oBACtB;AAAA,wDAAC,SAAI,WAAkB,sBAAsB;AAAA,YAC7C;AAAA,cAAC;AAAA;AAAA,gBACA,SAAS,YAAY,kBAAkB,aAAa;AAAA,gBACpD,WAAW,6BAA6B;AAAA,gBACxC,YAAY,6BAA6B;AAAA,gBAExC;AAAA,uBAAK,MAAM,kBAAkB,aAAa;AAAA,kBAAE;AAAA;AAAA;AAAA,YAC9C;AAAA,aACD;AAAA,WACD;AAAA,QACC,qBAAqB,UACrB,6CAAC,SAAI,WAAkB,qBACtB;AAAA,sDAAC,SAAI,WAAkB,iBACtB,sDAAC,UAAK,6BAAe,GACtB;AAAA,UACA,6CAAC,SAAI,WAAkB,oBACtB;AAAA,wDAAC,SAAI,WAAkB,sBAAsB;AAAA,YAC7C;AAAA,cAAC;AAAA;AAAA,gBACA,SAAS,YAAY,gBAAgB;AAAA,gBACrC,WAAW,6BAA6B;AAAA,gBACxC,YAAY,6BAA6B;AAAA,gBAExC;AAAA,uBAAK,MAAM,gBAAgB;AAAA,kBAAE;AAAA,kBAAK,KAAK,MAAM,kBAAkB,4BAA4B;AAAA,kBAAE;AAAA;AAAA;AAAA,YAC/F;AAAA,aACD;AAAA,WACD;AAAA,QAEA,gBAAgB,UAChB,6CAAC,SAAI,WAAkB,qBACtB;AAAA,sDAAC,SAAI,WAAkB,iBACtB,sDAAC,UAAK,kBAAI,GACX;AAAA,UACA,6CAAC,SAAI,WAAkB,oBACtB;AAAA,wDAAC,SAAI,WAAkB,sBAAsB;AAAA,YAC7C;AAAA,cAAC;AAAA;AAAA,gBACA,SAAS,YAAY,WAAW;AAAA,gBAChC,WAAW,6BAA6B;AAAA,gBACxC,YAAY,6BAA6B;AAAA,gBAExC;AAAA,uBAAK,MAAM,WAAW;AAAA,kBAAE;AAAA,kBAAK,KAAK,MAAM,kBAAkB,6BAA6B;AAAA,kBAAE;AAAA;AAAA;AAAA,YAC3F;AAAA,aACD;AAAA,WACD;AAAA,SAEF;AAAA,MAGA,MAAM,IAAI,CAAC,CAAC,MAAM,SAAS,MAAM;AACjC,cAAM,IAAI,uBAAuB,SAAS;AAC1C,eACC,6CAAC,SAAe,WAAkB,qBACjC;AAAA,sDAAC,SAAI,WAAkB,iBACtB,sDAAC,UAAM,sBAAY,IAAI,KAAK,MAAK,GAClC;AAAA,UACA,6CAAC,SAAI,WAAkB,oBACtB;AAAA,wDAAC,SAAI,WAAkB,sBAAsB;AAAA,YAC5C,gBAAgB,KAChB,6CAAC,qBAAkB,SAAS,YAAY,SAAS,GAAG,WAAW,EAAE,MAAM,YAAY,EAAE,OACnF;AAAA,mBAAK,MAAM,SAAS;AAAA,cAAE;AAAA,eACxB;AAAA,aAEF;AAAA,aAXS,IAYV;AAAA,MAEF,CAAC;AAAA,MACA,aAAa,IAAI,iBAAe;AAChC,cAAM,IAAI,uBAAuB,YAAY,KAAK;AAClD,eACC,6CAAC,SAA2B,WAAkB,qBAC7C;AAAA,sDAAC,SAAI,WAAkB,iBACtB,sDAAC,UAAM,sBAAY,OAAM,GAC1B;AAAA,UACA,6CAAC,SAAI,WAAkB,oBACtB;AAAA,wDAAC,SAAI,WAAkB,sBAAsB;AAAA,YAC5C,gBAAgB,KAChB,6CAAC,qBAAkB,SAAS,YAAY,YAAY,KAAK,GAAG,WAAW,EAAE,MAAM,YAAY,EAAE,OAC3F;AAAA,mBAAK,MAAM,YAAY,KAAK;AAAA,cAAE;AAAA,eAChC;AAAA,aAEF;AAAA,aAXS,YAAY,IAYtB;AAAA,MAEF,CAAC;AAAA,OACF;AAAA,IAEC,YAAY,WAAW,KAAK,gBAAgB,KAC5C,6CAAC,SAAI,WAAkB,QACtB;AAAA,mDAAC,YAAO;AAAA;AAAA,QAEP,4CAAC,QAAG;AAAA,QAAE;AAAA,QACW,KAAK,MAAM,aAAa;AAAA,QAAE;AAAA,SAC5C;AAAA,MACC,eACA,4EACC;AAAA,oDAAC,QAAG;AAAA,QACJ,4CAAC,YAAO,qBAAO;AAAA,QAAS;AAAA,QAAE,YAAY,OAAO,YAAY;AAAA,QACxD;AAAA,QACD,4CAAC,YAAO,uBAAS;AAAA,QAAS;AAAA,QAAE,gBAAgB,YAAY,QAAQ;AAAA,QAChE,4CAAC,QAAG;AAAA,QACJ,4CAAC,YAAO,sBAAQ;AAAA,QAAU;AAAA,QACzB,YAAY,QAAQ,IAAI,CAAC,GAAG,MAC5B,6CAAC,UACC;AAAA,cAAI,KACJ,4CAAC,UAAK,OAAO,EAAE,OAAO,YAAY,QAAQ,SAAS,IAAI,YAAY,OAAU,GAAI,sBAAM;AAAA,UAExF,4CAAC,UAAK,OAAO,EAAE,OAAO,YAAY,QAAQ,SAAS,IAAI,YAAY,OAAU,GAC3E,wBAAc,CAAC,GACjB;AAAA,aANU,CAOX,CACA;AAAA,QACA,YAAY,QAAQ,SAAS,KAAK,4CAAC,UAAK,OAAO,EAAE,OAAO,UAAU,GAAG,0BAAY;AAAA,QAClF,4CAAC,QAAG;AAAA,QACJ,4CAAC,YAAO,uBAAS;AAAA,QAAS;AAAA,QAAE,WAAW,YAAY,aAAa;AAAA,QAAE;AAAA,QAAG,YAAY;AAAA,QAChF,YAAY,mBAAmB,YAAY,YAAY,eACrD,KAAK,YAAY,YAAY,KAC7B;AAAA,QAAG;AAAA,SAEJ,YAAY,aAAa,KAAK,YAAY,iBAAiB,MAC5D,4EACC;AAAA,sDAAC,QAAG;AAAA,UACJ,4CAAC,YAAO,mBAAK;AAAA,UAAU;AAAA,UACtB,YAAY,iBAAiB,KAC7B,4EACE;AAAA,uBAAW,YAAY,cAAc;AAAA,YAAE;AAAA,YAAG,YAAY;AAAA,YAAW;AAAA,YACjE,YAAY,eAAe,KAAK,YAAY,YAAY,KAAK;AAAA,YAAG;AAAA,aAClE;AAAA,UAEA,YAAY,iBAAiB,KAAK,YAAY,qBAAqB,KAAK;AAAA,UACxE,YAAY,qBAAqB,KACjC,4EACE;AAAA,uBAAW,YAAY,kBAAkB;AAAA,YAAE;AAAA,YAAG,YAAY;AAAA,YAAe;AAAA,aAC3E;AAAA,UAEA,YAAY,mBAAmB,KAAK,YAAY,uBAAuB,KACvE,4EACE;AAAA,wBAAY;AAAA,YAAW;AAAA,YACvB,YAAY,eAAe,KAAK,YAAY,YAAY,MAAM;AAAA,YAAG;AAAA,YAAI,YAAY;AAAA,YAAgB;AAAA,YAAI;AAAA,aAEvG;AAAA,WAEF;AAAA,QAEA,qBAAqB,UAAa,mBAAmB,KAAK,4EAAE;AAAA;AAAA,UAAI;AAAA,UAAiB;AAAA,WAAmB;AAAA,SACtG;AAAA,OAEF;AAAA,KAEF;AAEF;",
  "names": ["totalDuration", "minDuration", "timeMarkers", "timelineRange"]
}
