@linkdlab/funcnodes_react_flow 0.3.10 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2626,7 +2626,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2626
2626
  \***************************************/
2627
2627
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2628
2628
 
2629
- 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 */ \"react\");\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 // const workersstate = fnrf_zst.workers();\n // const [reference, setReference] = useState<{ name: string; uuid: string }>({\n // name: \"None\",\n // uuid: \"\",\n // });\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: \"Create a new worker\" },\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, 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 ExportWorkerDialog = function (_a) {\n var _b, _c;\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), withFiles = _d[0], setWithFiles = _d[1];\n var workersstate = fnrf_zst.workers();\n var workerid = (_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid;\n var name = (workerid ? (_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name : undefined) ||\n workerid ||\n \"worker\";\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({ withFiles: withFiles })];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, name + \".fnw\", \"application/zip\");\n setOpen(false);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"Export Worker\", description: \"Export the worker as a .fnw file\" },\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: withFiles, onChange: function (e) {\n setWithFiles(e.currentTarget.checked);\n } }),\n \"Include Files\"),\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"button\", { className: \"styledbtn\", onClick: exportWorker }, \"Export\"))));\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 _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isExportWorkerDialogOpen = _c[0], setExportWorkerDialogOpen = _c[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 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 var has_worker_manager = fnrf_zst.options.useWorkerManager && fnrf_zst.workermanager;\n var show_select = has_worker_manager && Object.keys(workersstate).length > 0;\n var has_worker = fnrf_zst.worker && fnrf_zst.worker.is_open;\n var worker_restartable = has_worker && has_worker_manager;\n var show = has_worker_manager || has_worker;\n if (!show)\n return null;\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 show_select && (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, _b, _c;\n return (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (((_a = workersstate[workerid]) === null || _a === void 0 ? void 0 : _a.active)\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid) }, ((_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name) || workerid));\n })))))),\n has_worker && (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Fragment, null,\n worker_restartable && (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\", \n //onClick={exportWorker}\n onClick: function () { return setExportWorkerDialogOpen(true); } }, \"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 has_worker_manager && (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 react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(ExportWorkerDialog, { open: isExportWorkerDialogOpen, setOpen: setExportWorkerDialogOpen })));\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://@linkdlab/funcnodes_react_flow/./src/frontend/header/index.tsx?");
2629
+ 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 */ \"react\");\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 // const [copyLib, setCopyLib] = useState<boolean>(false);\n // const [copyNS, setCopyNS] = useState<boolean>(false);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n // const workersstate = fnrf_zst.workers();\n // const [reference, setReference] = useState<{ name: string; uuid: string }>({\n // name: \"None\",\n // uuid: \"\",\n // });\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: \"Create a new worker\" },\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, 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,\n // copyNS,\n });\n setOpen(false);\n } }, \"Create\"))))));\n};\nvar ExportWorkerDialog = function (_a) {\n var _b, _c;\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), withFiles = _d[0], setWithFiles = _d[1];\n var workersstate = fnrf_zst.workers();\n var workerid = (_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid;\n var name = (workerid ? (_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name : undefined) ||\n workerid ||\n \"worker\";\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({ withFiles: withFiles })];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, name + \".fnw\", \"application/zip\");\n setOpen(false);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"Export Worker\", description: \"Export the worker as a .fnw file\" },\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: withFiles, onChange: function (e) {\n setWithFiles(e.currentTarget.checked);\n } }),\n \"Include Files\"),\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"button\", { className: \"styledbtn\", onClick: exportWorker }, \"Export\"))));\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 _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isExportWorkerDialogOpen = _c[0], setExportWorkerDialogOpen = _c[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 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 var has_worker_manager = fnrf_zst.options.useWorkerManager && fnrf_zst.workermanager;\n var show_select = has_worker_manager && Object.keys(workersstate).length > 0;\n var has_worker = fnrf_zst.worker && fnrf_zst.worker.is_open;\n var worker_restartable = has_worker && has_worker_manager;\n var show = has_worker_manager || has_worker;\n if (!show)\n return null;\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 show_select && (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, _b, _c;\n return (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (((_a = workersstate[workerid]) === null || _a === void 0 ? void 0 : _a.active)\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid) }, ((_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name) || workerid));\n })))))),\n has_worker && (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Fragment, null,\n worker_restartable && (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\", \n //onClick={exportWorker}\n onClick: function () { return setExportWorkerDialogOpen(true); } }, \"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 has_worker_manager && (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 react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(ExportWorkerDialog, { open: isExportWorkerDialogOpen, setOpen: setExportWorkerDialogOpen })));\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://@linkdlab/funcnodes_react_flow/./src/frontend/header/index.tsx?");
2630
2630
 
