@linkdlab/funcnodes_react_flow 0.3.2 → 0.3.3
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/css/style.css +1 -1
- package/dist/esm/index.esm.js +17 -7
- package/dist/types/frontend/header/index.d.ts.map +1 -1
- package/dist/types/frontend/node/node.d.ts.map +1 -1
- package/dist/types/frontend/utils/progressbar.d.ts +44 -17
- package/dist/types/frontend/utils/progressbar.d.ts.map +1 -1
- package/dist/types/funcnodes/funcnodesworker.d.ts.map +1 -1
- package/dist/types/funcnodes/websocketworker.d.ts +1 -0
- package/dist/types/funcnodes/websocketworker.d.ts.map +1 -1
- package/dist/types/states/node.d.ts.map +1 -1
- package/dist/types/states/node.t.d.ts +3 -7
- package/dist/types/states/node.t.d.ts.map +1 -1
- package/dist/types/utils/autolayout/txt.d.ts +16 -0
- package/dist/types/utils/autolayout/txt.d.ts.map +1 -0
- package/dist/umd/index.umd.js +18 -7
- package/package.json +2 -2
package/dist/umd/index.umd.js
CHANGED
|
@@ -2954,7 +2954,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2954
2954
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2955
2955
|
|
|
2956
2956
|
"use strict";
|
|
2957
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../funcnodesreactflow */ \"./src/frontend/funcnodesreactflow/index.tsx\");\n/* harmony import */ var _header_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header.scss */ \"./src/frontend/header/header.scss\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-dropdown-menu */ \"../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs\");\n/* harmony import */ var _mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/MenuRounded */ \"../node_modules/@mui/icons-material/MenuRounded.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material/Typography */ \"../node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/Stack */ \"../node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_icons_material_ChevronRight__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/ChevronRight */ \"../node_modules/@mui/icons-material/ChevronRight.js\");\n/* harmony import */ var _utils_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/data */ \"./src/utils/data.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NewWorkerDialog = function (_a) {\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), name = _b[0], setName = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), copyLib = _c[0], setCopyLib = _c[1];\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), copyNS = _d[0], setCopyNS = _d[1];\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workersstate = fnrf_zst.workers();\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n name: \"None\",\n uuid: \"\",\n }), reference = _e[0], setReference = _e[1];\n if (!fnrf_zst.options.useWorkerManager)\n return null;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"New Worker\", description: \"Please provide a name and select a another worker as interpreter reference\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Name:\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"br\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"styledinput\", onChange: function (e) {\n setName(e.currentTarget.value);\n }, value: name })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Reference Worker:\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"br\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", { className: \"styleddropdown\", onChange: function (e) {\n var uuid = e.target.value;\n var name = e.target.selectedOptions[0].innerText;\n setReference({ name: name, uuid: uuid });\n }, value: reference.uuid },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"\" }, \"None\"),\n Object.keys(workersstate).map(function (workerid) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { className: \"\", key: workerid, value: workerid }, workersstate[workerid].name || workerid)); })),\n reference.uuid && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Copy Lib:\",\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: copyLib, onChange: function (e) {\n setCopyLib(e.currentTarget.checked);\n } })),\n copyLib && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Copy Nodespace\",\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: copyNS, onChange: function (e) {\n setCopyNS(e.currentTarget.checked);\n if (e.currentTarget.checked) {\n setCopyLib(true);\n }\n } }))))),\n name && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\", onClick: function () {\n var _a;\n (_a = fnrf_zst.workermanager) === null || _a === void 0 ? void 0 : _a.new_worker({\n name: name,\n reference: reference.uuid,\n copyLib: copyLib,\n copyNS: copyNS,\n });\n } }, \"Create\"))))));\n};\nvar Statusbar = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var progress = fnrf_zst.progress_state();\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"statusbar\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", { className: \"statusbar-progressbar\", style: { width: Math.min(100, 100 * progress.progress) + \"%\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", { className: \"statusbar-message\" }, progress.message)));\n};\nvar WorkerMenu = function () {\n var _a;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workersstate = fnrf_zst.workers();\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isNewWorkerDialogOpen = _b[0], setNewWorkerDialogOpen = _b[1];\n var workerselectchange = function (workerid) {\n if (workerid === \"__select__\")\n return;\n if (!fnrf_zst.workers)\n return;\n if (!fnrf_zst.workermanager)\n return;\n if (!workersstate[workerid])\n return;\n if (!workersstate[workerid].active) {\n //create popup\n var ans = window.confirm(\"this is an inactive worker, selecting it will start it, continue?\");\n if (!ans)\n return;\n }\n fnrf_zst.workermanager.set_active(workerid);\n };\n var exportWorker = function () { return __awaiter(void 0, void 0, void 0, function () {\n var data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!fnrf_zst.worker)\n return [2 /*return*/];\n return [4 /*yield*/, fnrf_zst.worker.export()];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, \"worker.fnw\", \"application/zip\");\n return [2 /*return*/];\n }\n });\n }); };\n var updateWorker = function () { return __awaiter(void 0, void 0, void 0, function () {\n var ans, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!fnrf_zst.worker)\n return [2 /*return*/];\n ans = window.confirm(\"Updateing the worker might replace the current nodespace, continue?\");\n if (!ans)\n return [2 /*return*/];\n return [4 /*yield*/, (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.fileDialogToBase64)(\".fnw\")];\n case 1:\n data = _a.sent();\n fnrf_zst.worker.update_from_export(data);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"Worker\"),\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"headermenucontent\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Group, null,\n fnrf_zst.options.useWorkerManager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Sub, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.SubTrigger, { className: \"headermenuitem submenuitem\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n \"Select\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ChevronRight__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.SubContent, { className: \"headermenucontent\", sideOffset: 2, alignOffset: -5 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioGroup, { value: (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.uuid, onValueChange: function (value) {\n workerselectchange(value);\n } }, Object.keys(workersstate)\n .sort(function (a, b) {\n // First, sort by active status (active workers come first)\n if (workersstate[a].active &&\n !workersstate[b].active)\n return -1;\n if (!workersstate[a].active &&\n workersstate[b].active)\n return 1;\n // If both are active or both are inactive, sort by name or ID\n var nameA = workersstate[a].name || a;\n var nameB = workersstate[b].name || b;\n return nameA.localeCompare(nameB);\n })\n .map(function (workerid) {\n var _a;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (workersstate[workerid].active\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.uuid) }, workersstate[workerid].name || workerid));\n })))))),\n fnrf_zst.worker && fnrf_zst.worker.is_open && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n fnrf_zst.workermanager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () {\n var _a;\n if (!fnrf_zst.worker)\n return;\n if (!fnrf_zst.workermanager)\n return fnrf_zst.logger.error(\"no workermanager\");\n (_a = fnrf_zst.workermanager) === null || _a === void 0 ? void 0 : _a.restart_worker(fnrf_zst.worker.uuid);\n } }, \"Restart\")),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () {\n if (!fnrf_zst.worker)\n return;\n fnrf_zst.worker.stop();\n } }, \"Stop\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: exportWorker }, \"Export\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: updateWorker }, \"Update\"))),\n fnrf_zst.options.useWorkerManager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () { return setNewWorkerDialogOpen(true); } }, \"New\"))))))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NewWorkerDialog, { open: isNewWorkerDialogOpen, setOpen: setNewWorkerDialogOpen })));\n};\nvar NodeSpaceMenu = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var onNew = function () {\n var _a;\n var alert = window.confirm(\"Are you sure you want to start a new flow?\");\n if (alert) {\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.clear();\n }\n };\n var onSave = function () { return __awaiter(void 0, void 0, void 0, function () {\n var data, blob, url, a;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, ((_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.save())];\n case 1:\n data = _b.sent();\n if (!data)\n return [2 /*return*/];\n blob = new Blob([JSON.stringify(data)], {\n type: \"application/json\",\n });\n url = URL.createObjectURL(blob);\n a = document.createElement(\"a\");\n a.href = url;\n a.download = \"flow.json\";\n a.click();\n URL.revokeObjectURL(url);\n a.remove();\n return [2 /*return*/];\n }\n });\n }); };\n var onOpen = function () { return __awaiter(void 0, void 0, void 0, function () {\n var input;\n return __generator(this, function (_a) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var file, reader;\n var _a;\n return __generator(this, function (_b) {\n file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];\n if (!file)\n return [2 /*return*/];\n reader = new FileReader();\n reader.onload = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n contents = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;\n if (!contents)\n return [2 /*return*/];\n data = JSON.parse(contents);\n return [4 /*yield*/, ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.load(data))];\n case 1:\n _c.sent();\n return [2 /*return*/];\n }\n });\n }); };\n reader.readAsText(file);\n return [2 /*return*/];\n });\n }); };\n input.click();\n return [2 /*return*/];\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"Nodespace\"),\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"headermenucontent\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Group, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onNew }, \"New\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onSave }, \"Save\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onOpen }, \"Load\")))))));\n};\nvar FuncnodesHeader = function (_a) {\n var headerprops = __rest(_a, []);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workerstate = fnrf_zst.workerstate();\n // pserudouse headerprops\n if (Object.keys(headerprops).length > 0) {\n fnrf_zst.logger.debug(\"headerprops\", headerprops);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowheader\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Statusbar, null)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(WorkerMenu, null)),\n fnrf_zst.worker && workerstate.is_open && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeSpaceMenu, null)))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncnodesHeader);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/header/index.tsx?");
|
|
2957
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../funcnodesreactflow */ \"./src/frontend/funcnodesreactflow/index.tsx\");\n/* harmony import */ var _header_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header.scss */ \"./src/frontend/header/header.scss\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-dropdown-menu */ \"../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs\");\n/* harmony import */ var _mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/MenuRounded */ \"../node_modules/@mui/icons-material/MenuRounded.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material/Typography */ \"../node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/Stack */ \"../node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_icons_material_ChevronRight__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/ChevronRight */ \"../node_modules/@mui/icons-material/ChevronRight.js\");\n/* harmony import */ var _utils_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/data */ \"./src/utils/data.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NewWorkerDialog = function (_a) {\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), name = _b[0], setName = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), copyLib = _c[0], setCopyLib = _c[1];\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), copyNS = _d[0], setCopyNS = _d[1];\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workersstate = fnrf_zst.workers();\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n name: \"None\",\n uuid: \"\",\n }), reference = _e[0], setReference = _e[1];\n if (!fnrf_zst.options.useWorkerManager)\n return null;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"New Worker\", description: \"Please provide a name and select a another worker as interpreter reference\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Name:\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"br\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"styledinput\", onChange: function (e) {\n setName(e.currentTarget.value);\n }, value: name })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Reference Worker:\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"br\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", { className: \"styleddropdown\", onChange: function (e) {\n var uuid = e.target.value;\n var name = e.target.selectedOptions[0].innerText;\n setReference({ name: name, uuid: uuid });\n }, value: reference.uuid },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"\" }, \"None\"),\n Object.keys(workersstate).map(function (workerid) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { className: \"\", key: workerid, value: workerid }, workersstate[workerid].name || workerid)); })),\n reference.uuid && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Copy Lib:\",\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: copyLib, onChange: function (e) {\n setCopyLib(e.currentTarget.checked);\n } })),\n copyLib && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Copy Nodespace\",\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: copyNS, onChange: function (e) {\n setCopyNS(e.currentTarget.checked);\n if (e.currentTarget.checked) {\n setCopyLib(true);\n }\n } }))))),\n name && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\", onClick: function () {\n var _a;\n (_a = fnrf_zst.workermanager) === null || _a === void 0 ? void 0 : _a.new_worker({\n name: name,\n reference: reference.uuid,\n copyLib: copyLib,\n copyNS: copyNS,\n });\n setOpen(false);\n } }, \"Create\"))))));\n};\nvar Statusbar = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var progress = fnrf_zst.progress_state();\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"statusbar\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", { className: \"statusbar-progressbar\", style: { width: Math.min(100, 100 * progress.progress) + \"%\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", { className: \"statusbar-message\" }, progress.message)));\n};\nvar WorkerMenu = function () {\n var _a;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workersstate = fnrf_zst.workers();\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isNewWorkerDialogOpen = _b[0], setNewWorkerDialogOpen = _b[1];\n var workerselectchange = function (workerid) {\n if (workerid === \"__select__\")\n return;\n if (!fnrf_zst.workers)\n return;\n if (!fnrf_zst.workermanager)\n return;\n if (!workersstate[workerid])\n return;\n if (!workersstate[workerid].active) {\n //create popup\n var ans = window.confirm(\"this is an inactive worker, selecting it will start it, continue?\");\n if (!ans)\n return;\n }\n fnrf_zst.workermanager.set_active(workerid);\n };\n var exportWorker = function () { return __awaiter(void 0, void 0, void 0, function () {\n var data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!fnrf_zst.worker)\n return [2 /*return*/];\n return [4 /*yield*/, fnrf_zst.worker.export()];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, \"worker.fnw\", \"application/zip\");\n return [2 /*return*/];\n }\n });\n }); };\n var updateWorker = function () { return __awaiter(void 0, void 0, void 0, function () {\n var ans, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!fnrf_zst.worker)\n return [2 /*return*/];\n ans = window.confirm(\"Updateing the worker might replace the current nodespace, continue?\");\n if (!ans)\n return [2 /*return*/];\n return [4 /*yield*/, (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.fileDialogToBase64)(\".fnw\")];\n case 1:\n data = _a.sent();\n fnrf_zst.worker.update_from_export(data);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"Worker\"),\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"headermenucontent\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Group, null,\n fnrf_zst.options.useWorkerManager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Sub, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.SubTrigger, { className: \"headermenuitem submenuitem\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n \"Select\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ChevronRight__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.SubContent, { className: \"headermenucontent\", sideOffset: 2, alignOffset: -5 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioGroup, { value: (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.uuid, onValueChange: function (value) {\n workerselectchange(value);\n } }, Object.keys(workersstate)\n .sort(function (a, b) {\n // First, sort by active status (active workers come first)\n if (workersstate[a].active &&\n !workersstate[b].active)\n return -1;\n if (!workersstate[a].active &&\n workersstate[b].active)\n return 1;\n // If both are active or both are inactive, sort by name or ID\n var nameA = workersstate[a].name || a;\n var nameB = workersstate[b].name || b;\n return nameA.localeCompare(nameB);\n })\n .map(function (workerid) {\n var _a;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (workersstate[workerid].active\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.uuid) }, workersstate[workerid].name || workerid));\n })))))),\n fnrf_zst.worker && fnrf_zst.worker.is_open && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n fnrf_zst.workermanager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () {\n var _a;\n if (!fnrf_zst.worker)\n return;\n if (!fnrf_zst.workermanager)\n return fnrf_zst.logger.error(\"no workermanager\");\n (_a = fnrf_zst.workermanager) === null || _a === void 0 ? void 0 : _a.restart_worker(fnrf_zst.worker.uuid);\n } }, \"Restart\")),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () {\n if (!fnrf_zst.worker)\n return;\n fnrf_zst.worker.stop();\n } }, \"Stop\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: exportWorker }, \"Export\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: updateWorker }, \"Update\"))),\n fnrf_zst.options.useWorkerManager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () { return setNewWorkerDialogOpen(true); } }, \"New\"))))))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NewWorkerDialog, { open: isNewWorkerDialogOpen, setOpen: setNewWorkerDialogOpen })));\n};\nvar NodeSpaceMenu = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var onNew = function () {\n var _a;\n var alert = window.confirm(\"Are you sure you want to start a new flow?\");\n if (alert) {\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.clear();\n }\n };\n var onSave = function () { return __awaiter(void 0, void 0, void 0, function () {\n var data, blob, url, a;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, ((_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.save())];\n case 1:\n data = _b.sent();\n if (!data)\n return [2 /*return*/];\n blob = new Blob([JSON.stringify(data)], {\n type: \"application/json\",\n });\n url = URL.createObjectURL(blob);\n a = document.createElement(\"a\");\n a.href = url;\n a.download = \"flow.json\";\n a.click();\n URL.revokeObjectURL(url);\n a.remove();\n return [2 /*return*/];\n }\n });\n }); };\n var onOpen = function () { return __awaiter(void 0, void 0, void 0, function () {\n var input;\n return __generator(this, function (_a) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var file, reader;\n var _a;\n return __generator(this, function (_b) {\n file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];\n if (!file)\n return [2 /*return*/];\n reader = new FileReader();\n reader.onload = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n contents = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;\n if (!contents)\n return [2 /*return*/];\n data = JSON.parse(contents);\n return [4 /*yield*/, ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.load(data))];\n case 1:\n _c.sent();\n return [2 /*return*/];\n }\n });\n }); };\n reader.readAsText(file);\n return [2 /*return*/];\n });\n }); };\n input.click();\n return [2 /*return*/];\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"Nodespace\"),\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"headermenucontent\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Group, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onNew }, \"New\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onSave }, \"Save\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onOpen }, \"Load\")))))));\n};\nvar FuncnodesHeader = function (_a) {\n var headerprops = __rest(_a, []);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workerstate = fnrf_zst.workerstate();\n // pserudouse headerprops\n if (Object.keys(headerprops).length > 0) {\n fnrf_zst.logger.debug(\"headerprops\", headerprops);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowheader\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Statusbar, null)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(WorkerMenu, null)),\n fnrf_zst.worker && workerstate.is_open && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeSpaceMenu, null)))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncnodesHeader);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/header/index.tsx?");
|
|
2958
2958
|
|
|
2959
2959
|
/***/ }),
|
|
2960
2960
|
|
|
@@ -3086,7 +3086,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3086
3086
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3087
3087
|
|
|
3088
3088
|
"use strict";
|
|
3089
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NodeName: () => (/* binding */ NodeName),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/icons-material/ExpandLess */ \"../node_modules/@mui/icons-material/ExpandLess.js\");\n/* harmony import */ var _mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/Lan */ \"../node_modules/@mui/icons-material/Lan.js\");\n/* harmony import */ var _mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/PlayCircleFilled */ \"../node_modules/@mui/icons-material/PlayCircleFilled.js\");\n/* harmony import */ var _node_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node.scss */ \"./src/frontend/node/node.scss\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .. */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _io__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./io */ \"./src/frontend/node/io/index.tsx\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _body_data_renderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./body_data_renderer */ \"./src/frontend/node/body_data_renderer.tsx\");\n/* harmony import */ var _datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _utils_progressbar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/progressbar */ \"./src/frontend/utils/progressbar.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NodeHeader = function (_a) {\n var node_data = _a.node_data;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var clicktrigger = function () {\n fnrf_zst.on_node_action({\n type: \"trigger\",\n from_remote: false,\n id: node_data.id,\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { fontSize: \"inherit\", className: \"triggerbutton\", onClick: clicktrigger }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { fontSize: \"inherit\", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _b = (_a = fnrf_zst.logger).info;\n _c = [\"nodestatus\"];\n return [4 /*yield*/, ((_d = fnrf_zst.worker) === null || _d === void 0 ? void 0 : _d.get_node_status(node_data.id))];\n case 1:\n _b.apply(_a, _c.concat([_e.sent()]));\n return [2 /*return*/];\n }\n });\n }); } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element nodeheader_title\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_title_text\" }, node_data.node_name)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { fontSize: \"inherit\" }))));\n};\nvar NodeDataRenderer = function (_a) {\n var _b, _c, _d, _e;\n var node_data = _a.node_data;\n var io = ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src)\n ? node_data.io[(_e = (_d = node_data.render_options) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.src]\n : undefined;\n var _f = io\n ? (0,_body_data_renderer__WEBPACK_IMPORTED_MODULE_5__.BodyDataRendererForIo)(io)\n : [undefined, undefined], pvhandle = _f[0], overlayhandle = _f[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodrag nodedatabody\" }, pvhandle && io && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { trigger: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: pvhandle, io: io })), onOpenChange: function (open) {\n if (open) {\n if (io === null || io === void 0 ? void 0 : io.try_get_full_value)\n io === null || io === void 0 ? void 0 : io.try_get_full_value();\n }\n } }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: overlayhandle, io: io })))));\n};\nvar NodeBody = function (_a) {\n var _b, _c;\n var node_data = _a.node_data;\n var inputs = Object.values(node_data.io).filter(function (io) { return io.is_input; });\n var outputs = Object.values(node_data.io).filter(function (io) { return !io.is_input; });\n if ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src) {\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodebody\" },\n outputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeOutput, { key: io.id, io: io });\n }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeDataRenderer, { node_data: node_data }),\n inputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeInput, { key: io.id, io: io });\n })));\n};\nvar NodeName = function (_a) {\n var node_data = _a.node_data;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(node_data.name), name = _b[0], setName = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setName(node_data.name);\n }, [node_data]);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var handleChange = function (event) {\n setName(event.target.value);\n };\n var finalSetName = function (e) {\n var new_name = e.target.value;\n fnrf_zst.on_node_action({\n type: \"update\",\n from_remote: false,\n id: node_data.id,\n node: { name: new_name },\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"nodename_input\", value: name, onChange: handleChange, onBlur: finalSetName }));\n};\nvar NodeFooter = function (_a) {\n var node_data = _a.node_data;\n var nodeprogess = node_data.progressState();\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodefooter\" },\n node_data.error && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeerror\" }, node_data.error),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_progressbar__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { timer: true, showText: true, total: nodeprogess.total, label: nodeprogess.label, current: nodeprogess.current })));\n};\n/**\n * A generic function to deeply merge two objects of type T.\n *\n * @param {T} target - The target object to be merged.\n * @param {DeepPartial<T>} source - The source object to merge into the target. All properties of this object are optional.\n *\n * @returns {Object} An object containing the merged object (new_obj) and a boolean indicating if there was a change (change).\n *\n * @throws {Type 'string' cannot be used to index type 'T'} This error is ignored using the @ts-ignore directive because we are dynamically accessing properties of a generic type T.\n */\nvar DefaultNode = function (_a) {\n var data = _a.data;\n // Use the NodeStore to get the data for the node.\n var storedata = data.UseNodeStore();\n var collapsed = storedata.frontend.collapsed || false;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), visualTrigger = _b[0], setVisualTrigger = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var timeoutId;\n // When in_trigger becomes true, set visualTrigger to true immediately\n if (storedata.in_trigger) {\n setVisualTrigger(true);\n }\n else if (visualTrigger) {\n // When in_trigger becomes false, wait for a minimum duration before setting visualTrigger to false\n timeoutId = setTimeout(function () { return setVisualTrigger(false); }, 200); // 50ms or any other duration you see fit\n }\n return function () { return clearTimeout(timeoutId); }; // Cleanup timeout on component unmount or state changes\n }, [storedata.in_trigger, visualTrigger]);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"innernode\" +\n (visualTrigger ? \" intrigger\" : \"\") +\n (storedata.error ? \" error\" : \"\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeHeader, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeName, { node_data: storedata }),\n collapsed ? null : react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeBody, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeFooter, { node_data: storedata }))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DefaultNode);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/node/node.tsx?");
|
|
3089
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NodeName: () => (/* binding */ NodeName),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/icons-material/ExpandLess */ \"../node_modules/@mui/icons-material/ExpandLess.js\");\n/* harmony import */ var _mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/Lan */ \"../node_modules/@mui/icons-material/Lan.js\");\n/* harmony import */ var _mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/PlayCircleFilled */ \"../node_modules/@mui/icons-material/PlayCircleFilled.js\");\n/* harmony import */ var _node_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node.scss */ \"./src/frontend/node/node.scss\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .. */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _io__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./io */ \"./src/frontend/node/io/index.tsx\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _body_data_renderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./body_data_renderer */ \"./src/frontend/node/body_data_renderer.tsx\");\n/* harmony import */ var _datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _utils_progressbar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/progressbar */ \"./src/frontend/utils/progressbar.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NodeHeader = function (_a) {\n var node_data = _a.node_data;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var clicktrigger = function () {\n fnrf_zst.on_node_action({\n type: \"trigger\",\n from_remote: false,\n id: node_data.id,\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { fontSize: \"inherit\", className: \"triggerbutton\", onClick: clicktrigger }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { fontSize: \"inherit\", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _b = (_a = fnrf_zst.logger).info;\n _c = [\"nodestatus\"];\n return [4 /*yield*/, ((_d = fnrf_zst.worker) === null || _d === void 0 ? void 0 : _d.get_node_status(node_data.id))];\n case 1:\n _b.apply(_a, _c.concat([_e.sent()]));\n return [2 /*return*/];\n }\n });\n }); } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element nodeheader_title\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_title_text\" }, node_data.node_name)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { fontSize: \"inherit\" }))));\n};\nvar NodeDataRenderer = function (_a) {\n var _b, _c, _d, _e;\n var node_data = _a.node_data;\n var io = ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src)\n ? node_data.io[(_e = (_d = node_data.render_options) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.src]\n : undefined;\n var _f = io\n ? (0,_body_data_renderer__WEBPACK_IMPORTED_MODULE_5__.BodyDataRendererForIo)(io)\n : [undefined, undefined], pvhandle = _f[0], overlayhandle = _f[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodrag nodedatabody\" }, pvhandle && io && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { trigger: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: pvhandle, io: io })), onOpenChange: function (open) {\n if (open) {\n if (io === null || io === void 0 ? void 0 : io.try_get_full_value)\n io === null || io === void 0 ? void 0 : io.try_get_full_value();\n }\n } }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: overlayhandle, io: io })))));\n};\nvar NodeBody = function (_a) {\n var _b, _c;\n var node_data = _a.node_data;\n var inputs = Object.values(node_data.io).filter(function (io) { return io.is_input; });\n var outputs = Object.values(node_data.io).filter(function (io) { return !io.is_input; });\n if ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src) {\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodebody\" },\n outputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeOutput, { key: io.id, io: io });\n }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeDataRenderer, { node_data: node_data }),\n inputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeInput, { key: io.id, io: io });\n })));\n};\nvar NodeName = function (_a) {\n var node_data = _a.node_data;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(node_data.name), name = _b[0], setName = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setName(node_data.name);\n }, [node_data]);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var handleChange = function (event) {\n setName(event.target.value);\n };\n var finalSetName = function (e) {\n var new_name = e.target.value;\n fnrf_zst.on_node_action({\n type: \"update\",\n from_remote: false,\n id: node_data.id,\n node: { name: new_name },\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"nodename_input\", value: name, onChange: handleChange, onBlur: finalSetName }));\n};\nvar NodeProgressBar = function (_a) {\n var node_data = _a.node_data;\n if (!node_data.progress)\n return null;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_progressbar__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { style: {\n height: node_data.progress.prefix === \"idle\" ? \"0px\" : undefined,\n }, state: node_data.progress, className: \"nodeprogress\" }));\n};\nvar NodeFooter = function (_a) {\n var node_data = _a.node_data;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodefooter\" },\n node_data.error && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeerror\" }, node_data.error),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeProgressBar, { node_data: node_data })));\n};\n/**\n * A generic function to deeply merge two objects of type T.\n *\n * @param {T} target - The target object to be merged.\n * @param {DeepPartial<T>} source - The source object to merge into the target. All properties of this object are optional.\n *\n * @returns {Object} An object containing the merged object (new_obj) and a boolean indicating if there was a change (change).\n *\n * @throws {Type 'string' cannot be used to index type 'T'} This error is ignored using the @ts-ignore directive because we are dynamically accessing properties of a generic type T.\n */\nvar DefaultNode = function (_a) {\n var data = _a.data;\n // Use the NodeStore to get the data for the node.\n var storedata = data.UseNodeStore();\n var collapsed = storedata.frontend.collapsed || false;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), visualTrigger = _b[0], setVisualTrigger = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var timeoutId;\n // When in_trigger becomes true, set visualTrigger to true immediately\n if (storedata.in_trigger) {\n setVisualTrigger(true);\n }\n else if (visualTrigger) {\n // When in_trigger becomes false, wait for a minimum duration before setting visualTrigger to false\n timeoutId = setTimeout(function () { return setVisualTrigger(false); }, 200); // 50ms or any other duration you see fit\n }\n return function () { return clearTimeout(timeoutId); }; // Cleanup timeout on component unmount or state changes\n }, [storedata.in_trigger, visualTrigger]);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"innernode\" +\n (visualTrigger ? \" intrigger\" : \"\") +\n (storedata.error ? \" error\" : \"\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeHeader, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeName, { node_data: storedata }),\n collapsed ? null : react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeBody, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeFooter, { node_data: storedata }))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DefaultNode);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/node/node.tsx?");
|
|
3090
3090
|
|
|
3091
3091
|
/***/ }),
|
|
3092
3092
|
|
|
@@ -3130,7 +3130,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3130
3130
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3131
3131
|
|
|
3132
3132
|
"use strict";
|
|
3133
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nvar
|
|
3133
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_autolayout_txt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/autolayout/txt */ \"./src/utils/autolayout/txt.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\nfunction formatMeter(options) {\n var _a, _b;\n if (options === void 0) { options = {\n n: 0,\n elapsed: 0,\n ascii: false,\n unit: \"it\",\n unit_scale: false,\n unit_divisor: 1000,\n }; }\n var total = (_a = options.total) !== null && _a !== void 0 ? _a : null;\n var n = options.n, unit_scale = options.unit_scale, elapsed = options.elapsed, \n // ascii,\n unit = options.unit, unit_divisor = options.unit_divisor, \n // ncols = undefined,\n _c = options.prefix, \n // ncols = undefined,\n prefix = _c === void 0 ? \"\" : _c, _d = options.rate, rate = _d === void 0 ? undefined : _d, \n // bar_format = undefined,\n _e = options.postfix, \n // bar_format = undefined,\n postfix = _e === void 0 ? null : _e, _f = options.initial, initial = _f === void 0 ? 0 : _f;\n if (total !== null && n >= total + 0.5) {\n total = null;\n }\n var scaledN = n;\n var scaledTotal = total;\n var scaledRate = rate;\n if (unit_scale && unit_scale !== true && unit_scale !== 1) {\n if (total !== null) {\n scaledTotal = total * unit_scale;\n }\n scaledN = n * unit_scale;\n if (rate !== undefined) {\n scaledRate = rate * unit_scale;\n }\n }\n var elapsedStr = formatInterval(elapsed);\n if (scaledRate === undefined && elapsed > 0) {\n scaledRate = (scaledN - initial) / elapsed;\n }\n var invRate = scaledRate ? 1 / scaledRate : undefined;\n var rateNoInvFmt = (scaledRate ? \"\".concat(scaledRate.toFixed(2)) : \"?\") + unit + \"/s\";\n var rateInvFmt = invRate ? \"\".concat(invRate.toFixed(2), \"s/\") + unit : \"?\";\n var rateFmt = invRate && invRate > 1 ? rateInvFmt : rateNoInvFmt;\n var nFmt = unit_scale\n ? formatSize(scaledN, unit_divisor)\n : scaledN.toString();\n var totalFmt = unit_scale && scaledTotal !== null\n ? formatSize(scaledTotal, unit_divisor)\n : (_b = scaledTotal === null || scaledTotal === void 0 ? void 0 : scaledTotal.toString()) !== null && _b !== void 0 ? _b : \"?\";\n var remaining = scaledRate && scaledTotal !== null\n ? (scaledTotal - scaledN) / scaledRate\n : 0;\n var remainingStr = scaledRate ? formatInterval(remaining) : \"?\";\n var lBar = prefix ? \"\".concat(prefix, \": \") : \"\";\n if (total !== null) {\n var percentage = (scaledN / total) * 100;\n var rBar = \" \".concat(nFmt, \"/\").concat(totalFmt, \" [\").concat(elapsedStr, \" < \").concat(remainingStr, \", \").concat(rateFmt).concat(postfix !== null && postfix !== void 0 ? postfix : \"\", \"]\");\n // const progressBar = createProgressBar(scaledN / total, ncols);\n return \"\".concat(lBar).concat(percentage.toFixed(0), \"%\").concat(rBar);\n }\n return \"\".concat(lBar).concat(nFmt).concat(unit, \" [\").concat(elapsedStr, \", \").concat(rateFmt).concat(postfix !== null && postfix !== void 0 ? postfix : \"\", \"]\");\n}\nfunction formatInterval(seconds) {\n var minutes = Math.floor(seconds / 60);\n var secs = Math.floor(seconds % 60);\n return \"\".concat(minutes, \":\").concat(secs.toString().padStart(2, \"0\"));\n}\nfunction formatSize(value, divisor) {\n var units = [\"\", \"K\", \"M\", \"G\", \"T\"];\n var unitIndex = 0;\n while (value >= divisor && unitIndex < units.length - 1) {\n value /= divisor;\n unitIndex++;\n }\n return \"\".concat(value.toFixed(2)).concat(units[unitIndex]);\n}\n// function createProgressBar(\n// fraction: number,\n// ncols: number | undefined\n// ): string {\n// const width = ncols ?? 10;\n// const filled = Math.round(fraction * width);\n// const empty = width - filled;\n// return \"#\".repeat(filled) + \"-\".repeat(empty);\n// }\nvar ProgressBar = function (_a) {\n var state = _a.state, _b = _a.className, className = _b === void 0 ? \"reacttqdm\" : _b, rest = __rest(_a, [\"state\", \"className\"]);\n var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var textcontainerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handleResize = function () {\n if (!containerRef.current || !textcontainerRef.current)\n return;\n (0,_utils_autolayout_txt__WEBPACK_IMPORTED_MODULE_1__.fitTextToContainer)(containerRef.current, textcontainerRef.current, {\n maxFontSize: 12,\n decrementFactor: 0.9,\n });\n };\n handleResize(); // Initial calculation\n window.addEventListener(\"resize\", handleResize);\n return function () {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n console.log(\"STATE\", state);\n var progressPercentage = state.total ? (state.n / state.total) * 100 : 0;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", __assign({ ref: containerRef, className: className }, rest),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: className + \"-bar\", style: {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\", // Adjust height if needed\n overflow: \"hidden\",\n } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: className + \"-progress\", style: {\n width: \"\".concat(progressPercentage, \"%\"),\n height: \"100%\",\n } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: className + \"-text\", ref: textcontainerRef }, formatMeter(state)))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProgressBar);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/utils/progressbar.tsx?");
|
|
3134
3134
|
|
|
3135
3135
|
/***/ }),
|
|
3136
3136
|
|
|
@@ -3163,7 +3163,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3163
3163
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3164
3164
|
|
|
3165
3165
|
"use strict";
|
|
3166
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _utils_debugger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/debugger */ \"./src/utils/debugger.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar FuncNodesWorker = /** @class */ (function () {\n function FuncNodesWorker(data) {\n var _this = this;\n this.uuid = data.uuid;\n this.on_error =\n data.on_error ||\n (function (err) {\n var _a;\n (_a = _this._zustand) === null || _a === void 0 ? void 0 : _a.logger.error(err);\n });\n this.messagePromises = new Map();\n this._local_nodeupdates = new Map();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 1000);\n this.state = (0,zustand__WEBPACK_IMPORTED_MODULE_2__.create)(function (_set, _get) { return ({\n is_open: true,\n }); });\n if (data.zustand)\n this.set_zustand(data.zustand);\n if (data.on_sync_complete) {\n this.on_sync_complete = data.on_sync_complete;\n }\n else {\n this.on_sync_complete = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); }); };\n }\n }\n FuncNodesWorker.prototype.set_zustand = function (zustand) {\n if (zustand === this._zustand)\n return;\n this._zustand = zustand;\n zustand.set_worker(this);\n this._zustand.auto_progress();\n this.stepwise_fullsync();\n };\n Object.defineProperty(FuncNodesWorker.prototype, \"is_open\", {\n get: function () {\n return this.state.getState().is_open;\n },\n set: function (v) {\n this.state.setState({ is_open: v });\n },\n enumerable: false,\n configurable: true\n });\n FuncNodesWorker.prototype.stepwise_fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this.sync_lib()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.sync_funcnodes_plugins()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.sync_nodespace()];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.sync_view_state()];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.on_sync_complete(this)];\n case 6:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_lib = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_library\",\n wait_for_response: true,\n retries: 2,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n lib: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_external_worker = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_worker_dependencies\",\n wait_for_response: true,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n external_worker: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_funcnodes_plugins = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_1, key, plugin, _a, _b, js, scripttag, _c, _d, css, styletag, binaryString, binaryLen, bytes, i, blob, blobUrl, module;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin_keys\",\n wait_for_response: true,\n kwargs: { type: \"react\" },\n })];\n case 1:\n resp = (_e.sent());\n _i = 0, resp_1 = resp;\n _e.label = 2;\n case 2:\n if (!(_i < resp_1.length)) return [3 /*break*/, 6];\n key = resp_1[_i];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin\",\n wait_for_response: true,\n kwargs: { key: key, type: \"react\" },\n })];\n case 3:\n plugin = _e.sent();\n if (plugin.js) {\n for (_a = 0, _b = plugin.js; _a < _b.length; _a++) {\n js = _b[_a];\n scripttag = document.createElement(\"script\");\n scripttag.text = atob(js);\n document.body.appendChild(scripttag);\n }\n }\n if (plugin.css) {\n for (_c = 0, _d = plugin.css; _c < _d.length; _c++) {\n css = _d[_c];\n styletag = document.createElement(\"style\");\n styletag.innerHTML = atob(css);\n document.head.appendChild(styletag);\n }\n }\n if (!(plugin.module !== undefined)) return [3 /*break*/, 5];\n binaryString = atob(plugin.module);\n binaryLen = binaryString.length;\n bytes = new Uint8Array(binaryLen);\n for (i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n blob = new Blob([bytes], { type: \"application/javascript\" });\n blobUrl = URL.createObjectURL(blob);\n return [4 /*yield*/, import(/* webpackIgnore: true */ blobUrl)];\n case 4:\n module = _e.sent();\n // gc the blob\n URL.revokeObjectURL(blobUrl);\n this._zustand.add_plugin(key, module.default);\n _e.label = 5;\n case 5:\n _i++;\n return [3 /*break*/, 2];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_view_state = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, nodeview, nodeid, nodev;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"view_state\",\n wait_for_response: true,\n })];\n case 1:\n resp = (_a.sent());\n if (resp.renderoptions)\n this._zustand.update_render_options(resp.renderoptions);\n nodeview = resp.nodes;\n if (nodeview) {\n for (nodeid in nodeview) {\n nodev = nodeview[nodeid];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n frontend: nodev,\n },\n id: nodeid,\n from_remote: true,\n });\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_nodespace = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_2, node, edges, _a, edges_1, edge;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_nodes\",\n kwargs: { with_frontend: true },\n wait_for_response: true,\n })];\n case 1:\n resp = (_b.sent());\n for (_i = 0, resp_2 = resp; _i < resp_2.length; _i++) {\n node = resp_2[_i];\n this._recieve_node_added(node);\n }\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_edges\",\n wait_for_response: true,\n })];\n case 2:\n edges = (_b.sent());\n for (_a = 0, edges_1 = edges; _a < edges_1.length; _a++) {\n edge = edges_1[_a];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, e_1, nodeview, _i, _a, node, _b, _c, edge;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n _d.label = 1;\n case 1:\n if (false) {}\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this._send_cmd({ cmd: \"full_state\" })];\n case 3:\n resp = (_d.sent());\n return [3 /*break*/, 6];\n case 4:\n e_1 = _d.sent();\n this._zustand.logger.error(\"Error in fullsync\", e_1);\n return [3 /*break*/, 5];\n case 5: return [3 /*break*/, 1];\n case 6:\n this._zustand.logger.debug(\"Full state\", resp);\n this._zustand.lib.libstate.getState().set({\n lib: resp.backend.lib,\n external_worker: resp.worker_dependencies,\n });\n if (resp.view.renderoptions)\n this._zustand.update_render_options(resp.view.renderoptions);\n nodeview = resp.view.nodes;\n for (_i = 0, _a = resp.backend.nodes; _i < _a.length; _i++) {\n node = _a[_i];\n if (nodeview[node.id] !== undefined) {\n node.frontend = nodeview[node.id];\n }\n this._recieve_node_added(node);\n }\n for (_b = 0, _c = resp.backend.edges; _b < _c.length; _b++) {\n edge = _c[_b];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_edge_added = function (src_nid, src_ioid, trg_nid, trg_ioid) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_edge_action(__assign({ type: \"add\", from_remote: true }, { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid }));\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.trigger_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"trigger_node\",\n kwargs: { nid: node_id },\n wait_for_response: false,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.add_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n resp = _a.sent();\n this._recieve_node_added(resp);\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_node_added = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"add\",\n node: data,\n id: data.id,\n from_remote: true,\n });\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid, _b = _a.replace, replace = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"add_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid, replace: replace },\n });\n };\n FuncNodesWorker.prototype.remove_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid;\n return this._send_cmd({\n cmd: \"remove_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid },\n });\n };\n FuncNodesWorker.prototype.add_external_worker = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var module = _b.module, cls_module = _b.cls_module, cls_name = _b.cls_name;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_external_worker\",\n kwargs: { module: module, cls_module: cls_module, cls_name: cls_name },\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_local_node_updates = function () {\n var _this = this;\n clearTimeout(this._nodeupdatetimer);\n this._local_nodeupdates.forEach(function (node, id) { return __awaiter(_this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_node\",\n kwargs: { nid: id, data: node },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n }); });\n this._local_nodeupdates.clear();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 200);\n };\n FuncNodesWorker.prototype.locally_update_node = function (action) {\n // Add the type to the parameter\n var currentstate = this._local_nodeupdates.get(action.id);\n if (currentstate) {\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_merge)(currentstate, action.node), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n this._local_nodeupdates.set(action.id, new_obj);\n }\n }\n else {\n this._local_nodeupdates.set(action.id, action.node);\n }\n if (action.immediate) {\n this.sync_local_node_updates();\n }\n };\n FuncNodesWorker.prototype.get_remote_node_state = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: ans.id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.set_io_value = function (_a) {\n var nid = _a.nid, ioid = _a.ioid, value = _a.value, _b = _a.set_default, set_default = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"set_io_value\",\n kwargs: { nid: nid, ioid: ioid, value: value, set_default: set_default },\n wait_for_response: true,\n });\n };\n FuncNodesWorker.prototype.clear = function () {\n return this._send_cmd({ cmd: \"clear\" });\n };\n FuncNodesWorker.prototype.save = function () {\n return this._send_cmd({ cmd: \"save\", wait_for_response: true });\n };\n FuncNodesWorker.prototype.load = function (data) {\n var _this = this;\n return this._send_cmd({\n cmd: \"load_data\",\n kwargs: { data: data },\n wait_for_response: true,\n }).then(function () {\n _this.stepwise_fullsync();\n });\n };\n FuncNodesWorker.prototype.get_io_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n value: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_ios_values = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res, mappedres, ioid;\n var nid = _b.nid;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_ios_values\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _c.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n mappedres = {};\n for (ioid in res) {\n mappedres[ioid] = { value: res[ioid] };\n }\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: mappedres,\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype._send_cmd = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var msg, wait_for_response_callback;\n var _this = this;\n var cmd = _b.cmd, kwargs = _b.kwargs, _c = _b.wait_for_response, wait_for_response = _c === void 0 ? true : _c, _d = _b.response_timeout, response_timeout = _d === void 0 ? 5000 : _d, _e = _b.retries, retries = _e === void 0 ? 2 : _e;\n return __generator(this, function (_f) {\n msg = {\n type: \"cmd\",\n cmd: cmd,\n kwargs: kwargs || {},\n };\n if (wait_for_response) {\n if (retries < 0)\n retries = 0;\n wait_for_response_callback = function () { return __awaiter(_this, void 0, void 0, function () {\n var response, _loop_1, this_1, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _loop_1 = function () {\n var msid, promise, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n msid = msg.id || (0,uuid__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n msg.id = msid;\n promise = new Promise(function (resolve, reject) {\n var timeout = setTimeout(function () {\n reject(\"Timeout@wait_for_response for \" + cmd);\n }, response_timeout);\n _this.messagePromises.set(msid, {\n resolve: function (data) {\n clearTimeout(timeout);\n resolve(data);\n _this.messagePromises.delete(msid);\n },\n reject: function (err) {\n clearTimeout(timeout);\n reject(err);\n _this.messagePromises.delete(msid);\n },\n });\n });\n return [4 /*yield*/, this_1.send(msg)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, promise];\n case 3:\n response = _b.sent();\n return [2 /*return*/, \"break\"];\n case 4:\n e_2 = _b.sent();\n if (retries === 0)\n throw e_2;\n retries -= 1;\n return [2 /*return*/, \"continue\"];\n case 5: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _a.label = 1;\n case 1:\n if (!(retries >= 0)) return [3 /*break*/, 3];\n return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (state_1 === \"break\")\n return [3 /*break*/, 3];\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/, response];\n }\n });\n }); };\n return [2 /*return*/, wait_for_response_callback()];\n }\n return [2 /*return*/, this.send(msg)];\n });\n });\n };\n FuncNodesWorker.prototype.send = function (_data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // this is the abstract method that should be implemented by subclasses\n throw new Error(\"Not implemented\");\n });\n });\n };\n FuncNodesWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n return __generator(this, function (_c) {\n throw new Error(\"handle_large_message_hint not implemented \");\n });\n });\n };\n FuncNodesWorker.prototype.recieve_workerevent = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _c = event;\n switch (_c) {\n case \"worker_error\": return [3 /*break*/, 1];\n case \"update_worker_dependencies\": return [3 /*break*/, 2];\n case \"lib_update\": return [3 /*break*/, 3];\n case \"fullsync\": return [3 /*break*/, 5];\n case \"external_worker_update\": return [3 /*break*/, 7];\n }\n return [3 /*break*/, 10];\n case 1:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.logger.error(data.error)];\n case 2:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n external_worker: data.worker_dependencies,\n })];\n case 3: return [4 /*yield*/, this.sync_lib()];\n case 4:\n _d.sent();\n return [2 /*return*/];\n case 5: return [4 /*yield*/, this.stepwise_fullsync()];\n case 6:\n _d.sent();\n return [2 /*return*/];\n case 7: return [4 /*yield*/, this.sync_lib()];\n case 8:\n _d.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 9:\n _d.sent();\n return [2 /*return*/];\n case 10:\n console.warn(\"Unhandled worker event\", event, data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve_nodespace_event = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c, _d;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_e) {\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object_size)(data, \"Data size for event \" + event, this._zustand);\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object)(data, this._zustand);\n switch (event) {\n case \"after_set_value\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_c = {},\n _c[data.io] = {\n value: data.result,\n },\n _c),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"after_update_value_options\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_d = {},\n _d[data.io] = {\n value_options: data.result,\n },\n _d),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerstart\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: true,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerdone\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: false,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"node_trigger_error\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"error\",\n errortype: \"trigger\",\n error: data.error,\n id: data.node,\n from_remote: true,\n })];\n case \"node_removed\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"delete\",\n id: data.node,\n from_remote: true,\n })];\n case \"node_added\":\n return [2 /*return*/, this._recieve_node_added(data.node)];\n case \"after_disconnect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_unforward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_connect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_forward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_add_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"after_remove_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n default:\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n }\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var promise, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = data.type;\n switch (_a) {\n case \"nsevent\": return [3 /*break*/, 1];\n case \"result\": return [3 /*break*/, 3];\n case \"error\": return [3 /*break*/, 4];\n case \"progress\": return [3 /*break*/, 5];\n case \"workerevent\": return [3 /*break*/, 6];\n case \"large_message\": return [3 /*break*/, 8];\n }\n return [3 /*break*/, 10];\n case 1: return [4 /*yield*/, this.recieve_nodespace_event(data)];\n case 2: return [2 /*return*/, _b.sent()];\n case 3:\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.resolve(data.result)];\n }\n return [3 /*break*/, 11];\n case 4:\n this.on_error(data.tb + \"\\n\" + data.error);\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.reject(data.error)];\n }\n return [3 /*break*/, 11];\n case 5:\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.set_progress(data);\n return [3 /*break*/, 11];\n case 6: return [4 /*yield*/, this.recieve_workerevent(data)];\n case 7: return [2 /*return*/, _b.sent()];\n case 8: return [4 /*yield*/, this.handle_large_message_hint(data)];\n case 9: return [2 /*return*/, _b.sent()];\n case 10:\n console.warn(\"Unhandled message\", data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.disconnect = function () { };\n FuncNodesWorker.prototype.onclose = function () {\n this.is_open = false;\n if (!this._zustand)\n return;\n this._zustand.auto_progress();\n };\n FuncNodesWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); });\n };\n FuncNodesWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oldonclose;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({ cmd: \"stop_worker\", wait_for_response: false })];\n case 1:\n _a.sent();\n oldonclose = this.onclose.bind(this);\n this.onclose = function () {\n oldonclose();\n if (!_this._zustand)\n return;\n if (_this._zustand.worker === _this) {\n _this._zustand.clear_all();\n }\n _this.onclose = oldonclose;\n };\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_io_full_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_full_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n fullvalue: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_io_options = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid, options = _b.options;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_io_options\",\n kwargs: __assign({ nid: nid, ioid: ioid }, options),\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = __assign({}, options),\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_node_status = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_available_modules = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_available_modules\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_external_worker = function (worker_id, class_id, data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_external_worker\",\n kwargs: __assign({ worker_id: worker_id, class_id: class_id }, data),\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_external_worker = function (worker_id, class_id) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_external_worker\",\n kwargs: { worker_id: worker_id, class_id: class_id },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.export = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"export_worker\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_from_export = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_from_export\",\n kwargs: { data: data },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n this.stepwise_fullsync();\n return [2 /*return*/, res];\n }\n });\n });\n };\n return FuncNodesWorker;\n}());\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncNodesWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/funcnodesworker.ts?");
|
|
3166
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _utils_debugger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/debugger */ \"./src/utils/debugger.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar FuncNodesWorker = /** @class */ (function () {\n function FuncNodesWorker(data) {\n var _this = this;\n this.uuid = data.uuid;\n this.on_error =\n data.on_error ||\n (function (err) {\n var _a;\n (_a = _this._zustand) === null || _a === void 0 ? void 0 : _a.logger.error(err);\n });\n this.messagePromises = new Map();\n this._local_nodeupdates = new Map();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 1000);\n this.state = (0,zustand__WEBPACK_IMPORTED_MODULE_2__.create)(function (_set, _get) { return ({\n is_open: true,\n }); });\n if (data.zustand)\n this.set_zustand(data.zustand);\n if (data.on_sync_complete) {\n this.on_sync_complete = data.on_sync_complete;\n }\n else {\n this.on_sync_complete = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); }); };\n }\n }\n FuncNodesWorker.prototype.set_zustand = function (zustand) {\n if (zustand === this._zustand)\n return;\n this._zustand = zustand;\n zustand.set_worker(this);\n this._zustand.auto_progress();\n this.stepwise_fullsync();\n };\n Object.defineProperty(FuncNodesWorker.prototype, \"is_open\", {\n get: function () {\n return this.state.getState().is_open;\n },\n set: function (v) {\n this.state.setState({ is_open: v });\n },\n enumerable: false,\n configurable: true\n });\n FuncNodesWorker.prototype.stepwise_fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this.sync_lib()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.sync_funcnodes_plugins()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.sync_nodespace()];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.sync_view_state()];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.on_sync_complete(this)];\n case 6:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_lib = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_library\",\n wait_for_response: true,\n retries: 2,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n lib: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_external_worker = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_worker_dependencies\",\n wait_for_response: true,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n external_worker: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_funcnodes_plugins = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_1, key, plugin, _a, _b, js, scripttag, _c, _d, css, styletag, binaryString, binaryLen, bytes, i, blob, blobUrl, module;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin_keys\",\n wait_for_response: true,\n kwargs: { type: \"react\" },\n })];\n case 1:\n resp = (_e.sent());\n _i = 0, resp_1 = resp;\n _e.label = 2;\n case 2:\n if (!(_i < resp_1.length)) return [3 /*break*/, 6];\n key = resp_1[_i];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin\",\n wait_for_response: true,\n kwargs: { key: key, type: \"react\" },\n })];\n case 3:\n plugin = _e.sent();\n if (plugin.js) {\n for (_a = 0, _b = plugin.js; _a < _b.length; _a++) {\n js = _b[_a];\n scripttag = document.createElement(\"script\");\n scripttag.text = atob(js);\n document.body.appendChild(scripttag);\n }\n }\n if (plugin.css) {\n for (_c = 0, _d = plugin.css; _c < _d.length; _c++) {\n css = _d[_c];\n styletag = document.createElement(\"style\");\n styletag.innerHTML = atob(css);\n document.head.appendChild(styletag);\n }\n }\n if (!(plugin.module !== undefined)) return [3 /*break*/, 5];\n binaryString = atob(plugin.module);\n binaryLen = binaryString.length;\n bytes = new Uint8Array(binaryLen);\n for (i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n blob = new Blob([bytes], { type: \"application/javascript\" });\n blobUrl = URL.createObjectURL(blob);\n return [4 /*yield*/, import(/* webpackIgnore: true */ blobUrl)];\n case 4:\n module = _e.sent();\n // gc the blob\n URL.revokeObjectURL(blobUrl);\n this._zustand.add_plugin(key, module.default);\n _e.label = 5;\n case 5:\n _i++;\n return [3 /*break*/, 2];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_view_state = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, nodeview, nodeid, nodev;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"view_state\",\n wait_for_response: true,\n })];\n case 1:\n resp = (_a.sent());\n if (resp.renderoptions)\n this._zustand.update_render_options(resp.renderoptions);\n nodeview = resp.nodes;\n if (nodeview) {\n for (nodeid in nodeview) {\n nodev = nodeview[nodeid];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n frontend: nodev,\n },\n id: nodeid,\n from_remote: true,\n });\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_nodespace = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_2, node, edges, _a, edges_1, edge;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_nodes\",\n kwargs: { with_frontend: true },\n wait_for_response: true,\n })];\n case 1:\n resp = (_b.sent());\n for (_i = 0, resp_2 = resp; _i < resp_2.length; _i++) {\n node = resp_2[_i];\n this._recieve_node_added(node);\n }\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_edges\",\n wait_for_response: true,\n })];\n case 2:\n edges = (_b.sent());\n for (_a = 0, edges_1 = edges; _a < edges_1.length; _a++) {\n edge = edges_1[_a];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, e_1, nodeview, _i, _a, node, _b, _c, edge;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n _d.label = 1;\n case 1:\n if (false) {}\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this._send_cmd({ cmd: \"full_state\" })];\n case 3:\n resp = (_d.sent());\n return [3 /*break*/, 6];\n case 4:\n e_1 = _d.sent();\n this._zustand.logger.error(\"Error in fullsync\", e_1);\n return [3 /*break*/, 5];\n case 5: return [3 /*break*/, 1];\n case 6:\n this._zustand.logger.debug(\"Full state\", resp);\n this._zustand.lib.libstate.getState().set({\n lib: resp.backend.lib,\n external_worker: resp.worker_dependencies,\n });\n if (resp.view.renderoptions)\n this._zustand.update_render_options(resp.view.renderoptions);\n nodeview = resp.view.nodes;\n for (_i = 0, _a = resp.backend.nodes; _i < _a.length; _i++) {\n node = _a[_i];\n if (nodeview[node.id] !== undefined) {\n node.frontend = nodeview[node.id];\n }\n this._recieve_node_added(node);\n }\n for (_b = 0, _c = resp.backend.edges; _b < _c.length; _b++) {\n edge = _c[_b];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_edge_added = function (src_nid, src_ioid, trg_nid, trg_ioid) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_edge_action(__assign({ type: \"add\", from_remote: true }, { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid }));\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.trigger_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"trigger_node\",\n kwargs: { nid: node_id },\n wait_for_response: false,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.add_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n resp = _a.sent();\n this._recieve_node_added(resp);\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_node_added = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"add\",\n node: data,\n id: data.id,\n from_remote: true,\n });\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid, _b = _a.replace, replace = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"add_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid, replace: replace },\n });\n };\n FuncNodesWorker.prototype.remove_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid;\n return this._send_cmd({\n cmd: \"remove_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid },\n });\n };\n FuncNodesWorker.prototype.add_external_worker = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var module = _b.module, cls_module = _b.cls_module, cls_name = _b.cls_name;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_external_worker\",\n kwargs: { module: module, cls_module: cls_module, cls_name: cls_name },\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_local_node_updates = function () {\n var _this = this;\n clearTimeout(this._nodeupdatetimer);\n this._local_nodeupdates.forEach(function (node, id) { return __awaiter(_this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_node\",\n kwargs: { nid: id, data: node },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n }); });\n this._local_nodeupdates.clear();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 200);\n };\n FuncNodesWorker.prototype.locally_update_node = function (action) {\n // Add the type to the parameter\n var currentstate = this._local_nodeupdates.get(action.id);\n if (currentstate) {\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_merge)(currentstate, action.node), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n this._local_nodeupdates.set(action.id, new_obj);\n }\n }\n else {\n this._local_nodeupdates.set(action.id, action.node);\n }\n if (action.immediate) {\n this.sync_local_node_updates();\n }\n };\n FuncNodesWorker.prototype.get_remote_node_state = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: ans.id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.set_io_value = function (_a) {\n var nid = _a.nid, ioid = _a.ioid, value = _a.value, _b = _a.set_default, set_default = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"set_io_value\",\n kwargs: { nid: nid, ioid: ioid, value: value, set_default: set_default },\n wait_for_response: true,\n });\n };\n FuncNodesWorker.prototype.clear = function () {\n return this._send_cmd({ cmd: \"clear\" });\n };\n FuncNodesWorker.prototype.save = function () {\n return this._send_cmd({ cmd: \"save\", wait_for_response: true });\n };\n FuncNodesWorker.prototype.load = function (data) {\n var _this = this;\n return this._send_cmd({\n cmd: \"load_data\",\n kwargs: { data: data },\n wait_for_response: true,\n }).then(function () {\n _this.stepwise_fullsync();\n });\n };\n FuncNodesWorker.prototype.get_io_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n value: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_ios_values = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res, mappedres, ioid;\n var nid = _b.nid;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_ios_values\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _c.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n mappedres = {};\n for (ioid in res) {\n mappedres[ioid] = { value: res[ioid] };\n }\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: mappedres,\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype._send_cmd = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var msg, wait_for_response_callback;\n var _this = this;\n var cmd = _b.cmd, kwargs = _b.kwargs, _c = _b.wait_for_response, wait_for_response = _c === void 0 ? true : _c, _d = _b.response_timeout, response_timeout = _d === void 0 ? 5000 : _d, _e = _b.retries, retries = _e === void 0 ? 2 : _e;\n return __generator(this, function (_f) {\n msg = {\n type: \"cmd\",\n cmd: cmd,\n kwargs: kwargs || {},\n };\n if (wait_for_response) {\n if (retries < 0)\n retries = 0;\n wait_for_response_callback = function () { return __awaiter(_this, void 0, void 0, function () {\n var response, _loop_1, this_1, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _loop_1 = function () {\n var msid, promise, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n msid = msg.id || (0,uuid__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n msg.id = msid;\n promise = new Promise(function (resolve, reject) {\n var timeout = setTimeout(function () {\n reject(\"Timeout@wait_for_response for \" + cmd);\n }, response_timeout);\n _this.messagePromises.set(msid, {\n resolve: function (data) {\n clearTimeout(timeout);\n resolve(data);\n _this.messagePromises.delete(msid);\n },\n reject: function (err) {\n clearTimeout(timeout);\n reject(err);\n _this.messagePromises.delete(msid);\n },\n });\n });\n return [4 /*yield*/, this_1.send(msg)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, promise];\n case 3:\n response = _b.sent();\n return [2 /*return*/, \"break\"];\n case 4:\n e_2 = _b.sent();\n if (retries === 0)\n throw e_2;\n retries -= 1;\n return [2 /*return*/, \"continue\"];\n case 5: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _a.label = 1;\n case 1:\n if (!(retries >= 0)) return [3 /*break*/, 3];\n return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (state_1 === \"break\")\n return [3 /*break*/, 3];\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/, response];\n }\n });\n }); };\n return [2 /*return*/, wait_for_response_callback()];\n }\n return [2 /*return*/, this.send(msg)];\n });\n });\n };\n FuncNodesWorker.prototype.send = function (_data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // this is the abstract method that should be implemented by subclasses\n throw new Error(\"Not implemented\");\n });\n });\n };\n FuncNodesWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n return __generator(this, function (_c) {\n throw new Error(\"handle_large_message_hint not implemented \");\n });\n });\n };\n FuncNodesWorker.prototype.recieve_workerevent = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _c = event;\n switch (_c) {\n case \"worker_error\": return [3 /*break*/, 1];\n case \"update_worker_dependencies\": return [3 /*break*/, 2];\n case \"lib_update\": return [3 /*break*/, 3];\n case \"fullsync\": return [3 /*break*/, 5];\n case \"external_worker_update\": return [3 /*break*/, 7];\n }\n return [3 /*break*/, 10];\n case 1:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.logger.error(data.error)];\n case 2:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n external_worker: data.worker_dependencies,\n })];\n case 3: return [4 /*yield*/, this.sync_lib()];\n case 4:\n _d.sent();\n return [2 /*return*/];\n case 5: return [4 /*yield*/, this.stepwise_fullsync()];\n case 6:\n _d.sent();\n return [2 /*return*/];\n case 7: return [4 /*yield*/, this.sync_lib()];\n case 8:\n _d.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 9:\n _d.sent();\n return [2 /*return*/];\n case 10:\n console.warn(\"Unhandled worker event\", event, data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve_nodespace_event = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c, _d;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_e) {\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object_size)(data, \"Data size for event \" + event, this._zustand);\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object)(data, this._zustand);\n switch (event) {\n case \"after_set_value\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_c = {},\n _c[data.io] = {\n value: data.result,\n },\n _c),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"after_update_value_options\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_d = {},\n _d[data.io] = {\n value_options: data.result,\n },\n _d),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerstart\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: true,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerdone\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: false,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"node_trigger_error\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"error\",\n errortype: \"trigger\",\n error: data.error,\n id: data.node,\n from_remote: true,\n })];\n case \"node_removed\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"delete\",\n id: data.node,\n from_remote: true,\n })];\n case \"node_added\":\n return [2 /*return*/, this._recieve_node_added(data.node)];\n case \"after_disconnect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_unforward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_connect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_forward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_add_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"after_remove_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"progress\":\n if (!this._zustand)\n return [2 /*return*/];\n if (data.node) {\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n progress: data.info,\n },\n id: data.node,\n from_remote: true,\n })];\n }\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n default:\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n }\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var promise, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = data.type;\n switch (_a) {\n case \"nsevent\": return [3 /*break*/, 1];\n case \"result\": return [3 /*break*/, 3];\n case \"error\": return [3 /*break*/, 4];\n case \"progress\": return [3 /*break*/, 5];\n case \"workerevent\": return [3 /*break*/, 6];\n case \"large_message\": return [3 /*break*/, 8];\n }\n return [3 /*break*/, 10];\n case 1: return [4 /*yield*/, this.recieve_nodespace_event(data)];\n case 2: return [2 /*return*/, _b.sent()];\n case 3:\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.resolve(data.result)];\n }\n return [3 /*break*/, 11];\n case 4:\n this.on_error(data.tb + \"\\n\" + data.error);\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.reject(data.error)];\n }\n return [3 /*break*/, 11];\n case 5:\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.set_progress(data);\n return [3 /*break*/, 11];\n case 6: return [4 /*yield*/, this.recieve_workerevent(data)];\n case 7: return [2 /*return*/, _b.sent()];\n case 8: return [4 /*yield*/, this.handle_large_message_hint(data)];\n case 9: return [2 /*return*/, _b.sent()];\n case 10:\n console.warn(\"Unhandled message\", data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.disconnect = function () { };\n FuncNodesWorker.prototype.onclose = function () {\n this.is_open = false;\n if (!this._zustand)\n return;\n this._zustand.auto_progress();\n };\n FuncNodesWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); });\n };\n FuncNodesWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oldonclose;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({ cmd: \"stop_worker\", wait_for_response: false })];\n case 1:\n _a.sent();\n oldonclose = this.onclose.bind(this);\n this.onclose = function () {\n oldonclose();\n if (!_this._zustand)\n return;\n if (_this._zustand.worker === _this) {\n _this._zustand.clear_all();\n }\n _this.onclose = oldonclose;\n };\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_io_full_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_full_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n fullvalue: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_io_options = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid, options = _b.options;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_io_options\",\n kwargs: __assign({ nid: nid, ioid: ioid }, options),\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = __assign({}, options),\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_node_status = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_available_modules = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_available_modules\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_external_worker = function (worker_id, class_id, data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_external_worker\",\n kwargs: __assign({ worker_id: worker_id, class_id: class_id }, data),\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_external_worker = function (worker_id, class_id) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_external_worker\",\n kwargs: { worker_id: worker_id, class_id: class_id },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.export = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"export_worker\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_from_export = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_from_export\",\n kwargs: { data: data },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n this.stepwise_fullsync();\n return [2 /*return*/, res];\n }\n });\n });\n };\n return FuncNodesWorker;\n}());\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncNodesWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/funcnodesworker.ts?");
|
|
3167
3167
|
|
|
3168
3168
|
/***/ }),
|
|
3169
3169
|
|
|
@@ -3185,7 +3185,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3185
3185
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3186
3186
|
|
|
3187
3187
|
"use strict";
|
|
3188
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _funcnodesworker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./funcnodesworker */ \"./src/funcnodes/funcnodesworker.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\nvar WebSocketWorker = /** @class */ (function (_super) {\n __extends(WebSocketWorker, _super);\n function WebSocketWorker(data) {\n var _this = _super.call(this, data) || this;\n _this._websocket = null;\n _this.reconnectAttempts = 0;\n _this.maxReconnectAttempts = 999;\n _this.initialTimeout = 200; // Initial reconnect delay in ms\n _this.maxTimeout = 5000; // Maximum reconnect delay\n _this._reconnect = true;\n _this._url = data.url;\n _this.connect();\n if (_this._zustand)\n _this._zustand.auto_progress();\n return _this;\n }\n WebSocketWorker.prototype.connect = function () {\n var _this = this;\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Connecting to websocket\");\n this.is_open = false;\n this._websocket = new WebSocket(this._url);\n this._websocket.onopen = function () {\n _this.onopen();\n };\n this._websocket.onclose = function () {\n _this.onclose();\n };\n this._websocket.onerror = function () {\n _this.on_ws_error();\n };\n this._websocket.onmessage = function (event) {\n _this.onmessage(event.data);\n };\n };\n WebSocketWorker.prototype.calculateReconnectTimeout = function () {\n // Increase timeout exponentially, capped at maxTimeout\n var timeout = Math.min(this.initialTimeout * Math.pow(2, this.reconnectAttempts), this.maxTimeout);\n return timeout;\n };\n WebSocketWorker.prototype.auto_reconnect = function () {\n var _this = this;\n var _a, _b;\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n var timeout = this.calculateReconnectTimeout();\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Attempting to reconnect in \".concat(timeout, \" ms\"));\n setTimeout(function () {\n if (_this._websocket) {\n if (_this._websocket.readyState === WebSocket.OPEN) {\n return;\n }\n }\n _this.reconnectAttempts++;\n _this.connect();\n }, timeout);\n }\n else {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.warn(\"Maximum reconnect attempts reached. Giving up.\");\n }\n };\n WebSocketWorker.prototype.onmessage = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n json = JSON.parse(data);\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.debug(\"Recieved data of length: \".concat(data.length, \" and data\\\"\"), json);\n return [4 /*yield*/, this.recieve(json)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var url, resp, json;\n var msg_id = _b.msg_id;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = \"http\" + this._url.substring(2);\n //add /msg_id to url to get the large message (url might end with /)\n if (url[url.length - 1] !== \"/\") {\n url += \"/\";\n }\n url += \"message/\" + msg_id;\n return [4 /*yield*/, fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Access-Control-Allow-Origin\": \"*\",\n },\n })];\n case 1:\n resp = _c.sent();\n return [4 /*yield*/, resp.json()];\n case 2:\n json = _c.sent();\n this.recieve(json);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.onopen = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket opened\");\n this.is_open = true;\n if (this._zustand)\n this._zustand.auto_progress();\n this.reconnectAttempts = 0;\n this.stepwise_fullsync();\n };\n WebSocketWorker.prototype.onclose = function () {\n var _a, _b;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket closed\");\n _super.prototype.onclose.call(this);\n if (this._reconnect) {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Websocket closed,reconnecting\");\n this.auto_reconnect(); // Attempt to reconnect\n }\n };\n WebSocketWorker.prototype.on_ws_error = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket error\");\n if (this._websocket) {\n this._websocket.close(); // Ensure the connection is closed before attempting to reconnect\n }\n else {\n this.auto_reconnect();\n }\n };\n WebSocketWorker.prototype.send = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b;\n return __generator(this, function (_c) {\n if (!this._websocket || this._websocket.readyState !== WebSocket.OPEN) {\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket not connected\");\n return [2 /*return*/];\n }\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.debug(\"Sending data\", data);\n this._websocket.send(JSON.stringify(data));\n return [2 /*return*/];\n });\n });\n };\n WebSocketWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.stop.call(this)];\n case 1:\n _a.sent();\n this._reconnect = false;\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.close = function () {\n if (this._websocket)\n this._websocket.close();\n };\n WebSocketWorker.prototype.disconnect = function () {\n _super.prototype.disconnect.call(this);\n this._reconnect = false;\n this.close();\n };\n WebSocketWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, _super.prototype.reconnect.call(this)];\n case 1:\n _b.sent();\n this._reconnect = true;\n if (!this._websocket) return [3 /*break*/, 4];\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Reconnecting\");\n if (!(this._websocket.readyState === WebSocket.OPEN ||\n this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 4];\n if (!(this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 3];\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n if (_this._websocket === null)\n return;\n var timeout = setTimeout(function () {\n reject(\"Timeout@reconnect\");\n }, 2000);\n _this._websocket.addEventListener(\"open\", function () {\n clearTimeout(timeout);\n resolve(null);\n }, { once: true });\n if (_this._websocket.readyState === WebSocket.OPEN) {\n clearTimeout(timeout);\n resolve(null);\n }\n })];\n case 2:\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n _b.sent();\n _b.label = 3;\n case 3:\n if (this._websocket.readyState === WebSocket.OPEN) {\n this.stepwise_fullsync();\n return [2 /*return*/];\n }\n _b.label = 4;\n case 4:\n this.connect();\n return [2 /*return*/];\n }\n });\n });\n };\n return WebSocketWorker;\n}(_funcnodesworker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WebSocketWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/websocketworker.ts?");
|
|
3188
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _funcnodesworker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./funcnodesworker */ \"./src/funcnodes/funcnodesworker.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\nvar WebSocketWorker = /** @class */ (function (_super) {\n __extends(WebSocketWorker, _super);\n function WebSocketWorker(data) {\n var _this = _super.call(this, data) || this;\n _this._websocket = null;\n _this.reconnectAttempts = 0;\n _this.maxReconnectAttempts = 999;\n _this.initialTimeout = 200; // Initial reconnect delay in ms\n _this.maxTimeout = 5000; // Maximum reconnect delay\n _this._reconnect = true;\n _this._url = data.url;\n _this.connect();\n if (_this._zustand)\n _this._zustand.auto_progress();\n return _this;\n }\n WebSocketWorker.prototype.connect = function () {\n var _this = this;\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Connecting to websocket\");\n this.is_open = false;\n this._websocket = new WebSocket(this._url);\n this._websocket.onopen = function () {\n _this.onopen();\n };\n this._websocket.onclose = function () {\n _this.onclose();\n };\n this._websocket.onerror = function () {\n _this.on_ws_error();\n };\n this._websocket.onmessage = function (event) {\n _this.onmessage(event.data);\n };\n };\n WebSocketWorker.prototype.calculateReconnectTimeout = function () {\n // Increase timeout exponentially, capped at maxTimeout\n var timeout = Math.min(this.initialTimeout * Math.pow(2, this.reconnectAttempts), this.maxTimeout);\n return timeout;\n };\n WebSocketWorker.prototype.auto_reconnect = function () {\n var _this = this;\n var _a, _b;\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n var timeout = this.calculateReconnectTimeout();\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Attempting to reconnect in \".concat(timeout, \" ms\"));\n setTimeout(function () {\n if (_this._websocket) {\n if (_this._websocket.readyState === WebSocket.OPEN) {\n return;\n }\n }\n _this.reconnectAttempts++;\n _this.connect();\n }, timeout);\n }\n else {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.warn(\"Maximum reconnect attempts reached. Giving up.\");\n }\n };\n WebSocketWorker.prototype.onmessage = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n json = JSON.parse(data);\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.debug(\"Recieved data of length: \".concat(data.length, \" and data\\\"\"), json);\n return [4 /*yield*/, this.recieve(json)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var url, resp, json;\n var msg_id = _b.msg_id;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = \"http\" + this._url.substring(2);\n //add /msg_id to url to get the large message (url might end with /)\n if (url[url.length - 1] !== \"/\") {\n url += \"/\";\n }\n url += \"message/\" + msg_id;\n return [4 /*yield*/, fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Access-Control-Allow-Origin\": \"*\",\n },\n })];\n case 1:\n resp = _c.sent();\n return [4 /*yield*/, resp.json()];\n case 2:\n json = _c.sent();\n this.recieve(json);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.onopen = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket opened\");\n this.is_open = true;\n if (this._zustand)\n this._zustand.auto_progress();\n this.reconnectAttempts = 0;\n this.stepwise_fullsync();\n };\n WebSocketWorker.prototype.onclose = function () {\n var _a, _b;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket closed\");\n _super.prototype.onclose.call(this);\n if (this._reconnect) {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Websocket closed,reconnecting\");\n this.auto_reconnect(); // Attempt to reconnect\n }\n };\n WebSocketWorker.prototype.on_ws_error = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket error\");\n if (this._websocket) {\n this._websocket.close(); // Ensure the connection is closed before attempting to reconnect\n }\n else {\n this.auto_reconnect();\n }\n };\n WebSocketWorker.prototype.send_large_message = function (jsondata) {\n return __awaiter(this, void 0, void 0, function () {\n var url;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = \"http\" + this._url.substring(2);\n //add /msg_id to url to get the large message (url might end with /)\n if (url[url.length - 1] !== \"/\") {\n url += \"/\";\n }\n url += \"message/\";\n return [4 /*yield*/, fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: jsondata,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.send = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var jsonstring, datasize;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._websocket || this._websocket.readyState !== WebSocket.OPEN) {\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket not connected\");\n return [2 /*return*/];\n }\n jsonstring = JSON.stringify(data);\n datasize = new Blob([jsonstring]).size;\n if (!(datasize > 1000000)) return [3 /*break*/, 2];\n // 1MB\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Data too large, sending in chunks\");\n return [4 /*yield*/, this.send_large_message(jsonstring)];\n case 1: return [2 /*return*/, _d.sent()];\n case 2:\n (_c = this._zustand) === null || _c === void 0 ? void 0 : _c.logger.debug(\"Sending data\", data);\n this._websocket.send(jsonstring);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.stop.call(this)];\n case 1:\n _a.sent();\n this._reconnect = false;\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.close = function () {\n if (this._websocket)\n this._websocket.close();\n };\n WebSocketWorker.prototype.disconnect = function () {\n _super.prototype.disconnect.call(this);\n this._reconnect = false;\n this.close();\n };\n WebSocketWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, _super.prototype.reconnect.call(this)];\n case 1:\n _b.sent();\n this._reconnect = true;\n if (!this._websocket) return [3 /*break*/, 4];\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Reconnecting\");\n if (!(this._websocket.readyState === WebSocket.OPEN ||\n this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 4];\n if (!(this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 3];\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n if (_this._websocket === null)\n return;\n var timeout = setTimeout(function () {\n reject(\"Timeout@reconnect\");\n }, 2000);\n _this._websocket.addEventListener(\"open\", function () {\n clearTimeout(timeout);\n resolve(null);\n }, { once: true });\n if (_this._websocket.readyState === WebSocket.OPEN) {\n clearTimeout(timeout);\n resolve(null);\n }\n })];\n case 2:\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n _b.sent();\n _b.label = 3;\n case 3:\n if (this._websocket.readyState === WebSocket.OPEN) {\n this.stepwise_fullsync();\n return [2 /*return*/];\n }\n _b.label = 4;\n case 4:\n this.connect();\n return [2 /*return*/];\n }\n });\n });\n };\n return WebSocketWorker;\n}(_funcnodesworker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WebSocketWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/websocketworker.ts?");
|
|
3189
3189
|
|
|
3190
3190
|
/***/ }),
|
|
3191
3191
|
|
|
@@ -3229,7 +3229,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3229
3229
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3230
3230
|
|
|
3231
3231
|
"use strict";
|
|
3232
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LibZustand: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ NodeSpaceZustand: () => (/* reexport safe */ _nodespace__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ assert_reactflow_node: () => (/* binding */ assert_reactflow_node),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib */ \"./src/states/lib.ts\");\n/* harmony import */ var _nodespace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nodespace */ \"./src/states/nodespace.ts\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node */ \"./src/states/node.ts\");\n/* harmony import */ var _reactflow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./reactflow */ \"./src/states/reactflow.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./edge */ \"./src/states/edge.ts\");\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\n\n\n\nvar _fill_node_frontend = function (node, fnrf_instance) {\n var frontend = node.frontend || {};\n if (!frontend.size) {\n frontend.size = [200, 100];\n }\n if (!frontend.pos ||\n frontend.pos.length !== 2 ||\n isNaN(frontend.pos[0]) ||\n frontend.pos[0] === null ||\n isNaN(frontend.pos[1]) ||\n frontend.pos[1] === null) {\n if (!fnrf_instance ||\n !fnrf_instance.rf_instance ||\n fnrf_instance.reactflowRef === null) {\n frontend.pos = [0, 0];\n }\n else {\n var ref = fnrf_instance.reactflowRef;\n var rect = ref.getBoundingClientRect(); // Step 2: Get bounding rectangle\n var centerX = rect.left + rect.width / 2; // Calculate center X\n var centerY = rect.top + rect.height / 2; // Calculate center Y\n var flowpos = fnrf_instance.rf_instance.screenToFlowPosition({\n x: centerX,\n y: centerY,\n });\n frontend.pos = [\n flowpos.x - frontend.size[0] / 2,\n flowpos.y - frontend.size[1] / 2,\n ];\n }\n }\n if (!frontend.collapsed) {\n frontend.collapsed = false;\n }\n node.frontend = frontend;\n};\nvar assert_react_flow_io = function (io, fnrf_instance) {\n if (io.value === \"<NoValue>\") {\n io.value = undefined;\n }\n if (io.fullvalue === \"<NoValue>\") {\n io.fullvalue = undefined;\n }\n if (io.try_get_full_value === undefined) {\n io.try_get_full_value = function () {\n var _a;\n if (!fnrf_instance) {\n return;\n }\n if (io.node === undefined || io.id === undefined) {\n return;\n }\n (_a = fnrf_instance.worker) === null || _a === void 0 ? void 0 : _a.get_io_full_value({ nid: io.node, ioid: io.id });\n };\n }\n if (io.hidden === undefined) {\n io.hidden = false;\n }\n if (io.set_hidden === undefined) {\n io.set_hidden = function (v) {\n var _a;\n if (!fnrf_instance) {\n return;\n }\n if (io.node === undefined || io.id === undefined) {\n return;\n }\n (_a = fnrf_instance.worker) === null || _a === void 0 ? void 0 : _a.update_io_options({\n nid: io.node,\n ioid: io.id,\n options: { hidden: v },\n });\n };\n }\n return io;\n};\nvar assert_reactflow_node = function (node, store, fnrf_instance) {\n _fill_node_frontend(node, fnrf_instance);\n node = (0,_node__WEBPACK_IMPORTED_MODULE_2__.assert_full_node)(node);\n if (node.id === undefined) {\n throw new Error(\"Node must have an id\");\n }\n for (var io in node.io) {\n node.io[io].node = node.id;\n assert_react_flow_io(node.io[io], fnrf_instance);\n }\n var extendedNode = __assign({ position: {\n x: node.frontend.pos[0],\n y: node.frontend.pos[1],\n }, data: {\n UseNodeStore: store,\n }, type: \"default\" }, node);\n return extendedNode;\n};\nvar FuncNodesReactFlowZustand = function (_a) {\n /*\n function that should be called when the remote node, e.g. in the python worker is performing an action\n */\n var _b = _a.useWorkerManager, useWorkerManager = _b === void 0 ? true : _b, _c = _a.default_worker, default_worker = _c === void 0 ? undefined : _c, _d = _a.on_sync_complete, on_sync_complete = _d === void 0 ? undefined : _d;\n var options = {\n useWorkerManager: useWorkerManager,\n default_worker: default_worker,\n on_sync_complete: on_sync_complete,\n };\n var _add_node = function (action) {\n var _a;\n var rfstate = rfstore.getState();\n if (action.from_remote) {\n var store = ns.get_node(action.node.id, false);\n if (!store) {\n try {\n store = (0,_node__WEBPACK_IMPORTED_MODULE_2__.createNodeStore)(action.node);\n ns.nodesstates.set(action.node.id, store);\n }\n catch (e) {\n return;\n }\n }\n var node = store.getState();\n var new_ndoes = __spreadArray(__spreadArray([], rfstate.nodes, true), [\n assert_reactflow_node(node, store, iterf),\n ], false);\n rfstore.setState({ nodes: new_ndoes });\n // wait 200 ms then set the full value of all ios\n for (var io in action.node.io) {\n var ioid = action.node.io[io].id;\n if (ioid !== undefined) {\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.get_io_value({ nid: action.node.id, ioid: ioid });\n }\n }\n }\n };\n var _update_node = function (action) {\n var _a;\n // some action reset the error, so far trigger does, so errors should remove the in_trigger flag\n if (action.node.in_trigger) {\n action.node.error = undefined;\n }\n if (action.from_remote) {\n var store = ns.get_node(action.id);\n if (!store) {\n return;\n }\n (0,_node__WEBPACK_IMPORTED_MODULE_2__.normalize_node)(action.node);\n var state = store.getState();\n var _b = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(state, action.node), new_obj = _b.new_obj, change = _b.change;\n if (change) {\n // update ios after merge, because it might be an object whch would resolt of\n // some part of the old value still being there (on the frontend)\n if (action.node.io) {\n for (var io in action.node.io) {\n // if fullvalue is in the update data, set to fullvalue otherwise set to undefined\n new_obj.io[io].fullvalue = (_a = action.node.io[io]) === null || _a === void 0 ? void 0 : _a.fullvalue;\n for (var io_1 in action.node.io) {\n var ioobj = action.node.io[io_1];\n var new_obj_io = new_obj.io[io_1];\n // check if value in io, undefined is a valid value\n if (ioobj.hasOwnProperty(\"value\")) {\n if (ioobj.value === undefined) {\n new_obj_io.value = null;\n }\n else if (ioobj.value === \"<NoValue>\") {\n new_obj_io.value = undefined;\n }\n else {\n new_obj_io.value = ioobj.value;\n }\n }\n }\n }\n }\n assert_reactflow_node(new_obj, store, iterf);\n iterf.logger.debug(\"update_action\", new_obj);\n store.setState((0,_node__WEBPACK_IMPORTED_MODULE_2__.assert_full_node)(new_obj));\n }\n }\n else {\n if (iterf.worker) {\n iterf.worker.locally_update_node(action);\n }\n }\n };\n var _delete_node = function (action) {\n var _a;\n if (action.from_remote) {\n rfstore.getState().onNodesChange([\n {\n type: \"remove\",\n id: action.id,\n },\n ]);\n }\n else {\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.remove_node(action.id);\n }\n };\n var _error_action = function (action) {\n iterf.logger.error(\"Error\", action);\n on_node_action({\n type: \"update\",\n id: action.id,\n node: {\n in_trigger: false,\n error: action.error,\n },\n from_remote: true,\n });\n };\n var _trigger_action = function (action) {\n var _a;\n if (action.from_remote) {\n on_node_action({\n type: \"update\",\n id: action.id,\n node: {\n in_trigger: true,\n error: undefined,\n },\n from_remote: true,\n });\n }\n else {\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.trigger_node(action.id);\n }\n };\n var on_node_action = function (action) {\n switch (action.type) {\n case \"add\":\n _add_node(action);\n break;\n case \"update\":\n _update_node(action);\n break;\n case \"delete\":\n _delete_node(action);\n break;\n case \"error\":\n _error_action(action);\n break;\n case \"trigger\":\n _trigger_action(action);\n break;\n default:\n iterf.logger.error(\"Unknown node action\", action);\n }\n };\n var on_edge_action = function (action) {\n var _a, _b, _c, _d;\n var rfstate = rfstore.getState();\n switch (action.type) {\n case \"add\":\n if (action.from_remote) {\n var edges = rfstate.edges;\n var new_edge_id_1 = (0,_edge__WEBPACK_IMPORTED_MODULE_5__.generate_edge_id)(action);\n //cehck if edge already exists including reversed\n if (edges.some(function (e) { return e.id === new_edge_id_1; })) {\n return;\n }\n var new_edge = {\n id: new_edge_id_1,\n source: action.src_nid,\n target: action.trg_nid,\n sourceHandle: action.src_ioid,\n targetHandle: action.trg_ioid,\n className: \"funcnodes-edge animated\",\n };\n iterf.logger.info(\"Adding edge\", new_edge);\n rfstore.setState({ edges: __spreadArray(__spreadArray([], edges, true), [new_edge], false) });\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.get_remote_node_state(action.src_nid);\n (_b = iterf.worker) === null || _b === void 0 ? void 0 : _b.get_remote_node_state(action.trg_nid);\n }\n else {\n }\n break;\n case \"delete\":\n if (action.from_remote) {\n var edges = rfstate.edges;\n var del_edge_id_1 = (0,_edge__WEBPACK_IMPORTED_MODULE_5__.generate_edge_id)(action);\n var new_edges = edges.filter(function (edge) { return edge.id !== del_edge_id_1; });\n rfstore.setState({ edges: new_edges });\n (_c = iterf.worker) === null || _c === void 0 ? void 0 : _c.get_remote_node_state(action.src_nid);\n (_d = iterf.worker) === null || _d === void 0 ? void 0 : _d.get_remote_node_state(action.trg_nid);\n }\n else {\n }\n break;\n default:\n iterf.logger.error(\"Unknown edge action\", action);\n }\n };\n /*\n on_node_cahnge is called by react flow when a note change event is fired\n should update the local state if something changed\n */\n var on_node_change = function (nodechange) {\n for (var _i = 0, nodechange_1 = nodechange; _i < nodechange_1.length; _i++) {\n var change = nodechange_1[_i];\n switch (change.type) {\n case \"position\":\n if (change.position) {\n on_node_action({\n type: \"update\",\n id: change.id,\n node: {\n frontend: { pos: [change.position.x, change.position.y] },\n },\n from_remote: false,\n });\n }\n break;\n case \"dimensions\":\n if (change.dimensions) {\n on_node_action({\n type: \"update\",\n id: change.id,\n node: {\n frontend: {\n size: [change.dimensions.width, change.dimensions.height],\n },\n },\n from_remote: false,\n });\n }\n break;\n }\n }\n };\n var on_edge_change = function (_edgechange) { };\n var on_connect = function (connection) {\n if (connection.source === null ||\n connection.target === null ||\n connection.sourceHandle === null ||\n connection.targetHandle === null ||\n !iterf.worker) {\n return;\n }\n iterf.worker.add_edge({\n src_nid: connection.source,\n src_ioid: connection.sourceHandle,\n trg_nid: connection.target,\n trg_ioid: connection.targetHandle,\n replace: true,\n });\n };\n var rfstore = (0,_reactflow__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n on_node_change: on_node_change,\n on_edge_change: on_edge_change,\n on_connect: on_connect,\n });\n var ns = (0,_nodespace__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({});\n var lib = (0,_lib__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var clear_all = function () {\n var _a, _b;\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.disconnect();\n iterf.set_worker(undefined);\n (_b = iterf.workermanager) === null || _b === void 0 ? void 0 : _b.setWorker(undefined);\n iterf.lib.libstate\n .getState()\n .set({ lib: { shelves: [] }, external_worker: [] });\n iterf.nodespace.nodesstates.clear();\n iterf.useReactFlowStore.setState({ nodes: [], edges: [] });\n iterf.auto_progress();\n };\n var iterf = {\n local_settings: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n view_settings: {\n expand_node_props: false,\n },\n update_view_settings: function (settings) {\n var current = iterf.local_settings.getState().view_settings;\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(current, settings), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n iterf.local_settings.setState(function (prev) { return (__assign(__assign({}, prev), { view_settings: new_obj })); });\n }\n },\n }); }),\n local_state: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n selected_nodes: [],\n selected_edges: [],\n }); }),\n options: options,\n lib: lib,\n workermanager: undefined,\n workers: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({}); }),\n workerstate: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n is_open: false,\n }); }),\n render_options: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({}); }),\n progress_state: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n message: \"please select worker\",\n status: \"info\",\n progress: 0,\n blocking: false,\n }); }),\n update_render_options: function (options) {\n var current = iterf.render_options.getState();\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(current, options), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n iterf.render_options.setState(new_obj);\n }\n },\n worker: undefined,\n _unsubscribeFromWorker: undefined,\n set_worker: function (worker) {\n if (worker === iterf.worker) {\n return;\n }\n if (iterf._unsubscribeFromWorker) {\n iterf._unsubscribeFromWorker();\n iterf._unsubscribeFromWorker = undefined;\n }\n // If new worker is provided\n if (worker) {\n iterf._unsubscribeFromWorker = worker.state.subscribe(function (newState) {\n iterf.workerstate.setState(newState);\n });\n iterf.workerstate.setState(worker.state.getState());\n }\n // Update the reference\n iterf.worker = worker;\n worker === null || worker === void 0 ? void 0 : worker.set_zustand(iterf);\n },\n nodespace: ns,\n useReactFlowStore: rfstore,\n on_node_action: on_node_action,\n on_edge_action: on_edge_action,\n reactflowRef: null,\n clear_all: clear_all,\n set_progress: function (progress) {\n if (progress.message === \"\") {\n return iterf.auto_progress();\n }\n var prev_state = iterf.progress_state.getState();\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(prev_state, progress), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n iterf.progress_state.setState(new_obj);\n }\n },\n auto_progress: function () {\n if (iterf.worker === undefined) {\n return iterf.set_progress({\n progress: 0,\n message: \"please select worker\",\n status: \"error\",\n blocking: false,\n });\n }\n if (!iterf.worker.is_open) {\n return iterf.set_progress({\n progress: 0,\n message: \"connecting to worker\",\n status: \"info\",\n blocking: true,\n });\n }\n iterf.set_progress({\n progress: 1,\n message: \"running\",\n status: \"info\",\n blocking: false,\n });\n },\n plugins: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({}); }),\n add_plugin: function (name, plugin) {\n if (plugin === undefined)\n return;\n iterf.plugins.setState(function (prev) {\n var _a;\n return __assign(__assign({}, prev), (_a = {}, _a[name] = plugin, _a));\n });\n },\n dev_settings: {\n debug: true,\n },\n logger: new _utils_logger__WEBPACK_IMPORTED_MODULE_6__.ConsoleLogger(\"fn\", _utils_logger__WEBPACK_IMPORTED_MODULE_6__.INFO),\n };\n return iterf;\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncNodesReactFlowZustand);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/states/fnrfzst.ts?");
|
|
3232
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LibZustand: () => (/* reexport safe */ _lib__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ NodeSpaceZustand: () => (/* reexport safe */ _nodespace__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ assert_reactflow_node: () => (/* binding */ assert_reactflow_node),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib */ \"./src/states/lib.ts\");\n/* harmony import */ var _nodespace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nodespace */ \"./src/states/nodespace.ts\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node */ \"./src/states/node.ts\");\n/* harmony import */ var _reactflow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./reactflow */ \"./src/states/reactflow.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./edge */ \"./src/states/edge.ts\");\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\n\n\n\nvar _fill_node_frontend = function (node, fnrf_instance) {\n var frontend = node.frontend || {};\n if (!frontend.size) {\n frontend.size = [200, 100];\n }\n if (!frontend.pos ||\n frontend.pos.length !== 2 ||\n isNaN(frontend.pos[0]) ||\n frontend.pos[0] === null ||\n isNaN(frontend.pos[1]) ||\n frontend.pos[1] === null) {\n if (!fnrf_instance ||\n !fnrf_instance.rf_instance ||\n fnrf_instance.reactflowRef === null) {\n frontend.pos = [0, 0];\n }\n else {\n var ref = fnrf_instance.reactflowRef;\n var rect = ref.getBoundingClientRect(); // Step 2: Get bounding rectangle\n var centerX = rect.left + rect.width / 2; // Calculate center X\n var centerY = rect.top + rect.height / 2; // Calculate center Y\n var flowpos = fnrf_instance.rf_instance.screenToFlowPosition({\n x: centerX,\n y: centerY,\n });\n frontend.pos = [\n flowpos.x - frontend.size[0] / 2,\n flowpos.y - frontend.size[1] / 2,\n ];\n }\n }\n if (!frontend.collapsed) {\n frontend.collapsed = false;\n }\n node.frontend = frontend;\n};\nvar assert_react_flow_io = function (io, fnrf_instance) {\n if (io.value === \"<NoValue>\") {\n io.value = undefined;\n }\n if (io.fullvalue === \"<NoValue>\") {\n io.fullvalue = undefined;\n }\n if (io.try_get_full_value === undefined) {\n io.try_get_full_value = function () {\n var _a;\n if (!fnrf_instance) {\n return;\n }\n if (io.node === undefined || io.id === undefined) {\n return;\n }\n (_a = fnrf_instance.worker) === null || _a === void 0 ? void 0 : _a.get_io_full_value({ nid: io.node, ioid: io.id });\n };\n }\n if (io.hidden === undefined) {\n io.hidden = false;\n }\n if (io.set_hidden === undefined) {\n io.set_hidden = function (v) {\n var _a;\n if (!fnrf_instance) {\n return;\n }\n if (io.node === undefined || io.id === undefined) {\n return;\n }\n (_a = fnrf_instance.worker) === null || _a === void 0 ? void 0 : _a.update_io_options({\n nid: io.node,\n ioid: io.id,\n options: { hidden: v },\n });\n };\n }\n return io;\n};\nvar assert_reactflow_node = function (node, store, fnrf_instance) {\n _fill_node_frontend(node, fnrf_instance);\n node = (0,_node__WEBPACK_IMPORTED_MODULE_2__.assert_full_node)(node);\n if (node.id === undefined) {\n throw new Error(\"Node must have an id\");\n }\n for (var io in node.io) {\n node.io[io].node = node.id;\n assert_react_flow_io(node.io[io], fnrf_instance);\n }\n var extendedNode = __assign({ position: {\n x: node.frontend.pos[0],\n y: node.frontend.pos[1],\n }, data: {\n UseNodeStore: store,\n }, type: \"default\" }, node);\n return extendedNode;\n};\nvar FuncNodesReactFlowZustand = function (_a) {\n /*\n function that should be called when the remote node, e.g. in the python worker is performing an action\n */\n var _b = _a.useWorkerManager, useWorkerManager = _b === void 0 ? true : _b, _c = _a.default_worker, default_worker = _c === void 0 ? undefined : _c, _d = _a.on_sync_complete, on_sync_complete = _d === void 0 ? undefined : _d;\n var options = {\n useWorkerManager: useWorkerManager,\n default_worker: default_worker,\n on_sync_complete: on_sync_complete,\n };\n var _add_node = function (action) {\n var _a;\n var rfstate = rfstore.getState();\n if (action.from_remote) {\n var store = ns.get_node(action.node.id, false);\n if (!store) {\n try {\n store = (0,_node__WEBPACK_IMPORTED_MODULE_2__.createNodeStore)(action.node);\n ns.nodesstates.set(action.node.id, store);\n }\n catch (e) {\n return;\n }\n }\n var node = store.getState();\n var new_ndoes = __spreadArray(__spreadArray([], rfstate.nodes, true), [\n assert_reactflow_node(node, store, iterf),\n ], false);\n rfstore.setState({ nodes: new_ndoes });\n // wait 200 ms then set the full value of all ios\n for (var io in action.node.io) {\n var ioid = action.node.io[io].id;\n if (ioid !== undefined) {\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.get_io_value({ nid: action.node.id, ioid: ioid });\n }\n }\n }\n };\n var _update_node = function (action) {\n var _a;\n // some action reset the error, so far trigger does, so errors should remove the in_trigger flag\n if (action.node.in_trigger) {\n action.node.error = undefined;\n }\n if (action.from_remote) {\n var store = ns.get_node(action.id, false);\n if (!store) {\n return;\n }\n (0,_node__WEBPACK_IMPORTED_MODULE_2__.normalize_node)(action.node);\n var state = store.getState();\n var _b = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(state, action.node), new_obj = _b.new_obj, change = _b.change;\n if (change) {\n // update ios after merge, because it might be an object whch would resolt of\n // some part of the old value still being there (on the frontend)\n if (action.node.io) {\n for (var io in action.node.io) {\n // if fullvalue is in the update data, set to fullvalue otherwise set to undefined\n new_obj.io[io].fullvalue = (_a = action.node.io[io]) === null || _a === void 0 ? void 0 : _a.fullvalue;\n for (var io_1 in action.node.io) {\n var ioobj = action.node.io[io_1];\n var new_obj_io = new_obj.io[io_1];\n // check if value in io, undefined is a valid value\n if (ioobj.hasOwnProperty(\"value\")) {\n if (ioobj.value === undefined) {\n new_obj_io.value = null;\n }\n else if (ioobj.value === \"<NoValue>\") {\n new_obj_io.value = undefined;\n }\n else {\n new_obj_io.value = ioobj.value;\n }\n }\n }\n }\n }\n assert_reactflow_node(new_obj, store, iterf);\n iterf.logger.debug(\"update_action\", new_obj);\n store.setState((0,_node__WEBPACK_IMPORTED_MODULE_2__.assert_full_node)(new_obj));\n }\n }\n else {\n if (iterf.worker) {\n iterf.worker.locally_update_node(action);\n }\n }\n };\n var _delete_node = function (action) {\n var _a;\n if (action.from_remote) {\n rfstore.getState().onNodesChange([\n {\n type: \"remove\",\n id: action.id,\n },\n ]);\n }\n else {\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.remove_node(action.id);\n }\n };\n var _error_action = function (action) {\n iterf.logger.error(\"Error\", action);\n on_node_action({\n type: \"update\",\n id: action.id,\n node: {\n in_trigger: false,\n error: action.error,\n },\n from_remote: true,\n });\n };\n var _trigger_action = function (action) {\n var _a;\n if (action.from_remote) {\n on_node_action({\n type: \"update\",\n id: action.id,\n node: {\n in_trigger: true,\n error: undefined,\n },\n from_remote: true,\n });\n }\n else {\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.trigger_node(action.id);\n }\n };\n var on_node_action = function (action) {\n switch (action.type) {\n case \"add\":\n _add_node(action);\n break;\n case \"update\":\n _update_node(action);\n break;\n case \"delete\":\n _delete_node(action);\n break;\n case \"error\":\n _error_action(action);\n break;\n case \"trigger\":\n _trigger_action(action);\n break;\n default:\n iterf.logger.error(\"Unknown node action\", action);\n }\n };\n var on_edge_action = function (action) {\n var _a, _b, _c, _d;\n var rfstate = rfstore.getState();\n switch (action.type) {\n case \"add\":\n if (action.from_remote) {\n var edges = rfstate.edges;\n var new_edge_id_1 = (0,_edge__WEBPACK_IMPORTED_MODULE_5__.generate_edge_id)(action);\n //cehck if edge already exists including reversed\n if (edges.some(function (e) { return e.id === new_edge_id_1; })) {\n return;\n }\n var new_edge = {\n id: new_edge_id_1,\n source: action.src_nid,\n target: action.trg_nid,\n sourceHandle: action.src_ioid,\n targetHandle: action.trg_ioid,\n className: \"funcnodes-edge animated\",\n };\n iterf.logger.info(\"Adding edge\", new_edge);\n rfstore.setState({ edges: __spreadArray(__spreadArray([], edges, true), [new_edge], false) });\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.get_remote_node_state(action.src_nid);\n (_b = iterf.worker) === null || _b === void 0 ? void 0 : _b.get_remote_node_state(action.trg_nid);\n }\n else {\n }\n break;\n case \"delete\":\n if (action.from_remote) {\n var edges = rfstate.edges;\n var del_edge_id_1 = (0,_edge__WEBPACK_IMPORTED_MODULE_5__.generate_edge_id)(action);\n var new_edges = edges.filter(function (edge) { return edge.id !== del_edge_id_1; });\n rfstore.setState({ edges: new_edges });\n (_c = iterf.worker) === null || _c === void 0 ? void 0 : _c.get_remote_node_state(action.src_nid);\n (_d = iterf.worker) === null || _d === void 0 ? void 0 : _d.get_remote_node_state(action.trg_nid);\n }\n else {\n }\n break;\n default:\n iterf.logger.error(\"Unknown edge action\", action);\n }\n };\n /*\n on_node_cahnge is called by react flow when a note change event is fired\n should update the local state if something changed\n */\n var on_node_change = function (nodechange) {\n for (var _i = 0, nodechange_1 = nodechange; _i < nodechange_1.length; _i++) {\n var change = nodechange_1[_i];\n switch (change.type) {\n case \"position\":\n if (change.position) {\n on_node_action({\n type: \"update\",\n id: change.id,\n node: {\n frontend: { pos: [change.position.x, change.position.y] },\n },\n from_remote: false,\n });\n }\n break;\n case \"dimensions\":\n if (change.dimensions) {\n on_node_action({\n type: \"update\",\n id: change.id,\n node: {\n frontend: {\n size: [change.dimensions.width, change.dimensions.height],\n },\n },\n from_remote: false,\n });\n }\n break;\n }\n }\n };\n var on_edge_change = function (_edgechange) { };\n var on_connect = function (connection) {\n if (connection.source === null ||\n connection.target === null ||\n connection.sourceHandle === null ||\n connection.targetHandle === null ||\n !iterf.worker) {\n return;\n }\n iterf.worker.add_edge({\n src_nid: connection.source,\n src_ioid: connection.sourceHandle,\n trg_nid: connection.target,\n trg_ioid: connection.targetHandle,\n replace: true,\n });\n };\n var rfstore = (0,_reactflow__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n on_node_change: on_node_change,\n on_edge_change: on_edge_change,\n on_connect: on_connect,\n });\n var ns = (0,_nodespace__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({});\n var lib = (0,_lib__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var clear_all = function () {\n var _a, _b;\n (_a = iterf.worker) === null || _a === void 0 ? void 0 : _a.disconnect();\n iterf.set_worker(undefined);\n (_b = iterf.workermanager) === null || _b === void 0 ? void 0 : _b.setWorker(undefined);\n iterf.lib.libstate\n .getState()\n .set({ lib: { shelves: [] }, external_worker: [] });\n iterf.nodespace.nodesstates.clear();\n iterf.useReactFlowStore.setState({ nodes: [], edges: [] });\n iterf.auto_progress();\n };\n var iterf = {\n local_settings: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n view_settings: {\n expand_node_props: false,\n },\n update_view_settings: function (settings) {\n var current = iterf.local_settings.getState().view_settings;\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(current, settings), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n iterf.local_settings.setState(function (prev) { return (__assign(__assign({}, prev), { view_settings: new_obj })); });\n }\n },\n }); }),\n local_state: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n selected_nodes: [],\n selected_edges: [],\n }); }),\n options: options,\n lib: lib,\n workermanager: undefined,\n workers: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({}); }),\n workerstate: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n is_open: false,\n }); }),\n render_options: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({}); }),\n progress_state: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({\n message: \"please select worker\",\n status: \"info\",\n progress: 0,\n blocking: false,\n }); }),\n update_render_options: function (options) {\n var current = iterf.render_options.getState();\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(current, options), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n iterf.render_options.setState(new_obj);\n }\n },\n worker: undefined,\n _unsubscribeFromWorker: undefined,\n set_worker: function (worker) {\n if (worker === iterf.worker) {\n return;\n }\n if (iterf._unsubscribeFromWorker) {\n iterf._unsubscribeFromWorker();\n iterf._unsubscribeFromWorker = undefined;\n }\n // If new worker is provided\n if (worker) {\n iterf._unsubscribeFromWorker = worker.state.subscribe(function (newState) {\n iterf.workerstate.setState(newState);\n });\n iterf.workerstate.setState(worker.state.getState());\n }\n // Update the reference\n iterf.worker = worker;\n worker === null || worker === void 0 ? void 0 : worker.set_zustand(iterf);\n },\n nodespace: ns,\n useReactFlowStore: rfstore,\n on_node_action: on_node_action,\n on_edge_action: on_edge_action,\n reactflowRef: null,\n clear_all: clear_all,\n set_progress: function (progress) {\n if (progress.message === \"\") {\n return iterf.auto_progress();\n }\n var prev_state = iterf.progress_state.getState();\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.deep_merge)(prev_state, progress), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n iterf.progress_state.setState(new_obj);\n }\n },\n auto_progress: function () {\n if (iterf.worker === undefined) {\n return iterf.set_progress({\n progress: 0,\n message: \"please select worker\",\n status: \"error\",\n blocking: false,\n });\n }\n if (!iterf.worker.is_open) {\n return iterf.set_progress({\n progress: 0,\n message: \"connecting to worker\",\n status: \"info\",\n blocking: true,\n });\n }\n iterf.set_progress({\n progress: 1,\n message: \"running\",\n status: \"info\",\n blocking: false,\n });\n },\n plugins: (0,zustand__WEBPACK_IMPORTED_MODULE_7__.create)(function (_set, _get) { return ({}); }),\n add_plugin: function (name, plugin) {\n if (plugin === undefined)\n return;\n iterf.plugins.setState(function (prev) {\n var _a;\n return __assign(__assign({}, prev), (_a = {}, _a[name] = plugin, _a));\n });\n },\n dev_settings: {\n debug: true,\n },\n logger: new _utils_logger__WEBPACK_IMPORTED_MODULE_6__.ConsoleLogger(\"fn\", _utils_logger__WEBPACK_IMPORTED_MODULE_6__.INFO),\n };\n return iterf;\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncNodesReactFlowZustand);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/states/fnrfzst.ts?");
|
|
3233
3233
|
|
|
3234
3234
|
/***/ }),
|
|
3235
3235
|
|
|
@@ -3262,7 +3262,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3262
3262
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3263
3263
|
|
|
3264
3264
|
"use strict";
|
|
3265
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assert_full_node: () => (/* binding */ assert_full_node),\n/* harmony export */ createNodeStore: () => (/* binding */ createNodeStore),\n/* harmony export */ normalize_node: () => (/* binding */ normalize_node)\n/* harmony export */ });\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\n\nvar dummy_nodeio = {\n id: \"dummy\",\n name: \"dummy\",\n node: \"dummy\",\n full_id: \"dummy\",\n type: \"any\",\n value: undefined,\n is_input: false,\n connected: false,\n does_trigger: true,\n fullvalue: undefined,\n try_get_full_value: undefined,\n render_options: {\n set_default: true,\n type: \"any\",\n },\n set_hidden: undefined,\n hidden: false,\n};\nvar assert_full_nodeio = function (io) {\n if (!io.id) {\n throw new Error(\"IO must have an id but is missing for \" + JSON.stringify(io));\n }\n if (io.name === undefined) {\n io.name = io.id;\n }\n var new_obj = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_update)(io, dummy_nodeio).new_obj;\n if (new_obj.render_options.type === \"any\" ||\n new_obj.render_options.type === undefined)\n new_obj.render_options.type = new_obj.type;\n return new_obj;\n};\
|
|
3265
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assert_full_node: () => (/* binding */ assert_full_node),\n/* harmony export */ createNodeStore: () => (/* binding */ createNodeStore),\n/* harmony export */ normalize_node: () => (/* binding */ normalize_node)\n/* harmony export */ });\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n\n\nvar dummy_nodeio = {\n id: \"dummy\",\n name: \"dummy\",\n node: \"dummy\",\n full_id: \"dummy\",\n type: \"any\",\n value: undefined,\n is_input: false,\n connected: false,\n does_trigger: true,\n fullvalue: undefined,\n try_get_full_value: undefined,\n render_options: {\n set_default: true,\n type: \"any\",\n },\n set_hidden: undefined,\n hidden: false,\n};\nvar assert_full_nodeio = function (io) {\n if (!io.id) {\n throw new Error(\"IO must have an id but is missing for \" + JSON.stringify(io));\n }\n if (io.name === undefined) {\n io.name = io.id;\n }\n var new_obj = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_update)(io, dummy_nodeio).new_obj;\n if (new_obj.render_options.type === \"any\" ||\n new_obj.render_options.type === undefined)\n new_obj.render_options.type = new_obj.type;\n return new_obj;\n};\nvar dummy_node = {\n id: \"dummy\",\n node_name: \"dummy\",\n frontend: {\n pos: [NaN, NaN],\n size: [200, 100],\n collapsed: false,\n },\n io: {},\n name: \"dummy\",\n in_trigger: false,\n io_order: [],\n progress: {\n ascii: false,\n elapsed: 0,\n initial: 0,\n n: 0,\n prefix: \"idle\",\n unit: \"it\",\n unit_divisor: 1000,\n unit_scale: false,\n },\n};\nvar dummy_node_json = JSON.stringify(dummy_node);\nvar assert_full_node = function (node) {\n if (!node.id) {\n throw new Error(\"Node must have an id\");\n }\n var dummy_node = JSON.parse(dummy_node_json);\n var new_obj = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_update)(node, dummy_node).new_obj;\n for (var ioid in new_obj.io) {\n if (new_obj.io[ioid] === undefined)\n continue;\n var io = assert_full_nodeio(new_obj.io[ioid]);\n new_obj.io[ioid] = io;\n }\n return new_obj;\n};\nvar normalize_node = function (node) {\n if (node.io === undefined) {\n node.io = {};\n }\n if (node.io_order === undefined) {\n if (Array.isArray(node.io)) {\n node.io_order = node.io.map(function (io) { return io.id; });\n var new_io = {};\n for (var _i = 0, _a = node.io; _i < _a.length; _i++) {\n var io = _a[_i];\n new_io[io.id] = io;\n }\n node.io = new_io;\n }\n else {\n node.io_order = Object.keys(node.io);\n }\n }\n else {\n if (Array.isArray(node.io)) {\n var new_io = {};\n for (var _b = 0, _c = node.io; _b < _c.length; _b++) {\n var io = _c[_b];\n new_io[io.id] = io;\n if (!node.io_order.includes(io.id)) {\n node.io_order.push(io.id);\n }\n }\n node.io = new_io;\n }\n else {\n for (var io in node.io) {\n if (!node.io_order.includes(io)) {\n node.io_order.push(io);\n }\n }\n }\n }\n return node;\n};\nvar createNodeStore = function (node) {\n // check if node is Object\n return (0,zustand__WEBPACK_IMPORTED_MODULE_1__.create)(function (_set, _get) {\n return assert_full_node(normalize_node(node));\n });\n};\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/states/node.ts?");
|
|
3266
3266
|
|
|
3267
3267
|
/***/ }),
|
|
3268
3268
|
|
|
@@ -3288,6 +3288,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3288
3288
|
|
|
3289
3289
|
/***/ }),
|
|
3290
3290
|
|
|
3291
|
+
/***/ "./src/utils/autolayout/txt.ts":
|
|
3292
|
+
/*!*************************************!*\
|
|
3293
|
+
!*** ./src/utils/autolayout/txt.ts ***!
|
|
3294
|
+
\*************************************/
|
|
3295
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3296
|
+
|
|
3297
|
+
"use strict";
|
|
3298
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fitTextToContainer: () => (/* binding */ fitTextToContainer)\n/* harmony export */ });\n/**\n * Dynamically adjusts the font size of a text element so that it fits within its container.\n *\n * @param container - The container element that defines the maximum space.\n * @param textElement - The element whose text needs to be resized.\n * @param options - Optional configuration (maxFontSize, minFontSize, decrementFactor).\n */\nfunction fitTextToContainer(container, textElement, options) {\n if (options === void 0) { options = {}; }\n var _a = options.maxFontSize, maxFontSize = _a === void 0 ? 100 : _a, // default maximum font size\n _b = options.minFontSize, // default maximum font size\n minFontSize = _b === void 0 ? 8 : _b, // default minimum font size\n _c = options.decrementFactor, // default minimum font size\n decrementFactor = _c === void 0 ? 0.9 : _c;\n if (!container || !textElement) {\n return;\n }\n if (decrementFactor >= 1 || decrementFactor <= 0) {\n throw new Error(\"decrementFactor must be between 0 and 1\");\n }\n // Get container dimensions\n var containerRect = container.getBoundingClientRect();\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n // Start with the maximum font size\n var fontSize = maxFontSize;\n // Apply the font size, measure, and adjust\n textElement.style.whiteSpace = \"nowrap\"; // ensure single line measurement if desired\n textElement.style.display = \"inline-block\";\n // Set initial font size\n textElement.style.fontSize = fontSize + \"px\";\n var textRect = textElement.getBoundingClientRect();\n // While text doesn't fit and we haven't reached the minimum font size\n // Check both width and height to ensure the text fits completely.\n while ((textRect.width > containerWidth || textRect.height > containerHeight) &&\n fontSize > minFontSize) {\n fontSize *= decrementFactor;\n textElement.style.fontSize = fontSize + \"px\";\n textRect = textElement.getBoundingClientRect();\n }\n // If you want the text to break lines and fill multi-line container, remove whiteSpace override:\n // textElement.style.whiteSpace = \"normal\";\n}\n/*\nExample usage (in a component or script):\n-----------------------------------------\nconst container = document.getElementById('text-container');\nconst textElement = document.getElementById('text-content');\n\nif (container && textElement) {\n fitTextToContainer(container, textElement, {\n maxFontSize: 72,\n minFontSize: 10,\n decrementFactor: 0.9\n });\n}\n*/\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/utils/autolayout/txt.ts?");
|
|
3299
|
+
|
|
3300
|
+
/***/ }),
|
|
3301
|
+
|
|
3291
3302
|
/***/ "./src/utils/data.ts":
|
|
3292
3303
|
/*!***************************!*\
|
|
3293
3304
|
!*** ./src/utils/data.ts ***!
|