@nativedesktop/react 0.4.39 → 0.4.41
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 +87 -50
- package/dist/packages/react/src/generated/intrinsics.d.ts +15 -1
- package/dist/packages/react/src/generated/schema-meta.d.ts +2 -2
- package/dist/packages/react/src/host-config.d.ts +1 -1
- package/dist/packages/react/src/ops.d.ts +1 -0
- package/dist/packages/react/src/system.d.ts +25 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -581,7 +581,7 @@ var widgetEvents = {
|
|
|
581
581
|
box: [{ name: "hoverChanged", handler: "onHoverChanged", payload: "checked" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
582
582
|
label: [{ name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
583
583
|
button: [{ name: "clicked", handler: "onClick", payload: "none" }, { name: "hoverChanged", handler: "onHoverChanged", payload: "checked" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
584
|
-
textinput: [{ name: "changed", handler: "onChanged", payload: "text" }, { name: "activate", handler: "onActivate", payload: "text" }, { name: "leadingIconClicked", handler: "onLeadingIconClicked", 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" }],
|
|
584
|
+
textinput: [{ name: "changed", handler: "onChanged", payload: "text" }, { name: "activate", handler: "onActivate", payload: "text" }, { name: "leadingIconClicked", handler: "onLeadingIconClicked", payload: "none" }, { name: "trailingIconClicked", handler: "onTrailingIconClicked", 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" }],
|
|
585
585
|
textarea: [{ name: "changed", handler: "onChanged", payload: "text" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
586
586
|
checkbox: [{ name: "toggled", handler: "onToggled", payload: "checked" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
587
587
|
radio: [{ name: "toggled", handler: "onToggled", payload: "checked" }, { 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,12 +595,12 @@ var widgetEvents = {
|
|
|
595
595
|
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" }],
|
|
596
596
|
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" }],
|
|
597
597
|
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" }],
|
|
598
|
-
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: "browserCommand", handler: "onBrowserCommand", payload: "text" }, { name: "downloadRequested", handler: "onDownloadRequested", payload: "data" }, { name: "downloadUpdated", handler: "onDownloadUpdated", 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: "permissionRequestDismissed", handler: "onPermissionRequestDismissed", 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
|
+
webview: [{ name: "navigate", handler: "onNavigate", payload: "text" }, { name: "titleChanged", handler: "onTitleChanged", payload: "text" }, { name: "loadingChanged", handler: "onLoadingChanged", payload: "checked" }, { name: "focusChanged", handler: "onFocusChanged", 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: "browserCommand", handler: "onBrowserCommand", payload: "text" }, { name: "downloadRequested", handler: "onDownloadRequested", payload: "data" }, { name: "downloadUpdated", handler: "onDownloadUpdated", 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: "permissionRequestDismissed", handler: "onPermissionRequestDismissed", payload: "data" }, { name: "zoomChanged", handler: "onZoomChanged", 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" }],
|
|
599
599
|
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" }],
|
|
600
600
|
splitview: [{ name: "revealChanged", handler: "onRevealChanged", payload: "checked" }, { name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
601
601
|
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" }],
|
|
602
602
|
toolbarview: [{ name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
603
|
-
searchinput: [{ name: "changed", handler: "onChanged", payload: "text" }, { name: "activate", handler: "onActivate", payload: "text" }, { name: "leadingIconClicked", handler: "onLeadingIconClicked", 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" }],
|
|
603
|
+
searchinput: [{ name: "changed", handler: "onChanged", payload: "text" }, { name: "activate", handler: "onActivate", payload: "text" }, { name: "leadingIconClicked", handler: "onLeadingIconClicked", payload: "none" }, { name: "trailingIconClicked", handler: "onTrailingIconClicked", 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" }],
|
|
604
604
|
sourcelist: [{ name: "selectionChanged", handler: "onSelectionChanged", payload: "index" }, { 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" }],
|
|
605
605
|
sourcetree: [{ name: "selectionChanged", handler: "onSelectionChanged", payload: "data" }, { name: "rowActivated", handler: "onRowActivated", payload: "data" }, { name: "nodeExpanded", handler: "onNodeExpanded", payload: "data" }, { name: "nodeCollapsed", handler: "onNodeCollapsed", payload: "data" }, { name: "actionClicked", handler: "onActionClicked", payload: "data" }, { name: "middleClicked", handler: "onMiddleClick", 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" }],
|
|
606
606
|
menubar: [{ name: "dragStarted", handler: "onDragStarted", payload: "text" }, { name: "dragEnded", handler: "onDragEnded", payload: "none" }, { name: "dragOver", handler: "onDragOver", payload: "dragPoint" }, { name: "dropped", handler: "onDropped", payload: "dragPoint" }],
|
|
@@ -658,7 +658,7 @@ var handlerPropNames = {
|
|
|
658
658
|
box: ["onHoverChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
659
659
|
label: ["onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
660
660
|
button: ["onClick", "onHoverChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
661
|
-
textinput: ["onChanged", "onActivate", "onLeadingIconClicked", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
661
|
+
textinput: ["onChanged", "onActivate", "onLeadingIconClicked", "onTrailingIconClicked", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
662
662
|
textarea: ["onChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
663
663
|
checkbox: ["onToggled", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
664
664
|
radio: ["onToggled", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
@@ -672,12 +672,12 @@ var handlerPropNames = {
|
|
|
672
672
|
tabview: ["onSelectionChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
673
673
|
grid: ["onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
674
674
|
listview: ["onRowActivated", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
675
|
-
webview: ["onNavigate", "onTitleChanged", "onLoadingChanged", "onBackAvailable", "onForwardAvailable", "onLoadProgress", "onLoadFailed", "onNewWindow", "onBrowserCommand", "onDownloadRequested", "onDownloadUpdated", "onJavaScriptResult", "onScriptMessage", "onSchemeRequest", "onCookiesResult", "onCookiesChanged", "onFaviconChanged", "onFindResult", "onSecurityChanged", "onLinkHover", "onContextMenu", "onContextMenuItemClicked", "onSessionSaved", "onAudioStateChanged", "onExtensionsList", "onExtensionActions", "onExtensionsChanged", "onChromeDialog", "onPermissionRequest", "onPermissionRequestDismissed", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
675
|
+
webview: ["onNavigate", "onTitleChanged", "onLoadingChanged", "onFocusChanged", "onBackAvailable", "onForwardAvailable", "onLoadProgress", "onLoadFailed", "onNewWindow", "onBrowserCommand", "onDownloadRequested", "onDownloadUpdated", "onJavaScriptResult", "onScriptMessage", "onSchemeRequest", "onCookiesResult", "onCookiesChanged", "onFaviconChanged", "onFindResult", "onSecurityChanged", "onLinkHover", "onContextMenu", "onContextMenuItemClicked", "onSessionSaved", "onAudioStateChanged", "onExtensionsList", "onExtensionActions", "onExtensionsChanged", "onChromeDialog", "onPermissionRequest", "onPermissionRequestDismissed", "onZoomChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
676
676
|
nativeview: ["onNativeEvent", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
677
677
|
splitview: ["onRevealChanged", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
678
678
|
headerbar: ["onBack", "onForward", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
679
679
|
toolbarview: ["onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
680
|
-
searchinput: ["onChanged", "onActivate", "onLeadingIconClicked", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
680
|
+
searchinput: ["onChanged", "onActivate", "onLeadingIconClicked", "onTrailingIconClicked", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
681
681
|
sourcelist: ["onSelectionChanged", "onRowActivated", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
682
682
|
sourcetree: ["onSelectionChanged", "onRowActivated", "onNodeExpanded", "onNodeCollapsed", "onActionClicked", "onMiddleClick", "onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
683
683
|
menubar: ["onDragStarted", "onDragEnded", "onDragOver", "onDropped"],
|
|
@@ -732,7 +732,7 @@ var widgetCommands = {
|
|
|
732
732
|
box: [],
|
|
733
733
|
label: [],
|
|
734
734
|
button: ["focus"],
|
|
735
|
-
textinput: ["focus", "activateLeadingIcon"],
|
|
735
|
+
textinput: ["focus", "activateLeadingIcon", "activateTrailingIcon"],
|
|
736
736
|
textarea: ["focus"],
|
|
737
737
|
checkbox: ["focus"],
|
|
738
738
|
radio: ["focus"],
|
|
@@ -751,7 +751,7 @@ var widgetCommands = {
|
|
|
751
751
|
splitview: ["revealSidebar", "concealSidebar"],
|
|
752
752
|
headerbar: [],
|
|
753
753
|
toolbarview: ["revealTopBars", "concealTopBars"],
|
|
754
|
-
searchinput: ["focus", "activateLeadingIcon"],
|
|
754
|
+
searchinput: ["focus", "activateLeadingIcon", "activateTrailingIcon"],
|
|
755
755
|
sourcelist: [],
|
|
756
756
|
sourcetree: [],
|
|
757
757
|
menubar: [],
|
|
@@ -909,6 +909,10 @@ class Batch {
|
|
|
909
909
|
return this.ops.length;
|
|
910
910
|
}
|
|
911
911
|
}
|
|
912
|
+
var removalListeners = new Set;
|
|
913
|
+
function onNodeRemoved(listener) {
|
|
914
|
+
removalListeners.add(listener);
|
|
915
|
+
}
|
|
912
916
|
|
|
913
917
|
class NodeRegistry {
|
|
914
918
|
byId = new Map;
|
|
@@ -919,7 +923,10 @@ class NodeRegistry {
|
|
|
919
923
|
return this.byId.get(id);
|
|
920
924
|
}
|
|
921
925
|
unregister(id) {
|
|
922
|
-
this.byId.delete(id)
|
|
926
|
+
if (!this.byId.delete(id))
|
|
927
|
+
return;
|
|
928
|
+
for (const listener of removalListeners)
|
|
929
|
+
listener(id);
|
|
923
930
|
}
|
|
924
931
|
}
|
|
925
932
|
|
|
@@ -1400,7 +1407,9 @@ var hostConfig = {
|
|
|
1400
1407
|
hideTextInstance() {},
|
|
1401
1408
|
unhideTextInstance() {},
|
|
1402
1409
|
getPublicInstance: (i) => i,
|
|
1403
|
-
detachDeletedInstance() {
|
|
1410
|
+
detachDeletedInstance(inst) {
|
|
1411
|
+
registry.unregister(inst.id);
|
|
1412
|
+
},
|
|
1404
1413
|
maySuspendCommit: () => false,
|
|
1405
1414
|
preloadInstance: () => true,
|
|
1406
1415
|
startSuspendingCommit() {},
|
|
@@ -1445,6 +1454,13 @@ function dispatchSystemEvent(channel, data) {
|
|
|
1445
1454
|
globalThis.__nd_app_active = true;
|
|
1446
1455
|
else if (channel === "app.deactivate")
|
|
1447
1456
|
globalThis.__nd_app_active = false;
|
|
1457
|
+
else if (channel === "webview.engine") {
|
|
1458
|
+
const d = data;
|
|
1459
|
+
globalThis.__nd_webview_engine = {
|
|
1460
|
+
engine: d?.engine === "chromium" ? "chromium" : "system",
|
|
1461
|
+
style: d?.style === "chrome" || d?.style === "alloy" ? d.style : null
|
|
1462
|
+
};
|
|
1463
|
+
}
|
|
1448
1464
|
for (const handler of registry2().get(channel) ?? [])
|
|
1449
1465
|
handler(data);
|
|
1450
1466
|
if (channel === "notification.click") {
|
|
@@ -1553,6 +1569,12 @@ var system = {
|
|
|
1553
1569
|
}
|
|
1554
1570
|
};
|
|
1555
1571
|
var webviewEngine = {
|
|
1572
|
+
active() {
|
|
1573
|
+
return globalThis.__nd_webview_engine?.engine ?? "system";
|
|
1574
|
+
},
|
|
1575
|
+
cefStyle() {
|
|
1576
|
+
return globalThis.__nd_webview_engine?.style ?? null;
|
|
1577
|
+
},
|
|
1556
1578
|
async registerScheme(scheme, options = {}) {
|
|
1557
1579
|
await call("webviewEngine.registerScheme", {
|
|
1558
1580
|
scheme,
|
|
@@ -1951,13 +1973,56 @@ var seq2 = 0;
|
|
|
1951
1973
|
function nextId(prefix) {
|
|
1952
1974
|
return `${prefix}${++seq2}`;
|
|
1953
1975
|
}
|
|
1954
|
-
|
|
1955
|
-
|
|
1976
|
+
var inFlight = new Map;
|
|
1977
|
+
onNodeRemoved((nodeId) => {
|
|
1978
|
+
const calls = inFlight.get(nodeId);
|
|
1979
|
+
if (!calls)
|
|
1980
|
+
return;
|
|
1981
|
+
inFlight.delete(nodeId);
|
|
1982
|
+
for (const [id, reject2] of calls)
|
|
1983
|
+
reject2(new Error(`the <webview> was removed before request ${id} was answered`));
|
|
1984
|
+
});
|
|
1985
|
+
function request(node, pending, prefix, command, args) {
|
|
1986
|
+
const id = nextId(prefix);
|
|
1956
1987
|
return new Promise((resolve2, reject2) => {
|
|
1957
|
-
|
|
1958
|
-
|
|
1988
|
+
if (!registry.get(node.id)) {
|
|
1989
|
+
reject2(new Error(`${command}: the <webview> is no longer mounted`));
|
|
1990
|
+
return;
|
|
1991
|
+
}
|
|
1992
|
+
let calls = inFlight.get(node.id);
|
|
1993
|
+
if (!calls)
|
|
1994
|
+
inFlight.set(node.id, calls = new Map);
|
|
1995
|
+
const forget = () => {
|
|
1996
|
+
pending.delete(id);
|
|
1997
|
+
calls.delete(id);
|
|
1998
|
+
if (calls.size === 0 && inFlight.get(node.id) === calls)
|
|
1999
|
+
inFlight.delete(node.id);
|
|
2000
|
+
};
|
|
2001
|
+
pending.set(id, {
|
|
2002
|
+
resolve: (value) => {
|
|
2003
|
+
forget();
|
|
2004
|
+
resolve2(value);
|
|
2005
|
+
},
|
|
2006
|
+
reject: (reason) => {
|
|
2007
|
+
forget();
|
|
2008
|
+
reject2(reason);
|
|
2009
|
+
}
|
|
2010
|
+
});
|
|
2011
|
+
calls.set(id, (reason) => {
|
|
2012
|
+
forget();
|
|
2013
|
+
reject2(reason);
|
|
2014
|
+
});
|
|
2015
|
+
try {
|
|
2016
|
+
sendCommand(node, command, { id, ...args });
|
|
2017
|
+
} catch (error) {
|
|
2018
|
+
forget();
|
|
2019
|
+
reject2(error);
|
|
2020
|
+
}
|
|
1959
2021
|
});
|
|
1960
2022
|
}
|
|
2023
|
+
function executeJavaScript(node, code, world) {
|
|
2024
|
+
return request(node, pendingEvals, "js", "executeJavaScript", world ? { code, world } : { code });
|
|
2025
|
+
}
|
|
1961
2026
|
function onJavaScriptResult(e) {
|
|
1962
2027
|
const result = e.data;
|
|
1963
2028
|
const call2 = pendingEvals.get(result.id);
|
|
@@ -1970,11 +2035,7 @@ function onJavaScriptResult(e) {
|
|
|
1970
2035
|
call2.reject(new Error(result.error ?? "executeJavaScript failed"));
|
|
1971
2036
|
}
|
|
1972
2037
|
function getCookies(node, url) {
|
|
1973
|
-
|
|
1974
|
-
return new Promise((resolve2, reject2) => {
|
|
1975
|
-
pendingCookies.set(id, { resolve: resolve2, reject: reject2 });
|
|
1976
|
-
sendCommand(node, "getCookies", url ? { id, url } : { id });
|
|
1977
|
-
});
|
|
2038
|
+
return request(node, pendingCookies, "ck", "getCookies", url ? { url } : {});
|
|
1978
2039
|
}
|
|
1979
2040
|
function onCookiesResult(e) {
|
|
1980
2041
|
const result = e.data;
|
|
@@ -1988,11 +2049,7 @@ function onCookiesResult(e) {
|
|
|
1988
2049
|
call2.reject(new Error(result.error ?? "getCookies failed"));
|
|
1989
2050
|
}
|
|
1990
2051
|
function saveSession(node) {
|
|
1991
|
-
|
|
1992
|
-
return new Promise((resolve2, reject2) => {
|
|
1993
|
-
pendingSessions.set(id, { resolve: resolve2, reject: reject2 });
|
|
1994
|
-
sendCommand(node, "saveSession", { id });
|
|
1995
|
-
});
|
|
2052
|
+
return request(node, pendingSessions, "ss", "saveSession", {});
|
|
1996
2053
|
}
|
|
1997
2054
|
function onSessionSaved(e) {
|
|
1998
2055
|
const result = e.data;
|
|
@@ -2003,11 +2060,7 @@ function onSessionSaved(e) {
|
|
|
2003
2060
|
call2.resolve(result.state ?? "");
|
|
2004
2061
|
}
|
|
2005
2062
|
function listExtensions(node) {
|
|
2006
|
-
|
|
2007
|
-
return new Promise((resolve2, reject2) => {
|
|
2008
|
-
pendingExtensions.set(id, { resolve: resolve2, reject: reject2 });
|
|
2009
|
-
sendCommand(node, "listExtensions", { id });
|
|
2010
|
-
});
|
|
2063
|
+
return request(node, pendingExtensions, "ext", "listExtensions", {});
|
|
2011
2064
|
}
|
|
2012
2065
|
function onExtensionsList(e) {
|
|
2013
2066
|
const result = e.data;
|
|
@@ -2030,20 +2083,12 @@ function setExtensionEnabled(node, extensionId, enabled) {
|
|
|
2030
2083
|
return extensionMutation(node, "setExtensionEnabled", { extensionId, enabled });
|
|
2031
2084
|
}
|
|
2032
2085
|
function extensionMutation(node, command, args) {
|
|
2033
|
-
|
|
2034
|
-
return new Promise((resolve2, reject2) => {
|
|
2035
|
-
pendingExtensions.set(id, { resolve: resolve2, reject: reject2 });
|
|
2036
|
-
sendCommand(node, command, { id, ...args });
|
|
2037
|
-
});
|
|
2086
|
+
return request(node, pendingExtensions, "ext", command, args);
|
|
2038
2087
|
}
|
|
2039
2088
|
var extensionsWatchers = [];
|
|
2040
2089
|
function watchExtensions(node, listener) {
|
|
2041
|
-
|
|
2042
|
-
return
|
|
2043
|
-
pendingWatches.set(id, { resolve: resolve2, reject: reject2 });
|
|
2044
|
-
extensionsWatchers.push(listener);
|
|
2045
|
-
sendCommand(node, "watchExtensions", { id });
|
|
2046
|
-
});
|
|
2090
|
+
extensionsWatchers.push(listener);
|
|
2091
|
+
return request(node, pendingWatches, "ext", "watchExtensions", {});
|
|
2047
2092
|
}
|
|
2048
2093
|
function onExtensionsChanged(e) {
|
|
2049
2094
|
const result = e.data;
|
|
@@ -2062,18 +2107,10 @@ function onExtensionsChanged(e) {
|
|
|
2062
2107
|
listener({ reason: result.reason ?? "" });
|
|
2063
2108
|
}
|
|
2064
2109
|
function readExtensionAction(node) {
|
|
2065
|
-
|
|
2066
|
-
return new Promise((resolve2, reject2) => {
|
|
2067
|
-
pendingActionState.set(id, { resolve: resolve2, reject: reject2 });
|
|
2068
|
-
sendCommand(node, "readExtensionAction", { id });
|
|
2069
|
-
});
|
|
2110
|
+
return request(node, pendingActionState, "ext", "readExtensionAction", {});
|
|
2070
2111
|
}
|
|
2071
2112
|
function listExtensionActions(node) {
|
|
2072
|
-
|
|
2073
|
-
return new Promise((resolve2, reject2) => {
|
|
2074
|
-
pendingActions.set(id, { resolve: resolve2, reject: reject2 });
|
|
2075
|
-
sendCommand(node, "listExtensionActions", { id });
|
|
2076
|
-
});
|
|
2113
|
+
return request(node, pendingActions, "ext", "listExtensionActions", {});
|
|
2077
2114
|
}
|
|
2078
2115
|
function onExtensionActions(e) {
|
|
2079
2116
|
const result = e.data;
|
|
@@ -337,6 +337,9 @@ export declare namespace JSX {
|
|
|
337
337
|
leadingIconName?: string;
|
|
338
338
|
leadingIconTooltip?: string;
|
|
339
339
|
leadingIconLabel?: string;
|
|
340
|
+
trailingIconName?: string;
|
|
341
|
+
trailingIconTooltip?: string;
|
|
342
|
+
trailingIconLabel?: string;
|
|
340
343
|
editable?: boolean;
|
|
341
344
|
enabled?: boolean;
|
|
342
345
|
tooltip?: string;
|
|
@@ -351,6 +354,7 @@ export declare namespace JSX {
|
|
|
351
354
|
text: string;
|
|
352
355
|
}) => void;
|
|
353
356
|
onLeadingIconClicked?: () => void;
|
|
357
|
+
onTrailingIconClicked?: () => void;
|
|
354
358
|
onDragStarted?: (e: {
|
|
355
359
|
text: string;
|
|
356
360
|
}) => void;
|
|
@@ -948,6 +952,9 @@ export declare namespace JSX {
|
|
|
948
952
|
onLoadingChanged?: (e: {
|
|
949
953
|
checked: boolean;
|
|
950
954
|
}) => void;
|
|
955
|
+
onFocusChanged?: (e: {
|
|
956
|
+
checked: boolean;
|
|
957
|
+
}) => void;
|
|
951
958
|
onBackAvailable?: (e: {
|
|
952
959
|
checked: boolean;
|
|
953
960
|
}) => void;
|
|
@@ -1029,6 +1036,9 @@ export declare namespace JSX {
|
|
|
1029
1036
|
onPermissionRequestDismissed?: (e: {
|
|
1030
1037
|
data: unknown;
|
|
1031
1038
|
}) => void;
|
|
1039
|
+
onZoomChanged?: (e: {
|
|
1040
|
+
data: unknown;
|
|
1041
|
+
}) => void;
|
|
1032
1042
|
onDragStarted?: (e: {
|
|
1033
1043
|
text: string;
|
|
1034
1044
|
}) => void;
|
|
@@ -1243,6 +1253,9 @@ export declare namespace JSX {
|
|
|
1243
1253
|
leadingIconName?: string;
|
|
1244
1254
|
leadingIconTooltip?: string;
|
|
1245
1255
|
leadingIconLabel?: string;
|
|
1256
|
+
trailingIconName?: string;
|
|
1257
|
+
trailingIconTooltip?: string;
|
|
1258
|
+
trailingIconLabel?: string;
|
|
1246
1259
|
enabled?: boolean;
|
|
1247
1260
|
tooltip?: string;
|
|
1248
1261
|
draggable?: boolean;
|
|
@@ -1256,6 +1269,7 @@ export declare namespace JSX {
|
|
|
1256
1269
|
text: string;
|
|
1257
1270
|
}) => void;
|
|
1258
1271
|
onLeadingIconClicked?: () => void;
|
|
1272
|
+
onTrailingIconClicked?: () => void;
|
|
1259
1273
|
onDragStarted?: (e: {
|
|
1260
1274
|
text: string;
|
|
1261
1275
|
}) => void;
|
|
@@ -2168,7 +2182,7 @@ export declare namespace JSX {
|
|
|
2168
2182
|
popover: {
|
|
2169
2183
|
anchor?: number;
|
|
2170
2184
|
anchorRef?: RefObject<NdNodeRef | null>;
|
|
2171
|
-
anchorSlot?: "widget" | "leadingIcon";
|
|
2185
|
+
anchorSlot?: "widget" | "leadingIcon" | "trailingIcon";
|
|
2172
2186
|
open?: boolean;
|
|
2173
2187
|
position?: "top" | "bottom" | "left" | "right";
|
|
2174
2188
|
enabled?: boolean;
|
|
@@ -24,7 +24,7 @@ export declare const widgetCommands: Record<string, readonly string[]>;
|
|
|
24
24
|
export type WidgetCommandNames = {
|
|
25
25
|
"window": "showAlert" | "openFile" | "saveFile" | "showAbout" | "showTabOverview" | "present";
|
|
26
26
|
"button": "focus";
|
|
27
|
-
"textinput": "focus" | "activateLeadingIcon";
|
|
27
|
+
"textinput": "focus" | "activateLeadingIcon" | "activateTrailingIcon";
|
|
28
28
|
"textarea": "focus";
|
|
29
29
|
"checkbox": "focus";
|
|
30
30
|
"radio": "focus";
|
|
@@ -32,7 +32,7 @@ export type WidgetCommandNames = {
|
|
|
32
32
|
"webview": "goBack" | "goForward" | "reload" | "stop" | "executeJavaScript" | "setZoom" | "setUserAgent" | "openDevTools" | "addUserScript" | "removeUserScript" | "clearUserScripts" | "registerScriptMessage" | "unregisterScriptMessage" | "respondScheme" | "respondPermission" | "resetPermissions" | "respondDownload" | "getCookies" | "setCookie" | "deleteCookie" | "findStart" | "findNext" | "findPrevious" | "findStop" | "saveSession" | "restoreSession" | "setMuted" | "setContextMenuItems" | "listExtensions" | "watchExtensions" | "listExtensionActions" | "readExtensionAction" | "installExtension" | "uninstallExtension" | "setExtensionEnabled" | "focus";
|
|
33
33
|
"splitview": "revealSidebar" | "concealSidebar";
|
|
34
34
|
"toolbarview": "revealTopBars" | "concealTopBars";
|
|
35
|
-
"searchinput": "focus" | "activateLeadingIcon";
|
|
35
|
+
"searchinput": "focus" | "activateLeadingIcon" | "activateTrailingIcon";
|
|
36
36
|
"switch": "focus";
|
|
37
37
|
"numberinput": "focus";
|
|
38
38
|
"toastoverlay": "showToast" | "dismissToast";
|
|
@@ -55,7 +55,7 @@ export declare const hostConfig: {
|
|
|
55
55
|
hideTextInstance(): void;
|
|
56
56
|
unhideTextInstance(): void;
|
|
57
57
|
getPublicInstance: (i: Instance) => Instance;
|
|
58
|
-
detachDeletedInstance(): void;
|
|
58
|
+
detachDeletedInstance(inst: Instance): void;
|
|
59
59
|
maySuspendCommit: () => boolean;
|
|
60
60
|
preloadInstance: () => boolean;
|
|
61
61
|
startSuspendingCommit(): void;
|
|
@@ -12,6 +12,7 @@ export interface NodeRecord {
|
|
|
12
12
|
props: Record<string, unknown>;
|
|
13
13
|
handlers: Record<string, Handler>;
|
|
14
14
|
}
|
|
15
|
+
export declare function onNodeRemoved(listener: (id: number) => void): void;
|
|
15
16
|
export declare class NodeRegistry {
|
|
16
17
|
private byId;
|
|
17
18
|
register(rec: NodeRecord): void;
|
|
@@ -3,6 +3,10 @@ declare global {
|
|
|
3
3
|
var __nd_system_events: Map<string, Set<SystemEventHandler>> | undefined;
|
|
4
4
|
var __nd_notification_data: Map<string, unknown> | undefined;
|
|
5
5
|
var __nd_app_active: boolean | undefined;
|
|
6
|
+
var __nd_webview_engine: {
|
|
7
|
+
engine: WebviewEngineName;
|
|
8
|
+
style: CefStyle;
|
|
9
|
+
} | undefined;
|
|
6
10
|
}
|
|
7
11
|
/** Wired up by renderer.ts from `ndp.onSystemEvent()` — not part of the public API. */
|
|
8
12
|
export declare function dispatchSystemEvent(channel: string, data: unknown): void;
|
|
@@ -141,8 +145,29 @@ export interface RegisterSchemeOptions {
|
|
|
141
145
|
*/
|
|
142
146
|
secure?: boolean;
|
|
143
147
|
}
|
|
148
|
+
/** Which web engine the host actually started. */
|
|
149
|
+
export type WebviewEngineName = "chromium" | "system";
|
|
150
|
+
/** CEF's browser style, or null when the host is not running CEF at all. */
|
|
151
|
+
export type CefStyle = "chrome" | "alloy" | null;
|
|
144
152
|
/** Engine-level `<webview>` configuration. `core:webview` is default-granted. */
|
|
145
153
|
export declare const webviewEngine: {
|
|
154
|
+
/**
|
|
155
|
+
* Which engine this host actually started, synchronously. Asking for
|
|
156
|
+
* `chromium` is not the same as getting it: a host with no usable CEF
|
|
157
|
+
* distribution falls back to the system engine, and before this the only
|
|
158
|
+
* way to tell was to read `navigator.userAgent` out of a live view.
|
|
159
|
+
*
|
|
160
|
+
* Backed by the host's `webview.engine` stream, replayed right after the
|
|
161
|
+
* handshake like `app.isActive()`, so it is correct from the first render.
|
|
162
|
+
* "system" against a host that predates the stream.
|
|
163
|
+
*/
|
|
164
|
+
active(): WebviewEngineName;
|
|
165
|
+
/**
|
|
166
|
+
* CEF's browser style: "chrome" (Chromium's own browser runtime, which is
|
|
167
|
+
* what runs the extension system) or "alloy". Null whenever `active()` is
|
|
168
|
+
* not "chromium".
|
|
169
|
+
*/
|
|
170
|
+
cefStyle(): CefStyle;
|
|
146
171
|
/**
|
|
147
172
|
* Registers a custom URI scheme (`crx`, `app`, …) with the web engine.
|
|
148
173
|
* Requests for it arrive as the `schemeRequest` event on the `<webview>`
|