2631
2631
  /***/ }),
2632
2632
 
@@ -2856,7 +2856,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2856
2856
  \***********************/
2857
2857
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2858
2858
 
2859
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuncNodes: () => (/* binding */ FuncNodes),\n/* harmony export */ FuncNodesContext: () => (/* reexport safe */ _frontend__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext),\n/* harmony export */ FuncNodesReactFlowZustand: () => (/* reexport safe */ _states__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ FuncNodesWorker: () => (/* reexport safe */ _funcnodes__WEBPACK_IMPORTED_MODULE_6__.FuncNodesWorker),\n/* harmony export */ ReactFlowLayer: () => (/* reexport safe */ _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ RenderMappingProvider: () => (/* reexport safe */ _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__.RenderMappingProvider),\n/* harmony export */ WebSocketWorker: () => (/* reexport safe */ _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ assert_full_node: () => (/* reexport safe */ _states_node__WEBPACK_IMPORTED_MODULE_9__.assert_full_node),\n/* harmony export */ deep_update: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_10__.deep_update),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ helperfunctions: () => (/* reexport safe */ _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var _frontend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./frontend */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./funcnodes/websocketworker */ \"./src/funcnodes/websocketworker.ts\");\n/* harmony import */ var _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/helperfunctions */ \"./src/utils/helperfunctions.ts\");\n/* harmony import */ var _states__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./states */ \"./src/states/index.ts\");\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-dom/client */ \"../node_modules/react-dom/client.js\");\n/* harmony import */ var _funcnodes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./funcnodes */ \"./src/funcnodes/index.ts\");\n/* harmony import */ var _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./frontend/datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./frontend/funcnodesreactflow/react_flow_layer */ \"./src/frontend/funcnodesreactflow/react_flow_layer.tsx\");\n/* harmony import */ var _states_node__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./states/node */ \"./src/states/node.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ \"./src/utils/index.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};\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar App = function (_a) {\n var id = _a.id, ws_url = _a.ws_url, on_sync_complete = _a.on_sync_complete, worker = _a.worker, useWorkerManager = _a.useWorkerManager;\n if (worker === undefined) {\n if (ws_url !== undefined) {\n useWorkerManager = false;\n worker = new _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n url: ws_url,\n uuid: id,\n on_sync_complete: on_sync_complete,\n });\n }\n }\n if (worker !== undefined) {\n var fnrf_zst = (0,_states__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n useWorkerManager: useWorkerManager,\n default_worker: worker,\n });\n worker.set_zustand(fnrf_zst);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", { className: \"App\", style: {\n height: \"100%\",\n width: \"100%\",\n } },\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"], { id: id, useWorkerManager: useWorkerManager, default_worker: worker, on_sync_complete: on_sync_complete })));\n};\nvar FuncNodes = function (id_or_element, options) {\n var id;\n var element;\n if (options === undefined) {\n options = {};\n }\n if (typeof id_or_element === \"string\") {\n id = id_or_element;\n element = document.getElementById(id);\n }\n else {\n element = id_or_element;\n id = element.id;\n }\n react_dom_client__WEBPACK_IMPORTED_MODULE_5__.createRoot(element).render(react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].StrictMode, null,\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(App, __assign({ id: id }, options))));\n};\n// @ts-ignore\nwindow.FuncNodes = FuncNodes;\n// import ReactDOM from \"react-dom\";\n// (async () => {\n// // @ts-ignore\n// window.React = await import(\"react\");\n// })();\n// window.ReactDOM = ReactDOM;\n// @ts-ignore\nwindow.React = react__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\n\n\n//# sourceURL=webpack://@linkdlab/funcnodes_react_flow/./src/index.tsx?");
2859
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuncNodes: () => (/* binding */ FuncNodes),\n/* harmony export */ FuncNodesContext: () => (/* reexport safe */ _frontend__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext),\n/* harmony export */ FuncNodesReactFlowZustand: () => (/* reexport safe */ _states__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ FuncNodesWorker: () => (/* reexport safe */ _funcnodes__WEBPACK_IMPORTED_MODULE_6__.FuncNodesWorker),\n/* harmony export */ ReactFlowLayer: () => (/* reexport safe */ _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ RenderMappingProvider: () => (/* reexport safe */ _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__.RenderMappingProvider),\n/* harmony export */ WebSocketWorker: () => (/* reexport safe */ _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ assert_full_node: () => (/* reexport safe */ _states_node__WEBPACK_IMPORTED_MODULE_9__.assert_full_node),\n/* harmony export */ deep_update: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_10__.deep_update),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ helperfunctions: () => (/* reexport safe */ _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var _frontend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./frontend */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./funcnodes/websocketworker */ \"./src/funcnodes/websocketworker.ts\");\n/* harmony import */ var _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/helperfunctions */ \"./src/utils/helperfunctions.ts\");\n/* harmony import */ var _states__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./states */ \"./src/states/index.ts\");\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-dom/client */ \"../node_modules/react-dom/client.js\");\n/* harmony import */ var _funcnodes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./funcnodes */ \"./src/funcnodes/index.ts\");\n/* harmony import */ var _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./frontend/datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./frontend/funcnodesreactflow/react_flow_layer */ \"./src/frontend/funcnodesreactflow/react_flow_layer.tsx\");\n/* harmony import */ var _states_node__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./states/node */ \"./src/states/node.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ \"./src/utils/index.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};\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar App = function (_a) {\n var id = _a.id, ws_url = _a.ws_url, on_sync_complete = _a.on_sync_complete, worker = _a.worker, useWorkerManager = _a.useWorkerManager;\n if (worker === undefined) {\n if (ws_url !== undefined) {\n useWorkerManager = false;\n worker = new _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n url: ws_url,\n uuid: id,\n on_sync_complete: on_sync_complete,\n });\n }\n }\n if (worker !== undefined) {\n var fnrf_zst = (0,_states__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n useWorkerManager: useWorkerManager,\n default_worker: worker,\n });\n worker.set_zustand(fnrf_zst);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(\"div\", { className: \"App\", style: {\n height: \"100%\",\n width: \"100%\",\n } },\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"], { id: id, useWorkerManager: useWorkerManager, default_worker: worker, on_sync_complete: on_sync_complete })));\n};\nvar FuncNodes = function (id_or_element, options) {\n var id;\n var element;\n if (options === undefined) {\n options = {};\n }\n if (typeof id_or_element === \"string\") {\n id = id_or_element;\n element = document.getElementById(id);\n }\n else {\n element = id_or_element;\n id = element.id;\n }\n react_dom_client__WEBPACK_IMPORTED_MODULE_5__.createRoot(element).render(react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].StrictMode, null,\n react__WEBPACK_IMPORTED_MODULE_0__[\"default\"].createElement(App, __assign({ id: id }, options))));\n};\n// @ts-ignore\nwindow.FuncNodes = FuncNodes;\n\n\n\n//# sourceURL=webpack://@linkdlab/funcnodes_react_flow/./src/index.tsx?");
2860
2860
 
2861
2861
  /***/ }),
