From 9667f2bf38136a34a6f14fbce532376b2cce6443 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Thu, 25 Sep 2025 17:01:09 -0700 Subject: [PATCH 001/146] move reconnct --- .../src/app/project/[id]/_hooks/use-start-project.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/web/client/src/app/project/[id]/_hooks/use-start-project.tsx b/apps/web/client/src/app/project/[id]/_hooks/use-start-project.tsx index c89d8f6bf1..1aef306062 100644 --- a/apps/web/client/src/app/project/[id]/_hooks/use-start-project.tsx +++ b/apps/web/client/src/app/project/[id]/_hooks/use-start-project.tsx @@ -53,6 +53,12 @@ export const useStartProject = () => { } }, [sandbox.session.isConnecting]); + useEffect(() => { + if (tabState === 'reactivated') { + sandbox.session.reconnect(editorEngine.projectId, user?.id); + } + }, [tabState, sandbox.session]); + useEffect(() => { if (canvasWithFrames) { editorEngine.canvas.applyCanvas(canvasWithFrames.userCanvas); @@ -135,11 +141,6 @@ export const useStartProject = () => { } }; - useEffect(() => { - if (tabState === 'reactivated') { - editorEngine.activeSandbox.session.reconnect(editorEngine.projectId, user?.id); - } - }, [tabState]); useEffect(() => { setError(userError?.message ?? canvasError?.message ?? conversationsError?.message ?? creationRequestError?.message ?? null); From 5bdf73241352b7e551c1310481f95c95399eaaa8 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Thu, 25 Sep 2025 18:13:29 -0700 Subject: [PATCH 002/146] wip: integrate new fs system --- .../left-panel/brand-tab/index.tsx | 25 +- .../right-panel/code-tab/index.tsx | 9 +- .../client/src/app/test-sync-engine/page.tsx | 2 +- .../components/store/editor/sandbox/index.ts | 1002 +++++++++-------- .../client/src/services/sync-engine/index.ts | 3 +- ...{useSyncEngine.tsx => use-sync-engine.tsx} | 0 6 files changed, 537 insertions(+), 504 deletions(-) rename apps/web/client/src/services/sync-engine/{useSyncEngine.tsx => use-sync-engine.tsx} (100%) diff --git a/apps/web/client/src/app/project/[id]/_components/left-panel/brand-tab/index.tsx b/apps/web/client/src/app/project/[id]/_components/left-panel/brand-tab/index.tsx index d2b5054bed..bfd21dce4f 100644 --- a/apps/web/client/src/app/project/[id]/_components/left-panel/brand-tab/index.tsx +++ b/apps/web/client/src/app/project/[id]/_components/left-panel/brand-tab/index.tsx @@ -110,20 +110,21 @@ export const BrandTab = observer(() => { } }; - // Listen for file changes in the sandbox - const unsubscribe = editorEngine.activeSandbox.fileEventBus.subscribe('*', (event) => { - // Check if any of the changed files are Tailwind config files - const isTailwindConfigChange = event.paths.some(path => - path.includes('tailwind.config') || path.includes('globals.css') - ); - - if (isTailwindConfigChange && event.paths[0]) { - handleFileChange(event.paths[0]); - } - }); + // TODO: use fs hook + // // Listen for file changes in the sandbox + // const unsubscribe = editorEngine.activeSandbox.fileEventBus.subscribe('*', (event) => { + // // Check if any of the changed files are Tailwind config files + // const isTailwindConfigChange = event.paths.some(path => + // path.includes('tailwind.config') || path.includes('globals.css') + // ); + + // if (isTailwindConfigChange && event.paths[0]) { + // handleFileChange(event.paths[0]); + // } + // }); return () => { - unsubscribe(); + // unsubscribe(); }; }, [editorEngine.theme, editorEngine.activeSandbox]); diff --git a/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/index.tsx b/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/index.tsx index 2d6f79c215..f844f0965d 100644 --- a/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/index.tsx +++ b/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/index.tsx @@ -161,13 +161,13 @@ export const CodeTab = observer(() => { // Create the selection and apply it in a single transaction const selection = EditorSelection.create([EditorSelection.range(startPos, endPos)]); - + editorView.dispatch({ selection, effects: [ EditorView.scrollIntoView(startPos, { y: 'start', - yMargin: 48 + yMargin: 48 }) ], userEvent: 'select.element' @@ -226,10 +226,11 @@ export const CodeTab = observer(() => { } }; - const unsubscribe = activeSandbox.fileEventBus.subscribe('*', handleFileEvent); + // TODO: use fs hook + // const unsubscribe = activeSandbox.fileEventBus.subscribe('*', handleFileEvent); return () => { - unsubscribe(); + // unsubscribe(); }; }, [activeSandbox, ide.activeFile, editorEngine.branches.activeBranch.id]); diff --git a/apps/web/client/src/app/test-sync-engine/page.tsx b/apps/web/client/src/app/test-sync-engine/page.tsx index 1132cb8c64..1b73309919 100644 --- a/apps/web/client/src/app/test-sync-engine/page.tsx +++ b/apps/web/client/src/app/test-sync-engine/page.tsx @@ -10,7 +10,7 @@ import { useDirectory, useFile, useFS } from '@onlook/file-system/hooks'; import { Alert, AlertDescription } from '@onlook/ui/alert'; import { Badge } from '@onlook/ui/badge'; -import { useSyncEngine } from '@/services/sync-engine/useSyncEngine'; +import { useSyncEngine } from '@/services/sync-engine/use-sync-engine'; import { api } from '@/trpc/react'; import { FileEditor } from './_components/file-editor'; import type { FileNode } from './_components/file-explorer'; diff --git a/apps/web/client/src/components/store/editor/sandbox/index.ts b/apps/web/client/src/components/store/editor/sandbox/index.ts index 332a132100..56f408b8d4 100644 --- a/apps/web/client/src/components/store/editor/sandbox/index.ts +++ b/apps/web/client/src/components/store/editor/sandbox/index.ts @@ -1,30 +1,25 @@ +import { CodeProviderSync } from '@/services/sync-engine/sync-engine'; import type { ListFilesOutputFile, Provider, - ProviderFileWatcher, - WatchEvent, + WatchEvent } from '@onlook/code-provider'; import { EXCLUDED_SYNC_DIRECTORIES, - NEXT_JS_FILE_EXTENSIONS, - PRELOAD_SCRIPT_SRC, + NEXT_JS_FILE_EXTENSIONS } from '@onlook/constants'; +import { FileSystem } from '@onlook/file-system'; import { RouterType, type Branch, type SandboxFile } from '@onlook/models'; import { getBaseName, getDirName, - isImageFile, - isRootLayoutFile, - isSubdirectory + isRootLayoutFile } from '@onlook/utility'; import { makeAutoObservable, reaction } from 'mobx'; import path from 'path'; import { env } from 'process'; import type { EditorEngine } from '../engine'; import type { ErrorManager } from '../error'; -import { detectRouterTypeInSandbox } from '../pages/helper'; -import { FileEventBus } from './file-event-bus'; -import { FileSyncManager } from './file-sync'; import { normalizePath } from './helpers'; import { SessionManager } from './session'; @@ -32,17 +27,20 @@ const isDev = env.NODE_ENV === 'development'; export class SandboxManager { readonly session: SessionManager; - readonly fileEventBus: FileEventBus = new FileEventBus(); + // readonly fileEventBus: FileEventBus = new FileEventBus(); // Add router configuration private _routerConfig: { type: RouterType; basePath: string } | null = null; - private fileWatcher: ProviderFileWatcher | null = null; - private fileSync: FileSyncManager; + // private fileWatcher: ProviderFileWatcher | null = null; + // private fileSync: FileSyncManager; private _isIndexed = false; private _isIndexing = false; + // private _discoveredFiles: string[] = []; private providerReactionDisposer?: () => void; - private _discoveredFiles: string[] = []; + + private fs: FileSystem | null = null; + private sync: CodeProviderSync | null = null; constructor( private branch: Branch, @@ -53,7 +51,7 @@ export class SandboxManager { this.branch, this.errorManager ); - this.fileSync = new FileSyncManager(this.branch.projectId, this.branch.id); + // this.fileSync = new FileSyncManager(this.branch.projectId, this.branch.id); makeAutoObservable(this); } @@ -61,13 +59,26 @@ export class SandboxManager { this.providerReactionDisposer = reaction( () => this.session.provider, (provider) => { - this._isIndexed = false; + // this._isIndexed = false; + // if (provider) { + // this.index(); + // } + if (provider) { - this.index(); + if (this.sync) { + this.sync?.stop(); + this.sync = null; + } + this.fs = new FileSystem(`/${this.editorEngine.projectId}/${this.branch.id}`); + this.sync = new CodeProviderSync(provider, this.fs, { + // TODO: add config + exclude: EXCLUDED_SYNC_DIRECTORIES, + }); + void this.sync.start(); } }, ); - await this.fileSync.init(); + // await this.fileSync.init(); } get isIndexed() { @@ -87,139 +98,141 @@ export class SandboxManager { } async index(force = false) { - console.log(`[SandboxManager] Starting indexing for ${this.branch.projectId}/${this.branch.id}, force: ${force}`); + // console.log(`[SandboxManager] Starting indexing for ${this.branch.projectId}/${this.branch.id}, force: ${force}`); - if (this._isIndexing || (this._isIndexed && !force)) { - return; - } + // if (this._isIndexing || (this._isIndexed && !force)) { + // return; + // } - if (!this.session.provider) { - console.error('No provider found for indexing'); - return; - } + // if (!this.session.provider) { + // console.error('No provider found for indexing'); + // return; + // } - this._isIndexing = true; + // this._isIndexing = true; - try { - // Detect router configuration first - if (!this._routerConfig) { - this._routerConfig = await detectRouterTypeInSandbox(this); - } + // try { + // // Detect router configuration first + // if (!this._routerConfig) { + // this._routerConfig = await detectRouterTypeInSandbox(this); + // } - // Get all file paths - const allFilePaths = await this.getAllFilePathsFlat('./', EXCLUDED_SYNC_DIRECTORIES); - this._discoveredFiles = allFilePaths; + // // Get all file paths + // const allFilePaths = await this.getAllFilePathsFlat('./', EXCLUDED_SYNC_DIRECTORIES); + // this._discoveredFiles = allFilePaths; - // Process files in non-blocking batches - await this.processFilesInBatches(allFilePaths); + // // Process files in non-blocking batches + // await this.processFilesInBatches(allFilePaths); - await this.watchFiles(); - this._isIndexed = true; - } catch (error) { - console.error('Error during indexing:', error); - throw error; - } finally { - this._isIndexing = false; - } + // await this.watchFiles(); + // this._isIndexed = true; + // } catch (error) { + // console.error('Error during indexing:', error); + // throw error; + // } finally { + // this._isIndexing = false; + // } } /** * Process files in non-blocking batches to avoid blocking the UI thread */ private async processFilesInBatches(allFilePaths: string[], batchSize = 10): Promise { - for (let i = 0; i < allFilePaths.length; i += batchSize) { - const batch = allFilePaths.slice(i, i + batchSize); - - // Process batch in parallel for better performance - const batchPromises = batch.map(async (filePath) => { - // Track image files first - if (isImageFile(filePath)) { - this.fileSync.writeEmptyFile(filePath, 'binary'); - return; - } - - // Check cache first - const cachedFile = this.fileSync.readCache(filePath); - if (cachedFile && cachedFile.content !== null) { - if (this.isJsxFile(filePath)) { - await this.processFileForMapping(cachedFile); - } - } else { - const file = await this.fileSync.readOrFetch(filePath, this.readRemoteFile.bind(this)); - if (file && this.isJsxFile(filePath)) { - await this.processFileForMapping(file); - } - } - }); - - await Promise.all(batchPromises); - - // Yield control to the event loop after each batch - if (i + batchSize < allFilePaths.length) { - await new Promise(resolve => setTimeout(resolve, 1)); - } - } + // for (let i = 0; i < allFilePaths.length; i += batchSize) { + // const batch = allFilePaths.slice(i, i + batchSize); + + // // Process batch in parallel for better performance + // const batchPromises = batch.map(async (filePath) => { + // // Track image files first + // if (isImageFile(filePath)) { + // this.fileSync.writeEmptyFile(filePath, 'binary'); + // return; + // } + + // // Check cache first + // const cachedFile = this.fileSync.readCache(filePath); + // if (cachedFile && cachedFile.content !== null) { + // if (this.isJsxFile(filePath)) { + // await this.processFileForMapping(cachedFile); + // } + // } else { + // const file = await this.fileSync.readOrFetch(filePath, this.readRemoteFile.bind(this)); + // if (file && this.isJsxFile(filePath)) { + // await this.processFileForMapping(file); + // } + // } + // }); + + // await Promise.all(batchPromises); + + // // Yield control to the event loop after each batch + // if (i + batchSize < allFilePaths.length) { + // await new Promise(resolve => setTimeout(resolve, 1)); + // } + // } } /** * Optimized flat file discovery - similar to hosting manager approach */ private async getAllFilePathsFlat(rootDir: string, excludeDirs: string[]): Promise { - if (!this.session.provider) { - throw new Error('No provider available for file discovery'); - } - - const allPaths: string[] = []; - const dirsToProcess = [rootDir]; - - while (dirsToProcess.length > 0) { - const currentDir = dirsToProcess.shift()!; - try { - const { files } = await this.session.provider?.listFiles({ - args: { - path: currentDir, - }, - }); - - for (const entry of files) { - const fullPath = `${currentDir}/${entry.name}`; - const normalizedPath = normalizePath(fullPath); - - if (entry.type === 'directory') { - // Skip excluded directories - if (!excludeDirs.includes(entry.name)) { - dirsToProcess.push(normalizedPath); - } - this.fileSync.updateDirectoryCache(normalizedPath); - } else if (entry.type === 'file') { - allPaths.push(normalizedPath); - } - } - } catch (error) { - console.warn(`Error reading directory ${currentDir}:`, error); - } - } - - return allPaths; + return []; + // if (!this.session.provider) { + // throw new Error('No provider available for file discovery'); + // } + + // const allPaths: string[] = []; + // const dirsToProcess = [rootDir]; + + // while (dirsToProcess.length > 0) { + // const currentDir = dirsToProcess.shift()!; + // try { + // const { files } = await this.session.provider?.listFiles({ + // args: { + // path: currentDir, + // }, + // }); + + // for (const entry of files) { + // const fullPath = `${currentDir}/${entry.name}`; + // const normalizedPath = normalizePath(fullPath); + + // if (entry.type === 'directory') { + // // Skip excluded directories + // if (!excludeDirs.includes(entry.name)) { + // dirsToProcess.push(normalizedPath); + // } + // this.fileSync.updateDirectoryCache(normalizedPath); + // } else if (entry.type === 'file') { + // allPaths.push(normalizedPath); + // } + // } + // } catch (error) { + // console.warn(`Error reading directory ${currentDir}:`, error); + // } + // } + + // return allPaths; } private async readRemoteFile(filePath: string): Promise { - if (!this.session.provider) { - console.error('No provider found for remote read'); - throw new Error('No provider found for remote read'); - } - - try { - const { file } = await this.session.provider.readFile({ - args: { - path: filePath, - }, - }); - return file; - } catch (error) { - console.error(`Error reading remote file ${filePath}:`, error); - return null; - } + return null; + // if (!this.session.provider) { + // console.error('No provider found for remote read'); + // throw new Error('No provider found for remote read'); + // } + + // try { + // const { file } = await this.session.provider.readFile({ + // args: { + // path: filePath, + // }, + // }); + // return file; + // } catch (error) { + // console.error(`Error reading remote file ${filePath}:`, error); + // return null; + // } } private async writeRemoteFile( @@ -227,78 +240,82 @@ export class SandboxManager { content: string | Uint8Array, overwrite = true, ): Promise { - if (!this.session.provider) { - console.error('No provider found for remote write'); - return false; - } - - try { - const res = await this.session.provider.writeFile({ - args: { - path: filePath, - content, - overwrite, - }, - }); - return res.success; - } catch (error) { - console.error(`Error writing remote file ${filePath}:`, error); - return false; - } + return false; + // if (!this.session.provider) { + // console.error('No provider found for remote write'); + // return false; + // } + + // try { + // const res = await this.session.provider.writeFile({ + // args: { + // path: filePath, + // content, + // overwrite, + // }, + // }); + // return res.success; + // } catch (error) { + // console.error(`Error writing remote file ${filePath}:`, error); + // return false; + // } } async readFile(path: string, remote = false): Promise { - const normalizedPath = normalizePath(path); - if (remote) { - return this.readRemoteFile(normalizedPath); - } - return this.fileSync.readOrFetch(normalizedPath, this.readRemoteFile.bind(this)); + return null; + // const normalizedPath = normalizePath(path); + // if (remote) { + // return this.readRemoteFile(normalizedPath); + // } + // return this.fileSync.readOrFetch(normalizedPath, this.readRemoteFile.bind(this)); } async readFiles(paths: string[]): Promise> { - const results = new Map(); - for (const path of paths) { - const file = await this.readFile(path); - if (!file) { - console.error(`Failed to read file ${path}`); - continue; - } - results.set(path, file); - } - return Object.fromEntries(results); + return {}; + // const results = new Map(); + // for (const path of paths) { + // const file = await this.readFile(path); + // if (!file) { + // console.error(`Failed to read file ${path}`); + // continue; + // } + // results.set(path, file); + // } + // return Object.fromEntries(results); } async writeFile(path: string, content: string): Promise { - const normalizedPath = normalizePath(path); - let writeContent = content; - - // If the file is a JSX file, we need to process it for mapping before writing - if (this.isJsxFile(normalizedPath)) { - try { - const { newContent } = await this.editorEngine.templateNodes.processFileForMapping( - this.branch.id, - normalizedPath, - content, - this.routerConfig?.type, - ); - writeContent = newContent; - } catch (error) { - console.error(`Error processing file ${normalizedPath}:`, error); - } - } - const success = await this.fileSync.write( - normalizedPath, - writeContent, - this.writeRemoteFile.bind(this), - ); - - if (!success) { - return false; - } - - this.editorEngine.screenshot.captureScreenshot(); - - return true; + return false; + // const normalizedPath = normalizePath(path); + // let writeContent = content; + + // // If the file is a JSX file, we need to process it for mapping before writing + // if (this.isJsxFile(normalizedPath)) { + // try { + // const { newContent } = await this.editorEngine.templateNodes.processFileForMapping( + // this.branch.id, + // normalizedPath, + // content, + // this.routerConfig?.type, + // ); + // writeContent = newContent; + // } catch (error) { + // console.error(`Error processing file ${normalizedPath}:`, error); + // } + // } + // const success = await this.fileSync.write( + // normalizedPath, + // writeContent, + // this.writeRemoteFile.bind(this), + // ); + + // if (!success) { + // return false; + // } + + // this.editorEngine.screenshot.captureScreenshot(); + + // return true; } isJsxFile(filePath: string): boolean { @@ -310,38 +327,42 @@ export class SandboxManager { } async writeBinaryFile(path: string, content: Buffer | Uint8Array): Promise { - const normalizedPath = normalizePath(path); - try { - return this.fileSync.write(normalizedPath, content, this.writeRemoteFile.bind(this)); - } catch (error) { - console.error(`Error writing binary file ${normalizedPath}:`, error); - return false; - } + return false; + // const normalizedPath = normalizePath(path); + // try { + // return this.fileSync.write(normalizedPath, content, this.writeRemoteFile.bind(this)); + // } catch (error) { + // console.error(`Error writing binary file ${normalizedPath}:`, error); + // return false; + // } } get files() { - return this._discoveredFiles; + return []; + // return this._discoveredFiles; } get directories() { - return this.fileSync.listAllDirectories(); + return []; + // return this.fileSync.listAllDirectories(); } listAllFiles() { - return this.fileSync.listAllFiles(); + // return this.fileSync.listAllFiles(); } async readDir(dir: string): Promise { - if (!this.session.provider) { - console.error('No provider found for read dir'); - return Promise.resolve([]); - } - const { files } = await this.session.provider.listFiles({ - args: { - path: dir, - }, - }); - return files; + return []; + // if (!this.session.provider) { + // console.error('No provider found for read dir'); + // return Promise.resolve([]); + // } + // const { files } = await this.session.provider.listFiles({ + // args: { + // path: dir, + // }, + // }); + // return files; } async listFilesRecursively( @@ -349,40 +370,41 @@ export class SandboxManager { ignoreDirs: string[] = [], ignoreExtensions: string[] = [], ): Promise { - if (!this.session.provider) { - console.error('No provider found for list files recursively'); - return []; - } - - const results: string[] = []; - const { files } = await this.session.provider.listFiles({ - args: { - path: dir, - }, - }); - - for (const entry of files) { - const fullPath = `${dir}/${entry.name}`; - const normalizedPath = normalizePath(fullPath); - if (entry.type === 'directory') { - if (ignoreDirs.includes(entry.name)) { - continue; - } - const subFiles = await this.listFilesRecursively( - normalizedPath, - ignoreDirs, - ignoreExtensions, - ); - results.push(...subFiles); - } else { - const extension = path.extname(entry.name); - if (ignoreExtensions.length > 0 && !ignoreExtensions.includes(extension)) { - continue; - } - results.push(normalizedPath); - } - } - return results; + return []; + // if (!this.session.provider) { + // console.error('No provider found for list files recursively'); + // return []; + // } + + // const results: string[] = []; + // const { files } = await this.session.provider.listFiles({ + // args: { + // path: dir, + // }, + // }); + + // for (const entry of files) { + // const fullPath = `${dir}/${entry.name}`; + // const normalizedPath = normalizePath(fullPath); + // if (entry.type === 'directory') { + // if (ignoreDirs.includes(entry.name)) { + // continue; + // } + // const subFiles = await this.listFilesRecursively( + // normalizedPath, + // ignoreDirs, + // ignoreExtensions, + // ); + // results.push(...subFiles); + // } else { + // const extension = path.extname(entry.name); + // if (ignoreExtensions.length > 0 && !ignoreExtensions.includes(extension)) { + // continue; + // } + // results.push(normalizedPath); + // } + // } + // return results; } // Download the code as a zip @@ -412,162 +434,162 @@ export class SandboxManager { } async watchFiles() { - if (!this.session.provider) { - console.error('No provider found for watch files'); - return; - } - - // Dispose of existing watcher if it exists - if (this.fileWatcher) { - // Stop previous watcher before starting a new one - await this.fileWatcher.stop(); - this.fileWatcher = null; - } - - // Convert ignored directories to glob patterns with ** wildcard - const excludePatterns = EXCLUDED_SYNC_DIRECTORIES.map((dir) => `${dir}/**`); - - const res = await this.session.provider.watchFiles({ - args: { - path: './', - recursive: true, - excludes: excludePatterns, - }, - onFileChange: async (event) => { - this.fileEventBus.publish({ - type: event.type, - paths: event.paths, - timestamp: Date.now(), - }); - await this.handleFileChange(event); - }, - }); - - this.fileWatcher = res.watcher; + // if (!this.session.provider) { + // console.error('No provider found for watch files'); + // return; + // } + + // // Dispose of existing watcher if it exists + // if (this.fileWatcher) { + // // Stop previous watcher before starting a new one + // await this.fileWatcher.stop(); + // this.fileWatcher = null; + // } + + // // Convert ignored directories to glob patterns with ** wildcard + // const excludePatterns = EXCLUDED_SYNC_DIRECTORIES.map((dir) => `${dir}/**`); + + // const res = await this.session.provider.watchFiles({ + // args: { + // path: './', + // recursive: true, + // excludes: excludePatterns, + // }, + // onFileChange: async (event) => { + // this.fileEventBus.publish({ + // type: event.type, + // paths: event.paths, + // timestamp: Date.now(), + // }); + // await this.handleFileChange(event); + // }, + // }); + + // this.fileWatcher = res.watcher; } async handleFileChange(event: WatchEvent) { - const eventType = event.type; - - if (eventType === 'remove') { - for (const path of event.paths) { - if (isSubdirectory(path, EXCLUDED_SYNC_DIRECTORIES)) { - continue; - } - const normalizedPath = normalizePath(path); - - const isDirectory = this.fileSync.hasDirectory(normalizedPath); - - if (isDirectory) { - this.fileSync.deleteDir(normalizedPath); - this.fileEventBus.publish({ - type: eventType, - paths: [normalizedPath], - timestamp: Date.now(), - }); - continue; - } - - await this.fileSync.delete(normalizedPath); - - this.fileEventBus.publish({ - type: eventType, - paths: [normalizedPath], - timestamp: Date.now(), - }); - } - if (isDev && event.paths.some((path) => path.includes(PRELOAD_SCRIPT_SRC))) { - await this.editorEngine.preloadScript.ensurePreloadScriptFile(); - } - } else if (eventType === 'change' || eventType === 'add') { - const provider = this.session.provider; - if (!provider) { - console.error('No provider found for handle file change'); - return; - } - - if (event.paths.length === 2) { - await this.handleFileRenameEvent(event, provider); - } - - for (const path of event.paths) { - if (isSubdirectory(path, EXCLUDED_SYNC_DIRECTORIES)) { - continue; - } - const stat = await provider.statFile({ - args: { - path, - }, - }); - - if (stat?.type === 'directory') { - const normalizedPath = normalizePath(path); - this.fileSync.updateDirectoryCache(normalizedPath); - continue; - } - - const normalizedPath = normalizePath(path); - await this.handleFileChangedEvent(normalizedPath); - this.fileEventBus.publish({ - type: eventType, - paths: [normalizedPath], - timestamp: Date.now(), - }); - } - } + // const eventType = event.type; + + // if (eventType === 'remove') { + // for (const path of event.paths) { + // if (isSubdirectory(path, EXCLUDED_SYNC_DIRECTORIES)) { + // continue; + // } + // const normalizedPath = normalizePath(path); + + // const isDirectory = this.fileSync.hasDirectory(normalizedPath); + + // if (isDirectory) { + // this.fileSync.deleteDir(normalizedPath); + // this.fileEventBus.publish({ + // type: eventType, + // paths: [normalizedPath], + // timestamp: Date.now(), + // }); + // continue; + // } + + // await this.fileSync.delete(normalizedPath); + + // this.fileEventBus.publish({ + // type: eventType, + // paths: [normalizedPath], + // timestamp: Date.now(), + // }); + // } + // if (isDev && event.paths.some((path) => path.includes(PRELOAD_SCRIPT_SRC))) { + // await this.editorEngine.preloadScript.ensurePreloadScriptFile(); + // } + // } else if (eventType === 'change' || eventType === 'add') { + // const provider = this.session.provider; + // if (!provider) { + // console.error('No provider found for handle file change'); + // return; + // } + + // if (event.paths.length === 2) { + // await this.handleFileRenameEvent(event, provider); + // } + + // for (const path of event.paths) { + // if (isSubdirectory(path, EXCLUDED_SYNC_DIRECTORIES)) { + // continue; + // } + // const stat = await provider.statFile({ + // args: { + // path, + // }, + // }); + + // if (stat?.type === 'directory') { + // const normalizedPath = normalizePath(path); + // this.fileSync.updateDirectoryCache(normalizedPath); + // continue; + // } + + // const normalizedPath = normalizePath(path); + // await this.handleFileChangedEvent(normalizedPath); + // this.fileEventBus.publish({ + // type: eventType, + // paths: [normalizedPath], + // timestamp: Date.now(), + // }); + // } + // } } async handleFileRenameEvent(event: WatchEvent, provider: Provider) { - // This mean rename a file or a folder, move a file or a folder - const [oldPath, newPath] = event.paths; + // // This mean rename a file or a folder, move a file or a folder + // const [oldPath, newPath] = event.paths; - if (!oldPath || !newPath) { - console.error('Invalid rename event', event); - return; - } + // if (!oldPath || !newPath) { + // console.error('Invalid rename event', event); + // return; + // } - const oldNormalizedPath = normalizePath(oldPath); - const newNormalizedPath = normalizePath(newPath); + // const oldNormalizedPath = normalizePath(oldPath); + // const newNormalizedPath = normalizePath(newPath); - const stat = await provider.statFile({ - args: { - path: newPath, - }, - }); + // const stat = await provider.statFile({ + // args: { + // path: newPath, + // }, + // }); - if (stat.type === 'directory') { - await this.fileSync.renameDir(oldNormalizedPath, newNormalizedPath); - } else { - await this.fileSync.rename(oldNormalizedPath, newNormalizedPath); - } + // if (stat.type === 'directory') { + // await this.fileSync.renameDir(oldNormalizedPath, newNormalizedPath); + // } else { + // await this.fileSync.rename(oldNormalizedPath, newNormalizedPath); + // } - this.fileEventBus.publish({ - type: 'rename', - paths: [oldPath, newPath], - timestamp: Date.now(), - }); - return; + // this.fileEventBus.publish({ + // type: 'rename', + // paths: [oldPath, newPath], + // timestamp: Date.now(), + // }); + // return; } async handleFileChangedEvent(normalizedPath: string) { - const cachedFile = this.fileSync.readCache(normalizedPath); + // const cachedFile = this.fileSync.readCache(normalizedPath); - // Always read the remote file and update the cache, regardless of file type - const remoteFile = await this.readRemoteFile(normalizedPath); - if (!remoteFile) { - console.error(`File content for ${normalizedPath} not found in remote`); - return; - } + // // Always read the remote file and update the cache, regardless of file type + // const remoteFile = await this.readRemoteFile(normalizedPath); + // if (!remoteFile) { + // console.error(`File content for ${normalizedPath} not found in remote`); + // return; + // } - // Always update the cache with the fresh remote file content - this.fileSync.updateCache(remoteFile); + // // Always update the cache with the fresh remote file content + // this.fileSync.updateCache(remoteFile); - // For text files, also process for mapping if content has changed - if (remoteFile.type === 'text' && this.isJsxFile(normalizedPath)) { - if (remoteFile.content !== cachedFile?.content) { - await this.processFileForMapping(remoteFile); - } - } + // // For text files, also process for mapping if content has changed + // if (remoteFile.type === 'text' && this.isJsxFile(normalizedPath)) { + // if (remoteFile.content !== cachedFile?.content) { + // await this.processFileForMapping(remoteFile); + // } + // } } async processFileForMapping(file: SandboxFile) { @@ -634,109 +656,112 @@ export class SandboxManager { recursive?: boolean, overwrite?: boolean, ): Promise { - if (!this.session.provider) { - console.error('No provider found for copy'); - return false; - } - - try { - const normalizedSourcePath = normalizePath(path); - const normalizedTargetPath = normalizePath(targetPath); - - // Check if source exists - const sourceExists = await this.fileExists(normalizedSourcePath); - if (!sourceExists) { - console.error(`Source ${normalizedSourcePath} does not exist`); - return false; - } - - await this.session.provider.copyFiles({ - args: { - sourcePath: normalizedSourcePath, - targetPath: normalizedTargetPath, - recursive, - overwrite, - }, - }); - - // Read and cache the copied file - const copiedFile = await this.readRemoteFile(normalizedTargetPath); - if (copiedFile) { - this.fileSync.updateCache(copiedFile); - } - - return true; - } catch (error) { - console.error(`Error copying ${path} to ${targetPath}:`, error); - return false; - } + return false; + // if (!this.session.provider) { + // console.error('No provider found for copy'); + // return false; + // } + + // try { + // const normalizedSourcePath = normalizePath(path); + // const normalizedTargetPath = normalizePath(targetPath); + + // // Check if source exists + // const sourceExists = await this.fileExists(normalizedSourcePath); + // if (!sourceExists) { + // console.error(`Source ${normalizedSourcePath} does not exist`); + // return false; + // } + + // await this.session.provider.copyFiles({ + // args: { + // sourcePath: normalizedSourcePath, + // targetPath: normalizedTargetPath, + // recursive, + // overwrite, + // }, + // }); + + // // Read and cache the copied file + // const copiedFile = await this.readRemoteFile(normalizedTargetPath); + // if (copiedFile) { + // this.fileSync.updateCache(copiedFile); + // } + + // return true; + // } catch (error) { + // console.error(`Error copying ${path} to ${targetPath}:`, error); + // return false; + // } } async delete(path: string, recursive?: boolean): Promise { - if (!this.session.provider) { - console.error('No provider found for delete file'); - return false; - } - - try { - const normalizedPath = normalizePath(path); - - // Check if file exists before attempting to delete - const exists = await this.fileExists(normalizedPath); - if (!exists) { - console.error(`File ${normalizedPath} does not exist`); - return false; - } - - // Delete the file using the filesystem API - await this.session.provider.deleteFiles({ - args: { - path: normalizedPath, - recursive, - }, - }); - - // Clean up the file sync cache - await this.fileSync.delete(normalizedPath); - - // Publish file deletion event - this.fileEventBus.publish({ - type: 'remove', - paths: [normalizedPath], - timestamp: Date.now(), - }); - - console.log(`Successfully deleted file: ${normalizedPath}`); - return true; - } catch (error) { - console.error(`Error deleting file ${path}:`, error); - return false; - } + return false; + // if (!this.session.provider) { + // console.error('No provider found for delete file'); + // return false; + // } + + // try { + // const normalizedPath = normalizePath(path); + + // // Check if file exists before attempting to delete + // const exists = await this.fileExists(normalizedPath); + // if (!exists) { + // console.error(`File ${normalizedPath} does not exist`); + // return false; + // } + + // // Delete the file using the filesystem API + // await this.session.provider.deleteFiles({ + // args: { + // path: normalizedPath, + // recursive, + // }, + // }); + + // // Clean up the file sync cache + // await this.fileSync.delete(normalizedPath); + + // // Publish file deletion event + // this.fileEventBus.publish({ + // type: 'remove', + // paths: [normalizedPath], + // timestamp: Date.now(), + // }); + + // console.log(`Successfully deleted file: ${normalizedPath}`); + // return true; + // } catch (error) { + // console.error(`Error deleting file ${path}:`, error); + // return false; + // } } async rename(oldPath: string, newPath: string): Promise { - if (!this.session.provider) { - console.error('No provider found for rename'); - return false; - } - - try { - const normalizedOldPath = normalizePath(oldPath); - const normalizedNewPath = normalizePath(newPath); - - await this.session.provider.renameFile({ - args: { - oldPath: normalizedOldPath, - newPath: normalizedNewPath, - }, - }); - - // Note: Cache update handled by file watcher rename event - return true; - } catch (error) { - console.error(`Error renaming file ${oldPath} to ${newPath}:`, error); - return false; - } + return false; + // if (!this.session.provider) { + // console.error('No provider found for rename'); + // return false; + // } + + // try { + // const normalizedOldPath = normalizePath(oldPath); + // const normalizedNewPath = normalizePath(newPath); + + // await this.session.provider.renameFile({ + // args: { + // oldPath: normalizedOldPath, + // newPath: normalizedNewPath, + // }, + // }); + + // // Note: Cache update handled by file watcher rename event + // return true; + // } catch (error) { + // console.error(`Error renaming file ${oldPath} to ${newPath}:`, error); + // return false; + // } } /** @@ -771,13 +796,18 @@ export class SandboxManager { clear() { this.providerReactionDisposer?.(); this.providerReactionDisposer = undefined; - void this.fileWatcher?.stop(); - this.fileWatcher = null; - this.fileSync.clear(); + this.sync?.stop(); + this.sync = null; + this.fs = null; + this.session.clear(); this._isIndexed = false; this._isIndexing = false; this._routerConfig = null; - this._discoveredFiles = []; + + // void this.fileWatcher?.stop(); + // this.fileWatcher = null; + // this.fileSync.clear(); + // this._discoveredFiles = []; } } diff --git a/apps/web/client/src/services/sync-engine/index.ts b/apps/web/client/src/services/sync-engine/index.ts index d6d1132c0d..24db100dd3 100644 --- a/apps/web/client/src/services/sync-engine/index.ts +++ b/apps/web/client/src/services/sync-engine/index.ts @@ -1,2 +1,3 @@ export { CodeProviderSync, type SyncConfig } from './sync-engine'; -export { useSyncEngine } from './useSyncEngine'; +export { useSyncEngine } from './use-sync-engine'; + diff --git a/apps/web/client/src/services/sync-engine/useSyncEngine.tsx b/apps/web/client/src/services/sync-engine/use-sync-engine.tsx similarity index 100% rename from apps/web/client/src/services/sync-engine/useSyncEngine.tsx rename to apps/web/client/src/services/sync-engine/use-sync-engine.tsx From a1e9a3f6caca3850a64ceebc79ded6691812f713 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Thu, 25 Sep 2025 18:20:26 -0700 Subject: [PATCH 003/146] save sandbox setup --- .../right-panel/code-tab/file-tree.tsx | 7 -- .../components/store/editor/sandbox/index.ts | 79 +++++++++---------- 2 files changed, 39 insertions(+), 47 deletions(-) diff --git a/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/file-tree.tsx b/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/file-tree.tsx index 654c89aa52..fabf0cce93 100644 --- a/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/file-tree.tsx +++ b/apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/file-tree.tsx @@ -26,14 +26,12 @@ const UnmemoizedFileTree = observer(forwardRef(({ onFileSele const [searchQuery, setSearchQuery] = useState(''); const [highlightedIndex, setHighlightedIndex] = useState(null); const [contentMatches, setContentMatches] = useState>(new Map()); - const [isSearching, setIsSearching] = useState(false); const treeRef = useRef>(null); const inputRef = useRef(null); const searchTimeoutRef = useRef(null); const { ref: containerRef, width: filesWidth } = useResizeObserver(); const { ref: treeContainerRef, height: filesHeight } = useResizeObserver(); - const isTextFile = useCallback((filePath: string): boolean => { const ext = path.extname(filePath).toLowerCase(); return ['.js', '.jsx', '.ts', '.tsx', '.html', '.css', '.scss', '.sass', '.md', '.mdx', '.txt', '.json', '.xml', '.yaml', '.yml'].includes(ext); @@ -65,13 +63,9 @@ const UnmemoizedFileTree = observer(forwardRef(({ onFileSele const performContentSearch = useCallback(async (query: string) => { if (!query.trim() || query.length < 2) { setContentMatches(new Map()); - setIsSearching(false); return; } - - setIsSearching(true); const matches = new Map(); - const searchPromises = files .filter(isTextFile) .map(async (filePath) => { @@ -83,7 +77,6 @@ const UnmemoizedFileTree = observer(forwardRef(({ onFileSele await Promise.all(searchPromises); setContentMatches(matches); - setIsSearching(false); }, [files, isTextFile, searchFileContent]); useEffect(() => { diff --git a/apps/web/client/src/components/store/editor/sandbox/index.ts b/apps/web/client/src/components/store/editor/sandbox/index.ts index 56f408b8d4..66054324d9 100644 --- a/apps/web/client/src/components/store/editor/sandbox/index.ts +++ b/apps/web/client/src/components/store/editor/sandbox/index.ts @@ -11,8 +11,6 @@ import { import { FileSystem } from '@onlook/file-system'; import { RouterType, type Branch, type SandboxFile } from '@onlook/models'; import { - getBaseName, - getDirName, isRootLayoutFile } from '@onlook/utility'; import { makeAutoObservable, reaction } from 'mobx'; @@ -20,7 +18,6 @@ import path from 'path'; import { env } from 'process'; import type { EditorEngine } from '../engine'; import type { ErrorManager } from '../error'; -import { normalizePath } from './helpers'; import { SessionManager } from './session'; const isDev = env.NODE_ENV === 'development'; @@ -628,26 +625,27 @@ export class SandboxManager { async fileExists(path: string): Promise { - const normalizedPath = normalizePath(path); + return false; + // const normalizedPath = normalizePath(path); - if (!this.session.provider) { - console.error('No provider found for file existence check'); - return false; - } + // if (!this.session.provider) { + // console.error('No provider found for file existence check'); + // return false; + // } - try { - const dirPath = getDirName(normalizedPath); - const fileName = getBaseName(normalizedPath); - const { files } = await this.session.provider.listFiles({ - args: { - path: dirPath, - }, - }); - return files.some((entry) => entry.name === fileName); - } catch (error) { - console.error(`Error checking file existence ${normalizedPath}:`, error); - return false; - } + // try { + // const dirPath = getDirName(normalizedPath); + // const fileName = getBaseName(normalizedPath); + // const { files } = await this.session.provider.listFiles({ + // args: { + // path: dirPath, + // }, + // }); + // return files.some((entry) => entry.name === fileName); + // } catch (error) { + // console.error(`Error checking file existence ${normalizedPath}:`, error); + // return false; + // } } async copy( @@ -768,29 +766,30 @@ export class SandboxManager { * Gets the root layout path and router config */ async getRootLayoutPath(): Promise { - const routerConfig = this.routerConfig; - if (!routerConfig) { - console.log('Could not detect Next.js router type'); - return null; - } + return null; + // const routerConfig = this.routerConfig; + // if (!routerConfig) { + // console.log('Could not detect Next.js router type'); + // return null; + // } - let layoutFileName: string; + // let layoutFileName: string; - if (routerConfig.type === RouterType.PAGES) { - layoutFileName = '_app'; - } else { - layoutFileName = 'layout'; - } + // if (routerConfig.type === RouterType.PAGES) { + // layoutFileName = '_app'; + // } else { + // layoutFileName = 'layout'; + // } - for (const extension of NEXT_JS_FILE_EXTENSIONS) { - const layoutPath = path.join(routerConfig.basePath, `${layoutFileName}${extension}`); - if (await this.fileExists(layoutPath)) { - return normalizePath(layoutPath); - } - } + // for (const extension of NEXT_JS_FILE_EXTENSIONS) { + // const layoutPath = path.join(routerConfig.basePath, `${layoutFileName}${extension}`); + // if (await this.fileExists(layoutPath)) { + // return normalizePath(layoutPath); + // } + // } - console.log('Could not find layout file'); - return null; + // console.log('Could not find layout file'); + // return null; } clear() { From ad812f8df646ab66a22b35d48d12564827e17b9c Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Fri, 26 Sep 2025 09:19:01 -0700 Subject: [PATCH 004/146] saving --- .../client/public/onlook-preload-script.js | 18 +- .../right-panel/code-tab/code-controls.tsx | 1 - .../right-panel/code-tab/file-tree.tsx | 23 +- .../right-panel/code-tab/index.tsx | 208 +++++++++++------- .../_components/right-panel/code-tab/types.ts | 6 + .../components/store/editor/sandbox/index.ts | 26 ++- .../src/services/sync-engine/sync-engine.ts | 23 +- packages/models/src/code/index.ts | 9 - 8 files changed, 183 insertions(+), 131 deletions(-) create mode 100644 apps/web/client/src/app/project/[id]/_components/right-panel/code-tab/types.ts diff --git a/apps/web/client/public/onlook-preload-script.js b/apps/web/client/public/onlook-preload-script.js index e8476c1496..f1ce3d927a 100644 --- a/apps/web/client/public/onlook-preload-script.js +++ b/apps/web/client/public/onlook-preload-script.js @@ -1,24 +1,24 @@ -var I4=Object.create;var{getPrototypeOf:k4,defineProperty:Ue,getOwnPropertyNames:U4}=Object;var J4=Object.prototype.hasOwnProperty;var qh=(r,t,i)=>{i=r!=null?I4(k4(r)):{};let o=t||!r||!r.__esModule?Ue(i,"default",{value:r,enumerable:!0}):i;for(let n of U4(r))if(!J4.call(o,n))Ue(o,n,{get:()=>r[n],enumerable:!0});return o};var vr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var I=(r,t)=>{for(var i in t)Ue(r,i,{get:t[i],enumerable:!0,configurable:!0,set:(o)=>t[i]=()=>o})};var Je=vr((sk,Wh)=>{function P4(r){var t=typeof r;return r!=null&&(t=="object"||t=="function")}Wh.exports=P4});var Vh=vr((rU,Kh)=>{var X4=typeof global=="object"&&global&&global.Object===Object&&global;Kh.exports=X4});var Pe=vr((tU,Lh)=>{var q4=Vh(),W4=typeof self=="object"&&self&&self.Object===Object&&self,K4=q4||W4||Function("return this")();Lh.exports=K4});var Eh=vr((nU,Yh)=>{var V4=Pe(),L4=function(){return V4.Date.now()};Yh.exports=L4});var Fh=vr((iU,Qh)=>{var Y4=/\s/;function E4(r){var t=r.length;while(t--&&Y4.test(r.charAt(t)));return t}Qh.exports=E4});var Nh=vr((oU,Sh)=>{var Q4=Fh(),F4=/^\s+/;function S4(r){return r?r.slice(0,Q4(r)+1).replace(F4,""):r}Sh.exports=S4});var Xe=vr((eU,Gh)=>{var N4=Pe(),G4=N4.Symbol;Gh.exports=G4});var Hh=vr((lU,Ah)=>{var Bh=Xe(),yh=Object.prototype,B4=yh.hasOwnProperty,y4=yh.toString,wn=Bh?Bh.toStringTag:void 0;function A4(r){var t=B4.call(r,wn),i=r[wn];try{r[wn]=void 0;var o=!0}catch(e){}var n=y4.call(r);if(o)if(t)r[wn]=i;else delete r[wn];return n}Ah.exports=A4});var Mh=vr((cU,Rh)=>{var H4=Object.prototype,R4=H4.toString;function M4(r){return R4.call(r)}Rh.exports=M4});var dh=vr((uU,Th)=>{var Zh=Xe(),Z4=Hh(),C4=Mh(),T4="[object Null]",d4="[object Undefined]",Ch=Zh?Zh.toStringTag:void 0;function s4(r){if(r==null)return r===void 0?d4:T4;return Ch&&Ch in Object(r)?Z4(r):C4(r)}Th.exports=s4});var r$=vr((gU,sh)=>{function r6(r){return r!=null&&typeof r=="object"}sh.exports=r6});var n$=vr((mU,t$)=>{var t6=dh(),n6=r$(),i6="[object Symbol]";function o6(r){return typeof r=="symbol"||n6(r)&&t6(r)==i6}t$.exports=o6});var l$=vr((bU,e$)=>{var e6=Nh(),i$=Je(),l6=n$(),o$=NaN,c6=/^[-+]0x[0-9a-f]+$/i,u6=/^0b[01]+$/i,g6=/^0o[0-7]+$/i,m6=parseInt;function b6(r){if(typeof r=="number")return r;if(l6(r))return o$;if(i$(r)){var t=typeof r.valueOf=="function"?r.valueOf():r;r=i$(t)?t+"":t}if(typeof r!="string")return r===0?r:+r;r=e6(r);var i=u6.test(r);return i||g6.test(r)?m6(r.slice(2),i?2:8):c6.test(r)?o$:+r}e$.exports=b6});var We=vr((vU,u$)=>{var v6=Je(),qe=Eh(),c$=l$(),h6="Expected a function",$6=Math.max,x6=Math.min;function f6(r,t,i){var o,n,e,l,u,g,c=0,m=!1,v=!1,h=!0;if(typeof r!="function")throw new TypeError(h6);if(t=c$(t)||0,v6(i))m=!!i.leading,v="maxWait"in i,e=v?$6(c$(i.maxWait)||0,t):e,h="trailing"in i?!!i.trailing:h;function b(Q){var B=o,tr=n;return o=n=void 0,c=Q,l=r.apply(tr,B),l}function f(Q){return c=Q,u=setTimeout(_,t),m?b(Q):l}function D(Q){var B=Q-g,tr=Q-c,ke=t-B;return v?x6(ke,e-tr):ke}function O(Q){var B=Q-g,tr=Q-c;return g===void 0||B>=t||B<0||v&&tr>=e}function _(){var Q=qe();if(O(Q))return J(Q);u=setTimeout(_,D(Q))}function J(Q){if(u=void 0,h&&o)return b(Q);return o=n=void 0,l}function L(){if(u!==void 0)clearTimeout(u);c=0,o=g=n=u=void 0}function X(){return u===void 0?l:J(qe())}function W(){var Q=qe(),B=O(Q);if(o=arguments,n=this,g=Q,B){if(u===void 0)return f(g);if(v)return clearTimeout(u),u=setTimeout(_,t),b(g)}if(u===void 0)u=setTimeout(_,t);return l}return W.cancel=L,W.flush=X,W}u$.exports=f6});var g0=vr((hz)=>{var u0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");hz.encode=function(r){if(0<=r&&r{var m0=g0(),Re=5,b0=1<>1;return t?-i:i}zz.encode=function r(t){var i="",o,n=fz(t);do{if(o=n&v0,n>>>=Re,n>0)o|=h0;i+=m0.encode(o)}while(n>0);return i};zz.decode=function r(t,i,o){var n=t.length,e=0,l=0,u,g;do{if(i>=n)throw new Error("Expected more digits in base 64 VLQ value.");if(g=m0.decode(t.charCodeAt(i++)),g===-1)throw new Error("Invalid base64 digit: "+t.charAt(i-1));u=!!(g&h0),g&=v0,e=e+(g<{function _z(r,t,i){if(t in r)return r[t];else if(arguments.length===3)return i;else throw new Error('"'+t+'" is a required argument.')}Lz.getArg=_z;var x0=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,Dz=/^data:.+\,.+$/;function In(r){var t=r.match(x0);if(!t)return null;return{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}}Lz.urlParse=In;function At(r){var t="";if(r.scheme)t+=r.scheme+":";if(t+="//",r.auth)t+=r.auth+"@";if(r.host)t+=r.host;if(r.port)t+=":"+r.port;if(r.path)t+=r.path;return t}Lz.urlGenerate=At;var jz=32;function Oz(r){var t=[];return function(i){for(var o=0;ojz)t.pop();return e}}var Me=Oz(function r(t){var i=t,o=In(t);if(o){if(!o.path)return t;i=o.path}var n=Lz.isAbsolute(i),e=[],l=0,u=0;while(!0)if(l=u,u=i.indexOf("/",l),u===-1){e.push(i.slice(l));break}else{e.push(i.slice(l,u));while(u=0;u--)if(g=e[u],g===".")e.splice(u,1);else if(g==="..")c++;else if(c>0)if(g==="")e.splice(u+1,c),c=0;else e.splice(u,2),c--;if(i=e.join("/"),i==="")i=n?"/":".";if(o)return o.path=i,At(o);return i});Lz.normalize=Me;function f0(r,t){if(r==="")r=".";if(t==="")t=".";var i=In(t),o=In(r);if(o)r=o.path||"/";if(i&&!i.scheme){if(o)i.scheme=o.scheme;return At(i)}if(i||t.match(Dz))return t;if(o&&!o.host&&!o.path)return o.host=t,At(o);var n=t.charAt(0)==="/"?t:Me(r.replace(/\/+$/,"")+"/"+t);if(o)return o.path=n,At(o);return n}Lz.join=f0;Lz.isAbsolute=function(r){return r.charAt(0)==="/"||x0.test(r)};function Iz(r,t){if(r==="")r=".";r=r.replace(/\/$/,"");var i=0;while(t.indexOf(r+"/")!==0){var o=r.lastIndexOf("/");if(o<0)return t;if(r=r.slice(0,o),r.match(/^([^\/]+:\/)?\/*$/))return t;++i}return Array(i+1).join("../")+t.substr(r.length+1)}Lz.relative=Iz;var w0=function(){var r=Object.create(null);return!("__proto__"in r)}();function z0(r){return r}function kz(r){if(a0(r))return"$"+r;return r}Lz.toSetString=w0?z0:kz;function Uz(r){if(a0(r))return r.slice(1);return r}Lz.fromSetString=w0?z0:Uz;function a0(r){if(!r)return!1;var t=r.length;if(t<9)return!1;if(r.charCodeAt(t-1)!==95||r.charCodeAt(t-2)!==95||r.charCodeAt(t-3)!==111||r.charCodeAt(t-4)!==116||r.charCodeAt(t-5)!==111||r.charCodeAt(t-6)!==114||r.charCodeAt(t-7)!==112||r.charCodeAt(t-8)!==95||r.charCodeAt(t-9)!==95)return!1;for(var i=t-10;i>=0;i--)if(r.charCodeAt(i)!==36)return!1;return!0}function Jz(r,t,i){var o=tt(r.source,t.source);if(o!==0)return o;if(o=r.originalLine-t.originalLine,o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0||i)return o;if(o=r.generatedColumn-t.generatedColumn,o!==0)return o;if(o=r.generatedLine-t.generatedLine,o!==0)return o;return tt(r.name,t.name)}Lz.compareByOriginalPositions=Jz;function Pz(r,t,i){var o=r.originalLine-t.originalLine;if(o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0||i)return o;if(o=r.generatedColumn-t.generatedColumn,o!==0)return o;if(o=r.generatedLine-t.generatedLine,o!==0)return o;return tt(r.name,t.name)}Lz.compareByOriginalPositionsNoSource=Pz;function Xz(r,t,i){var o=r.generatedLine-t.generatedLine;if(o!==0)return o;if(o=r.generatedColumn-t.generatedColumn,o!==0||i)return o;if(o=tt(r.source,t.source),o!==0)return o;if(o=r.originalLine-t.originalLine,o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0)return o;return tt(r.name,t.name)}Lz.compareByGeneratedPositionsDeflated=Xz;function qz(r,t,i){var o=r.generatedColumn-t.generatedColumn;if(o!==0||i)return o;if(o=tt(r.source,t.source),o!==0)return o;if(o=r.originalLine-t.originalLine,o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0)return o;return tt(r.name,t.name)}Lz.compareByGeneratedPositionsDeflatedNoLine=qz;function tt(r,t){if(r===t)return 0;if(r===null)return 1;if(t===null)return-1;if(r>t)return 1;return-1}function Wz(r,t){var i=r.generatedLine-t.generatedLine;if(i!==0)return i;if(i=r.generatedColumn-t.generatedColumn,i!==0)return i;if(i=tt(r.source,t.source),i!==0)return i;if(i=r.originalLine-t.originalLine,i!==0)return i;if(i=r.originalColumn-t.originalColumn,i!==0)return i;return tt(r.name,t.name)}Lz.compareByGeneratedPositionsInflated=Wz;function Kz(r){return JSON.parse(r.replace(/^\)]}'[^\n]*\n/,""))}Lz.parseSourceMapInput=Kz;function Vz(r,t,i){if(t=t||"",r){if(r[r.length-1]!=="/"&&t[0]!=="/")r+="/";t=r+t}if(i){var o=In(i);if(!o)throw new Error("sourceMapURL could not be parsed");if(o.path){var n=o.path.lastIndexOf("/");if(n>=0)o.path=o.path.substring(0,n+1)}t=f0(At(o),t)}return Me(t)}Lz.computeSourceURL=Vz});var p0=vr((dz)=>{var Ze=Mi(),Ce=Object.prototype.hasOwnProperty,kt=typeof Map!=="undefined";function nt(){this._array=[],this._set=kt?new Map:Object.create(null)}nt.fromArray=function r(t,i){var o=new nt;for(var n=0,e=t.length;n=0)return i}else{var o=Ze.toSetString(t);if(Ce.call(this._set,o))return this._set[o]}throw new Error('"'+t+'" is not in the set.')};nt.prototype.at=function r(t){if(t>=0&&t{var _0=Mi();function ra(r,t){var i=r.generatedLine,o=t.generatedLine,n=r.generatedColumn,e=t.generatedColumn;return o>i||o==i&&e>=n||_0.compareByGeneratedPositionsInflated(r,t)<=0}function Zi(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Zi.prototype.unsortedForEach=function r(t,i){this._array.forEach(t,i)};Zi.prototype.add=function r(t){if(ra(this._last,t))this._last=t,this._array.push(t);else this._sorted=!1,this._array.push(t)};Zi.prototype.toArray=function r(){if(!this._sorted)this._array.sort(_0.compareByGeneratedPositionsInflated),this._sorted=!0;return this._array};ta.MappingList=Zi});var Lt="PENPAL_CHILD";var j4=qh(We(),1);var w6=class extends Error{code;constructor(r,t){super(t);this.name="PenpalError",this.code=r}},pr=w6,z6=(r)=>({name:r.name,message:r.message,stack:r.stack,penpalCode:r instanceof pr?r.code:void 0}),a6=({name:r,message:t,stack:i,penpalCode:o})=>{let n=o?new pr(o,t):new Error(t);return n.name=r,n.stack=i,n},p6=Symbol("Reply"),_6=class{value;transferables;#r=p6;constructor(r,t){this.value=r,this.transferables=t?.transferables}},D6=_6,Jr="penpal",qi=(r)=>{return typeof r==="object"&&r!==null},h$=(r)=>{return typeof r==="function"},j6=(r)=>{return qi(r)&&r.namespace===Jr},Yt=(r)=>{return r.type==="SYN"},Wi=(r)=>{return r.type==="ACK1"},zn=(r)=>{return r.type==="ACK2"},$$=(r)=>{return r.type==="CALL"},x$=(r)=>{return r.type==="REPLY"},O6=(r)=>{return r.type==="DESTROY"},f$=(r,t=[])=>{let i=[];for(let o of Object.keys(r)){let n=r[o];if(h$(n))i.push([...t,o]);else if(qi(n))i.push(...f$(n,[...t,o]))}return i},I6=(r,t)=>{let i=r.reduce((o,n)=>{return qi(o)?o[n]:void 0},t);return h$(i)?i:void 0},mt=(r)=>{return r.join(".")},g$=(r,t,i)=>({namespace:Jr,channel:r,type:"REPLY",callId:t,isError:!0,...i instanceof Error?{value:z6(i),isSerializedErrorInstance:!0}:{value:i}}),k6=(r,t,i,o)=>{let n=!1,e=async(l)=>{if(n)return;if(!$$(l))return;o?.(`Received ${mt(l.methodPath)}() call`,l);let{methodPath:u,args:g,id:c}=l,m,v;try{let h=I6(u,t);if(!h)throw new pr("METHOD_NOT_FOUND",`Method \`${mt(u)}\` is not found.`);let b=await h(...g);if(b instanceof D6)v=b.transferables,b=await b.value;m={namespace:Jr,channel:i,type:"REPLY",callId:c,value:b}}catch(h){m=g$(i,c,h)}if(n)return;try{o?.(`Sending ${mt(u)}() reply`,m),r.sendMessage(m,v)}catch(h){if(h.name==="DataCloneError")m=g$(i,c,h),o?.(`Sending ${mt(u)}() reply`,m),r.sendMessage(m);throw h}};return r.addMessageHandler(e),()=>{n=!0,r.removeMessageHandler(e)}},U6=k6,w$=crypto.randomUUID?.bind(crypto)??(()=>new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")),J6=Symbol("CallOptions"),P6=class{transferables;timeout;#r=J6;constructor(r){this.transferables=r?.transferables,this.timeout=r?.timeout}},X6=P6,q6=new Set(["apply","call","bind"]),z$=(r,t,i=[])=>{return new Proxy(i.length?()=>{}:Object.create(null),{get(o,n){if(n==="then")return;if(i.length&&q6.has(n))return Reflect.get(o,n);return z$(r,t,[...i,n])},apply(o,n,e){return r(i,e)}})},m$=(r)=>{return new pr("CONNECTION_DESTROYED",`Method call ${mt(r)}() failed due to destroyed connection`)},W6=(r,t,i)=>{let o=!1,n=new Map,e=(g)=>{if(!x$(g))return;let{callId:c,value:m,isError:v,isSerializedErrorInstance:h}=g,b=n.get(c);if(!b)return;if(n.delete(c),i?.(`Received ${mt(b.methodPath)}() call`,g),v)b.reject(h?a6(m):m);else b.resolve(m)};return r.addMessageHandler(e),{remoteProxy:z$((g,c)=>{if(o)throw m$(g);let m=w$(),v=c[c.length-1],h=v instanceof X6,{timeout:b,transferables:f}=h?v:{},D=h?c.slice(0,-1):c;return new Promise((O,_)=>{let J=b!==void 0?window.setTimeout(()=>{n.delete(m),_(new pr("METHOD_CALL_TIMEOUT",`Method call ${mt(g)}() timed out after ${b}ms`))},b):void 0;n.set(m,{methodPath:g,resolve:O,reject:_,timeoutId:J});try{let L={namespace:Jr,channel:t,type:"CALL",id:m,methodPath:g,args:D};i?.(`Sending ${mt(g)}() call`,L),r.sendMessage(L,f)}catch(L){_(new pr("TRANSMISSION_FAILED",L.message))}})},i),destroy:()=>{o=!0,r.removeMessageHandler(e);for(let{methodPath:g,reject:c,timeoutId:m}of n.values())clearTimeout(m),c(m$(g));n.clear()}}},K6=W6,V6=()=>{let r,t;return{promise:new Promise((o,n)=>{r=o,t=n}),resolve:r,reject:t}},L6=V6,Y6=class extends Error{constructor(r){super(`You've hit a bug in Penpal. Please file an issue with the following information: ${r}`)}},Et=Y6,Ke="deprecated-penpal",E6=(r)=>{return qi(r)&&"penpal"in r},Q6=(r)=>r.split("."),b$=(r)=>r.join("."),a$=(r)=>{return new Et(`Unexpected message to translate: ${JSON.stringify(r)}`)},F6=(r)=>{if(r.penpal==="syn")return{namespace:Jr,channel:void 0,type:"SYN",participantId:Ke};if(r.penpal==="ack")return{namespace:Jr,channel:void 0,type:"ACK2"};if(r.penpal==="call")return{namespace:Jr,channel:void 0,type:"CALL",id:r.id,methodPath:Q6(r.methodName),args:r.args};if(r.penpal==="reply")if(r.resolution==="fulfilled")return{namespace:Jr,channel:void 0,type:"REPLY",callId:r.id,value:r.returnValue};else return{namespace:Jr,channel:void 0,type:"REPLY",callId:r.id,isError:!0,...r.returnValueIsError?{value:r.returnValue,isSerializedErrorInstance:!0}:{value:r.returnValue}};throw a$(r)},S6=(r)=>{if(Wi(r))return{penpal:"synAck",methodNames:r.methodPaths.map(b$)};if($$(r))return{penpal:"call",id:r.id,methodName:b$(r.methodPath),args:r.args};if(x$(r))if(r.isError)return{penpal:"reply",id:r.callId,resolution:"rejected",...r.isSerializedErrorInstance?{returnValue:r.value,returnValueIsError:!0}:{returnValue:r.value}};else return{penpal:"reply",id:r.callId,resolution:"fulfilled",returnValue:r.value};throw a$(r)},N6=({messenger:r,methods:t,timeout:i,channel:o,log:n})=>{let e=w$(),l,u=[],g=!1,c=f$(t),{promise:m,resolve:v,reject:h}=L6(),b=i!==void 0?setTimeout(()=>{h(new pr("CONNECTION_TIMEOUT",`Connection timed out after ${i}ms`))},i):void 0,f=()=>{for(let W of u)W()},D=()=>{if(g)return;u.push(U6(r,t,o,n));let{remoteProxy:W,destroy:Q}=K6(r,o,n);u.push(Q),clearTimeout(b),g=!0,v({remoteProxy:W,destroy:f})},O=()=>{let W={namespace:Jr,type:"SYN",channel:o,participantId:e};n?.("Sending handshake SYN",W);try{r.sendMessage(W)}catch(Q){h(new pr("TRANSMISSION_FAILED",Q.message))}},_=(W)=>{if(n?.("Received handshake SYN",W),W.participantId===l&&l!==Ke)return;if(l=W.participantId,O(),!(e>l||l===Ke))return;let B={namespace:Jr,channel:o,type:"ACK1",methodPaths:c};n?.("Sending handshake ACK1",B);try{r.sendMessage(B)}catch(tr){h(new pr("TRANSMISSION_FAILED",tr.message));return}},J=(W)=>{n?.("Received handshake ACK1",W);let Q={namespace:Jr,channel:o,type:"ACK2"};n?.("Sending handshake ACK2",Q);try{r.sendMessage(Q)}catch(B){h(new pr("TRANSMISSION_FAILED",B.message));return}D()},L=(W)=>{n?.("Received handshake ACK2",W),D()},X=(W)=>{if(Yt(W))_(W);if(Wi(W))J(W);if(zn(W))L(W)};return r.addMessageHandler(X),u.push(()=>r.removeMessageHandler(X)),O(),m},G6=N6,B6=(r)=>{let t=!1,i;return(...o)=>{if(!t)t=!0,i=r(...o);return i}},y6=B6,v$=new WeakSet,A6=({messenger:r,methods:t={},timeout:i,channel:o,log:n})=>{if(!r)throw new pr("INVALID_ARGUMENT","messenger must be defined");if(v$.has(r))throw new pr("INVALID_ARGUMENT","A messenger can only be used for a single connection");v$.add(r);let e=[r.destroy],l=y6((c)=>{if(c){let m={namespace:Jr,channel:o,type:"DESTROY"};try{r.sendMessage(m)}catch(v){}}for(let m of e)m();n?.("Connection destroyed")}),u=(c)=>{return j6(c)&&c.channel===o};return{promise:(async()=>{try{r.initialize({log:n,validateReceivedMessage:u}),r.addMessageHandler((v)=>{if(O6(v))l(!1)});let{remoteProxy:c,destroy:m}=await G6({messenger:r,methods:t,timeout:i,channel:o,log:n});return e.push(m),c}catch(c){throw l(!0),c}})(),destroy:()=>{l(!0)}}},p$=A6,H6=class{#r;#o;#n;#t;#l;#i=new Set;#e;#c=!1;constructor({remoteWindow:r,allowedOrigins:t}){if(!r)throw new pr("INVALID_ARGUMENT","remoteWindow must be defined");this.#r=r,this.#o=t?.length?t:[window.origin]}initialize=({log:r,validateReceivedMessage:t})=>{this.#n=r,this.#t=t,window.addEventListener("message",this.#b)};sendMessage=(r,t)=>{if(Yt(r)){let i=this.#u(r);this.#r.postMessage(r,{targetOrigin:i,transfer:t});return}if(Wi(r)||this.#c){let i=this.#c?S6(r):r,o=this.#u(r);this.#r.postMessage(i,{targetOrigin:o,transfer:t});return}if(zn(r)){let{port1:i,port2:o}=new MessageChannel;this.#e=i,i.addEventListener("message",this.#g),i.start();let n=[o,...t||[]],e=this.#u(r);this.#r.postMessage(r,{targetOrigin:e,transfer:n});return}if(this.#e){this.#e.postMessage(r,{transfer:t});return}throw new Et("Port is undefined")};addMessageHandler=(r)=>{this.#i.add(r)};removeMessageHandler=(r)=>{this.#i.delete(r)};destroy=()=>{window.removeEventListener("message",this.#b),this.#m(),this.#i.clear()};#v=(r)=>{return this.#o.some((t)=>t instanceof RegExp?t.test(r):t===r||t==="*")};#u=(r)=>{if(Yt(r))return"*";if(!this.#l)throw new Et("Concrete remote origin not set");return this.#l==="null"&&this.#o.includes("*")?"*":this.#l};#m=()=>{this.#e?.removeEventListener("message",this.#g),this.#e?.close(),this.#e=void 0};#b=({source:r,origin:t,ports:i,data:o})=>{if(r!==this.#r)return;if(E6(o))this.#n?.("Please upgrade the child window to the latest version of Penpal."),this.#c=!0,o=F6(o);if(!this.#t?.(o))return;if(!this.#v(t)){this.#n?.(`Received a message from origin \`${t}\` which did not match allowed origins \`[${this.#o.join(", ")}]\``);return}if(Yt(o))this.#m(),this.#l=t;if(zn(o)&&!this.#c){if(this.#e=i[0],!this.#e)throw new Et("No port received on ACK2");this.#e.addEventListener("message",this.#g),this.#e.start()}for(let n of this.#i)n(o)};#g=({data:r})=>{if(!this.#t?.(r))return;for(let t of this.#i)t(r)}},_$=H6,hU=class{#r;#o;#n=new Set;#t;constructor({worker:r}){if(!r)throw new pr("INVALID_ARGUMENT","worker must be defined");this.#r=r}initialize=({validateReceivedMessage:r})=>{this.#o=r,this.#r.addEventListener("message",this.#i)};sendMessage=(r,t)=>{if(Yt(r)||Wi(r)){this.#r.postMessage(r,{transfer:t});return}if(zn(r)){let{port1:i,port2:o}=new MessageChannel;this.#t=i,i.addEventListener("message",this.#i),i.start(),this.#r.postMessage(r,{transfer:[o,...t||[]]});return}if(this.#t){this.#t.postMessage(r,{transfer:t});return}throw new Et("Port is undefined")};addMessageHandler=(r)=>{this.#n.add(r)};removeMessageHandler=(r)=>{this.#n.delete(r)};destroy=()=>{this.#r.removeEventListener("message",this.#i),this.#l(),this.#n.clear()};#l=()=>{this.#t?.removeEventListener("message",this.#i),this.#t?.close(),this.#t=void 0};#i=({ports:r,data:t})=>{if(!this.#o?.(t))return;if(Yt(t))this.#l();if(zn(t)){if(this.#t=r[0],!this.#t)throw new Et("No port received on ACK2");this.#t.addEventListener("message",this.#i),this.#t.start()}for(let i of this.#n)i(t)}};var $U=class{#r;#o;#n=new Set;constructor({port:r}){if(!r)throw new pr("INVALID_ARGUMENT","port must be defined");this.#r=r}initialize=({validateReceivedMessage:r})=>{this.#o=r,this.#r.addEventListener("message",this.#t),this.#r.start()};sendMessage=(r,t)=>{this.#r?.postMessage(r,{transfer:t})};addMessageHandler=(r)=>{this.#n.add(r)};removeMessageHandler=(r)=>{this.#n.delete(r)};destroy=()=>{this.#r.removeEventListener("message",this.#t),this.#r.close(),this.#n.clear()};#t=({data:r})=>{if(!this.#o?.(r))return;for(let t of this.#n)t(r)}};var D$=["SCRIPT","STYLE","LINK","META","NOSCRIPT"],j$=new Set(["a","abbr","area","audio","b","bdi","bdo","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","h1","h2","h3","h4","h5","h6","i","iframe","img","input","ins","kbd","label","li","map","mark","meter","noscript","object","output","p","picture","progress","q","ruby","s","samp","script","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","var","video","wbr"]);var Ve=".next-prod";var qU={SCALE:0.7,PAN_POSITION:{x:175,y:100},URL:"http://localhost:3000/",ASPECT_RATIO_LOCKED:!1,DEVICE:"Custom:Custom",THEME:"system",ORIENTATION:"Portrait",MIN_DIMENSIONS:{width:"280px",height:"360px"},COMMANDS:{run:"bun run dev",build:"bun run build",install:"bun install"},IMAGE_FOLDER:"public",IMAGE_DIMENSION:{width:"100px",height:"100px"},FONT_FOLDER:"fonts",FONT_CONFIG:"app/fonts.ts",TAILWIND_CONFIG:"tailwind.config.ts",CHAT_SETTINGS:{showSuggestions:!0,autoApplyCode:!0,expandCodeBlocks:!1,showMiniChat:!0,maxImages:5},EDITOR_SETTINGS:{shouldWarnDelete:!1,enableBunReplace:!0,buildFlags:"--no-lint"}};var Le=["node_modules","dist","build",".git",".next"],VU=[...Le,"static","out",Ve],LU=[...Le,Ve],YU=[...Le,"coverage"],R6=[".jsx",".tsx"],M6=[".js",".ts",".mjs",".cjs"],EU=[...R6,...M6];var SU={["en"]:"English",["ja"]:"日本語",["zh"]:"中文",["ko"]:"한국어"};var U$=qh(We(),1);function N(r){return document.querySelector(`[${"data-odid"}="${r}"]`)}function Ye(r,t=!1){let i=`[${"data-odid"}="${r}"]`;if(!t)return i;return Z6(i)}function Z6(r){return CSS.escape(r)}function Dt(r){return r&&r instanceof Node&&r.nodeType===Node.ELEMENT_NODE&&!D$.includes(r.tagName)&&!r.hasAttribute("data-onlook-ignore")&&r.style.display!=="none"}var C6="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var O$=(r=21)=>{let t="",i=r|0;while(i--)t+=C6[Math.random()*64|0];return t};function Pr(r){let t=r.getAttribute("data-odid");if(!t)t=`odid-${O$()}`,r.setAttribute("data-odid",t);return t}function Nr(r){return r.getAttribute("data-oid")}function Gr(r){return r.getAttribute("data-oiid")}function I$(r,t){if(!_r)return;_r.onDomProcessed({layerMap:Object.fromEntries(r),rootNode:t}).catch((i)=>{console.error("Failed to send DOM processed event:",i)})}function Ee(r){window._onlookFrameId=r}function Qt(){let r=window._onlookFrameId;if(!r)return console.warn("Frame id not found"),_r?.getFrameId().then((t)=>{Ee(t)}),"";return r}function T6(r=document.body){if(!Qt())return console.warn("frameView id not found, skipping dom processing"),null;let i=zr(r);if(!i)return console.warn("Error building layer tree, root element is null"),null;let o=r.getAttribute("data-odid");if(!o)return console.warn("Root dom id not found"),null;let n=i.get(o);if(!n)return console.warn("Root node not found"),null;return I$(i,n),{rootDomId:o,layerMap:Array.from(i.entries())}}var Ki=U$.default(T6,500),d6=[(r)=>{let t=r.parentElement;return t&&t.tagName.toLowerCase()==="svg"},(r)=>{return r.tagName.toLowerCase()==="next-route-announcer"},(r)=>{return r.tagName.toLowerCase()==="nextjs-portal"}];function zr(r){if(!Dt(r))return null;let t=new Map,i=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:(e)=>{let l=e;if(d6.some((u)=>u(l)))return NodeFilter.FILTER_REJECT;return Dt(l)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}}),o=k$(r);o.children=[],t.set(o.domId,o);let n=i.nextNode();while(n){let e=k$(n);e.children=[];let l=n.parentElement;if(l){let u=l.getAttribute("data-odid");if(u){e.parent=u;let g=t.get(u);if(g&&g.children)g.children.push(e.domId)}}t.set(e.domId,e),n=i.nextNode()}return t}function k$(r){let t=Pr(r),i=Nr(r),o=Gr(r),n=Array.from(r.childNodes).map((g)=>g.nodeType===Node.TEXT_NODE?g.textContent:"").join(" ").trim().slice(0,500),e=window.getComputedStyle(r),l=r.getAttribute("data-ocname");return{domId:t,oid:i||null,instanceId:o||null,textContent:n||"",tagName:r.tagName.toLowerCase(),isVisible:e.visibility!=="hidden",component:l||null,frameId:Qt(),children:null,parent:null,dynamicType:null,coreElementType:null}}function Qe(r){throw new Error(`Expected \`never\`, found: ${JSON.stringify(r)}`)}var J$=(r)=>JSON.parse(JSON.stringify(r));function P$(r){let t=q$(r),i=s6(r),o=rz(r);return{defined:{width:"auto",height:"auto",...i,...o},computed:t}}function X$(r){let t=N(r);if(!t)return{};return q$(t)}function q$(r){return J$(window.getComputedStyle(r))}function s6(r){let t={},i=W$(r.style.cssText);return Object.entries(i).forEach(([o,n])=>{t[o]=n}),t}function rz(r){let t={},i=document.styleSheets;for(let o=0;ot[c]=m)}}catch(u){console.warn("Error",u)}}return t}function W$(r){let t={};return r.split(";").forEach((i)=>{if(i=i.trim(),!i)return;let[o,...n]=i.split(":");t[o?.trim()??""]=n.join(":").trim()}),t}var K$=(r,t)=>{let i=document.elementFromPoint(r,t);if(!i)return;let o=(e)=>{if(e?.shadowRoot){let l=e.shadowRoot.elementFromPoint(r,t);if(l==e)return e;else if(l?.shadowRoot)return o(l);else return l||e}else return e};return o(i)||i},lr=(r,t)=>{let i=r.parentElement,o=i?{domId:i.getAttribute("data-odid"),frameId:Qt(),oid:i.getAttribute("data-oid"),instanceId:i.getAttribute("data-oiid"),rect:i.getBoundingClientRect()}:null,n=r.getBoundingClientRect(),e=t?P$(r):null;return{domId:r.getAttribute("data-odid"),oid:r.getAttribute("data-oid"),frameId:Qt(),instanceId:r.getAttribute("data-oiid"),rect:n,tagName:r.tagName,parent:o,styles:e}};function Vi(r){try{let t=r.getAttribute("data-onlook-drag-saved-style");if(t){let i=JSON.parse(t);for(let o in i)r.style[o]=i[o]}}catch(t){console.warn("Error restoring style",t)}}function V$(r){let t=r.parentElement;if(!t)return;return{type:"index",targetDomId:t.getAttribute("data-odid"),targetOid:Gr(t)||Nr(t)||null,index:Array.from(r.parentElement?.children||[]).indexOf(r),originalIndex:Array.from(r.parentElement?.children||[]).indexOf(r)}}var L$=(r)=>{let t=Array.from(r.childNodes).filter((i)=>i.nodeType===Node.TEXT_NODE).map((i)=>i.textContent);if(t.length===0)return;return t.join("")};var Li=(r,t)=>{let i=N(r)||document.body;return lr(i,t)},Y$=(r,t,i)=>{let o=tz(r,t)||document.body;return lr(o,i)},tz=(r,t)=>{let i=document.elementFromPoint(r,t);if(!i)return;let o=(e)=>{if(e?.shadowRoot){let l=e.shadowRoot.elementFromPoint(r,t);if(l==e)return e;else if(l?.shadowRoot)return o(l);else return l||e}else return e};return o(i)||i},E$=(r,t,i)=>{let o=N(r);if(!o){console.warn("Failed to updateElementInstanceId: Element not found");return}o.setAttribute("data-oiid",t),o.setAttribute("data-ocname",i)},Q$=(r)=>{let t=N(r);if(!t?.parentElement)return null;return lr(t.parentElement,!1)},F$=(r)=>{let t=N(r);if(!t)return 0;return t.children.length},S$=(r)=>{let t=N(r);if(!t)return null;return lr(t.offsetParent,!1)};function N$(r,t,i){let o=N(r.domId);if(!o)return console.warn("Failed to find parent element",r.domId),null;let n=nz(t),e=new Set(i.map((c)=>c.domId)),l=Array.from(o.children).map((c,m)=>({element:c,index:m,domId:Pr(c)})).filter(({domId:c})=>e.has(c));if(l.length===0)return console.warn("No valid children found to group"),null;let u=Math.min(...l.map((c)=>c.index));return o.insertBefore(n,o.children[u]??null),l.forEach(({element:c})=>{let m=c.cloneNode(!0);m.setAttribute("data-onlook-inserted","true"),n.appendChild(m),c.style.display="none",B$(c)}),{domEl:lr(n,!0),newMap:zr(n)}}function G$(r,t){let i=N(r.domId);if(!i)return console.warn(`Parent element not found: ${r.domId}`),null;let o;if(t.domId)o=N(t.domId);else return console.warn("Container domId is required for ungrouping"),null;if(!o)return console.warn("Container element not found for ungrouping"),null;return Array.from(o.children).forEach((l)=>{i.appendChild(l)}),o.remove(),{domEl:lr(i,!0),newMap:zr(i)}}function nz(r){let t=document.createElement(r.tagName);return Object.entries(r.attributes).forEach(([i,o])=>{t.setAttribute(i,o)}),t.setAttribute("data-onlook-inserted","true"),t.setAttribute("data-odid",r.domId),t.setAttribute("data-oid",r.oid),t}function B$(r){r.removeAttribute("data-odid"),r.removeAttribute("data-oid"),r.removeAttribute("data-onlook-inserted");let t=Array.from(r.children);if(t.length===0)return;t.forEach((i)=>{B$(i)})}function Yi(r){let t=N(r);if(!t)return console.warn("Element not found for domId:",r),null;return y$(t)}function y$(r){let t=Array.from(r.attributes).reduce((o,n)=>{return o[n.name]=n.value,o},{}),i=Gr(r)||Nr(r)||null;if(!i)return console.warn("Element has no oid"),null;return{oid:i,domId:Pr(r),tagName:r.tagName.toLowerCase(),children:Array.from(r.children).map((o)=>y$(o)).filter(Boolean),attributes:t,textContent:L$(r)||null,styles:{}}}function A$(r){let t=N(r);if(!t)throw new Error("Element not found for domId: "+r);let i=t.parentElement;if(!i)throw new Error("Inserted element has no parent");let o=Gr(i)||Nr(i);if(!o)return console.warn("Parent element has no oid"),null;let n=Pr(i),e=Array.from(i.children).indexOf(t);if(e===-1)return{type:"append",targetDomId:n,targetOid:o};return{type:"index",targetDomId:n,targetOid:o,index:e,originalIndex:e}}function H$(r){let t=document.querySelector(`[${"data-odid"}="${r}"]`);if(!t)return console.warn("No element found",{domId:r}),{dynamicType:null,coreType:null};let i=t.getAttribute("data-onlook-dynamic-type")||null,o=t.getAttribute("data-onlook-core-element-type")||null;return{dynamicType:i,coreType:o}}function R$(r,t,i){let o=document.querySelector(`[${"data-odid"}="${r}"]`);if(o){if(t)o.setAttribute("data-onlook-dynamic-type",t);if(i)o.setAttribute("data-onlook-core-element-type",i)}}function M$(){let t=document.body.querySelector(`[${"data-oid"}]`);if(t)return lr(t,!0);return null}var Qr=0,w=1,k=2,R=3,S=4,gr=5,Ft=6,er=7,fr=8,P=9,U=10,y=11,q=12,Y=13,dr=14,hr=15,d=16,nr=17,ir=18,mr=19,wr=20,K=21,j=22,Z=23,xr=24,A=25;function cr(r){return r>=48&&r<=57}function Or(r){return cr(r)||r>=65&&r<=70||r>=97&&r<=102}function Fi(r){return r>=65&&r<=90}function iz(r){return r>=97&&r<=122}function oz(r){return Fi(r)||iz(r)}function ez(r){return r>=128}function Qi(r){return oz(r)||ez(r)||r===95}function an(r){return Qi(r)||cr(r)||r===45}function lz(r){return r>=0&&r<=8||r===11||r>=14&&r<=31||r===127}function pn(r){return r===10||r===13||r===12}function Br(r){return pn(r)||r===32||r===9}function Dr(r,t){if(r!==92)return!1;if(pn(t)||t===0)return!1;return!0}function St(r,t,i){if(r===45)return Qi(t)||t===45||Dr(t,i);if(Qi(r))return!0;if(r===92)return Dr(r,t);return!1}function Si(r,t,i){if(r===43||r===45){if(cr(t))return 2;return t===46&&cr(i)?3:0}if(r===46)return cr(t)?2:0;if(cr(r))return 1;return 0}function Ni(r){if(r===65279)return 1;if(r===65534)return 1;return 0}var Fe=new Array(128),cz=128,_n=130,Se=131,Gi=132,Ne=133;for(let r=0;rr.length)return!1;for(let n=t;n=0;t--)if(!Br(r.charCodeAt(t)))break;return t+1}function Dn(r,t){for(;t=55296&&t<=57343||t>1114111)t=65533;return String.fromCodePoint(t)}var Gt=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token","comment-token"];function Bt(r=null,t){if(r===null||r.length0?Ni(t.charCodeAt(0)):0,n=Bt(r.lines,i),e=Bt(r.columns,i),l=r.startLine,u=r.startColumn;for(let g=o;g{}){r=String(r||"");let i=r.length,o=Bt(this.offsetAndType,r.length+1),n=Bt(this.balance,r.length+1),e=0,l=-1,u=0,g=r.length;this.offsetAndType=null,this.balance=null,n.fill(0),t(r,(c,m,v)=>{let h=e++;if(o[h]=c<>Hr]}else if(s$(c))g=h,u=Ot[c]}),o[e]=Qr<e)n[c]=e}this.source=r,this.firstCharOffset=l===-1?0:l,this.tokenCount=e,this.offsetAndType=o,this.balance=n,this.reset(),this.next()}lookupType(r){if(r+=this.tokenIndex,r>Hr;return Qr}lookupTypeNonSC(r){for(let t=this.tokenIndex;t>Hr;if(i!==Y&&i!==A){if(r--===0)return i}}return Qr}lookupOffset(r){if(r+=this.tokenIndex,r>Hr;if(i!==Y&&i!==A){if(r--===0)return t-this.tokenIndex}}return Qr}lookupValue(r,t){if(r+=this.tokenIndex,r0)return r>Hr,this.tokenEnd=t&Ar;else this.tokenIndex=this.tokenCount,this.next()}next(){let r=this.tokenIndex+1;if(r>Hr,this.tokenEnd=r&Ar;else this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=Qr,this.tokenStart=this.tokenEnd=this.source.length}skipSC(){while(this.tokenType===Y||this.tokenType===A)this.next()}skipUntilBalanced(r,t){let i=r,o=0,n=0;r:for(;i0?this.offsetAndType[i-1]&Ar:this.firstCharOffset,t(this.source.charCodeAt(n))){case 1:break r;case 2:i++;break r;default:if(s$(this.offsetAndType[i]>>Hr))i=o}}this.skip(i-this.tokenIndex)}forEachToken(r){for(let t=0,i=this.firstCharOffset;t>Hr;i=e,r(l,o,e,t)}}dump(){let r=new Array(this.tokenCount);return this.forEachToken((t,i,o,n)=>{r[n]={idx:n,type:Gt[t],chunk:this.source.substring(i,o),balance:this.balance[n]}}),r}}function bt(r,t){function i(v){return v=r.length){if(c{i=r!=null?I4(k4(r)):{};let o=t||!r||!r.__esModule?Ue(i,"default",{value:r,enumerable:!0}):i;for(let n of U4(r))if(!J4.call(o,n))Ue(o,n,{get:()=>r[n],enumerable:!0});return o};var vr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var I=(r,t)=>{for(var i in t)Ue(r,i,{get:t[i],enumerable:!0,configurable:!0,set:(o)=>t[i]=()=>o})};var Je=vr((sk,Wh)=>{function P4(r){var t=typeof r;return r!=null&&(t=="object"||t=="function")}Wh.exports=P4});var Vh=vr((rU,Kh)=>{var X4=typeof global=="object"&&global&&global.Object===Object&&global;Kh.exports=X4});var Pe=vr((tU,Lh)=>{var q4=Vh(),W4=typeof self=="object"&&self&&self.Object===Object&&self,K4=q4||W4||Function("return this")();Lh.exports=K4});var Eh=vr((nU,Yh)=>{var V4=Pe(),L4=function(){return V4.Date.now()};Yh.exports=L4});var Fh=vr((iU,Qh)=>{var Y4=/\s/;function E4(r){var t=r.length;while(t--&&Y4.test(r.charAt(t)));return t}Qh.exports=E4});var Gh=vr((oU,Sh)=>{var Q4=Fh(),F4=/^\s+/;function S4(r){return r?r.slice(0,Q4(r)+1).replace(F4,""):r}Sh.exports=S4});var Xe=vr((eU,Nh)=>{var G4=Pe(),N4=G4.Symbol;Nh.exports=N4});var Hh=vr((lU,Ah)=>{var Bh=Xe(),yh=Object.prototype,B4=yh.hasOwnProperty,y4=yh.toString,wn=Bh?Bh.toStringTag:void 0;function A4(r){var t=B4.call(r,wn),i=r[wn];try{r[wn]=void 0;var o=!0}catch(e){}var n=y4.call(r);if(o)if(t)r[wn]=i;else delete r[wn];return n}Ah.exports=A4});var Mh=vr((cU,Rh)=>{var H4=Object.prototype,R4=H4.toString;function M4(r){return R4.call(r)}Rh.exports=M4});var dh=vr((uU,Th)=>{var Zh=Xe(),Z4=Hh(),C4=Mh(),T4="[object Null]",d4="[object Undefined]",Ch=Zh?Zh.toStringTag:void 0;function s4(r){if(r==null)return r===void 0?d4:T4;return Ch&&Ch in Object(r)?Z4(r):C4(r)}Th.exports=s4});var r$=vr((gU,sh)=>{function r6(r){return r!=null&&typeof r=="object"}sh.exports=r6});var n$=vr((mU,t$)=>{var t6=dh(),n6=r$(),i6="[object Symbol]";function o6(r){return typeof r=="symbol"||n6(r)&&t6(r)==i6}t$.exports=o6});var l$=vr((bU,e$)=>{var e6=Gh(),i$=Je(),l6=n$(),o$=NaN,c6=/^[-+]0x[0-9a-f]+$/i,u6=/^0b[01]+$/i,g6=/^0o[0-7]+$/i,m6=parseInt;function b6(r){if(typeof r=="number")return r;if(l6(r))return o$;if(i$(r)){var t=typeof r.valueOf=="function"?r.valueOf():r;r=i$(t)?t+"":t}if(typeof r!="string")return r===0?r:+r;r=e6(r);var i=u6.test(r);return i||g6.test(r)?m6(r.slice(2),i?2:8):c6.test(r)?o$:+r}e$.exports=b6});var We=vr((vU,u$)=>{var v6=Je(),qe=Eh(),c$=l$(),h6="Expected a function",$6=Math.max,x6=Math.min;function f6(r,t,i){var o,n,e,l,u,g,c=0,m=!1,v=!1,h=!0;if(typeof r!="function")throw new TypeError(h6);if(t=c$(t)||0,v6(i))m=!!i.leading,v="maxWait"in i,e=v?$6(c$(i.maxWait)||0,t):e,h="trailing"in i?!!i.trailing:h;function b(Q){var B=o,tr=n;return o=n=void 0,c=Q,l=r.apply(tr,B),l}function f(Q){return c=Q,u=setTimeout(_,t),m?b(Q):l}function D(Q){var B=Q-g,tr=Q-c,ke=t-B;return v?x6(ke,e-tr):ke}function O(Q){var B=Q-g,tr=Q-c;return g===void 0||B>=t||B<0||v&&tr>=e}function _(){var Q=qe();if(O(Q))return J(Q);u=setTimeout(_,D(Q))}function J(Q){if(u=void 0,h&&o)return b(Q);return o=n=void 0,l}function L(){if(u!==void 0)clearTimeout(u);c=0,o=g=n=u=void 0}function X(){return u===void 0?l:J(qe())}function W(){var Q=qe(),B=O(Q);if(o=arguments,n=this,g=Q,B){if(u===void 0)return f(g);if(v)return clearTimeout(u),u=setTimeout(_,t),b(g)}if(u===void 0)u=setTimeout(_,t);return l}return W.cancel=L,W.flush=X,W}u$.exports=f6});var g0=vr((hz)=>{var u0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");hz.encode=function(r){if(0<=r&&r{var m0=g0(),Re=5,b0=1<>1;return t?-i:i}zz.encode=function r(t){var i="",o,n=fz(t);do{if(o=n&v0,n>>>=Re,n>0)o|=h0;i+=m0.encode(o)}while(n>0);return i};zz.decode=function r(t,i,o){var n=t.length,e=0,l=0,u,g;do{if(i>=n)throw new Error("Expected more digits in base 64 VLQ value.");if(g=m0.decode(t.charCodeAt(i++)),g===-1)throw new Error("Invalid base64 digit: "+t.charAt(i-1));u=!!(g&h0),g&=v0,e=e+(g<{function _z(r,t,i){if(t in r)return r[t];else if(arguments.length===3)return i;else throw new Error('"'+t+'" is a required argument.')}Lz.getArg=_z;var x0=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,Dz=/^data:.+\,.+$/;function In(r){var t=r.match(x0);if(!t)return null;return{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}}Lz.urlParse=In;function At(r){var t="";if(r.scheme)t+=r.scheme+":";if(t+="//",r.auth)t+=r.auth+"@";if(r.host)t+=r.host;if(r.port)t+=":"+r.port;if(r.path)t+=r.path;return t}Lz.urlGenerate=At;var jz=32;function Oz(r){var t=[];return function(i){for(var o=0;ojz)t.pop();return e}}var Me=Oz(function r(t){var i=t,o=In(t);if(o){if(!o.path)return t;i=o.path}var n=Lz.isAbsolute(i),e=[],l=0,u=0;while(!0)if(l=u,u=i.indexOf("/",l),u===-1){e.push(i.slice(l));break}else{e.push(i.slice(l,u));while(u=0;u--)if(g=e[u],g===".")e.splice(u,1);else if(g==="..")c++;else if(c>0)if(g==="")e.splice(u+1,c),c=0;else e.splice(u,2),c--;if(i=e.join("/"),i==="")i=n?"/":".";if(o)return o.path=i,At(o);return i});Lz.normalize=Me;function f0(r,t){if(r==="")r=".";if(t==="")t=".";var i=In(t),o=In(r);if(o)r=o.path||"/";if(i&&!i.scheme){if(o)i.scheme=o.scheme;return At(i)}if(i||t.match(Dz))return t;if(o&&!o.host&&!o.path)return o.host=t,At(o);var n=t.charAt(0)==="/"?t:Me(r.replace(/\/+$/,"")+"/"+t);if(o)return o.path=n,At(o);return n}Lz.join=f0;Lz.isAbsolute=function(r){return r.charAt(0)==="/"||x0.test(r)};function Iz(r,t){if(r==="")r=".";r=r.replace(/\/$/,"");var i=0;while(t.indexOf(r+"/")!==0){var o=r.lastIndexOf("/");if(o<0)return t;if(r=r.slice(0,o),r.match(/^([^\/]+:\/)?\/*$/))return t;++i}return Array(i+1).join("../")+t.substr(r.length+1)}Lz.relative=Iz;var w0=function(){var r=Object.create(null);return!("__proto__"in r)}();function z0(r){return r}function kz(r){if(a0(r))return"$"+r;return r}Lz.toSetString=w0?z0:kz;function Uz(r){if(a0(r))return r.slice(1);return r}Lz.fromSetString=w0?z0:Uz;function a0(r){if(!r)return!1;var t=r.length;if(t<9)return!1;if(r.charCodeAt(t-1)!==95||r.charCodeAt(t-2)!==95||r.charCodeAt(t-3)!==111||r.charCodeAt(t-4)!==116||r.charCodeAt(t-5)!==111||r.charCodeAt(t-6)!==114||r.charCodeAt(t-7)!==112||r.charCodeAt(t-8)!==95||r.charCodeAt(t-9)!==95)return!1;for(var i=t-10;i>=0;i--)if(r.charCodeAt(i)!==36)return!1;return!0}function Jz(r,t,i){var o=tt(r.source,t.source);if(o!==0)return o;if(o=r.originalLine-t.originalLine,o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0||i)return o;if(o=r.generatedColumn-t.generatedColumn,o!==0)return o;if(o=r.generatedLine-t.generatedLine,o!==0)return o;return tt(r.name,t.name)}Lz.compareByOriginalPositions=Jz;function Pz(r,t,i){var o=r.originalLine-t.originalLine;if(o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0||i)return o;if(o=r.generatedColumn-t.generatedColumn,o!==0)return o;if(o=r.generatedLine-t.generatedLine,o!==0)return o;return tt(r.name,t.name)}Lz.compareByOriginalPositionsNoSource=Pz;function Xz(r,t,i){var o=r.generatedLine-t.generatedLine;if(o!==0)return o;if(o=r.generatedColumn-t.generatedColumn,o!==0||i)return o;if(o=tt(r.source,t.source),o!==0)return o;if(o=r.originalLine-t.originalLine,o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0)return o;return tt(r.name,t.name)}Lz.compareByGeneratedPositionsDeflated=Xz;function qz(r,t,i){var o=r.generatedColumn-t.generatedColumn;if(o!==0||i)return o;if(o=tt(r.source,t.source),o!==0)return o;if(o=r.originalLine-t.originalLine,o!==0)return o;if(o=r.originalColumn-t.originalColumn,o!==0)return o;return tt(r.name,t.name)}Lz.compareByGeneratedPositionsDeflatedNoLine=qz;function tt(r,t){if(r===t)return 0;if(r===null)return 1;if(t===null)return-1;if(r>t)return 1;return-1}function Wz(r,t){var i=r.generatedLine-t.generatedLine;if(i!==0)return i;if(i=r.generatedColumn-t.generatedColumn,i!==0)return i;if(i=tt(r.source,t.source),i!==0)return i;if(i=r.originalLine-t.originalLine,i!==0)return i;if(i=r.originalColumn-t.originalColumn,i!==0)return i;return tt(r.name,t.name)}Lz.compareByGeneratedPositionsInflated=Wz;function Kz(r){return JSON.parse(r.replace(/^\)]}'[^\n]*\n/,""))}Lz.parseSourceMapInput=Kz;function Vz(r,t,i){if(t=t||"",r){if(r[r.length-1]!=="/"&&t[0]!=="/")r+="/";t=r+t}if(i){var o=In(i);if(!o)throw new Error("sourceMapURL could not be parsed");if(o.path){var n=o.path.lastIndexOf("/");if(n>=0)o.path=o.path.substring(0,n+1)}t=f0(At(o),t)}return Me(t)}Lz.computeSourceURL=Vz});var p0=vr((dz)=>{var Ze=Mi(),Ce=Object.prototype.hasOwnProperty,kt=typeof Map!=="undefined";function nt(){this._array=[],this._set=kt?new Map:Object.create(null)}nt.fromArray=function r(t,i){var o=new nt;for(var n=0,e=t.length;n=0)return i}else{var o=Ze.toSetString(t);if(Ce.call(this._set,o))return this._set[o]}throw new Error('"'+t+'" is not in the set.')};nt.prototype.at=function r(t){if(t>=0&&t{var _0=Mi();function ra(r,t){var i=r.generatedLine,o=t.generatedLine,n=r.generatedColumn,e=t.generatedColumn;return o>i||o==i&&e>=n||_0.compareByGeneratedPositionsInflated(r,t)<=0}function Zi(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Zi.prototype.unsortedForEach=function r(t,i){this._array.forEach(t,i)};Zi.prototype.add=function r(t){if(ra(this._last,t))this._last=t,this._array.push(t);else this._sorted=!1,this._array.push(t)};Zi.prototype.toArray=function r(){if(!this._sorted)this._array.sort(_0.compareByGeneratedPositionsInflated),this._sorted=!0;return this._array};ta.MappingList=Zi});var Lt="PENPAL_CHILD";var j4=qh(We(),1);var w6=class extends Error{code;constructor(r,t){super(t);this.name="PenpalError",this.code=r}},pr=w6,z6=(r)=>({name:r.name,message:r.message,stack:r.stack,penpalCode:r instanceof pr?r.code:void 0}),a6=({name:r,message:t,stack:i,penpalCode:o})=>{let n=o?new pr(o,t):new Error(t);return n.name=r,n.stack=i,n},p6=Symbol("Reply"),_6=class{value;transferables;#r=p6;constructor(r,t){this.value=r,this.transferables=t?.transferables}},D6=_6,Jr="penpal",qi=(r)=>{return typeof r==="object"&&r!==null},h$=(r)=>{return typeof r==="function"},j6=(r)=>{return qi(r)&&r.namespace===Jr},Yt=(r)=>{return r.type==="SYN"},Wi=(r)=>{return r.type==="ACK1"},zn=(r)=>{return r.type==="ACK2"},$$=(r)=>{return r.type==="CALL"},x$=(r)=>{return r.type==="REPLY"},O6=(r)=>{return r.type==="DESTROY"},f$=(r,t=[])=>{let i=[];for(let o of Object.keys(r)){let n=r[o];if(h$(n))i.push([...t,o]);else if(qi(n))i.push(...f$(n,[...t,o]))}return i},I6=(r,t)=>{let i=r.reduce((o,n)=>{return qi(o)?o[n]:void 0},t);return h$(i)?i:void 0},mt=(r)=>{return r.join(".")},g$=(r,t,i)=>({namespace:Jr,channel:r,type:"REPLY",callId:t,isError:!0,...i instanceof Error?{value:z6(i),isSerializedErrorInstance:!0}:{value:i}}),k6=(r,t,i,o)=>{let n=!1,e=async(l)=>{if(n)return;if(!$$(l))return;o?.(`Received ${mt(l.methodPath)}() call`,l);let{methodPath:u,args:g,id:c}=l,m,v;try{let h=I6(u,t);if(!h)throw new pr("METHOD_NOT_FOUND",`Method \`${mt(u)}\` is not found.`);let b=await h(...g);if(b instanceof D6)v=b.transferables,b=await b.value;m={namespace:Jr,channel:i,type:"REPLY",callId:c,value:b}}catch(h){m=g$(i,c,h)}if(n)return;try{o?.(`Sending ${mt(u)}() reply`,m),r.sendMessage(m,v)}catch(h){if(h.name==="DataCloneError")m=g$(i,c,h),o?.(`Sending ${mt(u)}() reply`,m),r.sendMessage(m);throw h}};return r.addMessageHandler(e),()=>{n=!0,r.removeMessageHandler(e)}},U6=k6,w$=crypto.randomUUID?.bind(crypto)??(()=>new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")),J6=Symbol("CallOptions"),P6=class{transferables;timeout;#r=J6;constructor(r){this.transferables=r?.transferables,this.timeout=r?.timeout}},X6=P6,q6=new Set(["apply","call","bind"]),z$=(r,t,i=[])=>{return new Proxy(i.length?()=>{}:Object.create(null),{get(o,n){if(n==="then")return;if(i.length&&q6.has(n))return Reflect.get(o,n);return z$(r,t,[...i,n])},apply(o,n,e){return r(i,e)}})},m$=(r)=>{return new pr("CONNECTION_DESTROYED",`Method call ${mt(r)}() failed due to destroyed connection`)},W6=(r,t,i)=>{let o=!1,n=new Map,e=(g)=>{if(!x$(g))return;let{callId:c,value:m,isError:v,isSerializedErrorInstance:h}=g,b=n.get(c);if(!b)return;if(n.delete(c),i?.(`Received ${mt(b.methodPath)}() call`,g),v)b.reject(h?a6(m):m);else b.resolve(m)};return r.addMessageHandler(e),{remoteProxy:z$((g,c)=>{if(o)throw m$(g);let m=w$(),v=c[c.length-1],h=v instanceof X6,{timeout:b,transferables:f}=h?v:{},D=h?c.slice(0,-1):c;return new Promise((O,_)=>{let J=b!==void 0?window.setTimeout(()=>{n.delete(m),_(new pr("METHOD_CALL_TIMEOUT",`Method call ${mt(g)}() timed out after ${b}ms`))},b):void 0;n.set(m,{methodPath:g,resolve:O,reject:_,timeoutId:J});try{let L={namespace:Jr,channel:t,type:"CALL",id:m,methodPath:g,args:D};i?.(`Sending ${mt(g)}() call`,L),r.sendMessage(L,f)}catch(L){_(new pr("TRANSMISSION_FAILED",L.message))}})},i),destroy:()=>{o=!0,r.removeMessageHandler(e);for(let{methodPath:g,reject:c,timeoutId:m}of n.values())clearTimeout(m),c(m$(g));n.clear()}}},K6=W6,V6=()=>{let r,t;return{promise:new Promise((o,n)=>{r=o,t=n}),resolve:r,reject:t}},L6=V6,Y6=class extends Error{constructor(r){super(`You've hit a bug in Penpal. Please file an issue with the following information: ${r}`)}},Et=Y6,Ke="deprecated-penpal",E6=(r)=>{return qi(r)&&"penpal"in r},Q6=(r)=>r.split("."),b$=(r)=>r.join("."),a$=(r)=>{return new Et(`Unexpected message to translate: ${JSON.stringify(r)}`)},F6=(r)=>{if(r.penpal==="syn")return{namespace:Jr,channel:void 0,type:"SYN",participantId:Ke};if(r.penpal==="ack")return{namespace:Jr,channel:void 0,type:"ACK2"};if(r.penpal==="call")return{namespace:Jr,channel:void 0,type:"CALL",id:r.id,methodPath:Q6(r.methodName),args:r.args};if(r.penpal==="reply")if(r.resolution==="fulfilled")return{namespace:Jr,channel:void 0,type:"REPLY",callId:r.id,value:r.returnValue};else return{namespace:Jr,channel:void 0,type:"REPLY",callId:r.id,isError:!0,...r.returnValueIsError?{value:r.returnValue,isSerializedErrorInstance:!0}:{value:r.returnValue}};throw a$(r)},S6=(r)=>{if(Wi(r))return{penpal:"synAck",methodNames:r.methodPaths.map(b$)};if($$(r))return{penpal:"call",id:r.id,methodName:b$(r.methodPath),args:r.args};if(x$(r))if(r.isError)return{penpal:"reply",id:r.callId,resolution:"rejected",...r.isSerializedErrorInstance?{returnValue:r.value,returnValueIsError:!0}:{returnValue:r.value}};else return{penpal:"reply",id:r.callId,resolution:"fulfilled",returnValue:r.value};throw a$(r)},G6=({messenger:r,methods:t,timeout:i,channel:o,log:n})=>{let e=w$(),l,u=[],g=!1,c=f$(t),{promise:m,resolve:v,reject:h}=L6(),b=i!==void 0?setTimeout(()=>{h(new pr("CONNECTION_TIMEOUT",`Connection timed out after ${i}ms`))},i):void 0,f=()=>{for(let W of u)W()},D=()=>{if(g)return;u.push(U6(r,t,o,n));let{remoteProxy:W,destroy:Q}=K6(r,o,n);u.push(Q),clearTimeout(b),g=!0,v({remoteProxy:W,destroy:f})},O=()=>{let W={namespace:Jr,type:"SYN",channel:o,participantId:e};n?.("Sending handshake SYN",W);try{r.sendMessage(W)}catch(Q){h(new pr("TRANSMISSION_FAILED",Q.message))}},_=(W)=>{if(n?.("Received handshake SYN",W),W.participantId===l&&l!==Ke)return;if(l=W.participantId,O(),!(e>l||l===Ke))return;let B={namespace:Jr,channel:o,type:"ACK1",methodPaths:c};n?.("Sending handshake ACK1",B);try{r.sendMessage(B)}catch(tr){h(new pr("TRANSMISSION_FAILED",tr.message));return}},J=(W)=>{n?.("Received handshake ACK1",W);let Q={namespace:Jr,channel:o,type:"ACK2"};n?.("Sending handshake ACK2",Q);try{r.sendMessage(Q)}catch(B){h(new pr("TRANSMISSION_FAILED",B.message));return}D()},L=(W)=>{n?.("Received handshake ACK2",W),D()},X=(W)=>{if(Yt(W))_(W);if(Wi(W))J(W);if(zn(W))L(W)};return r.addMessageHandler(X),u.push(()=>r.removeMessageHandler(X)),O(),m},N6=G6,B6=(r)=>{let t=!1,i;return(...o)=>{if(!t)t=!0,i=r(...o);return i}},y6=B6,v$=new WeakSet,A6=({messenger:r,methods:t={},timeout:i,channel:o,log:n})=>{if(!r)throw new pr("INVALID_ARGUMENT","messenger must be defined");if(v$.has(r))throw new pr("INVALID_ARGUMENT","A messenger can only be used for a single connection");v$.add(r);let e=[r.destroy],l=y6((c)=>{if(c){let m={namespace:Jr,channel:o,type:"DESTROY"};try{r.sendMessage(m)}catch(v){}}for(let m of e)m();n?.("Connection destroyed")}),u=(c)=>{return j6(c)&&c.channel===o};return{promise:(async()=>{try{r.initialize({log:n,validateReceivedMessage:u}),r.addMessageHandler((v)=>{if(O6(v))l(!1)});let{remoteProxy:c,destroy:m}=await N6({messenger:r,methods:t,timeout:i,channel:o,log:n});return e.push(m),c}catch(c){throw l(!0),c}})(),destroy:()=>{l(!0)}}},p$=A6,H6=class{#r;#o;#n;#t;#l;#i=new Set;#e;#c=!1;constructor({remoteWindow:r,allowedOrigins:t}){if(!r)throw new pr("INVALID_ARGUMENT","remoteWindow must be defined");this.#r=r,this.#o=t?.length?t:[window.origin]}initialize=({log:r,validateReceivedMessage:t})=>{this.#n=r,this.#t=t,window.addEventListener("message",this.#b)};sendMessage=(r,t)=>{if(Yt(r)){let i=this.#u(r);this.#r.postMessage(r,{targetOrigin:i,transfer:t});return}if(Wi(r)||this.#c){let i=this.#c?S6(r):r,o=this.#u(r);this.#r.postMessage(i,{targetOrigin:o,transfer:t});return}if(zn(r)){let{port1:i,port2:o}=new MessageChannel;this.#e=i,i.addEventListener("message",this.#g),i.start();let n=[o,...t||[]],e=this.#u(r);this.#r.postMessage(r,{targetOrigin:e,transfer:n});return}if(this.#e){this.#e.postMessage(r,{transfer:t});return}throw new Et("Port is undefined")};addMessageHandler=(r)=>{this.#i.add(r)};removeMessageHandler=(r)=>{this.#i.delete(r)};destroy=()=>{window.removeEventListener("message",this.#b),this.#m(),this.#i.clear()};#v=(r)=>{return this.#o.some((t)=>t instanceof RegExp?t.test(r):t===r||t==="*")};#u=(r)=>{if(Yt(r))return"*";if(!this.#l)throw new Et("Concrete remote origin not set");return this.#l==="null"&&this.#o.includes("*")?"*":this.#l};#m=()=>{this.#e?.removeEventListener("message",this.#g),this.#e?.close(),this.#e=void 0};#b=({source:r,origin:t,ports:i,data:o})=>{if(r!==this.#r)return;if(E6(o))this.#n?.("Please upgrade the child window to the latest version of Penpal."),this.#c=!0,o=F6(o);if(!this.#t?.(o))return;if(!this.#v(t)){this.#n?.(`Received a message from origin \`${t}\` which did not match allowed origins \`[${this.#o.join(", ")}]\``);return}if(Yt(o))this.#m(),this.#l=t;if(zn(o)&&!this.#c){if(this.#e=i[0],!this.#e)throw new Et("No port received on ACK2");this.#e.addEventListener("message",this.#g),this.#e.start()}for(let n of this.#i)n(o)};#g=({data:r})=>{if(!this.#t?.(r))return;for(let t of this.#i)t(r)}},_$=H6,hU=class{#r;#o;#n=new Set;#t;constructor({worker:r}){if(!r)throw new pr("INVALID_ARGUMENT","worker must be defined");this.#r=r}initialize=({validateReceivedMessage:r})=>{this.#o=r,this.#r.addEventListener("message",this.#i)};sendMessage=(r,t)=>{if(Yt(r)||Wi(r)){this.#r.postMessage(r,{transfer:t});return}if(zn(r)){let{port1:i,port2:o}=new MessageChannel;this.#t=i,i.addEventListener("message",this.#i),i.start(),this.#r.postMessage(r,{transfer:[o,...t||[]]});return}if(this.#t){this.#t.postMessage(r,{transfer:t});return}throw new Et("Port is undefined")};addMessageHandler=(r)=>{this.#n.add(r)};removeMessageHandler=(r)=>{this.#n.delete(r)};destroy=()=>{this.#r.removeEventListener("message",this.#i),this.#l(),this.#n.clear()};#l=()=>{this.#t?.removeEventListener("message",this.#i),this.#t?.close(),this.#t=void 0};#i=({ports:r,data:t})=>{if(!this.#o?.(t))return;if(Yt(t))this.#l();if(zn(t)){if(this.#t=r[0],!this.#t)throw new Et("No port received on ACK2");this.#t.addEventListener("message",this.#i),this.#t.start()}for(let i of this.#n)i(t)}};var $U=class{#r;#o;#n=new Set;constructor({port:r}){if(!r)throw new pr("INVALID_ARGUMENT","port must be defined");this.#r=r}initialize=({validateReceivedMessage:r})=>{this.#o=r,this.#r.addEventListener("message",this.#t),this.#r.start()};sendMessage=(r,t)=>{this.#r?.postMessage(r,{transfer:t})};addMessageHandler=(r)=>{this.#n.add(r)};removeMessageHandler=(r)=>{this.#n.delete(r)};destroy=()=>{this.#r.removeEventListener("message",this.#t),this.#r.close(),this.#n.clear()};#t=({data:r})=>{if(!this.#o?.(r))return;for(let t of this.#n)t(r)}};var D$=["SCRIPT","STYLE","LINK","META","NOSCRIPT"],j$=new Set(["a","abbr","area","audio","b","bdi","bdo","br","button","canvas","cite","code","data","datalist","del","dfn","em","embed","h1","h2","h3","h4","h5","h6","i","iframe","img","input","ins","kbd","label","li","map","mark","meter","noscript","object","output","p","picture","progress","q","ruby","s","samp","script","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","var","video","wbr"]);var Ve=".next-prod";var qU={SCALE:0.7,PAN_POSITION:{x:175,y:100},URL:"http://localhost:3000/",ASPECT_RATIO_LOCKED:!1,DEVICE:"Custom:Custom",THEME:"system",ORIENTATION:"Portrait",MIN_DIMENSIONS:{width:"280px",height:"360px"},COMMANDS:{run:"bun run dev",build:"bun run build",install:"bun install"},IMAGE_FOLDER:"public",IMAGE_DIMENSION:{width:"100px",height:"100px"},FONT_FOLDER:"fonts",FONT_CONFIG:"app/fonts.ts",TAILWIND_CONFIG:"tailwind.config.ts",CHAT_SETTINGS:{showSuggestions:!0,autoApplyCode:!0,expandCodeBlocks:!1,showMiniChat:!0,maxImages:5},EDITOR_SETTINGS:{shouldWarnDelete:!1,enableBunReplace:!0,buildFlags:"--no-lint"}};var Le=["node_modules","dist","build",".git",".next"],VU=[...Le,"static","out",Ve],LU=[...Le,Ve],YU=[...Le,"coverage"],R6=[".jsx",".tsx"],M6=[".js",".ts",".mjs",".cjs"],EU=[...R6,...M6];var SU={["en"]:"English",["ja"]:"日本語",["zh"]:"中文",["ko"]:"한국어"};var U$=qh(We(),1);function G(r){return document.querySelector(`[${"data-odid"}="${r}"]`)}function Ye(r,t=!1){let i=`[${"data-odid"}="${r}"]`;if(!t)return i;return Z6(i)}function Z6(r){return CSS.escape(r)}function Dt(r){return r&&r instanceof Node&&r.nodeType===Node.ELEMENT_NODE&&!D$.includes(r.tagName)&&!r.hasAttribute("data-onlook-ignore")&&r.style.display!=="none"}var C6="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var O$=(r=21)=>{let t="",i=r|0;while(i--)t+=C6[Math.random()*64|0];return t};function Pr(r){let t=r.getAttribute("data-odid");if(!t)t=`odid-${O$()}`,r.setAttribute("data-odid",t);return t}function Gr(r){return r.getAttribute("data-oid")}function Nr(r){return r.getAttribute("data-oiid")}function I$(r,t){if(!_r)return;_r.onDomProcessed({layerMap:Object.fromEntries(r),rootNode:t}).catch((i)=>{console.error("Failed to send DOM processed event:",i)})}function Ee(r){window._onlookFrameId=r}function Qt(){let r=window._onlookFrameId;if(!r)return console.warn("Frame id not found"),_r?.getFrameId().then((t)=>{Ee(t)}),"";return r}function T6(r=document.body){if(!Qt())return console.warn("frameView id not found, skipping dom processing"),null;let i=zr(r);if(!i)return console.warn("Error building layer tree, root element is null"),null;let o=r.getAttribute("data-odid");if(!o)return console.warn("Root dom id not found"),null;let n=i.get(o);if(!n)return console.warn("Root node not found"),null;return I$(i,n),{rootDomId:o,layerMap:Array.from(i.entries())}}var Ki=U$.default(T6,500),d6=[(r)=>{let t=r.parentElement;return t&&t.tagName.toLowerCase()==="svg"},(r)=>{return r.tagName.toLowerCase()==="next-route-announcer"},(r)=>{return r.tagName.toLowerCase()==="nextjs-portal"}];function zr(r){if(!Dt(r))return null;let t=new Map,i=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:(e)=>{let l=e;if(d6.some((u)=>u(l)))return NodeFilter.FILTER_REJECT;return Dt(l)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}}),o=k$(r);o.children=[],t.set(o.domId,o);let n=i.nextNode();while(n){let e=k$(n);e.children=[];let l=n.parentElement;if(l){let u=l.getAttribute("data-odid");if(u){e.parent=u;let g=t.get(u);if(g&&g.children)g.children.push(e.domId)}}t.set(e.domId,e),n=i.nextNode()}return t}function k$(r){let t=Pr(r),i=Gr(r),o=Nr(r),n=Array.from(r.childNodes).map((g)=>g.nodeType===Node.TEXT_NODE?g.textContent:"").join(" ").trim().slice(0,500),e=window.getComputedStyle(r),l=r.getAttribute("data-ocname");return{domId:t,oid:i||null,instanceId:o||null,textContent:n||"",tagName:r.tagName.toLowerCase(),isVisible:e.visibility!=="hidden",component:l||null,frameId:Qt(),children:null,parent:null,dynamicType:null,coreElementType:null}}function Qe(r){throw new Error(`Expected \`never\`, found: ${JSON.stringify(r)}`)}var J$=(r)=>JSON.parse(JSON.stringify(r));function P$(r){let t=q$(r),i=s6(r),o=rz(r);return{defined:{width:"auto",height:"auto",...i,...o},computed:t}}function X$(r){let t=G(r);if(!t)return{};return q$(t)}function q$(r){return J$(window.getComputedStyle(r))}function s6(r){let t={},i=W$(r.style.cssText);return Object.entries(i).forEach(([o,n])=>{t[o]=n}),t}function rz(r){let t={},i=document.styleSheets;for(let o=0;ot[c]=m)}}catch(u){console.warn("Error",u)}}return t}function W$(r){let t={};return r.split(";").forEach((i)=>{if(i=i.trim(),!i)return;let[o,...n]=i.split(":");t[o?.trim()??""]=n.join(":").trim()}),t}var K$=(r,t)=>{let i=document.elementFromPoint(r,t);if(!i)return;let o=(e)=>{if(e?.shadowRoot){let l=e.shadowRoot.elementFromPoint(r,t);if(l==e)return e;else if(l?.shadowRoot)return o(l);else return l||e}else return e};return o(i)||i},lr=(r,t)=>{let i=r.parentElement,o=i?{domId:i.getAttribute("data-odid"),frameId:Qt(),oid:i.getAttribute("data-oid"),instanceId:i.getAttribute("data-oiid"),rect:i.getBoundingClientRect()}:null,n=r.getBoundingClientRect(),e=t?P$(r):null;return{domId:r.getAttribute("data-odid"),oid:r.getAttribute("data-oid"),frameId:Qt(),instanceId:r.getAttribute("data-oiid"),rect:n,tagName:r.tagName,parent:o,styles:e}};function Vi(r){try{let t=r.getAttribute("data-onlook-drag-saved-style");if(t){let i=JSON.parse(t);for(let o in i)r.style[o]=i[o]}}catch(t){console.warn("Error restoring style",t)}}function V$(r){let t=r.parentElement;if(!t)return;return{type:"index",targetDomId:t.getAttribute("data-odid"),targetOid:Nr(t)||Gr(t)||null,index:Array.from(r.parentElement?.children||[]).indexOf(r),originalIndex:Array.from(r.parentElement?.children||[]).indexOf(r)}}var L$=(r)=>{let t=Array.from(r.childNodes).filter((i)=>i.nodeType===Node.TEXT_NODE).map((i)=>i.textContent);if(t.length===0)return;return t.join("")};var Li=(r,t)=>{let i=G(r)||document.body;return lr(i,t)},Y$=(r,t,i)=>{let o=tz(r,t)||document.body;return lr(o,i)},tz=(r,t)=>{let i=document.elementFromPoint(r,t);if(!i)return;let o=(e)=>{if(e?.shadowRoot){let l=e.shadowRoot.elementFromPoint(r,t);if(l==e)return e;else if(l?.shadowRoot)return o(l);else return l||e}else return e};return o(i)||i},E$=(r,t,i)=>{let o=G(r);if(!o){console.warn("Failed to updateElementInstanceId: Element not found");return}o.setAttribute("data-oiid",t),o.setAttribute("data-ocname",i)},Q$=(r)=>{let t=G(r);if(!t?.parentElement)return null;return lr(t.parentElement,!1)},F$=(r)=>{let t=G(r);if(!t)return 0;return t.children.length},S$=(r)=>{let t=G(r);if(!t)return null;return lr(t.offsetParent,!1)};function G$(r,t,i){let o=G(r.domId);if(!o)return console.warn("Failed to find parent element",r.domId),null;let n=nz(t),e=new Set(i.map((c)=>c.domId)),l=Array.from(o.children).map((c,m)=>({element:c,index:m,domId:Pr(c)})).filter(({domId:c})=>e.has(c));if(l.length===0)return console.warn("No valid children found to group"),null;let u=Math.min(...l.map((c)=>c.index));return o.insertBefore(n,o.children[u]??null),l.forEach(({element:c})=>{let m=c.cloneNode(!0);m.setAttribute("data-onlook-inserted","true"),n.appendChild(m),c.style.display="none",B$(c)}),{domEl:lr(n,!0),newMap:zr(n)}}function N$(r,t){let i=G(r.domId);if(!i)return console.warn(`Parent element not found: ${r.domId}`),null;let o;if(t.domId)o=G(t.domId);else return console.warn("Container domId is required for ungrouping"),null;if(!o)return console.warn("Container element not found for ungrouping"),null;return Array.from(o.children).forEach((l)=>{i.appendChild(l)}),o.remove(),{domEl:lr(i,!0),newMap:zr(i)}}function nz(r){let t=document.createElement(r.tagName);return Object.entries(r.attributes).forEach(([i,o])=>{t.setAttribute(i,o)}),t.setAttribute("data-onlook-inserted","true"),t.setAttribute("data-odid",r.domId),t.setAttribute("data-oid",r.oid),t}function B$(r){r.removeAttribute("data-odid"),r.removeAttribute("data-oid"),r.removeAttribute("data-onlook-inserted");let t=Array.from(r.children);if(t.length===0)return;t.forEach((i)=>{B$(i)})}function Yi(r){let t=G(r);if(!t)return console.warn("Element not found for domId:",r),null;return y$(t)}function y$(r){let t=Array.from(r.attributes).reduce((o,n)=>{return o[n.name]=n.value,o},{}),i=Nr(r)||Gr(r)||null;if(!i)return console.warn("Element has no oid"),null;return{oid:i,domId:Pr(r),tagName:r.tagName.toLowerCase(),children:Array.from(r.children).map((o)=>y$(o)).filter(Boolean),attributes:t,textContent:L$(r)||null,styles:{}}}function A$(r){let t=G(r);if(!t)throw new Error("Element not found for domId: "+r);let i=t.parentElement;if(!i)throw new Error("Inserted element has no parent");let o=Nr(i)||Gr(i);if(!o)return console.warn("Parent element has no oid"),null;let n=Pr(i),e=Array.from(i.children).indexOf(t);if(e===-1)return{type:"append",targetDomId:n,targetOid:o};return{type:"index",targetDomId:n,targetOid:o,index:e,originalIndex:e}}function H$(r){let t=document.querySelector(`[${"data-odid"}="${r}"]`);if(!t)return console.warn("No element found",{domId:r}),{dynamicType:null,coreType:null};let i=t.getAttribute("data-onlook-dynamic-type")||null,o=t.getAttribute("data-onlook-core-element-type")||null;return{dynamicType:i,coreType:o}}function R$(r,t,i){let o=document.querySelector(`[${"data-odid"}="${r}"]`);if(o){if(t)o.setAttribute("data-onlook-dynamic-type",t);if(i)o.setAttribute("data-onlook-core-element-type",i)}}function M$(){let t=document.body.querySelector(`[${"data-oid"}]`);if(t)return lr(t,!0);return null}var Qr=0,w=1,k=2,R=3,S=4,gr=5,Ft=6,er=7,fr=8,P=9,U=10,y=11,q=12,Y=13,dr=14,hr=15,d=16,nr=17,ir=18,mr=19,wr=20,K=21,j=22,Z=23,xr=24,A=25;function cr(r){return r>=48&&r<=57}function Or(r){return cr(r)||r>=65&&r<=70||r>=97&&r<=102}function Fi(r){return r>=65&&r<=90}function iz(r){return r>=97&&r<=122}function oz(r){return Fi(r)||iz(r)}function ez(r){return r>=128}function Qi(r){return oz(r)||ez(r)||r===95}function an(r){return Qi(r)||cr(r)||r===45}function lz(r){return r>=0&&r<=8||r===11||r>=14&&r<=31||r===127}function pn(r){return r===10||r===13||r===12}function Br(r){return pn(r)||r===32||r===9}function Dr(r,t){if(r!==92)return!1;if(pn(t)||t===0)return!1;return!0}function St(r,t,i){if(r===45)return Qi(t)||t===45||Dr(t,i);if(Qi(r))return!0;if(r===92)return Dr(r,t);return!1}function Si(r,t,i){if(r===43||r===45){if(cr(t))return 2;return t===46&&cr(i)?3:0}if(r===46)return cr(t)?2:0;if(cr(r))return 1;return 0}function Gi(r){if(r===65279)return 1;if(r===65534)return 1;return 0}var Fe=new Array(128),cz=128,_n=130,Se=131,Ni=132,Ge=133;for(let r=0;rr.length)return!1;for(let n=t;n=0;t--)if(!Br(r.charCodeAt(t)))break;return t+1}function Dn(r,t){for(;t=55296&&t<=57343||t>1114111)t=65533;return String.fromCodePoint(t)}var Nt=["EOF-token","ident-token","function-token","at-keyword-token","hash-token","string-token","bad-string-token","url-token","bad-url-token","delim-token","number-token","percentage-token","dimension-token","whitespace-token","CDO-token","CDC-token","colon-token","semicolon-token","comma-token","[-token","]-token","(-token",")-token","{-token","}-token","comment-token"];function Bt(r=null,t){if(r===null||r.length0?Gi(t.charCodeAt(0)):0,n=Bt(r.lines,i),e=Bt(r.columns,i),l=r.startLine,u=r.startColumn;for(let g=o;g{}){r=String(r||"");let i=r.length,o=Bt(this.offsetAndType,r.length+1),n=Bt(this.balance,r.length+1),e=0,l=-1,u=0,g=r.length;this.offsetAndType=null,this.balance=null,n.fill(0),t(r,(c,m,v)=>{let h=e++;if(o[h]=c<>Hr]}else if(s$(c))g=h,u=Ot[c]}),o[e]=Qr<e)n[c]=e}this.source=r,this.firstCharOffset=l===-1?0:l,this.tokenCount=e,this.offsetAndType=o,this.balance=n,this.reset(),this.next()}lookupType(r){if(r+=this.tokenIndex,r>Hr;return Qr}lookupTypeNonSC(r){for(let t=this.tokenIndex;t>Hr;if(i!==Y&&i!==A){if(r--===0)return i}}return Qr}lookupOffset(r){if(r+=this.tokenIndex,r>Hr;if(i!==Y&&i!==A){if(r--===0)return t-this.tokenIndex}}return Qr}lookupValue(r,t){if(r+=this.tokenIndex,r0)return r>Hr,this.tokenEnd=t&Ar;else this.tokenIndex=this.tokenCount,this.next()}next(){let r=this.tokenIndex+1;if(r>Hr,this.tokenEnd=r&Ar;else this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=Qr,this.tokenStart=this.tokenEnd=this.source.length}skipSC(){while(this.tokenType===Y||this.tokenType===A)this.next()}skipUntilBalanced(r,t){let i=r,o=0,n=0;r:for(;i0?this.offsetAndType[i-1]&Ar:this.firstCharOffset,t(this.source.charCodeAt(n))){case 1:break r;case 2:i++;break r;default:if(s$(this.offsetAndType[i]>>Hr))i=o}}this.skip(i-this.tokenIndex)}forEachToken(r){for(let t=0,i=this.firstCharOffset;t>Hr;i=e,r(l,o,e,t)}}dump(){let r=new Array(this.tokenCount);return this.forEachToken((t,i,o,n)=>{r[n]={idx:n,type:Nt[t],chunk:this.source.substring(i,o),balance:this.balance[n]}}),r}}function bt(r,t){function i(v){return v=r.length){if(cString(f+_+1).padStart(h)+" |"+O).join(` `)}let u=` `.repeat(Math.max(o-1,0)),g=" ".repeat(Math.max(n-1,0)),c=(u+g+r).split(/\r\n?|\n|\f/),m=Math.max(1,t-e)-1,v=Math.min(t+e,c.length+1),h=Math.max(4,String(v).length)+1,b=0;if(i+=(t0.length-1)*(c[t-1].substr(0,i-1).match(/\t/g)||[]).length,i>Be)b=i-r0+3,i=r0-2;for(let f=m;f<=v;f++)if(f>=0&&f0&&c[f].length>b?"…":"")+c[f].substr(b,Be-2)+(c[f].length>b+Be-1?"…":"");return[l(m,t),new Array(i+h+2).join("-")+"^",l(t,v)].filter(Boolean).join(` `).replace(/^(\s+\d+\s+\|\n)+/,"").replace(/\n(\s+\d+\s+\|)+$/,"")}function ye(r,t,i,o,n,e=1,l=1){return Object.assign(It("SyntaxError",r),{source:t,offset:i,line:o,column:n,sourceFragment(g){return n0({source:t,line:o,column:n,baseLine:e,baseColumn:l},isNaN(g)?0:g)},get formattedMessage(){return`Parse error: ${r} -`+n0({source:t,line:o,column:n,baseLine:e,baseColumn:l},2)}})}function i0(r){let t=this.createList(),i=!1,o={recognizer:r};while(!this.eof){switch(this.tokenType){case A:this.next();continue;case Y:i=!0,this.next();continue}let n=r.getNode.call(this,o);if(n===void 0)break;if(i){if(r.onWhiteSpace)r.onWhiteSpace.call(this,n,t,o);i=!1}t.push(n)}if(i&&r.onWhiteSpace)r.onWhiteSpace.call(this,null,t,o);return t}var o0=()=>{},gz=33,mz=35,Ae=59,e0=123,l0=0;function bz(r){return function(){return this[r]()}}function He(r){let t=Object.create(null);for(let i of Object.keys(r)){let o=r[i],n=o.parse||o;if(n)t[i]=n}return t}function vz(r){let t={context:Object.create(null),features:Object.assign(Object.create(null),r.features),scope:Object.assign(Object.create(null),r.scope),atrule:He(r.atrule),pseudo:He(r.pseudo),node:He(r.node)};for(let[i,o]of Object.entries(r.parseContext))switch(typeof o){case"function":t.context[i]=o;break;case"string":t.context[i]=bz(o);break}return{config:t,...t,...t.node}}function c0(r){let t="",i="",o=!1,n=o0,e=!1,l=new Hi,u=Object.assign(new Ri,vz(r||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:i0,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(c){return c===e0?1:0},consumeUntilLeftCurlyBracketOrSemicolon(c){return c===e0||c===Ae?1:0},consumeUntilExclamationMarkOrSemicolon(c){return c===gz||c===Ae?1:0},consumeUntilSemicolonIncluded(c){return c===Ae?2:0},createList(){return new or},createSingleNodeList(c){return new or().appendData(c)},getFirstListNode(c){return c&&c.first},getLastListNode(c){return c&&c.last},parseWithFallback(c,m){let v=this.tokenIndex;try{return c.call(this)}catch(h){if(e)throw h;this.skip(v-this.tokenIndex);let b=m.call(this);return e=!0,n(h,b),e=!1,b}},lookupNonWSType(c){let m;do if(m=this.lookupType(c++),m!==Y&&m!==A)return m;while(m!==l0);return l0},charCodeAt(c){return c>=0&&cb.toUpperCase()),v=`${/[[\](){}]/.test(m)?`"${m}"`:m} is expected`,h=this.tokenStart;switch(c){case w:if(this.tokenType===k||this.tokenType===er)h=this.tokenEnd-1,v="Identifier is expected but function found";else v="Identifier is expected";break;case S:if(this.isDelim(mz))this.next(),h++,v="Name is expected";break;case y:if(this.tokenType===U)h=this.tokenEnd,v="Percent sign is expected";break}this.error(v,h)}this.next()},eatIdent(c){if(this.tokenType!==w||this.lookupValue(0,c)===!1)this.error(`Identifier "${c}" is expected`);this.next()},eatDelim(c){if(!this.isDelim(c))this.error(`Delim "${String.fromCharCode(c)}" is expected`);this.next()},getLocation(c,m){if(o)return l.getLocationRange(c,m,i);return null},getLocationFromList(c){if(o){let m=this.getFirstListNode(c),v=this.getLastListNode(c);return l.getLocationRange(m!==null?m.loc.start.offset-l.startOffset:this.tokenStart,v!==null?v.loc.end.offset-l.startOffset:this.tokenStart,i)}return null},error(c,m){let v=typeof m!=="undefined"&&m",o=Boolean(m.positions),n=typeof m.onParseError==="function"?m.onParseError:o0,e=!1,u.parseAtrulePrelude="parseAtrulePrelude"in m?Boolean(m.parseAtrulePrelude):!0,u.parseRulePrelude="parseRulePrelude"in m?Boolean(m.parseRulePrelude):!0,u.parseValue="parseValue"in m?Boolean(m.parseValue):!0,u.parseCustomProperty="parseCustomProperty"in m?Boolean(m.parseCustomProperty):!1;let{context:v="default",onComment:h}=m;if(v in u.context===!1)throw new Error("Unknown context `"+v+"`");if(typeof h==="function")u.forEachToken((f,D,O)=>{if(f===A){let _=u.getLocation(D,O),J=rt(t,O-2,O,"*/")?t.slice(D+2,O-2):t.slice(D+2,O);h(J,_)}});let b=u.context[v].call(u,m);if(!u.eof)u.error();return b},{SyntaxError:ye,config:u.config})}var kn=$0(),ur=Mi(),Ci=p0().ArraySet,ia=D0().MappingList;function Vr(r){if(!r)r={};this._file=ur.getArg(r,"file",null),this._sourceRoot=ur.getArg(r,"sourceRoot",null),this._skipValidation=ur.getArg(r,"skipValidation",!1),this._ignoreInvalidMapping=ur.getArg(r,"ignoreInvalidMapping",!1),this._sources=new Ci,this._names=new Ci,this._mappings=new ia,this._sourcesContents=null}Vr.prototype._version=3;Vr.fromSourceMap=function r(t,i){var o=t.sourceRoot,n=new Vr(Object.assign(i||{},{file:t.file,sourceRoot:o}));return t.eachMapping(function(e){var l={generated:{line:e.generatedLine,column:e.generatedColumn}};if(e.source!=null){if(l.source=e.source,o!=null)l.source=ur.relative(o,l.source);if(l.original={line:e.originalLine,column:e.originalColumn},e.name!=null)l.name=e.name}n.addMapping(l)}),t.sources.forEach(function(e){var l=e;if(o!==null)l=ur.relative(o,e);if(!n._sources.has(l))n._sources.add(l);var u=t.sourceContentFor(e);if(u!=null)n.setSourceContent(e,u)}),n};Vr.prototype.addMapping=function r(t){var i=ur.getArg(t,"generated"),o=ur.getArg(t,"original",null),n=ur.getArg(t,"source",null),e=ur.getArg(t,"name",null);if(!this._skipValidation){if(this._validateMapping(i,o,n,e)===!1)return}if(n!=null){if(n=String(n),!this._sources.has(n))this._sources.add(n)}if(e!=null){if(e=String(e),!this._names.has(e))this._names.add(e)}this._mappings.add({generatedLine:i.line,generatedColumn:i.column,originalLine:o!=null&&o.line,originalColumn:o!=null&&o.column,source:n,name:e})};Vr.prototype.setSourceContent=function r(t,i){var o=t;if(this._sourceRoot!=null)o=ur.relative(this._sourceRoot,o);if(i!=null){if(!this._sourcesContents)this._sourcesContents=Object.create(null);this._sourcesContents[ur.toSetString(o)]=i}else if(this._sourcesContents){if(delete this._sourcesContents[ur.toSetString(o)],Object.keys(this._sourcesContents).length===0)this._sourcesContents=null}};Vr.prototype.applySourceMap=function r(t,i,o){var n=i;if(i==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);n=t.file}var e=this._sourceRoot;if(e!=null)n=ur.relative(e,n);var l=new Ci,u=new Ci;this._mappings.unsortedForEach(function(g){if(g.source===n&&g.originalLine!=null){var c=t.originalPositionFor({line:g.originalLine,column:g.originalColumn});if(c.source!=null){if(g.source=c.source,o!=null)g.source=ur.join(o,g.source);if(e!=null)g.source=ur.relative(e,g.source);if(g.originalLine=c.line,g.originalColumn=c.column,c.name!=null)g.name=c.name}}var m=g.source;if(m!=null&&!l.has(m))l.add(m);var v=g.name;if(v!=null&&!u.has(v))u.add(v)},this),this._sources=l,this._names=u,t.sources.forEach(function(g){var c=t.sourceContentFor(g);if(c!=null){if(o!=null)g=ur.join(o,g);if(e!=null)g=ur.relative(e,g);this.setSourceContent(g,c)}},this)};Vr.prototype._validateMapping=function r(t,i,o,n){if(i&&typeof i.line!=="number"&&typeof i.column!=="number"){var e="original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";if(this._ignoreInvalidMapping){if(typeof console!=="undefined"&&console.warn)console.warn(e);return!1}else throw new Error(e)}if(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!i&&!o&&!n)return;else if(t&&"line"in t&&"column"in t&&i&&"line"in i&&"column"in i&&t.line>0&&t.column>=0&&i.line>0&&i.column>=0&&o)return;else{var e="Invalid mapping: "+JSON.stringify({generated:t,source:o,original:i,name:n});if(this._ignoreInvalidMapping){if(typeof console!=="undefined"&&console.warn)console.warn(e);return!1}else throw new Error(e)}};Vr.prototype._serializeMappings=function r(){var t=0,i=1,o=0,n=0,e=0,l=0,u="",g,c,m,v,h=this._mappings.toArray();for(var b=0,f=h.length;b0){if(!ur.compareByGeneratedPositionsInflated(c,h[b-1]))continue;g+=","}if(g+=kn.encode(c.generatedColumn-t),t=c.generatedColumn,c.source!=null){if(v=this._sources.indexOf(c.source),g+=kn.encode(v-l),l=v,g+=kn.encode(c.originalLine-1-n),n=c.originalLine-1,g+=kn.encode(c.originalColumn-o),o=c.originalColumn,c.name!=null)m=this._names.indexOf(c.name),g+=kn.encode(m-e),e=m}u+=g}return u};Vr.prototype._generateSourcesContent=function r(t,i){return t.map(function(o){if(!this._sourcesContents)return null;if(i!=null)o=ur.relative(i,o);var n=ur.toSetString(o);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)};Vr.prototype.toJSON=function r(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null)t.file=this._file;if(this._sourceRoot!=null)t.sourceRoot=this._sourceRoot;if(this._sourcesContents)t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot);return t};Vr.prototype.toString=function r(){return JSON.stringify(this.toJSON())};var Te=Vr;var j0=new Set(["Atrule","Selector","Declaration"]);function O0(r){let t=new Te,i={line:1,column:0},o={line:0,column:0},n={line:1,column:0},e={generated:n},l=1,u=0,g=!1,c=r.node;r.node=function(h){if(h.loc&&h.loc.start&&j0.has(h.type)){let b=h.loc.start.line,f=h.loc.start.column-1;if(o.line!==b||o.column!==f){if(o.line=b,o.column=f,i.line=l,i.column=u,g){if(g=!1,i.line!==n.line||i.column!==n.column)t.addMapping(e)}g=!0,t.addMapping({source:h.loc.source,original:o,generated:i})}}if(c.call(this,h),g&&j0.has(h.type))n.line=l,n.column=u};let m=r.emit;r.emit=function(h,b,f){for(let D=0;Dca,safe:()=>se});var oa=43,ea=45,de=(r,t)=>{if(r===P)r=t;if(typeof r==="string"){let i=r.charCodeAt(0);return i>127?32768:i<<8}return r},I0=[[w,w],[w,k],[w,er],[w,fr],[w,"-"],[w,U],[w,y],[w,q],[w,hr],[w,K],[R,w],[R,k],[R,er],[R,fr],[R,"-"],[R,U],[R,y],[R,q],[R,hr],[S,w],[S,k],[S,er],[S,fr],[S,"-"],[S,U],[S,y],[S,q],[S,hr],[q,w],[q,k],[q,er],[q,fr],[q,"-"],[q,U],[q,y],[q,q],[q,hr],["#",w],["#",k],["#",er],["#",fr],["#","-"],["#",U],["#",y],["#",q],["#",hr],["-",w],["-",k],["-",er],["-",fr],["-","-"],["-",U],["-",y],["-",q],["-",hr],[U,w],[U,k],[U,er],[U,fr],[U,U],[U,y],[U,q],[U,"%"],[U,hr],["@",w],["@",k],["@",er],["@",fr],["@","-"],["@",hr],[".",U],[".",y],[".",q],["+",U],["+",y],["+",q],["/","*"]],la=I0.concat([[w,S],[q,S],[S,S],[R,K],[R,gr],[R,d],[y,y],[y,q],[y,k],[y,"-"],[j,w],[j,k],[j,y],[j,q],[j,S],[j,"-"]]);function k0(r){let t=new Set(r.map(([i,o])=>de(i)<<16|de(o)));return function(i,o,n){let e=de(o,n),l=n.charCodeAt(0);if(l===ea&&o!==w&&o!==k&&o!==hr||l===oa?t.has(i<<16|l<<8):t.has(i<<16|e))this.emit(" ",Y,!0);return e}}var ca=k0(I0),se=k0(la);var ua=92;function ga(r,t){if(typeof t==="function"){let i=null;r.children.forEach((o)=>{if(i!==null)t.call(this,i);this.node(o),i=o});return}r.children.forEach(this.node,this)}function ma(r){bt(r,(t,i,o)=>{this.token(t,r.slice(i,o))})}function U0(r){let t=new Map;for(let[i,o]of Object.entries(r.node))if(typeof(o.generate||o)==="function")t.set(i,o.generate||o);return function(i,o){let n="",e=0,l={node(g){if(t.has(g.type))t.get(g.type).call(u,g);else throw new Error("Unknown node type: "+g.type)},tokenBefore:se,token(g,c){if(e=this.tokenBefore(e,g,c),this.emit(c,g,!1),g===P&&c.charCodeAt(0)===ua)this.emit(` +`+n0({source:t,line:o,column:n,baseLine:e,baseColumn:l},2)}})}function i0(r){let t=this.createList(),i=!1,o={recognizer:r};while(!this.eof){switch(this.tokenType){case A:this.next();continue;case Y:i=!0,this.next();continue}let n=r.getNode.call(this,o);if(n===void 0)break;if(i){if(r.onWhiteSpace)r.onWhiteSpace.call(this,n,t,o);i=!1}t.push(n)}if(i&&r.onWhiteSpace)r.onWhiteSpace.call(this,null,t,o);return t}var o0=()=>{},gz=33,mz=35,Ae=59,e0=123,l0=0;function bz(r){return function(){return this[r]()}}function He(r){let t=Object.create(null);for(let i of Object.keys(r)){let o=r[i],n=o.parse||o;if(n)t[i]=n}return t}function vz(r){let t={context:Object.create(null),features:Object.assign(Object.create(null),r.features),scope:Object.assign(Object.create(null),r.scope),atrule:He(r.atrule),pseudo:He(r.pseudo),node:He(r.node)};for(let[i,o]of Object.entries(r.parseContext))switch(typeof o){case"function":t.context[i]=o;break;case"string":t.context[i]=bz(o);break}return{config:t,...t,...t.node}}function c0(r){let t="",i="",o=!1,n=o0,e=!1,l=new Hi,u=Object.assign(new Ri,vz(r||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:i0,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(c){return c===e0?1:0},consumeUntilLeftCurlyBracketOrSemicolon(c){return c===e0||c===Ae?1:0},consumeUntilExclamationMarkOrSemicolon(c){return c===gz||c===Ae?1:0},consumeUntilSemicolonIncluded(c){return c===Ae?2:0},createList(){return new or},createSingleNodeList(c){return new or().appendData(c)},getFirstListNode(c){return c&&c.first},getLastListNode(c){return c&&c.last},parseWithFallback(c,m){let v=this.tokenIndex;try{return c.call(this)}catch(h){if(e)throw h;this.skip(v-this.tokenIndex);let b=m.call(this);return e=!0,n(h,b),e=!1,b}},lookupNonWSType(c){let m;do if(m=this.lookupType(c++),m!==Y&&m!==A)return m;while(m!==l0);return l0},charCodeAt(c){return c>=0&&cb.toUpperCase()),v=`${/[[\](){}]/.test(m)?`"${m}"`:m} is expected`,h=this.tokenStart;switch(c){case w:if(this.tokenType===k||this.tokenType===er)h=this.tokenEnd-1,v="Identifier is expected but function found";else v="Identifier is expected";break;case S:if(this.isDelim(mz))this.next(),h++,v="Name is expected";break;case y:if(this.tokenType===U)h=this.tokenEnd,v="Percent sign is expected";break}this.error(v,h)}this.next()},eatIdent(c){if(this.tokenType!==w||this.lookupValue(0,c)===!1)this.error(`Identifier "${c}" is expected`);this.next()},eatDelim(c){if(!this.isDelim(c))this.error(`Delim "${String.fromCharCode(c)}" is expected`);this.next()},getLocation(c,m){if(o)return l.getLocationRange(c,m,i);return null},getLocationFromList(c){if(o){let m=this.getFirstListNode(c),v=this.getLastListNode(c);return l.getLocationRange(m!==null?m.loc.start.offset-l.startOffset:this.tokenStart,v!==null?v.loc.end.offset-l.startOffset:this.tokenStart,i)}return null},error(c,m){let v=typeof m!=="undefined"&&m",o=Boolean(m.positions),n=typeof m.onParseError==="function"?m.onParseError:o0,e=!1,u.parseAtrulePrelude="parseAtrulePrelude"in m?Boolean(m.parseAtrulePrelude):!0,u.parseRulePrelude="parseRulePrelude"in m?Boolean(m.parseRulePrelude):!0,u.parseValue="parseValue"in m?Boolean(m.parseValue):!0,u.parseCustomProperty="parseCustomProperty"in m?Boolean(m.parseCustomProperty):!1;let{context:v="default",onComment:h}=m;if(v in u.context===!1)throw new Error("Unknown context `"+v+"`");if(typeof h==="function")u.forEachToken((f,D,O)=>{if(f===A){let _=u.getLocation(D,O),J=rt(t,O-2,O,"*/")?t.slice(D+2,O-2):t.slice(D+2,O);h(J,_)}});let b=u.context[v].call(u,m);if(!u.eof)u.error();return b},{SyntaxError:ye,config:u.config})}var kn=$0(),ur=Mi(),Ci=p0().ArraySet,ia=D0().MappingList;function Vr(r){if(!r)r={};this._file=ur.getArg(r,"file",null),this._sourceRoot=ur.getArg(r,"sourceRoot",null),this._skipValidation=ur.getArg(r,"skipValidation",!1),this._ignoreInvalidMapping=ur.getArg(r,"ignoreInvalidMapping",!1),this._sources=new Ci,this._names=new Ci,this._mappings=new ia,this._sourcesContents=null}Vr.prototype._version=3;Vr.fromSourceMap=function r(t,i){var o=t.sourceRoot,n=new Vr(Object.assign(i||{},{file:t.file,sourceRoot:o}));return t.eachMapping(function(e){var l={generated:{line:e.generatedLine,column:e.generatedColumn}};if(e.source!=null){if(l.source=e.source,o!=null)l.source=ur.relative(o,l.source);if(l.original={line:e.originalLine,column:e.originalColumn},e.name!=null)l.name=e.name}n.addMapping(l)}),t.sources.forEach(function(e){var l=e;if(o!==null)l=ur.relative(o,e);if(!n._sources.has(l))n._sources.add(l);var u=t.sourceContentFor(e);if(u!=null)n.setSourceContent(e,u)}),n};Vr.prototype.addMapping=function r(t){var i=ur.getArg(t,"generated"),o=ur.getArg(t,"original",null),n=ur.getArg(t,"source",null),e=ur.getArg(t,"name",null);if(!this._skipValidation){if(this._validateMapping(i,o,n,e)===!1)return}if(n!=null){if(n=String(n),!this._sources.has(n))this._sources.add(n)}if(e!=null){if(e=String(e),!this._names.has(e))this._names.add(e)}this._mappings.add({generatedLine:i.line,generatedColumn:i.column,originalLine:o!=null&&o.line,originalColumn:o!=null&&o.column,source:n,name:e})};Vr.prototype.setSourceContent=function r(t,i){var o=t;if(this._sourceRoot!=null)o=ur.relative(this._sourceRoot,o);if(i!=null){if(!this._sourcesContents)this._sourcesContents=Object.create(null);this._sourcesContents[ur.toSetString(o)]=i}else if(this._sourcesContents){if(delete this._sourcesContents[ur.toSetString(o)],Object.keys(this._sourcesContents).length===0)this._sourcesContents=null}};Vr.prototype.applySourceMap=function r(t,i,o){var n=i;if(i==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);n=t.file}var e=this._sourceRoot;if(e!=null)n=ur.relative(e,n);var l=new Ci,u=new Ci;this._mappings.unsortedForEach(function(g){if(g.source===n&&g.originalLine!=null){var c=t.originalPositionFor({line:g.originalLine,column:g.originalColumn});if(c.source!=null){if(g.source=c.source,o!=null)g.source=ur.join(o,g.source);if(e!=null)g.source=ur.relative(e,g.source);if(g.originalLine=c.line,g.originalColumn=c.column,c.name!=null)g.name=c.name}}var m=g.source;if(m!=null&&!l.has(m))l.add(m);var v=g.name;if(v!=null&&!u.has(v))u.add(v)},this),this._sources=l,this._names=u,t.sources.forEach(function(g){var c=t.sourceContentFor(g);if(c!=null){if(o!=null)g=ur.join(o,g);if(e!=null)g=ur.relative(e,g);this.setSourceContent(g,c)}},this)};Vr.prototype._validateMapping=function r(t,i,o,n){if(i&&typeof i.line!=="number"&&typeof i.column!=="number"){var e="original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";if(this._ignoreInvalidMapping){if(typeof console!=="undefined"&&console.warn)console.warn(e);return!1}else throw new Error(e)}if(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!i&&!o&&!n)return;else if(t&&"line"in t&&"column"in t&&i&&"line"in i&&"column"in i&&t.line>0&&t.column>=0&&i.line>0&&i.column>=0&&o)return;else{var e="Invalid mapping: "+JSON.stringify({generated:t,source:o,original:i,name:n});if(this._ignoreInvalidMapping){if(typeof console!=="undefined"&&console.warn)console.warn(e);return!1}else throw new Error(e)}};Vr.prototype._serializeMappings=function r(){var t=0,i=1,o=0,n=0,e=0,l=0,u="",g,c,m,v,h=this._mappings.toArray();for(var b=0,f=h.length;b0){if(!ur.compareByGeneratedPositionsInflated(c,h[b-1]))continue;g+=","}if(g+=kn.encode(c.generatedColumn-t),t=c.generatedColumn,c.source!=null){if(v=this._sources.indexOf(c.source),g+=kn.encode(v-l),l=v,g+=kn.encode(c.originalLine-1-n),n=c.originalLine-1,g+=kn.encode(c.originalColumn-o),o=c.originalColumn,c.name!=null)m=this._names.indexOf(c.name),g+=kn.encode(m-e),e=m}u+=g}return u};Vr.prototype._generateSourcesContent=function r(t,i){return t.map(function(o){if(!this._sourcesContents)return null;if(i!=null)o=ur.relative(i,o);var n=ur.toSetString(o);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)};Vr.prototype.toJSON=function r(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null)t.file=this._file;if(this._sourceRoot!=null)t.sourceRoot=this._sourceRoot;if(this._sourcesContents)t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot);return t};Vr.prototype.toString=function r(){return JSON.stringify(this.toJSON())};var Te=Vr;var j0=new Set(["Atrule","Selector","Declaration"]);function O0(r){let t=new Te,i={line:1,column:0},o={line:0,column:0},n={line:1,column:0},e={generated:n},l=1,u=0,g=!1,c=r.node;r.node=function(h){if(h.loc&&h.loc.start&&j0.has(h.type)){let b=h.loc.start.line,f=h.loc.start.column-1;if(o.line!==b||o.column!==f){if(o.line=b,o.column=f,i.line=l,i.column=u,g){if(g=!1,i.line!==n.line||i.column!==n.column)t.addMapping(e)}g=!0,t.addMapping({source:h.loc.source,original:o,generated:i})}}if(c.call(this,h),g&&j0.has(h.type))n.line=l,n.column=u};let m=r.emit;r.emit=function(h,b,f){for(let D=0;Dca,safe:()=>se});var oa=43,ea=45,de=(r,t)=>{if(r===P)r=t;if(typeof r==="string"){let i=r.charCodeAt(0);return i>127?32768:i<<8}return r},I0=[[w,w],[w,k],[w,er],[w,fr],[w,"-"],[w,U],[w,y],[w,q],[w,hr],[w,K],[R,w],[R,k],[R,er],[R,fr],[R,"-"],[R,U],[R,y],[R,q],[R,hr],[S,w],[S,k],[S,er],[S,fr],[S,"-"],[S,U],[S,y],[S,q],[S,hr],[q,w],[q,k],[q,er],[q,fr],[q,"-"],[q,U],[q,y],[q,q],[q,hr],["#",w],["#",k],["#",er],["#",fr],["#","-"],["#",U],["#",y],["#",q],["#",hr],["-",w],["-",k],["-",er],["-",fr],["-","-"],["-",U],["-",y],["-",q],["-",hr],[U,w],[U,k],[U,er],[U,fr],[U,U],[U,y],[U,q],[U,"%"],[U,hr],["@",w],["@",k],["@",er],["@",fr],["@","-"],["@",hr],[".",U],[".",y],[".",q],["+",U],["+",y],["+",q],["/","*"]],la=I0.concat([[w,S],[q,S],[S,S],[R,K],[R,gr],[R,d],[y,y],[y,q],[y,k],[y,"-"],[j,w],[j,k],[j,y],[j,q],[j,S],[j,"-"]]);function k0(r){let t=new Set(r.map(([i,o])=>de(i)<<16|de(o)));return function(i,o,n){let e=de(o,n),l=n.charCodeAt(0);if(l===ea&&o!==w&&o!==k&&o!==hr||l===oa?t.has(i<<16|l<<8):t.has(i<<16|e))this.emit(" ",Y,!0);return e}}var ca=k0(I0),se=k0(la);var ua=92;function ga(r,t){if(typeof t==="function"){let i=null;r.children.forEach((o)=>{if(i!==null)t.call(this,i);this.node(o),i=o});return}r.children.forEach(this.node,this)}function ma(r){bt(r,(t,i,o)=>{this.token(t,r.slice(i,o))})}function U0(r){let t=new Map;for(let[i,o]of Object.entries(r.node))if(typeof(o.generate||o)==="function")t.set(i,o.generate||o);return function(i,o){let n="",e=0,l={node(g){if(t.has(g.type))t.get(g.type).call(u,g);else throw new Error("Unknown node type: "+g.type)},tokenBefore:se,token(g,c){if(e=this.tokenBefore(e,g,c),this.emit(c,g,!1),g===P&&c.charCodeAt(0)===ua)this.emit(` `,Y,!0)},emit(g){n+=g},result(){return n}};if(o){if(typeof o.decorator==="function")l=o.decorator(l);if(o.sourceMap)l=O0(l);if(o.mode in Ti)l.tokenBefore=Ti[o.mode]}let u={node:(g)=>l.node(g),children:ga,token:(g,c)=>l.token(g,c),tokenize:ma};return l.node(i),l.result()}}function J0(r){return{fromPlainObject(t){return r(t,{enter(i){if(i.children&&i.children instanceof or===!1)i.children=new or().fromArray(i.children)}}),t},toPlainObject(t){return r(t,{leave(i){if(i.children&&i.children instanceof or)i.children=i.children.toArray()}}),t}}}var{hasOwnProperty:rl}=Object.prototype,Un=function(){};function P0(r){return typeof r==="function"?r:Un}function X0(r,t){return function(i,o,n){if(i.type===t)r.call(this,i,o,n)}}function ba(r,t){let i=t.structure,o=[];for(let n in i){if(rl.call(i,n)===!1)continue;let e=i[n],l={name:n,type:!1,nullable:!1};if(!Array.isArray(e))e=[e];for(let u of e)if(u===null)l.nullable=!0;else if(typeof u==="string")l.type="node";else if(Array.isArray(u))l.type="list";if(l.type)o.push(l)}if(o.length)return{context:t.walkContext,fields:o};return null}function va(r){let t={};for(let i in r.node)if(rl.call(r.node,i)){let o=r.node[i];if(!o.structure)throw new Error("Missed `structure` field in `"+i+"` node type definition");t[i]=ba(i,o)}return t}function q0(r,t){let i=r.fields.slice(),o=r.context,n=typeof o==="string";if(t)i.reverse();return function(e,l,u,g){let c;if(n)c=l[o],l[o]=e;for(let m of i){let v=e[m.name];if(!m.nullable||v){if(m.type==="list"){if(t?v.reduceRight(g,!1):v.reduce(g,!1))return!0}else if(u(v))return!0}}if(n)l[o]=c}}function W0({StyleSheet:r,Atrule:t,Rule:i,Block:o,DeclarationList:n}){return{Atrule:{StyleSheet:r,Atrule:t,Rule:i,Block:o},Rule:{StyleSheet:r,Atrule:t,Rule:i,Block:o},Declaration:{StyleSheet:r,Atrule:t,Rule:i,Block:o,DeclarationList:n}}}function K0(r){let t=va(r),i={},o={},n=Symbol("break-walk"),e=Symbol("skip-node");for(let c in t)if(rl.call(t,c)&&t[c]!==null)i[c]=q0(t[c],!1),o[c]=q0(t[c],!0);let l=W0(i),u=W0(o),g=function(c,m){function v(_,J,L){let X=h.call(O,_,J,L);if(X===n)return!0;if(X===e)return!1;if(f.hasOwnProperty(_.type)){if(f[_.type](_,O,v,D))return!0}if(b.call(O,_,J,L)===n)return!0;return!1}let h=Un,b=Un,f=i,D=(_,J,L,X)=>_||v(J,L,X),O={break:n,skip:e,root:c,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof m==="function")h=m;else if(m){if(h=P0(m.enter),b=P0(m.leave),m.reverse)f=o;if(m.visit){if(l.hasOwnProperty(m.visit))f=m.reverse?u[m.visit]:l[m.visit];else if(!t.hasOwnProperty(m.visit))throw new Error("Bad value `"+m.visit+"` for `visit` option (should be: "+Object.keys(t).sort().join(", ")+")");h=X0(h,m.visit),b=X0(b,m.visit)}}if(h===Un&&b===Un)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");v(c)};return g.break=n,g.skip=e,g.find=function(c,m){let v=null;return g(c,function(h,b,f){if(m.call(this,h,b,f))return v=h,n}),v},g.findLast=function(c,m){let v=null;return g(c,{reverse:!0,enter(h,b,f){if(m.call(this,h,b,f))return v=h,n}}),v},g.findAll=function(c,m){let v=[];return g(c,function(h,b,f){if(m.call(this,h,b,f))v.push(h)}),v},g}function ha(r){return r}function $a(r){let{min:t,max:i,comma:o}=r;if(t===0&&i===0)return o?"#?":"*";if(t===0&&i===1)return"?";if(t===1&&i===0)return o?"#":"+";if(t===1&&i===1)return"";return(o?"#":"")+(t===i?"{"+t+"}":"{"+t+","+(i!==0?i:"")+"}")}function xa(r){switch(r.type){case"Range":return" ["+(r.min===null?"-∞":r.min)+","+(r.max===null?"∞":r.max)+"]";default:throw new Error("Unknown node type `"+r.type+"`")}}function fa(r,t,i,o){let n=r.combinator===" "||o?r.combinator:" "+r.combinator+" ",e=r.terms.map((l)=>di(l,t,i,o)).join(n);if(r.explicit||i)return(o||e[0]===","?"[":"[ ")+e+(o?"]":" ]");return e}function di(r,t,i,o){let n;switch(r.type){case"Group":n=fa(r,t,i,o)+(r.disallowEmpty?"!":"");break;case"Multiplier":return di(r.term,t,i,o)+t($a(r),r);case"Boolean":n="";break;case"Type":n="<"+r.name+(r.opts?t(xa(r.opts),r.opts):"")+">";break;case"Property":n="<'"+r.name+"'>";break;case"Keyword":n=r.name;break;case"AtKeyword":n="@"+r.name;break;case"Function":n=r.name+"(";break;case"String":case"Token":n=r.value;break;case"Comma":n=",";break;default:throw new Error("Unknown node type `"+r.type+"`")}return t(n,r)}function Ht(r,t){let i=ha,o=!1,n=!1;if(typeof t==="function")i=t;else if(t){if(o=Boolean(t.forceBraces),n=Boolean(t.compact),typeof t.decorate==="function")i=t.decorate}return di(r,i,o,n)}var V0={offset:0,line:1,column:1};function wa(r,t){let{tokens:i,longestMatch:o}=r,n=o1)m=si(e||t,"end")||Jn(V0,c),v=Jn(m);else m=si(e,"start")||Jn(si(t,"start")||V0,c.slice(0,l)),v=si(e,"end")||Jn(m,c.substr(l,u));return{css:c,mismatchOffset:l,mismatchLength:u,start:m,end:v}}function si(r,t){let i=r&&r.loc&&r.loc[t];if(i)return"line"in i?Jn(i):i;return null}function Jn({offset:r,line:t,column:i},o){let n={offset:r,line:t,column:i};if(o){let e=o.split(/\n|\r\n?|\f/);n.offset+=o.length,n.line+=e.length-1,n.column=e.length===1?n.column+o.length:e.pop().length+1}return n}var Rt=function(r,t){let i=It("SyntaxReferenceError",r+(t?" `"+t+"`":""));return i.reference=t,i},L0=function(r,t,i,o){let n=It("SyntaxMatchError",r),{css:e,mismatchOffset:l,mismatchLength:u,start:g,end:c}=wa(o,i);return n.rawMessage=r,n.syntax=t?Ht(t):"",n.css=e,n.mismatchOffset=l,n.mismatchLength=u,n.message=r+` syntax: `+n.syntax+` value: `+(e||"")+` - --------`+new Array(n.mismatchOffset+1).join("-")+"^",Object.assign(n,g),n.loc={source:i&&i.loc&&i.loc.source||"",start:g,end:c},n};var ro=new Map,Mt=new Map;var to=za,tl=aa;function no(r,t){return t=t||0,r.length-t>=2&&r.charCodeAt(t)===45&&r.charCodeAt(t+1)===45}function Y0(r,t){if(t=t||0,r.length-t>=3){if(r.charCodeAt(t)===45&&r.charCodeAt(t+1)!==45){let i=r.indexOf("-",t+2);if(i!==-1)return r.substring(t,i+1)}}return""}function za(r){if(ro.has(r))return ro.get(r);let t=r.toLowerCase(),i=ro.get(t);if(i===void 0){let o=no(t,0),n=!o?Y0(t,0):"";i=Object.freeze({basename:t.substr(n.length),name:t,prefix:n,vendor:n,custom:o})}return ro.set(r,i),i}function aa(r){if(Mt.has(r))return Mt.get(r);let t=r,i=r[0];if(i==="/")i=r[1]==="/"?"//":"/";else if(i!=="_"&&i!=="*"&&i!=="$"&&i!=="#"&&i!=="+"&&i!=="&")i="";let o=no(t,i.length);if(!o){if(t=t.toLowerCase(),Mt.has(t)){let u=Mt.get(t);return Mt.set(r,u),u}}let n=!o?Y0(t,i.length):"",e=t.substr(0,i.length+n.length),l=Object.freeze({basename:t.substr(e.length),name:t.substr(i.length),hack:i,vendor:n,prefix:e,custom:o});return Mt.set(r,l),l}var Zt=["initial","inherit","unset","revert","revert-layer"];var Xn=43,Rr=45,nl=110,Ct=!0,_a=!1;function ol(r,t){return r!==null&&r.type===P&&r.value.charCodeAt(0)===t}function Pn(r,t,i){while(r!==null&&(r.type===Y||r.type===A))r=i(++t);return t}function vt(r,t,i,o){if(!r)return 0;let n=r.value.charCodeAt(t);if(n===Xn||n===Rr){if(i)return 0;t++}for(;t6)return 0}return o}function io(r,t,i){if(!r)return 0;while(ll(i(t),Q0)){if(++r>6)return 0;t++}return t}function cl(r,t){let i=0;if(r===null||r.type!==w||!sr(r.value,0,ja))return 0;if(r=t(++i),r===null)return 0;if(ll(r,Da)){if(r=t(++i),r===null)return 0;if(r.type===w)return io(qn(r,0,!0),++i,t);if(ll(r,Q0))return io(1,++i,t);return 0}if(r.type===U){let o=qn(r,1,!0);if(o===0)return 0;if(r=t(++i),r===null)return i;if(r.type===q||r.type===U){if(!Oa(r,E0)||!qn(r,1,!1))return 0;return i+1}return io(o,i,t)}if(r.type===q)return io(qn(r,1,!0),++i,t);return 0}var Ia=["calc(","-moz-calc(","-webkit-calc("],ul=new Map([[k,j],[K,j],[mr,wr],[Z,xr]]);function Fr(r,t){return tr.max&&typeof r.max!=="string")return!0}return!1}function ka(r,t){let i=0,o=[],n=0;r:do{switch(r.type){case xr:case j:case wr:if(r.type!==i)break r;if(i=o.pop(),o.length===0){n++;break r}break;case k:case K:case mr:case Z:o.push(i),i=ul.get(r.type);break}n++}while(r=t(n));return n}function Lr(r){return function(t,i,o){if(t===null)return 0;if(t.type===k&&S0(t.value,Ia))return ka(t,i);return r(t,i,o)}}function C(r){return function(t){if(t===null||t.type!==r)return 0;return 1}}function Ua(r){if(r===null||r.type!==w)return 0;let t=r.value.toLowerCase();if(S0(t,Zt))return 0;if(F0(t,"default"))return 0;return 1}function G0(r){if(r===null||r.type!==w)return 0;if(Fr(r.value,0)!==45||Fr(r.value,1)!==45)return 0;return 1}function Ja(r){if(!G0(r))return 0;if(r.value==="--")return 0;return 1}function Pa(r){if(r===null||r.type!==S)return 0;let t=r.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let i=1;iNa,semitones:()=>Ha,resolution:()=>Ba,length:()=>Fa,frequency:()=>Ga,flex:()=>ya,decibel:()=>Aa,angle:()=>Sa});var Fa=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],Sa=["deg","grad","rad","turn"],Na=["s","ms"],Ga=["hz","khz"],Ba=["dpi","dpcm","dppx","x"],ya=["fr"],Aa=["db"],Ha=["st"];function gl(r,t,i){return Object.assign(It("SyntaxError",r),{input:t,offset:i,rawMessage:r,message:r+` + --------`+new Array(n.mismatchOffset+1).join("-")+"^",Object.assign(n,g),n.loc={source:i&&i.loc&&i.loc.source||"",start:g,end:c},n};var ro=new Map,Mt=new Map;var to=za,tl=aa;function no(r,t){return t=t||0,r.length-t>=2&&r.charCodeAt(t)===45&&r.charCodeAt(t+1)===45}function Y0(r,t){if(t=t||0,r.length-t>=3){if(r.charCodeAt(t)===45&&r.charCodeAt(t+1)!==45){let i=r.indexOf("-",t+2);if(i!==-1)return r.substring(t,i+1)}}return""}function za(r){if(ro.has(r))return ro.get(r);let t=r.toLowerCase(),i=ro.get(t);if(i===void 0){let o=no(t,0),n=!o?Y0(t,0):"";i=Object.freeze({basename:t.substr(n.length),name:t,prefix:n,vendor:n,custom:o})}return ro.set(r,i),i}function aa(r){if(Mt.has(r))return Mt.get(r);let t=r,i=r[0];if(i==="/")i=r[1]==="/"?"//":"/";else if(i!=="_"&&i!=="*"&&i!=="$"&&i!=="#"&&i!=="+"&&i!=="&")i="";let o=no(t,i.length);if(!o){if(t=t.toLowerCase(),Mt.has(t)){let u=Mt.get(t);return Mt.set(r,u),u}}let n=!o?Y0(t,i.length):"",e=t.substr(0,i.length+n.length),l=Object.freeze({basename:t.substr(e.length),name:t.substr(i.length),hack:i,vendor:n,prefix:e,custom:o});return Mt.set(r,l),l}var Zt=["initial","inherit","unset","revert","revert-layer"];var Xn=43,Rr=45,nl=110,Ct=!0,_a=!1;function ol(r,t){return r!==null&&r.type===P&&r.value.charCodeAt(0)===t}function Pn(r,t,i){while(r!==null&&(r.type===Y||r.type===A))r=i(++t);return t}function vt(r,t,i,o){if(!r)return 0;let n=r.value.charCodeAt(t);if(n===Xn||n===Rr){if(i)return 0;t++}for(;t6)return 0}return o}function io(r,t,i){if(!r)return 0;while(ll(i(t),Q0)){if(++r>6)return 0;t++}return t}function cl(r,t){let i=0;if(r===null||r.type!==w||!sr(r.value,0,ja))return 0;if(r=t(++i),r===null)return 0;if(ll(r,Da)){if(r=t(++i),r===null)return 0;if(r.type===w)return io(qn(r,0,!0),++i,t);if(ll(r,Q0))return io(1,++i,t);return 0}if(r.type===U){let o=qn(r,1,!0);if(o===0)return 0;if(r=t(++i),r===null)return i;if(r.type===q||r.type===U){if(!Oa(r,E0)||!qn(r,1,!1))return 0;return i+1}return io(o,i,t)}if(r.type===q)return io(qn(r,1,!0),++i,t);return 0}var Ia=["calc(","-moz-calc(","-webkit-calc("],ul=new Map([[k,j],[K,j],[mr,wr],[Z,xr]]);function Fr(r,t){return tr.max&&typeof r.max!=="string")return!0}return!1}function ka(r,t){let i=0,o=[],n=0;r:do{switch(r.type){case xr:case j:case wr:if(r.type!==i)break r;if(i=o.pop(),o.length===0){n++;break r}break;case k:case K:case mr:case Z:o.push(i),i=ul.get(r.type);break}n++}while(r=t(n));return n}function Lr(r){return function(t,i,o){if(t===null)return 0;if(t.type===k&&S0(t.value,Ia))return ka(t,i);return r(t,i,o)}}function C(r){return function(t){if(t===null||t.type!==r)return 0;return 1}}function Ua(r){if(r===null||r.type!==w)return 0;let t=r.value.toLowerCase();if(S0(t,Zt))return 0;if(F0(t,"default"))return 0;return 1}function N0(r){if(r===null||r.type!==w)return 0;if(Fr(r.value,0)!==45||Fr(r.value,1)!==45)return 0;return 1}function Ja(r){if(!N0(r))return 0;if(r.value==="--")return 0;return 1}function Pa(r){if(r===null||r.type!==S)return 0;let t=r.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let i=1;iGa,semitones:()=>Ha,resolution:()=>Ba,length:()=>Fa,frequency:()=>Na,flex:()=>ya,decibel:()=>Aa,angle:()=>Sa});var Fa=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],Sa=["deg","grad","rad","turn"],Ga=["s","ms"],Na=["hz","khz"],Ba=["dpi","dpcm","dppx","x"],ya=["fr"],Aa=["db"],Ha=["st"];function gl(r,t,i){return Object.assign(It("SyntaxError",r),{input:t,offset:i,rawMessage:r,message:r+` `+t+` ---`+new Array((i||t.length)+1).join("-")+"^"})}var Ra=9,Ma=10,Za=12,Ca=13,Ta=32,A0=new Uint8Array(128).map((r,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0);class ml{constructor(r){this.str=r,this.pos=0}charCodeAt(r){return r=128||A0[t]===0)break}if(this.pos===r)this.error("Expect a keyword");return this.substringToPos(r)}scanNumber(){let r=this.pos;for(;r57)break}if(this.pos===r)this.error("Expect a number");return this.substringToPos(r)}scanString(){let r=this.str.indexOf("'",this.pos+1);if(r===-1)this.pos=this.str.length,this.error("Expect an apostrophe");return this.substringToPos(r+1)}}var da=9,sa=10,r1=12,t1=13,n1=32,s0=33,$l=35,H0=38,lo=39,rx=40,i1=41,tx=42,xl=43,fl=44,R0=45,wl=60,vl=62,hl=63,o1=64,Wn=91,Kn=93,co=123,M0=124,Z0=125,C0=8734,T0={" ":1,"&&":2,"||":3,"|":4};function d0(r){let t=null,i=null;if(r.eat(co),r.skipWs(),t=r.scanNumber(r),r.skipWs(),r.charCode()===fl){if(r.pos++,r.skipWs(),r.charCode()!==Z0)i=r.scanNumber(r),r.skipWs()}else i=t;return r.eat(Z0),{min:Number(t),max:i?Number(i):0}}function e1(r){let t=null,i=!1;switch(r.charCode()){case tx:r.pos++,t={min:0,max:0};break;case xl:r.pos++,t={min:1,max:0};break;case hl:r.pos++,t={min:0,max:1};break;case $l:if(r.pos++,i=!0,r.charCode()===co)t=d0(r);else if(r.charCode()===hl)r.pos++,t={min:0,max:0};else t={min:1,max:0};break;case co:t=d0(r);break;default:return null}return{type:"Multiplier",comma:i,min:t.min,max:t.max,term:null}}function ht(r,t){let i=e1(r);if(i!==null){if(i.term=t,r.charCode()===$l&&r.charCodeAt(r.pos-1)===xl)return ht(r,i);return i}return t}function bl(r){let t=r.peek();if(t==="")return null;return ht(r,{type:"Token",value:t})}function l1(r){let t;return r.eat(wl),r.eat(lo),t=r.scanWord(),r.eat(lo),r.eat(vl),ht(r,{type:"Property",name:t})}function c1(r){let t=null,i=null,o=1;if(r.eat(Wn),r.charCode()===R0)r.peek(),o=-1;if(o==-1&&r.charCode()===C0)r.peek();else if(t=o*Number(r.scanNumber(r)),r.isNameCharCode())t+=r.scanWord();if(r.skipWs(),r.eat(fl),r.skipWs(),r.charCode()===C0)r.peek();else{if(o=1,r.charCode()===R0)r.peek(),o=-1;if(i=o*Number(r.scanNumber(r)),r.isNameCharCode())i+=r.scanWord()}return r.eat(Kn),{type:"Range",min:t,max:i}}function u1(r){let t,i=null;if(r.eat(wl),t=r.scanWord(),t==="boolean-expr"){r.eat(Wn);let o=zl(r,Kn);return r.eat(Kn),r.eat(vl),ht(r,{type:"Boolean",term:o.terms.length===1?o.terms[0]:o})}if(r.charCode()===rx&&r.nextCharCode()===i1)r.pos+=2,t+="()";if(r.charCodeAt(r.findWsEnd(r.pos))===Wn)r.skipWs(),i=c1(r);return r.eat(vl),ht(r,{type:"Type",name:t,opts:i})}function g1(r){let t=r.scanWord();if(r.charCode()===rx)return r.pos++,{type:"Function",name:t};return ht(r,{type:"Keyword",name:t})}function m1(r,t){function i(n,e){return{type:"Group",terms:n,combinator:e,disallowEmpty:!1,explicit:!1}}let o;t=Object.keys(t).sort((n,e)=>T0[n]-T0[e]);while(t.length>0){o=t.shift();let n=0,e=0;for(;n1)r.splice(e,n-e,i(r.slice(e,n),o)),n=e+1;e=-1}}if(e!==-1&&t.length)r.splice(e,n-e,i(r.slice(e,n),o))}return o}function zl(r,t){let i=Object.create(null),o=[],n,e=null,l=r.pos;while(r.charCode()!==t&&(n=v1(r,t)))if(n.type!=="Spaces"){if(n.type==="Combinator"){if(e===null||e.type==="Combinator")r.pos=l,r.error("Unexpected combinator");i[n.value]=!0}else if(e!==null&&e.type!=="Combinator")i[" "]=!0,o.push({type:"Combinator",value:" "});o.push(n),e=n,l=r.pos}if(e!==null&&e.type==="Combinator")r.pos-=l,r.error("Unexpected combinator");return{type:"Group",terms:o,combinator:m1(o,i)||" ",disallowEmpty:!1,explicit:!1}}function b1(r,t){let i;if(r.eat(Wn),i=zl(r,t),r.eat(Kn),i.explicit=!0,r.charCode()===s0)r.pos++,i.disallowEmpty=!0;return i}function v1(r,t){let i=r.charCode();switch(i){case Kn:break;case Wn:return ht(r,b1(r,t));case wl:return r.nextCharCode()===lo?l1(r):u1(r);case M0:return{type:"Combinator",value:r.substringToPos(r.pos+(r.nextCharCode()===M0?2:1))};case H0:return r.pos++,r.eat(H0),{type:"Combinator",value:"&&"};case fl:return r.pos++,{type:"Comma"};case lo:return ht(r,{type:"String",value:r.scanString()});case n1:case da:case sa:case t1:case r1:return{type:"Spaces",value:r.scanSpaces()};case o1:if(i=r.nextCharCode(),r.isNameCharCode(i))return r.pos++,{type:"AtKeyword",name:r.scanWord()};return bl(r);case tx:case xl:case hl:case $l:case s0:break;case co:if(i=r.nextCharCode(),i<48||i>57)return bl(r);break;default:if(r.isNameCharCode(i))return g1(r);return bl(r)}}function Vn(r){let t=new ml(r),i=zl(t);if(t.pos!==r.length)t.error("Unexpected input");if(i.terms.length===1&&i.terms[0].type==="Group")return i.terms[0];return i}var Ln=function(){};function nx(r){return typeof r==="function"?r:Ln}function al(r,t,i){function o(l){switch(n.call(i,l),l.type){case"Group":l.terms.forEach(o);break;case"Multiplier":case"Boolean":o(l.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+l.type)}e.call(i,l)}let n=Ln,e=Ln;if(typeof t==="function")n=t;else if(t)n=nx(t.enter),e=nx(t.leave);if(n===Ln&&e===Ln)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");o(r,i)}var $1={decorator(r){let t=[],i=null;return{...r,node(o){let n=i;i=o,r.node.call(this,o),i=n},emit(o,n,e){t.push({type:n,value:o,node:e?null:i})},result(){return t}}}};function x1(r){let t=[];return bt(r,(i,o,n)=>t.push({type:i,value:r.slice(o,n),node:null})),t}function pl(r,t){if(typeof r==="string")return x1(r);return t.generate(r,$1)}var G={type:"Match"},H={type:"Mismatch"},uo={type:"DisallowEmpty"},f1=40,w1=41;function ar(r,t,i){if(t===G&&i===H)return r;if(r===G&&t===G&&i===G)return r;if(r.type==="If"&&r.else===H&&t===G)t=r.then,r=r.match;return{type:"If",match:r,then:t,else:i}}function ox(r){return r.length>2&&r.charCodeAt(r.length-2)===f1&&r.charCodeAt(r.length-1)===w1}function ix(r){return r.type==="Keyword"||r.type==="AtKeyword"||r.type==="Function"||r.type==="Type"&&ox(r.name)}function $t(r,t=" ",i=!1){return{type:"Group",terms:r,combinator:t,disallowEmpty:!1,explicit:i}}function Yn(r,t,i=new Set){if(!i.has(r))switch(i.add(r),r.type){case"If":r.match=Yn(r.match,t,i),r.then=Yn(r.then,t,i),r.else=Yn(r.else,t,i);break;case"Type":return t[r.name]||r}return r}function _l(r,t,i){switch(r){case" ":{let o=G;for(let n=t.length-1;n>=0;n--){let e=t[n];o=ar(e,o,H)}return o}case"|":{let o=H,n=null;for(let e=t.length-1;e>=0;e--){let l=t[e];if(ix(l)){if(n===null&&e>0&&ix(t[e-1]))n=Object.create(null),o=ar({type:"Enum",map:n},G,o);if(n!==null){let u=(ox(l.name)?l.name.slice(0,-1):l.name).toLowerCase();if(u in n===!1){n[u]=l;continue}}}n=null,o=ar(l,G,o)}return o}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let o=H;for(let n=t.length-1;n>=0;n--){let e=t[n],l;if(t.length>1)l=_l(r,t.filter(function(u){return u!==e}),!1);else l=G;o=ar(e,l,o)}return o}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let o=i?G:H;for(let n=t.length-1;n>=0;n--){let e=t[n],l;if(t.length>1)l=_l(r,t.filter(function(u){return u!==e}),!0);else l=G;o=ar(e,l,o)}return o}}}function z1(r){let t=G,i=Tt(r.term);if(r.max===0){if(i=ar(i,uo,H),t=ar(i,null,H),t.then=ar(G,G,t),r.comma)t.then.else=ar({type:"Comma",syntax:r},t,H)}else for(let o=r.min||1;o<=r.max;o++){if(r.comma&&t!==G)t=ar({type:"Comma",syntax:r},t,H);t=ar(i,ar(G,G,t),H)}if(r.min===0)t=ar(G,G,t);else for(let o=0;o=65&&n<=90)n=n|32;if(n!==o)return!1}return!0}function I1(r){if(r.type!==P)return!1;return r.value!=="?"}function ux(r){if(r===null)return!0;return r.type===ir||r.type===k||r.type===K||r.type===mr||r.type===Z||I1(r)}function gx(r){if(r===null)return!0;return r.type===j||r.type===wr||r.type===xr||r.type===P&&r.value==="/"}function k1(r,t,i){function o(){do J++,_=JL)L=J}function c(){v={syntax:t.syntax,opts:t.syntax.opts||v!==null&&v.opts||null,prev:v},X={type:jl,syntax:t.syntax,token:X.token,prev:X}}function m(){if(X.type===jl)X=X.prev;else X={type:mx,syntax:v.syntax,token:X.token,prev:X};v=v.prev}let v=null,h=null,b=null,f=null,D=0,O=null,_=null,J=-1,L=0,X={type:a1,syntax:null,token:null,prev:null};o();while(O===null&&++Db.tokenIndex)b=f,f=!1}else if(b===null){O=_1;break}t=b.nextState,h=b.thenStack,v=b.syntaxStack,X=b.matchStack,J=b.tokenIndex,_=JJ){while(J":"<'"+t.name+"'>"));if(f!==!1&&_!==null&&t.type==="Type"){if(t.name==="custom-ident"&&_.type===w||t.name==="length"&&_.value==="0"){if(f===null)f=e(t,b);t=H;break}}c(),t=tr.matchRef||tr.match;break}case"Keyword":{let B=t.name;if(_!==null){let tr=_.value;if(tr.indexOf("\\")!==-1)tr=tr.replace(/\\[09].*$/,"");if(Dl(tr,B)){g(),t=G;break}}t=H;break}case"AtKeyword":case"Function":if(_!==null&&Dl(_.value,t.name)){g(),t=G;break}t=H;break;case"Token":if(_!==null&&_.value===t.value){g(),t=G;break}t=H;break;case"Comma":if(_!==null&&_.type===ir)if(ux(X.token))t=H;else g(),t=gx(_)?H:G;else t=ux(X.token)||gx(_)?G:H;break;case"String":let W="",Q=J;for(;QU1,isProperty:()=>J1,isKeyword:()=>P1,getTrace:()=>bx});function bx(r){function t(n){if(n===null)return!1;return n.type==="Type"||n.type==="Property"||n.type==="Keyword"}function i(n){if(Array.isArray(n.match)){for(let e=0;ei.type==="Type"&&i.name===t)}function J1(r,t){return Il(this,r,(i)=>i.type==="Property"&&i.name===t)}function P1(r){return Il(this,r,(t)=>t.type==="Keyword")}function Il(r,t,i){let o=bx.call(r,t);if(o===null)return!1;return o.some(i)}function vx(r){if("node"in r)return r.node;return vx(r.match[0])}function hx(r){if("node"in r)return r.node;return hx(r.match[r.match.length-1])}function Ul(r,t,i,o,n){function e(u){if(u.syntax!==null&&u.syntax.type===o&&u.syntax.name===n){let g=vx(u),c=hx(u);r.syntax.walk(t,function(m,v,h){if(m===g){let b=new or;do{if(b.appendData(v.data),v.data===c)break;v=v.next}while(v!==null);l.push({parent:h,nodes:b})}})}if(Array.isArray(u.match))u.match.forEach(e)}let l=[];if(i.matched!==null)e(i.matched);return l}var{hasOwnProperty:Qn}=Object.prototype;function Jl(r){return typeof r==="number"&&isFinite(r)&&Math.floor(r)===r&&r>=0}function $x(r){return Boolean(r)&&Jl(r.offset)&&Jl(r.line)&&Jl(r.column)}function X1(r,t){return function i(o,n){if(!o||o.constructor!==Object)return n(o,"Type of node should be an Object");for(let e in o){let l=!0;if(Qn.call(o,e)===!1)continue;if(e==="type"){if(o.type!==r)n(o,"Wrong node type `"+o.type+"`, expected `"+r+"`")}else if(e==="loc"){if(o.loc===null)continue;else if(o.loc&&o.loc.constructor===Object)if(typeof o.loc.source!=="string")e+=".source";else if(!$x(o.loc.start))e+=".start";else if(!$x(o.loc.end))e+=".end";else continue;l=!1}else if(t.hasOwnProperty(e)){l=!1;for(let u=0;!l&&u");else throw new Error("Wrong value `"+n+"` in `"+t+"` structure definition")}return i.join(" | ")}function q1(r,t){let i=t.structure,o={type:String,loc:!0},n={type:'"'+r+'"'};for(let e in i){if(Qn.call(i,e)===!1)continue;let l=o[e]=Array.isArray(i[e])?i[e].slice():[i[e]];n[e]=xx(l,r+"."+e)}return{docs:n,check:X1(r,o)}}function fx(r){let t={};if(r.node){for(let i in r.node)if(Qn.call(r.node,i)){let o=r.node[i];if(o.structure)t[i]=q1(i,o);else throw new Error("Missed `structure` field in `"+i+"` node type definition")}}return t}function Pl(r,t,i){let o={};for(let n in r)if(r[n].syntax)o[n]=i?r[n].syntax:Ht(r[n].syntax,{compact:t});return o}function W1(r,t,i){let o={};for(let[n,e]of Object.entries(r))o[n]={prelude:e.prelude&&(i?e.prelude.syntax:Ht(e.prelude.syntax,{compact:t})),descriptors:e.descriptors&&Pl(e.descriptors,t,i)};return o}function K1(r){for(let t=0;t{return i[o]=this.createDescriptor(t.descriptors[o],"AtruleDescriptor",o,r),i},Object.create(null)):null}}addProperty_(r,t){if(!t)return;this.properties[r]=this.createDescriptor(t,"Property",r)}addType_(r,t){if(!t)return;this.types[r]=this.createDescriptor(t,"Type",r)}checkAtruleName(r){if(!this.getAtrule(r))return new Rt("Unknown at-rule","@"+r)}checkAtrulePrelude(r,t){let i=this.checkAtruleName(r);if(i)return i;let o=this.getAtrule(r);if(!o.prelude&&t)return new SyntaxError("At-rule `@"+r+"` should not contain a prelude");if(o.prelude&&!t){if(!dt(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+r+"` should contain a prelude")}}checkAtruleDescriptorName(r,t){let i=this.checkAtruleName(r);if(i)return i;let o=this.getAtrule(r),n=to(t);if(!o.descriptors)return new SyntaxError("At-rule `@"+r+"` has no known descriptors");if(!o.descriptors[n.name]&&!o.descriptors[n.basename])return new Rt("Unknown at-rule descriptor",t)}checkPropertyName(r){if(!this.getProperty(r))return new Rt("Unknown property",r)}matchAtrulePrelude(r,t){let i=this.checkAtrulePrelude(r,t);if(i)return Sr(null,i);let o=this.getAtrule(r);if(!o.prelude)return Sr(null,null);return dt(this,o.prelude,t||"",!1)}matchAtruleDescriptor(r,t,i){let o=this.checkAtruleDescriptorName(r,t);if(o)return Sr(null,o);let n=this.getAtrule(r),e=to(t);return dt(this,n.descriptors[e.name]||n.descriptors[e.basename],i,!1)}matchDeclaration(r){if(r.type!=="Declaration")return Sr(null,new Error("Not a Declaration node"));return this.matchProperty(r.property,r.value)}matchProperty(r,t){if(tl(r).custom)return Sr(null,new Error("Lexer matching doesn't applicable for custom properties"));let i=this.checkPropertyName(r);if(i)return Sr(null,i);return dt(this,this.getProperty(r),t,!0)}matchType(r,t){let i=this.getType(r);if(!i)return Sr(null,new Rt("Unknown type",r));return dt(this,i,t,!1)}match(r,t){if(typeof r!=="string"&&(!r||!r.type))return Sr(null,new Rt("Bad syntax"));if(typeof r==="string"||!r.match)r=this.createDescriptor(r,"Type","anonymous");return dt(this,r,t,!1)}findValueFragments(r,t,i,o){return Ul(this,t,this.matchProperty(r,t),i,o)}findDeclarationValueFragments(r,t,i){return Ul(this,r.value,this.matchDeclaration(r),t,i)}findAllFragments(r,t,i){let o=[];return this.syntax.walk(r,{visit:"Declaration",enter:(n)=>{o.push.apply(o,this.findDeclarationValueFragments(n,t,i))}}),o}getAtrule(r,t=!0){let i=to(r);return(i.vendor&&t?this.atrules[i.name]||this.atrules[i.basename]:this.atrules[i.name])||null}getAtrulePrelude(r,t=!0){let i=this.getAtrule(r,t);return i&&i.prelude||null}getAtruleDescriptor(r,t){return this.atrules.hasOwnProperty(r)&&this.atrules.declarators?this.atrules[r].declarators[t]||null:null}getProperty(r,t=!0){let i=tl(r);return(i.vendor&&t?this.properties[i.name]||this.properties[i.basename]:this.properties[i.name])||null}getType(r){return hasOwnProperty.call(this.types,r)?this.types[r]:null}validate(){function r(u,g){return g?`<${u}>`:`<'${u}'>`}function t(u,g,c,m){if(c.has(g))return c.get(g);if(c.set(g,!1),m.syntax!==null)al(m.syntax,function(v){if(v.type!=="Type"&&v.type!=="Property")return;let h=v.type==="Type"?u.types:u.properties,b=v.type==="Type"?o:n;if(!hasOwnProperty.call(h,v.name))i.push(`${r(g,c===o)} used missed syntax definition ${r(v.name,v.type==="Type")}`),c.set(g,!0);else if(t(u,v.name,b,h[v.name]))i.push(`${r(g,c===o)} used broken syntax definition ${r(v.name,v.type==="Type")}`),c.set(g,!0)},this)}let i=[],o=new Map,n=new Map;for(let u in this.types)t(this,u,o,this.types[u]);for(let u in this.properties)t(this,u,n,this.properties[u]);let e=[...o.keys()].filter((u)=>o.get(u)),l=[...n.keys()].filter((u)=>n.get(u));if(e.length||l.length)return{errors:i,types:e,properties:l};return null}dump(r,t){return{generic:this.generic,cssWideKeywords:this.cssWideKeywords,units:this.units,types:Pl(this.types,!t,r),properties:Pl(this.properties,!t,r),atrules:W1(this.atrules,!t,r)}}toString(){return JSON.stringify(this.dump())}}function Xl(r,t){if(typeof t==="string"&&/^\s*\|/.test(t))return typeof r==="string"?r+t:t.replace(/^\s*\|\s*/,"");return t||null}function wx(r,t){let i=Object.create(null);for(let[o,n]of Object.entries(r))if(n){i[o]={};for(let e of Object.keys(n))if(t.includes(e))i[o][e]=n[e]}return i}function Sn(r,t){let i={...r};for(let[o,n]of Object.entries(t))switch(o){case"generic":i[o]=Boolean(n);break;case"cssWideKeywords":i[o]=r[o]?[...r[o],...n]:n||[];break;case"units":i[o]={...r[o]};for(let[e,l]of Object.entries(n))i[o][e]=Array.isArray(l)?l:[];break;case"atrules":i[o]={...r[o]};for(let[e,l]of Object.entries(n)){let u=i[o][e]||{},g=i[o][e]={prelude:u.prelude||null,descriptors:{...u.descriptors}};if(!l)continue;g.prelude=l.prelude?Xl(g.prelude,l.prelude):g.prelude||null;for(let[c,m]of Object.entries(l.descriptors||{}))g.descriptors[c]=m?Xl(g.descriptors[c],m):null;if(!Object.keys(g.descriptors).length)g.descriptors=null}break;case"types":case"properties":i[o]={...r[o]};for(let[e,l]of Object.entries(n))i[o][e]=Xl(i[o][e],l);break;case"scope":case"features":i[o]={...r[o]};for(let[e,l]of Object.entries(n))i[o][e]={...i[o][e],...l};break;case"parseContext":i[o]={...r[o],...n};break;case"atrule":case"pseudo":i[o]={...r[o],...wx(n,["parse"])};break;case"node":i[o]={...r[o],...wx(n,["name","structure","parse","generate","walkContext"])};break}return i}function zx(r){let t=c0(r),i=K0(r),o=U0(r),{fromPlainObject:n,toPlainObject:e}=J0(i),l={lexer:null,createLexer:(u)=>new Fn(u,l,l.lexer.structure),tokenize:bt,parse:t,generate:o,walk:i,find:i.find,findLast:i.findLast,findAll:i.findAll,fromPlainObject:n,toPlainObject:e,fork(u){let g=Sn({},r);return zx(typeof u==="function"?u(g):Sn(g,u))}};return l.lexer=new Fn({generic:r.generic,cssWideKeywords:r.cssWideKeywords,units:r.units,types:r.types,atrules:r.atrules,properties:r.properties,node:r.node},l),l}var ql=(r)=>zx(Sn({},r));var ax={generic:!0,cssWideKeywords:["initial","inherit","unset","revert","revert-layer"],units:{angle:["deg","grad","rad","turn"],decibel:["db"],flex:["fr"],frequency:["hz","khz"],length:["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],resolution:["dpi","dpcm","dppx","x"],semitones:["st"],time:["s","ms"]},types:{"abs()":"abs( )","absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","acos()":"acos( )","alpha-value":"|","angle-percentage":"|","angular-color-hint":"","angular-color-stop":"&&?","angular-color-stop-list":"[ [, ]?]# , ","animateable-feature":"scroll-position|contents|","asin()":"asin( )","atan()":"atan( )","atan2()":"atan2( , )",attachment:"scroll|fixed|local","attr()":"attr( ? [, ]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' ']'|'[' [|] ? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [? ]+ ? )","auto-track-list":"[? [|]]* ? [? [|]]* ?",axis:"block|inline|x|y","baseline-position":"[first|last]? baseline","basic-shape":"||||||","bg-image":"none|","bg-layer":"|| [/ ]?||||||||","bg-position":"[[left|center|right|top|bottom|]|[left|center|right|] [top|center|bottom|]|[center|[left|right] ?]&&[center|[top|bottom] ?]]","bg-size":"[|auto]{1,2}|cover|contain","blur()":"blur( )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( )","calc()":"calc( )","calc-sum":" [['+'|'-'] ]*","calc-product":" ['*' |'/' ]*","calc-value":"||||( )","calc-constant":"e|pi|infinity|-infinity|NaN","cf-final-image":"|","cf-mixing-image":"?&&","circle()":"circle( []? [at ]? )","clamp()":"clamp( #{3} )","class-selector":"'.' ","clip-source":"",color:"|currentColor||||<-non-standard-color>","color-stop":"|","color-stop-angle":"{1,2}","color-stop-length":"{1,2}","color-stop-list":"[ [, ]?]# , ","color-interpolation-method":"in [| ?|]",combinator:"'>'|'+'|'~'|['|' '|']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[? *]!","compound-selector-list":"#","complex-selector":" [? ]*","complex-selector-list":"#","conic-gradient()":"conic-gradient( [from ]? [at ]? , )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[|contents||||||]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"","contrast()":"contrast( [] )","cos()":"cos( )",counter:"|","counter()":"counter( , ? )","counter-name":"","counter-style":"|symbols( )","counter-style-name":"","counters()":"counters( , , ? )","cross-fade()":"cross-fade( , ? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( , , , )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( {2,3} ? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( , [first|start|last|first-except]? )|element( )","ellipse()":"ellipse( [{2}]? [at ]? )","ending-shape":"circle|ellipse","env()":"env( , ? )","exp()":"exp( )","explicit-track-list":"[? ]+ ?","family-name":"|+","feature-tag-value":" [|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":" '{' '}'","feature-value-block-list":"+","feature-value-declaration":" : + ;","feature-value-declaration-list":"","feature-value-name":"","fill-rule":"nonzero|evenodd","filter-function":"|||||||||","filter-function-list":"[|]+","final-bg-layer":"<'background-color'>|||| [/ ]?||||||||","fixed-breadth":"","fixed-repeat":"repeat( [] , [? ]+ ? )","fixed-size":"|minmax( , )|minmax( , )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|","frequency-percentage":"|","general-enclosed":"[ ? )]|[( ? )]","generic-family":"|||<-non-standard-generic-family>","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"|fill-box|stroke-box|view-box",gradient:"||||||<-legacy-gradient>","grayscale()":"grayscale( )","grid-line":"auto||[&&?]|[span&&[||]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( [/ ]? )|hsl( , , , ? )","hsla()":"hsla( [/ ]? )|hsla( , , , ? )",hue:"|","hue-rotate()":"hue-rotate( )","hue-interpolation-method":"[shorter|longer|increasing|decreasing] hue","hwb()":"hwb( [|none] [|none] [|none] [/ [|none]]? )","hypot()":"hypot( # )",image:"||||||","image()":"image( ? [? , ?]! )","image-set()":"image-set( # )","image-set-option":"[|] [||type( )]","image-src":"|","image-tags":"ltr|rtl","inflexible-breadth":"|min-content|max-content|auto","inset()":"inset( {1,4} [round <'border-radius'>]? )","invert()":"invert( )","keyframes-name":"|","keyframe-block":"# { }","keyframe-block-list":"+","keyframe-selector":"from|to|| ","lab()":"lab( [||none] [||none] [||none] [/ [|none]]? )","layer()":"layer( )","layer-name":" ['.' ]*","lch()":"lch( [||none] [||none] [|none] [/ [|none]]? )","leader()":"leader( )","leader-type":"dotted|solid|space|","length-percentage":"|","light-dark()":"light-dark( , )","line-names":"'[' * ']'","line-name-list":"[|]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"|thin|medium|thick","linear-color-hint":"","linear-color-stop":" ?","linear-gradient()":"linear-gradient( [[|to ]||]? , )","log()":"log( , ? )","mask-layer":"|| [/ ]?||||||[|no-clip]||||","mask-position":"[|left|center|right] [|top|center|bottom]?","mask-reference":"none||","mask-source":"","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( #{6} )","matrix3d()":"matrix3d( #{16} )","max()":"max( # )","media-and":" [and ]+","media-condition":"|||","media-condition-without-or":"||","media-feature":"( [||] )","media-in-parens":"( )||","media-not":"not ","media-or":" [or ]+","media-query":"|[not|only]? [and ]?","media-query-list":"#","media-type":"","mf-boolean":"","mf-name":"","mf-plain":" : ","mf-range":" ['<'|'>']? '='? | ['<'|'>']? '='? | '<' '='? '<' '='? | '>' '='? '>' '='? ","mf-value":"|||","min()":"min( # )","minmax()":"minmax( [|min-content|max-content|auto] , [||min-content|max-content|auto] )","mod()":"mod( , )","name-repeat":"repeat( [|auto-fill] , + )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen","namespace-prefix":"","ns-prefix":"[|'*']? '|'","number-percentage":"|","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"|even|odd","opacity()":"opacity( [] )","overflow-position":"unsafe|safe","outline-radius":"|","page-body":"? [; ]?| ","page-margin-box":" '{' '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[#]?","page-selector":"+| *","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger","path()":"path( [ ,]? )","paint()":"paint( , ? )","perspective()":"perspective( [|none] )","polygon()":"polygon( ? , [ ]# )","polar-color-space":"hsl|hwb|lch|oklch",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|] [top|center|bottom|]?|[[left|right] ]&&[[top|bottom] ]]","pow()":"pow( , )","pseudo-class-selector":"':' |':' ')'","pseudo-element-selector":"':' |","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [||]? [at ]? , )",ratio:" [/ ]?","ray()":"ray( &&?&&contain?&&[at ]? )","ray-size":"closest-side|closest-corner|farthest-side|farthest-corner|sides","rectangular-color-space":"srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020|lab|oklab|xyz|xyz-d50|xyz-d65","relative-selector":"? ","relative-selector-list":"#","relative-size":"larger|smaller","rem()":"rem( , )","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [from ]? [at ]? , )","repeating-linear-gradient()":"repeating-linear-gradient( [|to ]? , )","repeating-radial-gradient()":"repeating-radial-gradient( [||]? [at ]? , )","reversed-counter-name":"reversed( )","rgb()":"rgb( {3} [/ ]? )|rgb( {3} [/ ]? )|rgb( #{3} , ? )|rgb( #{3} , ? )","rgba()":"rgba( {3} [/ ]? )|rgba( {3} [/ ]? )|rgba( #{3} , ? )|rgba( #{3} , ? )","rotate()":"rotate( [|] )","rotate3d()":"rotate3d( , , , [|] )","rotateX()":"rotateX( [|] )","rotateY()":"rotateY( [|] )","rotateZ()":"rotateZ( [|] )","round()":"round( ? , , )","rounding-strategy":"nearest|up|down|to-zero","saturate()":"saturate( )","scale()":"scale( [|]#{1,2} )","scale3d()":"scale3d( [|]#{3} )","scaleX()":"scaleX( [|] )","scaleY()":"scaleY( [|] )","scaleZ()":"scaleZ( [|] )","scroll()":"scroll( [||]? )",scroller:"root|nearest|self","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"|closest-side|farthest-side","sign()":"sign( )","skew()":"skew( [|] , [|]? )","skewX()":"skewX( [|] )","skewY()":"skewY( [|] )","sepia()":"sepia( )",shadow:"inset?&&{2,4}&&?","shadow-t":"[{2,3}&&?]",shape:"rect( , , , )|rect( )","shape-box":"|margin-box","side-or-corner":"[left|right]||[top|bottom]","sin()":"sin( )","single-animation":"<'animation-duration'>||||<'animation-delay'>||||||||||[none|]||","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|||","single-transition":"[none|]||