@flighthq/dialog 0.5.0-next.1944.cd6b6e7 → 0.5.1-edge.638.d4dbd4e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @flighthq/dialog
2
2
 
3
- Native open/save file, message, confirm, and prompt dialogs over a swappable web/native backend
3
+ Host-explicit open/save file, message, confirm, and prompt dialog operations
4
4
 
5
5
  ## Install
6
6
 
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/dialog`. The `@fligh
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/dialog@0.5.0-next.1944.cd6b6e7](https://github.com/flighthq/flight/tree/cd6b6e71eb472b3a4249830a7743333f019fa7b7/packages/dialog)
17
- - [License](https://github.com/flighthq/flight/blob/cd6b6e71eb472b3a4249830a7743333f019fa7b7/LICENSE.md)
16
+ - [Source for @flighthq/dialog@0.5.1-edge.638.d4dbd4e](https://github.com/flighthq/flight/tree/d4dbd4e347dc8be10b180c85a766ab50333dcb51/packages/dialog)
17
+ - [License](https://github.com/flighthq/flight/blob/d4dbd4e347dc8be10b180c85a766ab50333dcb51/LICENSE.md)
@@ -1,2 +1,3 @@
1
1
  export * from './dialog';
2
+ export * from './fileDialog';
2
3
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
package/dist/contract.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './dialog';
2
+ export * from './fileDialog';
2
3
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
package/dist/dialog.d.ts CHANGED
@@ -1,36 +1,11 @@
1
- import type { BackendExplanation, DialogBackend, FileDialogHandle, MessageDialogOptions, MessageDialogResult, OpenDirectoryDialogOptions, OpenFileDialogOptions, PromptDialogOptions, SaveFileDialogOptions } from '@flighthq/types/contract';
2
- export declare function createWebDialogBackend(): DialogBackend;
3
- export declare function explainDialogBackend(): BackendExplanation;
4
- export declare function getDialogBackend(): DialogBackend;
5
- export declare function getWebDirectorySystemHandle(handle: Readonly<FileDialogHandle>): FileSystemDirectoryHandle | null;
6
- export declare function getWebFileSystemHandle(handle: Readonly<FileDialogHandle>): FileSystemFileHandle | null;
7
- export declare function installDialogHostBackend(backend: DialogBackend): void;
8
- export declare function observeDialogHostResult(operation: string, succeeded: boolean): void;
9
- export declare function resetDialogBackendForTest(): void;
10
- export declare function setDialogBackend(backend: DialogBackend | null): void;
11
- export declare function showConfirmDialog(options: Readonly<MessageDialogOptions>): Promise<boolean>;
12
- export declare function showErrorBox(title: string, content: string): Promise<MessageDialogResult>;
13
- export declare function showErrorDialog(options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
14
- export declare function showInfoDialog(options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
15
- export declare function showMessageDialog(options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
16
- export declare function showOpenDirectoryDialog(options: Readonly<OpenDirectoryDialogOptions>): Promise<FileDialogHandle[]>;
17
- export declare function showOpenFileDialog(options: Readonly<OpenFileDialogOptions>): Promise<FileDialogHandle[]>;
18
- export declare function showPromptDialog(options: Readonly<PromptDialogOptions>): Promise<string | null>;
19
- export declare function showSaveFileDialog(options: Readonly<SaveFileDialogOptions>): Promise<FileDialogHandle | null>;
20
- export declare function showWarningDialog(options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
21
- interface FileSystemFileHandle {
22
- readonly kind: 'file';
23
- readonly name: string;
24
- getFile(): Promise<File>;
25
- createWritable(): Promise<FileSystemWritableFileStream>;
26
- }
27
- interface FileSystemWritableFileStream {
28
- write(data: BufferSource | Blob | string): Promise<void>;
29
- close(): Promise<void>;
30
- }
31
- interface FileSystemDirectoryHandle {
32
- readonly kind: 'directory';
33
- readonly name: string;
34
- }
35
- export {};
1
+ import type { HasDialogMessage, HasDialogPrompt, MessageDialogBackend, MessageDialogOptions, MessageDialogResult, PromptDialogBackend, PromptDialogOptions } from '@flighthq/types/contract';
2
+ export declare const webMessageDialogBackend: MessageDialogBackend;
3
+ export declare const webPromptDialogBackend: PromptDialogBackend;
4
+ export declare function showConfirmDialog(host: HasDialogMessage, options: Readonly<MessageDialogOptions>): Promise<boolean>;
5
+ export declare function showErrorBox(host: HasDialogMessage, title: string, content: string): Promise<MessageDialogResult>;
6
+ export declare function showErrorDialog(host: HasDialogMessage, options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
7
+ export declare function showInfoDialog(host: HasDialogMessage, options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
8
+ export declare function showMessageDialog(host: HasDialogMessage, options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
9
+ export declare function showPromptDialog(host: HasDialogPrompt, options: Readonly<PromptDialogOptions>): Promise<string | null>;
10
+ export declare function showWarningDialog(host: HasDialogMessage, options: Readonly<MessageDialogOptions>): Promise<MessageDialogResult>;
36
11
  //# sourceMappingURL=dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAEhB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,sBAAsB,IAAI,aAAa,CA2CtD;AAED,wBAAgB,oBAAoB,IAAI,kBAAkB,CAazD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAKD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,yBAAyB,GAAG,IAAI,CAEhH;AAKD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,oBAAoB,GAAG,IAAI,CAEtG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAMrE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAKnF;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAEpE;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3F;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEzF;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAErG;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEpG;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEvG;AAID,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAElH;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAExG;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE/F;AAKD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAE7G;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEvG;AAwCD,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,cAAc,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAAC;CACzD;AAED,UAAU,4BAA4B;IACpC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,UAAU,yBAAyB;IACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAIlC,eAAO,MAAM,uBAAuB,sBAAkC,CAAC;AACvE,eAAO,MAAM,sBAAsB,qBAAiC,CAAC;AAwCrE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnH;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEjH;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAE9B"}
package/dist/dialog.js CHANGED
@@ -1,14 +1,13 @@
1
- // Builds the default web backend over file inputs, window dialogs, and the File System Access API
2
- // where available. File pickers fall back to <input type=file> which cannot expose real host paths,
3
- // so handles carry path: null on web. All API surfaces are guarded for jsdom/non-document hosts
4
- // and resolve to sentinels rather than throwing.
5
- export function createWebDialogBackend() {
1
+ // These two providers predate the file-dialog split and remain here until their own domain slices move
2
+ // them into host-web. File-picker providers live exclusively in @flighthq/host-web.
3
+ export const webMessageDialogBackend = createWebMessageDialogBackend();
4
+ export const webPromptDialogBackend = createWebPromptDialogBackend();
5
+ function createWebMessageDialogBackend() {
6
6
  return {
7
7
  async confirm(options) {
8
8
  if (typeof window === 'undefined' || typeof window.confirm !== 'function')
9
9
  return false;
10
10
  try {
11
- // Coerce to a strict boolean: a real browser returns boolean, but jsdom can return undefined.
12
11
  return window.confirm(options.message) === true;
13
12
  }
14
13
  catch {
@@ -16,8 +15,6 @@ export function createWebDialogBackend() {
16
15
  }
17
16
  },
18
17
  async message(options) {
19
- // The web platform has no multi-button/checkbox message box; alert() shows the text only and
20
- // always yields button 0. Native hosts honor buttons, checkboxLabel, defaultId, and cancelId.
21
18
  const checkboxChecked = options.checkboxChecked ?? false;
22
19
  if (typeof window === 'undefined' || typeof window.alert !== 'function') {
23
20
  return { buttonIndex: 0, cancelled: false, checkboxChecked };
@@ -30,12 +27,10 @@ export function createWebDialogBackend() {
30
27
  }
31
28
  return { buttonIndex: 0, cancelled: false, checkboxChecked };
32
29
  },
33
- openDirectory(options) {
34
- return openWebDirectoryDialog(options);
35
- },
36
- openFile(options) {
37
- return openWebFileDialog(options);
38
- },
30
+ };
31
+ }
32
+ function createWebPromptDialogBackend() {
33
+ return {
39
34
  async prompt(options) {
40
35
  if (typeof window === 'undefined' || typeof window.prompt !== 'function')
41
36
  return null;
@@ -46,385 +41,27 @@ export function createWebDialogBackend() {
46
41
  return null;
47
42
  }
48
43
  },
49
- async saveFile(options) {
50
- return saveWebFile(options);
51
- },
52
44
  };
53
45
  }
54
- export function explainDialogBackend() {
55
- if (_custom !== null) {
56
- return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
57
- }
58
- if (_host !== null) {
59
- return {
60
- conflict: _hostConflict,
61
- layer: 'host',
62
- operation: _hostObservation !== null ? _hostObservation.operation : null,
63
- viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
64
- };
65
- }
66
- return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
67
- }
68
- export function getDialogBackend() {
69
- return _custom ?? _host ?? _sentinel;
70
- }
71
- // Retrieves the underlying web FileSystemDirectoryHandle stashed for a dialog directory handle, if any.
72
- // Used by @flighthq/filesystem or other I/O cells to traverse and read the directory natively.
73
- // Returns null when the handle was produced by the legacy <input webkitdirectory> fallback.
74
- export function getWebDirectorySystemHandle(handle) {
75
- return _fileSystemDirectoryHandleRegistry.get(handle) ?? null;
76
- }
77
- // Retrieves the underlying web FileSystemFileHandle stashed for a dialog handle, if any.
78
- // Used by @flighthq/filesystem or other I/O cells to access the writable/readable native handle.
79
- // Returns null when the handle was produced by a legacy <input> fallback (no File System Access).
80
- export function getWebFileSystemHandle(handle) {
81
- return _fileSystemHandleRegistry.get(handle) ?? null;
82
- }
83
- export function installDialogHostBackend(backend) {
84
- if (_host !== null) {
85
- if (_host !== backend)
86
- _hostConflict = true;
87
- return;
88
- }
89
- _host = backend;
90
- }
91
- export function observeDialogHostResult(operation, succeeded) {
92
- _hostObservation = {
93
- operation,
94
- viability: succeeded ? 'available' : 'runtime-api-unavailable',
95
- };
96
- }
97
- export function resetDialogBackendForTest() {
98
- _custom = null;
99
- _host = null;
100
- _hostConflict = false;
101
- _hostObservation = null;
102
- }
103
- export function setDialogBackend(backend) {
104
- _custom = backend;
105
- }
106
- // Shows a yes/no confirmation. Returns false on cancel or when the host lacks the surface.
107
- export function showConfirmDialog(options) {
108
- return getDialogBackend().confirm(options);
46
+ export function showConfirmDialog(host, options) {
47
+ return host.dialog.message.confirm(options);
109
48
  }
110
- // Shows an error-severity message box. Returns the pressed button index and final checkbox state
111
- // (buttonIndex 0 on web alert/dismiss). Convenience over showMessageDialog({ kind: 'error' }).
112
- export function showErrorBox(title, content) {
113
- return getDialogBackend().message({ kind: 'error', message: content, title });
49
+ export function showErrorBox(host, title, content) {
50
+ return host.dialog.message.message({ kind: 'error', message: content, title });
114
51
  }
115
- // Shows an error-severity message dialog. Returns the full result including cancelled flag.
116
- export function showErrorDialog(options) {
117
- return getDialogBackend().message({ ...options, kind: 'error' });
52
+ export function showErrorDialog(host, options) {
53
+ return host.dialog.message.message({ ...options, kind: 'error' });
118
54
  }
119
- // Shows an info-severity message dialog. Returns the full result including cancelled flag.
120
- export function showInfoDialog(options) {
121
- return getDialogBackend().message({ ...options, kind: 'info' });
55
+ export function showInfoDialog(host, options) {
56
+ return host.dialog.message.message({ ...options, kind: 'info' });
122
57
  }
123
- // Shows an informational message. Returns the pressed button index and final checkbox state
124
- // (buttonIndex 0 and the requested checkbox value on web alert/dismiss).
125
- export function showMessageDialog(options) {
126
- return getDialogBackend().message(options);
127
- }
128
- // Shows a directory picker as a first-class call (distinct from showOpenFileDialog({ directory: true })).
129
- // Returns selected directory handles ([] on cancel). On web, path is null in each handle.
130
- export function showOpenDirectoryDialog(options) {
131
- return getDialogBackend().openDirectory(options);
132
- }
133
- // Shows an open-file picker. Returns selected handles ([] on cancel). On web, path is null in each
134
- // handle — browsers cannot expose real host paths. Use @flighthq/filesystem to read handle contents.
135
- export function showOpenFileDialog(options) {
136
- return getDialogBackend().openFile(options);
137
- }
138
- // Shows a text prompt. Returns the entered string, or null on cancel / when the host lacks the surface.
139
- // Accepts an options object (title, message, defaultValue, placeholder) aligning it with its siblings.
140
- export function showPromptDialog(options) {
141
- return getDialogBackend().prompt(options);
142
- }
143
- // Shows a save-file picker. Returns a handle for the chosen destination, or null on cancel.
144
- // On web, uses the File System Access API (showSaveFilePicker) when available, yielding a handle
145
- // whose writable can be opened by @flighthq/filesystem. Falls back to null when the API is absent.
146
- export function showSaveFileDialog(options) {
147
- return getDialogBackend().saveFile(options);
148
- }
149
- // Shows a warning-severity message dialog. Returns the full result including cancelled flag.
150
- export function showWarningDialog(options) {
151
- return getDialogBackend().message({ ...options, kind: 'warning' });
152
- }
153
- let _custom = null;
154
- let _host = null;
155
- let _hostConflict = false;
156
- let _hostObservation = null;
157
- const _sentinel = {
158
- async confirm() {
159
- return false;
160
- },
161
- async message(options) {
162
- return { buttonIndex: 0, cancelled: false, checkboxChecked: options.checkboxChecked ?? false };
163
- },
164
- async openDirectory() {
165
- return [];
166
- },
167
- async openFile() {
168
- return [];
169
- },
170
- async prompt() {
171
- return null;
172
- },
173
- async saveFile() {
174
- return null;
175
- },
176
- };
177
- // Registry mapping FileDialogHandle → live web FileSystemDirectoryHandle, enabling @flighthq/filesystem
178
- // to enumerate and read directories without dialog owning the I/O. Populated by showDirectoryPicker path.
179
- // Keys are plain FileDialogHandle objects (reference equality); values are the native handles.
180
- const _fileSystemDirectoryHandleRegistry = new WeakMap();
181
- // Registry mapping FileDialogHandle → live web FileSystemFileHandle, enabling @flighthq/filesystem
182
- // to read from or write to a picked file without dialog owning the I/O. Dialog holds this registry
183
- // because it is the only party that creates and observes the FileSystemFileHandle lifecycle.
184
- // Keys are plain FileDialogHandle objects (reference equality); values are the native handles.
185
- const _fileSystemHandleRegistry = new WeakMap();
186
- // Builds a FileDialogFilter accept list for the File System Access API's 'types' option.
187
- function buildFileSystemAccessTypes(filters) {
188
- if (filters === undefined || filters.length === 0)
189
- return undefined;
190
- const types = [];
191
- for (const filter of filters) {
192
- const accept = {};
193
- const extensions = filter.extensions.filter((e) => e !== '*').map((e) => (e.startsWith('.') ? e : `.${e}`));
194
- if (extensions.length > 0) {
195
- const mime = filter.mimeTypes && filter.mimeTypes.length > 0 ? filter.mimeTypes[0] : 'application/octet-stream';
196
- accept[mime] = extensions;
197
- }
198
- if (filter.mimeTypes) {
199
- for (const mime of filter.mimeTypes) {
200
- if (!accept[mime])
201
- accept[mime] = extensions;
202
- }
203
- }
204
- if (Object.keys(accept).length === 0)
205
- continue;
206
- types.push({ accept, description: filter.name });
207
- }
208
- return types.length > 0 ? types : undefined;
209
- }
210
- // Builds the accept attribute value for a legacy <input type=file>.
211
- function buildAcceptAttribute(filters) {
212
- if (filters === undefined || filters.length === 0)
213
- return '';
214
- const parts = [];
215
- for (const filter of filters) {
216
- for (const extension of filter.extensions) {
217
- if (extension === '*')
218
- continue;
219
- parts.push(extension.startsWith('.') ? extension : `.${extension}`);
220
- }
221
- if (filter.mimeTypes) {
222
- for (const mime of filter.mimeTypes) {
223
- parts.push(mime);
224
- }
225
- }
226
- }
227
- return parts.join(',');
228
- }
229
- // Maps a FileDialogStartIn value to a File System Access API startIn token.
230
- // The File System Access API only accepts: 'desktop'|'documents'|'downloads'|'music'|'pictures'|'videos'
231
- // Unsupported values ('home', 'temp', 'appData', 'cache') are silently dropped.
232
- function toFileSystemAccessStartIn(startIn) {
233
- const allowed = new Set(['desktop', 'documents', 'downloads', 'music', 'pictures', 'videos']);
234
- return allowed.has(startIn) ? startIn : undefined;
235
- }
236
- // Opens a directory picker on web. Prefers the File System Access API showDirectoryPicker when
237
- // available (Chrome/Edge 86+) with a readwrite mode that enables real directory handle I/O.
238
- // Falls back to a webkitdirectory <input> (the legacy path that returns only File objects with
239
- // no writable access), which is non-standard but broadly supported.
240
- function openWebDirectoryDialog(options) {
241
- // File System Access API path: showDirectoryPicker yields a real FileSystemDirectoryHandle.
242
- if (typeof window !== 'undefined' &&
243
- typeof window.showDirectoryPicker === 'function') {
244
- return openDirectoryPickerAccessApi(options);
245
- }
246
- // Legacy fallback: <input webkitdirectory>
247
- if (typeof document === 'undefined' || typeof document.createElement !== 'function') {
248
- return Promise.resolve([]);
249
- }
250
- return new Promise((resolve) => {
251
- try {
252
- const input = document.createElement('input');
253
- input.type = 'file';
254
- if (options.multiple === true)
255
- input.multiple = true;
256
- // webkitdirectory is non-standard but the only browser path-less directory picker fallback.
257
- input.webkitdirectory = true;
258
- input.addEventListener('change', () => {
259
- const files = input.files;
260
- if (files === null || files.length === 0) {
261
- resolve([]);
262
- return;
263
- }
264
- // For directory inputs, each file's webkitRelativePath starts with the directory name.
265
- // Derive unique directory handles from the top-level directory names.
266
- const seenDirs = new Set();
267
- const handles = [];
268
- for (let i = 0; i < files.length; i++) {
269
- const rel = files[i].webkitRelativePath ?? '';
270
- const dirName = rel.split('/')[0] || files[i].name;
271
- if (!seenDirs.has(dirName)) {
272
- seenDirs.add(dirName);
273
- handles.push({ kind: 'Directory', name: dirName, path: null });
274
- }
275
- }
276
- resolve(handles);
277
- });
278
- input.addEventListener('cancel', () => resolve([]));
279
- input.click();
280
- }
281
- catch {
282
- resolve([]);
283
- }
284
- });
285
- }
286
- // Uses the File System Access API showDirectoryPicker. AbortError (user cancel) → sentinel [].
287
- // SecurityError (permission denied) → sentinel []. Other errors → sentinel [].
288
- // Stores the live FileSystemDirectoryHandle in the registry so @flighthq/filesystem can enumerate
289
- // and read contents through the handle without requiring a path.
290
- async function openDirectoryPickerAccessApi(options) {
291
- const win = window;
292
- if (typeof win.showDirectoryPicker !== 'function')
293
- return [];
294
- try {
295
- const pickerOptions = {
296
- // readwrite gives the most capability; if the user denies write permission the browser degrades.
297
- mode: 'readwrite',
298
- };
299
- if (options.startIn !== undefined) {
300
- const startIn = toFileSystemAccessStartIn(options.startIn);
301
- if (startIn !== undefined)
302
- pickerOptions.startIn = startIn;
303
- }
304
- const nativeHandle = await win.showDirectoryPicker(pickerOptions);
305
- const handle = { kind: 'Directory', name: nativeHandle.name, path: null };
306
- // Stash the live FileSystemDirectoryHandle so @flighthq/filesystem can traverse it.
307
- _fileSystemDirectoryHandleRegistry.set(handle, nativeHandle);
308
- return [handle];
309
- }
310
- catch {
311
- // AbortError (cancel) and SecurityError (denied) both resolve to the sentinel.
312
- return [];
313
- }
314
- }
315
- // Opens a file picker on web. Uses the File System Access API (showOpenFilePicker) when available,
316
- // stashing the live FileSystemFileHandle in the web handle registry for @flighthq/filesystem to read.
317
- // Falls back to a transient <input type=file> for browsers without the API.
318
- function openWebFileDialog(options) {
319
- // File System Access API path (Chrome/Edge). Returns real writable handles.
320
- if (typeof window !== 'undefined' &&
321
- typeof window.showOpenFilePicker === 'function') {
322
- return openFileSystemAccessPicker(options);
323
- }
324
- // Legacy <input type=file> fallback.
325
- if (typeof document === 'undefined' || typeof document.createElement !== 'function') {
326
- return Promise.resolve([]);
327
- }
328
- return new Promise((resolve) => {
329
- try {
330
- const input = document.createElement('input');
331
- input.type = 'file';
332
- if (options.multiple === true)
333
- input.multiple = true;
334
- if (options.directory === true) {
335
- input.webkitdirectory = true;
336
- }
337
- const accept = buildAcceptAttribute(options.filters);
338
- if (accept !== '')
339
- input.accept = accept;
340
- input.addEventListener('change', () => {
341
- const files = input.files;
342
- if (files === null || files.length === 0) {
343
- resolve([]);
344
- return;
345
- }
346
- const handles = [];
347
- for (let i = 0; i < files.length; i++) {
348
- handles.push({ kind: 'File', name: files[i].name, path: null });
349
- }
350
- resolve(handles);
351
- });
352
- // A cancelled picker fires no change event in many browsers; the 'cancel' event covers newer ones.
353
- input.addEventListener('cancel', () => resolve([]));
354
- input.click();
355
- }
356
- catch {
357
- resolve([]);
358
- }
359
- });
58
+ export function showMessageDialog(host, options) {
59
+ return host.dialog.message.message(options);
360
60
  }
361
- // Uses the File System Access API showOpenFilePicker. AbortError (user cancel) → sentinel [].
362
- // SecurityError (permission denied) → sentinel []. Other errors → sentinel [].
363
- async function openFileSystemAccessPicker(options) {
364
- const win = window;
365
- const showPicker = win.showOpenFilePicker;
366
- if (typeof showPicker !== 'function')
367
- return [];
368
- try {
369
- const pickerOptions = {
370
- multiple: options.multiple ?? false,
371
- };
372
- const types = buildFileSystemAccessTypes(options.filters);
373
- if (types !== undefined)
374
- pickerOptions.types = types;
375
- if (options.startIn !== undefined) {
376
- const startIn = toFileSystemAccessStartIn(options.startIn);
377
- if (startIn !== undefined)
378
- pickerOptions.startIn = startIn;
379
- }
380
- const nativeHandles = await showPicker.call(win, pickerOptions);
381
- const handles = [];
382
- for (const nativeHandle of nativeHandles) {
383
- const handle = { kind: 'File', name: nativeHandle.name, path: null };
384
- // Stash the live FileSystemFileHandle in the registry so @flighthq/filesystem can read it.
385
- _fileSystemHandleRegistry.set(handle, nativeHandle);
386
- handles.push(handle);
387
- }
388
- return handles;
389
- }
390
- catch {
391
- // AbortError (cancel) and SecurityError (permission denied) both resolve to the sentinel.
392
- return [];
393
- }
61
+ export function showPromptDialog(host, options) {
62
+ return host.dialog.prompt.prompt(options);
394
63
  }
395
- // Uses the File System Access API showSaveFilePicker. Returns null on cancel or when unavailable.
396
- async function saveWebFile(options) {
397
- const win = window;
398
- if (typeof win.showSaveFilePicker !== 'function') {
399
- // The web platform cannot expose or choose a writable host path without this API.
400
- return null;
401
- }
402
- try {
403
- const pickerOptions = {};
404
- if (options.defaultName !== undefined) {
405
- pickerOptions.suggestedName = options.defaultName;
406
- }
407
- else if (options.defaultPath !== undefined) {
408
- // Extract filename portion from the defaultPath for the suggestedName heuristic.
409
- const parts = options.defaultPath.replace(/\\/g, '/').split('/');
410
- pickerOptions.suggestedName = parts[parts.length - 1];
411
- }
412
- const types = buildFileSystemAccessTypes(options.filters);
413
- if (types !== undefined)
414
- pickerOptions.types = types;
415
- if (options.startIn !== undefined) {
416
- const startIn = toFileSystemAccessStartIn(options.startIn);
417
- if (startIn !== undefined)
418
- pickerOptions.startIn = startIn;
419
- }
420
- const nativeHandle = await win.showSaveFilePicker(pickerOptions);
421
- const handle = { kind: 'File', name: nativeHandle.name, path: null };
422
- // Stash the live FileSystemFileHandle for @flighthq/filesystem to write to.
423
- _fileSystemHandleRegistry.set(handle, nativeHandle);
424
- return handle;
425
- }
426
- catch {
427
- return null;
428
- }
64
+ export function showWarningDialog(host, options) {
65
+ return host.dialog.message.message({ ...options, kind: 'warning' });
429
66
  }
430
67
  //# sourceMappingURL=dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { DirectoryOpenDialogResult, FileDialogHandle, FileDialogHandleOperations, FileOpenDialogResult, FileSaveDialogResult, HasDialogDirectoryOpen, HasDialogFileOpen, HasDialogFileSave, OpenFileDialogOptions, SaveFileDialogOptions } from '@flighthq/types/contract';
2
+ export declare function createFileDialogHandle(kind: FileDialogHandle['kind'], name: string, path: string | null, operations?: FileDialogHandleOperations | null): FileDialogHandle;
3
+ export declare function getFileDialogHandleOperations(handle: Readonly<FileDialogHandle>): Readonly<FileDialogHandleOperations> | null;
4
+ export declare function showOpenDirectoryDialog(host: HasDialogDirectoryOpen): Promise<DirectoryOpenDialogResult>;
5
+ export declare function showOpenFileDialog(host: HasDialogFileOpen, options: Readonly<OpenFileDialogOptions>): Promise<FileOpenDialogResult>;
6
+ export declare function showSaveFileDialog(host: HasDialogFileSave, options: Readonly<SaveFileDialogOptions>): Promise<FileSaveDialogResult>;
7
+ //# sourceMappingURL=fileDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDialog.d.ts","sourceRoot":"","sources":["../src/fileDialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAChB,0BAA0B,EAE1B,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,UAAU,GAAE,0BAA0B,GAAG,IAAW,GACnD,gBAAgB,CAMlB;AAID,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,QAAQ,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAG7C;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAExG;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACvC,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACvC,OAAO,CAAC,oBAAoB,CAAC,CAE/B"}
@@ -0,0 +1,27 @@
1
+ import { createEntity, createEntityRuntime } from '@flighthq/entity/contract';
2
+ import { EntityRuntimeKey } from '@flighthq/types/contract';
3
+ // Constructs the identity that crosses from a picker provider into filesystem. `operations` is an
4
+ // internal runtime extension point, not serialized descriptor data; native path handles use null.
5
+ export function createFileDialogHandle(kind, name, path, operations = null) {
6
+ const handle = createEntity({ kind, name, path });
7
+ const runtime = createEntityRuntime();
8
+ runtime.operations = operations;
9
+ handle[EntityRuntimeKey] = runtime;
10
+ return handle;
11
+ }
12
+ // Provider-neutral access to the handle's package-crossing runtime operations. A deserialized DTO or
13
+ // forged object has no runtime and therefore cannot acquire authority by matching public fields.
14
+ export function getFileDialogHandleOperations(handle) {
15
+ const runtime = handle[EntityRuntimeKey];
16
+ return runtime?.operations ?? null;
17
+ }
18
+ export function showOpenDirectoryDialog(host) {
19
+ return host.dialog.directoryOpen.open();
20
+ }
21
+ export function showOpenFileDialog(host, options) {
22
+ return host.dialog.fileOpen.open(options);
23
+ }
24
+ export function showSaveFileDialog(host, options) {
25
+ return host.dialog.fileSave.save(options);
26
+ }
27
+ //# sourceMappingURL=fileDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDialog.js","sourceRoot":"","sources":["../src/fileDialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAc9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,kGAAkG;AAClG,kGAAkG;AAClG,MAAM,UAAU,sBAAsB,CACpC,IAA8B,EAC9B,IAAY,EACZ,IAAmB,EACnB,aAAgD,IAAI;IAEpD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAqB,CAAC;IACtE,MAAM,OAAO,GAAG,mBAAmB,EAA6B,CAAC;IACjE,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qGAAqG;AACrG,iGAAiG;AACjG,MAAM,UAAU,6BAA6B,CAC3C,MAAkC;IAElC,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAwC,CAAC;IAChF,OAAO,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAA4B;IAClE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAwC;IAExC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAwC;IAExC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { explainDialogBackend, getWebDirectorySystemHandle, getWebFileSystemHandle, showConfirmDialog, showErrorBox, showErrorDialog, showInfoDialog, showMessageDialog, showOpenDirectoryDialog, showOpenFileDialog, showPromptDialog, showSaveFileDialog, showWarningDialog, } from './contract';
1
+ export { createFileDialogHandle, getFileDialogHandleOperations, showConfirmDialog, showErrorBox, showErrorDialog, showInfoDialog, showMessageDialog, showOpenDirectoryDialog, showOpenFileDialog, showPromptDialog, showSaveFileDialog, showWarningDialog, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}