diff --git a/ui/index.html b/ui/index.html index fe1c7f6b9..ba75b0475 100644 --- a/ui/index.html +++ b/ui/index.html @@ -4,7 +4,7 @@ - Certimate - Your Trusted SSL Automation Partner + Certimate - Your Trusted Partner in SSL Automation
diff --git a/ui/package-lock.json b/ui/package-lock.json index 400857945..0fdacb7c7 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -11,13 +11,13 @@ "@codemirror/lang-yaml": "^6.1.2", "@codemirror/language": "^6.11.2", "@codemirror/legacy-modes": "^6.5.1", - "@flowgram.ai/document": "^0.3.5", - "@flowgram.ai/fixed-layout-editor": "^0.3.5", - "@flowgram.ai/minimap-plugin": "^0.3.5", + "@flowgram.ai/document": "^0.3.6", + "@flowgram.ai/fixed-layout-editor": "^0.3.6", + "@flowgram.ai/minimap-plugin": "^0.3.6", "@tabler/icons-react": "^3.34.1", - "@uiw/codemirror-extensions-basic-setup": "^4.24.2", - "@uiw/codemirror-theme-vscode": "^4.24.2", - "@uiw/react-codemirror": "^4.24.2", + "@uiw/codemirror-extensions-basic-setup": "^4.25.1", + "@uiw/codemirror-theme-vscode": "^4.25.1", + "@uiw/react-codemirror": "^4.25.1", "ahooks": "^3.9.0", "antd": "^5.27.0", "antd-zod": "^7.0.0", @@ -2408,12 +2408,12 @@ } }, "node_modules/@flowgram.ai/background-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/background-plugin/-/background-plugin-0.3.5.tgz", - "integrity": "sha512-4iUka9SQNNceNQwivTBE1XPJjNSj4tP/6dieO2CVInPEl/PgIRodgTM5gjVvrnr/Mvrk1231+ttFL68HsVnByA==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/background-plugin/-/background-plugin-0.3.6.tgz", + "integrity": "sha512-nFCbR1JDbuZHPmwlnjxHyP1WeM3xv786GLdKfzU6h5v+VRrHZsRgu3r+j6d+CQSYTM3Mem3UAlXI4BWukZa9UQ==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2423,11 +2423,11 @@ } }, "node_modules/@flowgram.ai/command": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/command/-/command-0.3.5.tgz", - "integrity": "sha512-FWGaOD0+vGaKzDq2+c7NtzTyLofK/9rUoXA8YLbEnG+CNSaCDh9Q2+93YrTowRcCvSWxSHewGlLSquj2uAP3Wg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/command/-/command-0.3.6.tgz", + "integrity": "sha512-tI7192YZnFmC4t298PLd9u+dDwFsCzWaA2p2qVSpiTlGsk2ZOdTOfKbA/sFqearV0DOAG97KW1h81M4XbXGKkQ==", "dependencies": { - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2437,12 +2437,12 @@ } }, "node_modules/@flowgram.ai/core": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/core/-/core-0.3.5.tgz", - "integrity": "sha512-XrrogUnSjari3FipYUqpyiPKy30vewI5Jp9khRgyXc9cZiLVbdOd8Ki/LzHyxQc0E5R2H84XHHCpt1eWcKGMew==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/core/-/core-0.3.6.tgz", + "integrity": "sha512-/6PeNGAa0lGmCoA7/PzqGx0vnWQ+oizdvKG9P8/sm0aI8iu9+wxGOKUGUNUASkDRzJk8vzIPzP/26qaPrxKK2w==", "dependencies": { - "@flowgram.ai/command": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/command": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "@phosphor/messaging": "^1.3.0", "@tweenjs/tween.js": "^18", "clsx": "^1.1.1", @@ -2482,12 +2482,12 @@ } }, "node_modules/@flowgram.ai/document": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/document/-/document-0.3.5.tgz", - "integrity": "sha512-Y6Rrka33peD56bfJ5kDm2Ah+aDXiLJZdhepVoyvVBupySDnsGvAl7D4s0/dev+zQb6XsatgWAJf1SZ3UzdeTxQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/document/-/document-0.3.6.tgz", + "integrity": "sha512-idEXiFsoOrWgxA1DAQy2QBm+OI14xAZ87L7IjDJO6aaU52VpJxZZuQEQ3DI+ocndzT4kTaJsK2/QyzRPA98H7A==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "nanoid": "^4.0.2", @@ -2512,29 +2512,29 @@ } }, "node_modules/@flowgram.ai/editor": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/editor/-/editor-0.3.5.tgz", - "integrity": "sha512-/DCivTv4Gog8bXJ/qL10CTAGcwitnP3+Mnb6bJAjwvfX/y5FCD0OL9SKRIVXQhip4zxmFrmZmwnswJPnpbvxtA==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/editor/-/editor-0.3.6.tgz", + "integrity": "sha512-xsKJ0RtJUDlq08KXaFTnjYgvDhg5zU2EaeXPk1vGGgK2dWKrEir7odpGrr3jOxt9oTIaT3Xdxoi9YwneqL3srw==", "dependencies": { - "@flowgram.ai/background-plugin": "0.3.5", - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/group-plugin": "0.3.5", - "@flowgram.ai/history": "0.3.5", - "@flowgram.ai/history-node-plugin": "0.3.5", - "@flowgram.ai/i18n-plugin": "0.3.5", - "@flowgram.ai/materials-plugin": "0.3.5", - "@flowgram.ai/node": "0.3.5", - "@flowgram.ai/node-core-plugin": "0.3.5", - "@flowgram.ai/node-variable-plugin": "0.3.5", - "@flowgram.ai/playground-react": "0.3.5", - "@flowgram.ai/redux-devtool-plugin": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", - "@flowgram.ai/shortcuts-plugin": "0.3.5", - "@flowgram.ai/utils": "0.3.5", - "@flowgram.ai/variable-plugin": "0.3.5", + "@flowgram.ai/background-plugin": "0.3.6", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/group-plugin": "0.3.6", + "@flowgram.ai/history": "0.3.6", + "@flowgram.ai/history-node-plugin": "0.3.6", + "@flowgram.ai/i18n-plugin": "0.3.6", + "@flowgram.ai/materials-plugin": "0.3.6", + "@flowgram.ai/node": "0.3.6", + "@flowgram.ai/node-core-plugin": "0.3.6", + "@flowgram.ai/node-variable-plugin": "0.3.6", + "@flowgram.ai/playground-react": "0.3.6", + "@flowgram.ai/redux-devtool-plugin": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", + "@flowgram.ai/shortcuts-plugin": "0.3.6", + "@flowgram.ai/utils": "0.3.6", + "@flowgram.ai/variable-plugin": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2544,13 +2544,13 @@ } }, "node_modules/@flowgram.ai/fixed-drag-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-drag-plugin/-/fixed-drag-plugin-0.3.5.tgz", - "integrity": "sha512-sytXPYyiNU6RpLKsTPeXd83BWQjQaIrgQRGKuSoTYI9LUe8fDKz558xE/kJaLOvoyfeQwvpKj1kp03LAZ63+zA==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-drag-plugin/-/fixed-drag-plugin-0.3.6.tgz", + "integrity": "sha512-UhWVMTCKpsVu63M3VCxDjmAST88eNKrfkHNCQ73+obS/dKNKh4tyroz9kSnGHYfWjxme40fUP4bO459QgDhg7Q==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2560,29 +2560,29 @@ } }, "node_modules/@flowgram.ai/fixed-history-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-history-plugin/-/fixed-history-plugin-0.3.5.tgz", - "integrity": "sha512-V7QTfMykzmVfn0eaq1z7C/ukQnJhP8kr2qGUK/fxjOqhacgcBYW1+Pc+XsQWHQbo5dADr2kTlr42dgqjqY2Grg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-history-plugin/-/fixed-history-plugin-0.3.6.tgz", + "integrity": "sha512-bVWoKNUDybC5ojnZ/j1LFGRAfKw/3Ur/JYtA80d2qaq2WT+XXd2+f1RrbpRQaGQvcpVwhZT+oHFINn4srUl5vg==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/history": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/history": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" } }, "node_modules/@flowgram.ai/fixed-layout-core": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-layout-core/-/fixed-layout-core-0.3.5.tgz", - "integrity": "sha512-ojhQaIOweR5QH7gsc7fWavb5aF270jHu0m0RIjLtc7dFCUMiadlU+tkm2sP7Y1BM76aPXsG3hnjHUk7wM2sU4A==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-layout-core/-/fixed-layout-core-0.3.6.tgz", + "integrity": "sha512-TbpDN7zKaZCMk5RfRxTCuQkmd56cC11qFPysMzGe5g/2Yqy3OZ5P8VdavhHrOv/hN9sdnHrs8mEirN1APIp22Q==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" @@ -2593,19 +2593,19 @@ } }, "node_modules/@flowgram.ai/fixed-layout-editor": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-layout-editor/-/fixed-layout-editor-0.3.5.tgz", - "integrity": "sha512-bwMChriT0e0msP/6UGS6gAH+r3wqPDI2PObV01c/+JxkPjTHK/B+e1WoI5xZriQB7WQ0Y0/v2pxxrYmiGP3rvw==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/fixed-layout-editor/-/fixed-layout-editor-0.3.6.tgz", + "integrity": "sha512-0FMBbd6VXsHLFF5kBptEKp6S0YGYdlHNKZGI+KYJL3KwtklqoYr8/AvFtY5IS6nF3n44tP6m8CsuvwQZUXIFAw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/editor": "0.3.5", - "@flowgram.ai/fixed-drag-plugin": "0.3.5", - "@flowgram.ai/fixed-history-plugin": "0.3.5", - "@flowgram.ai/fixed-layout-core": "0.3.5", - "@flowgram.ai/history": "0.3.5", - "@flowgram.ai/reactive": "0.3.5", - "@flowgram.ai/select-box-plugin": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/editor": "0.3.6", + "@flowgram.ai/fixed-drag-plugin": "0.3.6", + "@flowgram.ai/fixed-history-plugin": "0.3.6", + "@flowgram.ai/fixed-layout-core": "0.3.6", + "@flowgram.ai/history": "0.3.6", + "@flowgram.ai/reactive": "0.3.6", + "@flowgram.ai/select-box-plugin": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2615,12 +2615,12 @@ } }, "node_modules/@flowgram.ai/form": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/form/-/form-0.3.5.tgz", - "integrity": "sha512-PmoG4k+aAdzt0v2aZKb3A/ArpUe0NKsACU68185PyXfGl8AU+GWP8ujdx3txKm2VTVEDjOFWsLSMh1/3RkRgkA==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/form/-/form-0.3.6.tgz", + "integrity": "sha512-lXNCq8sgNOPc50uVbPHAk+IsSFFNIvLkMMVvGaXXapH9p4Up5zGVPrRRuzCKeUdZHMe7wvWiAvR5hG335EsCKQ==", "dependencies": { - "@flowgram.ai/reactive": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/reactive": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "fast-equals": "^2.0.0", "lodash": "^4.17.21", "nanoid": "^4.0.2" @@ -2631,13 +2631,13 @@ } }, "node_modules/@flowgram.ai/form-core": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/form-core/-/form-core-0.3.5.tgz", - "integrity": "sha512-fgzjJT9cUIYcclRSbMfoAHS9hqN8AvbvaZcx2EXlQDVpGAZsrTrMe4WmPe1mQ3eCakj9oj4VKqu8kipfT6spSg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/form-core/-/form-core-0.3.6.tgz", + "integrity": "sha512-wVrJZ+o1FbLwLBOchbJ1vc8BYPeMqHUuGNUu4TdmNvmHQtxChwUqX2nyCQYUXP3/sXnQnpuKHfvwA6VY12H6gQ==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" @@ -2665,16 +2665,16 @@ } }, "node_modules/@flowgram.ai/free-layout-core": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/free-layout-core/-/free-layout-core-0.3.5.tgz", - "integrity": "sha512-ZyjSFe+/Wg8wYXtxylMfLTuapOwSucHIXmJXD4Oz6WJQk39mJ6Cfds8pbp9aPDpFYfhRdQJOLAb9nUOh5+QnBw==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/free-layout-core/-/free-layout-core-0.3.6.tgz", + "integrity": "sha512-Rcaol6+X1cBLX6Iu3AwixZC7516fOocxMPW2JeSPrWJChDOJmHtme5iMcxAKirpct9L/+AxSD0c0gIsrEmiqag==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/node": "0.3.5", - "@flowgram.ai/reactive": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/node": "0.3.6", + "@flowgram.ai/reactive": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash-es": "^4.17.21", "nanoid": "^4.0.2", @@ -2703,14 +2703,14 @@ } }, "node_modules/@flowgram.ai/group-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/group-plugin/-/group-plugin-0.3.5.tgz", - "integrity": "sha512-FRic+LX9NjjW18sd7A/lV1v+wBJKwDnFUranye1nK2f9znN51k1GLm/0W/Ch0N0pZXlV8clCHYaMN9TIIZMHtQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/group-plugin/-/group-plugin-0.3.6.tgz", + "integrity": "sha512-neDrH5KNPStAmUgQhEuTmfd0zFgsERFplRIwXX+ByV7gPpHWdPHoboTPSzJ7ZXEAjogFEQgY8IRsp7KSA7iNAw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2720,12 +2720,12 @@ } }, "node_modules/@flowgram.ai/history": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/history/-/history-0.3.5.tgz", - "integrity": "sha512-G0vU9vNJdpbHSnBx8GG8VOyTfD5Qy4L4j8S577SHl3RxhIIh7vr1tm5REEzzhxJWsvOID+v1+73XhSTzTmVi8w==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/history/-/history-0.3.6.tgz", + "integrity": "sha512-Hk3u5lLh29XqZovyrzPI35ItgB4u0+J1N36u6+HlR+Wk82HTHW6K4sKQErzZFSVEByBC/X1XlwtSNOOutxQALw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "nanoid": "^4.0.2", @@ -2733,17 +2733,17 @@ } }, "node_modules/@flowgram.ai/history-node-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/history-node-plugin/-/history-node-plugin-0.3.5.tgz", - "integrity": "sha512-oeoy0DJdP0dAfcOLRnKPB/r6wJcnd2rtkVwVrrpQCr3H2QF7IBNKmQFf+ueXR6e8onbNoS0b7stYqCRIFeeCaQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/history-node-plugin/-/history-node-plugin-0.3.6.tgz", + "integrity": "sha512-PD7w6/VBExL4VQkWwh+x7OjnPZaGTPhXB1DSETivTtj8pfB4HkihbtG5VlnyoDJWooBvzBJhk2Dmx91fGak6Tw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/history": "0.3.5", - "@flowgram.ai/node": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/history": "0.3.6", + "@flowgram.ai/node": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" @@ -2772,32 +2772,32 @@ } }, "node_modules/@flowgram.ai/i18n": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/i18n/-/i18n-0.3.5.tgz", - "integrity": "sha512-5G4wMZ3QjCIEeU2g0Cqa+vjvEoVZxs/hFx/9AV1HusBBDjeV3LOod8AM50VwIDbL/nGjLHQo2e7Nf6WBMOj86Q==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/i18n/-/i18n-0.3.6.tgz", + "integrity": "sha512-yPuYl1miztb4I4tC1QFzvYyN82j+qWIsxcahizbmrI9eA3RhsqTDq/UgX7r9pOzVlfdITMqQ8OKUyW/lPNZcjA==", "dependencies": { - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/utils": "0.3.6", "i18n-js": "^4.5.1" } }, "node_modules/@flowgram.ai/i18n-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/i18n-plugin/-/i18n-plugin-0.3.5.tgz", - "integrity": "sha512-rm+nQ5r7QAWSEjEyO+cT9raIVOGDa5QIdezI+NiCco27VFGsRY28dQXROd0jf/mDK91IfHrSec5nVks5bE9ZMg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/i18n-plugin/-/i18n-plugin-0.3.6.tgz", + "integrity": "sha512-2FJACeapk49F/kpfVNI9DwYPQITvXYfA86pAWKPL51v1TncBdbdvzc3WSSOEXVdWpvA8axztYlrwYQz8ra9tvA==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/i18n": "0.3.5" + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/i18n": "0.3.6" } }, "node_modules/@flowgram.ai/materials-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/materials-plugin/-/materials-plugin-0.3.5.tgz", - "integrity": "sha512-ZORaEEDBPKXbTD9LIhPX8PfPfeIYiyJsPkwKm+wtSEoKbP7G+tahSMTVPDwLiIeWbQ93lEZK1/JK2XpL6rA19Q==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/materials-plugin/-/materials-plugin-0.3.6.tgz", + "integrity": "sha512-UVyPEMnzP14bULUIpThogzaJA3Xc0Uo5QVTwB8nZ4gpo4tlkv2ssLbAUnJx6fB/+1Fh99vRdJb1lR8mbfsauOA==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2808,14 +2808,14 @@ } }, "node_modules/@flowgram.ai/minimap-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/minimap-plugin/-/minimap-plugin-0.3.5.tgz", - "integrity": "sha512-+mQx4SoaoA0EghPRmBxqIK5jbHQrzswfg9CQ3kqk5Yu5rhPTpmr+IaHbRK6FWpuehJZNxkjcUKAY705rtFIZcA==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/minimap-plugin/-/minimap-plugin-0.3.6.tgz", + "integrity": "sha512-f3sDist0dOp3hHDTp83e5Y8m+9c/vKnm3emdGXeomZZgDqCMTCYC+4OPHLCxNLhdxdaLbV5EAvRY7mVHk63qIw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" @@ -2827,15 +2827,15 @@ } }, "node_modules/@flowgram.ai/node": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/node/-/node-0.3.5.tgz", - "integrity": "sha512-OQvcuMH3T+l9RCXfAt4tWX6tijXtCp/Kkp/pcoNFfJ7o1abfRHMKEE66i51TPn89MYrIjRxH0GY+qcm9UOuiQQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/node/-/node-0.3.6.tgz", + "integrity": "sha512-Wg7lbw/MAezapLuYCfJ/m89f/RbFwntpoWuR9B9/Eah2riGTQOYpU69+9IuRjokpaqW4T/KNDFF6BZiOz0h+Ew==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "nanoid": "^4.0.2", @@ -2847,16 +2847,16 @@ } }, "node_modules/@flowgram.ai/node-core-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/node-core-plugin/-/node-core-plugin-0.3.5.tgz", - "integrity": "sha512-SdWDx2ghcRbb6imacoAi+j/tZIVPcLt7FGYBg0FpXH2r0jVioXjq1BRq11GpvQqlCyDuE/J+IP21NWi1DSwKcA==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/node-core-plugin/-/node-core-plugin-0.3.6.tgz", + "integrity": "sha512-5KIJaFb6CmZbXosN+D5ulNLRiDFJEq+DK3jbCqw+Hg+BC1YA2EAwCVTQvphptYAXP12BQ8B23S0QMYGUkuhWsA==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/node": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/node": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2867,16 +2867,16 @@ } }, "node_modules/@flowgram.ai/node-variable-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/node-variable-plugin/-/node-variable-plugin-0.3.5.tgz", - "integrity": "sha512-uZXyuBQDC9GHnJsx8w+aVM3Eb9+DNNH0qe1rZzS5MrrRG7A85t/OsGPL98p2kZJVU6Q6N+38REchsV9KdYot+Q==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/node-variable-plugin/-/node-variable-plugin-0.3.6.tgz", + "integrity": "sha512-7lBgAOyfGqNCSSVWqe3QetNG4hK9UiABz0DCVZl2ihc/9TuTev+BS+Lb0w/aTNKsr4HvTXbeERsxyTdolKrYVA==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/form-core": "0.3.5", - "@flowgram.ai/node": "0.3.5", - "@flowgram.ai/utils": "0.3.5", - "@flowgram.ai/variable-plugin": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/form-core": "0.3.6", + "@flowgram.ai/node": "0.3.6", + "@flowgram.ai/utils": "0.3.6", + "@flowgram.ai/variable-plugin": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" @@ -2905,14 +2905,14 @@ } }, "node_modules/@flowgram.ai/playground-react": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/playground-react/-/playground-react-0.3.5.tgz", - "integrity": "sha512-zBcHDS7hQ58F4o3yw0eGNv3U2qcp2qvdRJmHD0oyyCCfygBk1iqycqB8mK0J0CaferPIr7xf7CW4QAsJ/EAvbQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/playground-react/-/playground-react-0.3.6.tgz", + "integrity": "sha512-cL4i0sg3h9Y693N5i1tLrjleJsM9wMC+E+bNR7pV2BatRji7boz3+sfBfOIZnMCAxgl4ppUtnXGt2BYnkl2Pkw==", "dependencies": { - "@flowgram.ai/background-plugin": "0.3.5", - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/shortcuts-plugin": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/background-plugin": "0.3.6", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/shortcuts-plugin": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -2922,11 +2922,11 @@ } }, "node_modules/@flowgram.ai/reactive": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/reactive/-/reactive-0.3.5.tgz", - "integrity": "sha512-qzb7bB7SXk2JkikaCRxzKAs5rvSJqAfCCSwgbXSo3/1r4XsARuGYE0iyoobl0Fa4gD9kUk1FSv7htsxTqja9SQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/reactive/-/reactive-0.3.6.tgz", + "integrity": "sha512-iv0eWuZkVo1vHRO6f+nFGlZCDiRNSN4+cOtZb40RepKVU8vNZr9xLptsnZ1vvh8csl7LLi5V/7V/ZaZ2BqGskw==", "dependencies": { - "@flowgram.ai/utils": "0.3.5" + "@flowgram.ai/utils": "0.3.6" }, "peerDependencies": { "react": ">=16.8", @@ -2934,12 +2934,12 @@ } }, "node_modules/@flowgram.ai/redux-devtool-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/redux-devtool-plugin/-/redux-devtool-plugin-0.3.5.tgz", - "integrity": "sha512-3mLlbz+RI5mPKVXLwqH2tT4L9ngmMZlq2Z4zmMl/F83JSOi1PCdYlD6J4FHG2jRBES7iI37VTFDxiJoHbP9tFw==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/redux-devtool-plugin/-/redux-devtool-plugin-0.3.6.tgz", + "integrity": "sha512-3nM+O9C0Sv1+k3PdrWEPZfGTDppf+lKSvUj4tZcEOHv1XTwd8wZ23ZVz5+8wWy3UBzEFCbC/BNHl4ahEcIDbKA==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/variable-core": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/variable-core": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2", "styled-components": "^5" @@ -2994,14 +2994,14 @@ } }, "node_modules/@flowgram.ai/renderer": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/renderer/-/renderer-0.3.5.tgz", - "integrity": "sha512-YheWVjZ1CUIUfjfQwf7G/4jeyWsYWKG9+4zJW+co5U8isNAnVH2l+8Ahibx5fOIEnmzerOVRN73dKSSetwDdPg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/renderer/-/renderer-0.3.6.tgz", + "integrity": "sha512-o2S1oeWfWSR7C2Y6TSFAjdcHqdOPBOBWNtAglB4nK1SdHT9/sRWt60rdyArrWajU9DLvG197RN8qzSRTNkDbsQ==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/i18n": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/i18n": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "lodash": "^4.17.21", "reflect-metadata": "~0.2.2" @@ -3012,12 +3012,12 @@ } }, "node_modules/@flowgram.ai/select-box-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/select-box-plugin/-/select-box-plugin-0.3.5.tgz", - "integrity": "sha512-8I1+KoE9LQaDIfte/AyC4SwB9pcmb/HcQQNKklZbSPR8He3Fu4dLrTcquLO6dkRx/aF6dvugT3/78ise3mijoQ==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/select-box-plugin/-/select-box-plugin-0.3.6.tgz", + "integrity": "sha512-lsrFq01YUhLOFGjPhKQA6nmsNI9U1aM7hg3p1Fw4ILIHyRFZse8mvHrMvf/fjAPfVOdJTKjcsGfQPOjWTrhWFQ==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/renderer": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/renderer": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2" }, @@ -3027,13 +3027,13 @@ } }, "node_modules/@flowgram.ai/shortcuts-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/shortcuts-plugin/-/shortcuts-plugin-0.3.5.tgz", - "integrity": "sha512-68RV3LAgsZxeHvUpHCQpa4k80J06D9zpRgCjXfCpyBqUkXfMqp/uvv3pM/LBynl+4OyLzbFCxt0dsXDQP6mjNw==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/shortcuts-plugin/-/shortcuts-plugin-0.3.6.tgz", + "integrity": "sha512-RQ5fnqtqw2aXJTptV3yLEKFNl7mdd2q8CXQ7v8snqRUaB5vzI55M3SJUvCgmenayXSGktBofGcZ/mpA578lVKw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2", "styled-components": "^5" @@ -3088,9 +3088,9 @@ } }, "node_modules/@flowgram.ai/utils": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/utils/-/utils-0.3.5.tgz", - "integrity": "sha512-t8KZ7c0+evAqo0e+wE3Kw58UGRkM0+DSit+X0wqerbVZe0K3j6fIIU/C0xuiVxhvxYAyCHpbNaJR0REE6jCcgg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/utils/-/utils-0.3.6.tgz", + "integrity": "sha512-5RKx2JrEjlcMOFe81F2DnroQT195ycSmuzt71p2LP/JDzNM0nG5FDRFY9DN5xuvXAeDvbD9L61rZBIgaAIXFKw==", "dependencies": { "clsx": "^1.1.1", "inversify": "^6.0.1", @@ -3128,12 +3128,12 @@ } }, "node_modules/@flowgram.ai/variable-core": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/variable-core/-/variable-core-0.3.5.tgz", - "integrity": "sha512-A+FwAF3uFOnULsnRz6UeVofax3fR9nIY4f+9f2td1+SEN/sCrI15vmsb9rWynC2OfSdx3k+IMzuQrpP/BwGVPw==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/variable-core/-/variable-core-0.3.6.tgz", + "integrity": "sha512-IIssDNEpjyno7m+T3FiOzsrx4bM0qJGsZM+0MIF/CG8lbu//mtpd35SFEODePB8jZLg8sMU49/9f81LtWXXZsA==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", "fast-equals": "^2.0.0", "inversify": "^6.0.1", "lodash": "^4.17.21", @@ -3164,15 +3164,15 @@ } }, "node_modules/@flowgram.ai/variable-layout": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/variable-layout/-/variable-layout-0.3.5.tgz", - "integrity": "sha512-ah0J5Jzj0nDHNMdjMrZ7VJtxi5DkVgolNhLjN6HyoC4JyxRTMqDSwT1JQI09pLoxqhC+LuEZ4D36eJqAY883uw==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/variable-layout/-/variable-layout-0.3.6.tgz", + "integrity": "sha512-f43k2OnOL7KXcuewQHX9Oy4t6cy4iotIYRnV5kvlD5JlZpPxCxKBtFeRPH6L/xXoKNCLA9JFv9IIBvO+omeU4A==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/free-layout-core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", - "@flowgram.ai/variable-core": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/free-layout-core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", + "@flowgram.ai/variable-core": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2", "styled-components": "^5" @@ -3227,16 +3227,16 @@ } }, "node_modules/@flowgram.ai/variable-plugin": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@flowgram.ai/variable-plugin/-/variable-plugin-0.3.5.tgz", - "integrity": "sha512-Y7kgLgV/jZS/u9BfcstmxxHYi9NbGZqr2jsBXkOiV/+eYsSaVZW11YXZaC0ZNetl5/SVR68zbvzqjJV6nKIIHg==", + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/@flowgram.ai/variable-plugin/-/variable-plugin-0.3.6.tgz", + "integrity": "sha512-b7q5/FjdbLTChuW2eLh708KDhLF4gdjzkXrjwWoyZ0vleo/Qs7S8NMuzHnhYusu5zdj0N0aFDOb+5jl7uPk2rw==", "dependencies": { - "@flowgram.ai/core": "0.3.5", - "@flowgram.ai/document": "0.3.5", - "@flowgram.ai/free-layout-core": "0.3.5", - "@flowgram.ai/utils": "0.3.5", - "@flowgram.ai/variable-core": "0.3.5", - "@flowgram.ai/variable-layout": "0.3.5", + "@flowgram.ai/core": "0.3.6", + "@flowgram.ai/document": "0.3.6", + "@flowgram.ai/free-layout-core": "0.3.6", + "@flowgram.ai/utils": "0.3.6", + "@flowgram.ai/variable-core": "0.3.6", + "@flowgram.ai/variable-layout": "0.3.6", "inversify": "^6.0.1", "reflect-metadata": "~0.2.2", "styled-components": "^5" @@ -4643,9 +4643,9 @@ } }, "node_modules/@uiw/codemirror-extensions-basic-setup": { - "version": "4.24.2", - "resolved": "https://registry.npmmirror.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.24.2.tgz", - "integrity": "sha512-wW/gjLRvVUeYyhdh2TApn25cvdcR+Rhg6R/j3eTOvXQzU1HNzNYCVH4YKVIfgtfdM/Xs+N8fkk+rbr1YvBppCg==", + "version": "4.25.1", + "resolved": "https://registry.npmmirror.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.1.tgz", + "integrity": "sha512-zxgA2QkvP3ZDKxTBc9UltNFTrSeFezGXcZtZj6qcsBxiMzowoEMP5mVwXcKjpzldpZVRuY+JCC+RsekEgid4vg==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -4669,20 +4669,20 @@ } }, "node_modules/@uiw/codemirror-theme-vscode": { - "version": "4.24.2", - "resolved": "https://registry.npmmirror.com/@uiw/codemirror-theme-vscode/-/codemirror-theme-vscode-4.24.2.tgz", - "integrity": "sha512-5rLvAMKNjqtHSy3BZnI1Q4ZLqUDDJC5fKOp8Mv5VjPqEmAxEAIGrIXBnhAFlRg5VjHbHEMtM1O5ugL3IeHoBdQ==", + "version": "4.25.1", + "resolved": "https://registry.npmmirror.com/@uiw/codemirror-theme-vscode/-/codemirror-theme-vscode-4.25.1.tgz", + "integrity": "sha512-vZXvErVDvHLFWCo78Y22R2grisGkWJFFKkdOu9+tcRjWfOVb7K3fDu/H4fDr6JujLTaL+LY/vP/LZYAGJXVqgA==", "dependencies": { - "@uiw/codemirror-themes": "4.24.2" + "@uiw/codemirror-themes": "4.25.1" }, "funding": { "url": "https://jaywcjlove.github.io/#/sponsor" } }, "node_modules/@uiw/codemirror-themes": { - "version": "4.24.2", - "resolved": "https://registry.npmmirror.com/@uiw/codemirror-themes/-/codemirror-themes-4.24.2.tgz", - "integrity": "sha512-0fQusJE08APL+1WM0xYqvampVM2RpABHjvZbcJWHdRc+teZbrP8907VW1ZX1tO/7/xgRRt4Fc3RHPCcTs7b0NQ==", + "version": "4.25.1", + "resolved": "https://registry.npmmirror.com/@uiw/codemirror-themes/-/codemirror-themes-4.25.1.tgz", + "integrity": "sha512-6o8tQ8bdq14RuVFpZ7l9u8KnuPq824uG3U1VV933Uhv8mfaxaoaOQSjv6T2bQUPhjH6ZlEu5+tAMkOfIL21eIQ==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -4698,15 +4698,15 @@ } }, "node_modules/@uiw/react-codemirror": { - "version": "4.24.2", - "resolved": "https://registry.npmmirror.com/@uiw/react-codemirror/-/react-codemirror-4.24.2.tgz", - "integrity": "sha512-kp7DhTq4RR+M2zJBQBrHn1dIkBrtOskcwJX4vVsKGByReOvfMrhqRkGTxYMRDTX6x75EG2mvBJPDKYcUQcHWBw==", + "version": "4.25.1", + "resolved": "https://registry.npmmirror.com/@uiw/react-codemirror/-/react-codemirror-4.25.1.tgz", + "integrity": "sha512-eESBKHndoYkaEGlKCwRO4KrnTw1HkWBxVpEeqntoWTpoFEUYxdLWUYmkPBVk4/u8YzVy9g91nFfIRpqe5LjApg==", "dependencies": { "@babel/runtime": "^7.18.6", "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", - "@uiw/codemirror-extensions-basic-setup": "4.24.2", + "@uiw/codemirror-extensions-basic-setup": "4.25.1", "codemirror": "^6.0.0" }, "funding": { diff --git a/ui/package.json b/ui/package.json index 78b7ede42..7dd99ebf0 100644 --- a/ui/package.json +++ b/ui/package.json @@ -13,20 +13,20 @@ "@codemirror/lang-yaml": "^6.1.2", "@codemirror/language": "^6.11.2", "@codemirror/legacy-modes": "^6.5.1", - "@flowgram.ai/document": "^0.3.5", - "@flowgram.ai/fixed-layout-editor": "^0.3.5", - "@flowgram.ai/minimap-plugin": "^0.3.5", + "@flowgram.ai/document": "^0.3.6", + "@flowgram.ai/fixed-layout-editor": "^0.3.6", + "@flowgram.ai/minimap-plugin": "^0.3.6", "@tabler/icons-react": "^3.34.1", - "@uiw/codemirror-extensions-basic-setup": "^4.24.2", - "@uiw/codemirror-theme-vscode": "^4.24.2", - "@uiw/react-codemirror": "^4.24.2", + "@uiw/codemirror-extensions-basic-setup": "^4.25.1", + "@uiw/codemirror-theme-vscode": "^4.25.1", + "@uiw/react-codemirror": "^4.25.1", "ahooks": "^3.9.0", "antd": "^5.27.0", "antd-zod": "^7.0.0", "clsx": "^2.1.1", "cron-parser": "^5.3.0", "file-saver": "^2.0.5", - "i18next": "^25.3.4", + "i18next": "^25.3.6", "i18next-browser-languagedetector": "^8.2.0", "immer": "^10.1.1", "nanoid": "^5.1.5", @@ -43,8 +43,8 @@ }, "devDependencies": { "@eslint/js": "^9.33.0", - "@tailwindcss/postcss": "^4.1.11", - "@tailwindcss/vite": "^4.1.11", + "@tailwindcss/postcss": "^4.1.12", + "@tailwindcss/vite": "^4.1.12", "@types/file-saver": "^2.0.7", "@types/fs-extra": "^11.0.4", "@types/node": "^22.16.5", @@ -63,7 +63,7 @@ "eslint-plugin-react-refresh": "^0.4.20", "fs-extra": "^11.3.1", "prettier": "^3.6.2", - "tailwindcss": "^4.1.11", + "tailwindcss": "^4.1.12", "typescript": "^5.8.3", "typescript-eslint": "^8.39.1", "vite": "^6.3.5" diff --git a/ui/src/components/CodeInput.tsx b/ui/src/components/CodeInput.tsx index 90c1fc4a6..9064bf7ed 100644 --- a/ui/src/components/CodeInput.tsx +++ b/ui/src/components/CodeInput.tsx @@ -7,7 +7,7 @@ import { shell } from "@codemirror/legacy-modes/mode/shell"; import { basicSetup } from "@uiw/codemirror-extensions-basic-setup"; import { vscodeDark, vscodeLight } from "@uiw/codemirror-theme-vscode"; import CodeMirror, { type ReactCodeMirrorProps, type ReactCodeMirrorRef } from "@uiw/react-codemirror"; -import { useFocusWithin } from "ahooks"; +import { useFocusWithin, useHover } from "ahooks"; import { theme } from "antd"; import { useBrowserTheme } from "@/hooks"; @@ -24,7 +24,8 @@ const CodeInput = ({ className, style, disabled, language, ...props }: CodeInput const { theme: browserTheme } = useBrowserTheme(); const cmRef = useRef(null); - const isFocusWithin = useFocusWithin(cmRef.current?.editor); + const isFocusing = useFocusWithin(cmRef.current?.editor); + const isHovering = useHover(cmRef.current?.editor); const cmTheme = useMemo(() => { if (browserTheme === "dark") { @@ -66,13 +67,30 @@ const CodeInput = ({ className, style, disabled, language, ...props }: CodeInput return (
diff --git a/ui/src/components/workflow/designer/Designer.tsx b/ui/src/components/workflow/designer/Designer.tsx index 308cf3a75..b2f682b20 100644 --- a/ui/src/components/workflow/designer/Designer.tsx +++ b/ui/src/components/workflow/designer/Designer.tsx @@ -1,4 +1,4 @@ -import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef } from "react"; +import { forwardRef, useImperativeHandle, useMemo, useRef } from "react"; import { ConstantKeys, EditorRenderer, @@ -119,6 +119,18 @@ const Designer = forwardRef( }), ], + onInit: (ctx) => { + const callback = () => { + if (rendered.current) { + onDocumentChange?.(flowgramEditorRef.current!); + } + }; + ctx.document.onNodeCreate(callback); + ctx.document.onNodeUpdate(callback); + ctx.document.onNodeDispose(callback); + ctx.document.originTree.onTreeChange(callback); + }, + onAllLayersRendered: (ctx) => { rendered.current = true; @@ -128,50 +140,34 @@ const Designer = forwardRef( }, 1); }, }), - [themeToken, initialData, readonly] + [themeToken, initialData, readonly, onDocumentChange] ); - useEffect(() => { - const callback = () => { - if (rendered.current) { - onDocumentChange?.(flowgramEditorRef.current!); - } - }; - const d1 = flowgramEditorRef.current?.document?.onNodeCreate(callback); - const d2 = flowgramEditorRef.current?.document?.onNodeUpdate(callback); - const d3 = flowgramEditorRef.current?.document?.onNodeDispose(callback); - const d4 = flowgramEditorRef.current?.document?.renderTree?.onTreeChange(callback); - - return () => { - d1?.dispose(); - d2?.dispose(); - d3?.dispose(); - d4?.dispose(); - }; - }, [onDocumentChange]); - useImperativeHandle(ref, () => { return { + get clipboard() { + return flowgramEditorRef.current!.clipboard; + }, get container() { return flowgramEditorRef.current!.container; }, get document() { return flowgramEditorRef.current!.document; }, - get playground() { - return flowgramEditorRef.current!.playground; + get history() { + return flowgramEditorRef.current!.history; }, get operation() { return flowgramEditorRef.current!.operation; }, - get clipboard() { - return flowgramEditorRef.current!.clipboard; + get playground() { + return flowgramEditorRef.current!.playground; }, get selection() { return flowgramEditorRef.current!.selection; }, - get history() { - return flowgramEditorRef.current!.history; + get tools() { + return flowgramEditorRef.current!.tools; }, get(identifier) { diff --git a/ui/src/components/workflow/designer/Toolbar.tsx b/ui/src/components/workflow/designer/Toolbar.tsx index 666feeb04..1479a9cff 100644 --- a/ui/src/components/workflow/designer/Toolbar.tsx +++ b/ui/src/components/workflow/designer/Toolbar.tsx @@ -19,7 +19,7 @@ const Toolbar = ({ className, style }: ToolbarProps) => { const ctx = useClientContext(); const { playground } = ctx; - const tools = usePlaygroundTools({ minZoom: 0.1, maxZoom: 3, padding: 48 }); + const tools = usePlaygroundTools({ minZoom: 0.1, maxZoom: 3 }); const refresh = useRefresh(); diff --git a/ui/src/components/workflow/designer/_util.ts b/ui/src/components/workflow/designer/_util.ts new file mode 100644 index 000000000..78d3c1fa2 --- /dev/null +++ b/ui/src/components/workflow/designer/_util.ts @@ -0,0 +1,182 @@ +import { FlowNodeBaseType, type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor"; +import { Immer } from "immer"; +import { nanoid } from "nanoid"; + +import { type NodeJSON, NodeType } from "./nodes/typings"; + +/** + * 返回一个新的节点 ID。 + * @returns {String} + */ +export const newNodeId = () => nanoid(); + +/** + * 克隆节点 JSON 对象。节点及其子节点 ID 均会重新分配。 + * @param {NodeJSON} node + * @param {Object} options + * @returns {NodeJSON} + */ +export const duplicateNodeJSON = (node: NodeJSON, options?: { withCopySuffix?: boolean }) => { + const { produce } = new Immer({ autoFreeze: false }); + const deepClone = (node: NodeJSON, { withCopySuffix, nodeIdMap }: { withCopySuffix: boolean; nodeIdMap: Map }) => { + return produce(node, (draft) => { + draft.data ??= {}; + draft.id = newNodeId(); + draft.data.name = withCopySuffix ? `${draft.data?.name || ""}-copy` : `${draft.data?.name || ""}`; + + nodeIdMap.set(node.id, draft.id); // 原节点 ID 映射到新节点 ID + + if (draft.blocks) { + draft.blocks = draft.blocks.map((block) => deepClone(block as NodeJSON, { withCopySuffix: false, nodeIdMap })); + } + + if (draft.data?.config) { + switch (draft.type) { + case NodeType.BizDeploy: + { + const prevNodeId = draft.data.config.certificate?.split("#")?.[0]; + if (nodeIdMap.has(prevNodeId)) { + draft.data.config = { + ...draft.data.config, + certificate: `${nodeIdMap.get(prevNodeId)}#certificate`, + }; + } + } + break; + + case NodeType.Condition: + { + const stack = [] as any[]; + const expr = draft.data.config.expression; + if (expr) { + stack.push(expr); + while (stack.length > 0) { + const n = stack.pop()!; + if ("left" in n) { + stack.push(n.left); + if ("selector" in n.left) { + const prevNodeId = n.left.selector.id; + if (nodeIdMap.has(prevNodeId)) { + n.left.selector.id = nodeIdMap.get(prevNodeId)!; + } + } + } + if ("right" in n) { + stack.push(n.right); + } + } + draft.data.config = { + ...draft.data.config, + expression: expr, + }; + } + } + break; + } + } + + return draft; + }); + }; + + return deepClone(node, { withCopySuffix: options?.withCopySuffix ?? true, nodeIdMap: new Map() }); +}; + +/** + * 获取指定节点到根节点为止的所有前序节点。不包括自身和根节点或开始节点。 + * @param {FlowNodeEntity} node + * @returns {FlowNodeEntity[]} + */ +export const getAllPreviousNodes = (node: FlowNodeEntity): FlowNodeEntity[] => { + if (node == null) return []; + + // TODO: 不应该获取到旁路分支 + // // 先获取单一链路(即不包含分支)的全部节点 + // const chains: FlowNodeEntity[] = []; + // let chain: FlowNodeEntity | undefined = node; + // while (chain) { + // if (chain.isStart || chain.flowNodeType === FlowNodeBaseType.ROOT) { + // break; + // } + + // chains.push(chain); + // chain = chain.pre ?? chain.parent; + // } + + // 再获取实际的全部节点 + const visited = new Set(); + const result: FlowNodeEntity[] = []; + let current: FlowNodeEntity | undefined = node; + while (current) { + if (current.isStart || current.flowNodeType === FlowNodeBaseType.ROOT) { + break; + } + + if (current.flowNodeType === NodeType.Condition) { + /** + * condition + * blockIcon + * inlineBlocks + * branchBlock_1 + * blockOrderIcon + * ... + * branchBlock_2 + * blockOrderIcon + * ... + */ + current.lastBlock?.blocks?.forEach((block) => { + block.allChildren?.forEach((child) => { + if (!visited.has(child.id)) { + visited.add(child.id); + result.push(child); + } + }); + }); + } else if (current.flowNodeType === NodeType.TryCatch) { + /** + * tryCatch + * blockIcon + * mainInlineBlocks + * tryBlock + * trySlot + * ... + * catchInlineBlocks + * catchBlock_1 + * blockOrderIcon + * ... + * end + * catchBlock_2 + * blockOrderIcon + * ... + * end + */ + current.lastBlock?.blocks?.forEach((block) => { + block.allChildren?.forEach((child) => { + if (!visited.has(child.id)) { + visited.add(child.id); + result.push(child); + } + }); + }); + } + + if (!visited.has(current.id)) { + visited.add(current.id); + result.push(current); + } + current = current.pre ?? current.parent; + } + + const prevNodes = result.filter((e) => { + if (e.id === node.id) return false; + if (e.isTypeOrExtendType(FlowNodeBaseType.BLOCK_ICON)) return false; + if (e.isTypeOrExtendType(FlowNodeBaseType.BLOCK_ORDER_ICON)) return false; + if (e.isTypeOrExtendType(FlowNodeBaseType.INLINE_BLOCKS)) return false; + if (e.isTypeOrExtendType("trySlot")) return false; + + return true; + }); + console.log(node.document.root); + console.log(prevNodes); + return prevNodes; +}; diff --git a/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx b/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx index 57a220304..47f6abf8a 100644 --- a/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx +++ b/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx @@ -555,13 +555,13 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType }) }, t("common.errmsg.domain_invalid")), contactEmail: z.email(t("common.errmsg.email_invalid")), challengeType: z.string().nullish(), - provider: z.string().nonempty(t("workflow_node.apply.form.provider.placeholder")), - providerAccessId: z.string().nonempty(t("workflow_node.apply.form.provider_access.placeholder")), + provider: z.string(t("workflow_node.apply.form.provider.placeholder")).nonempty(t("workflow_node.apply.form.provider.placeholder")), + providerAccessId: z.string(t("workflow_node.apply.form.provider_access.placeholder")).nonempty(t("workflow_node.apply.form.provider_access.placeholder")), providerConfig: z.any().nullish(), caProvider: z.string().nullish(), caProviderAccessId: z.string().nullish(), caProviderConfig: z.any().nullish(), - keyAlgorithm: z.string().nonempty(t("workflow_node.apply.form.key_algorithm.placeholder")), + keyAlgorithm: z.string(t("workflow_node.apply.form.key_algorithm.placeholder")).nonempty(t("workflow_node.apply.form.key_algorithm.placeholder")), nameservers: z .string() .nullish() diff --git a/ui/src/components/workflow/designer/forms/BizDeployNodeConfigForm.tsx b/ui/src/components/workflow/designer/forms/BizDeployNodeConfigForm.tsx index b762100cb..8d9ee1b71 100644 --- a/ui/src/components/workflow/designer/forms/BizDeployNodeConfigForm.tsx +++ b/ui/src/components/workflow/designer/forms/BizDeployNodeConfigForm.tsx @@ -12,10 +12,10 @@ import DeploymentProviderPicker from "@/components/provider/DeploymentProviderPi import DeploymentProviderSelect from "@/components/provider/DeploymentProviderSelect"; import Show from "@/components/Show"; import { ACCESS_USAGES, DEPLOYMENT_PROVIDERS, accessProvidersMap, deploymentProvidersMap } from "@/domain/provider"; -import { type WorkflowNodeConfigForDeploy, WorkflowNodeType, defaultNodeConfigForDeploy } from "@/domain/workflow"; -import { useAntdForm, useZustandShallowSelector } from "@/hooks"; -import { useWorkflowStore } from "@/stores/workflow"; +import { type WorkflowNodeConfigForDeploy, defaultNodeConfigForDeploy } from "@/domain/workflow"; +import { useAntdForm } from "@/hooks"; +import { getAllPreviousNodes } from "../_util"; import { FormNestedFieldsContextProvider, NodeFormContextProvider } from "./_context"; import BizDeployNodeConfigFormProvider1PanelConsole from "./BizDeployNodeConfigFormProvider1PanelConsole"; import BizDeployNodeConfigFormProvider1PanelSite from "./BizDeployNodeConfigFormProvider1PanelSite"; @@ -126,13 +126,21 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp const { token: themeToken } = theme.useToken(); - const { getWorkflowOuptutBeforeId } = useWorkflowStore(useZustandShallowSelector(["updateNode", "getWorkflowOuptutBeforeId"])); - const initialValues = useMemo(() => { return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForDeploy | undefined; }, [node]); - const formSchema = getSchema({ i18n }); + const formSchema = getSchema({ i18n }).superRefine((values, ctx) => { + if (values.certificateOutputNodeId) { + if (!certificateOutputNodeIdOptions.some((option) => option.value === values.certificateOutputNodeId)) { + ctx.addIssue({ + code: "custom", + message: t("workflow_node.deploy.form.certificate_output_node_id.placeholder"), + path: ["certificateOutputNodeId"], + }); + } + } + }); const formRule = createSchemaFieldRule(formSchema); const { form: formInst, formProps } = useAntdForm({ form: props.form, @@ -142,6 +150,17 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp const fieldProvider = Form.useWatch("provider", { form: formInst, preserve: true }); + const certificateOutputNodeIdOptions = useMemo(() => { + return getAllPreviousNodes(node) + .filter((node) => node.flowNodeType === NodeType.BizApply || node.flowNodeType === NodeType.BizUpload) + .map((node) => { + return { + label: getNodeForm(node)?.getValueIn("name"), + value: node.id, + }; + }); + }, [node]); + const [showProviderAccess, setShowProviderAccess] = useState(false); useEffect(() => { // 内置的部署提供商(如本地部署)无需显示授权信息字段 @@ -153,25 +172,6 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp } }, [fieldProvider]); - // TODO: 适配 flowgram - const certificateCandidates = useMemo(() => { - const previousNodes = getWorkflowOuptutBeforeId(node.id, "certificate"); - return previousNodes - .filter((node) => node.type === WorkflowNodeType.Apply || node.type === WorkflowNodeType.Upload) - .map((item) => { - return { - label: item.name, - options: (item.outputs ?? [])?.map((output) => { - return { - label: output.label, - value: `${item.id}#${output.name}`, - }; - }), - }; - }) - .filter((group) => group.options.length > 0); - }, [node.id]); - const NestedProviderConfigFields = useMemo(() => { /* 注意:如果追加新的子组件,请保持以 ASCII 排序。 @@ -369,7 +369,6 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp const handleProviderPick = (value: string) => { formInst.setFieldValue("provider", value); - console.log(); }; const handleProviderSelect = (value?: string | undefined) => { @@ -380,7 +379,7 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp const oldValues = formInst.getFieldsValue(); const newValues: Record = {}; for (const key in oldValues) { - if (key === "provider" || key === "providerAccessId" || key === "certificate" || key === "skipOnLastSucceeded") { + if (key === "certificateOutputNodeId" || key === "provider" || key === "providerAccessId" || key === "skipOnLastSucceeded") { newValues[key] = oldValues[key]; } else { delete newValues[key]; @@ -455,22 +454,24 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp