@trops/dash-core 0.1.182 → 0.1.184
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.esm.js +117 -63
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +117 -63
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -27582,7 +27582,7 @@ var STATUS = {
|
|
|
27582
27582
|
* @returns {Object} WebSocket provider interface
|
|
27583
27583
|
*/
|
|
27584
27584
|
var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
27585
|
-
var _app$providers;
|
|
27585
|
+
var _dashApi$api, _app$providers;
|
|
27586
27586
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
27587
27587
|
var _options$autoConnect = options.autoConnect,
|
|
27588
27588
|
autoConnect = _options$autoConnect === void 0 ? true : _options$autoConnect,
|
|
@@ -27629,6 +27629,10 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27629
27629
|
var maxMessagesRef = React.useRef(maxMessages);
|
|
27630
27630
|
maxMessagesRef.current = maxMessages;
|
|
27631
27631
|
var dashApi = app === null || app === void 0 ? void 0 : app.dashApi;
|
|
27632
|
+
// Access the raw preload bridge (mainApi) for the webSocket sub-API.
|
|
27633
|
+
// dashApi is an ElectronDashboardApi wrapper; the webSocket methods
|
|
27634
|
+
// live on the underlying mainApi object (dashApi.api).
|
|
27635
|
+
var wsApi = dashApi === null || dashApi === void 0 || (_dashApi$api = dashApi.api) === null || _dashApi$api === void 0 ? void 0 : _dashApi$api.webSocket;
|
|
27632
27636
|
|
|
27633
27637
|
// Get the widget data
|
|
27634
27638
|
var widgetData = widgetContext === null || widgetContext === void 0 ? void 0 : widgetContext.widgetData;
|
|
@@ -27680,7 +27684,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27680
27684
|
}
|
|
27681
27685
|
return _context2.abrupt("return");
|
|
27682
27686
|
case 1:
|
|
27683
|
-
if (!(!
|
|
27687
|
+
if (!(!wsApi || !provider)) {
|
|
27684
27688
|
_context2.next = 2;
|
|
27685
27689
|
break;
|
|
27686
27690
|
}
|
|
@@ -27709,7 +27713,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27709
27713
|
}
|
|
27710
27714
|
_context2.prev = 5;
|
|
27711
27715
|
_context2.next = 6;
|
|
27712
|
-
return
|
|
27716
|
+
return wsApi.getStatus(selectedProviderName);
|
|
27713
27717
|
case 6:
|
|
27714
27718
|
statusResult = _context2.sent;
|
|
27715
27719
|
if (!((statusResult === null || statusResult === void 0 ? void 0 : statusResult.status) === "connected")) {
|
|
@@ -27786,7 +27790,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27786
27790
|
case 0:
|
|
27787
27791
|
_context.prev = 0;
|
|
27788
27792
|
_context.next = 1;
|
|
27789
|
-
return
|
|
27793
|
+
return wsApi.connect(selectedProviderName, {
|
|
27790
27794
|
url: provider.wsConfig.url,
|
|
27791
27795
|
headers: provider.wsConfig.headers || null,
|
|
27792
27796
|
subprotocols: provider.wsConfig.subprotocols || null,
|
|
@@ -27866,7 +27870,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27866
27870
|
return _context2.stop();
|
|
27867
27871
|
}
|
|
27868
27872
|
}, _callee2, null, [[5, 8], [10, 14], [18, 22]]);
|
|
27869
|
-
})), [
|
|
27873
|
+
})), [wsApi, provider, providerType, selectedProviderName, applyConnected]);
|
|
27870
27874
|
|
|
27871
27875
|
/**
|
|
27872
27876
|
* Disconnect from the WebSocket server.
|
|
@@ -27877,7 +27881,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27877
27881
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
27878
27882
|
while (1) switch (_context3.prev = _context3.next) {
|
|
27879
27883
|
case 0:
|
|
27880
|
-
if (!(!
|
|
27884
|
+
if (!(!wsApi || !selectedProviderName)) {
|
|
27881
27885
|
_context3.next = 1;
|
|
27882
27886
|
break;
|
|
27883
27887
|
}
|
|
@@ -27915,7 +27919,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27915
27919
|
pendingConnects["delete"](selectedProviderName);
|
|
27916
27920
|
_context3.prev = 4;
|
|
27917
27921
|
_context3.next = 5;
|
|
27918
|
-
return
|
|
27922
|
+
return wsApi.disconnect(selectedProviderName);
|
|
27919
27923
|
case 5:
|
|
27920
27924
|
_context3.next = 7;
|
|
27921
27925
|
break;
|
|
@@ -27927,7 +27931,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27927
27931
|
return _context3.stop();
|
|
27928
27932
|
}
|
|
27929
27933
|
}, _callee3, null, [[4, 6]]);
|
|
27930
|
-
})), [
|
|
27934
|
+
})), [wsApi, selectedProviderName]);
|
|
27931
27935
|
|
|
27932
27936
|
/**
|
|
27933
27937
|
* Send data through the WebSocket connection
|
|
@@ -27938,14 +27942,14 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27938
27942
|
return _regeneratorRuntime.wrap(function (_context4) {
|
|
27939
27943
|
while (1) switch (_context4.prev = _context4.next) {
|
|
27940
27944
|
case 0:
|
|
27941
|
-
if (!(!
|
|
27945
|
+
if (!(!wsApi || !selectedProviderName)) {
|
|
27942
27946
|
_context4.next = 1;
|
|
27943
27947
|
break;
|
|
27944
27948
|
}
|
|
27945
27949
|
throw new Error("WebSocket not connected");
|
|
27946
27950
|
case 1:
|
|
27947
27951
|
_context4.next = 2;
|
|
27948
|
-
return
|
|
27952
|
+
return wsApi.send(selectedProviderName, data);
|
|
27949
27953
|
case 2:
|
|
27950
27954
|
result = _context4.sent;
|
|
27951
27955
|
if (!result.error) {
|
|
@@ -27964,7 +27968,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27964
27968
|
return function (_x) {
|
|
27965
27969
|
return _ref4.apply(this, arguments);
|
|
27966
27970
|
};
|
|
27967
|
-
}(), [
|
|
27971
|
+
}(), [wsApi, selectedProviderName]);
|
|
27968
27972
|
|
|
27969
27973
|
// Keep a ref to connect so the auto-connect effect doesn't depend on it
|
|
27970
27974
|
var connectRef = React.useRef(connect);
|
|
@@ -27972,7 +27976,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27972
27976
|
|
|
27973
27977
|
// Listen for incoming messages from main process
|
|
27974
27978
|
React.useEffect(function () {
|
|
27975
|
-
if (!
|
|
27979
|
+
if (!wsApi || !selectedProviderName) return;
|
|
27976
27980
|
var handleMessage = function handleMessage(_event, payload) {
|
|
27977
27981
|
if (payload.provider !== selectedProviderName) return;
|
|
27978
27982
|
if (!mountedRef.current) return;
|
|
@@ -27987,15 +27991,15 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
27987
27991
|
setMessages(next);
|
|
27988
27992
|
setLastMessage(msg);
|
|
27989
27993
|
};
|
|
27990
|
-
|
|
27994
|
+
wsApi.onMessage(handleMessage);
|
|
27991
27995
|
return function () {
|
|
27992
|
-
return
|
|
27996
|
+
return wsApi.offMessage(handleMessage);
|
|
27993
27997
|
};
|
|
27994
|
-
}, [
|
|
27998
|
+
}, [wsApi, selectedProviderName]);
|
|
27995
27999
|
|
|
27996
28000
|
// Listen for status changes from main process
|
|
27997
28001
|
React.useEffect(function () {
|
|
27998
|
-
if (!
|
|
28002
|
+
if (!wsApi || !selectedProviderName) return;
|
|
27999
28003
|
var handleStatusChange = function handleStatusChange(_event, payload) {
|
|
28000
28004
|
if (payload.provider !== selectedProviderName) return;
|
|
28001
28005
|
if (!mountedRef.current) return;
|
|
@@ -28032,11 +28036,11 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
28032
28036
|
}
|
|
28033
28037
|
}
|
|
28034
28038
|
};
|
|
28035
|
-
|
|
28039
|
+
wsApi.onStatusChange(handleStatusChange);
|
|
28036
28040
|
return function () {
|
|
28037
|
-
return
|
|
28041
|
+
return wsApi.offStatusChange(handleStatusChange);
|
|
28038
28042
|
};
|
|
28039
|
-
}, [
|
|
28043
|
+
}, [wsApi, selectedProviderName]);
|
|
28040
28044
|
|
|
28041
28045
|
// Auto-connect on mount or when provider selection changes
|
|
28042
28046
|
React.useEffect(function () {
|
|
@@ -28053,7 +28057,7 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
28053
28057
|
mountedRef.current = false;
|
|
28054
28058
|
|
|
28055
28059
|
// Decrement consumer count; only disconnect if last consumer
|
|
28056
|
-
if (connectedRef.current &&
|
|
28060
|
+
if (connectedRef.current && wsApi && selectedProviderName) {
|
|
28057
28061
|
var state = connectionStates.get(selectedProviderName);
|
|
28058
28062
|
if (state) {
|
|
28059
28063
|
state.consumerCount = Math.max(0, state.consumerCount - 1);
|
|
@@ -28065,10 +28069,10 @@ var useWebSocketProvider = function useWebSocketProvider(providerType) {
|
|
|
28065
28069
|
// Last consumer — disconnect
|
|
28066
28070
|
connectionStates["delete"](selectedProviderName);
|
|
28067
28071
|
}
|
|
28068
|
-
|
|
28072
|
+
wsApi.disconnect(selectedProviderName)["catch"](function () {});
|
|
28069
28073
|
}
|
|
28070
28074
|
};
|
|
28071
|
-
}, [
|
|
28075
|
+
}, [wsApi, selectedProviderName]);
|
|
28072
28076
|
return {
|
|
28073
28077
|
isConnected: isConnected,
|
|
28074
28078
|
isConnecting: isConnecting,
|
|
@@ -40517,17 +40521,44 @@ var ThemeDetail = function ThemeDetail(_ref6) {
|
|
|
40517
40521
|
|
|
40518
40522
|
function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
40519
40523
|
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
40520
|
-
var
|
|
40521
|
-
var
|
|
40522
|
-
|
|
40523
|
-
|
|
40524
|
-
|
|
40525
|
-
|
|
40526
|
-
|
|
40527
|
-
|
|
40528
|
-
|
|
40529
|
-
|
|
40530
|
-
|
|
40524
|
+
var BackToChooser = function BackToChooser(_ref) {
|
|
40525
|
+
var onClick = _ref.onClick,
|
|
40526
|
+
children = _ref.children;
|
|
40527
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
40528
|
+
className: "flex flex-col h-full overflow-hidden",
|
|
40529
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
40530
|
+
className: "flex-shrink-0 px-4 pt-4",
|
|
40531
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("button", {
|
|
40532
|
+
type: "button",
|
|
40533
|
+
onClick: onClick,
|
|
40534
|
+
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
40535
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
|
|
40536
|
+
icon: "arrow-left",
|
|
40537
|
+
className: "h-3 w-3"
|
|
40538
|
+
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
40539
|
+
children: "Back"
|
|
40540
|
+
})]
|
|
40541
|
+
})
|
|
40542
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
40543
|
+
className: "flex-1 min-h-0 overflow-y-auto",
|
|
40544
|
+
children: children
|
|
40545
|
+
})]
|
|
40546
|
+
});
|
|
40547
|
+
};
|
|
40548
|
+
|
|
40549
|
+
// ─── Main Component ──────────────────────────────────────────────────────
|
|
40550
|
+
|
|
40551
|
+
var ThemesSection = function ThemesSection(_ref2) {
|
|
40552
|
+
var _ref2$onOpenThemeEdit = _ref2.onOpenThemeEditor,
|
|
40553
|
+
onOpenThemeEditor = _ref2$onOpenThemeEdit === void 0 ? null : _ref2$onOpenThemeEdit,
|
|
40554
|
+
_ref2$dashApi = _ref2.dashApi,
|
|
40555
|
+
dashApi = _ref2$dashApi === void 0 ? null : _ref2$dashApi,
|
|
40556
|
+
_ref2$credentials = _ref2.credentials,
|
|
40557
|
+
credentials = _ref2$credentials === void 0 ? null : _ref2$credentials,
|
|
40558
|
+
_ref2$createRequested = _ref2.createRequested,
|
|
40559
|
+
createRequested = _ref2$createRequested === void 0 ? false : _ref2$createRequested,
|
|
40560
|
+
_ref2$onCreateAcknowl = _ref2.onCreateAcknowledged,
|
|
40561
|
+
onCreateAcknowledged = _ref2$onCreateAcknowl === void 0 ? null : _ref2$onCreateAcknowl;
|
|
40531
40562
|
var _useContext = React.useContext(DashReact.ThemeContext),
|
|
40532
40563
|
themes = _useContext.themes,
|
|
40533
40564
|
currentThemeKey = _useContext.themeKey,
|
|
@@ -40565,6 +40596,10 @@ var ThemesSection = function ThemesSection(_ref) {
|
|
|
40565
40596
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
40566
40597
|
enteredViaChooser = _useState12[0],
|
|
40567
40598
|
setEnteredViaChooser = _useState12[1];
|
|
40599
|
+
var _useState13 = React.useState(null),
|
|
40600
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
40601
|
+
initialMethod = _useState14[0],
|
|
40602
|
+
setInitialMethod = _useState14[1];
|
|
40568
40603
|
var themeEntries = themes ? Object.entries(themes) : [];
|
|
40569
40604
|
var appId = credentials === null || credentials === void 0 ? void 0 : credentials.appId;
|
|
40570
40605
|
var rowStyles = DashReact.getStylesForItem(DashReact.themeObjects.PANEL_HEADER, currentTheme, {
|
|
@@ -40625,9 +40660,9 @@ var ThemesSection = function ThemesSection(_ref) {
|
|
|
40625
40660
|
if (!dashApi || !appId) return;
|
|
40626
40661
|
if (key === currentThemeKey) {
|
|
40627
40662
|
var _themeEntries$find;
|
|
40628
|
-
var otherKey = (_themeEntries$find = themeEntries.find(function (
|
|
40629
|
-
var
|
|
40630
|
-
k =
|
|
40663
|
+
var otherKey = (_themeEntries$find = themeEntries.find(function (_ref3) {
|
|
40664
|
+
var _ref4 = _slicedToArray(_ref3, 1),
|
|
40665
|
+
k = _ref4[0];
|
|
40631
40666
|
return k !== key;
|
|
40632
40667
|
})) === null || _themeEntries$find === void 0 ? void 0 : _themeEntries$find[0];
|
|
40633
40668
|
if (otherKey) {
|
|
@@ -40743,10 +40778,10 @@ var ThemesSection = function ThemesSection(_ref) {
|
|
|
40743
40778
|
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
40744
40779
|
className: "flex-1 overflow-y-auto min-h-0",
|
|
40745
40780
|
children: /*#__PURE__*/jsxRuntime.jsxs(DashReact.Sidebar.Content, {
|
|
40746
|
-
children: [themeEntries.map(function (
|
|
40747
|
-
var
|
|
40748
|
-
key =
|
|
40749
|
-
theme =
|
|
40781
|
+
children: [themeEntries.map(function (_ref5) {
|
|
40782
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
40783
|
+
key = _ref6[0],
|
|
40784
|
+
theme = _ref6[1];
|
|
40750
40785
|
var isActive = key === currentThemeKey;
|
|
40751
40786
|
var isSelected = selectedThemeKey === key && generateMode === GENERATE_MODES.NONE && installMode !== "marketplace";
|
|
40752
40787
|
return /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Item, {
|
|
@@ -40807,38 +40842,57 @@ var ThemesSection = function ThemesSection(_ref) {
|
|
|
40807
40842
|
setInstallMode("marketplace");
|
|
40808
40843
|
setEnteredViaChooser(true);
|
|
40809
40844
|
},
|
|
40810
|
-
|
|
40811
|
-
|
|
40812
|
-
|
|
40813
|
-
onCreateFromUrl: function onCreateFromUrl() {
|
|
40814
|
-
setGenerateMode(GENERATE_MODES.FROM_URL);
|
|
40845
|
+
onSelectMethod: function onSelectMethod(method) {
|
|
40846
|
+
setInitialMethod(method);
|
|
40847
|
+
if (method === "presets") setGenerateMode(GENERATE_MODES.PRESETS);else if (method === "color") setGenerateMode(GENERATE_MODES.COLOR);else if (method === "from-url") setGenerateMode(GENERATE_MODES.FROM_URL);else setGenerateMode(GENERATE_MODES.WIZARD);
|
|
40815
40848
|
}
|
|
40816
40849
|
});
|
|
40817
40850
|
} else if (generateMode === GENERATE_MODES.WIZARD) {
|
|
40818
|
-
detailContent = /*#__PURE__*/jsxRuntime.jsx(
|
|
40819
|
-
|
|
40820
|
-
|
|
40821
|
-
|
|
40822
|
-
|
|
40823
|
-
|
|
40824
|
-
|
|
40825
|
-
|
|
40826
|
-
|
|
40827
|
-
|
|
40851
|
+
detailContent = /*#__PURE__*/jsxRuntime.jsx(BackToChooser, {
|
|
40852
|
+
onClick: function onClick() {
|
|
40853
|
+
return setGenerateMode(GENERATE_MODES.CHOOSER);
|
|
40854
|
+
},
|
|
40855
|
+
children: /*#__PURE__*/jsxRuntime.jsx(ThemeQuickCreate, {
|
|
40856
|
+
wizardName: wizardName,
|
|
40857
|
+
setWizardName: setWizardName,
|
|
40858
|
+
wizardMethod: wizardMethod,
|
|
40859
|
+
setWizardMethod: setWizardMethod,
|
|
40860
|
+
wizardTheme: wizardTheme,
|
|
40861
|
+
setWizardTheme: setWizardTheme,
|
|
40862
|
+
onComplete: handleWizardComplete,
|
|
40863
|
+
onExtract: handleUrlExtract,
|
|
40864
|
+
onMapToTheme: handleUrlMapToTheme,
|
|
40865
|
+
initialMethod: initialMethod
|
|
40866
|
+
})
|
|
40828
40867
|
});
|
|
40829
40868
|
} else if (generateMode === GENERATE_MODES.PRESETS) {
|
|
40830
|
-
detailContent = /*#__PURE__*/jsxRuntime.jsx(
|
|
40831
|
-
|
|
40869
|
+
detailContent = /*#__PURE__*/jsxRuntime.jsx(BackToChooser, {
|
|
40870
|
+
onClick: function onClick() {
|
|
40871
|
+
return setGenerateMode(GENERATE_MODES.CHOOSER);
|
|
40872
|
+
},
|
|
40873
|
+
children: /*#__PURE__*/jsxRuntime.jsx(PresetGallery, {
|
|
40874
|
+
onSelect: handleCreateFromPreset
|
|
40875
|
+
})
|
|
40832
40876
|
});
|
|
40833
40877
|
} else if (generateMode === GENERATE_MODES.FROM_URL) {
|
|
40834
|
-
detailContent = /*#__PURE__*/jsxRuntime.jsx(
|
|
40835
|
-
|
|
40836
|
-
|
|
40837
|
-
|
|
40878
|
+
detailContent = /*#__PURE__*/jsxRuntime.jsx(BackToChooser, {
|
|
40879
|
+
onClick: function onClick() {
|
|
40880
|
+
return setGenerateMode(GENERATE_MODES.CHOOSER);
|
|
40881
|
+
},
|
|
40882
|
+
children: /*#__PURE__*/jsxRuntime.jsx(DashReact.ThemeFromUrlPane, {
|
|
40883
|
+
onExtract: handleUrlExtract,
|
|
40884
|
+
onMapToTheme: handleUrlMapToTheme,
|
|
40885
|
+
onGenerate: handleUrlThemeGenerated
|
|
40886
|
+
})
|
|
40838
40887
|
});
|
|
40839
40888
|
} else if (generateMode === GENERATE_MODES.COLOR) {
|
|
40840
|
-
detailContent = /*#__PURE__*/jsxRuntime.jsx(
|
|
40841
|
-
|
|
40889
|
+
detailContent = /*#__PURE__*/jsxRuntime.jsx(BackToChooser, {
|
|
40890
|
+
onClick: function onClick() {
|
|
40891
|
+
return setGenerateMode(GENERATE_MODES.CHOOSER);
|
|
40892
|
+
},
|
|
40893
|
+
children: /*#__PURE__*/jsxRuntime.jsx(ColorHarmonyPicker, {
|
|
40894
|
+
onGenerate: handleCreateFromHarmony
|
|
40895
|
+
})
|
|
40842
40896
|
});
|
|
40843
40897
|
} else if (selectedThemeKey && themes && themes[selectedThemeKey]) {
|
|
40844
40898
|
detailContent = /*#__PURE__*/jsxRuntime.jsx(ThemeDetail, {
|