{
  "version": 3,
  "sources": ["../../src/document/utils/useIsDocumentLoading.ts", "../../src/document/components/chrome/debugbar/LazyDebugBar.tsx", "../../src/document/components/chrome/LoadingIndicator.tsx", "../../src/document/components/chrome/LoadingIndicator.styles.ts", "../../src/document/components/chrome/shared/DelayUnmount.tsx", "../../src/document/components/chrome/shared/PageLoader.styles.ts", "../../src/document/components/chrome/shared/PageLoader.tsx"],
  "sourcesContent": ["import type { EngineStores } from \"document/EngineStores.ts\"\nimport { useEngineState } from \"document/useEngineState.ts\"\nimport { ActiveMainView } from \"./ActiveEditorType.ts\"\n\nexport function useIsDocumentLoading({\n\tloadingStore,\n\tscopeStore,\n\thistoryStore,\n\tchromeStore,\n}: Pick<EngineStores, \"historyStore\" | \"scopeStore\" | \"loadingStore\" | \"chromeStore\">) {\n\tconst isDocumentLoading = useEngineState(\n\t\t() => {\n\t\t\tif (loadingStore.hasError) return false\n\n\t\t\tconst isLoading =\n\t\t\t\t!loadingStore.canvasSandboxLoadingState.isFinished ||\n\t\t\t\t!loadingStore.canvasSandboxResourcesLoadingState.isFinished ||\n\t\t\t\thistoryStore.isLoadingDocument ||\n\t\t\t\tloadingStore.isLoadingModules\n\n\t\t\tconst activeScope = scopeStore.active\n\t\t\tconst isEmptyProject = activeScope.children.length === 0\n\n\t\t\treturn (\n\t\t\t\t!isEmptyProject && chromeStore.mainView !== ActiveMainView.Preview && chromeStore.chromeIsVisible && isLoading\n\t\t\t)\n\t\t},\n\t\t[],\n\t\t[chromeStore, loadingStore, scopeStore, historyStore],\n\t)\n\n\treturn isDocumentLoading\n}\n", "import { useEmployeesOnlySettingIsOn } from \"app/employeesOnlySettings.ts\"\nimport engine from \"document/engine.ts\"\nimport { useIsDocumentLoading } from \"document/utils/useIsDocumentLoading.ts\"\nimport React, { Suspense, useEffect, useRef, useState } from \"react\"\nimport { LOADER_EXIT_DEBOUNCE_MS } from \"../LoadingIndicator.tsx\"\n\nconst loadDebugBar = () => import(\"./DebugBar.tsx\")\n\nconst DebugBarInner = React.lazy(() => loadDebugBar())\n\nexport function preloadDebugBar() {\n\tvoid loadDebugBar()\n}\n\n// Only mount the actual (inner) debug bar if we want to show it.\n// On initial load only: stay hidden until the loader's debounce fires, so the bar\n// doesn't clip the loading screen. After first show, never hide again on scope changes.\nexport const DebugBar = React.memo(function DebugBar() {\n\tconst showDebugBar = useEmployeesOnlySettingIsOn(\"showDebugBar\")\n\tconst isDocumentLoading = useIsDocumentLoading(engine.stores)\n\tconst [loaderFinished, setLoaderFinished] = useState(false)\n\tconst hasShownOnceRef = useRef(false)\n\tuseEffect(() => {\n\t\tif (isDocumentLoading) {\n\t\t\tif (!hasShownOnceRef.current) setLoaderFinished(false)\n\t\t} else {\n\t\t\tconst t = setTimeout(() => {\n\t\t\t\tsetLoaderFinished(true)\n\t\t\t\thasShownOnceRef.current = true\n\t\t\t}, LOADER_EXIT_DEBOUNCE_MS)\n\t\t\treturn () => clearTimeout(t)\n\t\t}\n\t}, [isDocumentLoading])\n\n\tif (!showDebugBar) return null\n\tif (!hasShownOnceRef.current && !loaderFinished) return null\n\n\treturn (\n\t\t<Suspense fallback={null}>\n\t\t\t<DebugBarInner />\n\t\t</Suspense>\n\t)\n})\n", "import { environment } from \"@framerjs/framer-environment\"\nimport { colors } from \"@framerjs/fresco/tokens\"\nimport { getLogger } from \"@framerjs/shared\"\nimport { isFirefox } from \"@framerjs/shared/src/environment.ts\"\nimport { cx } from \"@linaria/core\"\nimport { Dictionary } from \"app/dictionary.ts\"\nimport { experiments } from \"app/experiments.ts\"\nimport engine from \"document/engine.ts\"\nimport { getCurrentDriverName } from \"document/models/CanvasTree/drivers/NodeTreeDriverSelector.ts\"\nimport { isScopeNode } from \"document/models/CanvasTree/nodes/ScopeNode.ts\"\nimport { useIsDocumentLoading } from \"document/utils/useIsDocumentLoading.ts\"\nimport React, { useEffect, useRef } from \"react\"\nimport { type Mark, markLoadingPerf, perfEmitter } from \"utils/performanceTracker.ts\"\nimport { editorPath } from \"utils/platformPaths.ts\"\nimport { record } from \"web/lib/tracker.ts\"\nimport { useDarkMode } from \"web/lib/useDarkMode.ts\"\nimport { useDebounce } from \"web/lib/useDebounce.ts\"\nimport { DebugLoadingPerf, forceShowLoadingDebug } from \"./DebugLoadingPerf.tsx\"\nimport * as styles from \"./LoadingIndicator.styles.ts\"\nimport { useLocalStorageState } from \"./debugbar/useLocalStorageState.tsx\"\nimport { DelayUnmount } from \"./shared/DelayUnmount.tsx\"\nimport { PageLoader } from \"./shared/PageLoader.tsx\"\n\nconst MAX_LOADING_TIME = 20_000\n/** Debounce + DelayUnmount use this. DebugBar waits this long before showing to avoid clipping the loader. */\nexport const LOADER_EXIT_DEBOUNCE_MS = 300\n\nexport const LoadingIndicator = React.memo(function LoadingIndicator() {\n\tconst [shouldShowGlobalLoader, setShouldShowGlobalLoader] = React.useState(!engine.isRemountingUI())\n\n\tconst [debugGlobalLoading] = useLocalStorageState(\"debugbar.debugGlobalLoading\", false)\n\n\tconst shouldShow = useIsDocumentLoading(engine.stores)\n\n\tReact.useEffect(() => {\n\t\tif (!shouldShowGlobalLoader) return\n\n\t\tconst controller = new AbortController()\n\t\tconst listeners = [\"keydown\", \"keyup\"] as const\n\n\t\tlisteners.forEach(event => {\n\t\t\tdocument.addEventListener(\n\t\t\t\tevent,\n\t\t\t\te => {\n\t\t\t\t\tconst isAltCtrlShiftMinus = e.code === \"Minus\" && e.altKey && e.shiftKey && e.ctrlKey\n\t\t\t\t\tif (isAltCtrlShiftMinus) {\n\t\t\t\t\t\tsetShouldShowGlobalLoader(false)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ signal: controller.signal },\n\t\t\t)\n\t\t})\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [shouldShowGlobalLoader])\n\n\tReact.useEffect(() => {\n\t\tif (!shouldShowGlobalLoader) return\n\t\tif (!shouldShow) return\n\t\tif (experiments.isOn(\"disableLoadingIndicatorTimeout\")) return\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tsetShouldShowGlobalLoader(false)\n\t\t}, MAX_LOADING_TIME)\n\n\t\treturn () => {\n\t\t\tclearTimeout(timeoutId)\n\t\t}\n\t}, [shouldShow, shouldShowGlobalLoader])\n\n\tif (shouldShowGlobalLoader && !shouldShow) {\n\t\t// triggers rerender to show the project and hide the global loader\n\t\tsetShouldShowGlobalLoader(false)\n\t}\n\n\tuseDocumentLoadingReporter(shouldShowGlobalLoader)\n\n\tconst debouncedShouldShowGlobalLoader = useDebounce(shouldShowGlobalLoader, LOADER_EXIT_DEBOUNCE_MS)\n\n\t// we only want to mount the page loader if the global loader is hidden\n\tconst pageLoader = shouldShowGlobalLoader ? null : getPageLoaderElement(shouldShow)\n\n\tconst { isDarkMode } = useDarkMode()\n\tconst globalLoader = globalLoadingElement(debouncedShouldShowGlobalLoader, isDarkMode)\n\n\t// When the loader is visible, status bar is hidden \u2014 use margin without status bar.\n\tconst loaderContainerStyle = debouncedShouldShowGlobalLoader\n\t\t? {\n\t\t\t\t[\"--framerInternalUI-chromeMarginBottomLoader\" as string]:\n\t\t\t\t\t\"var(--framerInternalUI-chromeMarginBottomWithoutStatusBar)\",\n\t\t\t}\n\t\t: undefined\n\n\treturn (\n\t\t<div style={loaderContainerStyle}>\n\t\t\t{globalLoader}\n\t\t\t{pageLoader}\n\t\t\t{(forceShowLoadingDebug || debugGlobalLoading) && <DebugLoadingPerf />}\n\t\t</div>\n\t)\n})\n\nfunction useDocumentLoadingReporter(isLoading: boolean) {\n\tconst isLoadingRef = useRef(isLoading)\n\tisLoadingRef.current = isLoading\n\n\tuseEffect(() => {\n\t\t// when loading is done we turn noop\n\t\t// reporting is done on cleanup\n\t\tif (!isLoading) return\n\n\t\tlet blursCounter = 0\n\t\tconst startTime = performance.now()\n\n\t\tconst controller = new AbortController()\n\t\twindow.addEventListener(\n\t\t\t\"blur\",\n\t\t\t() => {\n\t\t\t\tblursCounter++\n\t\t\t},\n\t\t\t{ signal: controller.signal },\n\t\t)\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t\tconst focusLossTimes = blursCounter\n\t\t\tblursCounter = 0\n\n\t\t\t// When we are still loading but cleanup is called, it means that the component is unmounted and we don't want to report anything\n\t\t\tif (isLoadingRef.current) return\n\t\t\tif (!perfEmitter) return\n\t\t\tmarkLoadingPerf(\"showUI\")\n\n\t\t\tconst duration = performance.now() - startTime\n\t\t\tconst loadedDocumentSizeBytes = engine.remoteDocument?.documentByteSize ?? 0\n\t\t\tconst pageCount = engine.stores.scopeStore.getRootScopeNodes().length\n\t\t\tconst hierarchyNodeCount =\n\t\t\t\tengine.stores.treeStore.mode === \"crdt\"\n\t\t\t\t\t? engine.stores.treeStore.crdtTimeline.store.getHierarchy().sizeWithoutReplicas()\n\t\t\t\t\t: undefined\n\t\t\tconst loader = engine.tree.getService(\"loader\")\n\t\t\tconst activeScopeId = engine.stores.scopeStore.pendingOrActiveId\n\t\t\tconst activeScopeLoadedAtReveal = loader === undefined || loader.hasLoadedScope(activeScopeId)\n\t\t\tconst activeScopeNode = engine.tree.get(activeScopeId)\n\t\t\t// TODO(https://github.com/framer/company/issues/36566): drop this walk once CRDT is released.\n\t\t\t// It's expensive on large projects but we need it to interpret reveal timings while both\n\t\t\t// CRDT and JSON code paths coexist.\n\t\t\tlet activeScopeNodeCount: number | undefined\n\t\t\tif (isScopeNode(activeScopeNode, true) && activeScopeNode.isLoaded()) {\n\t\t\t\tactiveScopeNodeCount = 0\n\t\t\t\tfor (const _ of activeScopeNode.loaded.walk()) activeScopeNodeCount++\n\t\t\t}\n\t\t\tconst marks = perfEmitter.currentMarks()\n\n\t\t\tgetLogger(\"app\").info(\"\uD83D\uDDBC\uFE0F revealing canvas after\", Math.round(duration), \"ms\")\n\n\t\t\tconst eventMarks = {\n\t\t\t\tinit: marks.init ?? 0,\n\t\t\t\tdataLoad: marks.dataLoad ?? 0,\n\t\t\t\tdocumentBytesReady: marks.documentBytesReady ?? 0,\n\t\t\t\tbuildStore: marks.buildStore ?? 0,\n\t\t\t\taddedRows: marks.addedRows ?? 0,\n\t\t\t\twsConnection: marks.wsConnection ?? 0,\n\t\t\t\twsTreeInitMessages: marks.wsTreeInitMessages ?? 0,\n\t\t\t\tparsingInit: marks.parsingInit ?? 0,\n\t\t\t\tparsingRootNode: marks.parsingRootNode ?? 0,\n\t\t\t\tparsingReplicasExpansion: marks.parsingReplicasExpansion ?? 0,\n\t\t\t\tparsingFirstPage: marks.parsingFirstPage ?? 0,\n\t\t\t\tparsingResume: marks.parsingResume ?? 0,\n\t\t\t\tsandboxLoad: marks.sandboxLoad ?? 0,\n\t\t\t\tsandboxReady: marks.sandboxReady ?? 0,\n\t\t\t\tsandboxServicesReady: marks.sandboxServicesReady ?? 0,\n\t\t\t\tsandboxCanvasFirstRender: marks.sandboxCanvasFirstRender ?? 0,\n\t\t\t\tsandboxFramerDefaultModulesLoad: marks.sandboxFramerDefaultModulesLoad ?? 0,\n\t\t\t\tsandboxFirstModulesLoad: marks.sandboxFirstModulesLoad ?? 0,\n\t\t\t\tmodulesStorageInit: marks.modulesStorageInit ?? 0,\n\t\t\t\tfontsLoad: marks.fontsLoad ?? 0,\n\t\t\t\tmodulesLoad: marks.modulesLoad ?? 0,\n\t\t\t\tmodulesStorageFirstPublish: marks.modulesStorageFirstPublish ?? 0,\n\t\t\t\tmodulesStorageStart: marks.modulesStorageStart ?? 0,\n\t\t\t\tsandboxModulesListReceived: marks.sandboxModulesListReceived ?? 0,\n\t\t\t\tsandboxFirstBatchEvaluated: marks.sandboxFirstBatchEvaluated ?? 0,\n\t\t\t\tsandboxEvaluateModulesEnd: marks.sandboxEvaluateModulesEnd ?? 0,\n\t\t\t\tsandboxExternalModulesIdle: marks.sandboxExternalModulesIdle ?? 0,\n\t\t\t\tsandboxRenderingPhaseNormal: marks.sandboxRenderingPhaseNormal ?? 0,\n\t\t\t\tsandboxTrackerIdle: marks.sandboxTrackerIdle ?? 0,\n\t\t\t\tsandboxScopeLoadingDebounceEnter: marks.sandboxScopeLoadingDebounceEnter ?? 0,\n\t\t\t\teditorIsLoadingModulesIdle: marks.editorIsLoadingModulesIdle ?? 0,\n\t\t\t} satisfies Record<Exclude<Mark, \"showUI\">, number>\n\n\t\t\t// we don't need floating point precision for the duration reporting\n\t\t\tfor (const key in eventMarks) {\n\t\t\t\teventMarks[key as keyof typeof eventMarks] = Math.round(eventMarks[key as keyof typeof eventMarks])\n\t\t\t}\n\n\t\t\tconst loadingStrategy = perfEmitter.getLoadingInfo()?.strategy\n\t\t\tconst treeSyncStrategy = loadingStrategy === \"full-load\" ? \"download-tree\" : (loadingStrategy ?? \"download-tree\")\n\t\t\tconst initialModuleLoadStats = perfEmitter.getInitialModuleLoadStats()\n\n\t\t\trecord(\"document_global_loader_done\", {\n\t\t\t\tloaderVisibleDurationMs: Math.round(duration),\n\t\t\t\tloadedDocumentSizeBytes: loadedDocumentSizeBytes,\n\t\t\t\tpageCount,\n\t\t\t\thierarchyNodeCount,\n\t\t\t\tactiveScopeLoadedAtReveal,\n\t\t\t\tactiveScopeNodeCount,\n\t\t\t\tfocusLossTimes,\n\t\t\t\tisShallowLoad: true,\n\t\t\t\tdriver: getCurrentDriverName(),\n\t\t\t\ttreeSyncStrategy,\n\t\t\t\ttreeDataSources: perfEmitter.getLoadingInfo()?.sources.join(\",\") ?? \"\",\n\t\t\t\tonMultiplayerService: engine.stores.treeStore.isMPSSocket,\n\t\t\t\tttfbMs: perfEmitter.getTtfb(),\n\t\t\t\tinitialLocalEvaluatedModulesCount: initialModuleLoadStats?.localEvaluatedModulesCount,\n\t\t\t\tinitialExternalEvaluatedModulesCount: initialModuleLoadStats?.externalEvaluatedModulesCount,\n\t\t\t\tinitialModuleNetworkRequestCount: initialModuleLoadStats?.moduleNetworkRequestCount,\n\t\t\t\tinitialModuleNetworkBytes: initialModuleLoadStats?.moduleNetworkBytes,\n\t\t\t\tinitialNonModuleNetworkRequestCount: initialModuleLoadStats?.nonModuleNetworkRequestCount,\n\t\t\t\tinitialNonModuleNetworkBytes: initialModuleLoadStats?.nonModuleNetworkBytes,\n\t\t\t\t...eventMarks,\n\t\t\t})\n\t\t}\n\t}, [isLoading])\n}\n\nfunction getPageLoaderElement(shouldShow: boolean) {\n\treturn (\n\t\t<DelayUnmount visible={shouldShow} delay={LOADER_EXIT_DEBOUNCE_MS}>\n\t\t\t<div className={cx(styles.pageLoaderWrapper, styles.pageLoaderAnimation)}>\n\t\t\t\t<PageLoader color={colors.tint} done={!shouldShow} />\n\t\t\t</div>\n\t\t</DelayUnmount>\n\t)\n}\n\nconst logoLight =\n\t\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEB0lEQVR4Ae2YAWccQRzFU20LLa0A9BuUAkWhpEhB+zVKKf0eLdBPUEALSMHd7u7t3SZ3cLmchAgbci457hpJKyglctuZk8ffszMIsjO3OzwzNzNk3+///ntxK/W42ahHPepRj3pkWbY+HA6/lKXd3d3PBwcHH/f39x+UAmA0Gq11u93zJEnyVquVs+I4zlvqLBHic6wXZ5jlXT1jLYSzdrt9OZlMXpaWgqOjo3UNQZrAGmbIoBYbN37mPZIGcHVycrJWkn2CQMYgVDqm6hUYtQBAYlwDQBBM1eU2YFmrLQBo4Y5TAACh1+ud0YOTMaokKaZzQ9vIO24AoCScGWPMhjHbq8+AILcAcDuwSZKoJCUEglnMRQniFnATAonM8osOYAChCKSjLUAQxuP1ra2t86Lep2oaTWqJ6GPfDwBIgoYg+laa5L6mfep5ghRFkeMACAIb42RwxUXvQ7p9sPYjAQwBhixJgLgV6BxgCIBHENggIr1QJIxGWvhMZx4BIAjXPQwjJgEM7gIY0sAt4F8SIJkEOxBAgADAr3F4ePhG/8doMhgZEiCFb4Hj4+NXt24gz/M76g+/GI/H7yx6azufTCYfhsPht36/v6H08yba29v7OpvNHt46APVHn6dp+ldVYA4lSTJvXQt7sThnJe32pQKwcXFxsepdhFX1XmsTon+5d617iLUGNBgMmqqPV70DELfiuehNGGLD/IIDANHzBMG3BERCAob9q43ueQaBAND3M5IQFZiFQqxx5ls7AAAqGBmMwiQMW++EoT8QAEDGHiYBhc1KSNosvz8EoPn29jYgeNACMAfjAgSfY4ZC2oOchgAA+iGLqshRD2FU3oUkjDD0BAIBgMkiIyE+wyzu0n3MIc1uQgAA1QIww4IJrOW+PIM4KZQG9yAgAaGssqGy/Ka3QQuCQELC2j0IAIAHh9i83Od4030IECD3IACAfiDDg+aBNsJnJhEEiKC4BQEAUE1uBd6zCHcswBxMAlqAqwRDAYOwV7cw9gGlipPQLxPCdDp9liTJP1lpRJ9NSANUyatut/ur1+tNbVJ3ZqazLMs+lQIgz/O7+tccZWQOo6iOsaqkzc3NP6qCT09PTx/dVOo57pXWBvqnqJ2dne86jjCNORAgTLMGMBqNnqx4OwgCqo40yM9oFbmfeg+AIOh2YOPNZnOxlmpen6Vp6jkAgqDeCT+UwXlRCrgtNJhOp0MAligJsvqYWZyApYMA44DA8/IBIAhBGMybAgDMLzkAghAEiyRAjUYjb6iZ3wFVggAQBKACEBbVh5Y+AQRhoCCoymsIVUoAQRgM0A7VAsDtgCS0qwaA26FyCeB26KTpbzUeY79yELIse5/n+f2VUkY96lGPetSjHv8BYRyjFm/HYJ0AAAAASUVORK5CYII=\"\nconst logoDark =\n\t\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAADK0lEQVR4Ae3YAWQbURgH8Jttg45NAQYAjIEOg3FDC4zCAUrBdAxDAVAAG8UAwEawVWGlmtOQREIgSZIkySF3d8klbKPZwBjVZF+vuyx699/5ZNvrc/fn77ZWUu/ne+/OKeKTJEmSJEnkjK7rq+Vy+TVqpVKBrdVqrDYajUBbrdYr+q4XmqbdEgJwdHSkWpY1dvr9aR90MBiE13W9uqDD4dCr610vdTSajn73NJvNPlJE5fDwcBUgAACAgCAAwBzCWalUUhWKcIQ+H4EBECwGEIGg6xCBFoohohePKwwARI9AQAB0RQCREGIBAIJt2yc8hIUmQTQAmATbHuPFB0sLxZUBAEzC+C8diNIAAASweAAAKhMAQGCcBaCyADAQAARdJQcACIyzwEeQGAAgRD0cuZxHZAAg/yS4HgSuVAAAgRa6yPOBRAAAwXGcExYCAMjlco8VAbm2v7//kP7400ALhYvSvwt0RT0+Pn5OLzvetdvtg/l2Oh1cwzgw5tpsNt9sb28vKf87qb29B5ZlfadRnszqOBMnpLTXUU9pUR93dnaWFdmSyWSe/Fr49HJp0aEF7wsm3W5XxwjSAuBKhoABaAuEAtg8AP92OOkaGEEqAB8hDCLiBSqeBGkAGNsAT4Jx9RHSAABtBcYUeAiGUAQGAHUaMQUQwZEZIZ1OzybAAgC822KgAhEYANSpV7z46MqIgAEwhPyTgAHmyzsQuQi7u8tXFwBPAA9BgoMRTwALgIFAAABBHICJt8C/mQKAIBDA5AEs/pQYQNgVdSakUqn7pmn+MIMAHIQz+o4v1E/npc+hfj6/0ucCLRaLLxVBuV6tVt+CO0E0BAHQ779tbW3dU1X1dlTX1taWVE2b/V/TtIufqeoNRVQ2NjaWCOE9RLDtPyF4AOvr63cVmUPv4zDCbPEYYHNzEwDEAIH2vYwTgBHoDe8HjCAzAAOhXq/7kxADAM52sK1QAPnPAHB3wJOAJyBWCBYCiAGCfwsUvQXEH4w9PAHxQOj1emACYrId8BkQEwSagBgB+Ahz2wEDxASBAL5qmnYndgD+wZjP55+trKzcVIQkSZIkSZIk+QmI2qZ8Pa2ZVgAAAABJRU5ErkJggg==\"\nconst firefox = isFirefox()\n\n/**\n * This is the global loading shield. It seamlessly takes over from project.ejs, which has rendered\n * a placeholder UI with a placeholder logo. That placeholder UI is rebuild here. On top of which it\n * loads an iframe with the logo as video so it can play and loop without any stutter.\n * */\nfunction globalLoadingElement(shouldShow: boolean, isDarkMode: boolean) {\n\tconst iframeUrl = getIframeUrl(isDarkMode)\n\tconst logoDataUrl = isDarkMode ? logoDark : logoLight\n\tconst firefoxBackgroundWorkaroundColor = firefox && !isDarkMode ? \"#f0f0f0\" : undefined\n\n\treturn (\n\t\t<DelayUnmount visible={shouldShow} delay={LOADER_EXIT_DEBOUNCE_MS}>\n\t\t\t<div className={cx(styles.globalLoader, shouldShow && styles.visible)}>\n\t\t\t\t<div className={styles.placeholderToolbar} />\n\t\t\t\t<div className={styles.placeHolderUI} style={{ background: firefoxBackgroundWorkaroundColor }}>\n\t\t\t\t\t<div className={styles.centerFixed}>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tclassName={cx(styles.logo, styles.behind)}\n\t\t\t\t\t\t\tsrc={logoDataUrl}\n\t\t\t\t\t\t\talt=\"Loading \u2026\"\n\t\t\t\t\t\t\twidth=\"36\"\n\t\t\t\t\t\t\theight=\"36\"\n\t\t\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<iframe className={styles.logo} src={iframeUrl} title={Dictionary.LoadingEllipsis} width=\"36\" height=\"36\" />\n\t\t\t\t\t\t<div className={styles.progressBarBackground}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cx(\n\t\t\t\t\t\t\t\t\tstyles.progressBarForeground,\n\t\t\t\t\t\t\t\t\tstyles.progressBarAnimation,\n\t\t\t\t\t\t\t\t\t!shouldShow && styles.progressBarDoneAnimation,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</DelayUnmount>\n\t)\n}\n\nfunction getIframeUrl(isDarkMode: boolean) {\n\tconst debug = environment.isDebugBuild ? \".debug\" : \"\"\n\tconst theme = isDarkMode ? \"dark\" : \"light\"\n\treturn editorPath(`loading-iframe${debug}.html?theme=${theme}`)\n}\n", "import \"LoadingIndicator.styles_9dkq5r.wyw.css\"; export const pageLoaderWrapper = \"pageLoaderWrapper_p1iqt29\";\nexport const pageLoaderAnimation = \"pageLoaderAnimation_psgtt6k\";\nexport const globalLoader = \"globalLoader_g18lkp4v\";\nexport const visible = \"visible_vumnxbq\";\nexport const placeholderToolbar = \"placeholderToolbar_pi2h157\";\nexport const placeHolderUI = \"placeHolderUI_p8e06hj\";\nexport const centerFixed = \"centerFixed_cezugq8\";\nexport const logo = \"logo_l1k0awbv\";\nexport const behind = \"behind_b12wjb7d\";\nexport const progressBarBackground = \"progressBarBackground_p1mn7whg\";\nexport const progressBarForeground = \"progressBarForeground_p69lhxh\";\nexport const progressBarAnimation = \"progressBarAnimation_p1t4tyl0\";\nexport const progressBarDoneAnimation = \"progressBarDoneAnimation_p197ylm4\";", "import React from \"react\"\n\ninterface Props {\n\tchildren?: React.ReactNode\n\tdelay?: number\n\tvisible: boolean\n}\n\nexport function DelayUnmount({ delay = 500, visible = true, children }: Props) {\n\tconst [isVisible, setIsVisible] = React.useState(visible)\n\n\tReact.useEffect(() => {\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetIsVisible(visible)\n\t\t}, delay)\n\t\treturn () => clearTimeout(timer)\n\t}, [visible, delay])\n\n\treturn isVisible ? <>{children}</> : null\n}\n\ninterface DelayMountOrUnmountProps {\n\tchildren?: React.ReactNode\n\tvisible?: boolean\n\tmountDelay?: number\n\tunmountDelay?: number\n\tminimumVisible?: number\n}\n\nexport function DelayMountOrUnmount({\n\tchildren,\n\tvisible,\n\tmountDelay = 200,\n\tunmountDelay = 0,\n\tminimumVisible = 200,\n}: DelayMountOrUnmountProps) {\n\tconst now = performance.now()\n\n\tconst wasVisible = React.useRef(visible)\n\tconst lastChange = React.useRef(now)\n\tif (wasVisible.current !== visible) {\n\t\twasVisible.current = visible\n\t\tlastChange.current = now\n\t}\n\n\tconst lastVisible = React.useRef(mountDelay <= 0 && visible ? now : 0)\n\tconst [isVisible, setIsVisible] = React.useState(mountDelay <= 0 ? visible : false)\n\n\tlet timeout = 0\n\tlet computedVisible = isVisible\n\n\tif (visible === isVisible) {\n\t\t// nothing\n\t} else if (visible) {\n\t\tconst delta = now - lastChange.current\n\t\tif (delta >= mountDelay) {\n\t\t\tlastVisible.current = now\n\t\t\tcomputedVisible = true\n\t\t\t// TODO how to prevent this extra round of render due to updating this state?\n\t\t\tsetIsVisible(true)\n\t\t} else {\n\t\t\ttimeout = mountDelay - delta\n\t\t}\n\t} else {\n\t\tconst delta = now - lastChange.current\n\t\tconst visibleDelta = now - lastVisible.current\n\t\tif (delta >= unmountDelay && visibleDelta >= minimumVisible) {\n\t\t\tcomputedVisible = false\n\t\t\t// TODO how to prevent this extra round of render due to updating this state?\n\t\t\tsetIsVisible(false)\n\t\t} else {\n\t\t\ttimeout = Math.max(unmountDelay - delta, minimumVisible - visibleDelta)\n\t\t}\n\t}\n\n\tReact.useEffect(() => {\n\t\tif (timeout === 0) return\n\t\tconst timer = setTimeout(() => {\n\t\t\tsetIsVisible(visible)\n\t\t}, timeout)\n\t\treturn () => clearTimeout(timer)\n\t}, [visible, timeout, setIsVisible])\n\n\treturn computedVisible ? <>{children}</> : null\n}\n", "import \"PageLoader.styles_h9uufa.wyw.css\"; export const progress = \"progress_p6wqquw\";\nexport const running = \"running_risqx90\";\nexport const done = \"done_d116j3at\";", "import * as styles from \"./PageLoader.styles.ts\"\n\ninterface PageLoaderProps {\n\tcolor?: string\n\tdone: boolean\n}\n\nexport function PageLoader({ color = \"red\", done }: PageLoaderProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={[styles.progress, done ? styles.done : styles.running].join(\", \")}\n\t\t\tstyle={{\n\t\t\t\theight: 3,\n\t\t\t\tbackgroundColor: color,\n\t\t\t\twidth: \"100%\",\n\t\t\t}}\n\t\t></div>\n\t)\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,qBAAqB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAuF;AACtF,QAAM,oBAAoB;AAAA,IACzB,MAAM;AACL,UAAI,aAAa,SAAU,QAAO;AAElC,YAAM,YACL,CAAC,aAAa,0BAA0B,cACxC,CAAC,aAAa,mCAAmC,cACjD,aAAa,qBACb,aAAa;AAEd,YAAM,cAAc,WAAW;AAC/B,YAAM,iBAAiB,YAAY,SAAS,WAAW;AAEvD,aACC,CAAC,kBAAkB,YAAY,gCAAuC,YAAY,mBAAmB;AAAA,IAEvG;AAAA,IACA,CAAC;AAAA,IACD,CAAC,aAAa,cAAc,YAAY,YAAY;AAAA,EACrD;AAEA,SAAO;AACR;;;AC7BA,IAAAA,gBAA6D;;;ACQ7D,IAAAC,gBAAyC;;;ACXe,IAAM,oBAAoB;AAC3E,IAAM,sBAAsB;AAC5B,IAAM,eAAe;AACrB,IAAM,UAAU;AAChB,IAAM,qBAAqB;AAC3B,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,wBAAwB;AAC9B,IAAM,wBAAwB;AAC9B,IAAM,uBAAuB;AAC7B,IAAM,2BAA2B;;;ACZxC,mBAAkB;AAkBE;AAVb,SAAS,aAAa,EAAE,QAAQ,KAAK,SAAAC,WAAU,MAAM,SAAS,GAAU;AAC9E,QAAM,CAAC,WAAW,YAAY,IAAI,aAAAC,QAAM,SAASD,QAAO;AAExD,eAAAC,QAAM,UAAU,MAAM;AACrB,UAAM,QAAQ,WAAW,MAAM;AAC9B,mBAAaD,QAAO;AAAA,IACrB,GAAG,KAAK;AACR,WAAO,MAAM,aAAa,KAAK;AAAA,EAChC,GAAG,CAACA,UAAS,KAAK,CAAC;AAEnB,SAAO,YAAY,2EAAG,UAAS,IAAM;AACtC;AAUO,SAAS,oBAAoB;AAAA,EACnC;AAAA,EACA,SAAAA;AAAA,EACA,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAClB,GAA6B;AAC5B,QAAM,MAAM,YAAY,IAAI;AAE5B,QAAM,aAAa,aAAAC,QAAM,OAAOD,QAAO;AACvC,QAAM,aAAa,aAAAC,QAAM,OAAO,GAAG;AACnC,MAAI,WAAW,YAAYD,UAAS;AACnC,eAAW,UAAUA;AACrB,eAAW,UAAU;AAAA,EACtB;AAEA,QAAM,cAAc,aAAAC,QAAM,OAAO,cAAc,KAAKD,WAAU,MAAM,CAAC;AACrE,QAAM,CAAC,WAAW,YAAY,IAAI,aAAAC,QAAM,SAAS,cAAc,IAAID,WAAU,KAAK;AAElF,MAAI,UAAU;AACd,MAAI,kBAAkB;AAEtB,MAAIA,aAAY,WAAW;AAAA,EAE3B,WAAWA,UAAS;AACnB,UAAM,QAAQ,MAAM,WAAW;AAC/B,QAAI,SAAS,YAAY;AACxB,kBAAY,UAAU;AACtB,wBAAkB;AAElB,mBAAa,IAAI;AAAA,IAClB,OAAO;AACN,gBAAU,aAAa;AAAA,IACxB;AAAA,EACD,OAAO;AACN,UAAM,QAAQ,MAAM,WAAW;AAC/B,UAAM,eAAe,MAAM,YAAY;AACvC,QAAI,SAAS,gBAAgB,gBAAgB,gBAAgB;AAC5D,wBAAkB;AAElB,mBAAa,KAAK;AAAA,IACnB,OAAO;AACN,gBAAU,KAAK,IAAI,eAAe,OAAO,iBAAiB,YAAY;AAAA,IACvE;AAAA,EACD;AAEA,eAAAC,QAAM,UAAU,MAAM;AACrB,QAAI,YAAY,EAAG;AACnB,UAAM,QAAQ,WAAW,MAAM;AAC9B,mBAAaD,QAAO;AAAA,IACrB,GAAG,OAAO;AACV,WAAO,MAAM,aAAa,KAAK;AAAA,EAChC,GAAG,CAACA,UAAS,SAAS,YAAY,CAAC;AAEnC,SAAO,kBAAkB,2EAAG,UAAS,IAAM;AAC5C;;;ACpFkD,IAAM,WAAW;AAC5D,IAAM,UAAU;AAChB,IAAM,OAAO;;;ACOlB,IAAAE,sBAAA;AAFK,SAAS,WAAW,EAAE,QAAQ,OAAO,MAAAC,MAAK,GAAoB;AACpE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAW,CAAQ,UAAUA,QAAc,OAAc,OAAO,EAAE,KAAK,IAAI;AAAA,MAC3E,OAAO;AAAA,QACN,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,OAAO;AAAA,MACR;AAAA;AAAA,EACA;AAEH;;;AJ8EE,IAAAC,sBAAA;AAzEF,IAAM,mBAAmB;AAElB,IAAM,0BAA0B;AAEhC,IAAM,mBAAmB,cAAAC,QAAM,KAAK,SAASC,oBAAmB;AACtE,QAAM,CAAC,wBAAwB,yBAAyB,IAAI,cAAAD,QAAM,SAAS,CAAC,eAAO,eAAe,CAAC;AAEnG,QAAM,CAAC,kBAAkB,IAAI,qBAAqB,+BAA+B,KAAK;AAEtF,QAAM,aAAa,qBAAqB,eAAO,MAAM;AAErD,gBAAAA,QAAM,UAAU,MAAM;AACrB,QAAI,CAAC,uBAAwB;AAE7B,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,YAAY,CAAC,WAAW,OAAO;AAErC,cAAU,QAAQ,WAAS;AAC1B,eAAS;AAAA,QACR;AAAA,QACA,OAAK;AACJ,gBAAM,sBAAsB,EAAE,SAAS,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE;AAC9E,cAAI,qBAAqB;AACxB,sCAA0B,KAAK;AAAA,UAChC;AAAA,QACD;AAAA,QACA,EAAE,QAAQ,WAAW,OAAO;AAAA,MAC7B;AAAA,IACD,CAAC;AAED,WAAO,MAAM;AACZ,iBAAW,MAAM;AAAA,IAClB;AAAA,EACD,GAAG,CAAC,sBAAsB,CAAC;AAE3B,gBAAAA,QAAM,UAAU,MAAM;AACrB,QAAI,CAAC,uBAAwB;AAC7B,QAAI,CAAC,WAAY;AACjB,QAAI,YAAY,KAAK,gCAAgC,EAAG;AAExD,UAAM,YAAY,WAAW,MAAM;AAClC,gCAA0B,KAAK;AAAA,IAChC,GAAG,gBAAgB;AAEnB,WAAO,MAAM;AACZ,mBAAa,SAAS;AAAA,IACvB;AAAA,EACD,GAAG,CAAC,YAAY,sBAAsB,CAAC;AAEvC,MAAI,0BAA0B,CAAC,YAAY;AAE1C,8BAA0B,KAAK;AAAA,EAChC;AAEA,6BAA2B,sBAAsB;AAEjD,QAAM,kCAAkC,YAAY,wBAAwB,uBAAuB;AAGnG,QAAM,aAAa,yBAAyB,OAAO,qBAAqB,UAAU;AAElF,QAAM,EAAE,WAAW,IAAI,YAAY;AACnC,QAAME,gBAAe,qBAAqB,iCAAiC,UAAU;AAGrF,QAAM,uBAAuB,kCAC1B;AAAA,IACA,CAAC,6CAAuD,GACvD;AAAA,EACF,IACC;AAEH,SACC,8CAAC,SAAI,OAAO,sBACV;AAAA,IAAAA;AAAA,IACA;AAAA,KACC,yBAAyB,uBAAuB,6CAAC,oBAAiB;AAAA,KACrE;AAEF,CAAC;AAED,SAAS,2BAA2B,WAAoB;AACvD,QAAM,mBAAe,sBAAO,SAAS;AACrC,eAAa,UAAU;AAEvB,+BAAU,MAAM;AAGf,QAAI,CAAC,UAAW;AAEhB,QAAI,eAAe;AACnB,UAAM,YAAY,YAAY,IAAI;AAElC,UAAM,aAAa,IAAI,gBAAgB;AACvC,WAAO;AAAA,MACN;AAAA,MACA,MAAM;AACL;AAAA,MACD;AAAA,MACA,EAAE,QAAQ,WAAW,OAAO;AAAA,IAC7B;AAEA,WAAO,MAAM;AACZ,iBAAW,MAAM;AACjB,YAAM,iBAAiB;AACvB,qBAAe;AAGf,UAAI,aAAa,QAAS;AAC1B,UAAI,CAAC,YAAa;AAClB,sBAAgB,QAAQ;AAExB,YAAM,WAAW,YAAY,IAAI,IAAI;AACrC,YAAM,0BAA0B,eAAO,gBAAgB,oBAAoB;AAC3E,YAAM,YAAY,eAAO,OAAO,WAAW,kBAAkB,EAAE;AAC/D,YAAM,qBACL,eAAO,OAAO,UAAU,SAAS,SAC9B,eAAO,OAAO,UAAU,aAAa,MAAM,aAAa,EAAE,oBAAoB,IAC9E;AACJ,YAAM,SAAS,eAAO,KAAK,WAAW,QAAQ;AAC9C,YAAM,gBAAgB,eAAO,OAAO,WAAW;AAC/C,YAAM,4BAA4B,WAAW,UAAa,OAAO,eAAe,aAAa;AAC7F,YAAM,kBAAkB,eAAO,KAAK,IAAI,aAAa;AAIrD,UAAI;AACJ,UAAI,YAAY,iBAAiB,IAAI,KAAK,gBAAgB,SAAS,GAAG;AACrE,+BAAuB;AACvB,mBAAW,KAAK,gBAAgB,OAAO,KAAK,EAAG;AAAA,MAChD;AACA,YAAM,QAAQ,YAAY,aAAa;AAEvC,gBAAU,KAAK,EAAE,KAAK,0CAA8B,KAAK,MAAM,QAAQ,GAAG,IAAI;AAE9E,YAAM,aAAa;AAAA,QAClB,MAAM,MAAM,QAAQ;AAAA,QACpB,UAAU,MAAM,YAAY;AAAA,QAC5B,oBAAoB,MAAM,sBAAsB;AAAA,QAChD,YAAY,MAAM,cAAc;AAAA,QAChC,WAAW,MAAM,aAAa;AAAA,QAC9B,cAAc,MAAM,gBAAgB;AAAA,QACpC,oBAAoB,MAAM,sBAAsB;AAAA,QAChD,aAAa,MAAM,eAAe;AAAA,QAClC,iBAAiB,MAAM,mBAAmB;AAAA,QAC1C,0BAA0B,MAAM,4BAA4B;AAAA,QAC5D,kBAAkB,MAAM,oBAAoB;AAAA,QAC5C,eAAe,MAAM,iBAAiB;AAAA,QACtC,aAAa,MAAM,eAAe;AAAA,QAClC,cAAc,MAAM,gBAAgB;AAAA,QACpC,sBAAsB,MAAM,wBAAwB;AAAA,QACpD,0BAA0B,MAAM,4BAA4B;AAAA,QAC5D,iCAAiC,MAAM,mCAAmC;AAAA,QAC1E,yBAAyB,MAAM,2BAA2B;AAAA,QAC1D,oBAAoB,MAAM,sBAAsB;AAAA,QAChD,WAAW,MAAM,aAAa;AAAA,QAC9B,aAAa,MAAM,eAAe;AAAA,QAClC,4BAA4B,MAAM,8BAA8B;AAAA,QAChE,qBAAqB,MAAM,uBAAuB;AAAA,QAClD,4BAA4B,MAAM,8BAA8B;AAAA,QAChE,4BAA4B,MAAM,8BAA8B;AAAA,QAChE,2BAA2B,MAAM,6BAA6B;AAAA,QAC9D,4BAA4B,MAAM,8BAA8B;AAAA,QAChE,6BAA6B,MAAM,+BAA+B;AAAA,QAClE,oBAAoB,MAAM,sBAAsB;AAAA,QAChD,kCAAkC,MAAM,oCAAoC;AAAA,QAC5E,4BAA4B,MAAM,8BAA8B;AAAA,MACjE;AAGA,iBAAW,OAAO,YAAY;AAC7B,mBAAW,GAA8B,IAAI,KAAK,MAAM,WAAW,GAA8B,CAAC;AAAA,MACnG;AAEA,YAAM,kBAAkB,YAAY,eAAe,GAAG;AACtD,YAAM,mBAAmB,oBAAoB,cAAc,kBAAmB,mBAAmB;AACjG,YAAM,yBAAyB,YAAY,0BAA0B;AAErE,aAAO,+BAA+B;AAAA,QACrC,yBAAyB,KAAK,MAAM,QAAQ;AAAA,QAC5C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,QAAQ,qBAAqB;AAAA,QAC7B;AAAA,QACA,iBAAiB,YAAY,eAAe,GAAG,QAAQ,KAAK,GAAG,KAAK;AAAA,QACpE,sBAAsB,eAAO,OAAO,UAAU;AAAA,QAC9C,QAAQ,YAAY,QAAQ;AAAA,QAC5B,mCAAmC,wBAAwB;AAAA,QAC3D,sCAAsC,wBAAwB;AAAA,QAC9D,kCAAkC,wBAAwB;AAAA,QAC1D,2BAA2B,wBAAwB;AAAA,QACnD,qCAAqC,wBAAwB;AAAA,QAC7D,8BAA8B,wBAAwB;AAAA,QACtD,GAAG;AAAA,MACJ,CAAC;AAAA,IACF;AAAA,EACD,GAAG,CAAC,SAAS,CAAC;AACf;AAEA,SAAS,qBAAqB,YAAqB;AAClD,SACC,6CAAC,gBAAa,SAAS,YAAY,OAAO,yBACzC,uDAAC,SAAI,WAAW,WAAU,mBAA0B,mBAAmB,GACtE,uDAAC,cAAW,OAAO,OAAO,MAAM,MAAM,CAAC,YAAY,GACpD,GACD;AAEF;AAEA,IAAM,YACL;AACD,IAAM,WACL;AACD,IAAM,UAAU,UAAU;AAO1B,SAAS,qBAAqB,YAAqB,YAAqB;AACvE,QAAM,YAAY,aAAa,UAAU;AACzC,QAAM,cAAc,aAAa,WAAW;AAC5C,QAAM,mCAAmC,WAAW,CAAC,aAAa,YAAY;AAE9E,SACC,6CAAC,gBAAa,SAAS,YAAY,OAAO,yBACzC,wDAAC,SAAI,WAAW,WAAU,cAAc,cAAqB,OAAO,GACnE;AAAA,iDAAC,SAAI,WAAkB,oBAAoB;AAAA,IAC3C,6CAAC,SAAI,WAAkB,eAAe,OAAO,EAAE,YAAY,iCAAiC,GAC3F,wDAAC,SAAI,WAAkB,aACtB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,WAAW,WAAU,MAAa,MAAM;AAAA,UACxC,KAAK;AAAA,UACL,KAAI;AAAA,UACJ,OAAM;AAAA,UACN,QAAO;AAAA,UACP,UAAS;AAAA;AAAA,MACV;AAAA,MACA,6CAAC,YAAO,WAAkB,MAAM,KAAK,WAAW,8CAAmC,OAAM,MAAK,QAAO,MAAK;AAAA,MAC1G,6CAAC,SAAI,WAAkB,uBACtB;AAAA,QAAC;AAAA;AAAA,UACA,WAAW;AAAA,YACH;AAAA,YACA;AAAA,YACP,CAAC,cAAqB;AAAA,UACvB;AAAA;AAAA,MACD,GACD;AAAA,OACD,GACD;AAAA,KACD,GACD;AAEF;AAEA,SAAS,aAAa,YAAqB;AAC1C,QAAM,QAAQ,YAAY,eAAe,WAAW;AACpD,QAAM,QAAQ,aAAa,SAAS;AACpC,SAAO,WAAW,iBAAiB,KAAK,eAAe,KAAK,EAAE;AAC/D;;;ADzPG,IAAAC,sBAAA;AAjCH,IAAM,eAAe,MAAM,OAAO,8CAAgB;AAElD,IAAM,gBAAgB,cAAAC,QAAM,KAAK,MAAM,aAAa,CAAC;AAE9C,SAAS,kBAAkB;AACjC,OAAK,aAAa;AACnB;AAKO,IAAM,WAAW,cAAAA,QAAM,KAAK,SAASC,YAAW;AACtD,QAAM,eAAe,4BAA4B,cAAc;AAC/D,QAAM,oBAAoB,qBAAqB,eAAO,MAAM;AAC5D,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,wBAAS,KAAK;AAC1D,QAAM,sBAAkB,sBAAO,KAAK;AACpC,+BAAU,MAAM;AACf,QAAI,mBAAmB;AACtB,UAAI,CAAC,gBAAgB,QAAS,mBAAkB,KAAK;AAAA,IACtD,OAAO;AACN,YAAM,IAAI,WAAW,MAAM;AAC1B,0BAAkB,IAAI;AACtB,wBAAgB,UAAU;AAAA,MAC3B,GAAG,uBAAuB;AAC1B,aAAO,MAAM,aAAa,CAAC;AAAA,IAC5B;AAAA,EACD,GAAG,CAAC,iBAAiB,CAAC;AAEtB,MAAI,CAAC,aAAc,QAAO;AAC1B,MAAI,CAAC,gBAAgB,WAAW,CAAC,eAAgB,QAAO;AAExD,SACC,6CAAC,0BAAS,UAAU,MACnB,uDAAC,iBAAc,GAChB;AAEF,CAAC;",
  "names": ["import_react", "import_react", "visible", "React", "import_jsx_runtime", "done", "import_jsx_runtime", "React", "LoadingIndicator", "globalLoader", "import_jsx_runtime", "React", "DebugBar"]
}
