From 5ecf0bdf0b9e2038efcab724bd9dbce29c397412 Mon Sep 17 00:00:00 2001 From: nicosammito Date: Mon, 6 Jul 2026 16:06:03 +0200 Subject: [PATCH 1/4] feat: update @code0-tech/pictor to version 0.11.0 and @code0-tech/triangulum to version 0.25.6 --- package-lock.json | 134 +++++++++++++++++++++++++++++++++++++++++++--- package.json | 4 +- 2 files changed, 128 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7fc98044..4383075e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.0", "dependencies": { "@apollo/client": "^4.0.9", - "@code0-tech/pictor": "^0.10.9", - "@code0-tech/triangulum": "^0.25.5", + "@code0-tech/pictor": "^0.11.0", + "@code0-tech/triangulum": "^0.25.6", "@codemirror/lang-javascript": "^6.2.5", "@codemirror/lint": "^6.9.5", "@icons-pack/react-simple-icons": "^13.13.0", @@ -1895,9 +1895,9 @@ } }, "node_modules/@code0-tech/pictor": { - "version": "0.10.9", - "resolved": "https://registry.npmjs.org/@code0-tech/pictor/-/pictor-0.10.9.tgz", - "integrity": "sha512-RRKNctVzNC4hagzgcEwq0IIuhB+5VcncyJEBKloayxlxZy4f+/p9TAQJSH3j1mu4bo6OBsT1hibTJZCFEGXF/g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@code0-tech/pictor/-/pictor-0.11.0.tgz", + "integrity": "sha512-W0jdkuMppCIgJl3AlCQe8V1iPPpT2rf479YD6zyzxzez0zhExa76sz1h8p6x2UgdQyyKOpY2ofWmCVYDwfLgHg==", "peerDependencies": { "@ark-ui/react": "^5.36.2", "@codemirror/autocomplete": "^6.20.0", @@ -1932,6 +1932,9 @@ "react-dom": "^18.0.0 || ^19.0.0", "react-resizable-panels": "^4.3.1", "react-zoom-pan-pinch": "^3.7.0", + "slate": "^0.124.0", + "slate-history": "^0.113.0", + "slate-react": "^0.125.0", "sonner": "^2.0.7", "zustand": ">=4.3.0 <5.0.0" } @@ -1943,9 +1946,9 @@ "peer": true }, "node_modules/@code0-tech/triangulum": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@code0-tech/triangulum/-/triangulum-0.25.5.tgz", - "integrity": "sha512-vKZg8TsVAIvFsDWYTGw8p455kGkdGTXE9gVhc+JWGi8r7/dTsC3YEmURcv9izMYa510Zabtpc/1Ry1WN7A606Q==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@code0-tech/triangulum/-/triangulum-0.25.6.tgz", + "integrity": "sha512-xCaaFafZyuGKYAzZ3J1W40FrTK0nKY+M25eVQQKEoxmJH5BN5LT6BYB8R3GbMESroGNKuEHibFcyLyzhqV2YLQ==", "peerDependencies": { "@code0-tech/sagittarius-graphql-types": "0.0.0-experimental-2616186698-14d97e4ac998067751f9cbd9f8fc05c6fed628fe", "@typescript/vfs": "^1.6.4", @@ -2903,6 +2906,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "license": "Apache-2.0" + }, "node_modules/@lezer/common": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.1.tgz", @@ -7802,6 +7811,12 @@ "node": ">= 10" } }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -8231,6 +8246,19 @@ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, + "node_modules/direction": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -9914,6 +9942,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-hotkey": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz", + "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==", + "license": "MIT" + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -9967,6 +10001,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -11529,6 +11572,15 @@ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -11755,6 +11807,66 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/slate": { + "version": "0.124.1", + "resolved": "https://registry.npmjs.org/slate/-/slate-0.124.1.tgz", + "integrity": "sha512-ii7DwezgvbLAyKtHBIunjTR1kzbNfYLCUKLMzJELlbTZkvHzX4DzN7HKIwcakf6dPxO6AoeT/P7kHOcyTym/hA==", + "license": "MIT", + "peer": true + }, + "node_modules/slate-dom": { + "version": "0.124.1", + "resolved": "https://registry.npmjs.org/slate-dom/-/slate-dom-0.124.1.tgz", + "integrity": "sha512-D3yVibjLZM4Oj4MmXxOEXbjrlf4wJez3OvGABBNYrAP7gXb0d96tKNtWZ0hGm/5y84idw/LHjZ7W1uTYqFR9rQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@juggle/resize-observer": "^3.4.0", + "direction": "^1.0.4", + "is-hotkey": "^0.2.0", + "is-plain-object": "^5.0.0", + "lodash": "^4.17.21", + "scroll-into-view-if-needed": "^3.1.0", + "tiny-invariant": "1.3.1" + }, + "peerDependencies": { + "slate": ">=0.121.0" + } + }, + "node_modules/slate-history": { + "version": "0.113.1", + "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.113.1.tgz", + "integrity": "sha512-J9NSJ+UG2GxoW0lw5mloaKcN0JI0x2IA5M5FxyGiInpn+QEutxT1WK7S/JneZCMFJBoHs1uu7S7e6pxQjubHmQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "is-plain-object": "^5.0.0" + }, + "peerDependencies": { + "slate": ">=0.65.3" + } + }, + "node_modules/slate-react": { + "version": "0.125.1", + "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.125.1.tgz", + "integrity": "sha512-Cb9CROi4zp/p+a+f94srWPRhVCxTqQ+78ExSN7EBN/XoYf6GjGwafKtyTjpZCbr6OLY+raeDC+s3Rgxf1MFiEw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@juggle/resize-observer": "^3.4.0", + "direction": "^1.0.4", + "is-hotkey": "^0.2.0", + "lodash": "^4.17.21", + "scroll-into-view-if-needed": "^3.1.0", + "tiny-invariant": "1.3.1" + }, + "peerDependencies": { + "react": ">=18.2.0", + "react-dom": ">=18.2.0", + "slate": ">=0.121.0", + "slate-dom": ">=0.119.1" + } + }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -12005,6 +12117,12 @@ "url": "https://opencollective.com/svgo" } }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", diff --git a/package.json b/package.json index 3b04fd7e..f9d31dd4 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ }, "dependencies": { "@apollo/client": "^4.0.9", - "@code0-tech/pictor": "^0.10.9", - "@code0-tech/triangulum": "^0.25.5", + "@code0-tech/pictor": "^0.11.0", + "@code0-tech/triangulum": "^0.25.6", "@codemirror/lang-javascript": "^6.2.5", "@codemirror/lint": "^6.9.5", "@icons-pack/react-simple-icons": "^13.13.0", From ad8165aed9eed4e9cb3ef8ade5f3def48b3c0610 Mon Sep 17 00:00:00 2001 From: nicosammito Date: Mon, 6 Jul 2026 16:06:10 +0200 Subject: [PATCH 2/4] feat: update NEXT_PUBLIC_PICTOR_VERSION to 0.11.0 in .env.local --- .env.local | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.local b/.env.local index 9b6bf92f..b9f698b6 100644 --- a/.env.local +++ b/.env.local @@ -5,7 +5,7 @@ SAGITTARIUS_GRAPHQL_URL=http://localhost:80/graphql SAGITTARIUS_CABLE_URL=http://localhost:80/cable NEXT_PUBLIC_SCULPTOR_VERSION=0.0.0 -NEXT_PUBLIC_PICTOR_VERSION=0.10.9 +NEXT_PUBLIC_PICTOR_VERSION=0.11.0 NEXT_PUBLIC_ALLOWED_REDIRECT_DOMAINS=*.code0.tech,*.codezero.build NEXT_PUBLIC_OTEL_SERVICE_NAME=#"sculptor-client" From ebc575cb924a676968372bb4adf7b024ccf40151 Mon Sep 17 00:00:00 2001 From: nicosammito Date: Mon, 6 Jul 2026 16:06:19 +0200 Subject: [PATCH 3/4] feat: remove unused language support from input components --- .../ce/src/ai/components/AIChatComponent.tsx | 8 +------- .../inputs/number/DataTypeNumberInputComponent.tsx | 13 +------------ .../inputs/text/DataTypeTextInputComponent.tsx | 13 +------------ 3 files changed, 3 insertions(+), 31 deletions(-) diff --git a/src/packages/ce/src/ai/components/AIChatComponent.tsx b/src/packages/ce/src/ai/components/AIChatComponent.tsx index e8ee2f5c..9af5d1c5 100644 --- a/src/packages/ce/src/ai/components/AIChatComponent.tsx +++ b/src/packages/ce/src/ai/components/AIChatComponent.tsx @@ -178,13 +178,7 @@ export const AIChatComponent: React.FC = (props) => { boxShadow: "none" } }} - placeholder={"Describe what you want to edit..."} - language={StreamLanguage.define({ - token(stream) { - stream.next() - return null; - } - })}/> + placeholder={"Describe what you want to edit..."}/> ) } diff --git a/src/packages/ce/src/datatype/components/inputs/number/DataTypeNumberInputComponent.tsx b/src/packages/ce/src/datatype/components/inputs/number/DataTypeNumberInputComponent.tsx index 5a7f0876..aea17860 100644 --- a/src/packages/ce/src/datatype/components/inputs/number/DataTypeNumberInputComponent.tsx +++ b/src/packages/ce/src/datatype/components/inputs/number/DataTypeNumberInputComponent.tsx @@ -1,8 +1,6 @@ import React from "react"; import {DataTypeInputComponentProps} from "../DataTypeInputComponent"; -import {EditorInput, hashToColor, InputDescription, InputLabel} from "@code0-tech/pictor"; -import {StreamLanguage} from "@codemirror/language"; -import {tags} from "@lezer/highlight"; +import {EditorInput, InputDescription, InputLabel} from "@code0-tech/pictor"; import {useDebouncedCallback} from "use-debounce"; import { LiteralValue, @@ -55,15 +53,6 @@ export const DataTypeNumberInputComponent: React.FC { formValidation?.setValue?.(value) diff --git a/src/packages/ce/src/datatype/components/inputs/text/DataTypeTextInputComponent.tsx b/src/packages/ce/src/datatype/components/inputs/text/DataTypeTextInputComponent.tsx index 8b776f10..2deced95 100644 --- a/src/packages/ce/src/datatype/components/inputs/text/DataTypeTextInputComponent.tsx +++ b/src/packages/ce/src/datatype/components/inputs/text/DataTypeTextInputComponent.tsx @@ -1,8 +1,6 @@ import React from "react"; import {DataTypeInputComponentProps} from "../DataTypeInputComponent"; -import {EditorInput, hashToColor, InputDescription, InputLabel} from "@code0-tech/pictor"; -import {StreamLanguage} from "@codemirror/language"; -import {tags} from "@lezer/highlight"; +import {EditorInput, InputDescription, InputLabel} from "@code0-tech/pictor"; import {useDebouncedCallback} from "use-debounce"; import { LiteralValue, @@ -48,15 +46,6 @@ export const DataTypeTextInputComponent: React.FC { formValidation?.setValue?.(value) From 6710b5407941626d7b414a3bb35ad3a08b460778 Mon Sep 17 00:00:00 2001 From: nicosammito Date: Mon, 6 Jul 2026 16:06:24 +0200 Subject: [PATCH 4/4] feat: optimize rendering logic in DataTypeInputComponent using React.memo --- .../inputs/DataTypeInputComponent.tsx | 91 ++++++++++--------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/src/packages/ce/src/datatype/components/inputs/DataTypeInputComponent.tsx b/src/packages/ce/src/datatype/components/inputs/DataTypeInputComponent.tsx index 447f2b2c..e1d3804a 100644 --- a/src/packages/ce/src/datatype/components/inputs/DataTypeInputComponent.tsx +++ b/src/packages/ce/src/datatype/components/inputs/DataTypeInputComponent.tsx @@ -34,48 +34,53 @@ export const DataTypeInputComponent: React.FC = (pr const suggestions = "schema" in (schema ?? {}) ? (schema as NodeSchema)?.schema?.suggestions as (NodeFunction | ReferenceValue | LiteralValue)[] : [] const inputName = "schema" in (schema ?? {}) ? (schema as NodeSchema)?.schema?.input : (schema as Schema)?.input - if ("schema" in (schema ?? {}) && (((schema as NodeSchema).blockedBy?.length ?? 0) > 0) && (rest.formValidation?.valid ?? false)) { - return null - } + return React.useMemo( + () => { + if ("schema" in (schema ?? {}) && (((schema as NodeSchema).blockedBy?.length ?? 0) > 0) && (rest.formValidation?.valid ?? false)) { + return null + } - switch (inputName) { - case "boolean": - return - case "select": - return - case "number": - return - case "list": - case "data": - return - case "generic": - return - case "sub-flow": - return - default: - return - } + switch (inputName) { + case "boolean": + return + case "select": + return + case "number": + return + case "list": + case "data": + return + case "generic": + return + case "sub-flow": + return + default: + return + } + }, + [rest.initialValue, inputName, suggestions?.length ?? 0, rest.formValidation?.valid ?? true, rest.formValidation?.notValidMessage ?? ""] + ) } \ No newline at end of file