Remove electron dependency from browser build by using platform-agnostic dialog types (#982)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -21,3 +21,6 @@ test-expand-*.png
|
|||||||
browser-debug-screenshot.png
|
browser-debug-screenshot.png
|
||||||
|
|
||||||
app/.webpack-cache
|
app/.webpack-cache
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
/tmp
|
||||||
59
events/DialogTypes.ts
Normal file
59
events/DialogTypes.ts
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/**
|
||||||
|
* Browser-compatible dialog type definitions
|
||||||
|
* These types mirror Electron's dialog types but don't require the electron package
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface FileFilter {
|
||||||
|
name: string
|
||||||
|
extensions: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface OpenDialogOptions {
|
||||||
|
title?: string
|
||||||
|
defaultPath?: string
|
||||||
|
buttonLabel?: string
|
||||||
|
filters?: FileFilter[]
|
||||||
|
properties?: Array<
|
||||||
|
| 'openFile'
|
||||||
|
| 'openDirectory'
|
||||||
|
| 'multiSelections'
|
||||||
|
| 'showHiddenFiles'
|
||||||
|
| 'createDirectory'
|
||||||
|
| 'promptToCreate'
|
||||||
|
| 'noResolveAliases'
|
||||||
|
| 'treatPackageAsDirectory'
|
||||||
|
| 'dontAddToRecent'
|
||||||
|
>
|
||||||
|
message?: string
|
||||||
|
securityScopedBookmarks?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface OpenDialogReturnValue {
|
||||||
|
canceled: boolean
|
||||||
|
filePaths: string[]
|
||||||
|
bookmarks?: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SaveDialogOptions {
|
||||||
|
title?: string
|
||||||
|
defaultPath?: string
|
||||||
|
buttonLabel?: string
|
||||||
|
filters?: FileFilter[]
|
||||||
|
message?: string
|
||||||
|
nameFieldLabel?: string
|
||||||
|
showsTagField?: boolean
|
||||||
|
properties?: Array<
|
||||||
|
| 'showHiddenFiles'
|
||||||
|
| 'createDirectory'
|
||||||
|
| 'treatPackageAsDirectory'
|
||||||
|
| 'showOverwriteConfirmation'
|
||||||
|
| 'dontAddToRecent'
|
||||||
|
>
|
||||||
|
securityScopedBookmarks?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SaveDialogReturnValue {
|
||||||
|
canceled: boolean
|
||||||
|
filePath?: string
|
||||||
|
bookmark?: string
|
||||||
|
}
|
||||||
@@ -62,8 +62,8 @@ export interface CertificateUploadResponse {
|
|||||||
data: string // base64 encoded
|
data: string // base64 encoded
|
||||||
}
|
}
|
||||||
|
|
||||||
// Electron dialog types (re-exported for convenience)
|
// Dialog types (browser-compatible versions)
|
||||||
import { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from 'electron'
|
import type { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from './DialogTypes'
|
||||||
|
|
||||||
export type OpenDialogOptionsV2 = OpenDialogOptions
|
export type OpenDialogOptionsV2 = OpenDialogOptions
|
||||||
export type OpenDialogReturnValueV2 = OpenDialogReturnValue
|
export type OpenDialogReturnValueV2 = OpenDialogReturnValue
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from 'electron'
|
import type { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from './DialogTypes'
|
||||||
import { RpcEvent } from './EventSystem/Rpc'
|
import { RpcEvent } from './EventSystem/Rpc'
|
||||||
|
|
||||||
// Legacy functions - use RpcEvents from EventsV2.ts for new code
|
// Legacy functions - use RpcEvents from EventsV2.ts for new code
|
||||||
|
|||||||
Reference in New Issue
Block a user