@linkdlab/funcnodes_react_flow 0.3.9 → 0.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/style.css +1 -1
- package/dist/esm/index.esm.js +17 -12
- package/dist/types/frontend/datarenderer/rendermappings.d.ts +1 -1
- package/dist/types/frontend/datarenderer/rendermappings.d.ts.map +1 -1
- package/dist/types/frontend/funcnodesreactflow/index.d.ts.map +1 -1
- package/dist/types/frontend/funcnodesreactflow/react_flow_layer.d.ts +5 -1
- package/dist/types/frontend/funcnodesreactflow/react_flow_layer.d.ts.map +1 -1
- package/dist/types/frontend/header/index.d.ts.map +1 -1
- package/dist/types/frontend/lib.d.ts.map +1 -1
- package/dist/types/frontend/node/node.d.ts.map +1 -1
- package/dist/types/funcnodes/funcnodesworker.d.ts +4 -2
- package/dist/types/funcnodes/funcnodesworker.d.ts.map +1 -1
- package/dist/types/funcnodes/websocketworker.d.ts.map +1 -1
- package/dist/types/index.d.ts +12 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/plugin/index.d.ts +1 -1
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/renderer.d.ts +24 -0
- package/dist/types/plugin/renderer.d.ts.map +1 -0
- package/dist/types/states/fnrfzst.t.d.ts +10 -3
- package/dist/types/states/fnrfzst.t.d.ts.map +1 -1
- package/dist/types/states/lib.t.d.ts +5 -5
- package/dist/types/states/lib.t.d.ts.map +1 -1
- package/dist/types/states/node.t.d.ts +1 -0
- package/dist/types/states/node.t.d.ts.map +1 -1
- package/dist/umd/index.umd.js +11 -11
- package/package.json +76 -76
package/dist/umd/index.umd.js
CHANGED
|
@@ -2899,7 +2899,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2899
2899
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2900
2900
|
|
|
2901
2901
|
"use strict";
|
|
2902
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DynamicComponentLoader: () => (/* binding */ DynamicComponentLoader),\n/* harmony export */ RenderMappingContext: () => (/* binding */ RenderMappingContext),\n/* harmony export */ RenderMappingProvider: () => (/* binding */ RenderMappingProvider)\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 _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node/io/default_input_renderer */ \"./src/frontend/node/io/default_input_renderer.tsx\");\n/* harmony import */ var _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./default_preview_renderer */ \"./src/frontend/datarenderer/default_preview_renderer.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\nvar _Inputrenderer = {\n float: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.FloatInput,\n int: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.IntegerInput,\n bool: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.BooleanInput,\n string: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.StringInput,\n str: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.StringInput,\n color: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.ColorInput,\n select: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.SelectionInput,\n enum: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.SelectionInput,\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesOutput,\n};\nvar _Outputrenderer = {};\nvar _HandlePreviewGenerators = {\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesOutput,\n};\nvar _InLineGenerators = {\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesInLineOutput,\n};\nvar _DataOverlayViewGenerators = {};\nvar _DataPreviewViewRenderer = {\n string: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.SingleValueOutput,\n table: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.TableOutput,\n image: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64ImageOutput,\n svg: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.SVGImageOutput,\n dict: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.DictOutput,\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesOutput,\n};\nvar _DataViewRenderer = {};\nvar _initialRenderMappings = {\n Inputrenderer: _Inputrenderer,\n Outputrenderer: _Outputrenderer,\n HandlePreviewRenderer: _HandlePreviewGenerators,\n DataOverlayRenderer: _DataOverlayViewGenerators,\n DataPreviewViewRenderer: _DataPreviewViewRenderer,\n DataViewRenderer: _DataViewRenderer,\n InLineRenderer: _InLineGenerators,\n};\nvar renderMappingReducer = function (state, action) {\n var _a, _b, _c, _d, _e, _f;\n var options = action.options || {};\n var overwrite = options.overwrite === undefined ? true : options.overwrite;\n switch (action.type) {\n case \"EXTEND_INPUT_RENDER\":\n if (!overwrite && state.Inputrenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { Inputrenderer: __assign(__assign({}, state.Inputrenderer), (_a = {}, _a[action.payload.type] = action.payload.component, _a)) });\n case \"EXTEND_OUTPUT_RENDER\":\n if (!overwrite && state.Outputrenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { Outputrenderer: __assign(__assign({}, state.Outputrenderer), (_b = {}, _b[action.payload.type] = action.payload.component, _b)) });\n case \"EXTEND_HANDLE_PREVIEW_RENDER\":\n if (!overwrite && state.HandlePreviewRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { HandlePreviewRenderer: __assign(__assign({}, state.HandlePreviewRenderer), (_c = {}, _c[action.payload.type] = action.payload.component, _c)) });\n case \"EXTEND_DATA_OVERLAY_RENDER\":\n if (!overwrite && state.DataOverlayRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { DataOverlayRenderer: __assign(__assign({}, state.DataOverlayRenderer), (_d = {}, _d[action.payload.type] = action.payload.component, _d)) });\n case \"EXTEND_DATA_PREVIEW_RENDER\":\n if (!overwrite && state.DataPreviewViewRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { DataPreviewViewRenderer: __assign(__assign({}, state.DataPreviewViewRenderer), (_e = {}, _e[action.payload.type] = action.payload.component, _e)) });\n case \"EXTEND_DATA_VIEW_RENDER\":\n if (!overwrite && state.DataViewRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { DataViewRenderer: __assign(__assign({}, state.DataViewRenderer), (_f = {}, _f[action.payload.type] = action.payload.component, _f)) });\n case \"EXTEND_FROM_PLUGIN\":\n var something_new = false;\n var checkpairs = [\n [action.payload.plugin.input_renderers || {}, state.Inputrenderer],\n [action.payload.plugin.output_renderers || {}, state.Outputrenderer],\n [\n action.payload.plugin.handle_preview_renderers || {},\n state.HandlePreviewRenderer,\n ],\n [\n action.payload.plugin.data_overlay_renderers || {},\n state.DataOverlayRenderer,\n ],\n [\n action.payload.plugin.data_preview_renderers || {},\n state.DataPreviewViewRenderer,\n ],\n [\n action.payload.plugin.data_view_renderers || {},\n state.DataViewRenderer,\n ],\n ];\n for (var _i = 0, checkpairs_1 = checkpairs; _i < checkpairs_1.length; _i++) {\n var _g = checkpairs_1[_i], new_renderer = _g[0], old_renderer = _g[1];\n if (Object.keys(new_renderer).length > 0) {\n if (overwrite) {\n something_new = true;\n }\n else {\n for (var key in new_renderer) {\n if (!old_renderer[key]) {\n something_new = true;\n break;\n }\n }\n }\n }\n if (something_new)\n break;\n }\n if (!something_new) {\n return state;\n }\n for (var _h = 0, checkpairs_2 = checkpairs; _h < checkpairs_2.length; _h++) {\n var _j = checkpairs_2[_h], new_renderer = _j[0], old_renderer = _j[1];\n for (var key in new_renderer) {\n if (overwrite || !old_renderer[key]) {\n old_renderer[key] = new_renderer[key];\n }\n }\n }\n var newstate = __assign({}, state);\n return newstate;\n default:\n return state;\n }\n};\n/**\n * RenderMappingProvider is a React component that provides a context for managing and extending the mappings of input renderers, handle preview renderers, data overlay renderers, data preview view renderers, and data view renderers. These mappings are used throughout the application to render various types of inputs, previews, and data views dynamically.\n\n * The provider initializes with a set of default mappings and allows these mappings to be extended or overwritten via actions dispatched within the component's reducer. Additionally, it can automatically integrate renderer plugins, extending the functionality based on the provided plugins.\n\n * @param {object} props - The props object for the RenderMappingProvider component.\n * @param {ReactElement} props.children - The child components that will be wrapped by the provider.\n * @param {object} props.plugins - An object containing various FuncNodesReactPlugin instances, which may include renderer plugins to be integrated into the render mappings.\n\n * @returns {JSX.Element} A JSX element that provides the render mapping context to its children.\n\n * Context Value:\n * The context value provided by this component includes the following properties and functions:\n * - Inputrenderer: A mapping of input types to their corresponding renderer components.\n * - Outputrenderer: A mapping of output types to their corresponding renderer components.\n * - HandlePreviewRenderer: A mapping of handle preview types to their corresponding renderer components.\n * - DataOverlayRenderer: A mapping of data overlay types to their corresponding renderer components.\n * - DataPreviewViewRenderer: A mapping of data preview view types to their corresponding renderer components.\n * - DataViewRenderer: A mapping of data view types to their corresponding renderer components.\n * - extendInputRenderMapping: A function to extend the input renderer mapping.\n * - extendOutputRenderMapping: A function to extend the output renderer mapping.\n * - extendHandlePreviewRenderMapping: A function to extend the handle preview renderer mapping.\n * - extendDataOverlayRenderMapping: A function to extend the data overlay renderer mapping.\n * - extendDataPreviewRenderMapping: A function to extend the data preview view renderer mapping.\n * - extendDataViewRenderMapping: A function to extend the data view renderer mapping.\n * - extendFromPlugin: A function to extend all relevant mappings from a given renderer plugin.\n\n * Example usage:\n * ```jsx\n * <RenderMappingProvider plugins={myPlugins}>\n * <MyComponent />\n * </RenderMappingProvider>\n * ```\n */\nvar RenderMappingProvider = function (_a) {\n var children = _a.children, plugins = _a.plugins, fnrf_zst = _a.fnrf_zst;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(renderMappingReducer, _initialRenderMappings), state = _b[0], dispatch = _b[1];\n var extendInputRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_INPUT_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendOutputRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_OUTPUT_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendHandlePreviewRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_HANDLE_PREVIEW_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendDataOverlayRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_DATA_OVERLAY_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendDataPreviewRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_DATA_PREVIEW_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendDataViewRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_DATA_VIEW_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendFromPlugin = function (plugin, options) {\n dispatch({\n type: \"EXTEND_FROM_PLUGIN\",\n payload: { plugin: plugin },\n options: options,\n });\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n for (var plugin in plugins) {\n var renderplug = plugins[plugin].RendererPlugin;\n if (renderplug)\n extendFromPlugin(renderplug);\n var renderpluginfactory = plugins[plugin].renderpluginfactory;\n if (renderpluginfactory) {\n extendFromPlugin(renderpluginfactory({ React: (react__WEBPACK_IMPORTED_MODULE_0___default()), fnrf_zst: fnrf_zst }));\n }\n }\n }, [plugins]);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RenderMappingContext.Provider, { value: {\n Inputrenderer: state.Inputrenderer,\n Outputrenderer: state.Outputrenderer,\n HandlePreviewRenderer: state.HandlePreviewRenderer,\n DataOverlayRenderer: state.DataOverlayRenderer,\n DataPreviewViewRenderer: state.DataPreviewViewRenderer,\n DataViewRenderer: state.DataViewRenderer,\n InLineRenderer: state.InLineRenderer,\n extendInputRenderMapping: extendInputRenderMapping,\n extendOutputRenderMapping: extendOutputRenderMapping,\n extendHandlePreviewRenderMapping: extendHandlePreviewRenderMapping,\n extendDataOverlayRenderMapping: extendDataOverlayRenderMapping,\n extendDataPreviewRenderMapping: extendDataPreviewRenderMapping,\n extendDataViewRenderMapping: extendDataViewRenderMapping,\n extendFromPlugin: extendFromPlugin,\n } }, children));\n};\nvar RenderMappingContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({\n Inputrenderer: _initialRenderMappings.Inputrenderer,\n Outputrenderer: _initialRenderMappings.Outputrenderer,\n HandlePreviewRenderer: _initialRenderMappings.HandlePreviewRenderer,\n DataOverlayRenderer: _initialRenderMappings.DataOverlayRenderer,\n DataPreviewViewRenderer: _initialRenderMappings.DataPreviewViewRenderer,\n DataViewRenderer: _initialRenderMappings.DataViewRenderer,\n InLineRenderer: _initialRenderMappings.InLineRenderer,\n extendInputRenderMapping: function (_type, _component, _options) { },\n extendOutputRenderMapping: function (_type, _component, _options) { },\n extendHandlePreviewRenderMapping: function (_type, _component, _options) { },\n extendDataOverlayRenderMapping: function (_type, _component, _options) { },\n extendDataPreviewRenderMapping: function (_type, _component, _options) { },\n extendDataViewRenderMapping: function (_type, _component, _options) { },\n extendFromPlugin: function (_plugin, _options) { },\n});\nvar DynamicComponentLoader = function (_a) {\n var Component = _a.component, props = __rest(_a, [\"component\"]);\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Component, __assign({}, props));\n};\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/datarenderer/rendermappings.tsx?");
|
|
2902
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DynamicComponentLoader: () => (/* binding */ DynamicComponentLoader),\n/* harmony export */ RenderMappingContext: () => (/* binding */ RenderMappingContext),\n/* harmony export */ RenderMappingProvider: () => (/* binding */ RenderMappingProvider)\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 _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node/io/default_input_renderer */ \"./src/frontend/node/io/default_input_renderer.tsx\");\n/* harmony import */ var _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./default_preview_renderer */ \"./src/frontend/datarenderer/default_preview_renderer.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\nvar _Inputrenderer = {\n float: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.FloatInput,\n int: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.IntegerInput,\n bool: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.BooleanInput,\n string: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.StringInput,\n str: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.StringInput,\n color: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.ColorInput,\n select: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.SelectionInput,\n enum: _node_io_default_input_renderer__WEBPACK_IMPORTED_MODULE_1__.SelectionInput,\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesOutput,\n};\nvar _Outputrenderer = {};\nvar _HandlePreviewGenerators = {\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesOutput,\n};\nvar _InLineGenerators = {\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesInLineOutput,\n};\nvar _DataOverlayViewGenerators = {};\nvar _DataPreviewViewRenderer = {\n string: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.SingleValueOutput,\n table: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.TableOutput,\n image: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64ImageOutput,\n svg: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.SVGImageOutput,\n dict: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.DictOutput,\n bytes: _default_preview_renderer__WEBPACK_IMPORTED_MODULE_2__.Base64BytesOutput,\n};\nvar _DataViewRenderer = {};\nvar _initialRenderMappings = {\n Inputrenderer: _Inputrenderer,\n Outputrenderer: _Outputrenderer,\n HandlePreviewRenderer: _HandlePreviewGenerators,\n DataOverlayRenderer: _DataOverlayViewGenerators,\n DataPreviewViewRenderer: _DataPreviewViewRenderer,\n DataViewRenderer: _DataViewRenderer,\n InLineRenderer: _InLineGenerators,\n};\nvar renderMappingReducer = function (state, action) {\n var _a, _b, _c, _d, _e, _f;\n var options = action.options || {};\n var overwrite = options.overwrite === undefined ? true : options.overwrite;\n switch (action.type) {\n case \"EXTEND_INPUT_RENDER\":\n if (!overwrite && state.Inputrenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { Inputrenderer: __assign(__assign({}, state.Inputrenderer), (_a = {}, _a[action.payload.type] = action.payload.component, _a)) });\n case \"EXTEND_OUTPUT_RENDER\":\n if (!overwrite && state.Outputrenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { Outputrenderer: __assign(__assign({}, state.Outputrenderer), (_b = {}, _b[action.payload.type] = action.payload.component, _b)) });\n case \"EXTEND_HANDLE_PREVIEW_RENDER\":\n if (!overwrite && state.HandlePreviewRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { HandlePreviewRenderer: __assign(__assign({}, state.HandlePreviewRenderer), (_c = {}, _c[action.payload.type] = action.payload.component, _c)) });\n case \"EXTEND_DATA_OVERLAY_RENDER\":\n if (!overwrite && state.DataOverlayRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { DataOverlayRenderer: __assign(__assign({}, state.DataOverlayRenderer), (_d = {}, _d[action.payload.type] = action.payload.component, _d)) });\n case \"EXTEND_DATA_PREVIEW_RENDER\":\n if (!overwrite && state.DataPreviewViewRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { DataPreviewViewRenderer: __assign(__assign({}, state.DataPreviewViewRenderer), (_e = {}, _e[action.payload.type] = action.payload.component, _e)) });\n case \"EXTEND_DATA_VIEW_RENDER\":\n if (!overwrite && state.DataViewRenderer[action.payload.type]) {\n return state;\n }\n return __assign(__assign({}, state), { DataViewRenderer: __assign(__assign({}, state.DataViewRenderer), (_f = {}, _f[action.payload.type] = action.payload.component, _f)) });\n case \"EXTEND_FROM_PLUGIN\":\n var something_new = false;\n var checkpairs = [\n [action.payload.plugin.input_renderers || {}, state.Inputrenderer],\n [action.payload.plugin.output_renderers || {}, state.Outputrenderer],\n [\n action.payload.plugin.handle_preview_renderers || {},\n state.HandlePreviewRenderer,\n ],\n [\n action.payload.plugin.data_overlay_renderers || {},\n state.DataOverlayRenderer,\n ],\n [\n action.payload.plugin.data_preview_renderers || {},\n state.DataPreviewViewRenderer,\n ],\n [\n action.payload.plugin.data_view_renderers || {},\n state.DataViewRenderer,\n ],\n ];\n for (var _i = 0, checkpairs_1 = checkpairs; _i < checkpairs_1.length; _i++) {\n var _g = checkpairs_1[_i], new_renderer = _g[0], old_renderer = _g[1];\n if (Object.keys(new_renderer).length > 0) {\n if (overwrite) {\n something_new = true;\n }\n else {\n for (var key in new_renderer) {\n if (!old_renderer[key]) {\n something_new = true;\n break;\n }\n }\n }\n }\n if (something_new)\n break;\n }\n if (!something_new) {\n return state;\n }\n for (var _h = 0, checkpairs_2 = checkpairs; _h < checkpairs_2.length; _h++) {\n var _j = checkpairs_2[_h], new_renderer = _j[0], old_renderer = _j[1];\n for (var key in new_renderer) {\n if (overwrite || !old_renderer[key]) {\n old_renderer[key] = new_renderer[key];\n }\n }\n }\n var newstate = __assign({}, state);\n return newstate;\n default:\n return state;\n }\n};\n/**\n * RenderMappingProvider is a React component that provides a context for managing and extending the mappings of input renderers, handle preview renderers, data overlay renderers, data preview view renderers, and data view renderers. These mappings are used throughout the application to render various types of inputs, previews, and data views dynamically.\n\n * The provider initializes with a set of default mappings and allows these mappings to be extended or overwritten via actions dispatched within the component's reducer. Additionally, it can automatically integrate renderer plugins, extending the functionality based on the provided plugins.\n\n * @param {object} props - The props object for the RenderMappingProvider component.\n * @param {ReactElement} props.children - The child components that will be wrapped by the provider.\n * @param {object} props.plugins - An object containing various FuncNodesReactPlugin instances, which may include renderer plugins to be integrated into the render mappings.\n\n * @returns {JSX.Element} A JSX element that provides the render mapping context to its children.\n\n * Context Value:\n * The context value provided by this component includes the following properties and functions:\n * - Inputrenderer: A mapping of input types to their corresponding renderer components.\n * - Outputrenderer: A mapping of output types to their corresponding renderer components.\n * - HandlePreviewRenderer: A mapping of handle preview types to their corresponding renderer components.\n * - DataOverlayRenderer: A mapping of data overlay types to their corresponding renderer components.\n * - DataPreviewViewRenderer: A mapping of data preview view types to their corresponding renderer components.\n * - DataViewRenderer: A mapping of data view types to their corresponding renderer components.\n * - extendInputRenderMapping: A function to extend the input renderer mapping.\n * - extendOutputRenderMapping: A function to extend the output renderer mapping.\n * - extendHandlePreviewRenderMapping: A function to extend the handle preview renderer mapping.\n * - extendDataOverlayRenderMapping: A function to extend the data overlay renderer mapping.\n * - extendDataPreviewRenderMapping: A function to extend the data preview view renderer mapping.\n * - extendDataViewRenderMapping: A function to extend the data view renderer mapping.\n * - extendFromPlugin: A function to extend all relevant mappings from a given renderer plugin.\n\n * Example usage:\n * ```jsx\n * <RenderMappingProvider plugins={myPlugins}>\n * <MyComponent />\n * </RenderMappingProvider>\n * ```\n */\nvar RenderMappingProvider = function (_a) {\n var children = _a.children, plugins = _a.plugins, fnrf_zst = _a.fnrf_zst;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(renderMappingReducer, _initialRenderMappings), state = _b[0], dispatch = _b[1];\n var extendInputRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_INPUT_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendOutputRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_OUTPUT_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendHandlePreviewRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_HANDLE_PREVIEW_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendDataOverlayRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_DATA_OVERLAY_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendDataPreviewRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_DATA_PREVIEW_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendDataViewRenderMapping = function (type, component, options) {\n dispatch({\n type: \"EXTEND_DATA_VIEW_RENDER\",\n payload: { type: type, component: component },\n options: options,\n });\n };\n var extendFromPlugin = function (plugin, options) {\n dispatch({\n type: \"EXTEND_FROM_PLUGIN\",\n payload: { plugin: plugin },\n options: options,\n });\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n for (var plugin in plugins) {\n var renderplugin = plugins[plugin].RendererPlugin;\n if (renderplugin)\n extendFromPlugin(renderplugin);\n var renderpluginfactory = plugins[plugin].renderpluginfactory;\n if (renderpluginfactory) {\n extendFromPlugin(renderpluginfactory({ React: (react__WEBPACK_IMPORTED_MODULE_0___default()), fnrf_zst: fnrf_zst }));\n }\n }\n }, [plugins]);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RenderMappingContext.Provider, { value: {\n Inputrenderer: state.Inputrenderer,\n Outputrenderer: state.Outputrenderer,\n HandlePreviewRenderer: state.HandlePreviewRenderer,\n DataOverlayRenderer: state.DataOverlayRenderer,\n DataPreviewViewRenderer: state.DataPreviewViewRenderer,\n DataViewRenderer: state.DataViewRenderer,\n InLineRenderer: state.InLineRenderer,\n extendInputRenderMapping: extendInputRenderMapping,\n extendOutputRenderMapping: extendOutputRenderMapping,\n extendHandlePreviewRenderMapping: extendHandlePreviewRenderMapping,\n extendDataOverlayRenderMapping: extendDataOverlayRenderMapping,\n extendDataPreviewRenderMapping: extendDataPreviewRenderMapping,\n extendDataViewRenderMapping: extendDataViewRenderMapping,\n extendFromPlugin: extendFromPlugin,\n } }, children));\n};\nvar RenderMappingContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({\n Inputrenderer: _initialRenderMappings.Inputrenderer,\n Outputrenderer: _initialRenderMappings.Outputrenderer,\n HandlePreviewRenderer: _initialRenderMappings.HandlePreviewRenderer,\n DataOverlayRenderer: _initialRenderMappings.DataOverlayRenderer,\n DataPreviewViewRenderer: _initialRenderMappings.DataPreviewViewRenderer,\n DataViewRenderer: _initialRenderMappings.DataViewRenderer,\n InLineRenderer: _initialRenderMappings.InLineRenderer,\n extendInputRenderMapping: function (_type, _component, _options) { },\n extendOutputRenderMapping: function (_type, _component, _options) { },\n extendHandlePreviewRenderMapping: function (_type, _component, _options) { },\n extendDataOverlayRenderMapping: function (_type, _component, _options) { },\n extendDataPreviewRenderMapping: function (_type, _component, _options) { },\n extendDataViewRenderMapping: function (_type, _component, _options) { },\n extendFromPlugin: function (_plugin, _options) { },\n});\nvar DynamicComponentLoader = function (_a) {\n var Component = _a.component, props = __rest(_a, [\"component\"]);\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Component, __assign({}, props));\n};\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/datarenderer/rendermappings.tsx?");
|
|
2903
2903
|
|
|
2904
2904
|
/***/ }),
|
|
2905
2905
|
|
|
@@ -2932,7 +2932,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2932
2932
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2933
2933
|
|
|
2934
2934
|
"use strict";
|
|
2935
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuncNodesContext: () => (/* binding */ FuncNodesContext),\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 _states_fnrfzst__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../states/fnrfzst */ \"./src/states/fnrfzst.ts\");\n/* harmony import */ var _funcnodes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../funcnodes */ \"./src/funcnodes/index.ts\");\n/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../header */ \"./src/frontend/header/index.tsx\");\n/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib */ \"./src/frontend/lib.tsx\");\n/* harmony import */ var _react_flow_layer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./react_flow_layer */ \"./src/frontend/funcnodesreactflow/react_flow_layer.tsx\");\n/* harmony import */ var _datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../node */ \"./src/frontend/node/index.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\n\n\n\n\n\nvar FuncNodesContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)((0,_states_fnrfzst__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}));\nvar InnerFuncnodesReactFlow = function (_a) {\n var fnrf_zst = _a.fnrf_zst, header = _a.header;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), workermanageruri = _b[0], setWorkermanageruri = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(fnrf_zst.options.default_worker), worker = _c[0], setWorker = _c[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n function fetch_worker_manager() {\n return __awaiter(this, void 0, void 0, function () {\n var response, workerewsuri;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fetch(\"/worker_manager\")];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.text()];\n case 2:\n workerewsuri = _a.sent();\n setWorkermanageruri(workerewsuri);\n return [2 /*return*/];\n }\n });\n });\n }\n if (fnrf_zst.options.useWorkerManager)\n fetch_worker_manager();\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (workermanageruri) {\n var workermanager = new _funcnodes__WEBPACK_IMPORTED_MODULE_2__.WorkerManager(workermanageruri, fnrf_zst);\n workermanager.on_setWorker = setWorker;\n fnrf_zst.workermanager = workermanager;\n }\n }, [workermanageruri]);\n fnrf_zst.set_worker(worker);\n fnrf_zst.auto_progress();\n // const worker = new WebSocketWorker(\"ws://localhost:9382\", fnrf_zst);\n // fnrf_zst.worker = worker;\n var plugins = fnrf_zst.plugins();\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.RenderMappingProvider, { plugins: plugins, fnrf_zst: fnrf_zst },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FuncNodesContext.Provider, { value: fnrf_zst },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_header__WEBPACK_IMPORTED_MODULE_3__[\"default\"], __assign({}, header)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowbody\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_lib__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_react_flow_layer__WEBPACK_IMPORTED_MODULE_5__[\"default\"],
|
|
2935
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FuncNodesContext: () => (/* binding */ FuncNodesContext),\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 _states_fnrfzst__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../states/fnrfzst */ \"./src/states/fnrfzst.ts\");\n/* harmony import */ var _funcnodes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../funcnodes */ \"./src/funcnodes/index.ts\");\n/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../header */ \"./src/frontend/header/index.tsx\");\n/* harmony import */ var _lib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib */ \"./src/frontend/lib.tsx\");\n/* harmony import */ var _react_flow_layer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./react_flow_layer */ \"./src/frontend/funcnodesreactflow/react_flow_layer.tsx\");\n/* harmony import */ var _datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../node */ \"./src/frontend/node/index.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\n\n\n\n\n\nvar FuncNodesContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)((0,_states_fnrfzst__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}));\nvar InnerFuncnodesReactFlow = function (_a) {\n var fnrf_zst = _a.fnrf_zst, header = _a.header, flow = _a.flow;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), workermanageruri = _b[0], setWorkermanageruri = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(fnrf_zst.options.default_worker), worker = _c[0], setWorker = _c[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n function fetch_worker_manager() {\n return __awaiter(this, void 0, void 0, function () {\n var response, workerewsuri;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fnrf_zst.set_progress({\n progress: 0,\n message: \"connecting to worker manager\",\n status: \"info\",\n blocking: true,\n });\n return [4 /*yield*/, fetch(\"/worker_manager\")];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.text()];\n case 2:\n workerewsuri = _a.sent();\n setWorkermanageruri(workerewsuri);\n return [2 /*return*/];\n }\n });\n });\n }\n if (fnrf_zst.options.useWorkerManager)\n fetch_worker_manager();\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (workermanageruri) {\n var workermanager = new _funcnodes__WEBPACK_IMPORTED_MODULE_2__.WorkerManager(workermanageruri, fnrf_zst);\n workermanager.on_setWorker = setWorker;\n fnrf_zst.workermanager = workermanager;\n }\n }, [workermanageruri]);\n fnrf_zst.set_worker(worker);\n fnrf_zst.auto_progress();\n // const worker = new WebSocketWorker(\"ws://localhost:9382\", fnrf_zst);\n // fnrf_zst.worker = worker;\n var plugins = fnrf_zst.plugins();\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.RenderMappingProvider, { plugins: plugins, fnrf_zst: fnrf_zst },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FuncNodesContext.Provider, { value: fnrf_zst },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_header__WEBPACK_IMPORTED_MODULE_3__[\"default\"], __assign({}, header)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowbody\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_lib__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_react_flow_layer__WEBPACK_IMPORTED_MODULE_5__[\"default\"], __assign({}, flow)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_node__WEBPACK_IMPORTED_MODULE_7__.NodeSettings, null))))));\n};\nvar FUNCNODESREACTFLOW_MAPPER = {};\nvar FuncnodesReactFlow = function (_a) {\n var _b = _a.useWorkerManager, useWorkerManager = _b === void 0 ? true : _b, _c = _a.default_worker, default_worker = _c === void 0 ? undefined : _c, _d = _a.on_sync_complete, on_sync_complete = _d === void 0 ? undefined : _d, _e = _a.header, header = _e === void 0 ? {} : _e, id = _a.id;\n if (!useWorkerManager && default_worker === undefined) {\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, \"Error: If you don't use a worker manager, you must provide a default worker.\"));\n }\n if (id === undefined || id === null) {\n id = \"fnrf_\" + Math.random().toString(36).substring(7);\n }\n // @ts-ignore\n if (window.fnrf_zst === undefined) {\n // @ts-ignore\n window.fnrf_zst = FUNCNODESREACTFLOW_MAPPER;\n }\n if (FUNCNODESREACTFLOW_MAPPER[id] === undefined) {\n var fnrf_zst = (0,_states_fnrfzst__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n useWorkerManager: useWorkerManager,\n default_worker: default_worker,\n on_sync_complete: on_sync_complete,\n });\n FUNCNODESREACTFLOW_MAPPER[id] = fnrf_zst;\n }\n if (default_worker) {\n default_worker.set_zustand(FUNCNODESREACTFLOW_MAPPER[id]);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InnerFuncnodesReactFlow, { fnrf_zst: FUNCNODESREACTFLOW_MAPPER[id], header: header }));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncnodesReactFlow);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/funcnodesreactflow/index.tsx?");
|
|
2936
2936
|
|
|
2937
2937
|
/***/ }),
|
|
2938
2938
|
|
|
@@ -2943,7 +2943,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2943
2943
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2944
2944
|
|
|
2945
2945
|
"use strict";
|
|
2946
|
-
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 reactflow_dist_style_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reactflow/dist/style.css */ \"../node_modules/reactflow/dist/style.css\");\n/* harmony import */ var _funcnodesreactflow_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./funcnodesreactflow.scss */ \"./src/frontend/funcnodesreactflow/funcnodesreactflow.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! reactflow */ \"../node_modules/@reactflow/core/dist/esm/index.mjs\");\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! reactflow */ \"../node_modules/@reactflow/background/dist/esm/index.mjs\");\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! reactflow */ \"../node_modules/@reactflow/minimap/dist/esm/index.mjs\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! .. */ \"./src/frontend/index.tsx\");\n/* harmony import */ var zustand_react_shallow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! zustand/react/shallow */ \"../node_modules/zustand/esm/react/shallow.mjs\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../node */ \"./src/frontend/node/index.tsx\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../edge */ \"./src/frontend/edge.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n// import { useForceGraph } from \"../../utils/autolayout\";\nvar selector = function (state) { return ({\n nodes: state.nodes,\n edges: state.edges,\n onNodesChange: state.onNodesChange,\n onEdgesChange: state.onEdgesChange,\n onConnect: state.onConnect,\n}); };\nvar nodeTypes = { default: _node__WEBPACK_IMPORTED_MODULE_4__[\"default\"] };\nvar edgeTypes = {\n default: _edge__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n};\nvar ReactFlowManager = function () {\n var rfinstance = (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.useReactFlow)();\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n fnrf_zst.rf_instance = rfinstance;\n // useForceGraph();\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n};\nvar KeyHandler = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n var delPressed = (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.useKeyPress)(\"Delete\");\n var edges = (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.useEdges)();\n var nodes = (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.useNodes)();\n if (delPressed) {\n for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) {\n var edge = edges_1[_i];\n if (edge.selected) {\n if (!fnrf_zst.worker)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n if (!edge.source || !edge.target)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n if (!edge.sourceHandle || !edge.targetHandle)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n fnrf_zst.worker.remove_edge({\n src_nid: edge.source,\n src_ioid: edge.sourceHandle,\n trg_nid: edge.target,\n trg_ioid: edge.targetHandle,\n });\n }\n }\n for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\n var node = nodes_1[_a];\n if (node.selected) {\n if (!fnrf_zst.worker)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n fnrf_zst.worker.remove_node(node.id);\n }\n }\n }\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n};\nvar ContextMenu = function (_a) {\n var id = _a.id, top = _a.top, left = _a.left, right = _a.right, bottom = _a.bottom, props = __rest(_a, [\"id\", \"top\", \"left\", \"right\", \"bottom\"]);\n var _b = (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.useReactFlow)(), getNode = _b.getNode, setNodes = _b.setNodes, addNodes = _b.addNodes, setEdges = _b.setEdges;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n var duplicateNode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(function () {\n var rfnode = getNode(id);\n if (!rfnode)\n return;\n var position = {\n x: rfnode.position.x + 50,\n y: rfnode.position.y + 50,\n };\n addNodes(__assign(__assign({}, rfnode), { id: \"\".concat(rfnode.id, \"-copy\"), position: position }));\n }, [id, getNode, addNodes]);\n var deleteNode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(function () {\n fnrf_zst.on_node_action({ type: \"delete\", id: id, from_remote: false });\n }, [id, setNodes, setEdges]);\n var nodestore = fnrf_zst.nodespace.get_node(id, false);\n if (!nodestore)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, \" \");\n var node = nodestore();\n return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"div\", __assign({ style: { top: top, left: left, right: right, bottom: bottom }, className: \"context-menu\" }, props),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"p\", { style: { fontWeight: \"bold\" } },\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"small\", null, node.name)),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"button\", { onClick: duplicateNode }, \"duplicate\"),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"button\", { onClick: deleteNode }, \"delete\")));\n};\nvar ReactFlowLayer = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n var reactflowRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n fnrf_zst.reactflowRef = reactflowRef.current;\n }, [reactflowRef]);\n var _a = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null), menu = _a[0], setMenu = _a[1];\n var onSelectionChange = function (_a) {\n var nodes = _a.nodes, edges = _a.edges;\n var cs = fnrf_zst.local_state.getState();\n fnrf_zst.local_state.setState(__assign(__assign({}, cs), { selected_nodes: nodes.map(function (node) { return node.id; }), selected_edges: edges.map(function (edge) { return edge.id; }) }));\n };\n // const onNodeContextMenu = useCallback(\n // (event: React.MouseEvent, node: Node) => {\n // if (!reactflowRef.current) return;\n // // Prevent native context menu from showing\n // event.preventDefault();\n // // Calculate position of the context menu. We want to make sure it\n // // doesn't get positioned off-screen.\n // const pane = reactflowRef.current.getBoundingClientRect();\n // const clientX = event.clientX as number;\n // const clientY = event.clientY as number;\n // setMenu({\n // id: node.id,\n // top: clientY < pane.height - 200 ? clientY : undefined,\n // left: clientX < pane.width - 200 ? clientX : undefined,\n // right: clientX >= pane.width - 200 ? pane.width - clientX : undefined,\n // bottom:\n // clientY >= pane.height - 200 ? pane.height - clientY : undefined,\n // });\n // },\n // [setMenu]\n // );\n var onPaneClick = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(function () { return setMenu(null); }, [setMenu]);\n var _b = fnrf_zst.useReactFlowStore((0,zustand_react_shallow__WEBPACK_IMPORTED_MODULE_7__.useShallow)(selector)), nodes = _b.nodes, edges = _b.edges, onNodesChange = _b.onNodesChange, onEdgesChange = _b.onEdgesChange, onConnect = _b.onConnect;\n return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"div\", { className: \"reactflowlayer\" },\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_6__.ReactFlow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, onConnect: onConnect, nodeTypes: nodeTypes, edgeTypes: edgeTypes, minZoom: 0.1, maxZoom: 2, fitView: true, onSelectionChange: onSelectionChange, ref: reactflowRef, \n // onNodeContextMenu={onNodeContextMenu}\n onPaneClick: onPaneClick },\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ReactFlowManager, null),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(KeyHandler, null),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_8__.Background, { color: \"#888\" // Color of the grid lines\n , gap: 16, size: 1 }),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_9__.MiniMap, { nodeStrokeWidth: 3, pannable: true, zoomable: true, zoomStep: 3 }),\n menu && react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ContextMenu, __assign({ onClick: onPaneClick }, menu)))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactFlowLayer);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/funcnodesreactflow/react_flow_layer.tsx?");
|
|
2946
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ nodeTypes: () => (/* binding */ nodeTypes)\n/* harmony export */ });\n/* harmony import */ var reactflow_dist_style_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reactflow/dist/style.css */ \"../node_modules/reactflow/dist/style.css\");\n/* harmony import */ var _funcnodesreactflow_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./funcnodesreactflow.scss */ \"./src/frontend/funcnodesreactflow/funcnodesreactflow.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! reactflow */ \"../node_modules/@reactflow/core/dist/esm/index.mjs\");\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! reactflow */ \"../node_modules/@reactflow/background/dist/esm/index.mjs\");\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! reactflow */ \"../node_modules/@reactflow/minimap/dist/esm/index.mjs\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! .. */ \"./src/frontend/index.tsx\");\n/* harmony import */ var zustand_react_shallow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! zustand/react/shallow */ \"../node_modules/zustand/esm/react/shallow.mjs\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../node */ \"./src/frontend/node/index.tsx\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../edge */ \"./src/frontend/edge.tsx\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __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};\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// import { useForceGraph } from \"../../utils/autolayout\";\nvar selector = function (state) { return ({\n nodes: state.nodes,\n edges: state.edges,\n onNodesChange: state.onNodesChange,\n onEdgesChange: state.onEdgesChange,\n onConnect: state.onConnect,\n}); };\nvar nodeTypes = { default: _node__WEBPACK_IMPORTED_MODULE_4__[\"default\"] };\nvar edgeTypes = {\n default: _edge__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n};\nvar ReactFlowManager = function () {\n var rfinstance = (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.useReactFlow)();\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n fnrf_zst.rf_instance = rfinstance;\n // useForceGraph();\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n};\nvar KeyHandler = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n var delPressed = (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.useKeyPress)(\"Delete\");\n var edges = (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.useEdges)();\n var nodes = (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.useNodes)();\n if (delPressed) {\n for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) {\n var edge = edges_1[_i];\n if (edge.selected) {\n if (!fnrf_zst.worker)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n if (!edge.source || !edge.target)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n if (!edge.sourceHandle || !edge.targetHandle)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n fnrf_zst.worker.remove_edge({\n src_nid: edge.source,\n src_ioid: edge.sourceHandle,\n trg_nid: edge.target,\n trg_ioid: edge.targetHandle,\n });\n }\n }\n for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\n var node = nodes_1[_a];\n if (node.selected) {\n if (!fnrf_zst.worker)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n fnrf_zst.worker.remove_node(node.id);\n }\n }\n }\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null);\n};\nvar ContextMenu = function (_a) {\n var id = _a.id, top = _a.top, left = _a.left, right = _a.right, bottom = _a.bottom, props = __rest(_a, [\"id\", \"top\", \"left\", \"right\", \"bottom\"]);\n var _b = (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.useReactFlow)(), getNode = _b.getNode, setNodes = _b.setNodes, addNodes = _b.addNodes, setEdges = _b.setEdges;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n var duplicateNode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(function () {\n var rfnode = getNode(id);\n if (!rfnode)\n return;\n var position = {\n x: rfnode.position.x + 50,\n y: rfnode.position.y + 50,\n };\n addNodes(__assign(__assign({}, rfnode), { id: \"\".concat(rfnode.id, \"-copy\"), position: position }));\n }, [id, getNode, addNodes]);\n var deleteNode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(function () {\n fnrf_zst.on_node_action({ type: \"delete\", id: id, from_remote: false });\n }, [id, setNodes, setEdges]);\n var nodestore = fnrf_zst.nodespace.get_node(id, false);\n if (!nodestore)\n return react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, \" \");\n var node = nodestore();\n return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"div\", __assign({ style: { top: top, left: left, right: right, bottom: bottom }, className: \"context-menu\" }, props),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"p\", { style: { fontWeight: \"bold\" } },\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"small\", null, node.name)),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"button\", { onClick: duplicateNode }, \"duplicate\"),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"button\", { onClick: deleteNode }, \"delete\")));\n};\nvar ReactFlowLayer = function (_a) {\n var props = __rest(_a, []);\n var fullprops = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.deep_merge)({ minimap: true, static: false, minZoom: 0.1, maxZoom: 5 }, props).new_obj;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(___WEBPACK_IMPORTED_MODULE_3__.FuncNodesContext);\n var reactflowRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n fnrf_zst.reactflowRef = reactflowRef.current;\n }, [reactflowRef]);\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null), menu = _b[0], setMenu = _b[1];\n var onSelectionChange = function (_a) {\n var nodes = _a.nodes, edges = _a.edges;\n var cs = fnrf_zst.local_state.getState();\n fnrf_zst.local_state.setState(__assign(__assign({}, cs), { selected_nodes: nodes.map(function (node) { return node.id; }), selected_edges: edges.map(function (edge) { return edge.id; }) }));\n };\n var onPaneClick = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(function () { return setMenu(null); }, [setMenu]);\n var _c = fnrf_zst.useReactFlowStore((0,zustand_react_shallow__WEBPACK_IMPORTED_MODULE_8__.useShallow)(selector)), nodes = _c.nodes, edges = _c.edges, onNodesChange = _c.onNodesChange, onEdgesChange = _c.onEdgesChange, onConnect = _c.onConnect;\n return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(\"div\", { className: \"reactflowlayer\" },\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_7__.ReactFlow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, onConnect: onConnect, nodeTypes: nodeTypes, edgeTypes: edgeTypes, minZoom: fullprops.minZoom, maxZoom: fullprops.maxZoom, fitView: true, onSelectionChange: onSelectionChange, ref: reactflowRef, \n // onNodeContextMenu={onNodeContextMenu}\n onPaneClick: onPaneClick, \n //multiSelectionKeyCode=\"Control\"\n panOnDrag: !fullprops.static },\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ReactFlowManager, null),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(KeyHandler, null),\n react__WEBPACK_IMPORTED_MODULE_2___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_9__.Background, { color: \"#888\" // Color of the grid lines\n , gap: 16, size: 1 }),\n fullprops.minimap && (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_10__.MiniMap, { nodeStrokeWidth: 3, pannable: !fullprops.static, zoomable: !fullprops.static, zoomStep: 3 })),\n menu && react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ContextMenu, __assign({ onClick: onPaneClick }, menu)))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactFlowLayer);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/funcnodesreactflow/react_flow_layer.tsx?");
|
|
2947
2947
|
|
|
2948
2948
|
/***/ }),
|
|
2949
2949
|
|
|
@@ -2954,7 +2954,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2954
2954
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2955
2955
|
|
|
2956
2956
|
"use strict";
|
|
2957
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../funcnodesreactflow */ \"./src/frontend/funcnodesreactflow/index.tsx\");\n/* harmony import */ var _header_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header.scss */ \"./src/frontend/header/header.scss\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-dropdown-menu */ \"../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs\");\n/* harmony import */ var _mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/MenuRounded */ \"../node_modules/@mui/icons-material/MenuRounded.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material/Typography */ \"../node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/Stack */ \"../node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_icons_material_ChevronRight__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/ChevronRight */ \"../node_modules/@mui/icons-material/ChevronRight.js\");\n/* harmony import */ var _utils_data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/data */ \"./src/utils/data.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NewWorkerDialog = function (_a) {\n var trigger = _a.trigger, setOpen = _a.setOpen, open = _a.open;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), name = _b[0], setName = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), copyLib = _c[0], setCopyLib = _c[1];\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), copyNS = _d[0], setCopyNS = _d[1];\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workersstate = fnrf_zst.workers();\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n name: \"None\",\n uuid: \"\",\n }), reference = _e[0], setReference = _e[1];\n if (!fnrf_zst.options.useWorkerManager)\n return null;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { setOpen: setOpen, open: open, trigger: trigger, title: \"New Worker\", description: \"Please provide a name and select a another worker as interpreter reference\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Name:\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"br\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"styledinput\", onChange: function (e) {\n setName(e.currentTarget.value);\n }, value: name })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Reference Worker:\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"br\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", { className: \"styleddropdown\", onChange: function (e) {\n var uuid = e.target.value;\n var name = e.target.selectedOptions[0].innerText;\n setReference({ name: name, uuid: uuid });\n }, value: reference.uuid },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"\" }, \"None\"),\n Object.keys(workersstate).map(function (workerid) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { className: \"\", key: workerid, value: workerid }, workersstate[workerid].name || workerid)); })),\n reference.uuid && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Copy Lib:\",\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: copyLib, onChange: function (e) {\n setCopyLib(e.currentTarget.checked);\n } })),\n copyLib && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n \"Copy Nodespace\",\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"checkbox\", className: \"styledcheckbox\", checked: copyNS, onChange: function (e) {\n setCopyNS(e.currentTarget.checked);\n if (e.currentTarget.checked) {\n setCopyLib(true);\n }\n } }))))),\n name && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\", onClick: function () {\n var _a;\n (_a = fnrf_zst.workermanager) === null || _a === void 0 ? void 0 : _a.new_worker({\n name: name,\n reference: reference.uuid,\n copyLib: copyLib,\n copyNS: copyNS,\n });\n setOpen(false);\n } }, \"Create\"))))));\n};\nvar Statusbar = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var progress = fnrf_zst.progress_state();\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"statusbar\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", { className: \"statusbar-progressbar\", style: { width: Math.min(100, 100 * progress.progress) + \"%\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", { className: \"statusbar-message\" }, progress.message)));\n};\nvar WorkerMenu = function () {\n var _a;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workersstate = fnrf_zst.workers();\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isNewWorkerDialogOpen = _b[0], setNewWorkerDialogOpen = _b[1];\n var workerselectchange = function (workerid) {\n if (workerid === \"__select__\")\n return;\n if (!fnrf_zst.workers)\n return;\n if (!fnrf_zst.workermanager)\n return;\n if (!workersstate[workerid])\n return;\n if (!workersstate[workerid].active) {\n //create popup\n var ans = window.confirm(\"this is an inactive worker, selecting it will start it, continue?\");\n if (!ans)\n return;\n }\n fnrf_zst.workermanager.set_active(workerid);\n };\n var exportWorker = function () { return __awaiter(void 0, void 0, void 0, function () {\n var data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!fnrf_zst.worker)\n return [2 /*return*/];\n return [4 /*yield*/, fnrf_zst.worker.export()];\n case 1:\n data = _a.sent();\n (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.downloadBase64)(data, \"worker.fnw\", \"application/zip\");\n return [2 /*return*/];\n }\n });\n }); };\n var updateWorker = function () { return __awaiter(void 0, void 0, void 0, function () {\n var ans, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!fnrf_zst.worker)\n return [2 /*return*/];\n ans = window.confirm(\"Updateing the worker might replace the current nodespace, continue?\");\n if (!ans)\n return [2 /*return*/];\n return [4 /*yield*/, (0,_utils_data__WEBPACK_IMPORTED_MODULE_4__.fileDialogToBase64)(\".fnw\")];\n case 1:\n data = _a.sent();\n fnrf_zst.worker.update_from_export(data);\n return [2 /*return*/];\n }\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"Worker\"),\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"headermenucontent\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Group, null,\n fnrf_zst.options.useWorkerManager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Sub, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.SubTrigger, { className: \"headermenuitem submenuitem\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n \"Select\",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ChevronRight__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.SubContent, { className: \"headermenucontent\", sideOffset: 2, alignOffset: -5 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioGroup, { value: (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.uuid, onValueChange: function (value) {\n workerselectchange(value);\n } }, Object.keys(workersstate)\n .sort(function (a, b) {\n // First, sort by active status (active workers come first)\n if (workersstate[a].active &&\n !workersstate[b].active)\n return -1;\n if (!workersstate[a].active &&\n workersstate[b].active)\n return 1;\n // If both are active or both are inactive, sort by name or ID\n var nameA = workersstate[a].name || a;\n var nameB = workersstate[b].name || b;\n return nameA.localeCompare(nameB);\n })\n .map(function (workerid) {\n var _a;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.RadioItem, { className: \"headermenuitem workerselectoption\" +\n (workersstate[workerid].active\n ? \" active\"\n : \" inactive\") +\n \" headermenuitem\", key: workerid, value: workerid, disabled: workerid === ((_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.uuid) }, workersstate[workerid].name || workerid));\n })))))),\n fnrf_zst.worker && fnrf_zst.worker.is_open && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n fnrf_zst.workermanager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () {\n var _a;\n if (!fnrf_zst.worker)\n return;\n if (!fnrf_zst.workermanager)\n return fnrf_zst.logger.error(\"no workermanager\");\n (_a = fnrf_zst.workermanager) === null || _a === void 0 ? void 0 : _a.restart_worker(fnrf_zst.worker.uuid);\n } }, \"Restart\")),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () {\n if (!fnrf_zst.worker)\n return;\n fnrf_zst.worker.stop();\n } }, \"Stop\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: exportWorker }, \"Export\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: updateWorker }, \"Update\"))),\n fnrf_zst.options.useWorkerManager && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: function () { return setNewWorkerDialogOpen(true); } }, \"New\"))))))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NewWorkerDialog, { open: isNewWorkerDialogOpen, setOpen: setNewWorkerDialogOpen })));\n};\nvar NodeSpaceMenu = function () {\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var onNew = function () {\n var _a;\n var alert = window.confirm(\"Are you sure you want to start a new flow?\");\n if (alert) {\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.clear();\n }\n };\n var onSave = function () { return __awaiter(void 0, void 0, void 0, function () {\n var data, blob, url, a;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, ((_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.save())];\n case 1:\n data = _b.sent();\n if (!data)\n return [2 /*return*/];\n blob = new Blob([JSON.stringify(data)], {\n type: \"application/json\",\n });\n url = URL.createObjectURL(blob);\n a = document.createElement(\"a\");\n a.href = url;\n a.download = \"flow.json\";\n a.click();\n URL.revokeObjectURL(url);\n a.remove();\n return [2 /*return*/];\n }\n });\n }); };\n var onOpen = function () { return __awaiter(void 0, void 0, void 0, function () {\n var input;\n return __generator(this, function (_a) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \".json\";\n input.onchange = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var file, reader;\n var _a;\n return __generator(this, function (_b) {\n file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];\n if (!file)\n return [2 /*return*/];\n reader = new FileReader();\n reader.onload = function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n contents = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;\n if (!contents)\n return [2 /*return*/];\n data = JSON.parse(contents);\n return [4 /*yield*/, ((_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.load(data))];\n case 1:\n _c.sent();\n return [2 /*return*/];\n }\n });\n }); };\n reader.readAsText(file);\n return [2 /*return*/];\n });\n }); };\n input.click();\n return [2 /*return*/];\n });\n }); };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"styledbtn\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { direction: \"row\", spacing: 1 },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"Nodespace\"),\n \" \",\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_MenuRounded__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"headermenucontent\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Group, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onNew }, \"New\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onSave }, \"Save\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_dropdown_menu__WEBPACK_IMPORTED_MODULE_5__.Item, { className: \"headermenuitem\", onClick: onOpen }, \"Load\")))))));\n};\nvar FuncnodesHeader = function (_a) {\n var headerprops = __rest(_a, []);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var workerstate = fnrf_zst.workerstate();\n // pserudouse headerprops\n if (Object.keys(headerprops).length > 0) {\n fnrf_zst.logger.debug(\"headerprops\", headerprops);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"funcnodesreactflowheader\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Statusbar, null)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(WorkerMenu, null)),\n fnrf_zst.worker && workerstate.is_open && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"headerelement\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeSpaceMenu, null)))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncnodesHeader);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/header/index.tsx?");
|
|
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?");
|
|
2958
2958
|
|
|
2959
2959
|
/***/ }),
|
|
2960
2960
|
|
|
@@ -2976,7 +2976,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2976
2976
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2977
2977
|
|
|
2978
2978
|
"use strict";
|
|
2979
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LibraryItem: () => (/* binding */ LibraryShelf),\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 react_markdown__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-markdown */ \"../node_modules/react-markdown/lib/index.js\");\n/* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! remark-gfm */ \"../node_modules/remark-gfm/lib/index.js\");\n/* harmony import */ var _lib_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib.scss */ \"./src/frontend/lib.scss\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Search */ \"../node_modules/@mui/icons-material/Search.js\");\n/* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/icons-material/Close */ \"../node_modules/@mui/icons-material/Close.js\");\n/* harmony import */ var _mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/ExpandLess */ \"../node_modules/@mui/icons-material/ExpandLess.js\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dialog */ \"./src/frontend/dialog.tsx\");\n\n\n\n\n\n\n\n\n\nvar LibraryNode = function (_a) {\n var item = _a.item;\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var add_to_flow = function () {\n var _a;\n (_a = zustand.worker) === null || _a === void 0 ? void 0 : _a.add_node(item.node_id);\n };\n var nodeclick = function (event) {\n // if double click, add node to graph\n if (event.detail === 2) {\n add_to_flow();\n }\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodeentry\", onClick: nodeclick, title: item.description }, item.node_name || item.node_id));\n};\nvar filterShelf = function (shelf, filter) {\n var _a, _b, _c, _d;\n var hasFilteredNodes = (_b = (_a = shelf.nodes) === null || _a === void 0 ? void 0 : _a.some(function (node) {\n return node.node_id.toLowerCase().includes(filter.toLowerCase());\n })) !== null && _b !== void 0 ? _b : false;\n var hasFilteredSubShelves = (_d = (_c = shelf.subshelves) === null || _c === void 0 ? void 0 : _c.some(function (subShelf) { return filterShelf(subShelf, filter); })) !== null && _d !== void 0 ? _d : false;\n return hasFilteredNodes || hasFilteredSubShelves;\n};\nvar LibraryShelf = function (_a) {\n var _b;\n var item = _a.item, filter = _a.filter;\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _c[0], setIsOpen = _c[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var filterednodes = (_b = item.nodes) === null || _b === void 0 ? void 0 : _b.filter(function (node) {\n return node.node_id.toLowerCase().includes(filter.toLowerCase());\n });\n var _isopen = isOpen || filter.length > 0;\n if (!filterShelf(item, filter)) {\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: item.description },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, item.name),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" },\n filterednodes && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, filterednodes.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryNode, { key: idx, item: subItem })); }))),\n item.subshelves && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, item.subshelves.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryShelf, { key: idx, item: subItem, filter: filter })); }))))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null)));\n};\nvar LibFilter = function (_a) {\n // input with left icon\n var filter = _a.filter, setFilter = _a.setFilter;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libfilter\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fontSize: \"inherit\" }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", placeholder: \"Filter\", value: filter, onChange: function (e) {\n setFilter(e.target.value);\n } }),\n filter && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { fontSize: \"inherit\", onClick: function () {\n setFilter(\"\");\n } }))));\n};\nvar ActiveModule = function (_a) {\n var availableModule = _a.availableModule, on_remove = _a.on_remove;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addable-module\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-name\" }, availableModule[\"name\"]),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-links\" },\n availableModule.homepage && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", { href: availableModule[\"homepage\"], target: \"_blank\", rel: \"noopener noreferrer\" }, \"Homepage\"))),\n availableModule.source && availableModule.homepage && \" | \",\n availableModule.source && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", { href: availableModule[\"source\"], target: \"_blank\", rel: \"noopener noreferrer\" }, \"Source\")))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-description\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_markdown__WEBPACK_IMPORTED_MODULE_7__.Markdown, { remarkPlugins: [remark_gfm__WEBPACK_IMPORTED_MODULE_8__[\"default\"]] }, availableModule[\"description\"].replace(/\\\\n/g, \" \\n\"))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"remove-button\", onClick: function () {\n on_remove(availableModule);\n } }, \"Remove\")));\n};\nvar AddableModule = function (_a) {\n var availableModule = _a.availableModule, on_add = _a.on_add;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), expandedDescription = _b[0], setExpandedDescription = _b[1];\n var toggleDescription = function () { return setExpandedDescription(!expandedDescription); };\n var maxDescriptionLength = 150; // Max character length before truncating the description.\n var truncatedDescription = availableModule[\"description\"].length > maxDescriptionLength\n ? availableModule[\"description\"].substring(0, maxDescriptionLength) +\n \"...\"\n : availableModule[\"description\"];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addable-module\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-name\" }, availableModule[\"name\"]),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-links\" },\n availableModule.homepage && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", { href: availableModule[\"homepage\"], target: \"_blank\", rel: \"noopener noreferrer\" }, \"Homepage\"))),\n availableModule.source && availableModule.homepage && \" | \",\n availableModule.source && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", { href: availableModule[\"source\"], target: \"_blank\", rel: \"noopener noreferrer\" }, \"Source\")))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-description\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_markdown__WEBPACK_IMPORTED_MODULE_7__.Markdown, { remarkPlugins: [remark_gfm__WEBPACK_IMPORTED_MODULE_8__[\"default\"]] }, expandedDescription\n ? availableModule[\"description\"].replace(/\\\\n/g, \" \\n\")\n : truncatedDescription.replace(/\\\\n/g, \" \\n\")),\n availableModule[\"description\"].length > maxDescriptionLength && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { onClick: toggleDescription, className: \"toggle-description\" }, expandedDescription ? \"Show less\" : \"Show more\"))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"add-button\", onClick: function () {\n on_add(availableModule);\n } }, \"Add\")));\n};\nvar AddLibraryOverLay = function (_a) {\n var children = _a.children;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), newlib = _b[0], setNewLib = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), filter = _c[0], setFilter = _c[1]; // State for the filter input\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n installed: [],\n available: [],\n active: [],\n }), availableModules = _d[0], SetAvailableModules = _d[1];\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isDialogOpen = _e[0], setIsDialogOpen = _e[1];\n var update_modules = function (open) {\n if (!open)\n return;\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.get_available_modules().then(function (modules) {\n SetAvailableModules(modules);\n });\n };\n if (!zustand.worker) {\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null);\n }\n var add_new_lib = function () {\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.add_lib(newlib);\n setNewLib(\"\");\n };\n var add_new_lib_from_installed = function (module) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.add_lib(module.name); // use name as module name\n };\n var add_new_lib_from_installable = function (module) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.add_lib(module.name); // use name as module name\n };\n var remove_lib_from_active = function (module) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.remove_lib(module.name);\n };\n // Filter the modules based on the search term, ignoring case\n var filterModules = function (modules) {\n return modules.filter(function (module) {\n return module.name.toLowerCase().includes(filter.toLowerCase()) ||\n module.description.toLowerCase().includes(filter.toLowerCase());\n });\n };\n var availableModulesFiltered = filterModules(availableModules.available);\n var installedModulesFiltered = filterModules(availableModules.installed);\n var activeModulesFiltered = filterModules(availableModules.active);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { title: \"Manage Library\", trigger: children, description: \"Add or remove libraries to the current worker.\", onOpenChange: update_modules, open: isDialogOpen, setOpen: setIsDialogOpen, buttons: [\n {\n text: \"add\",\n onClick: add_new_lib,\n close: true,\n },\n ] },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"filter-input styledinput\", type: \"text\", placeholder: \"Filter modules...\", value: filter, onChange: function (e) { return setFilter(e.target.value); } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"packagelist\", style: { maxHeight: \"70%\", overflow: \"auto\" } },\n installedModulesFiltered.length > 0 && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", null, \"Installed\"),\n installedModulesFiltered.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AddableModule, { key: idx, availableModule: item, on_add: add_new_lib_from_installed })); }),\n availableModulesFiltered.length > 0 && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", null, \"Available\"),\n availableModulesFiltered.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AddableModule, { key: idx, availableModule: item, on_add: add_new_lib_from_installable })); }),\n activeModulesFiltered.length > 0 && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", null, \"Active\"),\n activeModulesFiltered.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ActiveModule, { key: idx, availableModule: item, on_remove: remove_lib_from_active })); })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"styledinput\", type: \"text\", value: newlib, onChange: function (e) {\n setNewLib(e.target.value);\n } })));\n};\nvar ExternalWorkerInstanceSettings = function (_a) {\n var ins = _a.ins;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(ins.name), tempName = _b[0], setTempName = _b[1];\n var fnrz = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var stop_instance = function () {\n if (!fnrz.worker)\n return;\n fnrz.worker.remove_external_worker(ins.uuid, ins.nodeclassid);\n };\n var save_instance = function () {\n if (!fnrz.worker)\n return;\n fnrz.worker.update_external_worker(ins.uuid, ins.nodeclassid, {\n name: tempName,\n });\n ins.name = tempName;\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(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { title: ins.name, description: \"Settings for\" + ins.name, trigger: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, \"Settings\"), buttons: [\n {\n text: \"Save\",\n onClick: save_instance,\n close: true,\n },\n {\n text: \"Delete\",\n onClick: stop_instance,\n close: true,\n },\n ] },\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(\"label\", { htmlFor: \"name\" }, \"Name: \"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", name: \"name\", value: tempName, onChange: function (e) { return setTempName(e.target.value); }, className: \"styledinput\" }))))));\n};\nvar ExternalWorkerInstanceEntry = function (_a) {\n var _b;\n var ins = _a.ins, lib = _a.lib, _c = _a.filter, filter = _c === void 0 ? \"\" : _c;\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _d[0], setIsOpen = _d[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var filterednodes = (_b = lib === null || lib === void 0 ? void 0 : lib.nodes) === null || _b === void 0 ? void 0 : _b.filter(function (node) {\n return node.node_id.toLowerCase().includes(filter.toLowerCase());\n });\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: ins.name },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, ins.name),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" }, isOpen && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodeentry\", title: ins.uuid },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerInstanceSettings, { ins: ins })),\n lib && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n filterednodes && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, filterednodes.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryNode, { key: idx, item: subItem })); }))),\n lib.subshelves.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryShelf, { key: idx, item: subItem, filter: filter })); })))))))));\n};\nvar ExternalWorkerClassEntry = function (_a) {\n var item = _a.item, mod = _a.mod, lib = _a.lib;\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _b[0], setIsOpen = _b[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var add_to_flow = function () {\n var _a;\n (_a = zustand.worker) === null || _a === void 0 ? void 0 : _a.add_external_worker({\n module: mod,\n cls_module: item.module,\n cls_name: item.class_name,\n });\n };\n var click_new_instance = function (event) {\n // if double click, add node to graph\n if (event.detail === 2) {\n add_to_flow();\n }\n };\n var title = item.name || item.module + \".\" + item.class_name;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: title },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, title),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" }, isOpen && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodeentry\", onClick: click_new_instance, title: item.name }, \"New Instance\"),\n item.instances.map(function (instance, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerInstanceEntry, { key: idx, ins: instance, lib: lib === null || lib === void 0 ? void 0 : lib.subshelves.find(function (shelf) { return shelf.name === instance.uuid; }) })); })))))));\n};\nvar ExternalWorkerShelf = function (_a) {\n var externalworkermod = _a.externalworkermod, lib = _a.lib;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _b[0], setIsOpen = _b[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var _isopen = isOpen;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: externalworkermod.module },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, externalworkermod.module),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" }, externalworkermod.worker_classes.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerClassEntry, { key: idx, item: subItem, mod: externalworkermod.module, lib: lib })); }))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null)));\n};\nvar Library = function () {\n var _a;\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var libstate = zustand.lib.libstate();\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), filter = _b[0], setFilter = _b[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"library\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libtitle\" }, \"Lib\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", { className: \"hr_prominent\" }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibFilter, { filter: filter, setFilter: setFilter }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"vscrollcontainer\" }, libstate.lib.shelves.map(function (item, idx) {\n return item.name == \"_external_worker\" ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null)) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryShelf, { key: idx, item: item, filter: filter }));\n })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libtitle\" }, \"External Worker\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", { className: \"hr_prominent\" }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"vscrollcontainer\" }, (_a = libstate.external_worker) === null || _a === void 0 ? void 0 : _a.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerShelf, { key: idx, externalworkermod: item, lib: libstate.lib.shelves.find(function (shelf) { return shelf.name === \"_external_worker\"; }) })); })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: { paddingTop: \"0.5rem\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addlib\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AddLibraryOverLay, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { disabled: zustand.worker === undefined }, \"Manage Libaries\")))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Library);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/lib.tsx?");
|
|
2979
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LibraryItem: () => (/* binding */ LibraryShelf),\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 react_markdown__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-markdown */ \"../node_modules/react-markdown/lib/index.js\");\n/* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! remark-gfm */ \"../node_modules/remark-gfm/lib/index.js\");\n/* harmony import */ var _lib_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib.scss */ \"./src/frontend/lib.scss\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Search */ \"../node_modules/@mui/icons-material/Search.js\");\n/* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/icons-material/Close */ \"../node_modules/@mui/icons-material/Close.js\");\n/* harmony import */ var _mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/ExpandLess */ \"../node_modules/@mui/icons-material/ExpandLess.js\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dialog */ \"./src/frontend/dialog.tsx\");\n\n\n\n\n\n\n\n\n\nvar LibraryNode = function (_a) {\n var item = _a.item;\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var add_to_flow = function () {\n var _a;\n (_a = zustand.worker) === null || _a === void 0 ? void 0 : _a.add_node(item.node_id);\n };\n var nodeclick = function (event) {\n // if double click, add node to graph\n if (event.detail === 2) {\n add_to_flow();\n }\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodeentry\", onClick: nodeclick, title: item.description }, item.node_name || item.node_id));\n};\nvar filterShelf = function (shelf, filter) {\n var _a, _b, _c, _d;\n var hasFilteredNodes = (_b = (_a = shelf.nodes) === null || _a === void 0 ? void 0 : _a.some(function (node) {\n return node.node_id.toLowerCase().includes(filter.toLowerCase());\n })) !== null && _b !== void 0 ? _b : false;\n var hasFilteredSubShelves = (_d = (_c = shelf.subshelves) === null || _c === void 0 ? void 0 : _c.some(function (subShelf) { return filterShelf(subShelf, filter); })) !== null && _d !== void 0 ? _d : false;\n return hasFilteredNodes || hasFilteredSubShelves;\n};\nvar LibraryShelf = function (_a) {\n var _b;\n var item = _a.item, filter = _a.filter;\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _c[0], setIsOpen = _c[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var filterednodes = (_b = item.nodes) === null || _b === void 0 ? void 0 : _b.filter(function (node) {\n return node.node_id.toLowerCase().includes(filter.toLowerCase());\n });\n var _isopen = isOpen || filter.length > 0;\n if (!filterShelf(item, filter)) {\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null);\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: item.description },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, item.name),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" },\n filterednodes && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, filterednodes.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryNode, { key: idx, item: subItem })); }))),\n item.subshelves && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, item.subshelves.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryShelf, { key: idx, item: subItem, filter: filter })); }))))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null)));\n};\nvar LibFilter = function (_a) {\n // input with left icon\n var filter = _a.filter, setFilter = _a.setFilter;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libfilter\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fontSize: \"inherit\" }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", placeholder: \"Filter\", value: filter, onChange: function (e) {\n setFilter(e.target.value);\n } }),\n filter && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { fontSize: \"inherit\", onClick: function () {\n setFilter(\"\");\n } }))));\n};\nvar _ModuleLinks = function (_a) {\n var availableModule = _a.availableModule;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-links\" },\n availableModule.homepage && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", { href: availableModule[\"homepage\"], target: \"_blank\", rel: \"noopener noreferrer\" }, \"Homepage\"))),\n availableModule.source && availableModule.homepage && \" | \",\n availableModule.source && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", { href: availableModule[\"source\"], target: \"_blank\", rel: \"noopener noreferrer\" }, \"Source\")))));\n};\nvar _ModuleDescription = function (_a) {\n var availableModule = _a.availableModule;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), expandedDescription = _b[0], setExpandedDescription = _b[1];\n var toggleDescription = function () { return setExpandedDescription(!expandedDescription); };\n var maxDescriptionLength = 150; // Max character length before truncating the description.\n var truncatedDescription = availableModule[\"description\"].length > maxDescriptionLength\n ? availableModule[\"description\"].substring(0, maxDescriptionLength) +\n \"...\"\n : availableModule[\"description\"];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-description\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_markdown__WEBPACK_IMPORTED_MODULE_7__.Markdown, { remarkPlugins: [remark_gfm__WEBPACK_IMPORTED_MODULE_8__[\"default\"]] }, expandedDescription\n ? availableModule[\"description\"].replace(/\\\\n/g, \" \\n\")\n : truncatedDescription.replace(/\\\\n/g, \" \\n\")),\n availableModule[\"description\"].length > maxDescriptionLength && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { onClick: toggleDescription, className: \"toggle-description\" }, expandedDescription ? \"Show less\" : \"Show more\"))));\n};\nvar _VersionSelector = function (_a) {\n var availableModule = _a.availableModule, on_change = _a.on_change;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(availableModule.version || \"latest\"), selectedRelease = _b[0], setSelectedRelease = _b[1];\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\">=\"), selectedRestriction = _c[0], setSelectedRestriction = _c[1];\n var updateSelectedRelease = function (e) {\n var version = e.target.value;\n setSelectedRelease(version);\n if (version !== \"latest\")\n on_change(selectedRestriction + version);\n else\n on_change(version);\n };\n var updateSelectedRestriction = function (e) {\n setSelectedRestriction(e.target.value);\n if (selectedRelease !== \"latest\")\n on_change(e.target.value + selectedRelease);\n };\n // if availableModule.version is set and not in availableModule.releases, add it to the beginning of the list\n if (availableModule.releases &&\n !availableModule.releases.includes(selectedRelease)) {\n availableModule.releases.unshift(selectedRelease);\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(\"select\", { value: selectedRestriction, onChange: updateSelectedRestriction },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \">=\" }, \">=\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"==\" }, \"==\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"<=\" }, \"<=\")),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", { onChange: updateSelectedRelease, value: selectedRelease }, availableModule[\"releases\"] &&\n availableModule[\"releases\"].map(function (release) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { key: release, value: release }, release)); }))));\n};\nvar ActiveModule = function (_a) {\n var availableModule = _a.availableModule, on_remove = _a.on_remove, on_update = _a.on_update;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(availableModule.version || \"latest\"), selectedRelease = _b[0], setSelectedRelease = _b[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addable-module\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-name\" }, availableModule[\"name\"] +\n (availableModule.version ? \" (\".concat(availableModule.version, \")\") : \"\")),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ModuleLinks, { availableModule: availableModule }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ModuleDescription, { availableModule: availableModule }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_VersionSelector, { availableModule: availableModule, on_change: setSelectedRelease }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"update-button\", disabled: selectedRelease === availableModule.version, onClick: function () {\n on_update(availableModule, selectedRelease);\n } }, \"Update\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"remove-button\", onClick: function () {\n on_remove(availableModule);\n } }, \"Remove\"))));\n};\nvar AddableModule = function (_a) {\n var availableModule = _a.availableModule, on_add = _a.on_add;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(availableModule.version || \"latest\"), selectedRelease = _b[0], setSelectedRelease = _b[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addable-module\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-name\" }, availableModule[\"name\"] +\n (availableModule.version ? \" (\".concat(availableModule.version, \")\") : \"\")),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ModuleLinks, { availableModule: availableModule }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ModuleDescription, { availableModule: availableModule }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_VersionSelector, { availableModule: availableModule, on_change: setSelectedRelease }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"add-button\", onClick: function () {\n on_add(availableModule, selectedRelease);\n } }, \"Add\"))));\n};\nvar InstallableModule = function (_a) {\n var availableModule = _a.availableModule, on_add = _a.on_add;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(availableModule.version || \"latest\"), selectedRelease = _b[0], setSelectedRelease = _b[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addable-module\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"module-name\" }, availableModule[\"name\"]),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ModuleLinks, { availableModule: availableModule }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ModuleDescription, { availableModule: availableModule }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_VersionSelector, { availableModule: availableModule, on_change: setSelectedRelease }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { className: \"add-button\", onClick: function () {\n on_add(availableModule, selectedRelease);\n } }, \"Add\"))));\n};\nvar AddLibraryOverLay = function (_a) {\n var children = _a.children;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), filter = _b[0], setFilter = _b[1]; // State for the filter input\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true), activeExtended = _c[0], SetActiveExtended = _c[1];\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true), availableExtended = _d[0], SetAvailableExtended = _d[1];\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true), installedExtended = _e[0], SetInstalledExtended = _e[1];\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n installed: [],\n available: [],\n active: [],\n }), availableModules = _f[0], SetAvailableModules = _f[1];\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isDialogOpen = _g[0], setIsDialogOpen = _g[1];\n var update_modules = function (open) {\n if (!open)\n return;\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.get_available_modules().then(function (modules) {\n console.log(modules);\n SetAvailableModules(modules);\n });\n };\n if (!zustand.worker) {\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null);\n }\n var add_new_lib_from_installed = function (module, release) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.add_lib(module.name, release); // use name as module name\n };\n var add_new_lib_from_installable = function (module, release) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.add_lib(module.name, release); // use name as module name\n };\n var remove_lib_from_active = function (module) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.remove_lib(module.name);\n };\n var update_lib = function (module, release) {\n setIsDialogOpen(false);\n if (zustand.worker === undefined) {\n return;\n }\n zustand.worker.add_lib(module.name, release);\n };\n // Filter the modules based on the search term, ignoring case\n var filterModules = function (modules) {\n return modules.filter(function (module) {\n return module.name.toLowerCase().includes(filter.toLowerCase()) ||\n module.description.toLowerCase().includes(filter.toLowerCase());\n });\n };\n var availableModulesFiltered = filterModules(availableModules.available);\n var installedModulesFiltered = filterModules(availableModules.installed);\n var activeModulesFiltered = filterModules(availableModules.active);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { title: \"Manage Library\", trigger: children, description: \"Add or remove libraries to the current worker.\", onOpenChange: update_modules, open: isDialogOpen, setOpen: setIsDialogOpen },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"filter-input styledinput\", type: \"text\", placeholder: \"Filter modules...\", value: filter, onChange: function (e) { return setFilter(e.target.value); } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"packagelist\", style: { maxHeight: \"70%\", overflow: \"auto\" } },\n installedModulesFiltered.length > 0 && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", { onClick: function () {\n SetInstalledExtended(!installedExtended);\n } }, \"Installed\")),\n installedExtended &&\n installedModulesFiltered.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AddableModule, { key: idx, availableModule: item, on_add: add_new_lib_from_installed })); }),\n availableModulesFiltered.length > 0 && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", { onClick: function () {\n SetAvailableExtended(!availableExtended);\n } }, \"Available\")),\n availableExtended &&\n availableModulesFiltered.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InstallableModule, { key: idx, availableModule: item, on_add: add_new_lib_from_installable })); }),\n activeModulesFiltered.length > 0 && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"h3\", { onClick: function () {\n SetActiveExtended(!activeExtended);\n } }, \"Active\")),\n activeExtended &&\n activeModulesFiltered.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ActiveModule, { key: idx, availableModule: item, on_remove: remove_lib_from_active, on_update: update_lib })); }))));\n};\nvar ExternalWorkerInstanceSettings = function (_a) {\n var ins = _a.ins;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(ins.name), tempName = _b[0], setTempName = _b[1];\n var fnrz = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var stop_instance = function () {\n if (!fnrz.worker)\n return;\n fnrz.worker.remove_external_worker(ins.uuid, ins.nodeclassid);\n };\n var save_instance = function () {\n if (!fnrz.worker)\n return;\n fnrz.worker.update_external_worker(ins.uuid, ins.nodeclassid, {\n name: tempName,\n });\n ins.name = tempName;\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(_dialog__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { title: ins.name, description: \"Settings for\" + ins.name, trigger: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, \"Settings\"), buttons: [\n {\n text: \"Save\",\n onClick: save_instance,\n close: true,\n },\n {\n text: \"Delete\",\n onClick: stop_instance,\n close: true,\n },\n ] },\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(\"label\", { htmlFor: \"name\" }, \"Name: \"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", name: \"name\", value: tempName, onChange: function (e) { return setTempName(e.target.value); }, className: \"styledinput\" }))))));\n};\nvar ExternalWorkerInstanceEntry = function (_a) {\n var _b;\n var ins = _a.ins, lib = _a.lib, _c = _a.filter, filter = _c === void 0 ? \"\" : _c;\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _d[0], setIsOpen = _d[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var filterednodes = (_b = lib === null || lib === void 0 ? void 0 : lib.nodes) === null || _b === void 0 ? void 0 : _b.filter(function (node) {\n return node.node_id.toLowerCase().includes(filter.toLowerCase());\n });\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: ins.name },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, ins.name),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" }, isOpen && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodeentry\", title: ins.uuid },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerInstanceSettings, { ins: ins })),\n lib && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n filterednodes && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, filterednodes.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryNode, { key: idx, item: subItem })); }))),\n lib.subshelves.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryShelf, { key: idx, item: subItem, filter: filter })); })))))))));\n};\nvar ExternalWorkerClassEntry = function (_a) {\n var item = _a.item, mod = _a.mod, lib = _a.lib;\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _b[0], setIsOpen = _b[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var add_to_flow = function () {\n var _a;\n (_a = zustand.worker) === null || _a === void 0 ? void 0 : _a.add_external_worker({\n module: mod,\n cls_module: item.module,\n cls_name: item.class_name,\n });\n };\n var click_new_instance = function (event) {\n // if double click, add node to graph\n if (event.detail === 2) {\n add_to_flow();\n }\n };\n var title = item.name || item.module + \".\" + item.class_name;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: title },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, title),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (isOpen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" }, isOpen && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodeentry\", onClick: click_new_instance, title: item.name }, \"New Instance\"),\n item.instances.map(function (instance, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerInstanceEntry, { key: idx, ins: instance, lib: lib === null || lib === void 0 ? void 0 : lib.subshelves.find(function (shelf) { return shelf.name === instance.uuid; }) })); })))))));\n};\nvar ExternalWorkerShelf = function (_a) {\n var externalworkermod = _a.externalworkermod, lib = _a.lib;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), isOpen = _b[0], setIsOpen = _b[1];\n var handleToggle = function () { return setIsOpen(!isOpen); };\n var _isopen = isOpen;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelfcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle\", onClick: handleToggle, style: { cursor: \"pointer\" }, title: externalworkermod.module },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"shelftitle_text\" }, externalworkermod.module),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"expandicon \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer \" + (_isopen ? \"open\" : \"close\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libnodecontainer_inner\" }, externalworkermod.worker_classes.map(function (subItem, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerClassEntry, { key: idx, item: subItem, mod: externalworkermod.module, lib: lib })); }))),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null)));\n};\nvar Library = function () {\n var _a;\n var zustand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_index__WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var libstate = zustand.lib.libstate();\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"), filter = _b[0], setFilter = _b[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libcontainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"library\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libtitle\" }, \"Lib\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", { className: \"hr_prominent\" }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibFilter, { filter: filter, setFilter: setFilter }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"vscrollcontainer\" }, libstate.lib.shelves.map(function (item, idx) {\n return item.name == \"_external_worker\" ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null)) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LibraryShelf, { key: idx, item: item, filter: filter }));\n })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"libtitle\" }, \"External Worker\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", { className: \"hr_prominent\" }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"vscrollcontainer\" }, (_a = libstate.external_worker) === null || _a === void 0 ? void 0 : _a.map(function (item, idx) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ExternalWorkerShelf, { key: idx, externalworkermod: item, lib: libstate.lib.shelves.find(function (shelf) { return shelf.name === \"_external_worker\"; }) })); })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"hr\", null)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: { paddingTop: \"0.5rem\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"addlib\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AddLibraryOverLay, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { disabled: zustand.worker === undefined }, \"Manage Libraries\")))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Library);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/lib.tsx?");
|
|
2980
2980
|
|
|
2981
2981
|
/***/ }),
|
|
2982
2982
|
|
|
@@ -3009,7 +3009,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3009
3009
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3010
3010
|
|
|
3011
3011
|
"use strict";
|
|
3012
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BooleanInput: () => (/* binding */ BooleanInput),\n/* harmony export */ ColorInput: () => (/* binding */ ColorInput),\n/* harmony export */ FloatInput: () => (/* binding */ FloatInput),\n/* harmony export */ IntegerInput: () => (/* binding */ IntegerInput),\n/* harmony export */ SelectionInput: () => (/* binding */ SelectionInput),\n/* harmony export */ StringInput: () => (/* binding */ StringInput)\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 _utils_colorpicker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/colorpicker */ \"./src/frontend/utils/colorpicker.tsx\");\n/* harmony import */ var _radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-slider */ \"../node_modules/@radix-ui/react-slider/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-tooltip */ \"../node_modules/@radix-ui/react-tooltip/dist/index.mjs\");\n/* harmony import */ var _utils_select__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/select */ \"./src/frontend/utils/select.tsx\");\n\n\n\n\n\n\n\nvar BooleanInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var indeterminate = io.value === undefined;\n var cRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (!cRef.current)\n return;\n cRef.current.indeterminate = indeterminate;\n }, [cRef, indeterminate]);\n var on_change = function (e) {\n var _a;\n var new_value = e.target.checked;\n try {\n new_value = inputconverter[0](e.target.checked);\n }\n catch (e) { }\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { ref: cRef, type: \"checkbox\", className: \"styledcheckbox booleaninput\", checked: !!inputconverter[1](io.value), onChange: on_change, disabled: io.connected }));\n};\nvar NumberInput = function (_a) {\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var io = _a.io, inputconverter = _a.inputconverter, _o = _a.parser, parser = _o === void 0 ? function (n) { return parseFloat(n); } : _o;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _p = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(inputconverter[1](io.value)), tempvalue = _p[0], setTempValue = _p[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setTempValue(inputconverter[1](io.value));\n }, [io.value]);\n var set_new_value = function (new_value) {\n var _a, _b, _c;\n new_value = parser(parseFloat(new_value.toString()).toString() // parse float first for e notation\n );\n if (isNaN(new_value)) {\n new_value = \"<NoValue>\";\n setTempValue(\"\");\n }\n else {\n if (((_a = io.value_options) === null || _a === void 0 ? void 0 : _a.min) !== undefined &&\n new_value < io.value_options.min)\n new_value = io.value_options.min;\n if (((_b = io.value_options) === null || _b === void 0 ? void 0 : _b.max) !== undefined &&\n new_value > io.value_options.max)\n new_value = io.value_options.max;\n setTempValue(new_value.toString());\n }\n try {\n new_value = inputconverter[0](new_value);\n }\n catch (e) { }\n (_c = fnrf_zst.worker) === null || _c === void 0 ? void 0 : _c.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var on_change = function (e) {\n set_new_value(e.target.value);\n };\n var v = io.connected ? inputconverter[1](io.value) : tempvalue;\n if (v === undefined)\n v = (_b = io.value_options) === null || _b === void 0 ? void 0 : _b.min;\n if (v === undefined)\n v = (_c = io.value_options) === null || _c === void 0 ? void 0 : _c.max;\n if (v === undefined)\n v = \"\";\n if (v === null)\n v = \"\";\n if (((_d = io.value_options) === null || _d === void 0 ? void 0 : _d.max) !== undefined &&\n ((_e = io.value_options) === null || _e === void 0 ? void 0 : _e.min) !== undefined) {\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: { minWidth: \"100px\" }, className: \"SliderContainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Root, { className: \"SliderRoot\", value: [v === undefined ? (_f = io.value_options) === null || _f === void 0 ? void 0 : _f.min : v], min: (_g = io.value_options) === null || _g === void 0 ? void 0 : _g.min, max: (_h = io.value_options) === null || _h === void 0 ? void 0 : _h.max, step: io.value_options.step ||\n (((_j = io.value_options) === null || _j === void 0 ? void 0 : _j.max) - ((_k = io.value_options) === null || _k === void 0 ? void 0 : _k.min)) / 1000, disabled: io.connected, onValueCommit: function (value) {\n if (isNaN(value[0]))\n return;\n set_new_value(value[0]);\n }, onValueChange: function (value) {\n if (isNaN(value[0]))\n return;\n setTempValue(value[0].toString());\n } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Track, { className: \"SliderTrack\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Range, { className: \"SliderRange\" })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.TooltipProvider, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.Root, { open: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Thumb, { className: \"SliderThumb\" })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"SliderTooltipContent\" }, v))))));\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", className: \"nodedatainput styledinput numberinput\", value: v, onChange: function (e) { return setTempValue(e.target.value); }, onBlur: on_change, onKeyDown: function (e) {\n // on key up add step to value\n if (e.key === \"ArrowUp\") {\n var step = io.render_options.step || 1;\n if (e.shiftKey)\n step *= 10;\n var new_value = (parseFloat(v) || 0) + step;\n // setTempValue(new_value.toString());\n set_new_value(new_value);\n return;\n }\n // on key down subtract step to value\n if (e.key === \"ArrowDown\") {\n var step = io.render_options.step || 1;\n if (e.shiftKey)\n step *= 10;\n var new_value = (parseFloat(v) || 0) - step;\n // setTempValue(new_value.toString());\n set_new_value(new_value);\n return;\n }\n //accept only numbers\n if (!/^[0-9.eE+-]$/.test(e.key) &&\n ![\"Backspace\", \"ArrowLeft\", \"ArrowRight\", \"Delete\", \"Tab\"].includes(e.key)) {\n e.preventDefault();\n }\n }, disabled: io.connected, step: io.render_options.step, min: (_l = io.value_options) === null || _l === void 0 ? void 0 : _l.min, max: (_m = io.value_options) === null || _m === void 0 ? void 0 : _m.max }));\n};\nvar FloatInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n return NumberInput({ io: io, inputconverter: inputconverter, parser: parseFloat });\n};\nvar IntegerInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n return NumberInput({ io: io, inputconverter: inputconverter, parser: parseInt });\n};\nvar StringInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(inputconverter[1](io.value)), tempvalue = _b[0], setTempValue = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setTempValue(inputconverter[1](io.value));\n }, [io.value]);\n var on_change = function (e) {\n var _a;\n var new_value = e.target.value;\n if (!new_value)\n new_value = \"<NoValue>\";\n try {\n new_value = inputconverter[0](new_value);\n }\n catch (e) { }\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var v = io.connected ? inputconverter[1](io.value) : tempvalue;\n if (v === undefined || v === null)\n v = \"\";\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"nodedatainput styledinput stringinput\", value: v, onChange: function (e) { return setTempValue(e.target.value); }, onBlur: on_change, disabled: io.connected }));\n};\nvar _parse_string = function (s) { return s; };\nvar _parse_number = function (s) { return parseFloat(s); };\nvar _parse_boolean = function (s) { return !!s; };\nvar _parse_null = function (s) { return (s === \"null\" ? null : s); };\nvar get_parser = function (datatype) {\n if (datatype === \"nuinputconvertermber\") {\n return _parse_number;\n }\n if (datatype === \"boolean\") {\n return _parse_boolean;\n }\n if (datatype === \"undefined\") {\n return _parse_null;\n }\n return _parse_string;\n};\nvar SelectionInput = function (_a) {\n var _b;\n var io = _a.io, inputconverter = _a.inputconverter, parser = _a.parser;\n var options = ((_b = io.value_options) === null || _b === void 0 ? void 0 : _b.options) || [];\n if (Array.isArray(options)) {\n options = {\n type: \"enum\",\n values: options,\n keys: options.map(function (x) { return (x === null ? \"None\" : x.toString()); }),\n nullable: false,\n };\n }\n if (options.type !== \"enum\") {\n options = {\n type: \"enum\",\n values: Object.values(options),\n keys: Object.keys(options),\n nullable: false,\n };\n }\n options = options;\n if (options.nullable &&\n !options.values.includes(null) &&\n !options.keys.includes(\"None\")) {\n options.values.unshift(null);\n options.keys.unshift(\"None\");\n }\n //make key value pairs\n var optionsmap = [];\n for (var i = 0; i < options.values.length; i++) {\n // set const t to \"string\", \"number\",\"boolean\" \"null\" depenting on the type of options.values[i]\n var t = options.values[i] === null || options.values[i] === undefined\n ? \"undefined\"\n : typeof options.values[i];\n var v_1 = options.values[i];\n if (v_1 === null) {\n v_1 = \"null\";\n }\n if (v_1 === undefined) {\n v_1 = \"undefined\";\n }\n optionsmap.push([options.keys[i], v_1.toString(), t]);\n }\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var on_change_value = function (_a) {\n var _b;\n var value = _a.value, \n // label\n datatype = _a.datatype;\n // Use the existing parser or get a new one based on the datatype\n var p = parser || get_parser(datatype);\n var new_value = p(value);\n try {\n new_value = inputconverter[0](value);\n }\n catch (e) { }\n (_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var on_change = function (e) {\n // Find the selected option element\n var selectedOption = e.target.options[e.target.selectedIndex];\n // Retrieve the datatype attribute from the selected option\n var datatype = selectedOption.getAttribute(\"datatype\");\n on_change_value({\n value: e.target.value,\n // label: selectedOption.text,\n datatype: datatype || \"string\",\n });\n };\n var v = io.value;\n if (v === null) {\n v = \"null\";\n }\n if (v === undefined) {\n v = \"undefined\";\n }\n var default_entry = optionsmap.find(function (option) { return option[1] === v; });\n var default_value;\n if (default_entry !== undefined) {\n default_value = {\n value: default_entry[1],\n label: default_entry[0],\n datatype: default_entry[2],\n };\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_select__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { className: \"nodedatainput styleddropdown\", options: optionsmap.map(function (option) { return ({\n value: option[1],\n label: option[0],\n datatype: option[2],\n }); }), defaultValue: default_value, onChange: function (newValue) {\n if (newValue === null)\n newValue = {\n value: \"<NoValue>\",\n label: \"<NoValue>\",\n datatype: \"string\",\n };\n on_change_value(newValue);\n } }));\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", { value: v, onChange: on_change, disabled: io.connected, className: \"nodedatainput styleddropdown\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"<NoValue>\", disabled: true }, \"select\"),\n optionsmap.map(function (option) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { key: option[0], value: option[1], datatype: option[2] }, option[0])); })));\n};\nvar ColorInput = function (_a) {\n var _b;\n var io = _a.io;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var colorspace = ((_b = io.value_options) === null || _b === void 0 ? void 0 : _b.colorspace) || \"hex\";\n var on_change = function (colorconverter) {\n var _a;\n var new_value = \"<NoValue>\";\n if (colorconverter) {\n if (colorconverter[colorspace])\n new_value = colorconverter[colorspace]();\n else\n new_value = colorconverter.hex();\n }\n if (colorconverter === null)\n new_value = null;\n try {\n new_value = new_value;\n }\n catch (e) { }\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var allow_null = false;\n if (typeof io.type !== \"string\" &&\n \"anyOf\" in io.type &&\n io.type.anyOf !== undefined) {\n allow_null = io.type.anyOf.some(function (x) { return x === \"None\"; });\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_colorpicker__WEBPACK_IMPORTED_MODULE_2__[\"default\"], { onChange: on_change, inicolordata: io.value, allow_null: allow_null, inicolorspace: colorspace }));\n};\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/node/io/default_input_renderer.tsx?");
|
|
3012
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BooleanInput: () => (/* binding */ BooleanInput),\n/* harmony export */ ColorInput: () => (/* binding */ ColorInput),\n/* harmony export */ FloatInput: () => (/* binding */ FloatInput),\n/* harmony export */ IntegerInput: () => (/* binding */ IntegerInput),\n/* harmony export */ SelectionInput: () => (/* binding */ SelectionInput),\n/* harmony export */ StringInput: () => (/* binding */ StringInput)\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 _utils_colorpicker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/colorpicker */ \"./src/frontend/utils/colorpicker.tsx\");\n/* harmony import */ var _radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-slider */ \"../node_modules/@radix-ui/react-slider/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-tooltip */ \"../node_modules/@radix-ui/react-tooltip/dist/index.mjs\");\n/* harmony import */ var _utils_select__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/select */ \"./src/frontend/utils/select.tsx\");\n\n\n\n\n\n\n\nvar BooleanInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var indeterminate = io.value === undefined;\n var cRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (!cRef.current)\n return;\n cRef.current.indeterminate = indeterminate;\n }, [cRef, indeterminate]);\n var on_change = function (e) {\n var _a;\n var new_value = e.target.checked;\n try {\n new_value = inputconverter[0](e.target.checked);\n }\n catch (e) { }\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { ref: cRef, type: \"checkbox\", className: \"styledcheckbox booleaninput\", checked: !!inputconverter[1](io.value), onChange: on_change, disabled: io.connected }));\n};\nvar NumberInput = function (_a) {\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var io = _a.io, inputconverter = _a.inputconverter, _o = _a.parser, parser = _o === void 0 ? function (n) { return parseFloat(n); } : _o;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _p = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(inputconverter[1](io.value)), tempvalue = _p[0], setTempValue = _p[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setTempValue(inputconverter[1](io.value));\n }, [io.value]);\n var set_new_value = function (new_value) {\n var _a, _b, _c;\n new_value = parser(parseFloat(new_value.toString()).toString() // parse float first for e notation\n );\n if (isNaN(new_value)) {\n new_value = \"<NoValue>\";\n setTempValue(\"\");\n }\n else {\n if (((_a = io.value_options) === null || _a === void 0 ? void 0 : _a.min) !== undefined &&\n new_value < io.value_options.min)\n new_value = io.value_options.min;\n if (((_b = io.value_options) === null || _b === void 0 ? void 0 : _b.max) !== undefined &&\n new_value > io.value_options.max)\n new_value = io.value_options.max;\n setTempValue(new_value.toString());\n }\n try {\n new_value = inputconverter[0](new_value);\n }\n catch (e) { }\n (_c = fnrf_zst.worker) === null || _c === void 0 ? void 0 : _c.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var on_change = function (e) {\n set_new_value(e.target.value);\n };\n var v = io.connected ? inputconverter[1](io.value) : tempvalue;\n if (v === undefined)\n v = (_b = io.value_options) === null || _b === void 0 ? void 0 : _b.min;\n if (v === undefined)\n v = (_c = io.value_options) === null || _c === void 0 ? void 0 : _c.max;\n if (v === undefined)\n v = \"\";\n if (v === null)\n v = \"\";\n if (((_d = io.value_options) === null || _d === void 0 ? void 0 : _d.max) !== undefined &&\n ((_e = io.value_options) === null || _e === void 0 ? void 0 : _e.min) !== undefined) {\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: { minWidth: \"100px\" }, className: \"SliderContainer\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Root, { className: \"SliderRoot\", value: [v === undefined ? (_f = io.value_options) === null || _f === void 0 ? void 0 : _f.min : v], min: (_g = io.value_options) === null || _g === void 0 ? void 0 : _g.min, max: (_h = io.value_options) === null || _h === void 0 ? void 0 : _h.max, step: io.value_options.step ||\n (((_j = io.value_options) === null || _j === void 0 ? void 0 : _j.max) - ((_k = io.value_options) === null || _k === void 0 ? void 0 : _k.min)) / 1000, disabled: io.connected, onValueCommit: function (value) {\n if (isNaN(value[0]))\n return;\n set_new_value(value[0]);\n }, onValueChange: function (value) {\n if (isNaN(value[0]))\n return;\n setTempValue(value[0].toString());\n } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Track, { className: \"SliderTrack\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Range, { className: \"SliderRange\" })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.TooltipProvider, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.Root, { open: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slider__WEBPACK_IMPORTED_MODULE_4__.Thumb, { className: \"SliderThumb\" })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_tooltip__WEBPACK_IMPORTED_MODULE_5__.Content, { className: \"SliderTooltipContent\" }, v))))));\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", className: \"nodedatainput styledinput numberinput\", value: v, onChange: function (e) { return setTempValue(e.target.value); }, onBlur: on_change, onKeyDown: function (e) {\n // on key up add step to value\n if (e.key === \"ArrowUp\") {\n var step = io.render_options.step || 1;\n if (e.shiftKey)\n step *= 10;\n var new_value = (parseFloat(v) || 0) + step;\n // setTempValue(new_value.toString());\n set_new_value(new_value);\n return;\n }\n // on key down subtract step to value\n if (e.key === \"ArrowDown\") {\n var step = io.render_options.step || 1;\n if (e.shiftKey)\n step *= 10;\n var new_value = (parseFloat(v) || 0) - step;\n // setTempValue(new_value.toString());\n set_new_value(new_value);\n return;\n }\n //accept only numbers\n if (!/^[0-9.eE+-]$/.test(e.key) &&\n ![\"Backspace\", \"ArrowLeft\", \"ArrowRight\", \"Delete\", \"Tab\"].includes(e.key)) {\n e.preventDefault();\n }\n }, disabled: io.connected, step: io.render_options.step, min: (_l = io.value_options) === null || _l === void 0 ? void 0 : _l.min, max: (_m = io.value_options) === null || _m === void 0 ? void 0 : _m.max }));\n};\nvar FloatInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n return NumberInput({ io: io, inputconverter: inputconverter, parser: parseFloat });\n};\nvar IntegerInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n return NumberInput({ io: io, inputconverter: inputconverter, parser: parseInt });\n};\nvar StringInput = function (_a) {\n var io = _a.io, inputconverter = _a.inputconverter;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(inputconverter[1](io.value)), tempvalue = _b[0], setTempValue = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setTempValue(inputconverter[1](io.value));\n }, [io.value]);\n var on_change = function (e) {\n var _a;\n var new_value = e.target.value;\n if (!new_value)\n new_value = \"<NoValue>\";\n try {\n new_value = inputconverter[0](new_value);\n }\n catch (e) { }\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var v = io.connected ? inputconverter[1](io.value) : tempvalue;\n if (v === undefined || v === null)\n v = \"\";\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"nodedatainput styledinput stringinput\", value: v, onChange: function (e) { return setTempValue(e.target.value); }, onBlur: on_change, disabled: io.connected }));\n};\nvar _parse_string = function (s) { return s; };\nvar _parse_number = function (s) { return parseFloat(s); };\nvar _parse_boolean = function (s) { return !!s; };\nvar _parse_null = function (s) { return (s === \"null\" ? null : s); };\nvar get_parser = function (datatype) {\n if (datatype === \"nuinputconvertermber\") {\n return _parse_number;\n }\n if (datatype === \"boolean\") {\n return _parse_boolean;\n }\n if (datatype === \"undefined\") {\n return _parse_null;\n }\n return _parse_string;\n};\nvar SelectionInput = function (_a) {\n var _b;\n var io = _a.io, inputconverter = _a.inputconverter, parser = _a.parser;\n var options = ((_b = io.value_options) === null || _b === void 0 ? void 0 : _b.options) || [];\n if (Array.isArray(options)) {\n options = {\n type: \"enum\",\n values: options,\n keys: options.map(function (x) { return (x === null ? \"None\" : x.toString()); }),\n nullable: false,\n };\n }\n if (options.type !== \"enum\") {\n options = {\n type: \"enum\",\n values: Object.values(options),\n keys: Object.keys(options),\n nullable: false,\n };\n }\n options = options;\n if (options.nullable &&\n !options.values.includes(null) &&\n !options.keys.includes(\"None\")) {\n options.values.unshift(null);\n options.keys.unshift(\"None\");\n }\n //make key value pairs\n var optionsmap = [];\n for (var i = 0; i < options.values.length; i++) {\n // set const t to \"string\", \"number\",\"boolean\" \"null\" depenting on the type of options.values[i]\n var t = options.values[i] === null || options.values[i] === undefined\n ? \"undefined\"\n : typeof options.values[i];\n var v_1 = options.values[i];\n if (v_1 === null) {\n v_1 = \"null\";\n }\n if (v_1 === undefined) {\n v_1 = \"undefined\";\n }\n optionsmap.push([options.keys[i], v_1.toString(), t]);\n }\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var on_change_value = function (_a) {\n var _b;\n var value = _a.value, \n // label\n datatype = _a.datatype;\n // Use the existing parser or get a new one based on the datatype\n var p = parser || get_parser(datatype);\n var new_value = p(value);\n try {\n new_value = inputconverter[0](value);\n }\n catch (e) { }\n (_b = fnrf_zst.worker) === null || _b === void 0 ? void 0 : _b.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var on_change = function (e) {\n // Find the selected option element\n var selectedOption = e.target.options[e.target.selectedIndex];\n // Retrieve the datatype attribute from the selected option\n var datatype = selectedOption.getAttribute(\"datatype\");\n on_change_value({\n value: e.target.value,\n // label: selectedOption.text,\n datatype: datatype || \"string\",\n });\n };\n var v = io.value;\n if (v === null) {\n v = \"null\";\n }\n if (v === undefined) {\n v = \"undefined\";\n }\n var default_entry = optionsmap.find(function (option) { return option[1] === v.toString(); });\n var default_value;\n if (default_entry !== undefined) {\n default_value = {\n value: default_entry[1],\n label: default_entry[0],\n datatype: default_entry[2],\n };\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_select__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { className: \"nodedatainput styleddropdown\", options: optionsmap.map(function (option) { return ({\n value: option[1],\n label: option[0],\n datatype: option[2],\n }); }), defaultValue: default_value, onChange: function (newValue) {\n if (newValue === null)\n newValue = {\n value: \"<NoValue>\",\n label: \"<NoValue>\",\n datatype: \"string\",\n };\n on_change_value(newValue);\n } }));\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"select\", { value: v, onChange: on_change, disabled: io.connected, className: \"nodedatainput styleddropdown\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { value: \"<NoValue>\", disabled: true }, \"select\"),\n optionsmap.map(function (option) { return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"option\", { key: option[0], value: option[1], datatype: option[2] }, option[0])); })));\n};\nvar ColorInput = function (_a) {\n var _b;\n var io = _a.io;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_funcnodesreactflow__WEBPACK_IMPORTED_MODULE_1__.FuncNodesContext);\n var colorspace = ((_b = io.value_options) === null || _b === void 0 ? void 0 : _b.colorspace) || \"hex\";\n var on_change = function (colorconverter) {\n var _a;\n var new_value = \"<NoValue>\";\n if (colorconverter) {\n if (colorconverter[colorspace])\n new_value = colorconverter[colorspace]();\n else\n new_value = colorconverter.hex();\n }\n if (colorconverter === null)\n new_value = null;\n try {\n new_value = new_value;\n }\n catch (e) { }\n (_a = fnrf_zst.worker) === null || _a === void 0 ? void 0 : _a.set_io_value({\n nid: io.node,\n ioid: io.id,\n value: new_value,\n set_default: io.render_options.set_default,\n });\n };\n var allow_null = false;\n if (typeof io.type !== \"string\" &&\n \"anyOf\" in io.type &&\n io.type.anyOf !== undefined) {\n allow_null = io.type.anyOf.some(function (x) { return x === \"None\"; });\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_colorpicker__WEBPACK_IMPORTED_MODULE_2__[\"default\"], { onChange: on_change, inicolordata: io.value, allow_null: allow_null, inicolorspace: colorspace }));\n};\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/node/io/default_input_renderer.tsx?");
|
|
3013
3013
|
|
|
3014
3014
|
/***/ }),
|
|
3015
3015
|
|
|
@@ -3086,7 +3086,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3086
3086
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3087
3087
|
|
|
3088
3088
|
"use strict";
|
|
3089
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NodeName: () => (/* binding */ NodeName),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/icons-material/ExpandLess */ \"../node_modules/@mui/icons-material/ExpandLess.js\");\n/* harmony import */ var _mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/Lan */ \"../node_modules/@mui/icons-material/Lan.js\");\n/* harmony import */ var _mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/PlayCircleFilled */ \"../node_modules/@mui/icons-material/PlayCircleFilled.js\");\n/* harmony import */ var _node_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node.scss */ \"./src/frontend/node/node.scss\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .. */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _io__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./io */ \"./src/frontend/node/io/index.tsx\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _body_data_renderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./body_data_renderer */ \"./src/frontend/node/body_data_renderer.tsx\");\n/* harmony import */ var _datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _utils_progressbar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/progressbar */ \"./src/frontend/utils/progressbar.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NodeHeader = function (_a) {\n var node_data = _a.node_data;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var clicktrigger = function () {\n fnrf_zst.on_node_action({\n type: \"trigger\",\n from_remote: false,\n id: node_data.id,\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { fontSize: \"inherit\", className: \"triggerbutton\", onClick: clicktrigger }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { fontSize: \"inherit\", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _b = (_a = fnrf_zst.logger).info;\n _c = [\"nodestatus\"];\n return [4 /*yield*/, ((_d = fnrf_zst.worker) === null || _d === void 0 ? void 0 : _d.get_node_status(node_data.id))];\n case 1:\n _b.apply(_a, _c.concat([_e.sent()]));\n return [2 /*return*/];\n }\n });\n }); } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element nodeheader_title\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_title_text\" }, node_data.node_name)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { fontSize: \"inherit\" }))));\n};\nvar NodeDataRenderer = function (_a) {\n var _b, _c, _d, _e;\n var node_data = _a.node_data;\n var io = ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src)\n ? node_data.io[(_e = (_d = node_data.render_options) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.src]\n : undefined;\n var _f = io\n ? (0,_body_data_renderer__WEBPACK_IMPORTED_MODULE_5__.BodyDataRendererForIo)(io)\n : [undefined, undefined], pvhandle = _f[0], overlayhandle = _f[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodrag nodedatabody\" }, pvhandle && io && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { trigger: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: pvhandle, io: io })), onOpenChange: function (open) {\n if (open) {\n if (io === null || io === void 0 ? void 0 : io.try_get_full_value)\n io === null || io === void 0 ? void 0 : io.try_get_full_value();\n }\n } }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: overlayhandle, io: io })))));\n};\nvar NodeBody = function (_a) {\n var _b, _c;\n var node_data = _a.node_data;\n var inputs = Object.values(node_data.io).filter(function (io) { return io.is_input; });\n var outputs = Object.values(node_data.io).filter(function (io) { return !io.is_input; });\n if ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src) {\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodebody\" },\n outputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeOutput, { key: io.id, io: io });\n }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeDataRenderer, { node_data: node_data }),\n inputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeInput, { key: io.id, io: io });\n })));\n};\nvar NodeName = function (_a) {\n var node_data = _a.node_data;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(node_data.name), name = _b[0], setName = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setName(node_data.name);\n }, [node_data]);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var handleChange = function (event) {\n setName(event.target.value);\n };\n var finalSetName = function (e) {\n var new_name = e.target.value;\n fnrf_zst.on_node_action({\n type: \"update\",\n from_remote: false,\n id: node_data.id,\n node: { name: new_name },\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"nodename_input\", value: name, onChange: handleChange, onBlur: finalSetName }));\n};\nvar NodeProgressBar = function (_a) {\n var node_data = _a.node_data;\n if (!node_data.progress)\n return null;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_progressbar__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { style: {\n height: node_data.progress.prefix === \"idle\" ? \"0px\" : undefined,\n }, state: node_data.progress, className: \"nodeprogress\" }));\n};\nvar NodeFooter = function (_a) {\n var node_data = _a.node_data;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodefooter\" },\n node_data.error && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeerror\" }, node_data.error),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeProgressBar, { node_data: node_data })));\n};\n/**\n * A generic function to deeply merge two objects of type T.\n *\n * @param {T} target - The target object to be merged.\n * @param {DeepPartial<T>} source - The source object to merge into the target. All properties of this object are optional.\n *\n * @returns {Object} An object containing the merged object (new_obj) and a boolean indicating if there was a change (change).\n *\n * @throws {Type 'string' cannot be used to index type 'T'} This error is ignored using the @ts-ignore directive because we are dynamically accessing properties of a generic type T.\n */\nvar DefaultNode = function (_a) {\n var data = _a.data;\n // Use the NodeStore to get the data for the node.\n var storedata = data.UseNodeStore();\n var collapsed = storedata.frontend.collapsed || false;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), visualTrigger = _b[0], setVisualTrigger = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var timeoutId;\n // When in_trigger becomes true, set visualTrigger to true immediately\n if (storedata.in_trigger) {\n setVisualTrigger(true);\n }\n else if (visualTrigger) {\n // When in_trigger becomes false, wait for a minimum duration before setting visualTrigger to false\n timeoutId = setTimeout(function () { return setVisualTrigger(false); }, 200); // 50ms or any other duration you see fit\n }\n return function () { return clearTimeout(timeoutId); }; // Cleanup timeout on component unmount or state changes\n }, [storedata.in_trigger, visualTrigger]);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"innernode\" +\n (visualTrigger ? \" intrigger\" : \"\") +\n (storedata.error ? \" error\" : \"\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeHeader, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeName, { node_data: storedata }),\n collapsed ? null : react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeBody, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeFooter, { node_data: storedata }))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DefaultNode);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/node/node.tsx?");
|
|
3089
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NodeName: () => (/* binding */ NodeName),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/icons-material/ExpandLess */ \"../node_modules/@mui/icons-material/ExpandLess.js\");\n/* harmony import */ var _mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/icons-material/Lan */ \"../node_modules/@mui/icons-material/Lan.js\");\n/* harmony import */ var _mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/PlayCircleFilled */ \"../node_modules/@mui/icons-material/PlayCircleFilled.js\");\n/* harmony import */ var _node_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node.scss */ \"./src/frontend/node/node.scss\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .. */ \"./src/frontend/index.tsx\");\n/* harmony import */ var _io__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./io */ \"./src/frontend/node/io/index.tsx\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dialog */ \"./src/frontend/dialog.tsx\");\n/* harmony import */ var _body_data_renderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./body_data_renderer */ \"./src/frontend/node/body_data_renderer.tsx\");\n/* harmony import */ var _datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../datarenderer/rendermappings */ \"./src/frontend/datarenderer/rendermappings.tsx\");\n/* harmony import */ var _utils_progressbar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/progressbar */ \"./src/frontend/utils/progressbar.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar NodeHeader = function (_a) {\n var node_data = _a.node_data;\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var clicktrigger = function () {\n fnrf_zst.on_node_action({\n type: \"trigger\",\n from_remote: false,\n id: node_data.id,\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader\", title: node_data.description || node_data.node_name },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_PlayCircleFilled__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { fontSize: \"inherit\", className: \"triggerbutton\", onClick: clicktrigger }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_Lan__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { fontSize: \"inherit\", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _b = (_a = fnrf_zst.logger).info;\n _c = [\"nodestatus\"];\n return [4 /*yield*/, ((_d = fnrf_zst.worker) === null || _d === void 0 ? void 0 : _d.get_node_status(node_data.id))];\n case 1:\n _b.apply(_a, _c.concat([_e.sent()]));\n return [2 /*return*/];\n }\n });\n }); } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element nodeheader_title\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_title_text\" }, node_data.node_name)),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeheader_element\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_icons_material_ExpandLess__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { fontSize: \"inherit\" }))));\n};\nvar NodeDataRenderer = function (_a) {\n var _b, _c, _d, _e;\n var node_data = _a.node_data;\n var io = ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src)\n ? node_data.io[(_e = (_d = node_data.render_options) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.src]\n : undefined;\n var _f = io\n ? (0,_body_data_renderer__WEBPACK_IMPORTED_MODULE_5__.BodyDataRendererForIo)(io)\n : [undefined, undefined], pvhandle = _f[0], overlayhandle = _f[1];\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodrag nodedatabody\" }, pvhandle && io && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_dialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { trigger: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: pvhandle, io: io })), onOpenChange: function (open) {\n if (open) {\n if (io === null || io === void 0 ? void 0 : io.try_get_full_value)\n io === null || io === void 0 ? void 0 : io.try_get_full_value();\n }\n } }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datarenderer_rendermappings__WEBPACK_IMPORTED_MODULE_6__.DynamicComponentLoader, { component: overlayhandle, io: io })))));\n};\nvar NodeBody = function (_a) {\n var _b, _c;\n var node_data = _a.node_data;\n var inputs = Object.values(node_data.io).filter(function (io) { return io.is_input; });\n var outputs = Object.values(node_data.io).filter(function (io) { return !io.is_input; });\n if ((_c = (_b = node_data.render_options) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.src) {\n }\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodebody\" },\n outputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeOutput, { key: io.id, io: io });\n }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeDataRenderer, { node_data: node_data }),\n inputs.map(function (io) {\n if (io.hidden)\n return null;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_io__WEBPACK_IMPORTED_MODULE_3__.NodeInput, { key: io.id, io: io });\n })));\n};\nvar NodeName = function (_a) {\n var node_data = _a.node_data;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(node_data.name), name = _b[0], setName = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n setName(node_data.name);\n }, [node_data]);\n var fnrf_zst = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(___WEBPACK_IMPORTED_MODULE_2__.FuncNodesContext);\n var handleChange = function (event) {\n setName(event.target.value);\n };\n var finalSetName = function (e) {\n var new_name = e.target.value;\n fnrf_zst.on_node_action({\n type: \"update\",\n from_remote: false,\n id: node_data.id,\n node: { name: new_name },\n });\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { className: \"nodename_input\", value: name, onChange: handleChange, onBlur: finalSetName }));\n};\nvar NodeProgressBar = function (_a) {\n var node_data = _a.node_data;\n if (!node_data.progress)\n return null;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_utils_progressbar__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { style: {\n height: node_data.progress.prefix === \"idle\" ? \"0px\" : undefined,\n }, state: node_data.progress, className: \"nodeprogress\" }));\n};\nvar NodeFooter = function (_a) {\n var node_data = _a.node_data;\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodefooter\" },\n node_data.error && react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"nodeerror\" }, node_data.error),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeProgressBar, { node_data: node_data })));\n};\n/**\n * A generic function to deeply merge two objects of type T.\n *\n * @param {T} target - The target object to be merged.\n * @param {DeepPartial<T>} source - The source object to merge into the target. All properties of this object are optional.\n *\n * @returns {Object} An object containing the merged object (new_obj) and a boolean indicating if there was a change (change).\n *\n * @throws {Type 'string' cannot be used to index type 'T'} This error is ignored using the @ts-ignore directive because we are dynamically accessing properties of a generic type T.\n */\nvar DefaultNode = function (_a) {\n var data = _a.data;\n // Use the NodeStore to get the data for the node.\n var storedata = data.UseNodeStore();\n var collapsed = storedata.frontend.collapsed || false;\n var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), visualTrigger = _b[0], setVisualTrigger = _b[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var timeoutId;\n // When in_trigger becomes true, set visualTrigger to true immediately\n if (storedata.in_trigger) {\n setVisualTrigger(true);\n }\n else if (visualTrigger) {\n // When in_trigger becomes false, wait for a minimum duration before setting visualTrigger to false\n timeoutId = setTimeout(function () { return setVisualTrigger(false); }, 200); // 50ms or any other duration you see fit\n }\n return function () { return clearTimeout(timeoutId); }; // Cleanup timeout on component unmount or state changes\n }, [storedata.in_trigger, visualTrigger]);\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"innernode\" +\n (visualTrigger ? \" intrigger\" : \"\") +\n (storedata.error ? \" error\" : \"\") },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeHeader, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeName, { node_data: storedata }),\n collapsed ? null : react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeBody, { node_data: storedata }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NodeFooter, { node_data: storedata }))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DefaultNode);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/node/node.tsx?");
|
|
3090
3090
|
|
|
3091
3091
|
/***/ }),
|
|
3092
3092
|
|
|
@@ -3108,7 +3108,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3108
3108
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3109
3109
|
|
|
3110
3110
|
"use strict";
|
|
3111
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HSLColorPicker: () => (/* binding */ HSLColorPicker),\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 _radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-popover */ \"../node_modules/@radix-ui/react-popover/dist/index.mjs\");\n/* harmony import */ var color_convert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! color-convert */ \"../node_modules/color-convert/index.js\");\n/* harmony import */ var color_convert__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(color_convert__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _colorpicker_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colorpicker.scss */ \"./src/frontend/utils/colorpicker.scss\");\n\n\n\n\nvar create_color_converter = function (type, data) {\n if (!Array.isArray(data))\n data = [data];\n if (data[0] === undefined || data[0] === null)\n return create_color_converter(\"rgb\", [0, 0, 0]);\n // @ts-ignore\n var source = (color_convert__WEBPACK_IMPORTED_MODULE_1___default())[type];\n if (!source)\n throw new Error(\"Unsupported color type: \" + type);\n source[type] = function () { return data; };\n var checkrgb = source.rgb(data);\n if (!Array.isArray(checkrgb))\n return create_color_converter(\"rgb\", [0, 0, 0]);\n if (checkrgb[0] === undefined || checkrgb[0] === null)\n return create_color_converter(\"rgb\", [0, 0, 0]);\n var checkhsl = source.hsl(data);\n if (!Array.isArray(checkhsl))\n return create_color_converter(\"rgb\", [0, 0, 0]);\n if (checkhsl[0] === undefined || checkhsl[0] === null)\n return create_color_converter(\"rgb\", [0, 0, 0]);\n var converter = {};\n Object.keys(source).forEach(function (key) {\n var entry = source[key];\n //check if entry is a function\n if (typeof entry === \"function\") {\n converter[key] = function () { return entry.apply(null, data); };\n }\n });\n return converter;\n};\nvar HSLColorPicker = function (_a) {\n var onChange = _a.onChange, colorconverter = _a.colorconverter, _b = _a.allow_null, allow_null = _b === void 0 ? false : _b;\n if (colorconverter === null && !allow_null)\n throw new Error(\"Color converter is null\");\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(colorconverter), converter = _c[0], setConverter = _c[1];\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0, 0]), hsl = _d[0], setHsl = _d[1];\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0, 0]), rgb = _e[0], setRgb = _e[1];\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0, 0]), hsv = _f[0], setHsv = _f[1];\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"000\"), hex = _g[0], setHex = _g[1];\n // const hsl = converter.hsl() as number[];\n // const rgb = converter.rgb() as number[];\n // const hsv = converter.hsv() as number[];\n // const hex = converter.hex() as string;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (!converter) {\n if (!allow_null)\n throw new Error(\"Color converter is null\");\n setRgb([0, 0, 0]);\n setHsl([0, 0, 0]);\n setHsv([0, 0, 0]);\n setHex(\"\");\n return;\n }\n setHsl(converter.hsl());\n setRgb(converter.rgb());\n setHsv(converter.hsv());\n setHex(converter.hex());\n }, [converter]);\n var colorStyle = {\n backgroundColor: \"hsl(\".concat(hsl[0], \", \").concat(hsl[1], \"%, \").concat(hsl[2], \"%)\"),\n padding: \"10px\",\n margin: \"10px 0\",\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: { backgroundColor: \"white\" } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: colorStyle }, \"Color Preview\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"RGB\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Red\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"255\", value: rgb[0], onChange: function (e) {\n var newrgb = [parseInt(e.target.value), rgb[1], rgb[2]];\n var newconverter = create_color_converter(\"rgb\", newrgb);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: { background: \"linear-gradient(to right, #000, #f00)\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Green\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"255\", value: rgb[1], onChange: function (e) {\n var newrgb = [rgb[0], parseInt(e.target.value), rgb[2]];\n var newconverter = create_color_converter(\"rgb\", newrgb);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: { background: \"linear-gradient(to right, #000, #0f0)\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Blue\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"255\", value: rgb[2], onChange: function (e) {\n var newrgb = [rgb[0], rgb[1], parseInt(e.target.value)];\n var newconverter = create_color_converter(\"rgb\", newrgb);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: { background: \"linear-gradient(to right, #000, #00f)\" } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"HSL\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Hue\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"360\", value: hsl[0], onChange: function (e) {\n var newhsl = [parseInt(e.target.value), hsl[1], hsl[2]];\n var newconverter = create_color_converter(\"hsl\", newhsl);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: {\n background: \"linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)\",\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Saturation\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsl[1], onChange: function (e) {\n var newhsl = [hsl[0], parseInt(e.target.value), hsl[2]];\n var newconverter = create_color_converter(\"hsl\", newhsl);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: {\n background: \"linear-gradient(to right, #fff, hsl(\".concat(hsl[0], \", 100%, 50%))\"),\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Lightness\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsl[2], onChange: function (e) {\n var newhsl = [hsl[0], hsl[1], parseInt(e.target.value)];\n var newconverter = create_color_converter(\"hsl\", newhsl);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: {\n background: \"linear-gradient(to right, #000, hsl(\".concat(hsl[0], \", 100%, 50%), #fff)\"),\n } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"HSV\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Hue\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"360\", value: hsv[0], onChange: function (e) {\n var newhsv = [parseInt(e.target.value), hsv[1], hsv[2]];\n var newconverter = create_color_converter(\"hsv\", newhsv);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: {\n background: \"linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)\",\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Saturation\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsv[1], onChange: function (e) {\n var newhsv = [hsv[0], parseInt(e.target.value), hsv[2]];\n var newconverter = create_color_converter(\"hsv\", newhsv);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: {\n background: \"linear-gradient(to right, #fff, hsl(\".concat(hsl[0], \", 100%, 50%))\"),\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Value\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsv[2], onChange: function (e) {\n var newhsv = [hsv[0], hsv[1], parseInt(e.target.value)];\n var newconverter = create_color_converter(\"hsv\", newhsv);\n setConverter(newconverter);\n onChange(newconverter);\n }, style: {\n background: \"linear-gradient(to right, #000, hsl(\".concat(hsl[0], \", 100%, 50%))\"),\n } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"HEX\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", value: hex, onChange: function (e) {\n var newconverter = e.target.value === \"\"\n ? null\n : create_color_converter(\"hex\", [e.target.value]);\n setConverter(newconverter);\n onChange(newconverter);\n } }))));\n};\nvar CustomColorPicker = function (_a) {\n var inicolordata = _a.inicolordata, _b = _a.inicolorspace, inicolorspace = _b === void 0 ? \"hex\" : _b, _c = _a.allow_null, allow_null = _c === void 0 ? false : _c, onChange = _a.onChange;\n if (inicolordata === undefined) {\n inicolordata = [0, 0, 0];\n inicolorspace = \"rgb\";\n }\n if (!Array.isArray(inicolordata))\n inicolordata = [inicolordata];\n var iniconverter = create_color_converter(inicolorspace, inicolordata);\n if (iniconverter.rgb() === undefined)\n iniconverter = create_color_converter(\"rgb\", [0, 0, 0]);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(iniconverter), color = _d[0], setColor = _d[1];\n var innerSetColor = function (colorconverter) {\n if (colorconverter === null && !allow_null)\n throw new Error(\"Color is null\");\n if (colorconverter !== null)\n setColor(colorconverter);\n if (onChange)\n onChange(colorconverter);\n };\n var style = {\n background: \"#\" + color.hex(),\n borderRadius: \"0.3rem\",\n width: \"2rem\",\n height: \"1rem\",\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { style: style })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Content, { side: \"left\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HSLColorPicker, { onChange: innerSetColor, colorconverter: color, allow_null: allow_null })))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CustomColorPicker);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/utils/colorpicker.tsx?");
|
|
3111
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HSLColorPicker: () => (/* binding */ HSLColorPicker),\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 _radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-popover */ \"../node_modules/@radix-ui/react-popover/dist/index.mjs\");\n/* harmony import */ var color_convert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! color-convert */ \"../node_modules/color-convert/index.js\");\n/* harmony import */ var color_convert__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(color_convert__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _colorpicker_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colorpicker.scss */ \"./src/frontend/utils/colorpicker.scss\");\n\n\n\n\nvar create_color_converter = function (type, data) {\n if (!Array.isArray(data))\n data = [data];\n if (data[0] === undefined || data[0] === null)\n return create_color_converter(\"rgb\", [0, 0, 0]);\n // @ts-ignore\n var source = (color_convert__WEBPACK_IMPORTED_MODULE_1___default())[type];\n if (!source)\n throw new Error(\"Unsupported color type: \" + type);\n source[type] = function () { return data; };\n var checkrgb = source.rgb(data);\n if (!Array.isArray(checkrgb))\n return create_color_converter(\"rgb\", [0, 0, 0]);\n if (checkrgb[0] === undefined || checkrgb[0] === null)\n return create_color_converter(\"rgb\", [0, 0, 0]);\n var checkhsl = source.hsl(data);\n if (!Array.isArray(checkhsl))\n return create_color_converter(\"rgb\", [0, 0, 0]);\n if (checkhsl[0] === undefined || checkhsl[0] === null)\n return create_color_converter(\"rgb\", [0, 0, 0]);\n var converter = {};\n Object.keys(source).forEach(function (key) {\n var entry = source[key];\n //check if entry is a function\n if (typeof entry === \"function\") {\n converter[key] = function () { return entry.apply(null, data); };\n }\n });\n return converter;\n};\nvar HSLColorPicker = function (_a) {\n var onChange = _a.onChange, colorconverter = _a.colorconverter, _b = _a.allow_null, allow_null = _b === void 0 ? false : _b;\n if (colorconverter === null && !allow_null)\n throw new Error(\"Color converter is null\");\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(colorconverter), converter = _c[0], setConverter = _c[1];\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0, 0]), hsl = _d[0], setHsl = _d[1];\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0, 0]), rgb = _e[0], setRgb = _e[1];\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0, 0]), hsv = _f[0], setHsv = _f[1];\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"000\"), hex = _g[0], setHex = _g[1];\n // const hsl = converter.hsl() as number[];\n // const rgb = converter.rgb() as number[];\n // const hsv = converter.hsv() as number[];\n // const hex = converter.hex() as string;\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (!converter) {\n if (!allow_null)\n throw new Error(\"Color converter is null\");\n setRgb([0, 0, 0]);\n setHsl([0, 0, 0]);\n setHsv([0, 0, 0]);\n setHex(\"\");\n return;\n }\n setHsl(converter.hsl());\n setRgb(converter.rgb());\n setHsv(converter.hsv());\n setHex(converter.hex());\n }, [converter]);\n var colorStyle = {\n backgroundColor: \"hsl(\".concat(hsl[0], \", \").concat(hsl[1], \"%, \").concat(hsl[2], \"%)\"),\n padding: \"10px\",\n margin: \"10px 0\",\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: { backgroundColor: \"white\" } },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { style: colorStyle }, \"Color Preview\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"RGB\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Red\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"255\", value: rgb[0], onChange: function (e) {\n var new_rgb = [parseInt(e.target.value), rgb[1], rgb[2]];\n var new_converter = create_color_converter(\"rgb\", new_rgb);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: { background: \"linear-gradient(to right, #000, #f00)\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Green\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"255\", value: rgb[1], onChange: function (e) {\n var new_rgb = [rgb[0], parseInt(e.target.value), rgb[2]];\n var new_converter = create_color_converter(\"rgb\", new_rgb);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: { background: \"linear-gradient(to right, #000, #0f0)\" } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Blue\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"255\", value: rgb[2], onChange: function (e) {\n var new_rgb = [rgb[0], rgb[1], parseInt(e.target.value)];\n var new_converter = create_color_converter(\"rgb\", new_rgb);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: { background: \"linear-gradient(to right, #000, #00f)\" } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"HSL\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Hue\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"360\", value: hsl[0], onChange: function (e) {\n var new_hsl = [parseInt(e.target.value), hsl[1], hsl[2]];\n var new_converter = create_color_converter(\"hsl\", new_hsl);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: {\n background: \"linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)\",\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Saturation\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsl[1], onChange: function (e) {\n var new_hsl = [hsl[0], parseInt(e.target.value), hsl[2]];\n var new_converter = create_color_converter(\"hsl\", new_hsl);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: {\n background: \"linear-gradient(to right, #fff, hsl(\".concat(hsl[0], \", 100%, 50%))\"),\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Lightness\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsl[2], onChange: function (e) {\n var new_hsl = [hsl[0], hsl[1], parseInt(e.target.value)];\n var new_converter = create_color_converter(\"hsl\", new_hsl);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: {\n background: \"linear-gradient(to right, #000, hsl(\".concat(hsl[0], \", 100%, 50%), #fff)\"),\n } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"HSV\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Hue\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"360\", value: hsv[0], onChange: function (e) {\n var new_hsv = [parseInt(e.target.value), hsv[1], hsv[2]];\n var new_converter = create_color_converter(\"hsv\", new_hsv);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: {\n background: \"linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)\",\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Saturation\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsv[1], onChange: function (e) {\n var new_hsv = [hsv[0], parseInt(e.target.value), hsv[2]];\n var new_converter = create_color_converter(\"hsv\", new_hsv);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: {\n background: \"linear-gradient(to right, #fff, hsl(\".concat(hsl[0], \", 100%, 50%))\"),\n } }),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", null, \"Value\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"range\", min: \"0\", max: \"100\", value: hsv[2], onChange: function (e) {\n var new_hsv = [hsv[0], hsv[1], parseInt(e.target.value)];\n var new_converter = create_color_converter(\"hsv\", new_hsv);\n setConverter(new_converter);\n onChange(new_converter);\n }, style: {\n background: \"linear-gradient(to right, #000, hsl(\".concat(hsl[0], \", 100%, 50%))\"),\n } })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", { className: \"colorspace_title\" }, \"HEX\"),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", { type: \"text\", value: hex, onChange: function (e) {\n var new_converter = e.target.value === \"\"\n ? null\n : create_color_converter(\"hex\", [e.target.value]);\n setConverter(new_converter);\n onChange(new_converter);\n } }))));\n};\nvar CustomColorPicker = function (_a) {\n var inicolordata = _a.inicolordata, _b = _a.inicolorspace, inicolorspace = _b === void 0 ? \"hex\" : _b, _c = _a.allow_null, allow_null = _c === void 0 ? false : _c, onChange = _a.onChange;\n if (inicolordata === undefined) {\n inicolordata = [0, 0, 0];\n inicolorspace = \"rgb\";\n }\n if (!Array.isArray(inicolordata))\n inicolordata = [inicolordata];\n var iniconverter = create_color_converter(inicolorspace, inicolordata);\n if (iniconverter.rgb() === undefined)\n iniconverter = create_color_converter(\"rgb\", [0, 0, 0]);\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(iniconverter), color = _d[0], setColor = _d[1];\n var innerSetColor = function (colorconverter) {\n if (colorconverter === null && !allow_null)\n throw new Error(\"Color is null\");\n if (colorconverter !== null)\n setColor(colorconverter);\n if (onChange)\n onChange(colorconverter);\n };\n var style = {\n background: \"#\" + color.hex(),\n borderRadius: \"0.3rem\",\n width: \"2rem\",\n height: \"1rem\",\n };\n return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Root, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Trigger, { asChild: true },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", { style: style })),\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Portal, null,\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_3__.Content, { side: \"left\" },\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HSLColorPicker, { onChange: innerSetColor, colorconverter: color, allow_null: allow_null })))));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CustomColorPicker);\n\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/frontend/utils/colorpicker.tsx?");
|
|
3112
3112
|
|
|
3113
3113
|
/***/ }),
|
|
3114
3114
|
|
|
@@ -3163,7 +3163,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3163
3163
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3164
3164
|
|
|
3165
3165
|
"use strict";
|
|
3166
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _utils_debugger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/debugger */ \"./src/utils/debugger.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar FuncNodesWorker = /** @class */ (function () {\n function FuncNodesWorker(data) {\n var _this = this;\n this.uuid = data.uuid;\n this.on_error =\n data.on_error ||\n (function (err) {\n var _a;\n (_a = _this._zustand) === null || _a === void 0 ? void 0 : _a.logger.error(err);\n });\n this.messagePromises = new Map();\n this._local_nodeupdates = new Map();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 1000);\n this.state = (0,zustand__WEBPACK_IMPORTED_MODULE_2__.create)(function (_set, _get) { return ({\n is_open: true,\n }); });\n if (data.zustand)\n this.set_zustand(data.zustand);\n if (data.on_sync_complete) {\n this.on_sync_complete = data.on_sync_complete;\n }\n else {\n this.on_sync_complete = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); }); };\n }\n }\n FuncNodesWorker.prototype.set_zustand = function (zustand) {\n if (zustand === this._zustand)\n return;\n this._zustand = zustand;\n zustand.set_worker(this);\n this._zustand.auto_progress();\n this.stepwise_fullsync();\n };\n Object.defineProperty(FuncNodesWorker.prototype, \"is_open\", {\n get: function () {\n return this.state.getState().is_open;\n },\n set: function (v) {\n this.state.setState({ is_open: v });\n },\n enumerable: false,\n configurable: true\n });\n FuncNodesWorker.prototype.stepwise_fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this.sync_lib()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.sync_funcnodes_plugins()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.sync_nodespace()];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.sync_view_state()];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.on_sync_complete(this)];\n case 6:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_lib = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_library\",\n wait_for_response: true,\n retries: 2,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n lib: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_external_worker = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_worker_dependencies\",\n wait_for_response: true,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n external_worker: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_funcnodes_plugins = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_1, key, plugin, _a, _b, js, scripttag, _c, _d, css, styletag, binaryString, binaryLen, bytes, i, blob, blobUrl, module;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin_keys\",\n wait_for_response: true,\n kwargs: { type: \"react\" },\n })];\n case 1:\n resp = (_e.sent());\n _i = 0, resp_1 = resp;\n _e.label = 2;\n case 2:\n if (!(_i < resp_1.length)) return [3 /*break*/, 6];\n key = resp_1[_i];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin\",\n wait_for_response: true,\n kwargs: { key: key, type: \"react\" },\n })];\n case 3:\n plugin = _e.sent();\n if (plugin.js) {\n for (_a = 0, _b = plugin.js; _a < _b.length; _a++) {\n js = _b[_a];\n scripttag = document.createElement(\"script\");\n scripttag.text = atob(js);\n document.body.appendChild(scripttag);\n }\n }\n if (plugin.css) {\n for (_c = 0, _d = plugin.css; _c < _d.length; _c++) {\n css = _d[_c];\n styletag = document.createElement(\"style\");\n styletag.innerHTML = atob(css);\n document.head.appendChild(styletag);\n }\n }\n if (!(plugin.module !== undefined)) return [3 /*break*/, 5];\n binaryString = atob(plugin.module);\n binaryLen = binaryString.length;\n bytes = new Uint8Array(binaryLen);\n for (i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n blob = new Blob([bytes], { type: \"application/javascript\" });\n blobUrl = URL.createObjectURL(blob);\n return [4 /*yield*/, import(/* webpackIgnore: true */ blobUrl)];\n case 4:\n module = _e.sent();\n // gc the blob\n URL.revokeObjectURL(blobUrl);\n this._zustand.add_plugin(key, module.default);\n _e.label = 5;\n case 5:\n _i++;\n return [3 /*break*/, 2];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_view_state = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, nodeview, nodeid, nodev;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"view_state\",\n wait_for_response: true,\n })];\n case 1:\n resp = (_a.sent());\n if (resp.renderoptions)\n this._zustand.update_render_options(resp.renderoptions);\n nodeview = resp.nodes;\n if (nodeview) {\n for (nodeid in nodeview) {\n nodev = nodeview[nodeid];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n frontend: nodev,\n },\n id: nodeid,\n from_remote: true,\n });\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_nodespace = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_2, node, edges, _a, edges_1, edge;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_nodes\",\n kwargs: { with_frontend: true },\n wait_for_response: true,\n })];\n case 1:\n resp = (_b.sent());\n for (_i = 0, resp_2 = resp; _i < resp_2.length; _i++) {\n node = resp_2[_i];\n this._recieve_node_added(node);\n }\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_edges\",\n wait_for_response: true,\n })];\n case 2:\n edges = (_b.sent());\n for (_a = 0, edges_1 = edges; _a < edges_1.length; _a++) {\n edge = edges_1[_a];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, e_1, nodeview, _i, _a, node, _b, _c, edge;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n _d.label = 1;\n case 1:\n if (false) {}\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this._send_cmd({ cmd: \"full_state\" })];\n case 3:\n resp = (_d.sent());\n return [3 /*break*/, 6];\n case 4:\n e_1 = _d.sent();\n this._zustand.logger.error(\"Error in fullsync\", e_1);\n return [3 /*break*/, 5];\n case 5: return [3 /*break*/, 1];\n case 6:\n this._zustand.logger.debug(\"Full state\", resp);\n this._zustand.lib.libstate.getState().set({\n lib: resp.backend.lib,\n external_worker: resp.worker_dependencies,\n });\n if (resp.view.renderoptions)\n this._zustand.update_render_options(resp.view.renderoptions);\n nodeview = resp.view.nodes;\n for (_i = 0, _a = resp.backend.nodes; _i < _a.length; _i++) {\n node = _a[_i];\n if (nodeview[node.id] !== undefined) {\n node.frontend = nodeview[node.id];\n }\n this._recieve_node_added(node);\n }\n for (_b = 0, _c = resp.backend.edges; _b < _c.length; _b++) {\n edge = _c[_b];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_edge_added = function (src_nid, src_ioid, trg_nid, trg_ioid) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_edge_action(__assign({ type: \"add\", from_remote: true }, { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid }));\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.trigger_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"trigger_node\",\n kwargs: { nid: node_id },\n wait_for_response: false,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.add_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n resp = _a.sent();\n this._recieve_node_added(resp);\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_node_added = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"add\",\n node: data,\n id: data.id,\n from_remote: true,\n });\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid, _b = _a.replace, replace = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"add_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid, replace: replace },\n });\n };\n FuncNodesWorker.prototype.remove_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid;\n return this._send_cmd({\n cmd: \"remove_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid },\n });\n };\n FuncNodesWorker.prototype.add_external_worker = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var module = _b.module, cls_module = _b.cls_module, cls_name = _b.cls_name;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_external_worker\",\n kwargs: { module: module, cls_module: cls_module, cls_name: cls_name },\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_local_node_updates = function () {\n var _this = this;\n clearTimeout(this._nodeupdatetimer);\n this._local_nodeupdates.forEach(function (node, id) { return __awaiter(_this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_node\",\n kwargs: { nid: id, data: node },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n }); });\n this._local_nodeupdates.clear();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 200);\n };\n FuncNodesWorker.prototype.locally_update_node = function (action) {\n // Add the type to the parameter\n var currentstate = this._local_nodeupdates.get(action.id);\n if (currentstate) {\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_merge)(currentstate, action.node), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n this._local_nodeupdates.set(action.id, new_obj);\n }\n }\n else {\n this._local_nodeupdates.set(action.id, action.node);\n }\n if (action.immediate) {\n this.sync_local_node_updates();\n }\n };\n FuncNodesWorker.prototype.get_remote_node_state = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: ans.id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.set_io_value = function (_a) {\n var nid = _a.nid, ioid = _a.ioid, value = _a.value, _b = _a.set_default, set_default = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"set_io_value\",\n kwargs: { nid: nid, ioid: ioid, value: value, set_default: set_default },\n wait_for_response: true,\n });\n };\n FuncNodesWorker.prototype.clear = function () {\n return this._send_cmd({ cmd: \"clear\" });\n };\n FuncNodesWorker.prototype.save = function () {\n return this._send_cmd({ cmd: \"save\", wait_for_response: true });\n };\n FuncNodesWorker.prototype.load = function (data) {\n var _this = this;\n return this._send_cmd({\n cmd: \"load_data\",\n kwargs: { data: data },\n wait_for_response: true,\n }).then(function () {\n _this.stepwise_fullsync();\n });\n };\n FuncNodesWorker.prototype.get_io_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n value: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_ios_values = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res, mappedres, ioid;\n var nid = _b.nid;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_ios_values\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _c.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n mappedres = {};\n for (ioid in res) {\n mappedres[ioid] = { value: res[ioid] };\n }\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: mappedres,\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype._send_cmd = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var msg, wait_for_response_callback;\n var _this = this;\n var cmd = _b.cmd, kwargs = _b.kwargs, _c = _b.wait_for_response, wait_for_response = _c === void 0 ? true : _c, _d = _b.response_timeout, response_timeout = _d === void 0 ? 5000 : _d, _e = _b.retries, retries = _e === void 0 ? 2 : _e;\n return __generator(this, function (_f) {\n msg = {\n type: \"cmd\",\n cmd: cmd,\n kwargs: kwargs || {},\n };\n if (wait_for_response) {\n if (retries < 0)\n retries = 0;\n wait_for_response_callback = function () { return __awaiter(_this, void 0, void 0, function () {\n var response, _loop_1, this_1, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _loop_1 = function () {\n var msid, promise, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n msid = msg.id || (0,uuid__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n msg.id = msid;\n promise = new Promise(function (resolve, reject) {\n var timeout = setTimeout(function () {\n reject(\"Timeout@wait_for_response for \" + cmd);\n }, response_timeout);\n _this.messagePromises.set(msid, {\n resolve: function (data) {\n clearTimeout(timeout);\n resolve(data);\n _this.messagePromises.delete(msid);\n },\n reject: function (err) {\n clearTimeout(timeout);\n reject(err);\n _this.messagePromises.delete(msid);\n },\n });\n });\n return [4 /*yield*/, this_1.send(msg)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, promise];\n case 3:\n response = _b.sent();\n return [2 /*return*/, \"break\"];\n case 4:\n e_2 = _b.sent();\n if (retries === 0)\n throw e_2;\n retries -= 1;\n return [2 /*return*/, \"continue\"];\n case 5: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _a.label = 1;\n case 1:\n if (!(retries >= 0)) return [3 /*break*/, 3];\n return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (state_1 === \"break\")\n return [3 /*break*/, 3];\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/, response];\n }\n });\n }); };\n return [2 /*return*/, wait_for_response_callback()];\n }\n return [2 /*return*/, this.send(msg)];\n });\n });\n };\n FuncNodesWorker.prototype.send = function (_data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // this is the abstract method that should be implemented by subclasses\n throw new Error(\"Not implemented\");\n });\n });\n };\n FuncNodesWorker.prototype.upload_file = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _files = _b.files, _onProgressCallback = _b.onProgressCallback, _root = _b.root;\n return __generator(this, function (_c) {\n throw new Error(\"handle_large_message_hint not implemented \");\n });\n });\n };\n FuncNodesWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n return __generator(this, function (_c) {\n throw new Error(\"handle_large_message_hint not implemented \");\n });\n });\n };\n FuncNodesWorker.prototype.recieve_workerevent = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _c = event;\n switch (_c) {\n case \"worker_error\": return [3 /*break*/, 1];\n case \"update_worker_dependencies\": return [3 /*break*/, 2];\n case \"lib_update\": return [3 /*break*/, 3];\n case \"fullsync\": return [3 /*break*/, 5];\n case \"external_worker_update\": return [3 /*break*/, 7];\n }\n return [3 /*break*/, 10];\n case 1:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.logger.error(data.error)];\n case 2:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n external_worker: data.worker_dependencies,\n })];\n case 3: return [4 /*yield*/, this.sync_lib()];\n case 4:\n _d.sent();\n return [2 /*return*/];\n case 5: return [4 /*yield*/, this.stepwise_fullsync()];\n case 6:\n _d.sent();\n return [2 /*return*/];\n case 7: return [4 /*yield*/, this.sync_lib()];\n case 8:\n _d.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 9:\n _d.sent();\n return [2 /*return*/];\n case 10:\n console.warn(\"Unhandled worker event\", event, data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve_nodespace_event = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c, _d;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_e) {\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object_size)(data, \"Data size for event \" + event, this._zustand);\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object)(data, this._zustand);\n switch (event) {\n case \"after_set_value\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_c = {},\n _c[data.io] = {\n value: data.result,\n },\n _c),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"after_update_value_options\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_d = {},\n _d[data.io] = {\n value_options: data.result,\n },\n _d),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerstart\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: true,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerdone\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: false,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"node_trigger_error\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"error\",\n errortype: \"trigger\",\n error: data.error,\n id: data.node,\n from_remote: true,\n })];\n case \"node_removed\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"delete\",\n id: data.node,\n from_remote: true,\n })];\n case \"node_added\":\n return [2 /*return*/, this._recieve_node_added(data.node)];\n case \"after_disconnect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_unforward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_connect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_forward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_add_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"after_remove_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"progress\":\n if (!this._zustand)\n return [2 /*return*/];\n if (data.node) {\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n progress: data.info,\n },\n id: data.node,\n from_remote: true,\n })];\n }\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n default:\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n }\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var promise, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = data.type;\n switch (_a) {\n case \"nsevent\": return [3 /*break*/, 1];\n case \"result\": return [3 /*break*/, 3];\n case \"error\": return [3 /*break*/, 4];\n case \"progress\": return [3 /*break*/, 5];\n case \"workerevent\": return [3 /*break*/, 6];\n case \"large_message\": return [3 /*break*/, 8];\n }\n return [3 /*break*/, 10];\n case 1: return [4 /*yield*/, this.recieve_nodespace_event(data)];\n case 2: return [2 /*return*/, _b.sent()];\n case 3:\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.resolve(data.result)];\n }\n return [3 /*break*/, 11];\n case 4:\n this.on_error(data.tb + \"\\n\" + data.error);\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.reject(data.error)];\n }\n return [3 /*break*/, 11];\n case 5:\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.set_progress(data);\n return [3 /*break*/, 11];\n case 6: return [4 /*yield*/, this.recieve_workerevent(data)];\n case 7: return [2 /*return*/, _b.sent()];\n case 8: return [4 /*yield*/, this.handle_large_message_hint(data)];\n case 9: return [2 /*return*/, _b.sent()];\n case 10:\n console.warn(\"Unhandled message\", data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.disconnect = function () { };\n FuncNodesWorker.prototype.onclose = function () {\n this.is_open = false;\n if (!this._zustand)\n return;\n this._zustand.auto_progress();\n };\n FuncNodesWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); });\n };\n FuncNodesWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oldonclose;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({ cmd: \"stop_worker\", wait_for_response: false })];\n case 1:\n _a.sent();\n oldonclose = this.onclose.bind(this);\n this.onclose = function () {\n oldonclose();\n if (!_this._zustand)\n return;\n if (_this._zustand.worker === _this) {\n _this._zustand.clear_all();\n }\n _this.onclose = oldonclose;\n };\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_io_full_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_full_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n fullvalue: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_io_options = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid, options = _b.options;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_io_options\",\n kwargs: __assign({ nid: nid, ioid: ioid }, options),\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = __assign({}, options),\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_node_status = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_available_modules = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_available_modules\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_external_worker = function (worker_id, class_id, data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_external_worker\",\n kwargs: __assign({ worker_id: worker_id, class_id: class_id }, data),\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_external_worker = function (worker_id, class_id) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_external_worker\",\n kwargs: { worker_id: worker_id, class_id: class_id },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.export = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"export_worker\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_from_export = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_from_export\",\n kwargs: { data: data },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n this.stepwise_fullsync();\n return [2 /*return*/, res];\n }\n });\n });\n };\n return FuncNodesWorker;\n}());\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncNodesWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/funcnodesworker.ts?");
|
|
3166
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! zustand */ \"../node_modules/zustand/esm/index.mjs\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ \"./src/utils/index.ts\");\n/* harmony import */ var _utils_debugger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/debugger */ \"./src/utils/debugger.ts\");\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar FuncNodesWorker = /** @class */ (function () {\n function FuncNodesWorker(data) {\n var _this = this;\n this.uuid = data.uuid;\n this.on_error =\n data.on_error ||\n (function (err) {\n var _a;\n (_a = _this._zustand) === null || _a === void 0 ? void 0 : _a.logger.error(err);\n });\n this.messagePromises = new Map();\n this._local_nodeupdates = new Map();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 5000);\n this.state = (0,zustand__WEBPACK_IMPORTED_MODULE_2__.create)(function (_set, _get) { return ({\n is_open: true,\n }); });\n if (data.zustand)\n this.set_zustand(data.zustand);\n if (data.on_sync_complete) {\n this.on_sync_complete = data.on_sync_complete;\n }\n else {\n this.on_sync_complete = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); }); };\n }\n }\n FuncNodesWorker.prototype.set_zustand = function (zustand) {\n if (zustand === this._zustand)\n return;\n this._zustand = zustand;\n zustand.set_worker(this);\n this._zustand.auto_progress();\n this.stepwise_fullsync();\n };\n Object.defineProperty(FuncNodesWorker.prototype, \"is_open\", {\n get: function () {\n return this.state.getState().is_open;\n },\n set: function (v) {\n this.state.setState({ is_open: v });\n },\n enumerable: false,\n configurable: true\n });\n FuncNodesWorker.prototype.stepwise_fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this.sync_lib()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.sync_funcnodes_plugins()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.sync_nodespace()];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.sync_view_state()];\n case 5:\n _a.sent();\n return [4 /*yield*/, this.on_sync_complete(this)];\n case 6:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_lib = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_library\",\n wait_for_response: true,\n retries: 2,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n lib: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_external_worker = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_worker_dependencies\",\n wait_for_response: true,\n })];\n case 1:\n resp = _a.sent();\n this._zustand.lib.libstate.getState().set({\n external_worker: resp,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_funcnodes_plugins = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_1, key, plugin, _a, _b, js, scripttag, _c, _d, css, styletag, binaryString, binaryLen, bytes, i, blob, blobUrl, module;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin_keys\",\n wait_for_response: true,\n kwargs: { type: \"react\" },\n })];\n case 1:\n resp = (_e.sent());\n _i = 0, resp_1 = resp;\n _e.label = 2;\n case 2:\n if (!(_i < resp_1.length)) return [3 /*break*/, 6];\n key = resp_1[_i];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_plugin\",\n wait_for_response: true,\n kwargs: { key: key, type: \"react\" },\n })];\n case 3:\n plugin = _e.sent();\n if (plugin.js) {\n for (_a = 0, _b = plugin.js; _a < _b.length; _a++) {\n js = _b[_a];\n scripttag = document.createElement(\"script\");\n scripttag.text = atob(js);\n document.body.appendChild(scripttag);\n }\n }\n if (plugin.css) {\n for (_c = 0, _d = plugin.css; _c < _d.length; _c++) {\n css = _d[_c];\n styletag = document.createElement(\"style\");\n styletag.innerHTML = atob(css);\n document.head.appendChild(styletag);\n }\n }\n if (!(plugin.module !== undefined)) return [3 /*break*/, 5];\n binaryString = atob(plugin.module);\n binaryLen = binaryString.length;\n bytes = new Uint8Array(binaryLen);\n for (i = 0; i < binaryLen; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n blob = new Blob([bytes], { type: \"application/javascript\" });\n blobUrl = URL.createObjectURL(blob);\n return [4 /*yield*/, import(/* webpackIgnore: true */ blobUrl)];\n case 4:\n module = _e.sent();\n // gc the blob\n URL.revokeObjectURL(blobUrl);\n this._zustand.add_plugin(key, module.default);\n _e.label = 5;\n case 5:\n _i++;\n return [3 /*break*/, 2];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_view_state = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, nodeview, nodeid, nodev;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"view_state\",\n wait_for_response: true,\n })];\n case 1:\n resp = (_a.sent());\n if (resp.renderoptions)\n this._zustand.update_render_options(resp.renderoptions);\n nodeview = resp.nodes;\n if (nodeview) {\n for (nodeid in nodeview) {\n nodev = nodeview[nodeid];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n frontend: nodev,\n },\n id: nodeid,\n from_remote: true,\n });\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_nodespace = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, _i, resp_2, node, edges, _a, edges_1, edge;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_nodes\",\n kwargs: { with_frontend: true },\n wait_for_response: true,\n })];\n case 1:\n resp = (_b.sent());\n for (_i = 0, resp_2 = resp; _i < resp_2.length; _i++) {\n node = resp_2[_i];\n this._recieve_node_added(node);\n }\n return [4 /*yield*/, this._send_cmd({\n cmd: \"get_edges\",\n wait_for_response: true,\n })];\n case 2:\n edges = (_b.sent());\n for (_a = 0, edges_1 = edges; _a < edges_1.length; _a++) {\n edge = edges_1[_a];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.fullsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var resp, e_1, nodeview, _i, _a, node, _b, _c, edge;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._zustand)\n return [2 /*return*/];\n if (!this.is_open)\n return [2 /*return*/];\n _d.label = 1;\n case 1:\n if (false) {}\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this._send_cmd({ cmd: \"full_state\" })];\n case 3:\n resp = (_d.sent());\n return [3 /*break*/, 6];\n case 4:\n e_1 = _d.sent();\n this._zustand.logger.error(\"Error in fullsync\", e_1);\n return [3 /*break*/, 5];\n case 5: return [3 /*break*/, 1];\n case 6:\n this._zustand.logger.debug(\"Full state\", resp);\n this._zustand.lib.libstate.getState().set({\n lib: resp.backend.lib,\n external_worker: resp.worker_dependencies,\n });\n if (resp.view.renderoptions)\n this._zustand.update_render_options(resp.view.renderoptions);\n nodeview = resp.view.nodes;\n for (_i = 0, _a = resp.backend.nodes; _i < _a.length; _i++) {\n node = _a[_i];\n if (nodeview[node.id] !== undefined) {\n node.frontend = nodeview[node.id];\n }\n this._recieve_node_added(node);\n }\n for (_b = 0, _c = resp.backend.edges; _b < _c.length; _b++) {\n edge = _c[_b];\n this._recieve_edge_added.apply(this, edge);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_edge_added = function (src_nid, src_ioid, trg_nid, trg_ioid) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_edge_action(__assign({ type: \"add\", from_remote: true }, { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid }));\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.trigger_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"trigger_node\",\n kwargs: { nid: node_id },\n wait_for_response: false,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.add_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n var resp;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n resp = _a.sent();\n this._recieve_node_added(resp);\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_node = function (node_id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_node\",\n kwargs: { id: node_id },\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype._recieve_node_added = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"add\",\n node: data,\n id: data.id,\n from_remote: true,\n });\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid, _b = _a.replace, replace = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"add_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid, replace: replace },\n });\n };\n FuncNodesWorker.prototype.remove_edge = function (_a) {\n var src_nid = _a.src_nid, src_ioid = _a.src_ioid, trg_nid = _a.trg_nid, trg_ioid = _a.trg_ioid;\n return this._send_cmd({\n cmd: \"remove_edge\",\n kwargs: { src_nid: src_nid, src_ioid: src_ioid, trg_nid: trg_nid, trg_ioid: trg_ioid },\n });\n };\n FuncNodesWorker.prototype.add_external_worker = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var module = _b.module, cls_module = _b.cls_module, cls_name = _b.cls_name;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_external_worker\",\n kwargs: { module: module, cls_module: cls_module, cls_name: cls_name },\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n FuncNodesWorker.prototype.sync_local_node_updates = function () {\n var _this = this;\n clearTimeout(this._nodeupdatetimer);\n this._local_nodeupdates.forEach(function (node, id) { return __awaiter(_this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_node\",\n kwargs: { nid: id, data: node },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n }); });\n this._local_nodeupdates.clear();\n this._nodeupdatetimer = setTimeout(function () {\n _this.sync_local_node_updates();\n }, 200);\n };\n FuncNodesWorker.prototype.locally_update_node = function (action) {\n // Add the type to the parameter\n var currentstate = this._local_nodeupdates.get(action.id);\n if (currentstate) {\n var _a = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.deep_merge)(currentstate, action.node), new_obj = _a.new_obj, change = _a.change;\n if (change) {\n this._local_nodeupdates.set(action.id, new_obj);\n }\n }\n else {\n this._local_nodeupdates.set(action.id, action.node);\n }\n if (action.immediate) {\n this.sync_local_node_updates();\n }\n };\n FuncNodesWorker.prototype.get_remote_node_state = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n ans = _a.sent();\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.on_node_action({\n type: \"update\",\n node: ans,\n id: ans.id,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.set_io_value = function (_a) {\n var nid = _a.nid, ioid = _a.ioid, value = _a.value, _b = _a.set_default, set_default = _b === void 0 ? false : _b;\n return this._send_cmd({\n cmd: \"set_io_value\",\n kwargs: { nid: nid, ioid: ioid, value: value, set_default: set_default },\n wait_for_response: true,\n });\n };\n FuncNodesWorker.prototype.clear = function () {\n return this._send_cmd({ cmd: \"clear\" });\n };\n FuncNodesWorker.prototype.save = function () {\n return this._send_cmd({ cmd: \"save\", wait_for_response: true });\n };\n FuncNodesWorker.prototype.load = function (data) {\n var _this = this;\n return this._send_cmd({\n cmd: \"load_data\",\n kwargs: { data: data },\n wait_for_response: true,\n }).then(function () {\n _this.stepwise_fullsync();\n });\n };\n FuncNodesWorker.prototype.get_io_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n value: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_ios_values = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res, mappedres, ioid;\n var nid = _b.nid;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_ios_values\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _c.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n mappedres = {};\n for (ioid in res) {\n mappedres[ioid] = { value: res[ioid] };\n }\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: mappedres,\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype._send_cmd = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var msg, wait_for_response_callback;\n var _this = this;\n var cmd = _b.cmd, kwargs = _b.kwargs, _c = _b.wait_for_response, wait_for_response = _c === void 0 ? true : _c, _d = _b.response_timeout, response_timeout = _d === void 0 ? 5000 : _d, _e = _b.retries, retries = _e === void 0 ? 2 : _e;\n return __generator(this, function (_f) {\n msg = {\n type: \"cmd\",\n cmd: cmd,\n kwargs: kwargs || {},\n };\n if (wait_for_response) {\n if (retries < 0)\n retries = 0;\n wait_for_response_callback = function () { return __awaiter(_this, void 0, void 0, function () {\n var response, _loop_1, this_1, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _loop_1 = function () {\n var msid, promise, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n msid = msg.id || (0,uuid__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n msg.id = msid;\n promise = new Promise(function (resolve, reject) {\n var timeout = setTimeout(function () {\n reject(\"Timeout@wait_for_response for \" + cmd);\n }, response_timeout);\n _this.messagePromises.set(msid, {\n resolve: function (data) {\n clearTimeout(timeout);\n resolve(data);\n _this.messagePromises.delete(msid);\n },\n reject: function (err) {\n clearTimeout(timeout);\n reject(err);\n _this.messagePromises.delete(msid);\n },\n });\n });\n return [4 /*yield*/, this_1.send(msg)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, promise];\n case 3:\n response = _b.sent();\n return [2 /*return*/, \"break\"];\n case 4:\n e_2 = _b.sent();\n if (retries === 0)\n throw e_2;\n retries -= 1;\n return [2 /*return*/, \"continue\"];\n case 5: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _a.label = 1;\n case 1:\n if (!(retries >= 0)) return [3 /*break*/, 3];\n return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (state_1 === \"break\")\n return [3 /*break*/, 3];\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/, response];\n }\n });\n }); };\n return [2 /*return*/, wait_for_response_callback()];\n }\n return [2 /*return*/, this.send(msg)];\n });\n });\n };\n FuncNodesWorker.prototype.send = function (_data) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // this is the abstract method that should be implemented by subclasses\n throw new Error(\"async send(data: any) not implemented\");\n });\n });\n };\n FuncNodesWorker.prototype.upload_file = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _files = _b.files, _onProgressCallback = _b.onProgressCallback, _root = _b.root;\n return __generator(this, function (_c) {\n throw new Error(\"upload_file not implemented \");\n });\n });\n };\n FuncNodesWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n return __generator(this, function (_c) {\n throw new Error(\"async handle_large_message_hint({}: LargeMessageHint) not implemented \");\n });\n });\n };\n FuncNodesWorker.prototype.recieve_workerevent = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _c = event;\n switch (_c) {\n case \"worker_error\": return [3 /*break*/, 1];\n case \"update_worker_dependencies\": return [3 /*break*/, 2];\n case \"lib_update\": return [3 /*break*/, 3];\n case \"fullsync\": return [3 /*break*/, 5];\n case \"external_worker_update\": return [3 /*break*/, 7];\n }\n return [3 /*break*/, 10];\n case 1:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.logger.error(data.error)];\n case 2:\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n external_worker: data.worker_dependencies,\n })];\n case 3: return [4 /*yield*/, this.sync_lib()];\n case 4:\n _d.sent();\n return [2 /*return*/];\n case 5: return [4 /*yield*/, this.stepwise_fullsync()];\n case 6:\n _d.sent();\n return [2 /*return*/];\n case 7: return [4 /*yield*/, this.sync_lib()];\n case 8:\n _d.sent();\n return [4 /*yield*/, this.sync_external_worker()];\n case 9:\n _d.sent();\n return [2 /*return*/];\n case 10:\n console.warn(\"Unhandled worker event\", event, data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve_nodespace_event = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var _c, _d;\n var event = _b.event, data = _b.data;\n return __generator(this, function (_e) {\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object_size)(data, \"Data size for event \" + event, this._zustand);\n (0,_utils_debugger__WEBPACK_IMPORTED_MODULE_1__.print_object)(data, this._zustand);\n switch (event) {\n case \"after_set_value\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_c = {},\n _c[data.io] = {\n value: data.result,\n },\n _c),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"after_update_value_options\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n io: (_d = {},\n _d[data.io] = {\n value_options: data.result,\n },\n _d),\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerstart\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: true,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"triggerdone\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n in_trigger: false,\n },\n id: data.node,\n from_remote: true,\n })];\n case \"node_trigger_error\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"error\",\n errortype: \"trigger\",\n error: data.error,\n id: data.node,\n from_remote: true,\n })];\n case \"node_removed\":\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"delete\",\n id: data.node,\n from_remote: true,\n })];\n case \"node_added\":\n return [2 /*return*/, this._recieve_node_added(data.node)];\n case \"after_disconnect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_unforward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.on_edge_action({\n type: \"delete\",\n from_remote: true,\n src_nid: data.result[0],\n src_ioid: data.result[1],\n trg_nid: data.result[2],\n trg_ioid: data.result[3],\n })];\n case \"after_connect\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_forward\":\n if (!data.result)\n return [2 /*return*/];\n if (!Array.isArray(data.result))\n return [2 /*return*/];\n if (data.result.length !== 4)\n return [2 /*return*/];\n return [2 /*return*/, this._recieve_edge_added.apply(this, data.result)];\n case \"after_add_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"after_remove_shelf\":\n if (!data.result)\n return [2 /*return*/];\n if (!this._zustand)\n return [2 /*return*/];\n return [2 /*return*/, this._zustand.lib.libstate.getState().set({\n lib: data.result,\n })];\n case \"progress\":\n if (!this._zustand)\n return [2 /*return*/];\n if (data.node) {\n return [2 /*return*/, this._zustand.on_node_action({\n type: \"update\",\n node: {\n id: data.node,\n progress: data.info,\n },\n id: data.node,\n from_remote: true,\n })];\n }\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n default:\n console.warn(\"Unhandled nodepsace event\", event, data);\n break;\n }\n return [2 /*return*/];\n });\n });\n };\n FuncNodesWorker.prototype.add_lib = function (lib, release) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"add_package_dependency\",\n kwargs: { name: lib, version: release },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_lib = function (lib) {\n return __awaiter(this, void 0, void 0, function () {\n var ans;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_package_dependency\",\n kwargs: { name: lib },\n wait_for_response: false,\n })];\n case 1:\n ans = _a.sent();\n return [2 /*return*/, ans];\n }\n });\n });\n };\n FuncNodesWorker.prototype.recieve = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var promise, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = data.type;\n switch (_a) {\n case \"nsevent\": return [3 /*break*/, 1];\n case \"result\": return [3 /*break*/, 3];\n case \"error\": return [3 /*break*/, 4];\n case \"progress\": return [3 /*break*/, 5];\n case \"workerevent\": return [3 /*break*/, 6];\n case \"large_message\": return [3 /*break*/, 8];\n }\n return [3 /*break*/, 10];\n case 1: return [4 /*yield*/, this.recieve_nodespace_event(data)];\n case 2: return [2 /*return*/, _b.sent()];\n case 3:\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.resolve(data.result)];\n }\n return [3 /*break*/, 11];\n case 4:\n this.on_error(data.tb + \"\\n\" + data.error);\n promise = data.id && this.messagePromises.get(data.id);\n if (promise) {\n return [2 /*return*/, promise.reject(data.error)];\n }\n return [3 /*break*/, 11];\n case 5:\n if (!this._zustand)\n return [2 /*return*/];\n this._zustand.set_progress(data);\n return [3 /*break*/, 11];\n case 6: return [4 /*yield*/, this.recieve_workerevent(data)];\n case 7: return [2 /*return*/, _b.sent()];\n case 8: return [4 /*yield*/, this.handle_large_message_hint(data)];\n case 9: return [2 /*return*/, _b.sent()];\n case 10:\n console.warn(\"Unhandled message\", data);\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.disconnect = function () { };\n FuncNodesWorker.prototype.onclose = function () {\n this.is_open = false;\n if (!this._zustand)\n return;\n this._zustand.auto_progress();\n };\n FuncNodesWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/];\n }); });\n };\n FuncNodesWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oldonclose;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({ cmd: \"stop_worker\", wait_for_response: false })];\n case 1:\n _a.sent();\n oldonclose = this.onclose.bind(this);\n this.onclose = function () {\n oldonclose();\n if (!_this._zustand)\n return;\n if (_this._zustand.worker === _this) {\n _this._zustand.clear_all();\n }\n _this.onclose = oldonclose;\n };\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_io_full_value = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_io_full_value\",\n kwargs: { nid: nid, ioid: ioid },\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = {\n fullvalue: res,\n },\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_io_options = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c;\n var nid = _b.nid, ioid = _b.ioid, options = _b.options;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_io_options\",\n kwargs: __assign({ nid: nid, ioid: ioid }, options),\n wait_for_response: true,\n })];\n case 1:\n res = _d.sent();\n if (!this._zustand)\n return [2 /*return*/, res];\n this._zustand.on_node_action({\n type: \"update\",\n node: {\n io: (_c = {},\n _c[ioid] = __assign({}, options),\n _c),\n },\n id: nid,\n from_remote: true,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_node_status = function (nid) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_node_state\",\n kwargs: { nid: nid },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.get_available_modules = function () {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"get_available_modules\",\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_external_worker = function (worker_id, class_id, data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_external_worker\",\n kwargs: __assign({ worker_id: worker_id, class_id: class_id }, data),\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.remove_external_worker = function (worker_id, class_id) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"remove_external_worker\",\n kwargs: { worker_id: worker_id, class_id: class_id },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.export = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var res;\n var _c = _b.withFiles, withFiles = _c === void 0 ? false : _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"export_worker\",\n wait_for_response: true,\n kwargs: { with_files: withFiles },\n })];\n case 1:\n res = _d.sent();\n return [2 /*return*/, res];\n }\n });\n });\n };\n FuncNodesWorker.prototype.update_from_export = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._send_cmd({\n cmd: \"update_from_export\",\n kwargs: { data: data },\n wait_for_response: true,\n })];\n case 1:\n res = _a.sent();\n this.stepwise_fullsync();\n return [2 /*return*/, res];\n }\n });\n });\n };\n return FuncNodesWorker;\n}());\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FuncNodesWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/funcnodesworker.ts?");
|
|
3167
3167
|
|
|
3168
3168
|
/***/ }),
|
|
3169
3169
|
|
|
@@ -3185,7 +3185,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3185
3185
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3186
3186
|
|
|
3187
3187
|
"use strict";
|
|
3188
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"../node_modules/axios/lib/axios.js\");\n/* harmony import */ var _funcnodesworker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./funcnodesworker */ \"./src/funcnodes/funcnodesworker.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\nvar WebSocketWorker = /** @class */ (function (_super) {\n __extends(WebSocketWorker, _super);\n function WebSocketWorker(data) {\n var _this = _super.call(this, data) || this;\n _this._websocket = null;\n _this.reconnectAttempts = 0;\n _this.maxReconnectAttempts = 999;\n _this.initialTimeout = 200; // Initial reconnect delay in ms\n _this.maxTimeout = 5000; // Maximum reconnect delay\n _this._reconnect = true;\n _this._url = data.url;\n _this.connect();\n if (_this._zustand)\n _this._zustand.auto_progress();\n return _this;\n }\n WebSocketWorker.prototype.connect = function () {\n var _this = this;\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Connecting to websocket\");\n this.is_open = false;\n this._websocket = new WebSocket(this._url);\n this._websocket.onopen = function () {\n _this.onopen();\n };\n this._websocket.onclose = function () {\n _this.onclose();\n };\n this._websocket.onerror = function () {\n _this.on_ws_error();\n };\n this._websocket.onmessage = function (event) {\n _this.onmessage(event.data);\n };\n };\n WebSocketWorker.prototype.calculateReconnectTimeout = function () {\n // Increase timeout exponentially, capped at maxTimeout\n var timeout = Math.min(this.initialTimeout * Math.pow(2, this.reconnectAttempts), this.maxTimeout);\n return timeout;\n };\n WebSocketWorker.prototype.auto_reconnect = function () {\n var _this = this;\n var _a, _b;\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n var timeout = this.calculateReconnectTimeout();\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Attempting to reconnect in \".concat(timeout, \" ms\"));\n setTimeout(function () {\n if (_this._websocket) {\n if (_this._websocket.readyState === WebSocket.OPEN) {\n return;\n }\n }\n _this.reconnectAttempts++;\n _this.connect();\n }, timeout);\n }\n else {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.warn(\"Maximum reconnect attempts reached. Giving up.\");\n }\n };\n WebSocketWorker.prototype.onmessage = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n json = JSON.parse(data);\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.debug(\"Recieved data of length: \".concat(data.length, \" and data\\\"\"), json);\n return [4 /*yield*/, this.recieve(json)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(WebSocketWorker.prototype, \"http_protocol\", {\n get: function () {\n return this.secure_url ? \"https\" : \"http\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebSocketWorker.prototype, \"secure_url\", {\n get: function () {\n return this._url.startsWith(\"wss\");\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebSocketWorker.prototype, \"url_wo_protocol\", {\n get: function () {\n return this._url.substring(this.secure_url ? 6 : 5);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebSocketWorker.prototype, \"http_url\", {\n get: function () {\n var url = this.http_protocol + \"://\" + this.url_wo_protocol;\n // add / to url if it does not end with /\n if (url[url.length - 1] !== \"/\") {\n url += \"/\";\n }\n return url;\n },\n enumerable: false,\n configurable: true\n });\n WebSocketWorker.prototype.upload_file = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var url, formdata, fileArray, _i, fileArray_1, file, subtarget, target, response, error_1;\n var files = _b.files, onProgressCallback = _b.onProgressCallback, root = _b.root;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = \"\".concat(this.http_url, \"upload/\");\n formdata = new FormData();\n fileArray = Array.isArray(files) ? files : Array.from(files);\n for (_i = 0, fileArray_1 = fileArray; _i < fileArray_1.length; _i++) {\n file = fileArray_1[_i];\n subtarget = file.webkitRelativePath || file.name;\n target = root ? \"\".concat(root, \"/\").concat(subtarget) : subtarget;\n formdata.append(\"file\", file, target);\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].post(url, formdata, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress: function (progressEvent) {\n if (onProgressCallback) {\n onProgressCallback(progressEvent.loaded, progressEvent.total);\n }\n },\n })];\n case 2:\n response = _c.sent();\n // Assuming the server response contains a JSON object with the filename\n return [2 /*return*/, response.data.file];\n case 3:\n error_1 = _c.sent();\n throw new Error(\"Failed to upload file\");\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var url, resp, json;\n var msg_id = _b.msg_id;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = this.http_url;\n url += \"message/\" + msg_id;\n return [4 /*yield*/, fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Access-Control-Allow-Origin\": \"*\",\n },\n })];\n case 1:\n resp = _c.sent();\n return [4 /*yield*/, resp.json()];\n case 2:\n json = _c.sent();\n this.recieve(json);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.onopen = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket opened\");\n this.is_open = true;\n if (this._zustand)\n this._zustand.auto_progress();\n this.reconnectAttempts = 0;\n this.stepwise_fullsync();\n };\n WebSocketWorker.prototype.onclose = function () {\n var _a, _b;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket closed\");\n _super.prototype.onclose.call(this);\n if (this._reconnect) {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Websocket closed,reconnecting\");\n this.auto_reconnect(); // Attempt to reconnect\n }\n };\n WebSocketWorker.prototype.on_ws_error = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket error\");\n if (this._websocket) {\n this._websocket.close(); // Ensure the connection is closed before attempting to reconnect\n }\n else {\n this.auto_reconnect();\n }\n };\n WebSocketWorker.prototype.send_large_message = function (jsondata) {\n return __awaiter(this, void 0, void 0, function () {\n var url;\n return __generator(this, function (_a) {\n url = \"http\" + this._url.substring(2);\n //add /msg_id to url to get the large message (url might end with /)\n if (url[url.length - 1] !== \"/\") {\n url += \"/\";\n }\n url += \"message/\";\n console.log(jsondata.length);\n return [2 /*return*/];\n });\n });\n };\n WebSocketWorker.prototype.send = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var jsonstring, datasize;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._websocket || this._websocket.readyState !== WebSocket.OPEN) {\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket not connected\");\n return [2 /*return*/];\n }\n jsonstring = JSON.stringify(data);\n datasize = new Blob([jsonstring]).size;\n if (!(datasize > 1000000)) return [3 /*break*/, 2];\n // 1MB\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Data too large, sending via http\");\n return [4 /*yield*/, this.send_large_message(jsonstring)];\n case 1: return [2 /*return*/, _d.sent()];\n case 2:\n (_c = this._zustand) === null || _c === void 0 ? void 0 : _c.logger.debug(\"Sending data\", data);\n this._websocket.send(jsonstring);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.stop.call(this)];\n case 1:\n _a.sent();\n this._reconnect = false;\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.close = function () {\n if (this._websocket)\n this._websocket.close();\n };\n WebSocketWorker.prototype.disconnect = function () {\n _super.prototype.disconnect.call(this);\n this._reconnect = false;\n this.close();\n };\n WebSocketWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, _super.prototype.reconnect.call(this)];\n case 1:\n _b.sent();\n this._reconnect = true;\n if (!this._websocket) return [3 /*break*/, 4];\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Reconnecting\");\n if (!(this._websocket.readyState === WebSocket.OPEN ||\n this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 4];\n if (!(this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 3];\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n if (_this._websocket === null)\n return;\n var timeout = setTimeout(function () {\n reject(\"Timeout@reconnect\");\n }, 2000);\n _this._websocket.addEventListener(\"open\", function () {\n clearTimeout(timeout);\n resolve(null);\n }, { once: true });\n if (_this._websocket.readyState === WebSocket.OPEN) {\n clearTimeout(timeout);\n resolve(null);\n }\n })];\n case 2:\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n _b.sent();\n _b.label = 3;\n case 3:\n if (this._websocket.readyState === WebSocket.OPEN) {\n this.stepwise_fullsync();\n return [2 /*return*/];\n }\n _b.label = 4;\n case 4:\n this.connect();\n return [2 /*return*/];\n }\n });\n });\n };\n return WebSocketWorker;\n}(_funcnodesworker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WebSocketWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/websocketworker.ts?");
|
|
3188
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"../node_modules/axios/lib/axios.js\");\n/* harmony import */ var _funcnodesworker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./funcnodesworker */ \"./src/funcnodes/funcnodesworker.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\nvar WebSocketWorker = /** @class */ (function (_super) {\n __extends(WebSocketWorker, _super);\n function WebSocketWorker(data) {\n var _this = _super.call(this, data) || this;\n _this._websocket = null;\n _this.reconnectAttempts = 0;\n _this.maxReconnectAttempts = 999;\n _this.initialTimeout = 200; // Initial reconnect delay in ms\n _this.maxTimeout = 5000; // Maximum reconnect delay\n _this._reconnect = true;\n _this._url = data.url;\n _this.connect();\n if (_this._zustand)\n _this._zustand.auto_progress();\n return _this;\n }\n WebSocketWorker.prototype.connect = function () {\n var _this = this;\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Connecting to websocket\");\n this.is_open = false;\n this._websocket = new WebSocket(this._url);\n this._websocket.onopen = function () {\n _this.onopen();\n };\n this._websocket.onclose = function () {\n _this.onclose();\n };\n this._websocket.onerror = function () {\n _this.on_ws_error();\n };\n this._websocket.onmessage = function (event) {\n _this.onmessage(event.data);\n };\n };\n WebSocketWorker.prototype.calculateReconnectTimeout = function () {\n // Increase timeout exponentially, capped at maxTimeout\n var timeout = Math.min(this.initialTimeout * Math.pow(2, this.reconnectAttempts), this.maxTimeout);\n return timeout;\n };\n WebSocketWorker.prototype.auto_reconnect = function () {\n var _this = this;\n var _a, _b;\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n var timeout = this.calculateReconnectTimeout();\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Attempting to reconnect in \".concat(timeout, \" ms\"));\n setTimeout(function () {\n if (_this._websocket) {\n if (_this._websocket.readyState === WebSocket.OPEN) {\n return;\n }\n }\n _this.reconnectAttempts++;\n _this.connect();\n }, timeout);\n }\n else {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.warn(\"Maximum reconnect attempts reached. Giving up.\");\n }\n };\n WebSocketWorker.prototype.onmessage = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n json = JSON.parse(data);\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.debug(\"Recieved data of length: \".concat(data.length, \" and data\\\"\"), json);\n return [4 /*yield*/, this.recieve(json)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(WebSocketWorker.prototype, \"http_protocol\", {\n get: function () {\n return this.secure_url ? \"https\" : \"http\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebSocketWorker.prototype, \"secure_url\", {\n get: function () {\n return this._url.startsWith(\"wss\");\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebSocketWorker.prototype, \"url_wo_protocol\", {\n get: function () {\n return this._url.substring(this.secure_url ? 6 : 5);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebSocketWorker.prototype, \"http_url\", {\n get: function () {\n var url = this.http_protocol + \"://\" + this.url_wo_protocol;\n // add / to url if it does not end with /\n if (url[url.length - 1] !== \"/\") {\n url += \"/\";\n }\n return url;\n },\n enumerable: false,\n configurable: true\n });\n WebSocketWorker.prototype.upload_file = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var url, formdata, fileArray, _i, fileArray_1, file, subtarget, target, response, error_1;\n var files = _b.files, onProgressCallback = _b.onProgressCallback, root = _b.root;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = \"\".concat(this.http_url, \"upload/\");\n formdata = new FormData();\n fileArray = Array.isArray(files) ? files : Array.from(files);\n for (_i = 0, fileArray_1 = fileArray; _i < fileArray_1.length; _i++) {\n file = fileArray_1[_i];\n subtarget = file.webkitRelativePath || file.name;\n target = root ? \"\".concat(root, \"/\").concat(subtarget) : subtarget;\n formdata.append(\"file\", file, target);\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].post(url, formdata, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress: function (progressEvent) {\n if (onProgressCallback) {\n onProgressCallback(progressEvent.loaded, progressEvent.total);\n }\n },\n })];\n case 2:\n response = _c.sent();\n // Assuming the server response contains a JSON object with the filename\n return [2 /*return*/, response.data.file];\n case 3:\n error_1 = _c.sent();\n throw new Error(\"Failed to upload file\");\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.handle_large_message_hint = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var url, resp, json;\n var msg_id = _b.msg_id;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = this.http_url + \"message/\" + msg_id;\n return [4 /*yield*/, fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Access-Control-Allow-Origin\": \"*\",\n },\n })];\n case 1:\n resp = _c.sent();\n return [4 /*yield*/, resp.json()];\n case 2:\n json = _c.sent();\n this.recieve(json);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.onopen = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket opened\");\n this.is_open = true;\n if (this._zustand)\n this._zustand.auto_progress();\n this.reconnectAttempts = 0;\n this.stepwise_fullsync();\n };\n WebSocketWorker.prototype.onclose = function () {\n var _a, _b;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Websocket closed\");\n _super.prototype.onclose.call(this);\n if (this._reconnect) {\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Websocket closed,reconnecting\");\n this.auto_reconnect(); // Attempt to reconnect\n }\n };\n WebSocketWorker.prototype.on_ws_error = function () {\n var _a;\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket error\");\n if (this._websocket) {\n this._websocket.close(); // Ensure the connection is closed before attempting to reconnect\n }\n else {\n this.auto_reconnect();\n }\n };\n WebSocketWorker.prototype.send_large_message = function (jsondata) {\n return __awaiter(this, void 0, void 0, function () {\n var url;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = \"\".concat(this.http_url, \"message/\");\n return [4 /*yield*/, fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: jsondata,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.send = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var jsonstring, datasize;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this._websocket || this._websocket.readyState !== WebSocket.OPEN) {\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.warn(\"Websocket not connected\");\n return [2 /*return*/];\n }\n jsonstring = JSON.stringify(data);\n datasize = new Blob([jsonstring]).size;\n if (!(datasize > 1000000)) return [3 /*break*/, 2];\n // 1MB\n (_b = this._zustand) === null || _b === void 0 ? void 0 : _b.logger.info(\"Data too large, sending via http\");\n return [4 /*yield*/, this.send_large_message(jsonstring)];\n case 1: return [2 /*return*/, _d.sent()];\n case 2:\n (_c = this._zustand) === null || _c === void 0 ? void 0 : _c.logger.debug(\"Sending data\", data);\n this._websocket.send(jsonstring);\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.stop.call(this)];\n case 1:\n _a.sent();\n this._reconnect = false;\n return [2 /*return*/];\n }\n });\n });\n };\n WebSocketWorker.prototype.close = function () {\n if (this._websocket)\n this._websocket.close();\n };\n WebSocketWorker.prototype.disconnect = function () {\n _super.prototype.disconnect.call(this);\n this._reconnect = false;\n this.close();\n };\n WebSocketWorker.prototype.reconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, _super.prototype.reconnect.call(this)];\n case 1:\n _b.sent();\n this._reconnect = true;\n if (!this._websocket) return [3 /*break*/, 4];\n (_a = this._zustand) === null || _a === void 0 ? void 0 : _a.logger.info(\"Reconnecting\");\n if (!(this._websocket.readyState === WebSocket.OPEN ||\n this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 4];\n if (!(this._websocket.readyState === WebSocket.CONNECTING)) return [3 /*break*/, 3];\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n if (_this._websocket === null)\n return;\n var timeout = setTimeout(function () {\n reject(\"Timeout@reconnect\");\n }, 2000);\n _this._websocket.addEventListener(\"open\", function () {\n clearTimeout(timeout);\n resolve(null);\n }, { once: true });\n if (_this._websocket.readyState === WebSocket.OPEN) {\n clearTimeout(timeout);\n resolve(null);\n }\n })];\n case 2:\n //await to ensure the websocket is connected, with a timeout of 2 seconds\n _b.sent();\n _b.label = 3;\n case 3:\n if (this._websocket.readyState === WebSocket.OPEN) {\n this.stepwise_fullsync();\n return [2 /*return*/];\n }\n _b.label = 4;\n case 4:\n this.connect();\n return [2 /*return*/];\n }\n });\n });\n };\n return WebSocketWorker;\n}(_funcnodesworker__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WebSocketWorker);\n\n\n//# sourceURL=webpack://FuncNodesReact/./src/funcnodes/websocketworker.ts?");
|
|
3189
3189
|
|
|
3190
3190
|
/***/ }),
|
|
3191
3191
|
|
|
@@ -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 */ WebSocketWorker: () => (/* reexport safe */ _funcnodes_websocketworker__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\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\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
|
|
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?");
|
|
3211
3211
|
|
|
3212
3212
|
/***/ }),
|
|
3213
3213
|
|