2862
2862
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,oBAAoB,EAAE,EAC3B,cAAc,EACd,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,yBAAyB,EAAE,EAChC,kCAAkC,EACnC,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,cAEN,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,eAAe,kBAAkB,CAAC;AAElC,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAgDD,QAAA,MAAM,SAAS,kBACE,MAAM,GAAG,WAAW,YACzB,mBAAmB,SAsB9B,CAAC;AAeF,OAAO,EACL,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,CAAC;AACF,YAAY,EACV,MAAM,EACN,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,oBAAoB,EAAE,EAC3B,cAAc,EACd,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,yBAAyB,EAAE,EAChC,kCAAkC,EACnC,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,cAAc,MAAM,gDAAgD,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,eAAe,kBAAkB,CAAC;AAElC,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAgDD,QAAA,MAAM,SAAS,kBACE,MAAM,GAAG,WAAW,YACzB,mBAAmB,SAsB9B,CAAC;AAKF,OAAO,EACL,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,eAAe,GAChB,CAAC;AACF,YAAY,EACV,MAAM,EACN,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAC"}
@@ -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 // const workersstate = fnrf_zst.workers();\n // const [reference, setReference] = useState<{ name: string; uuid: string }>({\n // name: \"None\",\n // uuid: \"\",\n // });\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: \"Create a new worker\" },\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, 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 ExportWorkerDialog = function (_a) {\n var _b, _c;\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), withFiles = _d[0], setWithFiles = _d[1];\n var workersstate = fnrf_zst.workers();\n var workerid = (_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid;\n var name = (workerid ? (_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name : undefined) ||\n workerid ||\n \"worker\";\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({ withFiles: withFiles })];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, name + \".fnw\", \"application/zip\");\n setOpen(false);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"Export Worker\", description: \"Export the worker as a .fnw file\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: withFiles, onChange: function (e) {\n setWithFiles(e.currentTarget.checked);\n } }),\n \"Include Files\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\", onClick: exportWorker }, \"Export\"))));\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 _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isExportWorkerDialogOpen = _c[0], setExportWorkerDialogOpen = _c[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 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 var has_worker_manager = fnrf_zst.options.useWorkerManager && fnrf_zst.workermanager;\n var show_select = has_worker_manager && Object.keys(workersstate).length > 0;\n var has_worker = fnrf_zst.worker && fnrf_zst.worker.is_open;\n var worker_restartable = has_worker && has_worker_manager;\n var show = has_worker_manager || has_worker;\n if (!show)\n return null;\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 show_select && (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, _b, _c;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (((_a = workersstate[workerid]) === null || _a === void 0 ? void 0 : _a.active)\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid) }, ((_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name) || workerid));\n })))))),\n has_worker && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n worker_restartable && (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\", \n //onClick={exportWorker}\n onClick: function () { return setExportWorkerDialogOpen(true); } }, \"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 has_worker_manager && (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 react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExportWorkerDialog, { open: isExportWorkerDialogOpen, setOpen: setExportWorkerDialogOpen })));\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 // const [copyLib, setCopyLib] = useState<boolean>(false);\n // const [copyNS, setCopyNS] = useState<boolean>(false);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n // const workersstate = fnrf_zst.workers();\n // const [reference, setReference] = useState<{ name: string; uuid: string }>({\n // name: \"None\",\n // uuid: \"\",\n // });\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: \"Create a new worker\" },\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, 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,\n // copyNS,\n });\n setOpen(false);\n } }, \"Create\"))))));\n};\nvar ExportWorkerDialog = function (_a) {\n var _b, _c;\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), withFiles = _d[0], setWithFiles = _d[1];\n var workersstate = fnrf_zst.workers();\n var workerid = (_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid;\n var name = (workerid ? (_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name : undefined) ||\n workerid ||\n \"worker\";\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({ withFiles: withFiles })];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, name + \".fnw\", \"application/zip\");\n setOpen(false);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"Export Worker\", description: \"Export the worker as a .fnw file\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: withFiles, onChange: function (e) {\n setWithFiles(e.currentTarget.checked);\n } }),\n \"Include Files\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\", onClick: exportWorker }, \"Export\"))));\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 _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isExportWorkerDialogOpen = _c[0], setExportWorkerDialogOpen = _c[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 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 var has_worker_manager = fnrf_zst.options.useWorkerManager && fnrf_zst.workermanager;\n var show_select = has_worker_manager && Object.keys(workersstate).length > 0;\n var has_worker = fnrf_zst.worker && fnrf_zst.worker.is_open;\n var worker_restartable = has_worker && has_worker_manager;\n var show = has_worker_manager || has_worker;\n if (!show)\n return null;\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 show_select && (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, _b, _c;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (((_a = workersstate[workerid]) === null || _a === void 0 ? void 0 : _a.active)\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.uuid) }, ((_c = workersstate[workerid]) === null || _c === void 0 ? void 0 : _c.name) || workerid));\n })))))),\n has_worker && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n worker_restartable && (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\", \n //onClick={exportWorker}\n onClick: function () { return setExportWorkerDialogOpen(true); } }, \"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 has_worker_manager && (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 react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExportWorkerDialog, { open: isExportWorkerDialogOpen, setOpen: setExportWorkerDialogOpen })));\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
 
