diff --git a/package.json b/package.json
index ade5907..a444462 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,8 @@
"grow_com:build": "pnpm --filter grow_components build",
"grow_icon:dev": "pnpm --filter grow_admin_icons dev",
"grow_icon:build": "pnpm --filter grow_admin_icons build",
+ "grow_editor:dev": "pnpm --filter grow_editor dev",
+ "grow_editor:build": "pnpm --filter grow_editor build",
"grow_des:dev": "pnpm --filter grow_designer dev",
"grow_des:build": "pnpm --filter grow_designer build",
"grow_rule:dev": "pnpm --filter grow_rule_engine dev",
diff --git a/packages/grow_editor/.babelrc b/packages/grow_editor/.babelrc
new file mode 100644
index 0000000..e0151a3
--- /dev/null
+++ b/packages/grow_editor/.babelrc
@@ -0,0 +1,32 @@
+{
+ "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]],
+ "plugins": [
+ "syntax-dynamic-import",
+ ["@vue/babel-plugin-jsx"],
+ "@babel/plugin-proposal-optional-chaining",
+ "@babel/plugin-proposal-nullish-coalescing-operator"
+ ],
+ "env": {
+ "utils": {
+ "presets": [
+ [
+ "env",
+ {
+ "loose": true,
+ "modules": "commonjs",
+ "targets": {
+ "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+ }
+ }
+ ]
+ ]
+ },
+ "test": {
+ "plugins": ["istanbul"],
+ "presets": [["env", { "targets": { "node": "current" } }]]
+ },
+ "esm": {
+ "presets": [["@babel/preset-env", { "modules": false }]]
+ }
+ }
+}
diff --git a/packages/grow_editor/README.md b/packages/grow_editor/README.md
new file mode 100644
index 0000000..c9eb6e1
--- /dev/null
+++ b/packages/grow_editor/README.md
@@ -0,0 +1 @@
+开发中,暂无相关描述
\ No newline at end of file
diff --git a/packages/grow_editor/package.json b/packages/grow_editor/package.json
new file mode 100644
index 0000000..16d88d3
--- /dev/null
+++ b/packages/grow_editor/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "grow_editor",
+ "private": true,
+ "version": "1.0.0",
+ "description": "",
+ "author": "ZhQuella (Email:827265905@qq.com)",
+ "type": "module",
+ "license": "ISC",
+ "main": "./src/index.ts",
+ "scripts": {
+ "build": "rollup -c --environment NODE_ENV:production",
+ "dev": "rollup -c -w --environment NODE_ENV:development"
+ },
+ "dependencies": {
+ "@codemirror/commands": "^6.5.0",
+ "@codemirror/lang-css": "^6.2.1",
+ "@codemirror/lang-html": "^6.4.9",
+ "@codemirror/lang-javascript": "^6.2.2",
+ "@codemirror/lang-json": "^6.0.1",
+ "@codemirror/lang-sql": "^6.6.4",
+ "@codemirror/lang-vue": "^0.1.3",
+ "@codemirror/state": "^6.4.1",
+ "@codemirror/theme-one-dark": "^6.1.2",
+ "@codemirror/view": "^6.26.3",
+ "codemirror": "^6.0.1"
+ }
+}
diff --git a/packages/grow_editor/postcss.config.cjs b/packages/grow_editor/postcss.config.cjs
new file mode 100644
index 0000000..5cbc2c7
--- /dev/null
+++ b/packages/grow_editor/postcss.config.cjs
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {}
+ }
+};
diff --git a/packages/grow_editor/rollup.config.mjs b/packages/grow_editor/rollup.config.mjs
new file mode 100644
index 0000000..dcf5c06
--- /dev/null
+++ b/packages/grow_editor/rollup.config.mjs
@@ -0,0 +1,75 @@
+import path from "path";
+import { fileURLToPath } from 'url';
+import { defineConfig } from "rollup";
+import babel from "@rollup/plugin-babel";
+import resolve from "@rollup/plugin-node-resolve";
+import esbuild from 'rollup-plugin-esbuild';
+import vue from "@vitejs/plugin-vue";
+import jsx from "@vitejs/plugin-vue-jsx";
+import json from "@rollup/plugin-json";
+import commonjs from "@rollup/plugin-commonjs";
+import { terser } from "rollup-plugin-terser";
+import peerDepsExternal from "rollup-plugin-peer-deps-external";
+import postcss from "rollup-plugin-postcss";
+import alias from "@rollup/plugin-alias";
+import postcssImport from 'postcss-import';
+import tailwindcss from 'tailwindcss';
+const __filenameNew = fileURLToPath(import.meta.url);
+const __dirnameNew = path.dirname(__filenameNew);
+
+import pkg from "./package.json" assert { type: "json" };
+
+const createBanner = () => {
+ return `/*!
+ * ${pkg.name} v${pkg.version}
+ * (c) ${new Date().getFullYear()} ${pkg.author}
+ * @license ${pkg.license}
+ */`;
+};
+
+export default defineConfig({
+ input: "./src/index.ts",
+ output: [
+ {
+ banner: createBanner(),
+ file: "dist/index.js",
+ format: "cjs"
+ },
+ {
+ banner: createBanner(),
+ file: "dist/index.esm.js",
+ format: "esm",
+ exports: "named"
+ },
+ {
+ banner: createBanner(),
+ file: "dist/index.umd.js",
+ format: "umd",
+ name: "w"
+ }
+ ],
+ plugins: [
+ peerDepsExternal(),
+ vue({
+ reactivityTransform: true
+ }),
+ postcss({
+ extensions: [".css"],
+ extract: true,
+ plugins: [postcssImport(), tailwindcss()]
+ }),
+ commonjs(),
+ resolve({
+ preferBuiltins: true
+ }),
+ babel(),
+ jsx(),
+ esbuild(),
+ json(),
+ terser(),
+ alias({
+ entries: [{ find: "@", replacement: path.resolve(__dirnameNew, "src") }]
+ })
+ ],
+ external: ["Vue", "element-plus"]
+});
diff --git a/packages/grow_editor/shims.d.ts b/packages/grow_editor/shims.d.ts
new file mode 100644
index 0000000..e0c94ea
--- /dev/null
+++ b/packages/grow_editor/shims.d.ts
@@ -0,0 +1,17 @@
+declare const __DEV__: boolean;
+
+declare module "*.vue" {
+ import type { DefineComponent } from "vue";
+ const comp: DefineComponent<{}, {}, any>;
+ export default comp;
+}
+
+declare module "*.scss" {
+ const classes: string;
+ export default classes;
+}
+
+declare module "*.module.scss" {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
diff --git a/packages/grow_editor/src/index.ts b/packages/grow_editor/src/index.ts
new file mode 100644
index 0000000..d6d4cac
--- /dev/null
+++ b/packages/grow_editor/src/index.ts
@@ -0,0 +1,35 @@
+import { App, Component } from "vue";
+import { version } from "../package.json";
+
+import { GCodemirror } from "./packages/Codemirror";
+
+import "animate.css";
+import "./styles/tailwindcss/index.css";
+import "./styles/animate/index.css";
+
+const components: Component[] = [
+ GCodemirror
+];
+
+const install = (app: App) => {
+ const useComponent = (component: Component) => {
+ if (component.name) {
+ app.component(component.name, component);
+ } else {
+ throw "component need name";
+ }
+ };
+ components.forEach((component: Component) => {
+ useComponent(component);
+ });
+};
+
+const GrowConponent = {
+ version,
+ install,
+ GCodemirror
+};
+
+export { version, GCodemirror };
+
+export default GrowConponent;
diff --git a/packages/grow_editor/src/packages/Codemirror/GCodemirror.vue b/packages/grow_editor/src/packages/Codemirror/GCodemirror.vue
new file mode 100644
index 0000000..cd2ba1c
--- /dev/null
+++ b/packages/grow_editor/src/packages/Codemirror/GCodemirror.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/grow_editor/src/packages/Codemirror/index.ts b/packages/grow_editor/src/packages/Codemirror/index.ts
new file mode 100644
index 0000000..316af88
--- /dev/null
+++ b/packages/grow_editor/src/packages/Codemirror/index.ts
@@ -0,0 +1,3 @@
+import GCodemirror from './GCodemirror.vue';
+
+export { GCodemirror };
diff --git a/packages/grow_editor/src/packages/Codemirror/use/initEditor.ts b/packages/grow_editor/src/packages/Codemirror/use/initEditor.ts
new file mode 100644
index 0000000..6025792
--- /dev/null
+++ b/packages/grow_editor/src/packages/Codemirror/use/initEditor.ts
@@ -0,0 +1,31 @@
+import { ref } from "vue";
+
+import { EditorState } from "@codemirror/state";
+import { basicSetup } from "codemirror";
+import { EditorView, keymap } from "@codemirror/view";
+import { defaultKeymap } from "@codemirror/commands";
+// import { oneDark } from "@codemirror/theme-one-dark";
+
+export const initEditor = () => {
+
+ const editorView = ref();
+
+ const resetEditor = (parent: HTMLDivElement, method): void => {
+ editorView.value = new EditorView({
+ state: EditorState.create({
+ doc: "",
+ extensions: [
+ basicSetup,
+ keymap.of(defaultKeymap),
+ method()
+ ]
+ }),
+ parent
+ });
+ }
+
+ return {
+ resetEditor,
+ editorView
+ }
+}
diff --git a/packages/grow_editor/src/packages/Codemirror/use/useEvent.ts b/packages/grow_editor/src/packages/Codemirror/use/useEvent.ts
new file mode 100644
index 0000000..fa28c8c
--- /dev/null
+++ b/packages/grow_editor/src/packages/Codemirror/use/useEvent.ts
@@ -0,0 +1,23 @@
+
+
+export const useEvent = ({
+ editorView,
+ codeEditor,
+ resetEditor, editorValue
+}) => {
+
+ const onModelChange = (value) => {
+ codeEditor.value.innerHTML = "";
+ resetEditor(codeEditor.value, value.method);
+ };
+
+ const onCleanEditor= () => {
+ codeEditor.value.innerHTML = "";
+ resetEditor(codeEditor.value, editorValue.value.method);
+ }
+
+ return {
+ onCleanEditor,
+ onModelChange
+ }
+}
diff --git a/packages/grow_editor/src/static/dict.ts b/packages/grow_editor/src/static/dict.ts
new file mode 100644
index 0000000..f3bcb8f
--- /dev/null
+++ b/packages/grow_editor/src/static/dict.ts
@@ -0,0 +1,39 @@
+import { javascript } from "@codemirror/lang-javascript";
+import { vue } from "@codemirror/lang-vue";
+import { css } from "@codemirror/lang-css";
+import { json } from "@codemirror/lang-json";
+import { html } from "@codemirror/lang-html";
+import { sql } from "@codemirror/lang-sql";
+
+export const selectMap = [
+ {
+ label: "JavaScript",
+ value: "javascript",
+ method: javascript
+ },
+ {
+ label: "Css",
+ value: "css",
+ method: css
+ },
+ {
+ label: "Vue",
+ value: "vue",
+ method: vue
+ },
+ {
+ label: "HTML",
+ value: "html",
+ method: html
+ },
+ {
+ label: "SQL",
+ value: "sql",
+ method: sql
+ },
+ {
+ label: "Json",
+ value: "json",
+ method: json
+ }
+];
\ No newline at end of file
diff --git a/packages/grow_editor/src/styles/animate/index.css b/packages/grow_editor/src/styles/animate/index.css
new file mode 100644
index 0000000..23b45cf
--- /dev/null
+++ b/packages/grow_editor/src/styles/animate/index.css
@@ -0,0 +1,3 @@
+:root {
+ --animate-duration: 0.35s;
+}
diff --git a/packages/grow_editor/src/styles/tailwindcss/index.css b/packages/grow_editor/src/styles/tailwindcss/index.css
new file mode 100644
index 0000000..46227aa
--- /dev/null
+++ b/packages/grow_editor/src/styles/tailwindcss/index.css
@@ -0,0 +1,32 @@
+@import "tailwindcss/base";
+@import "tailwindcss/components";
+@import "tailwindcss/utilities";
+
+@layer base {
+ .theme-public {
+ --public-main-color: 64, 158, 255;
+ --public-main-dark-color: 51, 126, 204;
+ }
+ .theme-light {
+ --bg-color: 250, 250, 252;
+ --bg-color2: 245, 245, 246;
+ --bg-color3: 255, 255, 255;
+ --bg-card: 255, 255, 255;
+ --main-text: 51, 51, 51;
+ --text-light-1: 69, 68, 74;
+ --text-light-2: 140, 140, 140;
+ --border-color: 220, 223, 230;
+ --border-color2: 238, 238, 238;
+ }
+ .theme-dark {
+ --bg-color: 17, 24, 39;
+ --bg-color2: 22, 31, 50;
+ --bg-color3: 33, 33, 33;
+ --bg-card: 21, 21, 21;
+ --main-text: 217, 230, 235;
+ --text-light-1: 217, 230, 235;
+ --text-light-2: 196, 221, 230;
+ --border-color: 76, 77, 79;
+ --border-color2: 48, 48, 48;
+ }
+}
diff --git a/packages/grow_editor/src/vite-env.d.ts b/packages/grow_editor/src/vite-env.d.ts
new file mode 100644
index 0000000..48a5f52
--- /dev/null
+++ b/packages/grow_editor/src/vite-env.d.ts
@@ -0,0 +1,3 @@
+///
+
+
diff --git a/packages/grow_editor/tailwind.config.cjs b/packages/grow_editor/tailwind.config.cjs
new file mode 100644
index 0000000..8798ba2
--- /dev/null
+++ b/packages/grow_editor/tailwind.config.cjs
@@ -0,0 +1,97 @@
+module.exports = {
+ mode: "jit",
+ content: ["./index.html", "./src/**/*.{js,jsx,ts,tsx,vue}"],
+ safelist: ["theme-light", "theme-dark", "theme-public"],
+ important: true,
+ theme: {
+ screens: {
+ sm: "0px",
+ md: "768px",
+ lg: "1024px",
+ xl: "1280px"
+ },
+ extend: {
+ colors: {
+ PUBLIC_MAIN_COLOR: withOpacity("--public-main-color"),
+ PUBLIC_MAIN_DARK_COLOR: withOpacity("--public-main-dark-color"),
+ BG_COLOR: withOpacity("--bg-color"),
+ BG_COLOR2: withOpacity("--bg-color2"),
+ BG_COLOR3: withOpacity("--bg-color3"),
+ BG_CARD: withOpacity("--bg-card"),
+ WHITE: withOpacity("--white"),
+ MAIN_TEXT: withOpacity("--main-text"),
+ TEXT_LIGHT1: withOpacity("--text-light-1"),
+ TEXT_LIGHT2: withOpacity("--text-light-2"),
+ BORDER_COLOR: withOpacity("--border-color"),
+ BORDER_COLOR2: withOpacity("--border-color2")
+ }
+ }
+ },
+ variants: {
+ extend: {}
+ },
+ plugins: [require("tailwindcss"), require("autoprefixer"), solveCover, createEnterPlugin(30)]
+};
+
+function solveCover({ addBase }) {
+ addBase({
+ ".el-button": {
+ "background-color": "var(--el-button-bg-color, var(--el-color-white))"
+ }
+ });
+}
+
+function withOpacity(variableName) {
+ return ({ opacityValue }) => {
+ if (opacityValue) {
+ return `rgba(var(${variableName}), ${opacityValue})`;
+ }
+ return `rgb(var(${variableName}))`;
+ };
+}
+
+function createEnterPlugin(maxOutput = 20) {
+ const createCss = (index, d = "x") => {
+ const upd = d.toUpperCase();
+ return {
+ [`*> .enter-${d}:nth-child(${index})`]: {
+ transform: `translate${upd}(50px) translateZ(0)`
+ },
+ [`*> .-enter-${d}:nth-child(${index})`]: {
+ transform: `translate${upd}(-50px) translateZ(0)`
+ },
+ [`* > .enter-${d}:nth-child(${index}),* > .-enter-${d}:nth-child(${index})`]: {
+ "z-index": `${10 - index}`,
+ opacity: "0",
+ animation: `enter-${d}-animation 0.4s ease-in-out 0.3s`,
+ "animation-fill-mode": "forwards",
+ "animation-delay": `${(index * 1) / 10}s`
+ }
+ };
+ };
+ const handler = ({ addBase }) => {
+ const addRawCss = {};
+ for (let index = 1; index < maxOutput; index++) {
+ Object.assign(addRawCss, {
+ ...createCss(index, "x"),
+ ...createCss(index, "y")
+ });
+ }
+ addBase({
+ ...addRawCss,
+ [`@keyframes enter-x-animation`]: {
+ to: {
+ opacity: "1",
+ transform: "translateX(0)"
+ }
+ },
+ [`@keyframes enter-y-animation`]: {
+ to: {
+ opacity: "1",
+ transform: "translateY(0)"
+ }
+ }
+ });
+ };
+ return { handler };
+}
diff --git a/packages/grow_editor/tsconfig.json b/packages/grow_editor/tsconfig.json
new file mode 100644
index 0000000..7a19d80
--- /dev/null
+++ b/packages/grow_editor/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "sourceMap": false,
+ "target": "esnext",
+ "module": "esnext",
+ "jsx": "preserve",
+ "moduleResolution": "node",
+ "strictNullChecks": true,
+ "declaration": true,
+ "noUnusedLocals": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "experimentalDecorators": true,
+ "allowSyntheticDefaultImports": true,
+ "rootDir": ".",
+ "baseUrl": ".",
+ "lib": ["esnext", "dom"],
+ "types": ["node"],
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ },
+ "include": ["./shims.d.ts", "src/**/*"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/grow_editor/types/public.d.ts b/packages/grow_editor/types/public.d.ts
new file mode 100644
index 0000000..a88bb46
--- /dev/null
+++ b/packages/grow_editor/types/public.d.ts
@@ -0,0 +1,5 @@
+
+export interface Fn {
+ (...arg: T[]): R;
+}
+
diff --git a/packages/grow_flow/src/index.ts b/packages/grow_flow/src/index.ts
index b421641..c4bc0e6 100644
--- a/packages/grow_flow/src/index.ts
+++ b/packages/grow_flow/src/index.ts
@@ -1,13 +1,13 @@
import { App, Component } from "vue";
import { version } from "../package.json";
-import { WorkFlow } from "./packages/WorkFlow";
+import { GWorkFlow } from "./packages/GWorkFlow";
import "animate.css";
import "./styles/tailwindcss/index.css";
import "./styles/animate/index.css";
const components: Component[] = [
- WorkFlow
+ GWorkFlow
];
const install = (app: App) => {
@@ -26,9 +26,9 @@ const install = (app: App) => {
const GrowConponent = {
version,
install,
- WorkFlow
+ GWorkFlow
};
-export { version, WorkFlow };
+export { version, GWorkFlow };
export default GrowConponent;
diff --git a/packages/grow_flow/src/packages/WorkFlow/WorkFlow.vue b/packages/grow_flow/src/packages/GWorkFlow/GWorkFlow.vue
similarity index 99%
rename from packages/grow_flow/src/packages/WorkFlow/WorkFlow.vue
rename to packages/grow_flow/src/packages/GWorkFlow/GWorkFlow.vue
index f651731..22f8ec9 100644
--- a/packages/grow_flow/src/packages/WorkFlow/WorkFlow.vue
+++ b/packages/grow_flow/src/packages/GWorkFlow/GWorkFlow.vue
@@ -94,7 +94,7 @@
diff --git a/packages/grow_up_admin/src/pages/AutomatedTool/ProcessEngine/index.vue b/packages/grow_up_admin/src/pages/AutomatedTool/ProcessEngine/index.vue
index e9fce30..1480fbe 100644
--- a/packages/grow_up_admin/src/pages/AutomatedTool/ProcessEngine/index.vue
+++ b/packages/grow_up_admin/src/pages/AutomatedTool/ProcessEngine/index.vue
@@ -1,9 +1,9 @@
-
+
diff --git a/packages/grow_up_admin/src/plugins/style.plugin.ts b/packages/grow_up_admin/src/plugins/style.plugin.ts
index bc39372..99b486e 100644
--- a/packages/grow_up_admin/src/plugins/style.plugin.ts
+++ b/packages/grow_up_admin/src/plugins/style.plugin.ts
@@ -3,6 +3,7 @@ import "style/tailwindcss/index.scss";
import "grow_components/dist/index.css";
import "grow_designer/dist/index.css";
import "grow_flow/dist/index.css";
+import "grow_editor/dist/index.css";
import "animate.css";
import "hover.css";
import "nprogress/nprogress.css";
diff --git a/packages/grow_up_admin/src/routers/authority.ts b/packages/grow_up_admin/src/routers/authority.ts
index da30b04..dc4efc7 100644
--- a/packages/grow_up_admin/src/routers/authority.ts
+++ b/packages/grow_up_admin/src/routers/authority.ts
@@ -3,6 +3,7 @@ export default {
AutomatedTool: ["admin"],
PageDesigner: ["admin"],
ProcessEngine: ["admin"],
+ OnlineEditor: ["admin"],
dashboard: ["admin"],
analysis: ["admin"],
workbench: ["admin"],
diff --git a/packages/grow_up_admin/src/routers/pages/AutomatedTool.ts b/packages/grow_up_admin/src/routers/pages/AutomatedTool.ts
index 38cfa8d..ecccaec 100644
--- a/packages/grow_up_admin/src/routers/pages/AutomatedTool.ts
+++ b/packages/grow_up_admin/src/routers/pages/AutomatedTool.ts
@@ -17,6 +17,13 @@ export default [
icon: "FlowModeler",
path: "process-engine",
component: "AutomatedTool/ProcessEngine/index.vue"
+ },
+ {
+ label: "在线编辑器",
+ name: "OnlineEditor",
+ icon: "Code",
+ path: "online-editor",
+ component: "AutomatedTool/OnlineEditor/index.vue"
}
]
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3d8d18b..a300a1d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -267,6 +267,42 @@ importers:
specifier: ^2.2.1
version: 2.2.1(sortablejs@1.15.0)(vue@3.3.0)
+ packages/grow_editor:
+ dependencies:
+ '@codemirror/commands':
+ specifier: ^6.5.0
+ version: 6.5.0
+ '@codemirror/lang-css':
+ specifier: ^6.2.1
+ version: 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/lang-html':
+ specifier: ^6.4.9
+ version: 6.4.9
+ '@codemirror/lang-javascript':
+ specifier: ^6.2.2
+ version: 6.2.2
+ '@codemirror/lang-json':
+ specifier: ^6.0.1
+ version: 6.0.1
+ '@codemirror/lang-sql':
+ specifier: ^6.6.4
+ version: 6.6.4(@codemirror/view@6.26.3)
+ '@codemirror/lang-vue':
+ specifier: ^0.1.3
+ version: 0.1.3
+ '@codemirror/state':
+ specifier: ^6.4.1
+ version: 6.4.1
+ '@codemirror/theme-one-dark':
+ specifier: ^6.1.2
+ version: 6.1.2
+ '@codemirror/view':
+ specifier: ^6.26.3
+ version: 6.26.3
+ codemirror:
+ specifier: ^6.0.1
+ version: 6.0.1(@lezer/common@1.2.1)
+
packages/grow_flow:
dependencies:
'@antv/x6':
@@ -328,6 +364,9 @@ importers:
grow_designer:
specifier: workspace:*
version: link:../grow_designer
+ grow_editor:
+ specifier: workspace:^
+ version: link:../grow_editor
grow_flow:
specifier: workspace:*
version: link:../grow_flow
@@ -1699,6 +1738,146 @@ packages:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true
+ /@codemirror/autocomplete@6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-P/LeCTtZHRTCU4xQsa89vSKWecYv1ZqwzOd5topheGRf+qtacFgBeIMQi3eL8Kt/BUNvxUWkx+5qP2jlGoARrg==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@codemirror/commands@6.5.0:
+ resolution: {integrity: sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@codemirror/lang-css@6.2.1(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/css': 1.1.8
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-html@6.4.9:
+ resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/css': 1.1.8
+ '@lezer/html': 1.3.9
+ dev: false
+
+ /@codemirror/lang-javascript@6.2.2:
+ resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.7.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/javascript': 1.4.16
+ dev: false
+
+ /@codemirror/lang-json@6.0.1:
+ resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/json': 1.0.2
+ dev: false
+
+ /@codemirror/lang-sql@6.6.4(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-n+FVfKGut+frOvor9dU5pFUalcP614WBNQ9IT1kOUj1t6LFLjWHi2I9DdxXnJuxqFV9jTyYF79coDV3ilSJqCw==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-vue@0.1.3:
+ resolution: {integrity: sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==}
+ dependencies:
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@codemirror/language@6.10.1:
+ resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ style-mod: 4.1.2
+ dev: false
+
+ /@codemirror/lint@6.7.1:
+ resolution: {integrity: sha512-rELba6QJD20/bNXWP/cKTGLrwVEcpa2ViwULCV03ONcY1Je85++7sczVRUlnE4TJMjatx3IJTz6HX4NXi+moXw==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ crelt: 1.0.6
+ dev: false
+
+ /@codemirror/search@6.5.6:
+ resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ crelt: 1.0.6
+ dev: false
+
+ /@codemirror/state@6.4.1:
+ resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==}
+ dev: false
+
+ /@codemirror/theme-one-dark@6.1.2:
+ resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/highlight': 1.2.0
+ dev: false
+
+ /@codemirror/view@6.26.3:
+ resolution: {integrity: sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ style-mod: 4.1.2
+ w3c-keyname: 2.2.8
+ dev: false
+
/@ctrl/tinycolor@3.6.0:
resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==}
engines: {node: '>=10'}
@@ -2296,6 +2475,54 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
+ /@lezer/common@1.2.1:
+ resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==}
+ dev: false
+
+ /@lezer/css@1.1.8:
+ resolution: {integrity: sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/highlight@1.2.0:
+ resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@lezer/html@1.3.9:
+ resolution: {integrity: sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/javascript@1.4.16:
+ resolution: {integrity: sha512-84UXR3N7s11MPQHWgMnjb9571fr19MmXnr5zTv2XX0gHXXUvW3uPJ8GCjKrfTXmSdfktjRK0ayKklw+A13rk4g==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/json@1.0.2:
+ resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/lr@1.4.0:
+ resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ dev: false
+
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -3418,6 +3645,20 @@ packages:
engines: {node: '>=6.0'}
dev: true
+ /codemirror@6.0.1(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/commands': 6.5.0
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.7.1
+ '@codemirror/search': 6.5.6
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ transitivePeerDependencies:
+ - '@lezer/common'
+ dev: false
+
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@@ -3511,6 +3752,10 @@ packages:
readable-stream: 3.6.2
dev: false
+ /crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+ dev: false
+
/cross-spawn@5.1.0:
resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
dependencies:
@@ -5531,6 +5776,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /style-mod@4.1.2:
+ resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
+ dev: false
+
/sucrase@3.32.0:
resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
engines: {node: '>=8'}
@@ -5876,6 +6125,10 @@ packages:
'@vue/server-renderer': 3.3.0(vue@3.3.0)
'@vue/shared': 3.3.0
+ /w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+ dev: false
+
/w3c-xmlserializer@4.0.0:
resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
engines: {node: '>=14'}
diff --git a/scripts/build.js b/scripts/build.js
index c703105..7a75a7f 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -5,6 +5,7 @@ async function buildAll() {
await execa("pnpm", ["run", "grow_des:build"], { stdio: "inherit" });
await execa("pnpm", ["run", "grow_flow:build"], { stdio: "inherit" });
await execa("pnpm", ["run", "grow_icon:build"], { stdio: "inherit" });
+ await execa("pnpm", ["run", "grow_editor:build"], { stdio: "inherit" });
await execa("pnpm", ["run", "grow_utils:build"], { stdio: "inherit" });
await execa("pnpm", ["run", "grow_admin:build"], { stdio: "inherit" });
}
diff --git a/scripts/dev.js b/scripts/dev.js
index bb19bf9..d04ef0f 100644
--- a/scripts/dev.js
+++ b/scripts/dev.js
@@ -5,6 +5,7 @@ async function buildAll() {
execa("pnpm", ["run", "grow_des:dev"], { stdio: "inherit" });
execa("pnpm", ["run", "grow_flow:dev"], { stdio: "inherit" });
execa("pnpm", ["run", "grow_icon:dev"], { stdio: "inherit" });
+ execa("pnpm", ["run", "grow_editor:dev"], { stdio: "inherit" });
execa("pnpm", ["run", "grow_utils:dev"], { stdio: "inherit" });
execa("pnpm", ["run", "grow_admin:dev"], { stdio: "inherit" });
}