From 236dad75e6c316731d87c83082033a4061ed802a Mon Sep 17 00:00:00 2001 From: whyour Date: Mon, 24 Nov 2025 01:49:59 +0800 Subject: [PATCH] support flowgram --- package.json | 22 +- pnpm-lock.yaml | 3687 +++++++++++++++-- src/layouts/index.less | 1 + .../scenario/flowgram/FlowgramEditor.tsx | 58 - .../scenario/flowgram/assets/icon-break.svg | 1 + .../scenario/flowgram/assets/icon-case.png | Bin 0 -> 2293 bytes .../flowgram/assets/icon-condition.svg | 9 + .../scenario/flowgram/assets/icon-end.jpg | Bin 0 -> 21016 bytes .../scenario/flowgram/assets/icon-if.png | Bin 0 -> 1940 bytes .../scenario/flowgram/assets/icon-llm.jpg | Bin 0 -> 11089 bytes .../scenario/flowgram/assets/icon-loop.svg | 9 + .../scenario/flowgram/assets/icon-memory.svg | 11 + .../scenario/flowgram/assets/icon-mouse.tsx | 36 + .../scenario/flowgram/assets/icon-pad.tsx | 51 + .../flowgram/assets/icon-parallel.svg | 6 + .../scenario/flowgram/assets/icon-robot.svg | 10 + .../scenario/flowgram/assets/icon-start.jpg | Bin 0 -> 20971 bytes .../scenario/flowgram/assets/icon-tool.svg | 11 + .../flowgram/assets/icon-trycatch.svg | 9 + .../flowgram/assets/icon-variable.png | Bin 0 -> 3430 bytes .../flowgram/components/agent-adder/index.tsx | 65 + .../flowgram/components/agent-label/index.tsx | 41 + .../flowgram/components/base-node/index.tsx | 69 + .../flowgram/components/base-node/styles.tsx | 33 + .../components/branch-adder/index.tsx | 58 + .../components/branch-adder/styles.tsx | 24 + .../flowgram/components/drag-node/index.tsx | 54 + .../flowgram/components/drag-node/styles.tsx | 35 + .../scenario/flowgram/components/index.ts | 3 + .../scenario/flowgram/components/minimap.tsx | 22 - .../flowgram/components/node-adder/index.tsx | 162 + .../flowgram/components/node-adder/styles.tsx | 24 + .../flowgram/components/node-adder/utils.ts | 4 + .../flowgram/components/node-list.tsx | 69 + .../flowgram/components/node-panel/index.tsx | 93 - .../components/node-panel/styles.less | 77 - .../components/selector-box-popover/index.tsx | 158 + .../flowgram/components/sidebar/index.tsx | 1 + .../sidebar/sidebar-node-renderer.tsx | 24 + .../components/sidebar/sidebar-renderer.tsx | 90 + .../components/tools/add-node-dropdown.tsx | 93 - .../flowgram/components/tools/fit-view.tsx | 11 + .../flowgram/components/tools/index.tsx | 75 +- .../flowgram/components/tools/interactive.tsx | 90 + .../components/tools/minimap-switch.tsx | 26 + .../flowgram/components/tools/minimap.tsx | 30 + .../components/tools/mouse-pad-selector.less | 112 + .../components/tools/mouse-pad-selector.tsx | 116 + .../flowgram/components/tools/readonly.tsx | 18 + .../flowgram/components/tools/run.tsx | 108 + .../flowgram/components/tools/save.tsx | 56 + .../flowgram/components/tools/styles.tsx | 32 +- .../components/tools/switch-vertical.tsx | 23 + .../flowgram/components/tools/zoom-select.tsx | 76 +- src/pages/scenario/flowgram/context/index.ts | 2 + .../flowgram/context/node-render-context.ts | 5 + .../flowgram/context/sidebar-context.ts | 3 + src/pages/scenario/flowgram/editor.less | 34 - src/pages/scenario/flowgram/editor.tsx | 33 + .../flowgram/form-components/feedback.tsx | 34 + .../form-components/form-content/index.tsx | 24 + .../form-components/form-content/styles.tsx | 21 + .../form-components/form-header/index.tsx | 120 + .../form-components/form-header/styles.tsx | 35 + .../form-header/title-input.tsx | 45 + .../form-components/form-header/utils.tsx | 10 + .../form-components/form-inputs/index.tsx | 63 + .../form-components/form-item/index.css | 10 + .../form-components/form-item/index.tsx | 82 + .../form-components/form-outputs/index.tsx | 11 + .../form-components/form-outputs/styles.tsx | 14 + .../flowgram/form-components/index.ts | 7 + .../form-components/properties-edit/index.tsx | 140 + .../properties-edit/property-edit.tsx | 76 + .../properties-edit/styles.tsx | 15 + src/pages/scenario/flowgram/hooks/index.ts | 3 + .../scenario/flowgram/hooks/use-add-node.ts | 110 - .../flowgram/hooks/use-editor-props.ts | 290 ++ .../flowgram/hooks/use-editor-props.tsx | 45 - .../scenario/flowgram/hooks/use-is-sidebar.ts | 7 + .../flowgram/hooks/use-node-render-context.ts | 7 + src/pages/scenario/flowgram/initial-data.ts | 377 ++ .../flowgram/nodes/agent/agent-llm.ts | 17 + .../flowgram/nodes/agent/agent-memory.ts | 16 + .../flowgram/nodes/agent/agent-tools.ts | 33 + .../scenario/flowgram/nodes/agent/agent.ts | 52 + .../scenario/flowgram/nodes/agent/index.ts | 15 + .../scenario/flowgram/nodes/agent/memory.ts | 31 + .../scenario/flowgram/nodes/agent/tool.ts | 30 + .../flowgram/nodes/break-loop/form-meta.tsx | 13 + .../flowgram/nodes/break-loop/index.ts | 42 + .../flowgram/nodes/case-default/form-meta.tsx | 32 + .../flowgram/nodes/case-default/index.ts | 31 + .../flowgram/nodes/case/form-meta.tsx | 32 + .../scenario/flowgram/nodes/case/index.ts | 46 + .../flowgram/nodes/catch-block/form-meta.tsx | 32 + .../flowgram/nodes/catch-block/index.ts | 42 + .../flowgram/nodes/condition/index.tsx | 29 - .../scenario/flowgram/nodes/constants.ts | 12 - .../flowgram/nodes/default-form-meta.tsx | 70 + .../scenario/flowgram/nodes/delay/index.tsx | 29 - .../scenario/flowgram/nodes/end/form-meta.tsx | 56 + .../scenario/flowgram/nodes/end/index.ts | 76 + .../scenario/flowgram/nodes/end/index.tsx | 26 - .../scenario/flowgram/nodes/http/index.tsx | 47 - .../flowgram/nodes/if-block/form-meta.tsx | 28 + .../scenario/flowgram/nodes/if-block/index.ts | 30 + src/pages/scenario/flowgram/nodes/if/index.ts | 57 + src/pages/scenario/flowgram/nodes/index.ts | 44 +- .../scenario/flowgram/nodes/llm/index.ts | 76 + .../flowgram/nodes/loop/form-meta.tsx | 65 + .../scenario/flowgram/nodes/loop/index.ts | 27 + .../scenario/flowgram/nodes/loop/index.tsx | 29 - .../scenario/flowgram/nodes/script/index.tsx | 30 - .../flowgram/nodes/start/form-meta.tsx | 60 + .../scenario/flowgram/nodes/start/index.ts | 24 + .../scenario/flowgram/nodes/start/index.tsx | 26 - .../scenario/flowgram/nodes/switch/index.ts | 78 + .../flowgram/nodes/trycatch/form-meta.tsx | 21 + .../scenario/flowgram/nodes/trycatch/index.ts | 53 + .../create-clipboard-plugin.ts | 24 + .../plugins/group-plugin/group-box-header.tsx | 47 + .../plugins/group-plugin/group-node.tsx | 63 + .../plugins/group-plugin/group-note.tsx | 85 + .../plugins/group-plugin/group-tools.tsx | 132 + .../plugins/group-plugin/icons/index.tsx | 30 + .../flowgram/plugins/group-plugin/index.ts | 2 + .../base-textarea.tsx | 59 + .../multilang-textarea-editor/index.css | 13 + .../multilang-textarea-editor/index.tsx | 82 + src/pages/scenario/flowgram/plugins/index.ts | 1 + .../plugins/tools-plugin/DemoTools.tsx | 256 -- .../flowgram/plugins/tools-plugin/index.tsx | 10 - .../flowgram/plugins/tools-plugin/styles.less | 108 - .../flowgram/services/custom-service.ts | 42 + src/pages/scenario/flowgram/services/index.ts | 1 + .../scenario/flowgram/shortcuts/constants.ts | 15 + .../scenario/flowgram/shortcuts/index.ts | 239 ++ .../scenario/flowgram/shortcuts/utils.ts | 51 + src/pages/scenario/flowgram/typings/index.ts | 2 + .../scenario/flowgram/typings/json-schema.ts | 4 + src/pages/scenario/flowgram/typings/node.ts | 66 + src/pages/scenario/workflowEditorModal.tsx | 27 +- 143 files changed, 8581 insertions(+), 1751 deletions(-) delete mode 100644 src/pages/scenario/flowgram/FlowgramEditor.tsx create mode 100644 src/pages/scenario/flowgram/assets/icon-break.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-case.png create mode 100644 src/pages/scenario/flowgram/assets/icon-condition.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-end.jpg create mode 100644 src/pages/scenario/flowgram/assets/icon-if.png create mode 100644 src/pages/scenario/flowgram/assets/icon-llm.jpg create mode 100644 src/pages/scenario/flowgram/assets/icon-loop.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-memory.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-mouse.tsx create mode 100644 src/pages/scenario/flowgram/assets/icon-pad.tsx create mode 100644 src/pages/scenario/flowgram/assets/icon-parallel.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-robot.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-start.jpg create mode 100644 src/pages/scenario/flowgram/assets/icon-tool.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-trycatch.svg create mode 100644 src/pages/scenario/flowgram/assets/icon-variable.png create mode 100644 src/pages/scenario/flowgram/components/agent-adder/index.tsx create mode 100644 src/pages/scenario/flowgram/components/agent-label/index.tsx create mode 100644 src/pages/scenario/flowgram/components/base-node/index.tsx create mode 100644 src/pages/scenario/flowgram/components/base-node/styles.tsx create mode 100644 src/pages/scenario/flowgram/components/branch-adder/index.tsx create mode 100644 src/pages/scenario/flowgram/components/branch-adder/styles.tsx create mode 100644 src/pages/scenario/flowgram/components/drag-node/index.tsx create mode 100644 src/pages/scenario/flowgram/components/drag-node/styles.tsx create mode 100644 src/pages/scenario/flowgram/components/index.ts delete mode 100644 src/pages/scenario/flowgram/components/minimap.tsx create mode 100644 src/pages/scenario/flowgram/components/node-adder/index.tsx create mode 100644 src/pages/scenario/flowgram/components/node-adder/styles.tsx create mode 100644 src/pages/scenario/flowgram/components/node-adder/utils.ts create mode 100644 src/pages/scenario/flowgram/components/node-list.tsx delete mode 100644 src/pages/scenario/flowgram/components/node-panel/index.tsx delete mode 100644 src/pages/scenario/flowgram/components/node-panel/styles.less create mode 100644 src/pages/scenario/flowgram/components/selector-box-popover/index.tsx create mode 100644 src/pages/scenario/flowgram/components/sidebar/index.tsx create mode 100644 src/pages/scenario/flowgram/components/sidebar/sidebar-node-renderer.tsx create mode 100644 src/pages/scenario/flowgram/components/sidebar/sidebar-renderer.tsx delete mode 100644 src/pages/scenario/flowgram/components/tools/add-node-dropdown.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/fit-view.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/interactive.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/minimap-switch.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/minimap.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/mouse-pad-selector.less create mode 100644 src/pages/scenario/flowgram/components/tools/mouse-pad-selector.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/readonly.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/run.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/save.tsx create mode 100644 src/pages/scenario/flowgram/components/tools/switch-vertical.tsx create mode 100644 src/pages/scenario/flowgram/context/index.ts create mode 100644 src/pages/scenario/flowgram/context/node-render-context.ts create mode 100644 src/pages/scenario/flowgram/context/sidebar-context.ts delete mode 100644 src/pages/scenario/flowgram/editor.less create mode 100644 src/pages/scenario/flowgram/editor.tsx create mode 100644 src/pages/scenario/flowgram/form-components/feedback.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-content/index.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-content/styles.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-header/index.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-header/styles.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-header/title-input.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-header/utils.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-inputs/index.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-item/index.css create mode 100644 src/pages/scenario/flowgram/form-components/form-item/index.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-outputs/index.tsx create mode 100644 src/pages/scenario/flowgram/form-components/form-outputs/styles.tsx create mode 100644 src/pages/scenario/flowgram/form-components/index.ts create mode 100644 src/pages/scenario/flowgram/form-components/properties-edit/index.tsx create mode 100644 src/pages/scenario/flowgram/form-components/properties-edit/property-edit.tsx create mode 100644 src/pages/scenario/flowgram/form-components/properties-edit/styles.tsx create mode 100644 src/pages/scenario/flowgram/hooks/index.ts delete mode 100644 src/pages/scenario/flowgram/hooks/use-add-node.ts create mode 100644 src/pages/scenario/flowgram/hooks/use-editor-props.ts delete mode 100644 src/pages/scenario/flowgram/hooks/use-editor-props.tsx create mode 100644 src/pages/scenario/flowgram/hooks/use-is-sidebar.ts create mode 100644 src/pages/scenario/flowgram/hooks/use-node-render-context.ts create mode 100644 src/pages/scenario/flowgram/initial-data.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/agent-llm.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/agent-memory.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/agent-tools.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/agent.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/memory.ts create mode 100644 src/pages/scenario/flowgram/nodes/agent/tool.ts create mode 100644 src/pages/scenario/flowgram/nodes/break-loop/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/break-loop/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/case-default/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/case-default/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/case/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/case/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/catch-block/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/catch-block/index.ts delete mode 100644 src/pages/scenario/flowgram/nodes/condition/index.tsx delete mode 100644 src/pages/scenario/flowgram/nodes/constants.ts create mode 100644 src/pages/scenario/flowgram/nodes/default-form-meta.tsx delete mode 100644 src/pages/scenario/flowgram/nodes/delay/index.tsx create mode 100644 src/pages/scenario/flowgram/nodes/end/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/end/index.ts delete mode 100644 src/pages/scenario/flowgram/nodes/end/index.tsx delete mode 100644 src/pages/scenario/flowgram/nodes/http/index.tsx create mode 100644 src/pages/scenario/flowgram/nodes/if-block/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/if-block/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/if/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/llm/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/loop/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/loop/index.ts delete mode 100644 src/pages/scenario/flowgram/nodes/loop/index.tsx delete mode 100644 src/pages/scenario/flowgram/nodes/script/index.tsx create mode 100644 src/pages/scenario/flowgram/nodes/start/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/start/index.ts delete mode 100644 src/pages/scenario/flowgram/nodes/start/index.tsx create mode 100644 src/pages/scenario/flowgram/nodes/switch/index.ts create mode 100644 src/pages/scenario/flowgram/nodes/trycatch/form-meta.tsx create mode 100644 src/pages/scenario/flowgram/nodes/trycatch/index.ts create mode 100644 src/pages/scenario/flowgram/plugins/clipboard-plugin/create-clipboard-plugin.ts create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/group-box-header.tsx create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/group-node.tsx create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/group-note.tsx create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/group-tools.tsx create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/icons/index.tsx create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/index.ts create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/multilang-textarea-editor/base-textarea.tsx create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/multilang-textarea-editor/index.css create mode 100644 src/pages/scenario/flowgram/plugins/group-plugin/multilang-textarea-editor/index.tsx create mode 100644 src/pages/scenario/flowgram/plugins/index.ts delete mode 100644 src/pages/scenario/flowgram/plugins/tools-plugin/DemoTools.tsx delete mode 100644 src/pages/scenario/flowgram/plugins/tools-plugin/index.tsx delete mode 100644 src/pages/scenario/flowgram/plugins/tools-plugin/styles.less create mode 100644 src/pages/scenario/flowgram/services/custom-service.ts create mode 100644 src/pages/scenario/flowgram/services/index.ts create mode 100644 src/pages/scenario/flowgram/shortcuts/constants.ts create mode 100644 src/pages/scenario/flowgram/shortcuts/index.ts create mode 100644 src/pages/scenario/flowgram/shortcuts/utils.ts create mode 100644 src/pages/scenario/flowgram/typings/index.ts create mode 100644 src/pages/scenario/flowgram/typings/json-schema.ts create mode 100644 src/pages/scenario/flowgram/typings/node.ts diff --git a/package.json b/package.json index 1ff0b727..d788aad5 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,10 @@ } }, "overrides": { - "sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3" + "sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3", + "@codemirror/state": "^6", + "@codemirror/view": "^6", + "@codemirror/language": "^6" } }, "dependencies": { @@ -105,17 +108,12 @@ "@ant-design/pro-layout": "6.38.22", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.34.1", - "@flowgram.ai/free-container-plugin": "1.0.2", - "@flowgram.ai/free-group-plugin": "1.0.2", - "@flowgram.ai/free-layout-editor": "1.0.2", - "@flowgram.ai/free-lines-plugin": "1.0.2", - "@flowgram.ai/free-node-panel-plugin": "1.0.2", - "@flowgram.ai/free-snap-plugin": "1.0.2", - "@flowgram.ai/free-stack-plugin": "1.0.2", - "@flowgram.ai/history-node-plugin": "1.0.2", + "@flowgram.ai/fixed-layout-editor": "1.0.2", + "@flowgram.ai/form-materials": "1.0.2", + "@flowgram.ai/fixed-semi-materials": "1.0.2", + "@flowgram.ai/group-plugin": "1.0.2", "@flowgram.ai/minimap-plugin": "1.0.2", "@flowgram.ai/panel-manager-plugin": "1.0.2", - "@flowgram.ai/runtime-interface": "1.0.2", "@monaco-editor/react": "4.2.1", "@react-hook/resize-observer": "^2.0.2", "@types/body-parser": "^1.19.2", @@ -156,6 +154,7 @@ "axios": "^1.4.0", "compression-webpack-plugin": "9.2.0", "concurrently": "^7.0.0", + "classnames": "^2.5.1", "file-saver": "2.0.2", "lint-staged": "^13.0.3", "lodash-es": "^4.17.21", @@ -181,6 +180,7 @@ "react-router-dom": "6.26.1", "react-split-pane": "^0.1.92", "sockjs-client": "^1.6.0", + "styled-components": "^5.3.10", "ts-node": "^10.9.2", "ts-proto": "^2.6.1", "tslib": "^2.4.0", @@ -188,4 +188,4 @@ "vh-check": "^2.0.5", "virtualizedtableforantd4": "1.3.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e58bf943..a33b0767 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7 +1,14 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + overrides: sqlite3: git+https://github.com/whyour/node-sqlite3.git#v1.0.3 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@codemirror/language': ^6 dependencies: '@bufbuild/protobuf': @@ -145,33 +152,21 @@ devDependencies: specifier: 6.38.22 version: 6.38.22(prop-types@15.8.1)(react-dom@18.3.1)(react@18.3.1) '@codemirror/state': - specifier: ^6.4.1 - version: 6.4.1 + specifier: ^6 + version: 6.5.2 '@codemirror/view': - specifier: ^6.34.1 - version: 6.35.0 - '@flowgram.ai/free-container-plugin': + specifier: ^6 + version: 6.38.8 + '@flowgram.ai/fixed-layout-editor': specifier: 1.0.2 version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-group-plugin': + '@flowgram.ai/fixed-semi-materials': specifier: 1.0.2 - version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-editor': + version: 1.0.2(@floating-ui/dom@1.7.4)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@5.3.11) + '@flowgram.ai/form-materials': specifier: 1.0.2 - version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-lines-plugin': - specifier: 1.0.2 - version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-node-panel-plugin': - specifier: 1.0.2 - version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-snap-plugin': - specifier: 1.0.2 - version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-stack-plugin': - specifier: 1.0.2 - version: 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/history-node-plugin': + version: 1.0.2(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/merge@6.11.2)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@floating-ui/dom@1.7.4)(@lezer/common@1.2.3)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@5.3.11)(vue@3.5.24) + '@flowgram.ai/group-plugin': specifier: 1.0.2 version: 1.0.2(react-dom@18.3.1)(react@18.3.1) '@flowgram.ai/minimap-plugin': @@ -180,9 +175,6 @@ devDependencies: '@flowgram.ai/panel-manager-plugin': specifier: 1.0.2 version: 1.0.2(react-dom@18.3.1)(react@18.3.1)(reflect-metadata@0.2.2) - '@flowgram.ai/runtime-interface': - specifier: 1.0.2 - version: 1.0.2 '@monaco-editor/react': specifier: 4.2.1 version: 4.2.1(monaco-editor@0.33.0)(react-dom@18.3.1)(react@18.3.1) @@ -272,10 +264,10 @@ devDependencies: version: 8.3.4 '@uiw/codemirror-extensions-langs': specifier: ^4.21.9 - version: 4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/language-data@6.5.1)(@codemirror/language@6.10.6)(@codemirror/legacy-modes@6.4.2)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2) + version: 4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/language-data@6.5.1)(@codemirror/language@6.11.3)(@codemirror/legacy-modes@6.4.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2) '@uiw/react-codemirror': specifier: ^4.21.9 - version: 4.23.6(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.10.6)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.35.0)(codemirror@6.0.1)(react-dom@18.3.1)(react@18.3.1) + version: 4.23.6(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.38.8)(codemirror@6.0.1)(react-dom@18.3.1)(react@18.3.1) '@umijs/max': specifier: ^4.4.4 version: 4.4.4(@types/node@17.0.45)(@types/react-dom@18.3.1)(@types/react@18.3.12)(prettier@2.8.8)(react-dom@18.3.1)(react@18.3.1)(sockjs-client@1.6.1)(typescript@5.2.2) @@ -297,6 +289,9 @@ devDependencies: axios: specifier: ^1.4.0 version: 1.7.8 + classnames: + specifier: ^2.5.1 + version: 2.5.1 compression-webpack-plugin: specifier: 9.2.0 version: 9.2.0 @@ -378,6 +373,9 @@ devDependencies: sockjs-client: specifier: ^1.6.0 version: 1.6.1 + styled-components: + specifier: ^5.3.10 + version: 5.3.11(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@17.0.45)(typescript@5.2.2) @@ -969,7 +967,7 @@ packages: '@babel/helpers': 7.26.0 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 convert-source-map: 2.0.0 debug: 4.3.7(supports-color@5.5.0) @@ -992,7 +990,7 @@ packages: '@babel/helpers': 7.26.0 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 convert-source-map: 2.0.0 debug: 4.3.7(supports-color@5.5.0) @@ -1061,11 +1059,11 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-module-imports@7.25.9: + /@babel/helper-module-imports@7.25.9(supports-color@5.5.0): resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -1081,9 +1079,9 @@ packages: optional: true dependencies: '@babel/core': 7.23.6 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -1098,9 +1096,9 @@ packages: optional: true dependencies: '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -1114,7 +1112,7 @@ packages: resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -1125,11 +1123,21 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-string-parser@7.27.1: + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.25.9: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} dev: true + /@babel/helper-validator-identifier@7.28.5: + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option@7.25.9: resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -1151,6 +1159,14 @@ packages: '@babel/types': 7.26.0 dev: true + /@babel/parser@7.28.5: + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.28.5 + dev: true + /@babel/plugin-syntax-async-generators@7.8.4: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1397,7 +1413,7 @@ packages: '@babel/types': 7.26.0 dev: true - /@babel/traverse@7.25.9: + /@babel/traverse@7.25.9(supports-color@5.5.0): resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} dependencies: @@ -1420,6 +1436,14 @@ packages: '@babel/helper-validator-identifier': 7.25.9 dev: true + /@babel/types@7.28.5: + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + dev: true + /@bloomberg/record-tuple-polyfill@0.0.4: resolution: {integrity: sha512-h0OYmPR3A5Dfbetra/GzxBAzQk8sH7LhRkRUTdagX6nrtlUgJGYCTv4bBK33jsTQw9HDd8PE2x1Ma+iRKEDUsw==} dev: true @@ -1440,26 +1464,40 @@ packages: tinycolor2: 1.6.0 dev: true - /@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3): + /@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==} peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 '@lezer/common': ^1.0.0 dependencies: - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.2.3 + dev: true + + /@codemirror/autocomplete@6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==} + peerDependencies: + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 dev: true /@codemirror/commands@6.7.1: resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==} dependencies: - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 dev: true @@ -1468,7 +1506,7 @@ packages: dependencies: '@codemirror/lang-html': 6.4.9 '@codemirror/lang-javascript': 6.2.2 - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1477,28 +1515,28 @@ packages: /@codemirror/lang-cpp@6.0.2: resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/cpp': 1.1.2 dev: true - /@codemirror/lang-css@6.3.1(@codemirror/view@6.35.0): + /@codemirror/lang-css@6.3.1(@codemirror/view@6.38.8): resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/css': 1.1.9 transitivePeerDependencies: - '@codemirror/view' dev: true - /@codemirror/lang-go@6.0.1(@codemirror/view@6.35.0): + /@codemirror/lang-go@6.0.1(@codemirror/view@6.38.8): resolution: {integrity: sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/go': 1.0.0 transitivePeerDependencies: @@ -1508,12 +1546,12 @@ packages: /@codemirror/lang-html@6.4.9: resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/lang-css': 6.3.1(@codemirror/view@6.35.0) + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/lang-css': 6.3.1(@codemirror/view@6.38.8) '@codemirror/lang-javascript': 6.2.2 - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/css': 1.1.9 '@lezer/html': 1.3.10 @@ -1522,18 +1560,18 @@ packages: /@codemirror/lang-java@6.0.1: resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/java': 1.1.3 dev: true /@codemirror/lang-javascript@6.2.2: resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.0 '@codemirror/lint': 6.8.4 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/javascript': 1.4.21 dev: true @@ -1541,15 +1579,15 @@ packages: /@codemirror/lang-json@6.0.1: resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/json': 1.0.2 dev: true - /@codemirror/lang-less@6.0.2(@codemirror/view@6.35.0): + /@codemirror/lang-less@6.0.2(@codemirror/view@6.38.8): resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==} dependencies: - '@codemirror/lang-css': 6.3.1(@codemirror/view@6.35.0) - '@codemirror/language': 6.10.6 + '@codemirror/lang-css': 6.3.1(@codemirror/view@6.38.8) + '@codemirror/language': 6.10.0 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1560,8 +1598,8 @@ packages: /@codemirror/lang-lezer@6.0.1: resolution: {integrity: sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ==} dependencies: - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/lezer': 1.1.2 dev: true @@ -1569,11 +1607,11 @@ packages: /@codemirror/lang-liquid@6.2.2: resolution: {integrity: sha512-7Dm841fk37+JQW6j2rI1/uGkJyESrjzyhiIkaLjbbR0U6aFFQvMrJn35WxQreRMADMhzkyVkZM4467OR7GR8nQ==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) '@codemirror/lang-html': 6.4.9 - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1582,11 +1620,11 @@ packages: /@codemirror/lang-markdown@6.3.1: resolution: {integrity: sha512-y3sSPuQjBKZQbQwe3ZJKrSW6Silyl9PnrU/Mf0m2OQgIlPoSYTtOvEL7xs94SVMkb8f4x+SQFnzXPdX4Wk2lsg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) '@codemirror/lang-html': 6.4.9 - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/markdown': 1.3.2 dev: true @@ -1595,18 +1633,18 @@ packages: resolution: {integrity: sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==} dependencies: '@codemirror/lang-html': 6.4.9 - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/php': 1.0.2 dev: true - /@codemirror/lang-python@6.1.6(@codemirror/view@6.35.0): + /@codemirror/lang-python@6.1.6(@codemirror/view@6.38.8): resolution: {integrity: sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/python': 1.1.14 transitivePeerDependencies: @@ -1616,28 +1654,41 @@ packages: /@codemirror/lang-rust@6.0.1: resolution: {integrity: sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/rust': 1.0.2 dev: true - /@codemirror/lang-sass@6.0.2(@codemirror/view@6.35.0): + /@codemirror/lang-sass@6.0.2(@codemirror/view@6.38.8): resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==} dependencies: - '@codemirror/lang-css': 6.3.1(@codemirror/view@6.35.0) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/lang-css': 6.3.1(@codemirror/view@6.38.8) + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/sass': 1.0.7 transitivePeerDependencies: - '@codemirror/view' dev: true - /@codemirror/lang-sql@6.8.0(@codemirror/view@6.35.0): + /@codemirror/lang-sql@6.10.0(@codemirror/view@6.38.8): + resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==} + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + transitivePeerDependencies: + - '@codemirror/view' + dev: true + + /@codemirror/lang-sql@6.8.0(@codemirror/view@6.38.8): resolution: {integrity: sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1650,7 +1701,7 @@ packages: dependencies: '@codemirror/lang-html': 6.4.9 '@codemirror/lang-javascript': 6.2.2 - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1659,7 +1710,7 @@ packages: /@codemirror/lang-wast@6.0.2: resolution: {integrity: sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1668,20 +1719,20 @@ packages: /@codemirror/lang-xml@6.1.0: resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/xml': 1.0.5 dev: true - /@codemirror/lang-yaml@6.1.1(@codemirror/view@6.35.0): + /@codemirror/lang-yaml@6.1.1(@codemirror/view@6.38.8): resolution: {integrity: sha512-HV2NzbK9bbVnjWxwObuZh5FuPCowx51mEfoFT9y3y+M37fA3+pbxx4I7uePuygFzDsAmCTwQSc/kXh/flab4uw==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/yaml': 1.0.3 @@ -1689,40 +1740,51 @@ packages: - '@codemirror/view' dev: true - /@codemirror/language-data@6.5.1(@codemirror/view@6.35.0): + /@codemirror/language-data@6.5.1(@codemirror/view@6.38.8): resolution: {integrity: sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==} dependencies: '@codemirror/lang-angular': 0.1.3 '@codemirror/lang-cpp': 6.0.2 - '@codemirror/lang-css': 6.3.1(@codemirror/view@6.35.0) - '@codemirror/lang-go': 6.0.1(@codemirror/view@6.35.0) + '@codemirror/lang-css': 6.3.1(@codemirror/view@6.38.8) + '@codemirror/lang-go': 6.0.1(@codemirror/view@6.38.8) '@codemirror/lang-html': 6.4.9 '@codemirror/lang-java': 6.0.1 '@codemirror/lang-javascript': 6.2.2 '@codemirror/lang-json': 6.0.1 - '@codemirror/lang-less': 6.0.2(@codemirror/view@6.35.0) + '@codemirror/lang-less': 6.0.2(@codemirror/view@6.38.8) '@codemirror/lang-liquid': 6.2.2 '@codemirror/lang-markdown': 6.3.1 '@codemirror/lang-php': 6.0.1 - '@codemirror/lang-python': 6.1.6(@codemirror/view@6.35.0) + '@codemirror/lang-python': 6.1.6(@codemirror/view@6.38.8) '@codemirror/lang-rust': 6.0.1 - '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.35.0) - '@codemirror/lang-sql': 6.8.0(@codemirror/view@6.35.0) + '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.38.8) + '@codemirror/lang-sql': 6.10.0(@codemirror/view@6.38.8) '@codemirror/lang-vue': 0.1.3 '@codemirror/lang-wast': 6.0.2 '@codemirror/lang-xml': 6.1.0 - '@codemirror/lang-yaml': 6.1.1(@codemirror/view@6.35.0) - '@codemirror/language': 6.10.6 + '@codemirror/lang-yaml': 6.1.1(@codemirror/view@6.38.8) + '@codemirror/language': 6.11.3 '@codemirror/legacy-modes': 6.4.2 transitivePeerDependencies: - '@codemirror/view' dev: true - /@codemirror/language@6.10.6: - resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==} + /@codemirror/language@6.10.0: + resolution: {integrity: sha512-2vaNn9aPGCRFKWcHPFksctzJ8yS5p7YoaT+jHpc0UGKzNuAIx4qy6R5wiqbP+heEEdyaABA582mNqSHzSoYdmg==} dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + dev: true + + /@codemirror/language@6.11.3: + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -1732,42 +1794,55 @@ packages: /@codemirror/legacy-modes@6.4.2: resolution: {integrity: sha512-HsvWu08gOIIk303eZQCal4H4t65O/qp1V4ul4zVa3MHK5FJ0gz3qz3O55FIkm+aQUcshUOjBx38t2hPiJwW5/g==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.11.3 dev: true /@codemirror/lint@6.8.4: resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==} dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 crelt: 1.0.6 dev: true + /@codemirror/merge@6.11.2: + resolution: {integrity: sha512-NO5EJd2rLRbwVWLgMdhIntDIhfDtMOKYEZgqV5WnkNUS2oXOCVWLPjG/kgl/Jth2fGiOuG947bteqxP9nBXmMg==} + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@lezer/highlight': 1.2.1 + style-mod: 4.1.2 + dev: true + /@codemirror/search@6.5.8: resolution: {integrity: sha512-PoWtZvo7c1XFeZWmmyaOp2G0XVbOnm+fJzvghqGAktBW3cufwJUWvSCcNG0ppXiBEM05mZu6RhMtXPv2hpllig==} dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 crelt: 1.0.6 dev: true - /@codemirror/state@6.4.1: - resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + /@codemirror/state@6.5.2: + resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} + dependencies: + '@marijn/find-cluster-break': 1.0.2 dev: true /@codemirror/theme-one-dark@6.1.2: resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} dependencies: - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/highlight': 1.2.1 dev: true - /@codemirror/view@6.35.0: - resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==} + /@codemirror/view@6.38.8: + resolution: {integrity: sha512-XcE9fcnkHCbWkjeKyi0lllwXmBLtyYb5dt89dJyx23I9+LSh5vZDIuk7OLG4VM1lgrXZQcY6cxyZyk5WVPRv/A==} dependencies: - '@codemirror/state': 6.4.1 + '@codemirror/state': 6.5.2 + crelt: 1.0.6 style-mod: 4.1.2 w3c-keyname: 2.2.8 dev: true @@ -1777,6 +1852,674 @@ packages: engines: {node: '>=0.1.90'} dev: false + /@coze-editor/code-language-json@0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@lezer/common@1.2.3): + resolution: {integrity: sha512-DiS8+k2fvuKqnbCAfIxJm3UNSVrve9GsAsSVmOMDBYPi+hjtIo2/cyfJIKocJTuUpzKNP+r3iIYr89TynSFHHw==} + peerDependencies: + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621 + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-lint': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/lezer-parser-json': 0.1.0-alpha.868621 + '@coze-editor/parser-json': 0.1.0-alpha.868621 + '@lezer/json': 1.0.2 + '@lukeed/uuid': 2.0.1 + text-mapping: 1.0.1 + vscode-json-languageservice: 5.6.3 + vscode-uri: 3.1.0 + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/code-language-python@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621): + resolution: {integrity: sha512-DYw0M/34x11zEWQGhiGImexeyEACSzd/Dq0SUWpL56fe+md3jEKH/i2qTpd+lGmriRjFxqJO1J7ZpS7gaqvlPQ==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621 + dependencies: + '@codemirror/lang-python': 6.1.6(@codemirror/view@6.38.8) + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + dev: true + + /@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-/E7OWlfOn8WeZfAdWGpVtITuahKVq8Kh1yPZAR+v4z77EkFv3dkU7LLs2oZO55k5t6IHBILa6VH/gNpBrTnQCQ==} + peerDependencies: + '@codemirror/autocomplete': ^6.18.0 + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-lint': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + mitt: 3.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/code-language-shell@0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621): + resolution: {integrity: sha512-EJf42+XWvf8ai+h/0/ieIj6SglWyx+LtcAHjG7GZzAiGusWLQun4MtKLw4uh/uwn5mRrlX4A9P1xZPw8sDeOYQ==} + peerDependencies: + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621 + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + dev: true + + /@coze-editor/code-language-sql@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621): + resolution: {integrity: sha512-h+i1Ma3R6idDE/8OKjur2+RLdbDrifc+Wsf1IXlyeq4fHfIzot7qlAWg+KvME+HyejnosS6lJAb8YFqRDddzOQ==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621 + dependencies: + '@codemirror/lang-sql': 6.10.0(@codemirror/view@6.38.8) + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + dev: true + + /@coze-editor/code-language-typescript@0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(typescript@5.9.3): + resolution: {integrity: sha512-FgmtJP/TfArYOPu16X79TsdmWhq+ijB604lzon6kJE5uEkC5pdV9GX2V155r2yq7AYLbMwFfRaDHGpb+6VauVw==} + peerDependencies: + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621 + typescript: '*' + dependencies: + '@codemirror/lang-javascript': 6.2.2 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@lukeed/uuid': 2.0.1 + '@typescript/vfs': 1.6.2(typescript@5.9.3) + comlink: 4.4.2 + lz-string: 1.5.0 + mitt: 3.0.1 + typescript: 5.9.3 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@coze-editor/core-plugins@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-uU/uL+odFUoQTaiHHsnSREgHA0YRkhSxhU3gYcLkbaBnDqtSKXI2wfXfLmStWYgOgokvF5je1SRAcpmUB3NEng==} + peerDependencies: + '@codemirror/commands': ^6.3.3 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/commands': 6.7.1 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + es-toolkit: 1.42.0 + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/core@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-LIJkSNY5+2ZtvmKIoHRa+pBuymlg7nBdTL0hfZ0PF97cTyLdP5S25w/sTW4hMP2difvdUdDj41ipd6u4QtW9Zg==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + mitt: 3.0.1 + dev: true + + /@coze-editor/editor@0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/merge@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(vue@3.5.24): + resolution: {integrity: sha512-GyjGyOpyAYXaDBjQmJlONQA9MtjV/7Vl6QgpSgb8NJVyLV/VUJaSiY24fkAr+TQTHE1U4zFPArwmmiB3SjCWQw==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@codemirror/commands': 6.7.1 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-json': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@lezer/common@1.2.3) + '@coze-editor/code-language-python': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621) + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/code-language-shell': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621) + '@coze-editor/code-language-sql': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621) + '@coze-editor/code-language-typescript': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(typescript@5.9.3) + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-json-empty-string-value-completion': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-json-hover': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-json-unnecessary-properties': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-regexp-decorator': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/preset-code': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@lezer/common@1.2.3) + '@coze-editor/preset-expression': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/preset-none': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/preset-prompt': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/preset-universal': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/preset-variable': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(react-dom@18.3.1)(react@18.3.1) + '@coze-editor/react-components': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(@lezer/common@1.2.3)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@coze-editor/react-hooks': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(react-dom@18.3.1)(react@18.3.1) + '@coze-editor/react-merge': 0.1.0-alpha.868621(@codemirror/merge@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(react-dom@18.3.1)(react@18.3.1) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/vscode': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/vue': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(vue@3.5.24) + '@coze-editor/vue-components': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/vue@0.1.0-alpha.868621)(@lezer/common@1.2.3)(vue@3.5.24) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/merge' + - '@lezer/common' + - '@types/react' + - supports-color + - typescript + - vue + dev: true + + /@coze-editor/extension-completion-icons@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-bBEqHc0U8afTFUNn6+ah6/DcG+xDJma79gi+3RTEgGsUn8hGPCEdx1gUYFM4a7AT+MsSi4YMOL+9CLG5Id9xtw==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + dev: true + + /@coze-editor/extension-json-ast@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-oFWfRqXo2xtrbP180MhFAoj6MbGke30aNEJzITdDE+ULPOnkgcg3yc0V5ZYW7NDlQKEWvQfLNEhJezpbMLXoTA==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/parser-json': 0.1.0-alpha.868621 + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + vscode-languageserver-textdocument: 1.0.12 + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/extension-json-empty-string-value-completion@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-pLMNaUYOF5Xky1xHrGxMpTttwDdgE1XFYYCdbvY/SW0cHlGcFLt7tG1QDnkVQ4NRNWD72bRoJYEG70C3UtIxhg==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/extension-json-hover@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-rupoEE5P6MkrwHgT8logYoJlRwTA/aY+yHbyr3vorc5RcVigooxphMNrtITiVJphpRftKj+HaRBoRNpnZ66tNw==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/extension-json-unnecessary-properties@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-QQBiNJTWYHQ2pWKwqT1+Z1zvDSd6QpPpPLs/UFrPzQVUgh8o+CrXUe/C9GZK3o5aTjeZmDmgZWd67XR7zdLckA==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/extension-links@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-v9+WheHGJB6fjvyhgTOEAC6IfLnqlxhJFHlOe4cjIRa/A+WmyVFy628g2KlbCHJ9n3JSRhMN8AR2WFU+omGvWw==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + dev: true + + /@coze-editor/extension-lint@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-YgO5bDSNQMM3ZKbr0fF1A7PZ91q/wceZtLGOTxUgxV/iMxs1WhSAgiUm8qL4QoonNZ4fqe6iGedjAFKl499VjA==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + crelt: 1.0.6 + dev: true + + /@coze-editor/extension-placeholder@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-FdnIjDRBzVErJ5zdefiKUqynbbtNXYDaRd9dP4htX4Mk2dHZOTcO7abAg74Aqrv1iIO1C/hsHZwAPtj2igfhpA==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/extension-regexp-decorator@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-q3keVCFvXxhnKCjWbj7wccMMFi7RtPwFTCNTqm078upBA5FqBOabjjfm9XYeMeqFPfj13Dj+QYl1glQ1POrXkw==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + dev: true + + /@coze-editor/extension-scrollbar@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-3iNR3bwJlge2XmkwqiT9GRRa+6HaxaG8A9pThu/atXGrSqob0/xOUIJHz/2Zl/9hvEv28pwdE5BGgci1CQ8I3A==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + overlayscrollbars: 2.12.0 + dev: true + + /@coze-editor/extensions@0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-wSHUr9FoTtYihX97ExDto4wR9m/zqzX4ehEFgM3BM++/m7bLduP4BLJFEpz5UTYWNe7Poy2bhgTps0+vrnOxbA==} + peerDependencies: + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/lezer-parser-template': 0.1.0-alpha.868621 + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@lezer/common': 1.2.3 + crelt: 1.0.6 + es-toolkit: 1.42.0 + dev: true + + /@coze-editor/lezer-parser-jinja2@0.1.0-alpha.868621: + resolution: {integrity: sha512-/0UHn/jYOCr4O4MPmh40kQLm+0oatPpkA3Db/eOfvxixXuGdf9opaKLreCJMKAGW9zk2IFUn0ApzzbR+ylm+HQ==} + dependencies: + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + dev: true + + /@coze-editor/lezer-parser-json@0.1.0-alpha.868621: + resolution: {integrity: sha512-obdwpIIWmCbmk85YsYe4S1UR6XQl3LjiRvsHOTHkVx3d55C5YZtIGi35t+GRV4eWKxWKLXCe7b0ymnzt0K1GxA==} + dependencies: + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + dev: true + + /@coze-editor/lezer-parser-template@0.1.0-alpha.868621: + resolution: {integrity: sha512-IM7tIYy+ffaEfbbdZ017jLvmU/4Syh7yC08RivTYWQE2SRumOwQc/mA1Bwvd+eQP6aoXnjT1bwbNXNh32Rh35g==} + dependencies: + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + dev: true + + /@coze-editor/parser-json@0.1.0-alpha.868621: + resolution: {integrity: sha512-EUQBEXQSstMoeEfzuM5F/Hp244y6CfnPBM+tfvXv6KK6QgiTHML8E85ZkpnMU83EctoqvKyPo+XADEAfA06jIQ==} + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + dev: true + + /@coze-editor/preset-code@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@lezer/common@1.2.3): + resolution: {integrity: sha512-Z+8YQ6H27QhwBbveigi+PYHJl+4BZH9+StwBs2OQR/bmt3r4fPcxjXjTJcoDeEOxUt342rtahIp2TgKFONruQA==} + peerDependencies: + '@codemirror/commands': ^6.3.3 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621 + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/commands': 6.7.1 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-completion-icons': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extension-links': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extension-lint': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extension-scrollbar': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/preset-universal': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/vscode': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@lezer/highlight': 1.2.1 + '@nozbe/microfuzz': 1.0.0 + '@shikijs/langs': 3.12.3 + '@shikijs/themes': 3.12.3 + codemirror-shiki: 0.2.5(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(shiki@3.15.0) + marked: 15.0.12 + marked-shiki: 1.2.1(marked@15.0.12)(shiki@3.15.0) + shiki: 3.15.0 + text-mapping: 1.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/preset-expression@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-Nm/ZK4CLkvRgHsOrMeXKbP5nciWUhTt6/lsdNke9JDSRWJ0E3/jwctsvQDKrobS/Y3HHXSeklApCUdKAa4tmLw==} + peerDependencies: + '@codemirror/commands': ^6.3.3 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/commands': 6.7.1 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + transitivePeerDependencies: + - '@lezer/common' + dev: true + + /@coze-editor/preset-none@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-Lxj9uEeJxbUGn471TdbKvjePdUsagcgss+2kPyZNhuM9yUEBvbMwg6y08Q9juvSsRwEjEddyOgQUM1r+xtaU1g==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + dev: true + + /@coze-editor/preset-prompt@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-xvtBWVKGSyR+j48r0ekEeBDdYsjC4EuGVBPRRYRWyUhupmljLjjVE8vL+kmJdcMIs5PRHPodg1rNYAkXErNzjQ==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/lezer-parser-jinja2': 0.1.0-alpha.868621 + '@coze-editor/preset-expression': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@lezer/common': 1.2.3 + '@lezer/html': 1.3.10 + '@lezer/markdown': 1.3.2 + transitivePeerDependencies: + - '@codemirror/commands' + dev: true + + /@coze-editor/preset-universal@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-urmFGBAbpGovGF7d1aXvNJaoY9c6JsxgA9ttTdyOIGaHlH40RiUOQOdVKLHuJRdZqDS5sUVVwuU2D72WqwPudg==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + transitivePeerDependencies: + - '@codemirror/commands' + - '@codemirror/language' + - '@lezer/common' + dev: true + + /@coze-editor/preset-variable@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-QjLMf4zPLGBMPbpMjjOyWHaSWkdUB58TNC4xlVhAL9tf1w0j1Iigz21O53EjNCdxIJqB6xMcbFmC8ckos+drrg==} + peerDependencies: + '@codemirror/commands': ^6.3.3 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/commands': 6.7.1 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/preset-expression': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@lezer/common': 1.2.3 + '@lezer/javascript': 1.4.21 + '@lezer/python': 1.1.14 + dev: true + + /@coze-editor/react-components@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(@lezer/common@1.2.3)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-kyshX8vcqp5qFfHNJt4TI8sXD8IIXGoApGUz3GhJYjfWf34HTI75r8Us11sMJKvhx5tVs6+Ulk0tMH8nD2e3Cg==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/react': 0.1.0-alpha.868621 + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/merge': 6.11.2 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(react-dom@18.3.1)(react@18.3.1) + '@coze-editor/react-hooks': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(react-dom@18.3.1)(react@18.3.1) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/vscode': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@floating-ui/dom': 1.7.4 + '@lezer/highlight': 1.2.1 + '@lukeed/uuid': 2.0.1 + '@types/hash-sum': 1.0.2 + hash-sum: 2.0.0 + jotai: 2.15.1(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@codemirror/commands' + - '@lezer/common' + - '@types/react' + dev: true + + /@coze-editor/react-hooks@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-VjQtL8pQW5BF1e+sIZlj8GNR4E/KacuPxNGn9D4VOI13bLD+8DDqvxEiURQpcCsX5/A7+AJFKTpwTi97pbVkJQ==} + peerDependencies: + '@codemirror/commands': ^6.3.3 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/react': 0.1.0-alpha.868621 + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@codemirror/commands': 6.7.1 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@coze-editor/react-merge@0.1.0-alpha.868621(@codemirror/merge@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/react@0.1.0-alpha.868621)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-VTYUJ5DqCuJaPThuCD4OcGs7IK5HkBx5Fdq0hMBX/BEau7q4rQkKpihj2lyqKJ2O4jiJW8FkFPma0hmRFSLMnQ==} + peerDependencies: + '@codemirror/merge': ^6.10.0 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/react': 0.1.0-alpha.868621 + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@codemirror/merge': 6.11.2 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-hMkqiPwEWZHf2sbiOd1us2llG9fKm3BC7S1JiSXWu/0nqZbCPKlScxwawwWiL5W5ZVCH/f/CB/zzeGWHfyuanw==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + + /@coze-editor/utils@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3): + resolution: {integrity: sha512-0JTtT71PSDNBrIl5f0SIio0QeXPU7WkqUxMbJSLraTVqAPXTwBt2yfQoXqcb4st4Dx/J3PehZR0hMnLLz9jPVA==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@lezer/common': ^1.2.2 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.2.3 + dev: true + + /@coze-editor/vscode@0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): + resolution: {integrity: sha512-JokGr03hkb6bWv5QFxr/itJ95sBpcj1ZR2wcETOyoVFY1XivP46BGQjJPiwFvsw1+wNcVXUdzvPmyp7uaOukNQ==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + dependencies: + '@codemirror/search': 6.5.8 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@lezer/highlight': 1.2.1 + crelt: 1.0.6 + dev: true + + /@coze-editor/vue-components@0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/vue@0.1.0-alpha.868621)(@lezer/common@1.2.3)(vue@3.5.24): + resolution: {integrity: sha512-tm0woNS95HDFZG1ovnDpBkQCNeZTGsGFD7qVQBROmIcbGonHkR+a522gA6RCtzAKE35LigdWzH49usDPDTXe9g==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + '@coze-editor/vue': 0.1.0-alpha.868621 + vue: ^3.5.0 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/vue': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(vue@3.5.24) + '@floating-ui/dom': 1.7.4 + vue: 3.5.24(typescript@5.2.2) + transitivePeerDependencies: + - '@codemirror/language' + - '@lezer/common' + dev: true + + /@coze-editor/vue@0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(vue@3.5.24): + resolution: {integrity: sha512-ODYDWtccDDRICvhtEXRXXadlMo5ZEx4p0X7RCyTN3EKKky8zrYFBo/Ke1kHpZjtalFnLf4Mx8SmInZx/mFJy7Q==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + vue: ^3.5.0 + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) + '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.7.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + vue: 3.5.24(typescript@5.2.2) + transitivePeerDependencies: + - '@codemirror/commands' + - '@lezer/common' + dev: true + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1939,11 +2682,6 @@ packages: kuler: 2.0.0 dev: false - /@dagrejs/graphlib@2.2.2: - resolution: {integrity: sha512-CbyGpCDKsiTg/wuk79S7Muoj8mghDGAESWGxcSyhHX5jD35vYMBZochYVFzlHxynpE9unpu6O+4ZuhrLxASsOg==} - engines: {node: '>17.0.0'} - dev: true - /@dnd-kit/accessibility@3.1.1(react@18.3.1): resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} peerDependencies: @@ -2016,6 +2754,131 @@ packages: tslib: 2.8.1 dev: true + /@douyinfe/semi-animation-react@2.88.2: + resolution: {integrity: sha512-WA1MwGeNVo+Gc5Xd3BhHFk1TXJOEsANhn9iW+KUR3d4rMHE2hlGfU0w7wBT4ghdJ96E00WLwCa4irKwqi/h8mA==} + dependencies: + '@douyinfe/semi-animation': 2.88.2 + '@douyinfe/semi-animation-styled': 2.88.2 + classnames: 2.5.1 + dev: true + + /@douyinfe/semi-animation-styled@2.88.2: + resolution: {integrity: sha512-H9d28qe9Wr9LGnZKYG5mpK21GIgxAe9YwnahK5tcD7NhcM8P86VF/e4vBf90aPXPUBefRdmmE5Etr35pzjoArA==} + dev: true + + /@douyinfe/semi-animation@2.88.2: + resolution: {integrity: sha512-JzSY8QXEXDHzH2W4HFLO7xG/hFPE5hCagDUcWtcIl7Z9e8xacr7yJsOWVqD/cYYhswzUtfN0F8Y5qMncD8DczA==} + dependencies: + bezier-easing: 2.1.0 + dev: true + + /@douyinfe/semi-foundation@2.88.2: + resolution: {integrity: sha512-cz/cx+KudZwBgnmZtkOQlzt/BPb3bnjZUMeqAdWcp7yZQ/fqnqtd2NCYI5cs+MNZR2aWwGNGFtP6FO9znrHmIA==} + dependencies: + '@douyinfe/semi-animation': 2.88.2 + '@douyinfe/semi-json-viewer-core': 2.88.2 + '@mdx-js/mdx': 3.1.1 + async-validator: 3.5.2 + classnames: 2.5.1 + date-fns: 2.30.0 + date-fns-tz: 1.3.8(date-fns@2.30.0) + fast-copy: 3.0.2 + lodash: 4.17.21 + lottie-web: 5.13.0 + memoize-one: 5.2.1 + prismjs: 1.30.0 + remark-gfm: 4.0.1 + scroll-into-view-if-needed: 2.2.31 + transitivePeerDependencies: + - supports-color + dev: true + + /@douyinfe/semi-icons@2.88.2(react@18.3.1): + resolution: {integrity: sha512-pORwLHLv+tE0DAnQ+OSlqAzD2/w9DXvqRfGsVgosSDlAdiu4Bn0Ak2IT9DEN8CF7jxcHgO2cTX81/wpNsQ6MCg==} + peerDependencies: + react: '>=16.0.0 || 18' + peerDependenciesMeta: + react: + optional: true + dependencies: + classnames: 2.5.1 + react: 18.3.1 + dev: true + + /@douyinfe/semi-illustrations@2.88.2(react@18.3.1): + resolution: {integrity: sha512-7b4FabG8nYWHOnvwxsDOpGxtCgc07XgXen8oeGMQJSI03St8Yu8ai+wazEkOHOA9gm2u39XmkBTCzE6W4IMtlA==} + peerDependencies: + react: '>=16.0.0 || 18' + peerDependenciesMeta: + react: + optional: true + dependencies: + react: 18.3.1 + dev: true + + /@douyinfe/semi-json-viewer-core@2.88.2: + resolution: {integrity: sha512-2CosdM4F5DFfgXrU9g2FNoqGl6oxJpM9UtO5j5EQRDFhlWirDE63YqADmVDPFeKLRmQBmahbIcTeP0yESgkgxQ==} + dependencies: + jsonc-parser: 3.3.1 + dev: true + + /@douyinfe/semi-theme-default@2.88.2: + resolution: {integrity: sha512-rOLwSDi5CNXa6MQ5GabHSBoAFFaGZipha/QIy1umqlF21ahw5IJyLCj7e0+TP1MyzcFsqeEjImALbR/cNRWjow==} + dev: true + + /@douyinfe/semi-ui@2.88.2(@floating-ui/dom@1.7.4)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-g9hY5busQ0PIxX4rAarbkMrAMIdMgVXqP81t1ALAeApRpjMIiZFj2k+ZDdM4CFT3RGec9WoP4RiGOj8fc+n8zg==} + peerDependencies: + react: '>=16.0.0 || 18' + react-dom: '>=16.0.0 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@dnd-kit/core': 6.2.0(react-dom@18.3.1)(react@18.3.1) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.2.0)(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + '@douyinfe/semi-animation': 2.88.2 + '@douyinfe/semi-animation-react': 2.88.2 + '@douyinfe/semi-foundation': 2.88.2 + '@douyinfe/semi-icons': 2.88.2(react@18.3.1) + '@douyinfe/semi-illustrations': 2.88.2(react@18.3.1) + '@douyinfe/semi-theme-default': 2.88.2 + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/extension-document': 3.11.0(@tiptap/core@3.11.0) + '@tiptap/extension-hard-break': 3.11.0(@tiptap/core@3.11.0) + '@tiptap/extension-mention': 3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0)(@tiptap/suggestion@3.11.0) + '@tiptap/extension-paragraph': 3.11.0(@tiptap/core@3.11.0) + '@tiptap/extension-text': 3.11.0(@tiptap/core@3.11.0) + '@tiptap/extensions': 3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + '@tiptap/react': 3.11.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + async-validator: 3.5.2 + classnames: 2.5.1 + copy-text-to-clipboard: 2.2.0 + date-fns: 2.30.0 + date-fns-tz: 1.3.8(date-fns@2.30.0) + fast-copy: 3.0.2 + jsonc-parser: 3.3.1 + lodash: 4.17.21 + prop-types: 15.8.1 + prosemirror-state: 1.4.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-resizable: 3.0.5(react-dom@18.3.1)(react@18.3.1) + react-window: 1.8.11(react-dom@18.3.1)(react@18.3.1) + scroll-into-view-if-needed: 2.2.31 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@floating-ui/dom' + - '@tiptap/suggestion' + - '@types/react' + - '@types/react-dom' + - supports-color + dev: true + /@emotion/cache@10.0.29: resolution: {integrity: sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==} dependencies: @@ -2550,12 +3413,25 @@ packages: resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==} dev: true + /@floating-ui/core@1.7.3: + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + dependencies: + '@floating-ui/utils': 0.2.10 + dev: true + /@floating-ui/dom@0.4.5: resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==} dependencies: '@floating-ui/core': 0.6.2 dev: true + /@floating-ui/dom@1.7.4: + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + dev: true + /@floating-ui/react-dom-interactions@0.3.1(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} deprecated: Package renamed to @floating-ui/react @@ -2589,6 +3465,10 @@ packages: - '@types/react' dev: true + /@floating-ui/utils@0.2.10: + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + dev: true + /@flowgram.ai/background-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-H9sKO5178pUj01lNPRVgtB8dxeorh+qJd1EYWQ8c+pSo1YZ6XmDBf/N0E0ZGx4th5dvdZctDe1DOqmyYzOpMMw==} peerDependencies: @@ -2649,6 +3529,41 @@ packages: reflect-metadata: 0.2.2 dev: true + /@flowgram.ai/coze-editor@1.0.2(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/merge@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@lezer/common@1.2.3)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@5.3.11)(vue@3.5.24): + resolution: {integrity: sha512-yUv7HSBTwKBuKK9Q9JjSoDDIFNuUxw6CdBhXP7T1l5ULPXG5fv/OP/QCPUTrMeYWHAF0XAJ43tQIqqlMIcefYA==} + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + styled-components: '>=5' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + styled-components: + optional: true + dependencies: + '@coze-editor/code-language-typescript': 0.1.0-alpha.868621(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(typescript@5.9.3) + '@coze-editor/editor': 0.1.0-alpha.868621(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/merge@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(vue@3.5.24) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-components: 5.3.11(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1) + typescript: 5.9.3 + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/merge' + - '@codemirror/state' + - '@codemirror/view' + - '@coze-editor/code-language-shared' + - '@lezer/common' + - '@types/react' + - supports-color + - vue + dev: true + /@flowgram.ai/document@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-v1yRHNU8xoSRNBk2Hjb7UlebRIZfgap4N0PXM9XzhuA7jDXKD6Ny4OcJBPwN5WNv3DVVpMS9smXf2t1FLdwR/g==} dependencies: @@ -2698,6 +3613,121 @@ packages: reflect-metadata: 0.2.2 dev: true + /@flowgram.ai/fixed-drag-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-wC4ZUq8Z7PoiyBEWnExRpQvApnlPOMtE3cPvm/e43zfu3LzPgvKHnlOMJUUx3g85JaF4KdNwly+Hl50TWi28Fw==} + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/renderer': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) + inversify: 6.2.2(reflect-metadata@0.2.2) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + reflect-metadata: 0.2.2 + dev: true + + /@flowgram.ai/fixed-history-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-fugR0uaFkhiwgVoiqkuzeC1JhWRzxzcGS56EPV2rtdlSgz2W1PfqgtKrN3SVjg7YgQ8T+NZib+LRT0QkKp3KFQ==} + dependencies: + '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/form-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/history': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) + inversify: 6.2.2(reflect-metadata@0.2.2) + lodash-es: 4.17.21 + reflect-metadata: 0.2.2 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /@flowgram.ai/fixed-layout-core@1.0.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-TK15hWeJ91T6sLOPsg6tR2llp3wbInvn0FT+QQgZ+Q1MdoADW9wDmfbh9A+gazasjEYHAJ36k55nVD9mUpw3pg==} + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/renderer': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) + inversify: 6.2.2(reflect-metadata@0.2.2) + lodash-es: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + reflect-metadata: 0.2.2 + dev: true + + /@flowgram.ai/fixed-layout-editor@1.0.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-5ZFHTJK4Av7tfg1xQ/maq3OeOQWypWmLZb5QbQVagIAEmmww/fdcc09N6OX8DxEMvQnV7Npd5mHK9wRo1t7uCQ==} + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/editor': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/fixed-drag-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/fixed-history-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/fixed-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/history': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/reactive': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/select-box-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) + inversify: 6.2.2(reflect-metadata@0.2.2) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + reflect-metadata: 0.2.2 + dev: true + + /@flowgram.ai/fixed-semi-materials@1.0.2(@floating-ui/dom@1.7.4)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@5.3.11): + resolution: {integrity: sha512-cPZbNl+Q2LTV8KfPGGdDRJAqZ2U90Vpk+Y++Yjzlj7kw0Y9GifY4S97deeOcGCjCFe9f4jrrnoxyD3KQvNtv1A==} + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + styled-components: '>=5' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + styled-components: + optional: true + dependencies: + '@douyinfe/semi-icons': 2.88.2(react@18.3.1) + '@douyinfe/semi-ui': 2.88.2(@floating-ui/dom@1.7.4)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/fixed-layout-editor': 1.0.2(react-dom@18.3.1)(react@18.3.1) + lodash-es: 4.17.21 + nanoid: 5.1.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-components: 5.3.11(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@floating-ui/dom' + - '@tiptap/suggestion' + - '@types/react' + - '@types/react-dom' + - supports-color + dev: true + /@flowgram.ai/form-core@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-QnflciekMcMTB5aU4mhFSqnDV+vMvw5DsPeYi7N3Q90G+1qSzvMGXFqZmFhTjzL6vAEPDHcE0Zre4XqP2ebuag==} peerDependencies: @@ -2719,6 +3749,48 @@ packages: reflect-metadata: 0.2.2 dev: true + /@flowgram.ai/form-materials@1.0.2(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/merge@6.11.2)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@floating-ui/dom@1.7.4)(@lezer/common@1.2.3)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@5.3.11)(vue@3.5.24): + resolution: {integrity: sha512-/TB6xayXbhmboPrh2hT8PsAcaIVEd3qHM+jc84frF53MR45e1zsKTX8jCACZY31rAuI3qH3EfG8JEvmNq55lLg==} + hasBin: true + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + '@douyinfe/semi-icons': 2.88.2(react@18.3.1) + '@douyinfe/semi-ui': 2.88.2(@floating-ui/dom@1.7.4)(@tiptap/suggestion@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/coze-editor': 1.0.2(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/merge@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@coze-editor/code-language-shared@0.1.0-alpha.868621)(@lezer/common@1.2.3)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@5.3.11)(vue@3.5.24) + '@flowgram.ai/editor': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/json-schema': 1.0.2(react-dom@18.3.1)(react@18.3.1) + immer: 10.1.3 + lodash-es: 4.17.21 + nanoid: 5.1.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + zod: 3.25.76 + transitivePeerDependencies: + - '@babel/core' + - '@babel/template' + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/merge' + - '@coze-editor/code-language-shared' + - '@floating-ui/dom' + - '@lezer/common' + - '@tiptap/suggestion' + - '@types/react' + - '@types/react-dom' + - styled-components + - supports-color + - vue + dev: true + /@flowgram.ai/form@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-U+xYZ+MbZ340HMheD7rvLgBc/9tj+e7Z95XfNy1Lk4d2GULdYxnvuzWnPWtMoTipKkLKFtLPPrPNaSWPgi54mA==} peerDependencies: @@ -2739,133 +3811,6 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: true - /@flowgram.ai/free-auto-layout-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-wtABosvSPZW+2REupFyr7UFzr9tPYACuhmogIb29Z02ZmK2DcXN3hoMHRkrvFP0+BnXkdKKSA7GuR9yWzv9vwQ==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - styled-components: '>=5' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - styled-components: - optional: true - dependencies: - '@dagrejs/graphlib': 2.2.2 - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - - /@flowgram.ai/free-container-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-xjnxPAqn7BKybKXFZtcqry9eMBjOBaS6ROCWxX5jewA4oGKrIIWuT4Slb4YuKZuCoMNfAXaMfOxOD6oy1XjAFQ==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - styled-components: '>=5' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - styled-components: - optional: true - dependencies: - '@flowgram.ai/background-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-history-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/i18n': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - - /@flowgram.ai/free-group-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-swMMC03kAVIz//+iKtpR4HNT9ZpMSZcVdh0NUsafTp//nr+dQldWpj8QC2byp30Esp3IcZ7lwrw73YRNPv0NlQ==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-container-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-history-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-editor': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/renderer': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/shortcuts-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - styled-components - dev: true - - /@flowgram.ai/free-history-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-6u3TiXTvnpEQUwA1FYFdBS30urXUBE+doBrYtkQTL69rujwW2P0dKAqx+3xuqS2boni7w8SVRWCtEfEPqxgyMw==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/form-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/history': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - - /@flowgram.ai/free-hover-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-9tdHq0oopGyV/7ssxA9NdVj/112852OntE5t0JrpLef1FI//lzfKJ0nzn35FjgpsR0ejXdtV8Y5zOXMikwhSVg==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/renderer': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - /@flowgram.ai/free-layout-core@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-o06OkanwQo6IKwvcd99YljTQkX3RyDLnfSwAfCRBWwQcDzRCHlpsoJc3Yq3zNpMfuHMpGNK2WjU9Ugf3awwn2A==} peerDependencies: @@ -2891,8 +3836,8 @@ packages: reflect-metadata: 0.2.2 dev: true - /@flowgram.ai/free-layout-editor@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-7GsQT6WtW1iqtIu+VgY1Xl1piTklyOQGKIa8aHLn0QkGGr9u4hqBRAmrFl3oWhTov0cBfKb2q6Q9YSle7dHLiQ==} + /@flowgram.ai/group-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-r6eWdahtTJBpuCK1N3Oc3ac78owu/ZNyPoZWJmdRA7CLx8qXkc55q/JADtbOSspu2enuRjJWey3Xd2uwrF31uA==} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8 || 18' @@ -2901,124 +3846,17 @@ packages: optional: true react-dom: optional: true - dependencies: - '@flowgram.ai/editor': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-auto-layout-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-history-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-hover-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-lines-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-stack-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/history': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/select-box-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - clsx: 1.2.1 - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - styled-components - dev: true - - /@flowgram.ai/free-lines-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-50iLdqee1CKi5BO719v8Zv0xhs9bpt6qYLf6SZol4tq6tdmAvpsgSrnlFISlq8HqbDuCkhwRByoL0RAwe4WKTQ==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - styled-components: '>=5' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - styled-components: - optional: true dependencies: '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-stack-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) '@flowgram.ai/renderer': 1.0.2(react-dom@18.3.1)(react@18.3.1) '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - bezier-js: 6.1.4 - clsx: 1.2.1 inversify: 6.2.2(reflect-metadata@0.2.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) reflect-metadata: 0.2.2 dev: true - /@flowgram.ai/free-node-panel-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-20Rrc0zORVzHpkbux9pBZE2qQhfVEy5ozkF0qV7fMOZkVYQhNt5Xbq7hzRpnjh24Sh+9pBlfM6ZjN5aOS9MxdQ==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-history-plugin': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - - /@flowgram.ai/free-snap-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-GvGg5ARQBZQfMcOCQbEacQyCvGxHEb2WPoMZYrgUFIv8xDEzoBSeboOUShAl+XeKZT/ojUsmBiA8bKLrDIfvfg==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - styled-components: '>=5' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - styled-components: - optional: true - dependencies: - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - - /@flowgram.ai/free-stack-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-HwQYjvLyAs3BFwi1lQ/19OmOUIgmDwG+BZP7MNgRfHCuR1mSlKd2p1ho1a5BeZbKMIYj6iW0mpHcD28z40SJQw==} - peerDependencies: - react: '>=16.8 || 18' - react-dom: '>=16.8 || 18' - styled-components: '>=5' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - styled-components: - optional: true - dependencies: - '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/document': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) - '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - dev: true - /@flowgram.ai/history-node-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-JCRIovGDzQ4xrdFzJBBqZ5t5Ehb52DD5XI2jdJ/pBZfLZeWTZtA6JV+McDGjg8opM6620sgB/2/e9GbCqxfSgw==} peerDependencies: @@ -3077,6 +3915,27 @@ packages: - react-dom dev: true + /@flowgram.ai/json-schema@1.0.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-LRthiqbJayqJQK/lvrCM9EcTr/mGKCwTc/8eOApHCYq3tLRYHt1/DXQxhZNdld4dnGSN6vjNgc15donRpXqiVQ==} + peerDependencies: + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@flowgram.ai/core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/utils': 1.0.2(react-dom@18.3.1)(react@18.3.1) + '@flowgram.ai/variable-core': 1.0.2(react-dom@18.3.1)(react@18.3.1) + inversify: 6.2.2(reflect-metadata@0.2.2) + lodash-es: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + reflect-metadata: 0.2.2 + dev: true + /@flowgram.ai/materials-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-7AxDpCPp4tSxD4hhbqpgk9USmW9JzQM9QaJxE7LgzNc/gv9xRA6RRdMcsAH9BSEx6sa0olaqjYpDUiRbqUi3ew==} peerDependencies: @@ -3276,12 +4135,6 @@ packages: reflect-metadata: 0.2.2 dev: true - /@flowgram.ai/runtime-interface@1.0.2: - resolution: {integrity: sha512-s92a02eNslrxqjn+GlkUvAQv43gge3iqSvgHmtPNogwqdL8K7Gw4uSsLXKd9vUrbCjRq/gn76WlQuMCukFbWeg==} - dependencies: - zod: 3.25.76 - dev: true - /@flowgram.ai/select-box-plugin@1.0.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Agy5dFSqK515e/wdcG+BEvb+x+vYM59xfdxv8Mo4AMglB9wZitWy1e65qKudjfp7AJsgnfFdID2c5rT77Kqe4Q==} peerDependencies: @@ -3627,6 +4480,10 @@ packages: resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} dev: true + /@jridgewell/sourcemap-codec@1.5.5: + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + dev: true + /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -3811,6 +4668,18 @@ packages: react-is: 16.13.1 dev: true + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + dev: true + + /@lukeed/uuid@2.0.1: + resolution: {integrity: sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 + dev: true + /@mapbox/node-pre-gyp@1.0.11: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -3829,6 +4698,42 @@ packages: - supports-color dev: false + /@marijn/find-cluster-break@1.0.2: + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + dev: true + + /@mdx-js/mdx@3.1.1: + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.14.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.14.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + dev: true + /@monaco-editor/loader@1.4.0(monaco-editor@0.33.0): resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} peerDependencies: @@ -4034,7 +4939,7 @@ packages: /@nextjournal/lang-clojure@1.0.0: resolution: {integrity: sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@nextjournal/lezer-clojure': 1.0.0 dev: true @@ -4071,6 +4976,10 @@ packages: fastq: 1.17.1 dev: true + /@nozbe/microfuzz@1.0.0: + resolution: {integrity: sha512-XKIg/guk+s1tkPTkHch9hfGOWgsKojT7BqSQddXTppOfVr3SWQhhTCqbgQaPTbppf9gc2kFeG0gpBZZ612UXHA==} + dev: true + /@npmcli/fs@1.1.1: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} requiresBuild: true @@ -4265,88 +5174,158 @@ packages: react: 18.3.1 dev: true + /@remirror/core-constants@3.0.0: + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} + dev: true + /@remix-run/router@1.19.1: resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} engines: {node: '>=14.0.0'} dev: true - /@replit/codemirror-lang-csharp@6.2.0(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2): + /@replit/codemirror-lang-csharp@6.2.0(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2): resolution: {integrity: sha512-6utbaWkoymhoAXj051mkRp+VIJlpwUgCX9Toevz3YatiZsz512fw3OVCedXQx+WcR0wb6zVHjChnuxqfCLtFVQ==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 '@lezer/common': ^1.0.0 '@lezer/highlight': ^1.0.0 '@lezer/lr': ^1.0.0 dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 dev: true - /@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2): + /@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2): resolution: {integrity: sha512-lvzjoYn9nfJzBD5qdm3Ut6G3+Or2wEacYIDJ49h9+19WSChVnxv4ojf+rNmQ78ncuxIt/bfbMvDLMeMP0xze6g==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 '@lezer/common': ^1.0.0 '@lezer/highlight': ^1.0.0 '@lezer/lr': ^1.0.0 dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 dev: true - /@replit/codemirror-lang-solidity@6.0.2(@codemirror/language@6.10.6): + /@replit/codemirror-lang-solidity@6.0.2(@codemirror/language@6.11.3): resolution: {integrity: sha512-/dpTVH338KFV6SaDYYSadkB4bI/0B0QRF/bkt1XS3t3QtyR49mn6+2k0OUQhvt2ZSO7kt10J+OPilRAtgbmX0w==} peerDependencies: - '@codemirror/language': ^6.0.0 + '@codemirror/language': ^6 dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.11.3 '@lezer/highlight': 1.2.1 dev: true - /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.18.3)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2): + /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.18.3)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2): resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 '@codemirror/lang-css': ^6.0.1 '@codemirror/lang-html': ^6.2.0 '@codemirror/lang-javascript': ^6.1.1 - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 '@lezer/common': ^1.0.0 '@lezer/highlight': ^1.0.0 '@lezer/javascript': ^1.2.0 '@lezer/lr': ^1.0.0 dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - '@codemirror/lang-css': 6.3.1(@codemirror/view@6.35.0) + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) + '@codemirror/lang-css': 6.3.1(@codemirror/view@6.38.8) '@codemirror/lang-html': 6.4.9 '@codemirror/lang-javascript': 6.2.2 - '@codemirror/language': 6.10.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/javascript': 1.4.21 '@lezer/lr': 1.4.2 dev: true + /@shikijs/core@3.15.0: + resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} + dependencies: + '@shikijs/types': 3.15.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + dev: true + + /@shikijs/engine-javascript@3.15.0: + resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} + dependencies: + '@shikijs/types': 3.15.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + dev: true + + /@shikijs/engine-oniguruma@3.15.0: + resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} + dependencies: + '@shikijs/types': 3.15.0 + '@shikijs/vscode-textmate': 10.0.2 + dev: true + + /@shikijs/langs@3.12.3: + resolution: {integrity: sha512-9lKnWuO9P06Ro9T8wN0V3rQg3UlKfjCtfDRTnRnFr7szuaGQiQpaAdwFvqkWvHrMNIpfqUEIzAC08b90JONfuQ==} + dependencies: + '@shikijs/types': 3.12.3 + dev: true + + /@shikijs/langs@3.15.0: + resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} + dependencies: + '@shikijs/types': 3.15.0 + dev: true + + /@shikijs/themes@3.12.3: + resolution: {integrity: sha512-rpqLpI2oMrf2BiJdql8U7ZW1UhfJy9lEj4MRyIeXLlkEe5BwaYseFvSbXhJ/4eS8d3F/zlVUOADFX8WihWlccQ==} + dependencies: + '@shikijs/types': 3.12.3 + dev: true + + /@shikijs/themes@3.15.0: + resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} + dependencies: + '@shikijs/types': 3.15.0 + dev: true + + /@shikijs/types@3.12.3: + resolution: {integrity: sha512-spl99dj9qzPcTvYJLhfp6Zw0umQMNN8q3hXo0tbTTylxXtu5Uiy9WLRhuv2P/g+njFd/lSZU7HnctXuxiwEAwg==} + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + dev: true + + /@shikijs/types@3.15.0: + resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + dev: true + + /@shikijs/vscode-textmate@10.0.2: + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + dev: true + /@sideway/address@4.1.5: resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: @@ -4603,6 +5582,159 @@ packages: use-sync-external-store: 1.2.2(react@18.3.1) dev: true + /@tiptap/core@3.11.0(@tiptap/pm@3.11.0): + resolution: {integrity: sha512-kmS7ZVpHm1EMnW1Wmft9H5ZLM7E0G0NGBx+aGEHGDcNxZBXD2ZUa76CuWjIhOGpwsPbELp684ZdpF2JWoNi4Dg==} + peerDependencies: + '@tiptap/pm': ^3.11.0 + dependencies: + '@tiptap/pm': 3.11.0 + dev: true + + /@tiptap/extension-bubble-menu@3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0): + resolution: {integrity: sha512-P3j9lQ+EZ5Zg/isJzLpCPX7bp7WUBmz8GPs/HPlyMyN2su8LqXntITBZr8IP1JNBlB/wR83k/W0XqdC57mG7cA==} + requiresBuild: true + peerDependencies: + '@tiptap/core': ^3.11.0 + '@tiptap/pm': ^3.11.0 + dependencies: + '@floating-ui/dom': 1.7.4 + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + dev: true + optional: true + + /@tiptap/extension-document@3.11.0(@tiptap/core@3.11.0): + resolution: {integrity: sha512-N2G3cwL2Dtur/CgD/byJmFx9T5no6fTO/U462VP3rthQYrRA1AB3TCYqtlwJkmyoxRTNd4qIg4imaPl8ej6Heg==} + peerDependencies: + '@tiptap/core': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + dev: true + + /@tiptap/extension-floating-menu@3.11.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0): + resolution: {integrity: sha512-nEHdWZHEJYX1II1oJQ4aeZ8O/Kss4BRbYFXQFGIvPelCfCYEATpUJh3aq3767ARSq40bOWyu+Dcd4SCW0We6Sw==} + requiresBuild: true + peerDependencies: + '@floating-ui/dom': ^1.0.0 + '@tiptap/core': ^3.11.0 + '@tiptap/pm': ^3.11.0 + dependencies: + '@floating-ui/dom': 1.7.4 + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + dev: true + optional: true + + /@tiptap/extension-hard-break@3.11.0(@tiptap/core@3.11.0): + resolution: {integrity: sha512-NJEHTj++kFOayQXKSQSi9j9eAG33eSiJqai2pf4U+snW94fmb8cYLUurDmfYRe20O6EzBSX0X3GjVlkOz+5b7A==} + peerDependencies: + '@tiptap/core': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + dev: true + + /@tiptap/extension-mention@3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0)(@tiptap/suggestion@3.11.0): + resolution: {integrity: sha512-4y789hKNEvZoNals7PNSGAKThQ+b5nuP/KIEe4wPIfzknjwxzGi0f2YY3L/f+gIhueoZymYpkmhtiRND+wvAWA==} + peerDependencies: + '@tiptap/core': ^3.11.0 + '@tiptap/pm': ^3.11.0 + '@tiptap/suggestion': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + '@tiptap/suggestion': 3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0) + dev: true + + /@tiptap/extension-paragraph@3.11.0(@tiptap/core@3.11.0): + resolution: {integrity: sha512-hxgjZOXOqstRTWv+QjWJjK23rD5qzIV9ePlhX3imLeq/MgX0aU9VBDaG5SGKbSjaBNQnpLw6+sABJi3CDP6Z5A==} + peerDependencies: + '@tiptap/core': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + dev: true + + /@tiptap/extension-text@3.11.0(@tiptap/core@3.11.0): + resolution: {integrity: sha512-ELAYm2BuChzZOqDG9B0k3W6zqM4pwNvXkam28KgHGiT2y7Ni68Rb+NXp16uVR+5zR6hkqnQ/BmJSKzAW59MXpA==} + peerDependencies: + '@tiptap/core': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + dev: true + + /@tiptap/extensions@3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0): + resolution: {integrity: sha512-g43beA73ZMLezez1st9LEwYrRHZ0FLzlsSlOZKk7sdmtHLmuqWHf4oyb0XAHol1HZIdGv104rYaGNgmQXr1ecQ==} + peerDependencies: + '@tiptap/core': ^3.11.0 + '@tiptap/pm': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + dev: true + + /@tiptap/pm@3.11.0: + resolution: {integrity: sha512-plCQDLCZIOc92cizB8NNhBRN0szvYR3cx9i5IXo6v9Xsgcun8KHNcJkesc2AyeqdIs0BtOJZaqQ9adHThz8UDw==} + dependencies: + prosemirror-changeset: 2.3.1 + prosemirror-collab: 1.3.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.2 + prosemirror-gapcursor: 1.4.0 + prosemirror-history: 1.5.0 + prosemirror-inputrules: 1.5.1 + prosemirror-keymap: 1.2.3 + prosemirror-markdown: 1.13.2 + prosemirror-menu: 1.2.5 + prosemirror-model: 1.25.4 + prosemirror-schema-basic: 1.2.4 + prosemirror-schema-list: 1.5.1 + prosemirror-state: 1.4.4 + prosemirror-tables: 1.8.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3) + prosemirror-transform: 1.10.5 + prosemirror-view: 1.41.3 + dev: true + + /@tiptap/react@3.11.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-SDGei/2DjwmhzsxIQNr6dkB6NxLgXZjQ6hF36NfDm4937r5NLrWrNk5tCsoDQiKZ0DHEzuJ6yZM5C7I7LZLB6w==} + peerDependencies: + '@tiptap/core': ^3.11.0 + '@tiptap/pm': ^3.11.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 || 18 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@types/use-sync-external-store': 0.0.6 + fast-deep-equal: 3.1.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + use-sync-external-store: 1.6.0(react@18.3.1) + optionalDependencies: + '@tiptap/extension-bubble-menu': 3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0) + '@tiptap/extension-floating-menu': 3.11.0(@floating-ui/dom@1.7.4)(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0) + transitivePeerDependencies: + - '@floating-ui/dom' + dev: true + + /@tiptap/suggestion@3.11.0(@tiptap/core@3.11.0)(@tiptap/pm@3.11.0): + resolution: {integrity: sha512-4zGU3l1rZ7P112en3HiMXZuKCcZSXdwtdSIfQQV94jNyumg/imYFeYARVsabfv6hFjtEuwbq0ev8y13Bl+1Quw==} + peerDependencies: + '@tiptap/core': ^3.11.0 + '@tiptap/pm': ^3.11.0 + dependencies: + '@tiptap/core': 3.11.0(@tiptap/pm@3.11.0) + '@tiptap/pm': 3.11.0 + dev: true + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -4699,7 +5831,16 @@ packages: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: '@types/ms': 0.7.34 - dev: false + + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + dependencies: + '@types/estree': 1.0.8 + dev: true + + /@types/estree@1.0.8: + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + dev: true /@types/express-jwt@6.0.4: resolution: {integrity: sha512-I53KRQ9D0eTA6hVCN9S73iOeprKS3JNWK+Cp2mDPB6uOIkTVpkgSkX394kHQzb5cd0U02I0adRmsMxHk+zX8tA==} @@ -4747,6 +5888,16 @@ packages: resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==} dev: true + /@types/hash-sum@1.0.2: + resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==} + dev: true + + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 3.0.3 + dev: true + /@types/helmet@4.0.0: resolution: {integrity: sha512-ONIn/nSNQA57yRge3oaMQESef/6QhoeX7llWeDli0UZIfz8TQMkfNPTXA8VnnyeA1WUjG2pGqdjEIueYonMdfQ==} deprecated: This is a stub types definition. helmet provides its own type definitions, so you do not need this installed. @@ -4822,6 +5973,10 @@ packages: '@types/node': 17.0.45 dev: false + /@types/linkify-it@5.0.0: + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + dev: true + /@types/lodash-es@4.17.12: resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} dependencies: @@ -4832,6 +5987,27 @@ packages: resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} dev: true + /@types/markdown-it@14.1.2: + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + dev: true + + /@types/mdast@4.0.4: + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + dependencies: + '@types/unist': 3.0.3 + dev: true + + /@types/mdurl@2.0.0: + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + dev: true + + /@types/mdx@2.0.13: + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + dev: true + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true @@ -4842,7 +6018,6 @@ packages: /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: false /@types/multer@1.4.12: resolution: {integrity: sha512-pQ2hoqvXiJt2FP9WQVLPRO+AmiIm/ZYkavPlIQnx282u4ZrVdztx0pkh3jjpQt0Kz+YI0YhSG264y08UJKoUQg==} @@ -4977,10 +6152,22 @@ packages: resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} dev: false + /@types/unist@2.0.11: + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + dev: true + + /@types/unist@3.0.3: + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + dev: true + /@types/use-sync-external-store@0.0.3: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: true + /@types/use-sync-external-store@0.0.6: + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + dev: true + /@types/uuid@8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} dev: true @@ -5150,27 +6337,38 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@uiw/codemirror-extensions-basic-setup@4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/commands@6.7.1)(@codemirror/language@6.10.6)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0): + /@typescript/vfs@1.6.2(typescript@5.9.3): + resolution: {integrity: sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g==} + peerDependencies: + typescript: '*' + dependencies: + debug: 4.3.7(supports-color@5.5.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@uiw/codemirror-extensions-basic-setup@4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/commands@6.7.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8): resolution: {integrity: sha512-bvtq8IOvdkLJMhoJBRGPEzU51fMpPDwEhcAHp9xCR05MtbIokQgsnLXrmD1aZm6e7s/3q47H+qdSfAAkR5MkLA==} peerDependencies: '@codemirror/autocomplete': '>=6.0.0' '@codemirror/commands': '>=6.0.0' - '@codemirror/language': '>=6.0.0' + '@codemirror/language': ^6 '@codemirror/lint': '>=6.0.0' '@codemirror/search': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' + '@codemirror/state': ^6 + '@codemirror/view': ^6 dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) '@codemirror/commands': 6.7.1 - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.11.3 '@codemirror/lint': 6.8.4 '@codemirror/search': 6.5.8 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 dev: true - /@uiw/codemirror-extensions-langs@4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/language-data@6.5.1)(@codemirror/language@6.10.6)(@codemirror/legacy-modes@6.4.2)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2): + /@uiw/codemirror-extensions-langs@4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/language-data@6.5.1)(@codemirror/language@6.11.3)(@codemirror/legacy-modes@6.4.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2): resolution: {integrity: sha512-VKWbEXmVq3EFYrJPWXH4Ei1f92zxuAg6dOlo8suSmwjmEc0qjNEP5Ss2CUi9LlzuWMGMmZgdKw56I3L71wYOog==} peerDependencies: '@codemirror/language-data': '>=6.0.0' @@ -5178,30 +6376,30 @@ packages: dependencies: '@codemirror/lang-angular': 0.1.3 '@codemirror/lang-cpp': 6.0.2 - '@codemirror/lang-css': 6.3.1(@codemirror/view@6.35.0) + '@codemirror/lang-css': 6.3.1(@codemirror/view@6.38.8) '@codemirror/lang-html': 6.4.9 '@codemirror/lang-java': 6.0.1 '@codemirror/lang-javascript': 6.2.2 '@codemirror/lang-json': 6.0.1 - '@codemirror/lang-less': 6.0.2(@codemirror/view@6.35.0) + '@codemirror/lang-less': 6.0.2(@codemirror/view@6.38.8) '@codemirror/lang-lezer': 6.0.1 '@codemirror/lang-liquid': 6.2.2 '@codemirror/lang-markdown': 6.3.1 '@codemirror/lang-php': 6.0.1 - '@codemirror/lang-python': 6.1.6(@codemirror/view@6.35.0) + '@codemirror/lang-python': 6.1.6(@codemirror/view@6.38.8) '@codemirror/lang-rust': 6.0.1 - '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.35.0) - '@codemirror/lang-sql': 6.8.0(@codemirror/view@6.35.0) + '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.38.8) + '@codemirror/lang-sql': 6.8.0(@codemirror/view@6.38.8) '@codemirror/lang-vue': 0.1.3 '@codemirror/lang-wast': 6.0.2 '@codemirror/lang-xml': 6.1.0 - '@codemirror/language-data': 6.5.1(@codemirror/view@6.35.0) + '@codemirror/language-data': 6.5.1(@codemirror/view@6.38.8) '@codemirror/legacy-modes': 6.4.2 '@nextjournal/lang-clojure': 1.0.0 - '@replit/codemirror-lang-csharp': 6.2.0(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) - '@replit/codemirror-lang-nix': 6.0.1(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) - '@replit/codemirror-lang-solidity': 6.0.2(@codemirror/language@6.10.6) - '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.18.3)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2) + '@replit/codemirror-lang-csharp': 6.2.0(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + '@replit/codemirror-lang-nix': 6.0.1(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + '@replit/codemirror-lang-solidity': 6.0.2(@codemirror/language@6.11.3) + '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.18.3)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.21)(@lezer/lr@1.4.2) codemirror-lang-mermaid: 0.5.0 transitivePeerDependencies: - '@codemirror/autocomplete' @@ -5214,13 +6412,13 @@ packages: - '@lezer/lr' dev: true - /@uiw/react-codemirror@4.23.6(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.10.6)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.35.0)(codemirror@6.0.1)(react-dom@18.3.1)(react@18.3.1): + /@uiw/react-codemirror@4.23.6(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.3)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.38.8)(codemirror@6.0.1)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-caYKGV6TfGLRV1HHD3p0G3FiVzKL1go7wes5XT2nWjB0+dTdyzyb81MKRSacptgZcotujfNO6QXn65uhETRAMw==} peerDependencies: '@babel/runtime': '>=7.11.0' - '@codemirror/state': '>=6.0.0' + '@codemirror/state': ^6 '@codemirror/theme-one-dark': '>=6.0.0' - '@codemirror/view': '>=6.0.0' + '@codemirror/view': ^6 codemirror: '>=6.0.0' react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' @@ -5232,10 +6430,10 @@ packages: dependencies: '@babel/runtime': 7.26.0 '@codemirror/commands': 6.7.1 - '@codemirror/state': 6.4.1 + '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.35.0 - '@uiw/codemirror-extensions-basic-setup': 4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/commands@6.7.1)(@codemirror/language@6.10.6)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0) + '@codemirror/view': 6.38.8 + '@uiw/codemirror-extensions-basic-setup': 4.23.6(@codemirror/autocomplete@6.18.3)(@codemirror/commands@6.7.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8) codemirror: 6.0.1(@lezer/common@1.2.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5936,6 +7134,10 @@ packages: resolution: {integrity: sha512-2UGcYg48jUOPL/Id836kHIhbKmVKs0eeeDfQ8mofa3WxxzmNXnwkHOYFAkdnk1r9wGZ77guluyQptxMbquQW7A==} dev: true + /@ungap/structured-clone@1.3.0: + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + dev: true + /@vitejs/plugin-react@4.0.0(vite@4.5.2): resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5951,6 +7153,84 @@ packages: - supports-color dev: true + /@vscode/l10n@0.0.18: + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + dev: true + + /@vue/compiler-core@3.5.24: + resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} + dependencies: + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.24 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + dev: true + + /@vue/compiler-dom@3.5.24: + resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} + dependencies: + '@vue/compiler-core': 3.5.24 + '@vue/shared': 3.5.24 + dev: true + + /@vue/compiler-sfc@3.5.24: + resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} + dependencies: + '@babel/parser': 7.28.5 + '@vue/compiler-core': 3.5.24 + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + dev: true + + /@vue/compiler-ssr@3.5.24: + resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} + dependencies: + '@vue/compiler-dom': 3.5.24 + '@vue/shared': 3.5.24 + dev: true + + /@vue/reactivity@3.5.24: + resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} + dependencies: + '@vue/shared': 3.5.24 + dev: true + + /@vue/runtime-core@3.5.24: + resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==} + dependencies: + '@vue/reactivity': 3.5.24 + '@vue/shared': 3.5.24 + dev: true + + /@vue/runtime-dom@3.5.24: + resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==} + dependencies: + '@vue/reactivity': 3.5.24 + '@vue/runtime-core': 3.5.24 + '@vue/shared': 3.5.24 + csstype: 3.1.3 + dev: true + + /@vue/server-renderer@3.5.24(vue@3.5.24): + resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==} + peerDependencies: + vue: 3.5.24 + dependencies: + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + vue: 3.5.24(typescript@5.2.2) + dev: true + + /@vue/shared@3.5.24: + resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} + dev: true + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} requiresBuild: true @@ -6404,6 +7684,15 @@ packages: engines: {node: '>=8'} dev: true + /astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + dev: true + + /async-validator@3.5.2: + resolution: {integrity: sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==} + dev: true + /async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} dev: true @@ -6495,7 +7784,7 @@ packages: /babel-plugin-emotion@10.2.2: resolution: {integrity: sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==} dependencies: - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.4 '@emotion/serialize': 0.11.16 @@ -6512,7 +7801,7 @@ packages: /babel-plugin-import@1.13.8: resolution: {integrity: sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==} dependencies: - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -6560,6 +7849,25 @@ packages: zod-validation-error: 2.1.0(zod@3.25.76) dev: true + /babel-plugin-styled-components@2.1.4(styled-components@5.3.11)(supports-color@5.5.0): + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + peerDependenciesMeta: + styled-components: + optional: true + dependencies: + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) + '@babel/plugin-syntax-jsx': 7.25.9 + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + /babel-plugin-styled-components@2.1.4(styled-components@6.1.1): resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} peerDependencies: @@ -6569,7 +7877,7 @@ packages: optional: true dependencies: '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/plugin-syntax-jsx': 7.25.9 lodash: 4.17.21 picomatch: 2.3.1 @@ -6621,6 +7929,10 @@ packages: babel-preset-current-node-syntax: 1.1.0 dev: true + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -6635,8 +7947,8 @@ packages: resolution: {integrity: sha512-1J5SWbkoVJH9DTALN8igB4p+nPKZzPrJ/HomqBDLpfUvDXCdjdBmBUcH5McZfur0lftVssVU6BZug5NYh87zTw==} dev: true - /bezier-js@6.1.4: - resolution: {integrity: sha512-PA0FW9ZpcHbojUCMu28z9Vg/fNkwTj5YhusSAjHHDfHDGLxJ6YUKrAN2vk1fP2MMOxVw4Oko16FMlRGVBGqLKg==} + /bezier-easing@2.1.0: + resolution: {integrity: sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==} dev: true /big-integer@1.6.52: @@ -6937,6 +8249,10 @@ packages: engines: {node: '>=12.13'} dev: true + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: true + /celebrate@15.0.3: resolution: {integrity: sha512-ToF8ILq/F0KhQ0CPtexP7Cu9GkqKJ91VKy3ZOCV24aaNWdm3QCHqnXAKfKHrtcM2B2zmPFe11p8WWsQkmq8k4g==} dependencies: @@ -6958,6 +8274,22 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: true + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: true + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: true + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -7087,28 +8419,49 @@ packages: engines: {node: '>=6'} dev: true + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: true + /codemirror-lang-mermaid@0.5.0: resolution: {integrity: sha512-Taw/2gPCyNArQJCxIP/HSUif+3zrvD+6Ugt7KJZ2dUKou/8r3ZhcfG8krNTZfV2iu8AuGnymKuo7bLPFyqsh/A==} dependencies: - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.10.0 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 dev: true + /codemirror-shiki@0.2.5(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(shiki@3.15.0): + resolution: {integrity: sha512-EFtjSYtT0osdjM4HLek5juVu8QVmG7E58Dib91yOO/vhGj+i3b63PyD8UF+PWXRTRaZa6q5Z6J02Iq0M/u0fHQ==} + peerDependencies: + '@codemirror/state': ^6 + '@codemirror/view': ^6 + shiki: '>=2.0.0' + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 + shiki: 3.15.0 + dev: true + /codemirror@6.0.1(@lezer/common@1.2.3): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/common@1.2.3) '@codemirror/commands': 6.7.1 - '@codemirror/language': 6.10.6 + '@codemirror/language': 6.11.3 '@codemirror/lint': 6.8.4 '@codemirror/search': 6.5.8 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.35.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.8 transitivePeerDependencies: - '@lezer/common' dev: true + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -7167,6 +8520,14 @@ packages: delayed-stream: 1.0.0 dev: true + /comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + dev: true + + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: true + /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} @@ -7311,6 +8672,11 @@ packages: is-what: 4.1.16 dev: true + /copy-text-to-clipboard@2.2.0: + resolution: {integrity: sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==} + engines: {node: '>=6'} + dev: true + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: @@ -7637,6 +9003,14 @@ packages: is-data-view: 1.0.1 dev: true + /date-fns-tz@1.3.8(date-fns@2.30.0): + resolution: {integrity: sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==} + peerDependencies: + date-fns: '>=2.0.0' + dependencies: + date-fns: 2.30.0 + dev: true + /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} @@ -7705,6 +9079,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + dependencies: + character-entities: 2.0.2 + dev: true + /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -7789,6 +9169,11 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + /des.js@1.1.0: resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} dependencies: @@ -7825,6 +9210,12 @@ packages: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -8259,6 +9650,10 @@ packages: is-symbol: 1.1.0 dev: true + /es-toolkit@1.42.0: + resolution: {integrity: sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA==} + dev: true + /es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} @@ -8294,6 +9689,24 @@ packages: ext: 1.7.0 dev: true + /esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + dev: true + + /esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.14.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + dev: true + /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -8376,6 +9789,11 @@ packages: engines: {node: '>=10'} dev: true + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.35.0)(typescript@5.2.2): resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8577,6 +9995,57 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + dependencies: + '@types/estree': 1.0.8 + dev: true + + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + dev: true + + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: true + + /estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + dev: true + + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.4 + dev: true + + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.8 + dev: true + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -8764,6 +10233,14 @@ packages: is-extendable: 0.1.1 dev: true + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -9357,6 +10834,10 @@ packages: safe-buffer: 5.2.1 dev: true + /hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + dev: true + /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: @@ -9370,6 +10851,73 @@ packages: dependencies: function-bind: 1.1.2 + /hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + dev: true + + /hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + dependencies: + '@types/hast': 3.0.4 + dev: true + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -9451,6 +10999,10 @@ packages: engines: {node: '>=8'} dev: true + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: true + /html-webpack-plugin@5.5.0: resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} engines: {node: '>=10.13.0'} @@ -9625,6 +11177,10 @@ packages: dev: true optional: true + /immer@10.1.3: + resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} + dev: true + /immer@8.0.4: resolution: {integrity: sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ==} dev: true @@ -9690,6 +11246,10 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true + /inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + dev: true + /internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -9763,6 +11323,17 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: true + + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: true + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -9849,6 +11420,10 @@ packages: has-tostringtag: 1.0.2 dev: true + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: true + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -9927,6 +11502,10 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: true + /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -10217,6 +11796,28 @@ packages: '@sideway/pinpoint': 2.0.0 dev: false + /jotai@2.15.1(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-yHT1HAZ3ba2Q8wgaUQ+xfBzEtcS8ie687I8XVCBinfg4bNniyqLIN+utPXWKQE93LMF5fPbQSVRZqgpcN5yd6Q==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@babel/core': '>=7.0.0' + '@babel/template': '>=7.0.0' + '@types/react': '>=17.0.0' + react: '>=17.0.0 || 18' + peerDependenciesMeta: + '@babel/core': + optional: true + '@babel/template': + optional: true + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.3.12 + react: 18.3.1 + dev: true + /js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} @@ -10294,6 +11895,10 @@ packages: hasBin: true dev: true + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -10529,6 +12134,12 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + dependencies: + uc.micro: 2.1.0 + dev: true + /lint-staged@13.3.0: resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} engines: {node: ^16.14.0 || >=18.0.0} @@ -10684,6 +12295,10 @@ packages: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} dev: false + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: true + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -10691,6 +12306,10 @@ packages: js-tokens: 4.0.0 dev: true + /lottie-web@5.13.0: + resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} + dev: true + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: @@ -10723,6 +12342,17 @@ packages: engines: {node: '>=12'} dev: false + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -10795,6 +12425,43 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: false + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + dev: true + + /markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + dev: true + + /markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + dev: true + + /marked-shiki@1.2.1(marked@15.0.12)(shiki@3.15.0): + resolution: {integrity: sha512-yHxYQhPY5oYaIRnROn98foKhuClark7M373/VpLxiy5TrDu9Jd/LsMwo8w+U91Up4oDb9IXFrP0N1MFRz8W/DQ==} + peerDependencies: + marked: '>=7.0.0' + shiki: '>=1.0.0' + dependencies: + marked: 15.0.12 + shiki: 3.15.0 + dev: true + + /marked@15.0.12: + resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} + engines: {node: '>= 18'} + hasBin: true + dev: true + /mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} dev: true @@ -10807,10 +12474,209 @@ packages: safe-buffer: 5.2.1 dev: true + /mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + dev: true + + /mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + dev: true + + /mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + dev: true + + /mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + dev: true + + /mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: true + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.4 + dev: true + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -10860,6 +12726,340 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + /micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + dev: true + + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + dependencies: + micromark-util-types: 2.0.2 + dev: true + + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + dev: true + + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + dev: true + + /micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + dependencies: + micromark-util-symbol: 2.0.1 + dev: true + + /micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + dependencies: + micromark-util-symbol: 2.0.1 + dev: true + + /micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + dev: true + + /micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + dev: true + + /micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + dev: true + + /micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + dev: true + + /micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + dependencies: + micromark-util-symbol: 2.0.1 + dev: true + + /micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + dependencies: + micromark-util-types: 2.0.2 + dev: true + + /micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + dev: true + + /micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + dev: true + + /micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + dev: true + + /micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + dev: true + + /micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.7(supports-color@5.5.0) + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11035,6 +13235,10 @@ packages: yallist: 4.0.0 dev: false + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -11095,6 +13299,12 @@ packages: thenify-all: 1.6.0 dev: true + /nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11511,6 +13721,18 @@ packages: mimic-fn: 4.0.0 dev: true + /oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + dev: true + + /oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + dev: true + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -11542,6 +13764,10 @@ packages: word-wrap: 1.2.5 dev: true + /orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + dev: true + /os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} dev: true @@ -11563,6 +13789,10 @@ packages: minimist: 1.2.8 dev: true + /overlayscrollbars@2.12.0: + resolution: {integrity: sha512-mWJ5MOkcZ/ljHwfLw8+bN0V9ziGCoNoqULcp994j5DTGNQvnkWKWkA7rnO29Kyew5AoHxUnJ4Ndqfcl0HSQjXg==} + dev: true + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -11652,6 +13882,18 @@ packages: safe-buffer: 5.2.1 dev: true + /parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.2.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: true + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -12389,7 +14631,16 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: true + + /postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 dev: true @@ -12457,6 +14708,11 @@ packages: react-is: 16.13.1 dev: true + /prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + dev: true + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -12511,6 +14767,153 @@ packages: signal-exit: 3.0.7 dev: false + /property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + dev: true + + /prosemirror-changeset@2.3.1: + resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==} + dependencies: + prosemirror-transform: 1.10.5 + dev: true + + /prosemirror-collab@1.3.1: + resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} + dependencies: + prosemirror-state: 1.4.4 + dev: true + + /prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} + dependencies: + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + dev: true + + /prosemirror-dropcursor@1.8.2: + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + prosemirror-view: 1.41.3 + dev: true + + /prosemirror-gapcursor@1.4.0: + resolution: {integrity: sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==} + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.3 + dev: true + + /prosemirror-history@1.5.0: + resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==} + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + prosemirror-view: 1.41.3 + rope-sequence: 1.3.4 + dev: true + + /prosemirror-inputrules@1.5.1: + resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==} + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + dev: true + + /prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} + dependencies: + prosemirror-state: 1.4.4 + w3c-keyname: 2.2.8 + dev: true + + /prosemirror-markdown@1.13.2: + resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 14.1.0 + prosemirror-model: 1.25.4 + dev: true + + /prosemirror-menu@1.2.5: + resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==} + dependencies: + crelt: 1.0.6 + prosemirror-commands: 1.7.1 + prosemirror-history: 1.5.0 + prosemirror-state: 1.4.4 + dev: true + + /prosemirror-model@1.25.4: + resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==} + dependencies: + orderedmap: 2.1.1 + dev: true + + /prosemirror-schema-basic@1.2.4: + resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} + dependencies: + prosemirror-model: 1.25.4 + dev: true + + /prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} + dependencies: + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + dev: true + + /prosemirror-state@1.4.4: + resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} + dependencies: + prosemirror-model: 1.25.4 + prosemirror-transform: 1.10.5 + prosemirror-view: 1.41.3 + dev: true + + /prosemirror-tables@1.8.1: + resolution: {integrity: sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==} + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + prosemirror-view: 1.41.3 + dev: true + + /prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3): + resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} + peerDependencies: + prosemirror-model: ^1.22.1 + prosemirror-state: ^1.4.2 + prosemirror-view: ^1.33.8 + dependencies: + '@remirror/core-constants': 3.0.0 + escape-string-regexp: 4.0.0 + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-view: 1.41.3 + dev: true + + /prosemirror-transform@1.10.5: + resolution: {integrity: sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==} + dependencies: + prosemirror-model: 1.25.4 + dev: true + + /prosemirror-view@1.41.3: + resolution: {integrity: sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==} + dependencies: + prosemirror-model: 1.25.4 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.10.5 + dev: true + /protobufjs@7.5.4: resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} engines: {node: '>=12.0.0'} @@ -12585,6 +14988,11 @@ packages: resolution: {integrity: sha512-e4mSfzGfrVBJmhjp+8PHjXIz5WrvEEWB2FT+RJ6YS/ozGttTcnocuj0CtMo3dujWYe2708bTd79zeIrKBtRzCg==} dev: true + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + dev: true + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true @@ -13568,6 +15976,23 @@ packages: scheduler: 0.23.2 dev: true + /react-draggable@4.5.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-VC+HBLEZ0XJxnOxVAZsdRi8rD04Iz3SiiKOoYzamjylUcju/hP9np/aZdLHf/7WOD268WMoNJMvYfB5yAK45cw==} + peerDependencies: + react: '>= 16.3.0 || 18' + react-dom: '>= 16.3.0 || 18' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + clsx: 2.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + /react-easy-crop@5.2.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-gjb7jN+WnwfgpbNUI2jSwyoIxF1sJ0PVSNVgEysAgF1rj8AqR75fqmdvqZ6PFVgEX3rT1G4HJELesiQXr2ZvAg==} peerDependencies: @@ -13729,6 +16154,21 @@ packages: engines: {node: '>=0.10.0'} dev: true + /react-resizable@3.0.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==} + peerDependencies: + react: '>= 16.3 || 18' + peerDependenciesMeta: + react: + optional: true + dependencies: + prop-types: 15.8.1 + react: 18.3.1 + react-draggable: 4.5.0(react-dom@18.3.1)(react@18.3.1) + transitivePeerDependencies: + - react-dom + dev: true + /react-router-dom@6.26.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==} engines: {node: '>=14.0.0'} @@ -13832,6 +16272,24 @@ packages: prop-types: 15.8.1 dev: true + /react-window@1.8.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || 18 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || 18 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@babel/runtime': 7.26.0 + memoize-one: 5.2.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: true + /react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -13906,6 +16364,45 @@ packages: engines: {node: '>= 12.13.0'} dev: true + /recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + dev: true + + /recma-jsx@1.0.1(acorn@8.14.0): + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + dev: true + + /recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + dev: true + + /recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + dev: true + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -13959,6 +16456,22 @@ packages: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: true + /regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + dependencies: + regex-utilities: 2.3.0 + dev: true + + /regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + dev: true + + /regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + dependencies: + regex-utilities: 2.3.0 + dev: true + /regexp.prototype.flags@1.5.3: resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} engines: {node: '>= 0.4'} @@ -13974,11 +16487,72 @@ packages: engines: {node: '>=8'} dev: true + /rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} dev: true + /remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + dev: true + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + dev: true + /remove-accents@0.5.0: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} dev: true @@ -14118,6 +16692,10 @@ packages: fsevents: 2.3.3 dev: true + /rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + dev: true + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -14394,6 +16972,19 @@ packages: engines: {node: '>= 0.4'} dev: true + /shiki@3.15.0: + resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} + dependencies: + '@shikijs/core': 3.15.0 + '@shikijs/engine-javascript': 3.15.0 + '@shikijs/engine-oniguruma': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/types': 3.15.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + dev: true + /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -14559,6 +17150,10 @@ packages: engines: {node: '>= 8'} dev: true + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: true + /spawn-command@0.0.2: resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} dev: true @@ -14808,6 +17403,13 @@ packages: dependencies: safe-buffer: 5.2.1 + /stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -14851,10 +17453,52 @@ packages: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} dev: true + /style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + dependencies: + style-to-object: 1.0.14 + dev: true + + /style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + dependencies: + inline-style-parser: 0.2.7 + dev: true + /style-utils@0.3.8: resolution: {integrity: sha512-RmGftIhY4tqtD1ERwKsVEDlt/M6UyxN/rcr95UmlooWmhtL0RwVUYJkpo1kSx3ppd9/JZzbknhy742zbMAawjQ==} dev: true + /styled-components@5.3.11(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0 || 18' + react-dom: '>= 16.8.0 || 18' + react-is: '>= 16.8.0' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) + '@babel/traverse': 7.25.9(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.3.1 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.4(styled-components@5.3.11)(supports-color@5.5.0) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + shallowequal: 1.1.0 + supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' + dev: true + /styled-components@6.1.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==} engines: {node: '>= 16'} @@ -15119,6 +17763,10 @@ packages: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} dev: false + /text-mapping@1.0.1: + resolution: {integrity: sha512-lONDMFNJ6QPjxYPcxkAy420qB+jMRxXERkNJAVDapQeZs0POW4pWryG9R+kAer6H+VDh/Z07x9GMNhhQrnSVIw==} + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -15224,6 +17872,10 @@ packages: hasBin: true dev: true + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: true + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -15239,6 +17891,10 @@ packages: engines: {node: '>= 14.0.0'} dev: false + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + dev: true + /ts-node@10.9.2(@types/node@17.0.45)(typescript@5.2.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -15454,6 +18110,16 @@ packages: hasBin: true dev: true + /typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + dev: true + /umi@4.4.4(@types/node@17.0.45)(@types/react@18.3.12)(eslint@8.35.0)(prettier@2.8.8)(react-dom@18.3.1)(react@18.3.1)(sockjs-client@1.6.1)(stylelint@14.8.2)(typescript@5.2.2): resolution: {integrity: sha512-5ymoTVbuVlMD36XE1jcAQJ4KA8n5olZ31QGqbunEiZUCYubJk6E+30rZBo1pyNe6Zn6HROK8JUUdF1WDn1nchw==} engines: {node: '>=14'} @@ -15534,6 +18200,18 @@ packages: resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} dev: true + /unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + dev: true + /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} requiresBuild: true @@ -15550,6 +18228,45 @@ packages: dev: false optional: true + /unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + dependencies: + '@types/unist': 3.0.3 + dev: true + + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + dependencies: + '@types/unist': 3.0.3 + dev: true + + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + dependencies: + '@types/unist': 3.0.3 + dev: true + + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.3 + dev: true + + /unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + dev: true + + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + dev: true + /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -15689,6 +18406,17 @@ packages: react: 18.3.1 dev: true + /use-sync-external-store@1.6.0(react@18.3.1): + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || 18 + peerDependenciesMeta: + react: + optional: true + dependencies: + react: 18.3.1 + dev: true + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -15720,6 +18448,11 @@ packages: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} dev: true + /utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + dev: true + /utility@1.18.0: resolution: {integrity: sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==} engines: {node: '>= 0.12.0'} @@ -15787,6 +18520,20 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + /vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + dev: true + + /vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + dev: true + /vh-check@2.0.5: resolution: {integrity: sha512-vHtIYWt9uLl2P2tLlatVpMwv9+ezuJCtMNjUVIpzd5Pa/dJXN8AtqkKmVRcNSlmXyCjkCkbMQX/Vs9axmdlfgg==} dev: true @@ -15851,6 +18598,44 @@ packages: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true + /vscode-json-languageservice@5.6.3: + resolution: {integrity: sha512-UDF7sJF5t7mzUzXL6dsClkvnHS4xnDL/gOMKGQiizRHmswlk/xSPGZxEvAtszWQF0ImNcJ0j9l+rHuefGzit1w==} + dependencies: + '@vscode/l10n': 0.0.18 + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + dev: true + + /vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + dev: true + + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + dev: true + + /vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + dev: true + + /vue@3.5.24(typescript@5.2.2): + resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-sfc': 3.5.24 + '@vue/runtime-dom': 3.5.24 + '@vue/server-renderer': 3.5.24(vue@3.5.24) + '@vue/shared': 3.5.24 + typescript: 5.2.2 + dev: true + /w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} dev: true @@ -16140,6 +18925,10 @@ packages: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} dev: true + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: true + github.com/whyour/node-sqlite3/3a00af0b5d7603b7f1b290032507320b18a6b741: resolution: {tarball: https://codeload.github.com/whyour/node-sqlite3/tar.gz/3a00af0b5d7603b7f1b290032507320b18a6b741} name: '@whyour/sqlite3' @@ -16159,7 +18948,3 @@ packages: - encoding - supports-color dev: false - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false diff --git a/src/layouts/index.less b/src/layouts/index.less index 66a08da5..9fd58052 100644 --- a/src/layouts/index.less +++ b/src/layouts/index.less @@ -39,6 +39,7 @@ body { max-height: calc(80vh - 110px); max-height: calc(80vh - var(--vh-offset, 110px)); overflow-y: auto; + position: relative; } .log-modal { diff --git a/src/pages/scenario/flowgram/FlowgramEditor.tsx b/src/pages/scenario/flowgram/FlowgramEditor.tsx deleted file mode 100644 index b67da033..00000000 --- a/src/pages/scenario/flowgram/FlowgramEditor.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React, { useEffect, useImperativeHandle, forwardRef } from 'react'; -import { EditorRenderer, FreeLayoutEditorProvider } from '@flowgram.ai/free-layout-editor'; -import { DockedPanelLayer } from '@flowgram.ai/panel-manager-plugin'; -import '@flowgram.ai/free-layout-editor/index.css'; -import { nodeRegistries } from './nodes'; -import { useEditorProps } from './hooks/use-editor-props'; -import './editor.less'; - -export interface FlowgramEditorProps { - initialData?: any; - onChange?: (data: any) => void; -} - -export interface FlowgramEditorRef { - getData: () => any; -} - -const FlowgramEditor = forwardRef( - ({ initialData, onChange }, ref) => { - const defaultData = initialData || { - nodes: [], - edges: [], - viewport: { x: 0, y: 0, zoom: 1 }, - }; - - const editorProps = useEditorProps(defaultData, nodeRegistries); - - useImperativeHandle(ref, () => ({ - getData: () => { - // This would need to be implemented to get the current editor state - // For now, return the default data structure - return defaultData; - }, - })); - - useEffect(() => { - if (onChange) { - // Setup change listener - // This would need integration with Flowgram's onChange events - } - }, [onChange]); - - return ( -
- -
- - -
-
-
- ); - } -); - -FlowgramEditor.displayName = 'FlowgramEditor'; - -export default FlowgramEditor; diff --git a/src/pages/scenario/flowgram/assets/icon-break.svg b/src/pages/scenario/flowgram/assets/icon-break.svg new file mode 100644 index 00000000..ef172eee --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-break.svg @@ -0,0 +1 @@ + diff --git a/src/pages/scenario/flowgram/assets/icon-case.png b/src/pages/scenario/flowgram/assets/icon-case.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a9d1a26557ecef9e2e1cff3362054717dc8e40 GIT binary patch literal 2293 zcmZvedpy&B1I0hz@66WNX0lw*Lj`)&R<8!@nqp~R2%>R@5W~M%oF*au&VRk zu#wj?4=Boq#L`&8!MHxz?U4&!i;%M}GH3|se}pk1F_*x64wB1TMo4+6 zyIyKZv9C`BcRn4zkuV;%>*`qVh~waZW7GKBx#=K#V(;s3b0aUeR|&z^(N(k6L**vo zgd>ATpk0%fH`>^Xx>@BQv@W9Oph>h_uI~ASLPiu2ZKz2flH@g8J)r1j0@~f7E~_Mk z&1^ne#~CHd9=&8|1Dx3)Q#)q)$|Qx>swMF-_gcM#hs8SSfaf6!BYevmu`mD8>~A{F z7sLG>Jf~X*(Qo1CVUpMl-M7o{h}50PAiFwdT}2jQzxX11U3<-XW-v9gZ(^kn$^;==KJ*CEmeZ^+V({f|LJHULOs~Hho<`QUyS@XHRE~N zG3xVd%c{=F^_wxg>cTx?SYL>18P581!(Bl0DYH+cg0JXBoSEgur0^1$9xvcHSbjJf z-eq14F9LQa=A<_yM}qTGanFF&0{@KDHWBGB&-po;+g;WN3BQTG)7o3Y>#VKAGvZ6> zDxhUrurNJ(>-fW$QLwj77)q)cVi@YG?QQRvz60&qhynP39jC4J)Uh4j2pa490asYk=iy zA&E}bpxyZX@?t-i=!@A-PQ=gZKb{#>8i6lt3^>i#d*$lmk`X<7+s*I%A&wUK!otuZ zCy$e3Ph>W%HKBtdh9?RO#`nx38gJ7E14L@Fab~jA7;uP%gq{bJ*$LW2B6eT~UH%pnqm$CpMDhEc1#H2K1vm zcbab-f;D8=f5H?F9Cgo;gVXM2cnzN|Bw+T{4j_~wpR+FC3h#uVf$_(aIshA&678-X z#Dbb3?8!7E0E0L?VNU*DV_o*^HR|2>e%|n6IAZz=M?l%L7k=C%aA1Dg(=UA(!PP_AU|JLk1qUdNs=PgDTS|(F? z;mcv}pxlS`x#H1EK+@Cr?vV!3t1nv7+RBax(Uec(kC^$N8k>=bSh^tWQ=tD2+cV$K zd0*VMtZLpgINlaE$N3QE^L%>)Li|&c^T=WHx3Fr(n=G>hslcK@<7VP8CI9 z{{*2YA|Fi#Ker;k{708zVUw+lIssH?`5lxDC{gmOswp2BG>cMm!}qCE=G#?VH|}H< zK!DoSpeH+h%TT&|F~j9R64BM+Q#BjpJ!x8w_dSQ~4JH3b&enjCV2oXHT(JTDA(Og4 z^k;Smv8kQ?Vy>Tx^zG|ka7z)V%U&ZYpNv#d{ldBgxY(bYP#(tg!R9(?sXWLFAETps z-AETv6Y$Vp&;t3|eg8N=qKwaX}*!}5N+Q~{^_fm)-x ziN-y%&KSp+cg*!6oknhlnS6zrwE=bN$)M&2AlqrhUV&ga)7yw6dx{YgGLV=KtVx>j z4T|6PxuM6g``xa;ntID&i>tO17buHh*jxXHNo%7j;-~g2P_;a~{sczwY?GD-#5FGC*UG@ja#DtLjF@_MqUTG%~-Up_bO)wq@-H+YBHxeB896 zY*OheFT5tyKE$qNF&@XyY@sXF*I9@O@oZ zwx*dk%$kyEZMtn~+n4iftrv8lp{(evEjB`-KVaJHCpfOvO9t=Qkt~1vVw{zTk-K|L zOm-EO%?6A`xk0-x%S)A;Ok1?_zbh_{Nk&ES>w$+BYq7b@j__<=bMB+G++R0~lB${- zZysOp#m?7t+s + + + + + + + + diff --git a/src/pages/scenario/flowgram/assets/icon-end.jpg b/src/pages/scenario/flowgram/assets/icon-end.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46bc47dd344943235af3e58c5c5379cbf0323734 GIT binary patch literal 21016 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 + + + + + + + + diff --git a/src/pages/scenario/flowgram/assets/icon-memory.svg b/src/pages/scenario/flowgram/assets/icon-memory.svg new file mode 100644 index 00000000..3a30ebab --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-memory.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/src/pages/scenario/flowgram/assets/icon-mouse.tsx b/src/pages/scenario/flowgram/assets/icon-mouse.tsx new file mode 100644 index 00000000..05bdddd8 --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-mouse.tsx @@ -0,0 +1,36 @@ +export function IconMouse(props: { width?: number; height?: number }) { + const { width, height } = props; + return ( + + + + ); +} + +export const IconMouseTool = () => ( + + + +); diff --git a/src/pages/scenario/flowgram/assets/icon-pad.tsx b/src/pages/scenario/flowgram/assets/icon-pad.tsx new file mode 100644 index 00000000..e0382fde --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-pad.tsx @@ -0,0 +1,51 @@ +export function IconPad(props: { width?: number; height?: number }) { + const { width, height } = props; + return ( + + + + + ); +} + +export const IconPadTool = () => ( + + + + +); diff --git a/src/pages/scenario/flowgram/assets/icon-parallel.svg b/src/pages/scenario/flowgram/assets/icon-parallel.svg new file mode 100644 index 00000000..d86efbea --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-parallel.svg @@ -0,0 +1,6 @@ + + + diff --git a/src/pages/scenario/flowgram/assets/icon-robot.svg b/src/pages/scenario/flowgram/assets/icon-robot.svg new file mode 100644 index 00000000..23d1861e --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-robot.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/src/pages/scenario/flowgram/assets/icon-start.jpg b/src/pages/scenario/flowgram/assets/icon-start.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72a5a48e60a4b93f4cea42c9e2e45bd9c1a3f01f GIT binary patch literal 20971 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 Q`RC+6A^02G^pDX$0Rx_1qW}N^ literal 0 HcmV?d00001 diff --git a/src/pages/scenario/flowgram/assets/icon-tool.svg b/src/pages/scenario/flowgram/assets/icon-tool.svg new file mode 100644 index 00000000..88b2fc8b --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-tool.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/src/pages/scenario/flowgram/assets/icon-trycatch.svg b/src/pages/scenario/flowgram/assets/icon-trycatch.svg new file mode 100644 index 00000000..fdfccead --- /dev/null +++ b/src/pages/scenario/flowgram/assets/icon-trycatch.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/pages/scenario/flowgram/assets/icon-variable.png b/src/pages/scenario/flowgram/assets/icon-variable.png new file mode 100644 index 0000000000000000000000000000000000000000..558ede149c154d661e3afc2d331b4c69180b1822 GIT binary patch literal 3430 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 literal 0 HcmV?d00001 diff --git a/src/pages/scenario/flowgram/components/agent-adder/index.tsx b/src/pages/scenario/flowgram/components/agent-adder/index.tsx new file mode 100644 index 00000000..f986411f --- /dev/null +++ b/src/pages/scenario/flowgram/components/agent-adder/index.tsx @@ -0,0 +1,65 @@ +import { + type FlowNodeEntity, + FlowNodeRenderData, + useClientContext, +} from '@flowgram.ai/fixed-layout-editor'; + +import { ToolNodeRegistry } from '../../nodes/agent/tool'; +import { PlusOutlined } from '@ant-design/icons'; + +interface PropsType { + node: FlowNodeEntity; +} + +export function AgentAdder(props: PropsType) { + const { node } = props; + + const nodeData = node.firstChild?.getData(FlowNodeRenderData); + const ctx = useClientContext(); + + async function addPort() { + ctx.operation.addNode(ToolNodeRegistry.onAdd!(ctx, node), { + parent: node, + }); + } + + /** + * 1. Tools can always be added + * 2. LLM/Memory can only be added when there is no block + */ + const canAdd = node.flowNodeType === 'agentTools' || node.blocks.length === 0; + + if (!canAdd) { + return null; + } + + return ( +
nodeData?.toggleMouseEnter()} + onMouseLeave={() => nodeData?.toggleMouseLeave()} + > +
addPort()} + > + +
+
+ ); +} diff --git a/src/pages/scenario/flowgram/components/agent-label/index.tsx b/src/pages/scenario/flowgram/components/agent-label/index.tsx new file mode 100644 index 00000000..98f39d96 --- /dev/null +++ b/src/pages/scenario/flowgram/components/agent-label/index.tsx @@ -0,0 +1,41 @@ +import { FlowNodeEntity } from '@flowgram.ai/fixed-layout-editor'; +import { Typography } from 'antd'; + +interface PropsType { + node: FlowNodeEntity; +} + +const Text = Typography.Text; + +export function AgentLabel(props: PropsType) { + const { node } = props; + + let label = 'Default'; + + switch (node.flowNodeType) { + case 'agentMemory': + label = 'Memory'; + break; + case 'agentLLM': + label = 'LLM'; + break; + case 'agentTools': + label = 'Tools'; + } + + return ( + + {label} + + ); +} diff --git a/src/pages/scenario/flowgram/components/base-node/index.tsx b/src/pages/scenario/flowgram/components/base-node/index.tsx new file mode 100644 index 00000000..3a032c85 --- /dev/null +++ b/src/pages/scenario/flowgram/components/base-node/index.tsx @@ -0,0 +1,69 @@ +import { useCallback } from 'react'; + +import { usePanelManager } from '@flowgram.ai/panel-manager-plugin'; +import { FlowNodeEntity, useNodeRender } from '@flowgram.ai/fixed-layout-editor'; +import { ConfigProvider } from 'antd'; + +import { NodeRenderContext } from '../../context'; +import { BaseNodeStyle, ErrorIcon } from './styles'; +import { nodeFormPanelFactory } from '../sidebar'; + +export const BaseNode = ({ node }: { node: FlowNodeEntity }) => { + /** + * Provides methods related to node rendering + * 提供节点渲染相关的方法 + */ + const nodeRender = useNodeRender(); + /** + * It can only be used when nodeEngine is enabled + * 只有在节点引擎开启时候才能使用表单 + */ + const form = nodeRender.form; + + /** + * Used to make the Tooltip scale with the node, which can be implemented by itself depending on the UI library + * 用于让 Tooltip 跟随节点缩放, 这个可以根据不同的 ui 库自己实现 + */ + const getPopupContainer = useCallback(() => node.renderData.node || document.body, []); + + const panelManager = usePanelManager(); + + return ( + + {form?.state.invalid && } + { + if (nodeRender.dragging) { + return; + } + panelManager.open(nodeFormPanelFactory.key, 'right', { + props: { + nodeId: nodeRender.node.id, + }, + }); + }} + style={{ + /** + * Lets you precisely control the style of branch nodes + * 用于精确控制分支节点的样式 + * isBlockIcon: 整个 condition 分支的 头部节点 + * isBlockOrderIcon: 分支的第一个节点 + */ + ...(nodeRender.isBlockOrderIcon || nodeRender.isBlockIcon ? {} : {}), + ...nodeRender.node.getNodeRegistry().meta.style, + opacity: nodeRender.dragging ? 0.3 : 1, + outline: form?.state.invalid ? '1px solid red' : 'none', + }} + > + {form?.render()} + + + ); +}; diff --git a/src/pages/scenario/flowgram/components/base-node/styles.tsx b/src/pages/scenario/flowgram/components/base-node/styles.tsx new file mode 100644 index 00000000..099c86c3 --- /dev/null +++ b/src/pages/scenario/flowgram/components/base-node/styles.tsx @@ -0,0 +1,33 @@ +import { InfoCircleFilled } from '@ant-design/icons'; +import styled from 'styled-components'; + +export const BaseNodeStyle = styled.div` + align-items: flex-start; + background-color: #fff; + border: 1px solid rgba(6, 7, 9, 0.15); + border-radius: 8px; + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.04), 0 4px 12px 0 rgba(0, 0, 0, 0.02); + display: flex; + flex-direction: column; + justify-content: center; + position: relative; + width: 360px; + cursor: default; + &.activated { + border: 1px solid #82a7fc; + } +`; + +export const ErrorIcon = () => ( + +); diff --git a/src/pages/scenario/flowgram/components/branch-adder/index.tsx b/src/pages/scenario/flowgram/components/branch-adder/index.tsx new file mode 100644 index 00000000..100c89b8 --- /dev/null +++ b/src/pages/scenario/flowgram/components/branch-adder/index.tsx @@ -0,0 +1,58 @@ +import { type FlowNodeEntity, useClientContext } from '@flowgram.ai/fixed-layout-editor'; + +import { CatchBlockNodeRegistry } from '../../nodes/catch-block'; +import { CaseNodeRegistry } from '../../nodes/case'; +import { Container } from './styles'; +import { PlusOutlined } from '@ant-design/icons'; + +interface PropsType { + activated?: boolean; + node: FlowNodeEntity; +} + +export default function BranchAdder(props: PropsType) { + const { activated, node } = props; + const nodeData = node.firstChild!.renderData; + const ctx = useClientContext(); + const { operation, playground } = ctx; + const { isVertical } = node; + + function addBranch() { + const block = operation.addBlock( + node, + node.flowNodeType === 'switch' + ? CaseNodeRegistry.onAdd!(ctx, node) + : CatchBlockNodeRegistry.onAdd!(ctx, node), + { + index: 0, + } + ); + + setTimeout(() => { + playground.scrollToView({ + bounds: block.bounds, + scrollToCenter: true, + }); + }, 10); + } + if (playground.config.readonlyOrDisabled) return null; + + return ( + nodeData?.toggleMouseEnter()} + onMouseLeave={() => nodeData?.toggleMouseLeave()} + > +
{ + addBranch(); + }} + aria-hidden="true" + style={{ flexGrow: 1, textAlign: 'center' }} + > + +
+
+ ); +} diff --git a/src/pages/scenario/flowgram/components/branch-adder/styles.tsx b/src/pages/scenario/flowgram/components/branch-adder/styles.tsx new file mode 100644 index 00000000..7d8546ba --- /dev/null +++ b/src/pages/scenario/flowgram/components/branch-adder/styles.tsx @@ -0,0 +1,24 @@ +import styled from 'styled-components'; + +export const Container = styled.div<{ activated?: boolean; isVertical: boolean }>` + width: 28px; + height: 18px; + background: ${(props) => (props.activated ? '#82A7FC' : 'rgb(187, 191, 196)')}; + display: flex; + border-radius: 9px; + justify-content: space-evenly; + align-items: center; + color: #fff; + font-size: 10px; + font-weight: bold; + transform: ${(props) => (props.isVertical ? '' : 'rotate(90deg)')}; + div { + display: flex; + justify-content: center; + align-items: center; + svg { + width: 12px; + height: 12px; + } + } +`; diff --git a/src/pages/scenario/flowgram/components/drag-node/index.tsx b/src/pages/scenario/flowgram/components/drag-node/index.tsx new file mode 100644 index 00000000..f502074d --- /dev/null +++ b/src/pages/scenario/flowgram/components/drag-node/index.tsx @@ -0,0 +1,54 @@ +import type { FlowNodeEntity, FlowNodeJSON, Xor } from '@flowgram.ai/fixed-layout-editor'; + +import { FlowNodeRegistries } from '../../nodes'; +import { Icon } from '../../form-components/form-header/styles'; +import { UIDragNodeContainer, UIDragCounts } from './styles'; + +export type PropsType = Xor< + { + dragStart: FlowNodeEntity; + }, + { + dragJSON: FlowNodeJSON; + } +> & { + dragNodes: FlowNodeEntity[]; +}; + +export function DragNode(props: PropsType): JSX.Element { + const { dragStart, dragNodes, dragJSON } = props; + + const icon = FlowNodeRegistries.find( + (registry) => registry.type === dragStart?.flowNodeType || dragJSON?.type + )?.info?.icon; + + const dragLength = (dragNodes || []) + .map((_node) => + _node.allCollapsedChildren.length + ? _node.allCollapsedChildren.filter((_n) => !_n.hidden).length + : 1 + ) + .reduce((acm, curr) => acm + curr, 0); + + return ( + + + {dragStart?.id || dragJSON?.id} + {dragLength > 1 && ( + <> + {dragLength} + + + )} + + ); +} diff --git a/src/pages/scenario/flowgram/components/drag-node/styles.tsx b/src/pages/scenario/flowgram/components/drag-node/styles.tsx new file mode 100644 index 00000000..dc232ab4 --- /dev/null +++ b/src/pages/scenario/flowgram/components/drag-node/styles.tsx @@ -0,0 +1,35 @@ +import styled from 'styled-components'; + +const primary = 'hsl(252 62% 54.9%)'; +const primaryOpacity09 = 'hsl(252deg 62% 55% / 9%)'; + +export const UIDragNodeContainer = styled.div` + position: relative; + height: 32px; + border-radius: 5px; + display: flex; + align-items: center; + column-gap: 8px; + cursor: pointer; + font-size: 19px; + border: 1px solid ${primary}; + padding: 0 15px; + &:hover: { + background-color: ${primaryOpacity09}; + color: ${primary}; + } +`; + +export const UIDragCounts = styled.div` + position: absolute; + top: -8px; + right: -8px; + text-align: center; + line-height: 16px; + width: 16px; + height: 16px; + border-radius: 8px; + font-size: 12px; + color: #fff; + background-color: ${primary}; +`; diff --git a/src/pages/scenario/flowgram/components/index.ts b/src/pages/scenario/flowgram/components/index.ts new file mode 100644 index 00000000..f3277e64 --- /dev/null +++ b/src/pages/scenario/flowgram/components/index.ts @@ -0,0 +1,3 @@ +export { DemoTools } from './tools'; +export { DragNode } from './drag-node'; +export { AgentAdder } from './agent-adder'; diff --git a/src/pages/scenario/flowgram/components/minimap.tsx b/src/pages/scenario/flowgram/components/minimap.tsx deleted file mode 100644 index 279c5bbc..00000000 --- a/src/pages/scenario/flowgram/components/minimap.tsx +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Minimap component for workflow editor - * Following Flowgram demo pattern from: - * https://github.com/bytedance/flowgram.ai/blob/main/apps/demo-free-layout/src/components/tools/minimap.tsx - */ -import React from 'react'; -import { Minimap as FlowgramMinimap } from '@flowgram.ai/minimap-plugin'; - -export const Minimap: React.FC = () => { - return ( -
- -
- ); -}; diff --git a/src/pages/scenario/flowgram/components/node-adder/index.tsx b/src/pages/scenario/flowgram/components/node-adder/index.tsx new file mode 100644 index 00000000..e8bc8733 --- /dev/null +++ b/src/pages/scenario/flowgram/components/node-adder/index.tsx @@ -0,0 +1,162 @@ +import { useCallback, useMemo, useState } from 'react'; + +import { useClientContext } from '@flowgram.ai/fixed-layout-editor'; +import { type FlowNodeEntity } from '@flowgram.ai/fixed-layout-editor'; +import { Popover, message, Typography } from 'antd'; + +import { NodeList } from '../node-list'; +import { readData } from '../../shortcuts/utils'; +import { generateNodeId } from './utils'; +import { PasteIcon, Wrap } from './styles'; +import { CopyOutlined, PlusOutlined } from '@ant-design/icons'; + +const generateNewIdForChildren = (n: FlowNodeEntity): FlowNodeEntity => { + if (n.blocks) { + return { + ...n, + id: generateNodeId(n), + blocks: n.blocks.map((b) => generateNewIdForChildren(b)), + } as FlowNodeEntity; + } else { + return { + ...n, + id: generateNodeId(n), + } as FlowNodeEntity; + } +}; + +export default function Adder(props: { + from: FlowNodeEntity; + to?: FlowNodeEntity; + hoverActivated: boolean; +}) { + const { from } = props; + const isVertical = from.isVertical; + const [visible, setVisible] = useState(false); + const { playground, operation, clipboard } = useClientContext(); + + const [pasteIconVisible, setPasteIconVisible] = useState(false); + + const activated = useMemo( + () => props.hoverActivated && !playground.config.readonly, + [props.hoverActivated, playground.config.readonly] + ); + + const add = (addProps: any) => { + const blocks = addProps.blocks ? addProps.blocks : undefined; + const block = operation.addFromNode(from, { + ...addProps, + blocks, + }); + setTimeout(() => { + playground.scrollToView({ + bounds: block.bounds, + scrollToCenter: true, + }); + }, 10); + setVisible(false); + }; + + const handlePaste = useCallback(async (e: any) => { + try { + e.stopPropagation(); + const nodes = await readData(clipboard); + + if (!nodes) { + message.error({ + content: 'The clipboard content has been updated, please copy the node again.', + }); + return; + } + + nodes.reverse().forEach((n: FlowNodeEntity) => { + const newNodeData = generateNewIdForChildren(n); + operation.addFromNode(from, newNodeData); + }); + + message.success({ + content: 'Paste successfully!', + }); + } catch (error) { + console.error(error); + message.error({ + content: ( + + Paste failed, please check if you have permission to read the clipboard, + + ), + }); + } + }, []); + if (playground.config.readonly) return null; + + return ( + } + placement="right" + trigger="click" + align={{ offset: [30, 0] }} + overlayStyle={{ + padding: 0, + }} + > + e.stopPropagation()} + > + {props.hoverActivated ? ( + { + setVisible(true); + }} + onMouseEnter={() => { + const data = clipboard.readText(); + setPasteIconVisible(!!data); + }} + style={{ + backgroundColor: '#fff', + color: '#3370ff', + borderRadius: 15, + }} + /> + ) : ( + '' + )} + {activated && pasteIconVisible && ( + + + + + + )} + + + ); +} diff --git a/src/pages/scenario/flowgram/components/node-adder/styles.tsx b/src/pages/scenario/flowgram/components/node-adder/styles.tsx new file mode 100644 index 00000000..0c0efe39 --- /dev/null +++ b/src/pages/scenario/flowgram/components/node-adder/styles.tsx @@ -0,0 +1,24 @@ +import styled from 'styled-components'; + +export const PasteIcon = styled.div` + position: absolute; + width: 15px; + height: 15px; + color: #3370ff; + display: flex; + justify-content: center; + align-items: center; +`; + +export const Wrap = styled.div` + position: relative; + width: 6px; + height: 6px; + background-color: rgb(143, 149, 158); + color: #fff; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; +`; diff --git a/src/pages/scenario/flowgram/components/node-adder/utils.ts b/src/pages/scenario/flowgram/components/node-adder/utils.ts new file mode 100644 index 00000000..fd0565fa --- /dev/null +++ b/src/pages/scenario/flowgram/components/node-adder/utils.ts @@ -0,0 +1,4 @@ +import { nanoid } from 'nanoid'; +import { FlowNodeEntity } from '@flowgram.ai/fixed-layout-editor'; + +export const generateNodeId = (n: FlowNodeEntity) => `${n.type || n.flowNodeType}_${nanoid()}`; diff --git a/src/pages/scenario/flowgram/components/node-list.tsx b/src/pages/scenario/flowgram/components/node-list.tsx new file mode 100644 index 00000000..bb575f36 --- /dev/null +++ b/src/pages/scenario/flowgram/components/node-list.tsx @@ -0,0 +1,69 @@ +import styled from 'styled-components'; +import { + FlowNodeEntity, + FlowNodeRegistry, + useClientContext, +} from '@flowgram.ai/fixed-layout-editor'; + +import { FlowNodeRegistries } from '../nodes'; + +const NodeWrap = styled.div` + width: 100%; + height: 32px; + border-radius: 5px; + display: flex; + align-items: center; + cursor: pointer; + font-size: 19px; + padding: 0 15px; + &:hover { + background-color: hsl(252deg 62% 55% / 9%); + color: hsl(252 62% 54.9%); + }, +`; + +const NodeLabel = styled.div` + font-size: 12px; + margin-left: 10px; +`; + +function Node(props: { label: string; icon: JSX.Element; onClick: () => void; disabled: boolean }) { + return ( + +
{props.icon}
+ {props.label} +
+ ); +} + +const NodesWrap = styled.div` + max-height: 500px; + overflow: auto; + &::-webkit-scrollbar { + display: none; + } +`; + +export function NodeList(props: { onSelect: (meta: any) => void; from: FlowNodeEntity }) { + const context = useClientContext(); + const handleClick = (registry: FlowNodeRegistry) => { + const addProps = registry.onAdd(context, props.from); + props.onSelect?.(addProps); + }; + return ( + + {FlowNodeRegistries.filter((registry) => !registry.meta?.addDisable).map((registry) => ( + } + label={registry.type as string} + onClick={() => handleClick(registry)} + /> + ))} + + ); +} diff --git a/src/pages/scenario/flowgram/components/node-panel/index.tsx b/src/pages/scenario/flowgram/components/node-panel/index.tsx deleted file mode 100644 index 719f9fd1..00000000 --- a/src/pages/scenario/flowgram/components/node-panel/index.tsx +++ /dev/null @@ -1,93 +0,0 @@ -/** - * NodePanel component for node type selection - * Following Flowgram demo pattern from: - * https://github.com/bytedance/flowgram.ai/blob/main/apps/demo-free-layout/src/components/node-panel/index.tsx - */ -import React from 'react'; -import { NodePanelProps } from '@flowgram.ai/free-node-panel-plugin'; -import { Card, Row, Col } from 'antd'; -import { - ApiOutlined, - CodeOutlined, - BranchesOutlined, - ClockCircleOutlined, - SyncOutlined, - PlayCircleOutlined, - StopOutlined, -} from '@ant-design/icons'; -import intl from 'react-intl-universal'; -import { NODE_TYPES } from '../../nodes/constants'; -import './styles.less'; - -export const NodePanel: React.FC = ({ onSelect, onClose }) => { - const nodeTypes = [ - { - type: NODE_TYPES.START, - label: intl.get('scenario_start'), - icon: , - }, - { - type: NODE_TYPES.HTTP, - label: intl.get('scenario_http_node'), - icon: , - }, - { - type: NODE_TYPES.SCRIPT, - label: intl.get('scenario_script_node'), - icon: , - }, - { - type: NODE_TYPES.CONDITION, - label: intl.get('scenario_condition_node'), - icon: , - }, - { - type: NODE_TYPES.DELAY, - label: intl.get('scenario_delay_node'), - icon: , - }, - { - type: NODE_TYPES.LOOP, - label: intl.get('scenario_loop_node'), - icon: , - }, - { - type: NODE_TYPES.END, - label: intl.get('scenario_end'), - icon: , - }, - ]; - - const handleNodeClick = (type: string) => { - onSelect?.({ - nodeType: type, - nodeJSON: {}, - }); - }; - - return ( -
-
- {intl.get('scenario_add_node')} -
-
- - {nodeTypes.map((node) => ( - - handleNodeClick(node.type)} - > -
- {node.icon} -
{node.label}
-
-
- - ))} -
-
-
- ); -}; diff --git a/src/pages/scenario/flowgram/components/node-panel/styles.less b/src/pages/scenario/flowgram/components/node-panel/styles.less deleted file mode 100644 index 8db6cb02..00000000 --- a/src/pages/scenario/flowgram/components/node-panel/styles.less +++ /dev/null @@ -1,77 +0,0 @@ -.node-panel { - background: #fff; - border-radius: 8px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); - min-width: 320px; - max-width: 400px; - - .node-panel-header { - padding: 12px 16px; - border-bottom: 1px solid #f0f0f0; - font-weight: 500; - font-size: 14px; - } - - .node-panel-content { - padding: 12px; - max-height: 400px; - overflow-y: auto; - } - - .node-panel-card { - .ant-card-body { - padding: 12px; - } - - .node-panel-card-content { - display: flex; - flex-direction: column; - align-items: center; - gap: 8px; - text-align: center; - - .node-panel-card-label { - font-size: 12px; - color: rgba(0, 0, 0, 0.85); - } - } - - &:hover { - border-color: #1890ff; - .node-panel-card-content { - color: #1890ff; - .node-panel-card-label { - color: #1890ff; - } - } - } - } -} - -// Dark mode support -[data-prefers-color='dark'] { - .node-panel { - background: #1f1f1f; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45); - - .node-panel-header { - border-bottom-color: #303030; - } - - .node-panel-card { - background: #141414; - border-color: #303030; - - .node-panel-card-label { - color: rgba(255, 255, 255, 0.85); - } - - &:hover { - border-color: #177ddc; - .node-panel-card-label { - color: #177ddc; - } - } - } - } -} diff --git a/src/pages/scenario/flowgram/components/selector-box-popover/index.tsx b/src/pages/scenario/flowgram/components/selector-box-popover/index.tsx new file mode 100644 index 00000000..6140d95f --- /dev/null +++ b/src/pages/scenario/flowgram/components/selector-box-popover/index.tsx @@ -0,0 +1,158 @@ +import { FunctionComponent, useMemo } from 'react'; + +import { + useStartDragNode, + FlowNodeRenderData, + FlowNodeBaseType, + FlowGroupService, + type FlowNodeEntity, + SelectorBoxPopoverProps, +} from '@flowgram.ai/fixed-layout-editor'; +import { Button, Tooltip } from 'antd'; + +import { FlowCommandId } from '../../shortcuts/constants'; +import { IconGroupOutlined } from '../../plugins/group-plugin/icons'; +import { CopyOutlined, DeleteOutlined, DragOutlined, ExpandOutlined, ShrinkOutlined } from '@ant-design/icons'; + +const BUTTON_HEIGHT = 24; + +export const SelectorBoxPopover: FunctionComponent = ({ + bounds, + children, + flowSelectConfig, + commandRegistry, +}) => { + const selectNodes = flowSelectConfig.selectedNodes; + + const { startDrag } = useStartDragNode(); + + const draggable = selectNodes[0]?.getData(FlowNodeRenderData)?.draggable; + + // Does the selected component have a group node? (High-cost computation must use memo) + const hasGroup: boolean = useMemo(() => { + if (!selectNodes || selectNodes.length === 0) { + return false; + } + const findGroupInNodes = (nodes: FlowNodeEntity[]): boolean => + nodes.some((node) => { + if (node.flowNodeType === FlowNodeBaseType.GROUP) { + return true; + } + if (node.blocks && node.blocks.length) { + return findGroupInNodes(node.blocks); + } + return false; + }); + return findGroupInNodes(selectNodes); + }, [selectNodes]); + + const canGroup = !hasGroup && FlowGroupService.validate(selectNodes); + + return ( + <> +
{ + e.stopPropagation(); + }} + > + + {draggable && ( + +
+
{ + e.stopPropagation(); + startDrag(e, { + dragStartEntity: selectNodes[0], + dragEntities: selectNodes, + }); + }} + > + {children} +
+ + ); +}; diff --git a/src/pages/scenario/flowgram/components/sidebar/index.tsx b/src/pages/scenario/flowgram/components/sidebar/index.tsx new file mode 100644 index 00000000..6ae46671 --- /dev/null +++ b/src/pages/scenario/flowgram/components/sidebar/index.tsx @@ -0,0 +1 @@ +export { nodeFormPanelFactory } from './sidebar-renderer'; diff --git a/src/pages/scenario/flowgram/components/sidebar/sidebar-node-renderer.tsx b/src/pages/scenario/flowgram/components/sidebar/sidebar-node-renderer.tsx new file mode 100644 index 00000000..4ae47fb9 --- /dev/null +++ b/src/pages/scenario/flowgram/components/sidebar/sidebar-node-renderer.tsx @@ -0,0 +1,24 @@ +import { useNodeRender, FlowNodeEntity } from '@flowgram.ai/fixed-layout-editor'; + +import { NodeRenderContext } from '../../context'; + +export function SidebarNodeRenderer(props: { node: FlowNodeEntity }) { + const { node } = props; + const nodeRender = useNodeRender(node); + + return ( + +
+ {nodeRender.form?.render()} +
+
+ ); +} diff --git a/src/pages/scenario/flowgram/components/sidebar/sidebar-renderer.tsx b/src/pages/scenario/flowgram/components/sidebar/sidebar-renderer.tsx new file mode 100644 index 00000000..eba051bf --- /dev/null +++ b/src/pages/scenario/flowgram/components/sidebar/sidebar-renderer.tsx @@ -0,0 +1,90 @@ +import { useCallback, useEffect, startTransition } from 'react'; + +import { type PanelFactory, usePanelManager } from '@flowgram.ai/panel-manager-plugin'; +import { + PlaygroundEntityContext, + useRefresh, + useClientContext, +} from '@flowgram.ai/fixed-layout-editor'; + +import { FlowNodeMeta } from '../../typings'; +import { IsSidebarContext } from '../../context'; +import { SidebarNodeRenderer } from './sidebar-node-renderer'; + +export interface NodeFormPanelProps { + nodeId: string; +} + +export const SidebarRenderer: React.FC = ({ nodeId }) => { + const panelManager = usePanelManager(); + const { selection, playground, document } = useClientContext(); + const refresh = useRefresh(); + const handleClose = useCallback(() => { + // Sidebar delayed closing + startTransition(() => { + panelManager.close(nodeFormPanelFactory.key); + }); + }, []); + const node = nodeId ? document.getNode(nodeId) : undefined; + /** + * Listen readonly + */ + useEffect(() => { + const disposable = playground.config.onReadonlyOrDisabledChange(() => { + handleClose(); + refresh(); + }); + return () => disposable.dispose(); + }, [playground]); + /** + * Listen selection + */ + useEffect(() => { + const toDispose = selection.onSelectionChanged(() => { + /** + * 如果没有选中任何节点,则自动关闭侧边栏 + * If no node is selected, the sidebar is automatically closed + */ + if (selection.selection.length === 0) { + handleClose(); + } else if (selection.selection.length === 1 && selection.selection[0] !== node) { + handleClose(); + } + }); + return () => toDispose.dispose(); + }, [selection, handleClose, node]); + /** + * Close when node disposed + */ + useEffect(() => { + if (node) { + const toDispose = node.onDispose(() => { + panelManager.close(nodeFormPanelFactory.key); + }); + return () => toDispose.dispose(); + } + return () => {}; + }, [node]); + + if (!node || node.getNodeMeta().sidebarDisabled === true) { + return null; + } + + if (playground.config.readonly) { + return null; + } + + return ( + + + + + + ); +}; + +export const nodeFormPanelFactory: PanelFactory = { + key: 'node-form-panel', + defaultSize: 400, + render: (props: NodeFormPanelProps) => , +}; diff --git a/src/pages/scenario/flowgram/components/tools/add-node-dropdown.tsx b/src/pages/scenario/flowgram/components/tools/add-node-dropdown.tsx deleted file mode 100644 index 7bd5931f..00000000 --- a/src/pages/scenario/flowgram/components/tools/add-node-dropdown.tsx +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Add Node dropdown component - */ - -import React from 'react'; -import { Button, Dropdown, Menu } from 'antd'; -import { - PlusOutlined, - ApiOutlined, - CodeOutlined, - BranchesOutlined, - ClockCircleOutlined, - SyncOutlined, -} from '@ant-design/icons'; -import { usePlayground } from '@flowgram.ai/free-layout-editor'; -import { nanoid } from 'nanoid'; -import intl from 'react-intl-universal'; - -export const AddNodeDropdown: React.FC = () => { - const playground = usePlayground(); - - const handleAddNode = (type: string) => { - // Get center of viewport - const viewport = playground.viewport.getViewport(); - const centerX = viewport.x + viewport.width / 2; - const centerY = viewport.y + viewport.height / 2; - - // Add node at center - const nodeId = nanoid(); - playground.nodeService.createNode({ - id: nodeId, - type, - x: centerX - 140, // Offset to center the node (280px width / 2) - y: centerY - 60, // Offset to center the node (120px height / 2) - width: type === 'start' || type === 'end' ? 120 : 280, - height: type === 'delay' || type === 'loop' ? 100 : 120, - }); - }; - - const menu = ( - , - onClick: () => handleAddNode('http'), - }, - { - key: 'script', - label: intl.get('scenario_script_node'), - icon: , - onClick: () => handleAddNode('script'), - }, - { - key: 'condition', - label: intl.get('scenario_condition_node'), - icon: , - onClick: () => handleAddNode('condition'), - }, - { - key: 'delay', - label: intl.get('scenario_delay_node'), - icon: , - onClick: () => handleAddNode('delay'), - }, - { - key: 'loop', - label: intl.get('scenario_loop_node'), - icon: , - onClick: () => handleAddNode('loop'), - }, - ]} - /> - ); - - return ( - - - - ); -}; diff --git a/src/pages/scenario/flowgram/components/tools/fit-view.tsx b/src/pages/scenario/flowgram/components/tools/fit-view.tsx new file mode 100644 index 00000000..cd22f0a8 --- /dev/null +++ b/src/pages/scenario/flowgram/components/tools/fit-view.tsx @@ -0,0 +1,11 @@ +import { ExpandOutlined } from '@ant-design/icons'; +import { Button, Tooltip } from 'antd'; + +export const FitView = (props: { fitView: () => void }) => ( + + + ); +} diff --git a/src/pages/scenario/flowgram/components/tools/save.tsx b/src/pages/scenario/flowgram/components/tools/save.tsx new file mode 100644 index 00000000..f94aa2fd --- /dev/null +++ b/src/pages/scenario/flowgram/components/tools/save.tsx @@ -0,0 +1,56 @@ +import { useState, useEffect, useCallback } from 'react'; + +import { useClientContext, FlowNodeEntity } from '@flowgram.ai/fixed-layout-editor'; +import { Button, Badge } from 'antd'; + +export function Save(props: { disabled: boolean }) { + const [errorCount, setErrorCount] = useState(0); + const clientContext = useClientContext(); + + const updateValidateData = useCallback(() => { + const allForms = clientContext.document.getAllNodes().map((node) => node.form); + const count = allForms.filter((form) => form?.state.invalid).length; + setErrorCount(count); + }, [clientContext]); + + /** + * Validate all node and Save + */ + const onSave = useCallback(async () => { + const allForms = clientContext.document.getAllNodes().map((node) => node.form); + await Promise.all(allForms.map(async (form) => form?.validate())); + console.log('>>>>> save data: ', clientContext.document.toJSON()); + }, [clientContext]); + + useEffect(() => { + /** + * Listen single node validate + */ + const listenSingleNodeValidate = (node: FlowNodeEntity) => { + const form = node.form; + if (form) { + const formValidateDispose = form.onValidate(() => updateValidateData()); + node.onDispose(() => formValidateDispose.dispose()); + } + }; + clientContext.document.getAllNodes().map((node) => listenSingleNodeValidate(node)); + const dispose = clientContext.document.onNodeCreate(({ node }) => + listenSingleNodeValidate(node) + ); + return () => dispose.dispose(); + }, [clientContext]); + if (errorCount === 0) { + return ( + + ); + } + return ( + + + + ); +} diff --git a/src/pages/scenario/flowgram/components/tools/styles.tsx b/src/pages/scenario/flowgram/components/tools/styles.tsx index d17f2b1d..e3efb135 100644 --- a/src/pages/scenario/flowgram/components/tools/styles.tsx +++ b/src/pages/scenario/flowgram/components/tools/styles.tsx @@ -1,18 +1,14 @@ -/** - * Styled components for Flowgram tools - */ - import styled from 'styled-components'; export const ToolContainer = styled.div` position: absolute; bottom: 16px; - left: 16px; display: flex; justify-content: left; min-width: 360px; pointer-events: none; gap: 8px; + z-index: 20; `; @@ -27,28 +23,18 @@ export const ToolSection = styled.div` height: 40px; padding: 0 4px; pointer-events: auto; - - .ant-btn { - border: none; - box-shadow: none; - - &:hover { - background-color: rgba(0, 0, 0, 0.04); - } - } `; export const SelectZoom = styled.span` - padding: 4px 8px; + padding: 2px; border-radius: 8px; border: 1px solid rgba(68, 83, 130, 0.25); font-size: 12px; - min-width: 60px; - text-align: center; - cursor: pointer; - user-select: none; - - &:hover { - background-color: rgba(0, 0, 0, 0.04); - } + width: 40px; +`; + +export const MinimapContainer = styled.div` + position: absolute; + bottom: 60px; + width: 198px; `; diff --git a/src/pages/scenario/flowgram/components/tools/switch-vertical.tsx b/src/pages/scenario/flowgram/components/tools/switch-vertical.tsx new file mode 100644 index 00000000..68fed36d --- /dev/null +++ b/src/pages/scenario/flowgram/components/tools/switch-vertical.tsx @@ -0,0 +1,23 @@ +import { CloudServerOutlined } from '@ant-design/icons'; +import { usePlaygroundTools } from '@flowgram.ai/fixed-layout-editor'; +import { Button, Tooltip } from 'antd'; + +export const SwitchVertical = () => { + const tools = usePlaygroundTools(); + return ( + + + + )} + + ); +}; diff --git a/src/pages/scenario/flowgram/form-components/properties-edit/property-edit.tsx b/src/pages/scenario/flowgram/form-components/properties-edit/property-edit.tsx new file mode 100644 index 00000000..b789fe92 --- /dev/null +++ b/src/pages/scenario/flowgram/form-components/properties-edit/property-edit.tsx @@ -0,0 +1,76 @@ +import React, { useState, useLayoutEffect } from 'react'; + +import { TypeSelector, DynamicValueInput } from '@flowgram.ai/form-materials'; +import { Input, Button } from 'antd'; + +import { JsonSchema } from '../../typings'; +import { LeftColumn, Row } from './styles'; +import { DeleteOutlined } from '@ant-design/icons'; + +export interface PropertyEditProps { + propertyKey: string; + value: JsonSchema; + useFx?: boolean; + disabled?: boolean; + onChange: (value: JsonSchema, propertyKey: string, newPropertyKey?: string) => void; + onDelete?: () => void; +} + +export const PropertyEdit: React.FC = (props) => { + const { value, disabled } = props; + const [inputKey, updateKey] = useState(props.propertyKey); + const updateProperty = (key: keyof JsonSchema, val: any) => { + value[key] = val; + props.onChange(value, props.propertyKey); + }; + + const partialUpdateProperty = (val?: Partial) => { + props.onChange({ ...value, ...val }, props.propertyKey); + }; + + useLayoutEffect(() => { + updateKey(props.propertyKey); + }, [props.propertyKey]); + return ( + + + partialUpdateProperty(val)} + /> + updateKey(v.trim())} + onBlur={() => { + if (inputKey !== '') { + props.onChange(value, props.propertyKey, inputKey); + } else { + updateKey(props.propertyKey); + } + }} + style={{ paddingLeft: 26 }} + /> + + { + updateProperty('default', val)} + schema={value} + style={{ flexGrow: 1 }} + /> + } + {props.onDelete && !disabled && ( + - - - - - - - - - ); -}; diff --git a/src/pages/scenario/flowgram/plugins/tools-plugin/index.tsx b/src/pages/scenario/flowgram/plugins/tools-plugin/index.tsx deleted file mode 100644 index 784e35e4..00000000 --- a/src/pages/scenario/flowgram/plugins/tools-plugin/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { createPlugin } from '@flowgram.ai/free-layout-editor'; -import { DemoTools } from './DemoTools'; - -export const createToolsPlugin = () => { - return createPlugin({ - name: 'tools-plugin', - layer: () => , - }); -}; diff --git a/src/pages/scenario/flowgram/plugins/tools-plugin/styles.less b/src/pages/scenario/flowgram/plugins/tools-plugin/styles.less deleted file mode 100644 index cfed499a..00000000 --- a/src/pages/scenario/flowgram/plugins/tools-plugin/styles.less +++ /dev/null @@ -1,108 +0,0 @@ -.demo-tools { - position: absolute; - top: 16px; - left: 50%; - transform: translateX(-50%); - z-index: 1000; - background: #fff; - border-radius: 8px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); - padding: 4px 8px; - display: flex; - align-items: center; - gap: 4px; - - .demo-tools-section { - display: flex; - align-items: center; - gap: 4px; - } - - .demo-tools-button { - width: 36px; - height: 36px; - display: flex; - align-items: center; - justify-content: center; - border: none; - background: transparent; - color: rgba(0, 0, 0, 0.65); - cursor: pointer; - border-radius: 4px; - transition: all 0.2s; - - &:hover:not(:disabled) { - background: rgba(0, 0, 0, 0.06); - color: rgba(0, 0, 0, 0.85); - } - - &:disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; - } - } - - .demo-tools-zoom { - min-width: 56px; - font-size: 14px; - font-weight: 500; - } - - .demo-tools-divider { - width: 1px; - height: 24px; - background: rgba(0, 0, 0, 0.1); - margin: 0 4px; - } - - // Minimap container in toolbar (Feedback #3) - .demo-tools-minimap { - display: flex; - align-items: center; - margin: 0 4px; - } - - .demo-tools-add-button { - height: 36px; - padding: 0 16px; - border-radius: 4px; - font-weight: 500; - display: flex; - align-items: center; - gap: 6px; - } - - .demo-tools-run-button { - height: 36px; - padding: 0 16px; - border-radius: 4px; - font-weight: 500; - display: flex; - align-items: center; - gap: 6px; - margin-left: 4px; - } -} - -// Dark mode support -html[data-theme='dark'] .demo-tools { - background: #1f1f1f; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45); - - .demo-tools-button { - color: rgba(255, 255, 255, 0.65); - - &:hover:not(:disabled) { - background: rgba(255, 255, 255, 0.08); - color: rgba(255, 255, 255, 0.85); - } - - &:disabled { - color: rgba(255, 255, 255, 0.25); - } - } - - .demo-tools-divider { - background: rgba(255, 255, 255, 0.15); - } -} diff --git a/src/pages/scenario/flowgram/services/custom-service.ts b/src/pages/scenario/flowgram/services/custom-service.ts new file mode 100644 index 00000000..b4c953f8 --- /dev/null +++ b/src/pages/scenario/flowgram/services/custom-service.ts @@ -0,0 +1,42 @@ +import { injectable, inject } from '@flowgram.ai/fixed-layout-editor'; +import { + FixedLayoutPluginContext, + SelectionService, + Playground, + FlowDocument, +} from '@flowgram.ai/fixed-layout-editor'; + +/** + * Docs: https://inversify.io/docs/introduction/getting-started/ + * Warning: Use decorator legacy + * // rsbuild.config.ts + * { + * source: { + * decorators: { + * version: 'legacy' + * } + * } + * } + * Usage: + * 1. + * const myService = useService(CustomService) + * myService.save() + * 2. + * const myService = useClientContext().get(CustomService) + * 3. + * const myService = node.getService(CustomService) + */ +@injectable() +export class CustomService { + @inject(FixedLayoutPluginContext) ctx: FixedLayoutPluginContext; + + @inject(SelectionService) selectionService: SelectionService; + + @inject(Playground) playground: Playground; + + @inject(FlowDocument) document: FlowDocument; + + save() { + console.log(this.document.toJSON()); + } +} diff --git a/src/pages/scenario/flowgram/services/index.ts b/src/pages/scenario/flowgram/services/index.ts new file mode 100644 index 00000000..01db6d60 --- /dev/null +++ b/src/pages/scenario/flowgram/services/index.ts @@ -0,0 +1 @@ +export { CustomService } from './custom-service'; diff --git a/src/pages/scenario/flowgram/shortcuts/constants.ts b/src/pages/scenario/flowgram/shortcuts/constants.ts new file mode 100644 index 00000000..3df90c87 --- /dev/null +++ b/src/pages/scenario/flowgram/shortcuts/constants.ts @@ -0,0 +1,15 @@ +export enum FlowCommandId { + COPY = 'COPY', + PASTE = 'PASTE', + CUT = 'CUT', + GROUP = 'GROUP', + UNGROUP = 'UNGROUP', + COLLAPSE = 'COLLPASE', + EXPAND = 'EXPAND', + DELETE = 'DELETE', + ZOOM_IN = 'ZOOM_IN', + ZOOM_OUT = 'ZOOM_OUT', + RESET_ZOOM = 'RESET_ZOOM', + SELECT_ALL = 'SELECT_ALL', + CANCEL_SELECT = 'CANCEL_SELECT', +} diff --git a/src/pages/scenario/flowgram/shortcuts/index.ts b/src/pages/scenario/flowgram/shortcuts/index.ts new file mode 100644 index 00000000..8b63ee99 --- /dev/null +++ b/src/pages/scenario/flowgram/shortcuts/index.ts @@ -0,0 +1,239 @@ +import { nanoid } from 'nanoid'; +import { + CommandRegistry, + type FixedLayoutPluginContext, + FlowGroupService, + FlowNodeBaseType, + FlowNodeEntity, + FlowNodeRenderData, + type ShortcutsRegistry, +} from '@flowgram.ai/fixed-layout-editor'; +import { message } from 'antd'; + +import { writeData } from './utils'; +import { FlowCommandId } from './constants'; + +type ShortcutGetter = ( + ctx: FixedLayoutPluginContext +) => Parameters[0]; + +const copy: ShortcutGetter = (ctx) => { + const selection = ctx.selection; + const clipboard = ctx.clipboard; + + return { + commandId: FlowCommandId.COPY, + shortcuts: ['meta c', 'ctrl c'], + isEnabled: (node) => + (selection?.selection.length > 0 || node instanceof FlowNodeEntity) && + !ctx.playground.config.readonlyOrDisabled, + execute: (node) => { + const nodes = + node instanceof FlowNodeEntity + ? [node] + : (selection.selection.filter( + (_entity) => _entity instanceof FlowNodeEntity + ) as FlowNodeEntity[]); + const originNodes = nodes.map((n) => ({ + ...n.toJSON(), + id: `${n.flowNodeType}_${nanoid()}`, + })); + + writeData(originNodes, clipboard); + message.success({ + content: 'Copied. You can move to any [+] to paste.', + }); + }, + }; +}; + +const cut: ShortcutGetter = (ctx) => { + const selection = ctx.selection; + + const commandRegistry = ctx.get(CommandRegistry); + + return { + commandId: FlowCommandId.CUT, + commandDetail: { + label: 'Cut', + }, + shortcuts: ['meta x', 'ctrl x'], + isEnabled: () => selection.selection.length > 0 && !ctx.playground.config.readonlyOrDisabled, + execute: () => { + // nodeService.copyNodes( + // selection.selection.filter( + // _entity => _entity instanceof FlowNodeEntity, + // ) as FlowNodeEntity[], + // ); + + message.success({ + content: 'Cut. You can move to any [+] to paste.', + }); + + commandRegistry.executeCommand(FlowCommandId.DELETE); + }, + }; +}; + +const zoomIn: ShortcutGetter = (ctx) => { + const config = ctx.playground.config; + + return { + commandId: FlowCommandId.ZOOM_IN, + shortcuts: ['meta =', 'ctrl ='], + execute: () => { + config.zoomin(); + }, + }; +}; + +const zoomOut: ShortcutGetter = (ctx) => { + const config = ctx.playground.config; + + return { + commandId: FlowCommandId.ZOOM_OUT, + shortcuts: ['meta -', 'ctrl -'], + execute: () => { + config.zoomout(); + }, + }; +}; + +const resetZoom: ShortcutGetter = (ctx) => ({ + commandId: FlowCommandId.RESET_ZOOM, + commandDetail: { + label: 'Reset Zoom', + }, + shortcuts: ['meta 0', 'ctrl 0'], + execute: () => { + ctx.playground.config.updateZoom(1); + }, +}); + +const group: ShortcutGetter = (ctx) => ({ + commandId: FlowCommandId.GROUP, + commandDetail: { + label: 'Create Group', + }, + shortcuts: ['meta g', 'ctrl g'], + isEnabled: () => !ctx.playground.config.readonlyOrDisabled, + + execute: () => { + const groupService = ctx.get(FlowGroupService); + const selection = ctx.playground.selectionService; + + groupService.createGroup( + selection.selection.filter((_entity) => _entity instanceof FlowNodeEntity) as FlowNodeEntity[] + ); + + ctx.playground.selectionService.selection = []; + }, +}); + +const selectAll: ShortcutGetter = (ctx) => ({ + commandId: FlowCommandId.SELECT_ALL, + commandDetail: { + label: 'Select All', + }, + shortcuts: ['meta a', 'ctrl a'], + isEnabled: () => !ctx.playground.config.readonlyOrDisabled, + execute: () => { + const allNodes = (ctx.document.root.children || []).filter( + (node) => node.flowNodeType !== 'start' && node.flowNodeType !== 'end' + ); + + ctx.playground.selectionService.selection = allNodes; + }, +}); + +const cancelSelect: ShortcutGetter = (ctx) => ({ + commandId: FlowCommandId.CANCEL_SELECT, + commandDetail: { + label: 'Cancel Select', + }, + shortcuts: ['esc'], + execute: () => { + ctx.playground.selectionService.selection = []; + }, +}); + +const collapse: ShortcutGetter = (ctx) => ({ + commandId: FlowCommandId.COLLAPSE, + commandDetail: { + label: 'Collapse', + }, + shortcuts: ['meta alt openbracket', 'ctrl alt openbracket'], + isEnabled: () => !ctx.playground.config.readonlyOrDisabled, + execute: () => { + const selection = ctx.selection; + + const selectNodes = selection.selection.filter( + (_entity) => _entity instanceof FlowNodeEntity + ) as FlowNodeEntity[]; + + selectNodes + .map((_node) => [_node, ..._node.allCollapsedChildren]) + .flat() + .forEach((node) => { + const renderData = node.getData(FlowNodeRenderData); + + if ( + node.firstChild && + [FlowNodeBaseType.BLOCK_ICON, FlowNodeBaseType.BLOCK_ORDER_ICON].includes( + node.firstChild.flowNodeType as FlowNodeBaseType + ) + ) { + node.collapsed = true; + } + + renderData.expanded = false; + }); + }, +}); + +const expand: ShortcutGetter = (ctx) => ({ + commandId: FlowCommandId.EXPAND, + commandDetail: { + label: 'Expand', + }, + shortcuts: ['meta alt closebracket', 'ctrol alt openbracket'], + isEnabled: () => !ctx.playground.config.readonlyOrDisabled, + execute: () => { + const selection = ctx.selection; + + const selectNodes = selection.selection.filter( + (_entity) => _entity instanceof FlowNodeEntity + ) as FlowNodeEntity[]; + + selectNodes + .map((_node) => [_node, ..._node.allCollapsedChildren]) + .flat() + .forEach((node) => { + const renderData = node.getData(FlowNodeRenderData); + + if ( + node.firstChild && + [FlowNodeBaseType.BLOCK_ICON, FlowNodeBaseType.BLOCK_ORDER_ICON].includes( + node.firstChild.flowNodeType as FlowNodeBaseType + ) + ) { + node.collapsed = false; + } + + renderData.expanded = true; + }); + }, +}); + +export const shortcutGetter: ShortcutGetter[] = [ + copy, + cut, + selectAll, + cancelSelect, + zoomIn, + zoomOut, + resetZoom, + group, + collapse, + expand, +]; diff --git a/src/pages/scenario/flowgram/shortcuts/utils.ts b/src/pages/scenario/flowgram/shortcuts/utils.ts new file mode 100644 index 00000000..fddceebb --- /dev/null +++ b/src/pages/scenario/flowgram/shortcuts/utils.ts @@ -0,0 +1,51 @@ +import { ClipboardService } from '@flowgram.ai/fixed-layout-editor'; + +export const readData = async (clipboard: ClipboardService) => { + let str: string = ''; + str = (await clipboard.readText()) || ''; + + try { + const data = JSON.parse(str); + return data; + } catch (error) { + return ''; + } +}; + +export const writeData = async (newData: any, clipboard: ClipboardService) => { + const data: any = newData; + + const newStrData = JSON.stringify(data); + + const oldSaveData = await navigator.clipboard.readText(); + + if (oldSaveData !== newStrData) { + if (navigator.clipboard && window.isSecureContext) { + await navigator.clipboard.writeText(newStrData); + const event = new Event('onchange'); + (event as unknown as { value: string }).value = newStrData; + navigator.clipboard.dispatchEvent(event); + } else { + const textarea = document.createElement('textarea'); + textarea.value = newStrData; + + textarea.style.display = 'absolute'; + textarea.style.left = '-99999999px'; + + document.body.prepend(textarea); + + // highlight the content of the textarea element + textarea.select(); + + try { + document.execCommand('copy'); + } catch (err) { + console.log(err); + } finally { + textarea.remove(); + } + } + + clipboard.writeText(newStrData); + } +}; diff --git a/src/pages/scenario/flowgram/typings/index.ts b/src/pages/scenario/flowgram/typings/index.ts new file mode 100644 index 00000000..e2dd6769 --- /dev/null +++ b/src/pages/scenario/flowgram/typings/index.ts @@ -0,0 +1,2 @@ +export * from './node'; +export * from './json-schema'; diff --git a/src/pages/scenario/flowgram/typings/json-schema.ts b/src/pages/scenario/flowgram/typings/json-schema.ts new file mode 100644 index 00000000..5882cc74 --- /dev/null +++ b/src/pages/scenario/flowgram/typings/json-schema.ts @@ -0,0 +1,4 @@ +import type { IJsonSchema, JsonSchemaBasicType } from '@flowgram.ai/form-materials'; + +export type BasicType = JsonSchemaBasicType; +export type JsonSchema = IJsonSchema; diff --git a/src/pages/scenario/flowgram/typings/node.ts b/src/pages/scenario/flowgram/typings/node.ts new file mode 100644 index 00000000..05318b95 --- /dev/null +++ b/src/pages/scenario/flowgram/typings/node.ts @@ -0,0 +1,66 @@ +import { IFlowValue } from '@flowgram.ai/form-materials'; +import { + FlowNodeJSON as FlowNodeJSONDefault, + FlowNodeRegistry as FlowNodeRegistryDefault, + FixedLayoutPluginContext, + FlowNodeEntity, + FlowNodeMeta as FlowNodeMetaDefault, +} from '@flowgram.ai/fixed-layout-editor'; + +import { type JsonSchema } from './json-schema'; + +/** + * You can customize the data of the node, and here you can use JsonSchema to define the input and output of the node + * 你可以自定义节点的 data 业务数据, 这里演示 通过 JsonSchema 来定义节点的输入/输出 + */ +export interface FlowNodeJSON extends FlowNodeJSONDefault { + data: { + /** + * Node title + */ + title?: string; + /** + * Inputs data values + */ + inputsValues?: Record; + /** + * Define the inputs data of the node by JsonSchema + */ + inputs?: JsonSchema; + /** + * Define the outputs data of the node by JsonSchema + */ + outputs?: JsonSchema; + /** + * Rest properties + */ + [key: string]: any; + }; +} + +/** + * You can customize your own node meta + * 你可以自定义节点的meta + */ +export interface FlowNodeMeta extends FlowNodeMetaDefault { + sidebarDisable?: boolean; + style?: React.CSSProperties; +} +/** + * You can customize your own node registry + * 你可以自定义节点的注册器 + */ +export interface FlowNodeRegistry extends FlowNodeRegistryDefault { + meta?: FlowNodeMeta; + info: { + icon: string; + description: string; + }; + canAdd?: (ctx: FixedLayoutPluginContext, from: FlowNodeEntity) => boolean; + canDelete?: (ctx: FixedLayoutPluginContext, from: FlowNodeEntity) => boolean; + onAdd?: (ctx: FixedLayoutPluginContext, from: FlowNodeEntity) => FlowNodeJSON; +} + +export type FlowDocumentJSON = { + nodes: FlowNodeJSON[]; +}; diff --git a/src/pages/scenario/workflowEditorModal.tsx b/src/pages/scenario/workflowEditorModal.tsx index fcb6a271..9917a3c1 100644 --- a/src/pages/scenario/workflowEditorModal.tsx +++ b/src/pages/scenario/workflowEditorModal.tsx @@ -2,7 +2,7 @@ import React, { useRef, useState, useEffect } from 'react'; import { Modal, message } from 'antd'; import intl from 'react-intl-universal'; import { WorkflowGraph } from './type'; -import FlowgramEditor, { FlowgramEditorRef } from './flowgram/FlowgramEditor'; +import { Editor } from './flowgram/editor'; import './workflowEditor.less'; interface WorkflowEditorModalProps { @@ -18,7 +18,6 @@ const WorkflowEditorModal: React.FC = ({ onOk, onCancel, }) => { - const editorRef = useRef(null); const [editorData, setEditorData] = useState(null); useEffect(() => { @@ -51,13 +50,13 @@ const WorkflowEditorModal: React.FC = ({ }, [visible, workflowGraph]); const handleOk = () => { - if (!editorRef.current) { - message.warning(intl.get('工作流至少需要一个节点')); - return; - } + // if (!editorRef.current) { + // message.warning(intl.get('工作流至少需要一个节点')); + // return; + // } + + const data = []; - const data = editorRef.current.getData(); - // Convert Flowgram format back to our WorkflowGraph format const workflowGraph: WorkflowGraph = { nodes: data.nodes?.map((node: any) => ({ @@ -99,13 +98,11 @@ const WorkflowEditorModal: React.FC = ({ cancelText={intl.get('取消')} destroyOnClose > - {visible && editorData && ( - - )} + ); };