@@ -3207,7 +3207,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3207
3207
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3208
3208
 
3209
3209
  "use strict";
3210
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuncNodes: () => (/* binding */ FuncNodes),\n/* harmony export */ FuncNodesContext: () => (/* reexport safe */ _frontend__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext),\n/* harmony export */ FuncNodesReactFlowZustand: () => (/* reexport safe */ _states__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ FuncNodesWorker: () => (/* reexport safe */ _funcnodes__WEBPACK_IMPORTED_MODULE_6__.FuncNodesWorker),\n/* harmony export */ ReactFlowLayer: () => (/* reexport safe */ _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ RenderMappingProvider: () => (/* reexport safe */ _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__.RenderMappingProvider),\n/* harmony export */ WebSocketWorker: () => (/* reexport safe */ _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ assert_full_node: () => (/* reexport safe */ _states_node__WEBPACK_IMPORTED_MODULE_9__.assert_full_node),\n/* harmony export */ deep_update: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_10__.deep_update),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ helperfunctions: () => (/* reexport safe */ _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\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 _frontend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./frontend */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./funcnodes/websocketworker */ \"./src/funcnodes/websocketworker.ts\");\n/* harmony import */ var _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/helperfunctions */ \"./src/utils/helperfunctions.ts\");\n/* harmony import */ var _states__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./states */ \"./src/states/index.ts\");\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-dom/client */ \"../node_modules/react-dom/client.js\");\n/* harmony import */ var _funcnodes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./funcnodes */ \"./src/funcnodes/index.ts\");\n/* harmony import */ var _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./frontend/datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./frontend/funcnodesreactflow/react_flow_layer */ \"./src/frontend/funcnodesreactflow/react_flow_layer.tsx\");\n/* harmony import */ var _states_node__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./states/node */ \"./src/states/node.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ \"./src/utils/index.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};\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar App = function (_a) {\n var id = _a.id, ws_url = _a.ws_url, on_sync_complete = _a.on_sync_complete, worker = _a.worker, useWorkerManager = _a.useWorkerManager;\n if (worker === undefined) {\n if (ws_url !== undefined) {\n useWorkerManager = false;\n worker = new _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n url: ws_url,\n uuid: id,\n on_sync_complete: on_sync_complete,\n });\n }\n }\n if (worker !== undefined) {\n var fnrf_zst = (0,_states__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n useWorkerManager: useWorkerManager,\n default_worker: worker,\n });\n worker.set_zustand(fnrf_zst);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"App\", style: {\n height: \"100%\",\n width: \"100%\",\n } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"], { id: id, useWorkerManager: useWorkerManager, default_worker: worker, on_sync_complete: on_sync_complete })));\n};\nvar FuncNodes = function (id_or_element, options) {\n var id;\n var element;\n if (options === undefined) {\n options = {};\n }\n if (typeof id_or_element === \"string\") {\n id = id_or_element;\n element = document.getElementById(id);\n }\n else {\n element = id_or_element;\n id = element.id;\n }\n react_dom_client__WEBPACK_IMPORTED_MODULE_5__.createRoot(element).render(react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().StrictMode), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(App, __assign({ id: id }, options))));\n};\n// @ts-ignore\nwindow.FuncNodes = FuncNodes;\n// import ReactDOM from \"react-dom\";\n// (async () => {\n// // @ts-ignore\n// window.React = await import(\"react\");\n// })();\n// window.ReactDOM = ReactDOM;\n// @ts-ignore\nwindow.React = (react__WEBPACK_IMPORTED_MODULE_0___default());\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/index.tsx?");
3210
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuncNodes: () => (/* binding */ FuncNodes),\n/* harmony export */ FuncNodesContext: () => (/* reexport safe */ _frontend__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext),\n/* harmony export */ FuncNodesReactFlowZustand: () => (/* reexport safe */ _states__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ FuncNodesWorker: () => (/* reexport safe */ _funcnodes__WEBPACK_IMPORTED_MODULE_6__.FuncNodesWorker),\n/* harmony export */ ReactFlowLayer: () => (/* reexport safe */ _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ RenderMappingProvider: () => (/* reexport safe */ _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__.RenderMappingProvider),\n/* harmony export */ WebSocketWorker: () => (/* reexport safe */ _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ assert_full_node: () => (/* reexport safe */ _states_node__WEBPACK_IMPORTED_MODULE_9__.assert_full_node),\n/* harmony export */ deep_update: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_10__.deep_update),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ helperfunctions: () => (/* reexport safe */ _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\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 _frontend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./frontend */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./funcnodes/websocketworker */ \"./src/funcnodes/websocketworker.ts\");\n/* harmony import */ var _utils_helperfunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/helperfunctions */ \"./src/utils/helperfunctions.ts\");\n/* harmony import */ var _states__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./states */ \"./src/states/index.ts\");\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-dom/client */ \"../node_modules/react-dom/client.js\");\n/* harmony import */ var _funcnodes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./funcnodes */ \"./src/funcnodes/index.ts\");\n/* harmony import */ var _frontend_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./frontend/datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _frontend_funcnodesreactflow_react_flow_layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./frontend/funcnodesreactflow/react_flow_layer */ \"./src/frontend/funcnodesreactflow/react_flow_layer.tsx\");\n/* harmony import */ var _states_node__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./states/node */ \"./src/states/node.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ \"./src/utils/index.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};\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar App = function (_a) {\n var id = _a.id, ws_url = _a.ws_url, on_sync_complete = _a.on_sync_complete, worker = _a.worker, useWorkerManager = _a.useWorkerManager;\n if (worker === undefined) {\n if (ws_url !== undefined) {\n useWorkerManager = false;\n worker = new _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n url: ws_url,\n uuid: id,\n on_sync_complete: on_sync_complete,\n });\n }\n }\n if (worker !== undefined) {\n var fnrf_zst = (0,_states__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n useWorkerManager: useWorkerManager,\n default_worker: worker,\n });\n worker.set_zustand(fnrf_zst);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"App\", style: {\n height: \"100%\",\n width: \"100%\",\n } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_frontend__WEBPACK_IMPORTED_MODULE_1__[\"default\"], { id: id, useWorkerManager: useWorkerManager, default_worker: worker, on_sync_complete: on_sync_complete })));\n};\nvar FuncNodes = function (id_or_element, options) {\n var id;\n var element;\n if (options === undefined) {\n options = {};\n }\n if (typeof id_or_element === \"string\") {\n id = id_or_element;\n element = document.getElementById(id);\n }\n else {\n element = id_or_element;\n id = element.id;\n }\n react_dom_client__WEBPACK_IMPORTED_MODULE_5__.createRoot(element).render(react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().StrictMode), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(App, __assign({ id: id }, options))));\n};\n// @ts-ignore\nwindow.FuncNodes = FuncNodes;\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/index.tsx?");
3211
3211
 
3212
3212
  /***/ }),
3213
3213
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linkdlab/funcnodes_react_flow",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "Frontend with React Flow for FuncNodes",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,6 +15,7 @@
15
15
  "type": "module",
16
16
  "source": "src/index.tsx",
17
17
  "main": "dist/umd/index.umd.js",
18
+ "module": "dist/esm/index.esm.js",
18
19
  "types": "dist/types/index.d.ts",
19
20
  "style": "dist/css/style.css",
20
21
  "files": [