mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-09 14:03:33 +09:00
Ref https://github.com/webstudio-is/webstudio/issues/2532 Here added code editor with variables completion support for bindings UI. Simple textarea would not work because same names can be used for different variables to support seamless dnd for user. `$` is used to trigger completion, in the future can be replaced with tab or something like this. Current implementation is mostly a copy paste from lexical playground. <img width="536" alt="image" src="https://github.com/webstudio-is/webstudio/assets/5635476/c33ebb71-85d8-41b3-8151-72eccae76129"> To test try CodeEditor component in storybook ## Use case 1. Our variables can have the same names for easier copy-pastability To address specific variable they should be chosen from available list. 2. renaming variable should rename it everywhere to not break bindings. So variables behave as symbol in text editor and removed completely on backspace.
142 lines
4.9 KiB
JSON
142 lines
4.9 KiB
JSON
{
|
|
"name": "@webstudio-is/builder",
|
|
"version": "0.111.0",
|
|
"private": true,
|
|
"description": "Webstudio Builder UI as a service",
|
|
"scripts": {
|
|
"prebuild": "pnpm remix --version",
|
|
"build": "remix build",
|
|
"start": "remix-serve build",
|
|
"start-local": "NODE_OPTIONS='-r dotenv/config' remix-serve build",
|
|
"dev": "remix dev",
|
|
"typecheck": "tsc --noEmit --emitDeclarationOnly false",
|
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
|
|
"checks": "pnpm typecheck && pnpm test",
|
|
"storybook:dev": "storybook dev -p 6006",
|
|
"storybook:build": "storybook build",
|
|
"ci:migrate": "migrations migrate --force",
|
|
"middleware:link": "pnpx vercel link",
|
|
"middleware:env": "pnpx vercel env pull --environment=preview ./.env.preview",
|
|
"middleware:dev": "DOTENV_CONFIG_PATH=.env.preview tsx watch -r dotenv/config ./middleware.js"
|
|
},
|
|
"dependencies": {
|
|
"@floating-ui/dom": "^1.5.3",
|
|
"@fontsource-variable/inter": "^5.0.13",
|
|
"@fontsource-variable/manrope": "^5.0.15",
|
|
"@fontsource/roboto-mono": "^5.0.13",
|
|
"@lexical/headless": "^0.12.2",
|
|
"@lexical/html": "^0.12.2",
|
|
"@lexical/link": "^0.12.2",
|
|
"@lexical/react": "^0.12.2",
|
|
"@lexical/selection": "^0.12.2",
|
|
"@lexical/utils": "^0.12.2",
|
|
"@nanostores/react": "^0.7.1",
|
|
"@radix-ui/react-select": "^2.0.0",
|
|
"@radix-ui/react-tooltip": "^1.0.7",
|
|
"@react-aria/interactions": "^3.19.0",
|
|
"@react-aria/utils": "^3.21.0",
|
|
"@remix-run/cloudflare": "^1.19.2",
|
|
"@remix-run/node": "^1.19.2",
|
|
"@remix-run/react": "^1.19.2",
|
|
"@remix-run/serve": "^1.19.2",
|
|
"@sentry/remix": "^7.47.0",
|
|
"@sentry/types": "7.47.0",
|
|
"@trpc/server": "^10.38.1",
|
|
"@upstash/ratelimit": "^0.4.4",
|
|
"@vercel/edge": "^1.1.0",
|
|
"@vercel/kv": "^0.2.3",
|
|
"@vercel/remix": "^1.19.2",
|
|
"@webstudio-is/ai": "workspace:*",
|
|
"@webstudio-is/asset-uploader": "workspace:*",
|
|
"@webstudio-is/authorization-token": "workspace:*",
|
|
"@webstudio-is/css-data": "workspace:*",
|
|
"@webstudio-is/css-engine": "workspace:*",
|
|
"@webstudio-is/dashboard": "workspace:*",
|
|
"@webstudio-is/design-system": "workspace:*",
|
|
"@webstudio-is/domain": "workspace:*",
|
|
"@webstudio-is/error-utils": "workspace:*",
|
|
"@webstudio-is/feature-flags": "workspace:*",
|
|
"@webstudio-is/fonts": "workspace:*",
|
|
"@webstudio-is/http-client": "workspace:*",
|
|
"@webstudio-is/icons": "workspace:*",
|
|
"@webstudio-is/image": "workspace:*",
|
|
"@webstudio-is/jsx-utils": "workspace:*",
|
|
"@webstudio-is/prisma-client": "workspace:*",
|
|
"@webstudio-is/project": "workspace:*",
|
|
"@webstudio-is/project-build": "workspace:*",
|
|
"@webstudio-is/react-sdk": "workspace:*",
|
|
"@webstudio-is/sdk": "workspace:*",
|
|
"@webstudio-is/sdk-components-react": "workspace:*",
|
|
"@webstudio-is/sdk-components-react-radix": "workspace:*",
|
|
"@webstudio-is/sdk-components-react-remix": "workspace:*",
|
|
"@webstudio-is/trpc-interface": "workspace:*",
|
|
"change-case": "^5.0.2",
|
|
"colord": "^2.9.3",
|
|
"date-fns": "^2.30.0",
|
|
"debug": "^4.3.4",
|
|
"detect-font": "^0.1.5",
|
|
"downshift": "^6.1.7",
|
|
"hono": "^3.7.3",
|
|
"hyphenate-style-name": "^1.0.4",
|
|
"immer": "^10.0.3",
|
|
"immerhin": "^0.9.0",
|
|
"jose": "^4.11.2",
|
|
"lexical": "^0.12.2",
|
|
"match-sorter": "^6.3.1",
|
|
"mdast-util-from-markdown": "^2.0.0",
|
|
"mdast-util-gfm": "^3.0.0",
|
|
"memoize-one": "^6.0.0",
|
|
"micromark-extension-gfm": "^3.0.0",
|
|
"nanoevents": "^8.0.0",
|
|
"nanoid": "^5.0.1",
|
|
"nanostores": "^0.9.3",
|
|
"node-fetch": "^3.3.1",
|
|
"pretty-bytes": "^6.1.1",
|
|
"prismjs": "^1.29.0",
|
|
"react": "^18.2.0",
|
|
"react-color": "^2.19.3",
|
|
"react-dom": "^18.2.0",
|
|
"react-hotkeys-hook": "^4.4.1",
|
|
"react-script-hook": "^1.7.2",
|
|
"react-use": "^17.3.2",
|
|
"remix-auth": "^3.2.2",
|
|
"remix-auth-form": "^1.1.2",
|
|
"remix-auth-github": "^1.1.1",
|
|
"remix-auth-google": "^1.1.0",
|
|
"remix-island": "^0.1.2",
|
|
"shallow-equal": "^3.1.0",
|
|
"slugify": "^1.6.6",
|
|
"strip-indent": "^4.0.0",
|
|
"title-case": "^4.1.0",
|
|
"untruncate-json": "^0.0.1",
|
|
"use-debounce": "^9.0.4",
|
|
"uuid": "^9.0.0",
|
|
"warn-once": "^0.1.1",
|
|
"zod": "^3.21.4"
|
|
},
|
|
"devDependencies": {
|
|
"@hono/node-server": "^1.2.0",
|
|
"@jest/globals": "^29.7.0",
|
|
"@remix-run/dev": "^1.19.2",
|
|
"@storybook/react": "^7.4.0",
|
|
"@testing-library/react-hooks": "^8.0.1",
|
|
"@types/hyphenate-style-name": "^1.0.0",
|
|
"@types/lodash.debounce": "^4.0.6",
|
|
"@types/prismjs": "^1.26.0",
|
|
"@types/react": "^18.2.21",
|
|
"@types/react-color": "^3.0.6",
|
|
"@types/react-dom": "^18.2.7",
|
|
"@types/uuid": "^8.3.4",
|
|
"@webstudio-is/jest-config": "workspace:*",
|
|
"@webstudio-is/storybook-config": "workspace:*",
|
|
"@webstudio-is/tsconfig": "workspace:*",
|
|
"dotenv": "^16.3.1",
|
|
"html-tags": "^3.3.1",
|
|
"react-test-renderer": "^18.2.0",
|
|
"type-fest": "^4.3.1",
|
|
"typescript": "5.2.2"
|
|
},
|
|
"sideEffects": false,
|
|
"license": "AGPL-3.0-or-later"
|
|
}
|