@nativedesktop/react 0.4.9 → 0.4.11

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/dist/index.js CHANGED
@@ -593,7 +593,7 @@ var widgetEvents = {
593
593
  tabview: [{ name: "selectionChanged", handler: "onSelectionChanged", payload: "index" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
594
594
  grid: [{ name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
595
595
  listview: [{ name: "rowActivated", handler: "onRowActivated", payload: "index" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
596
- webview: [{ name: "navigate", handler: "onNavigate", payload: "text" }, { name: "titleChanged", handler: "onTitleChanged", payload: "text" }, { name: "loadingChanged", handler: "onLoadingChanged", payload: "checked" }, { name: "backAvailable", handler: "onBackAvailable", payload: "checked" }, { name: "forwardAvailable", handler: "onForwardAvailable", payload: "checked" }, { name: "loadProgress", handler: "onLoadProgress", payload: "value" }, { name: "loadFailed", handler: "onLoadFailed", payload: "data" }, { name: "newWindow", handler: "onNewWindow", payload: "text" }, { name: "downloadRequested", handler: "onDownloadRequested", payload: "data" }, { name: "javaScriptResult", handler: "onJavaScriptResult", payload: "data" }, { name: "scriptMessage", handler: "onScriptMessage", payload: "data" }, { name: "schemeRequest", handler: "onSchemeRequest", payload: "data" }, { name: "cookiesResult", handler: "onCookiesResult", payload: "data" }, { name: "cookiesChanged", handler: "onCookiesChanged", payload: "data" }, { name: "faviconChanged", handler: "onFaviconChanged", payload: "data" }, { name: "findResult", handler: "onFindResult", payload: "data" }, { name: "securityChanged", handler: "onSecurityChanged", payload: "data" }, { name: "linkHover", handler: "onLinkHover", payload: "text" }, { name: "contextMenu", handler: "onContextMenu", payload: "data" }, { name: "contextMenuItemClicked", handler: "onContextMenuItemClicked", payload: "data" }, { name: "sessionSaved", handler: "onSessionSaved", payload: "data" }, { name: "audioStateChanged", handler: "onAudioStateChanged", payload: "data" }, { name: "extensionsList", handler: "onExtensionsList", payload: "data" }, { name: "extensionActions", handler: "onExtensionActions", payload: "data" }, { name: "chromeDialog", handler: "onChromeDialog", payload: "data" }, { name: "permissionRequest", handler: "onPermissionRequest", payload: "data" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
596
+ webview: [{ name: "navigate", handler: "onNavigate", payload: "text" }, { name: "titleChanged", handler: "onTitleChanged", payload: "text" }, { name: "loadingChanged", handler: "onLoadingChanged", payload: "checked" }, { name: "backAvailable", handler: "onBackAvailable", payload: "checked" }, { name: "forwardAvailable", handler: "onForwardAvailable", payload: "checked" }, { name: "loadProgress", handler: "onLoadProgress", payload: "value" }, { name: "loadFailed", handler: "onLoadFailed", payload: "data" }, { name: "newWindow", handler: "onNewWindow", payload: "text" }, { name: "downloadRequested", handler: "onDownloadRequested", payload: "data" }, { name: "javaScriptResult", handler: "onJavaScriptResult", payload: "data" }, { name: "scriptMessage", handler: "onScriptMessage", payload: "data" }, { name: "schemeRequest", handler: "onSchemeRequest", payload: "data" }, { name: "cookiesResult", handler: "onCookiesResult", payload: "data" }, { name: "cookiesChanged", handler: "onCookiesChanged", payload: "data" }, { name: "faviconChanged", handler: "onFaviconChanged", payload: "data" }, { name: "findResult", handler: "onFindResult", payload: "data" }, { name: "securityChanged", handler: "onSecurityChanged", payload: "data" }, { name: "linkHover", handler: "onLinkHover", payload: "text" }, { name: "contextMenu", handler: "onContextMenu", payload: "data" }, { name: "contextMenuItemClicked", handler: "onContextMenuItemClicked", payload: "data" }, { name: "sessionSaved", handler: "onSessionSaved", payload: "data" }, { name: "audioStateChanged", handler: "onAudioStateChanged", payload: "data" }, { name: "extensionsList", handler: "onExtensionsList", payload: "data" }, { name: "extensionActions", handler: "onExtensionActions", payload: "data" }, { name: "extensionsChanged", handler: "onExtensionsChanged", payload: "data" }, { name: "chromeDialog", handler: "onChromeDialog", payload: "data" }, { name: "permissionRequest", handler: "onPermissionRequest", payload: "data" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
597
597
  nativeview: [{ name: "nativeEvent", handler: "onNativeEvent", payload: "data" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
598
598
  splitview: [{ name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
599
599
  headerbar: [{ name: "back", handler: "onBack", payload: "none" }, { name: "forward", handler: "onForward", payload: "none" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
@@ -669,7 +669,7 @@ var handlerPropNames = {
669
669
  tabview: ["onSelectionChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
670
670
  grid: ["onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
671
671
  listview: ["onRowActivated", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
672
- webview: ["onNavigate", "onTitleChanged", "onLoadingChanged", "onBackAvailable", "onForwardAvailable", "onLoadProgress", "onLoadFailed", "onNewWindow", "onDownloadRequested", "onJavaScriptResult", "onScriptMessage", "onSchemeRequest", "onCookiesResult", "onCookiesChanged", "onFaviconChanged", "onFindResult", "onSecurityChanged", "onLinkHover", "onContextMenu", "onContextMenuItemClicked", "onSessionSaved", "onAudioStateChanged", "onExtensionsList", "onExtensionActions", "onChromeDialog", "onPermissionRequest", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
672
+ webview: ["onNavigate", "onTitleChanged", "onLoadingChanged", "onBackAvailable", "onForwardAvailable", "onLoadProgress", "onLoadFailed", "onNewWindow", "onDownloadRequested", "onJavaScriptResult", "onScriptMessage", "onSchemeRequest", "onCookiesResult", "onCookiesChanged", "onFaviconChanged", "onFindResult", "onSecurityChanged", "onLinkHover", "onContextMenu", "onContextMenuItemClicked", "onSessionSaved", "onAudioStateChanged", "onExtensionsList", "onExtensionActions", "onExtensionsChanged", "onChromeDialog", "onPermissionRequest", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
673
673
  nativeview: ["onNativeEvent", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
674
674
  splitview: ["onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
675
675
  headerbar: ["onBack", "onForward", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
@@ -742,7 +742,7 @@ var widgetCommands = {
742
742
  tabview: [],
743
743
  grid: [],
744
744
  listview: [],
745
- webview: ["goBack", "goForward", "reload", "stop", "executeJavaScript", "setZoom", "setUserAgent", "openDevTools", "addUserScript", "removeUserScript", "clearUserScripts", "registerScriptMessage", "unregisterScriptMessage", "respondScheme", "respondPermission", "getCookies", "setCookie", "deleteCookie", "findStart", "findNext", "findPrevious", "findStop", "saveSession", "restoreSession", "setMuted", "setContextMenuItems", "listExtensions", "listExtensionActions", "installExtension", "uninstallExtension", "setExtensionEnabled", "focus"],
745
+ webview: ["goBack", "goForward", "reload", "stop", "executeJavaScript", "setZoom", "setUserAgent", "openDevTools", "addUserScript", "removeUserScript", "clearUserScripts", "registerScriptMessage", "unregisterScriptMessage", "respondScheme", "respondPermission", "getCookies", "setCookie", "deleteCookie", "findStart", "findNext", "findPrevious", "findStop", "saveSession", "restoreSession", "setMuted", "setContextMenuItems", "listExtensions", "watchExtensions", "listExtensionActions", "readExtensionAction", "installExtension", "uninstallExtension", "setExtensionEnabled", "focus"],
746
746
  nativeview: [],
747
747
  splitview: [],
748
748
  headerbar: [],
@@ -1934,6 +1934,8 @@ var pendingCookies = new Map;
1934
1934
  var pendingSessions = new Map;
1935
1935
  var pendingExtensions = new Map;
1936
1936
  var pendingActions = new Map;
1937
+ var pendingWatches = new Map;
1938
+ var pendingActionState = new Map;
1937
1939
  var seq2 = 0;
1938
1940
  function nextId(prefix) {
1939
1941
  return `${prefix}${++seq2}`;
@@ -2023,6 +2025,38 @@ function extensionMutation(node, command, args) {
2023
2025
  sendCommand(node, command, { id, ...args });
2024
2026
  });
2025
2027
  }
2028
+ var extensionsWatchers = [];
2029
+ function watchExtensions(node, listener) {
2030
+ const id = nextId("ext");
2031
+ return new Promise((resolve2, reject2) => {
2032
+ pendingWatches.set(id, { resolve: resolve2, reject: reject2 });
2033
+ extensionsWatchers.push(listener);
2034
+ sendCommand(node, "watchExtensions", { id });
2035
+ });
2036
+ }
2037
+ function onExtensionsChanged(e) {
2038
+ const result = e.data;
2039
+ if (result.id !== undefined) {
2040
+ const call2 = pendingWatches.get(result.id);
2041
+ if (!call2)
2042
+ return;
2043
+ pendingWatches.delete(result.id);
2044
+ if (result.ok)
2045
+ call2.resolve(result.sources ?? []);
2046
+ else
2047
+ call2.reject(new Error(result.error ?? "watchExtensions failed"));
2048
+ return;
2049
+ }
2050
+ for (const listener of extensionsWatchers)
2051
+ listener({ reason: result.reason ?? "" });
2052
+ }
2053
+ function readExtensionAction(node) {
2054
+ const id = nextId("ext");
2055
+ return new Promise((resolve2, reject2) => {
2056
+ pendingActionState.set(id, { resolve: resolve2, reject: reject2 });
2057
+ sendCommand(node, "readExtensionAction", { id });
2058
+ });
2059
+ }
2026
2060
  function listExtensionActions(node) {
2027
2061
  const id = nextId("ext");
2028
2062
  return new Promise((resolve2, reject2) => {
@@ -2032,6 +2066,15 @@ function listExtensionActions(node) {
2032
2066
  }
2033
2067
  function onExtensionActions(e) {
2034
2068
  const result = e.data;
2069
+ const state3 = pendingActionState.get(result.id);
2070
+ if (state3) {
2071
+ pendingActionState.delete(result.id);
2072
+ if (result.ok && result.action)
2073
+ state3.resolve(result.action);
2074
+ else
2075
+ state3.reject(new Error(result.error ?? "readExtensionAction failed"));
2076
+ return;
2077
+ }
2035
2078
  const call2 = pendingActions.get(result.id);
2036
2079
  if (!call2)
2037
2080
  return;
@@ -2395,6 +2438,7 @@ function useStoreValue(store, select) {
2395
2438
  }
2396
2439
  export {
2397
2440
  webviewEngine,
2441
+ watchExtensions,
2398
2442
  useTransition,
2399
2443
  useSyncExternalStore,
2400
2444
  useStoreValue,
@@ -2428,6 +2472,7 @@ export {
2428
2472
  render,
2429
2473
  registerExports,
2430
2474
  recentDocuments,
2475
+ readExtensionAction,
2431
2476
  performRefresh,
2432
2477
  openPath,
2433
2478
  openFile,
@@ -2440,6 +2485,7 @@ export {
2440
2485
  onOpenFileResult,
2441
2486
  onJavaScriptResult,
2442
2487
  onExtensionsList,
2488
+ onExtensionsChanged,
2443
2489
  onExtensionActions,
2444
2490
  onCookiesResult,
2445
2491
  onAlertResult,
@@ -998,6 +998,9 @@ export declare namespace JSX {
998
998
  onExtensionActions?: (e: {
999
999
  data: unknown;
1000
1000
  }) => void;
1001
+ onExtensionsChanged?: (e: {
1002
+ data: unknown;
1003
+ }) => void;
1001
1004
  onChromeDialog?: (e: {
1002
1005
  data: unknown;
1003
1006
  }) => void;
@@ -29,7 +29,7 @@ export type WidgetCommandNames = {
29
29
  "checkbox": "focus";
30
30
  "radio": "focus";
31
31
  "select": "focus";
32
- "webview": "goBack" | "goForward" | "reload" | "stop" | "executeJavaScript" | "setZoom" | "setUserAgent" | "openDevTools" | "addUserScript" | "removeUserScript" | "clearUserScripts" | "registerScriptMessage" | "unregisterScriptMessage" | "respondScheme" | "respondPermission" | "getCookies" | "setCookie" | "deleteCookie" | "findStart" | "findNext" | "findPrevious" | "findStop" | "saveSession" | "restoreSession" | "setMuted" | "setContextMenuItems" | "listExtensions" | "listExtensionActions" | "installExtension" | "uninstallExtension" | "setExtensionEnabled" | "focus";
32
+ "webview": "goBack" | "goForward" | "reload" | "stop" | "executeJavaScript" | "setZoom" | "setUserAgent" | "openDevTools" | "addUserScript" | "removeUserScript" | "clearUserScripts" | "registerScriptMessage" | "unregisterScriptMessage" | "respondScheme" | "respondPermission" | "getCookies" | "setCookie" | "deleteCookie" | "findStart" | "findNext" | "findPrevious" | "findStop" | "saveSession" | "restoreSession" | "setMuted" | "setContextMenuItems" | "listExtensions" | "watchExtensions" | "listExtensionActions" | "readExtensionAction" | "installExtension" | "uninstallExtension" | "setExtensionEnabled" | "focus";
33
33
  "searchinput": "focus";
34
34
  "switch": "focus";
35
35
  "numberinput": "focus";
@@ -7,8 +7,8 @@ export type { SpacingScale } from "./metrics.ts";
7
7
  export { getAppDataDir, ensureAppDataDir } from "./paths.ts";
8
8
  export { defineNativeComponent } from "./native-component.ts";
9
9
  export type { NativeComponentOptions, NativeComponentProps, NativeComponentRef } from "./native-component.ts";
10
- export { executeJavaScript, onJavaScriptResult, getCookies, onCookiesResult, saveSession, onSessionSaved, setContextMenuItems, listExtensions, onExtensionsList, listExtensionActions, onExtensionActions, installExtension, uninstallExtension, setExtensionEnabled, } from "./webview.ts";
11
- export type { Cookie, ContextMenuContext, ContextMenuItem, ContextMenuItemClick, ExtensionAction, InstalledExtension, } from "./webview.ts";
10
+ export { executeJavaScript, onJavaScriptResult, getCookies, onCookiesResult, saveSession, onSessionSaved, setContextMenuItems, listExtensions, onExtensionsList, listExtensionActions, readExtensionAction, onExtensionActions, watchExtensions, onExtensionsChanged, installExtension, uninstallExtension, setExtensionEnabled, } from "./webview.ts";
11
+ export type { Cookie, ContextMenuContext, ContextMenuItem, ContextMenuItemClick, ExtensionAction, ExtensionActionState, ExtensionsChange, InstalledExtension, } from "./webview.ts";
12
12
  export { showAlert, openFile, saveFile, showAbout, showTabOverview, onAlertResult, onOpenFileResult, onSaveFileResult, } from "./dialogs.ts";
13
13
  export type { DialogButton, ShowAlertOptions, AlertResult, OpenFileOptions as WindowOpenFileOptions, OpenFileResult as WindowOpenFileResult, SaveFileOptions as WindowSaveFileOptions, SaveFileResult as WindowSaveFileResult, ShowAboutOptions, } from "./dialogs.ts";
14
14
  export { showToast, dismissToast, onToastButtonClicked, onToastDismissed } from "./toast.ts";
@@ -39,6 +39,13 @@ export declare function onExtensionsList(e: {
39
39
  export declare function installExtension(node: NdNodeRef<"webview">, path: string): Promise<InstalledExtension[]>;
40
40
  export declare function uninstallExtension(node: NdNodeRef<"webview">, extensionId: string): Promise<InstalledExtension[]>;
41
41
  export declare function setExtensionEnabled(node: NdNodeRef<"webview">, extensionId: string, enabled: boolean): Promise<InstalledExtension[]>;
42
+ export interface ExtensionsChange {
43
+ reason: string;
44
+ }
45
+ export declare function watchExtensions(node: NdNodeRef<"webview">, listener: (change: ExtensionsChange) => void): Promise<string[]>;
46
+ export declare function onExtensionsChanged(e: {
47
+ data: unknown;
48
+ }): void;
42
49
  export interface ExtensionAction {
43
50
  id: string;
44
51
  name: string;
@@ -49,9 +56,20 @@ export interface ExtensionAction {
49
56
  iconUrl: string;
50
57
  /** `chrome-extension://…` popup page, or "" for an action that fires `onClicked`. */
51
58
  popupUrl: string;
52
- /** Always "": Chromium answers `chrome.action.getBadgeText` to the extension alone. */
59
+ /** Always "": read the live value with `readExtensionAction`. */
53
60
  badgeText: string;
54
61
  }
62
+ export interface ExtensionActionState {
63
+ id: string;
64
+ tabId: number;
65
+ tabUrl: string;
66
+ popupUrl: string;
67
+ badgeText: string;
68
+ badgeColor: number[];
69
+ title: string;
70
+ enabled: boolean;
71
+ }
72
+ export declare function readExtensionAction(node: NdNodeRef<"webview">): Promise<ExtensionActionState>;
55
73
  export declare function listExtensionActions(node: NdNodeRef<"webview">): Promise<ExtensionAction[]>;
56
74
  export declare function onExtensionActions(e: {
57
75
  data: unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nativedesktop/react",
3
- "version": "0.4.9",
3
+ "version": "0.4.11",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/FormalSnake/NativeDesktop#readme",