diff --git a/package-lock.json b/package-lock.json index 4b296c6..fae71e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,14 +32,18 @@ "lodash.clonedeep": "^4.5.0", "mixpanel-browser": "^2.47.0", "moment": "^2.29.4", + "monaco-editor-textmate": "^4.0.0", + "monaco-textmate": "^3.0.1", "mongodb": "^4.14.0", "mongoose": "^5.10.1", "next": "13.0.7", + "onigasm": "^2.2.5", "react": "18.2.0", "react-dnd": "^16.0.1", "react-dom": "18.2.0", "react-icons": "^4.8.0", "react-joyride": "^2.5.4", + "react-use": "^17.4.0", "recoil": "^0.7.7", "recoil-persist": "^4.2.0", "sass": "^1.58.3", @@ -1977,6 +1981,11 @@ "dev": true, "peer": true }, + "node_modules/@types/js-cookie": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", + "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -2343,6 +2352,11 @@ "resolved": "https://registry.npmjs.org/@webcontainer/api/-/api-1.1.5.tgz", "integrity": "sha512-qMJyqO+A8+B8JKW/IW9KVQblAiEQwesq7ka6w8pgm6DXKWCQaPVOco4Zo7FxZ09OmBIX+lnXyfKbQzXiORLGJg==" }, + "node_modules/@xobotyi/scrollbar-width": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", + "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -3017,6 +3031,26 @@ "node": ">= 8" } }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", @@ -3238,6 +3272,14 @@ "node": ">=10.13.0" } }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, "node_modules/es-abstract": { "version": "1.21.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", @@ -3877,6 +3919,21 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, + "node_modules/fast-loops": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", + "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" + }, + "node_modules/fast-plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.3.tgz", + "integrity": "sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==" + }, + "node_modules/fast-shallow-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", + "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" + }, "node_modules/fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -3893,6 +3950,11 @@ "url": "https://paypal.me/naturalintelligence" } }, + "node_modules/fastest-stable-stringify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", + "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==" + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -4319,6 +4381,11 @@ "react-is": "^16.7.0" } }, + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4388,6 +4455,15 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/inline-style-prefixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", + "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==", + "dependencies": { + "css-in-js-utils": "^3.1.0", + "fast-loops": "^1.1.3" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -4786,6 +4862,11 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + }, "node_modules/js-sdsl": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", @@ -5019,6 +5100,11 @@ "node": ">=10" } }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -5109,6 +5195,15 @@ "integrity": "sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A==", "peer": true }, + "node_modules/monaco-editor-textmate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/monaco-editor-textmate/-/monaco-editor-textmate-4.0.0.tgz", + "integrity": "sha512-Clwup5LJzVfwURQrS+odSEC5/hZBEG36pQnvBKt4OtBndF8r2xLeXUZcK/AqEBK2u0Npy7frFp9hG7m66Ol9hA==", + "peerDependencies": { + "monaco-editor": "0.x.x", + "monaco-textmate": "^3.0.0" + } + }, "node_modules/monaco-editor-webpack-plugin": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.0.1.tgz", @@ -5122,6 +5217,17 @@ "webpack": "^4.5.0 || 5.x" } }, + "node_modules/monaco-textmate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/monaco-textmate/-/monaco-textmate-3.0.1.tgz", + "integrity": "sha512-ZxxY3OsqUczYP1sGqo97tu+CJmMBwuSW+dL0WEBdDhOZ5G1zntw72hvBc68ZQAirosWvbDKgN1dL5k173QtFww==", + "dependencies": { + "fast-plist": "^0.1.2" + }, + "peerDependencies": { + "onigasm": "^2.0.0" + } + }, "node_modules/mongodb": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", @@ -5318,6 +5424,25 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/nano-css": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.3.5.tgz", + "integrity": "sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==", + "dependencies": { + "css-tree": "^1.1.2", + "csstype": "^3.0.6", + "fastest-stable-stringify": "^2.0.2", + "inline-style-prefixer": "^6.0.0", + "rtl-css-js": "^1.14.0", + "sourcemap-codec": "^1.4.8", + "stacktrace-js": "^2.0.2", + "stylis": "^4.0.6" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -5557,6 +5682,27 @@ "wrappy": "1" } }, + "node_modules/onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dependencies": { + "lru-cache": "^5.1.1" + } + }, + "node_modules/onigasm/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/onigasm/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -6533,6 +6679,40 @@ "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==" }, + "node_modules/react-universal-interface": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz", + "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==", + "peerDependencies": { + "react": "*", + "tslib": "*" + } + }, + "node_modules/react-use": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz", + "integrity": "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==", + "dependencies": { + "@types/js-cookie": "^2.2.6", + "@xobotyi/scrollbar-width": "^1.9.5", + "copy-to-clipboard": "^3.3.1", + "fast-deep-equal": "^3.1.3", + "fast-shallow-equal": "^1.0.0", + "js-cookie": "^2.2.1", + "nano-css": "^5.3.1", + "react-universal-interface": "^0.6.2", + "resize-observer-polyfill": "^1.5.1", + "screenfull": "^5.1.0", + "set-harmonic-interval": "^1.0.1", + "throttle-debounce": "^3.0.1", + "ts-easing": "^0.2.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-use-measure": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz", @@ -6545,6 +6725,14 @@ "react-dom": ">=16.13" } }, + "node_modules/react-use/node_modules/throttle-debounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", + "engines": { + "node": ">=10" + } + }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -6712,6 +6900,14 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rtl-css-js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", + "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6821,6 +7017,17 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/screenfull": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/scroll": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scroll/-/scroll-3.0.1.tgz", @@ -6863,6 +7070,14 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-harmonic-interval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz", + "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==", + "engines": { + "node": ">=6.9" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6939,8 +7154,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -6964,6 +7177,12 @@ "source-map": "^0.6.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -6973,6 +7192,46 @@ "memory-pager": "^1.0.2" } }, + "node_modules/stack-generator": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", + "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/stacktrace-gps": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", + "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", + "dependencies": { + "source-map": "0.5.6", + "stackframe": "^1.3.4" + } + }, + "node_modules/stacktrace-gps/node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stacktrace-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", + "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "dependencies": { + "error-stack-parser": "^2.0.6", + "stack-generator": "^2.0.5", + "stacktrace-gps": "^3.0.4" + } + }, "node_modules/state-local": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", @@ -7354,6 +7613,11 @@ "node": ">=10.0.0" } }, + "node_modules/ts-easing": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", + "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -9263,6 +9527,11 @@ "dev": true, "peer": true }, + "@types/js-cookie": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", + "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" + }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -9581,6 +9850,11 @@ "resolved": "https://registry.npmjs.org/@webcontainer/api/-/api-1.1.5.tgz", "integrity": "sha512-qMJyqO+A8+B8JKW/IW9KVQblAiEQwesq7ka6w8pgm6DXKWCQaPVOco4Zo7FxZ09OmBIX+lnXyfKbQzXiORLGJg==" }, + "@xobotyi/scrollbar-width": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", + "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -10072,6 +10346,23 @@ "which": "^2.0.1" } }, + "css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "requires": { + "hyphenate-style-name": "^1.0.3" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, "csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", @@ -10245,6 +10536,14 @@ "tapable": "^2.2.0" } }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "requires": { + "stackframe": "^1.3.4" + } + }, "es-abstract": { "version": "1.21.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", @@ -10733,6 +11032,21 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, + "fast-loops": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", + "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" + }, + "fast-plist": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.3.tgz", + "integrity": "sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==" + }, + "fast-shallow-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", + "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" + }, "fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -10742,6 +11056,11 @@ "strnum": "^1.0.5" } }, + "fastest-stable-stringify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", + "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==" + }, "fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -11042,6 +11361,11 @@ "react-is": "^16.7.0" } }, + "hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -11085,6 +11409,15 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "inline-style-prefixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", + "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==", + "requires": { + "css-in-js-utils": "^3.1.0", + "fast-loops": "^1.1.3" + } + }, "internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -11353,6 +11686,11 @@ } } }, + "js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + }, "js-sdsl": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", @@ -11541,6 +11879,11 @@ "yallist": "^4.0.0" } }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, "memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -11610,6 +11953,12 @@ "integrity": "sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A==", "peer": true }, + "monaco-editor-textmate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/monaco-editor-textmate/-/monaco-editor-textmate-4.0.0.tgz", + "integrity": "sha512-Clwup5LJzVfwURQrS+odSEC5/hZBEG36pQnvBKt4OtBndF8r2xLeXUZcK/AqEBK2u0Npy7frFp9hG7m66Ol9hA==", + "requires": {} + }, "monaco-editor-webpack-plugin": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.0.1.tgz", @@ -11619,6 +11968,14 @@ "loader-utils": "^2.0.2" } }, + "monaco-textmate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/monaco-textmate/-/monaco-textmate-3.0.1.tgz", + "integrity": "sha512-ZxxY3OsqUczYP1sGqo97tu+CJmMBwuSW+dL0WEBdDhOZ5G1zntw72hvBc68ZQAirosWvbDKgN1dL5k173QtFww==", + "requires": { + "fast-plist": "^0.1.2" + } + }, "mongodb": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", @@ -11763,6 +12120,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "nano-css": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.3.5.tgz", + "integrity": "sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==", + "requires": { + "css-tree": "^1.1.2", + "csstype": "^3.0.6", + "fastest-stable-stringify": "^2.0.2", + "inline-style-prefixer": "^6.0.0", + "rtl-css-js": "^1.14.0", + "sourcemap-codec": "^1.4.8", + "stacktrace-js": "^2.0.2", + "stylis": "^4.0.6" + } + }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -11916,6 +12288,29 @@ "wrappy": "1" } }, + "onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "requires": { + "lru-cache": "^5.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, "open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -12582,6 +12977,40 @@ "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==" }, + "react-universal-interface": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz", + "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==", + "requires": {} + }, + "react-use": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz", + "integrity": "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==", + "requires": { + "@types/js-cookie": "^2.2.6", + "@xobotyi/scrollbar-width": "^1.9.5", + "copy-to-clipboard": "^3.3.1", + "fast-deep-equal": "^3.1.3", + "fast-shallow-equal": "^1.0.0", + "js-cookie": "^2.2.1", + "nano-css": "^5.3.1", + "react-universal-interface": "^0.6.2", + "resize-observer-polyfill": "^1.5.1", + "screenfull": "^5.1.0", + "set-harmonic-interval": "^1.0.1", + "throttle-debounce": "^3.0.1", + "ts-easing": "^0.2.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "throttle-debounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==" + } + } + }, "react-use-measure": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz", @@ -12709,6 +13138,14 @@ "glob": "^7.1.3" } }, + "rtl-css-js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", + "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -12771,6 +13208,11 @@ "ajv-keywords": "^3.5.2" } }, + "screenfull": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==" + }, "scroll": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scroll/-/scroll-3.0.1.tgz", @@ -12807,6 +13249,11 @@ "randombytes": "^2.1.0" } }, + "set-harmonic-interval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz", + "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -12862,9 +13309,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { "version": "1.0.2", @@ -12882,6 +13327,11 @@ "source-map": "^0.6.0" } }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -12891,6 +13341,45 @@ "memory-pager": "^1.0.2" } }, + "stack-generator": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", + "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "requires": { + "stackframe": "^1.3.4" + } + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "stacktrace-gps": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", + "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", + "requires": { + "source-map": "0.5.6", + "stackframe": "^1.3.4" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==" + } + } + }, + "stacktrace-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", + "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "requires": { + "error-stack-parser": "^2.0.6", + "stack-generator": "^2.0.5", + "stacktrace-gps": "^3.0.4" + } + }, "state-local": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", @@ -13179,6 +13668,11 @@ "resolved": "https://registry.npmjs.org/ts-browser-eval/-/ts-browser-eval-0.0.1.tgz", "integrity": "sha512-XZAKp1LHnHX6lcVWWNbf88niTB1HQFoXFoD/cb5dHdExkxtWloEGovl2YFEU3t8rXJKbWCSwxGO4xvQd9hj+hw==" }, + "ts-easing": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", + "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", diff --git a/package.json b/package.json index f68497d..5b269dd 100644 --- a/package.json +++ b/package.json @@ -33,14 +33,18 @@ "lodash.clonedeep": "^4.5.0", "mixpanel-browser": "^2.47.0", "moment": "^2.29.4", + "monaco-editor-textmate": "^4.0.0", + "monaco-textmate": "^3.0.1", "mongodb": "^4.14.0", "mongoose": "^5.10.1", "next": "13.0.7", + "onigasm": "^2.2.5", "react": "18.2.0", "react-dnd": "^16.0.1", "react-dom": "18.2.0", "react-icons": "^4.8.0", "react-joyride": "^2.5.4", + "react-use": "^17.4.0", "recoil": "^0.7.7", "recoil-persist": "^4.2.0", "sass": "^1.58.3", diff --git a/src/assets/ton/func/ftmLanguage.json b/src/assets/ton/func/ftmLanguage.json new file mode 100644 index 0000000..fbe789e --- /dev/null +++ b/src/assets/ton/func/ftmLanguage.json @@ -0,0 +1,117 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "FunC", + "foldingStartMarker": "\\{\\s*$", + "foldingStopMarker": "^\\s*\\}", + "patterns": [ + { + "include": "#keywords" + }, + { + "include": "#strings" + }, + { + "include": "#directives" + }, + { + "include": "#numeric" + }, + { + "include": "#comments" + }, + { + "include": "#storage" + }, + { + "include": "#functions" + }, + { + "include": "#variables" + } + ], + "repository": { + "keywords": { + "patterns": [ + { + "name": "keyword.control.", + "match": "\\b(if|ifnot|else|elseif|elseifnot|while|do|until|repeat|return|impure|method_id|forall|asm|inline|inline_ref)\\b" + }, + { + "name": "keyword.operator", + "match": "(?<=\\s)(<=>|>=|<=|!=|==|\\^>>|\\~>>|>>|<<|\\/%|\\^%|\\~%|\\^\\/|\\~\\/|\\+=|-=|\\*=|\\/=|~\\/=|\\^\\/=|%=|\\^%=|<<=|>>=|~>>=|\\^>>=|&=|\\|=|\\^=|\\^|=|~|\\/|%|-|\\*|\\+|>|<|&|\\||:|\\?)(?=\\s)" + }, + { + "name": "keyword.other", + "match": "\\b(false|true)\\b" + } + ] + }, + "directives": { + "name": "storage.modifier.import", + "begin": "#include|#pragma", + "end": ";", + "patterns": [ + { + "begin": "\"", + "end": "\"", + "name": "string.quoted.double" + }, + { + "match": "(>=|<=|=|>|<|\\^)?([0-9]+)(.[0-9]+)?(.[0-9]+)?", + "name": "constant.numeric" + } + ] + }, + "strings": { + "name": "string.quoted.double.", + "begin": "\"", + "end": "\"(H|h|c|u|s|a)?" + }, + "numeric": { + "name": "constant.numeric", + "match": "(-?([\\d]+|0x[\\da-fA-F]+))\\b" + }, + "comments": { + "patterns": [ + { + "name": "comment.line", + "match": ";;(.*)" + }, + { + "name": "comment.block", + "begin": "{-", + "end": "-}" + } + ] + }, + "storage": { + "patterns": [ + { + "name": "storage.type", + "match": "\\b(var|int|slice|tuple|cell|builder|cont|_)(?=[\\s\\),\\[\\]])" + }, + { + "name": "storage.modifier", + "match": "\\b(global|const)\\s" + } + ] + }, + "variables": { + "patterns": [ + { + "match": "(?!\")(`([^`]+)`|((?=_)_|(?={){|(?=})}|(?![_`{}]))([^;,\\[\\]\\(\\)\\s~.]+))", + "name": "variable.name" + } + ] + }, + "functions": { + "patterns": [ + { + "match": "(?!\")(`([^`]+)`|(\\.|~)?((?=_)_|(?={){|(?=})}|(?![_`{}]))([^;,\\[\\]\\(\\)\\s~.]+))(?=[\\(])", + "name": "entity.name.function" + } + ] + } + }, + "scopeName": "source.func" +} \ No newline at end of file diff --git a/src/assets/vscode-one-dark.ts b/src/assets/vscode-one-dark.ts new file mode 100644 index 0000000..c9b843c --- /dev/null +++ b/src/assets/vscode-one-dark.ts @@ -0,0 +1,1985 @@ +export const vscodeOneDark = { + inherit: false, + base: 'vs-dark' as const, + + colors: { + 'editor.background': '#000000', + 'activityBar.background': '#282c34', + 'activityBar.foreground': '#d7dae0', + 'activityBarBadge.background': '#4d78cc', + 'activityBarBadge.foreground': '#f8fafd', + 'badge.background': '#282c34', + 'button.background': '#404754', + 'button.secondaryBackground': '#30333d', + 'button.secondaryForeground': '#c0bdbd', + 'checkbox.border': '#404754', + 'debugToolBar.background': '#21252b', + descriptionForeground: '#abb2bf', + 'diffEditor.insertedTextBackground': '#00809b33', + 'dropdown.background': '#21252b', + 'dropdown.border': '#21252b', + 'editor.findMatchBackground': '#42557b', + 'editor.findMatchBorder': '#457dff', + 'editor.findMatchHighlightBackground': '#6199ff2f', + 'editor.foreground': '#abb2bf', + 'editorBracketHighlight.foreground1': '#d19a66', + 'editorBracketHighlight.foreground2': '#c678dd', + 'editorBracketHighlight.foreground3': '#56b6c2', + 'editorHoverWidget.highlightForeground': '#61afef', + 'editorInlayHint.foreground': '#abb2bf', + 'editorInlayHint.background': '#2c313c', + 'editor.lineHighlightBackground': '#2c313c', + 'editorLineNumber.activeForeground': '#abb2bf', + 'editorGutter.addedBackground': '#109868', + 'editorGutter.deletedBackground': '#9A353D', + 'editorGutter.modifiedBackground': '#948B60', + 'editorOverviewRuler.addedBackground': '#109868', + 'editorOverviewRuler.deletedBackground': '#9A353D', + 'editorOverviewRuler.modifiedBackground': '#948B60', + 'editor.selectionBackground': '#67769660', + 'editor.selectionHighlightBackground': '#ffffff10', + 'editor.selectionHighlightBorder': '#dddddd', + 'editor.wordHighlightBackground': '#d2e0ff2f', + 'editor.wordHighlightBorder': '#7f848e', + 'editor.wordHighlightStrongBackground': '#abb2bf26', + 'editor.wordHighlightStrongBorder': '#7f848e', + 'editorBracketMatch.background': '#515a6b', + 'editorBracketMatch.border': '#515a6b', + 'editorCursor.background': '#ffffffc9', + 'editorCursor.foreground': '#528bff', + 'editorError.foreground': '#c24038', + 'editorGroup.background': '#181a1f', + 'editorGroup.border': '#181a1f', + 'editorGroupHeader.tabsBackground': '#21252b', + 'editorHoverWidget.background': '#21252b', + 'editorHoverWidget.border': '#181a1f', + 'editorIndentGuide.activeBackground': '#c8c8c859', + 'editorIndentGuide.background': '#3b4048', + 'editorLineNumber.foreground': '#495162', + 'editorMarkerNavigation.background': '#21252b', + 'editorRuler.foreground': '#abb2bf26', + 'editorSuggestWidget.background': '#21252b', + 'editorSuggestWidget.border': '#181a1f', + 'editorSuggestWidget.selectedBackground': '#2c313a', + 'editorWarning.foreground': '#d19a66', + 'editorWhitespace.foreground': '#ffffff1d', + 'editorWidget.background': '#21252b', + focusBorder: '#3e4452', + 'gitDecoration.ignoredResourceForeground': '#636b78', + 'input.background': '#1d1f23', + 'input.foreground': '#abb2bf', + 'list.activeSelectionBackground': '#2c313a', + 'list.activeSelectionForeground': '#d7dae0', + 'list.focusBackground': '#323842', + 'list.focusForeground': '#f0f0f0', + 'list.highlightForeground': '#ecebeb', + 'list.hoverBackground': '#2c313a', + 'list.hoverForeground': '#abb2bf', + 'list.inactiveSelectionBackground': '#323842', + 'list.inactiveSelectionForeground': '#d7dae0', + 'list.warningForeground': '#d19a66', + 'menu.foreground': '#abb2bf', + 'menu.separatorBackground': '#343a45', + 'minimapGutter.addedBackground': '#109868', + 'minimapGutter.deletedBackground': '#9A353D', + 'minimapGutter.modifiedBackground': '#948B60', + 'panel.border': '#3e4452', + 'panelSectionHeader.background': '#21252b', + 'peekViewEditor.background': '#1b1d23', + 'peekViewEditor.matchHighlightBackground': '#29244b', + 'peekViewResult.background': '#22262b', + 'scrollbar.shadow': '#23252c', + 'scrollbarSlider.activeBackground': '#747d9180', + 'scrollbarSlider.background': '#4e566660', + 'scrollbarSlider.hoverBackground': '#5a637580', + 'settings.focusedRowBackground': '#282c34', + 'settings.headerForeground': '#ffffff', + 'sideBar.background': '#21252b', + 'sideBar.foreground': '#abb2bf', + 'sideBarSectionHeader.background': '#282c34', + 'sideBarSectionHeader.foreground': '#abb2bf', + 'statusBar.background': '#21252b', + 'statusBar.debuggingBackground': '#cc6633', + 'statusBar.debuggingBorder': '#ff000000', + 'statusBar.debuggingForeground': '#ffffff', + 'statusBar.foreground': '#9da5b4', + 'statusBar.noFolderBackground': '#21252b', + 'statusBarItem.remoteBackground': '#4d78cc', + 'statusBarItem.remoteForeground': '#f8fafd', + 'tab.activeBackground': '#282c34', + 'tab.activeBorder': '#b4b4b4', + 'tab.activeForeground': '#dcdcdc', + 'tab.border': '#181a1f', + 'tab.hoverBackground': '#323842', + 'tab.inactiveBackground': '#21252b', + 'tab.unfocusedHoverBackground': '#323842', + 'terminal.ansiBlack': '#3f4451', + 'terminal.ansiBlue': '#4aa5f0', + 'terminal.ansiBrightBlack': '#4f5666', + 'terminal.ansiBrightBlue': '#4dc4ff', + 'terminal.ansiBrightCyan': '#4cd1e0', + 'terminal.ansiBrightGreen': '#a5e075', + 'terminal.ansiBrightMagenta': '#de73ff', + 'terminal.ansiBrightRed': '#ff616e', + 'terminal.ansiBrightWhite': '#e6e6e6', + 'terminal.ansiBrightYellow': '#f0a45d', + 'terminal.ansiCyan': '#42b3c2', + 'terminal.ansiGreen': '#8cc265', + 'terminal.ansiMagenta': '#c162de', + 'terminal.ansiRed': '#e05561', + 'terminal.ansiWhite': '#d7dae0', + 'terminal.ansiYellow': '#d18f52', + 'terminal.background': '#282c34', + 'terminal.border': '#3e4452', + 'terminal.foreground': '#abb2bf', + 'terminal.selectionBackground': '#abb2bf30', + 'textBlockQuote.background': '#2e3440', + 'textBlockQuote.border': '#4b5362', + 'textLink.foreground': '#61afef', + 'textPreformat.foreground': '#d19a66', + 'titleBar.activeBackground': '#282c34', + 'titleBar.activeForeground': '#9da5b4', + 'titleBar.inactiveBackground': '#282c34', + 'titleBar.inactiveForeground': '#6b717d', + 'tree.indentGuidesStroke': '#ffffff1d', + 'walkThrough.embeddedEditorBackground': '#2e3440', + 'welcomePage.buttonHoverBackground': '#404754', + }, + rules: [ + { + foreground: '#abb2bf', + token: 'meta.embedded', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.delayed.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.list.begin.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.list.end.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.ability.begin.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.ability.end.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.operator.assignment.as.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.separator.pipe.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.separator.delimiter.unison', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.hash.unison', + }, + { + foreground: '#c678dd', + token: 'variable.other.generic-type.haskell', + }, + { + foreground: '#d19a66', + token: 'storage.type.haskell', + }, + { + foreground: '#e06c75', + token: 'support.variable.magic.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.period.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.element.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.parenthesis.begin.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.parenthesis.end.python', + }, + { + foreground: '#e5c07b', + token: 'variable.parameter.function.language.special.self.python', + }, + { + foreground: '#e5c07b', + token: 'variable.parameter.function.language.special.cls.python', + }, + { + foreground: '#abb2bf', + token: 'storage.modifier.lifetime.rust', + }, + { + foreground: '#61afef', + token: 'support.function.std.rust', + }, + { + foreground: '#e5c07b', + token: 'entity.name.lifetime.rust', + }, + { + foreground: '#e06c75', + token: 'variable.language.rust', + }, + { + foreground: '#c678dd', + token: 'support.constant.edge', + }, + { + foreground: '#e06c75', + token: 'constant.other.character-class.regexp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.word', + }, + { + foreground: '#d19a66', + token: 'keyword.operator.quantifier.regexp', + }, + { + foreground: '#abb2bf', + token: 'variable.parameter.function', + }, + { + foreground: '#5c6370', + token: 'comment markup.link', + }, + { + foreground: '#e5c07b', + token: 'markup.changed.diff', + }, + { + foreground: '#61afef', + token: 'meta.diff.header.from-file', + }, + { + foreground: '#61afef', + token: 'meta.diff.header.to-file', + }, + { + foreground: '#61afef', + token: 'punctuation.definition.from-file.diff', + }, + { + foreground: '#61afef', + token: 'punctuation.definition.to-file.diff', + }, + { + foreground: '#98c379', + token: 'markup.inserted.diff', + }, + { + foreground: '#e06c75', + token: 'markup.deleted.diff', + }, + { + foreground: '#e06c75', + token: 'meta.function.c', + }, + { + foreground: '#e06c75', + token: 'meta.function.cpp', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.block.begin.bracket.curly.cpp', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.block.end.bracket.curly.cpp', + }, + { + foreground: '#abb2bf', + token: 'punctuation.terminator.statement.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.block.begin.bracket.curly.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.block.end.bracket.curly.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.parens.begin.bracket.round.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.parens.end.bracket.round.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.parameters.begin.bracket.round.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.parameters.end.bracket.round.c', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.key-value', + }, + { + foreground: '#61afef', + token: 'keyword.operator.expression.import', + }, + { + foreground: '#e5c07b', + token: 'support.constant.math', + }, + { + foreground: '#d19a66', + token: 'support.constant.property.math', + }, + { + foreground: '#e5c07b', + token: 'variable.other.constant', + }, + { + foreground: '#e5c07b', + token: 'storage.type.annotation.java', + }, + { + foreground: '#e5c07b', + token: 'storage.type.object.array.java', + }, + { + foreground: '#e06c75', + token: 'source.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.block.begin.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.block.end.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.method-parameters.begin.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.method-parameters.end.java', + }, + { + foreground: '#abb2bf', + token: 'meta.method.identifier.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.method.begin.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.method.end.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.terminator.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.class.begin.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.class.end.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.inner-class.begin.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.inner-class.end.java', + }, + { + foreground: '#abb2bf', + token: 'meta.method-call.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.class.begin.bracket.curly.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.class.end.bracket.curly.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.method.begin.bracket.curly.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.method.end.bracket.curly.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.period.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.bracket.angle.java', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.annotation.java', + }, + { + foreground: '#abb2bf', + token: 'meta.method.body.java', + }, + { + foreground: '#61afef', + token: 'meta.method.java', + }, + { + foreground: '#e5c07b', + token: 'storage.modifier.import.java', + }, + { + foreground: '#e5c07b', + token: 'storage.type.java', + }, + { + foreground: '#e5c07b', + token: 'storage.type.generic.java', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.instanceof.java', + }, + { + foreground: '#e06c75', + token: 'meta.definition.variable.name.java', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.logical', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.bitwise', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.channel', + }, + { + foreground: '#d19a66', + token: 'support.constant.property-value.scss', + }, + { + foreground: '#d19a66', + token: 'support.constant.property-value.css', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.css', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.scss', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.less', + }, + { + foreground: '#d19a66', + token: 'support.constant.color.w3c-standard-color-name.css', + }, + { + foreground: '#d19a66', + token: 'support.constant.color.w3c-standard-color-name.scss', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.list.comma.css', + }, + { + foreground: '#d19a66', + token: 'support.constant.color.w3c-standard-color-name.css', + }, + { + foreground: '#56b6c2', + token: 'support.type.vendored.property-name.css', + }, + { + foreground: '#e5c07b', + token: 'support.module.node', + }, + { + foreground: '#e5c07b', + token: 'support.type.object.module', + }, + { + foreground: '#e5c07b', + token: 'support.module.node', + }, + { + foreground: '#e5c07b', + token: 'entity.name.type.module', + }, + { + foreground: '#e06c75', + token: 'variable.other.readwrite', + }, + { + foreground: '#e06c75', + token: 'meta.object-literal.key', + }, + { + foreground: '#e06c75', + token: 'support.variable.property', + }, + { + foreground: '#e06c75', + token: 'support.variable.object.process', + }, + { + foreground: '#e06c75', + token: 'support.variable.object.node', + }, + { + foreground: '#d19a66', + token: 'support.constant.json', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.instanceof', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.new', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.ternary', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.optional', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.keyof', + }, + { + foreground: '#e06c75', + token: 'support.type.object.console', + }, + { + foreground: '#d19a66', + token: 'support.variable.property.process', + }, + { + foreground: '#61afef', + token: 'entity.name.function', + }, + { + foreground: '#61afef', + token: 'support.function.console', + }, + { + foreground: '#abb2bf', + token: 'keyword.operator.misc.rust', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.sigil.rust', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.delete', + }, + { + foreground: '#56b6c2', + token: 'support.type.object.dom', + }, + { + foreground: '#e06c75', + token: 'support.variable.dom', + }, + { + foreground: '#e06c75', + token: 'support.variable.property.dom', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.arithmetic', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.comparison', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.decrement', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.increment', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.relational', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.assignment.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.comparison.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.increment.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.decrement.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.bitwise.shift.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.assignment.cpp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.comparison.cpp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.cpp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.increment.cpp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.decrement.cpp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.bitwise.shift.cpp', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.delimiter', + }, + { + foreground: '#c678dd', + token: 'punctuation.separator.c', + }, + { + foreground: '#c678dd', + token: 'punctuation.separator.cpp', + }, + { + foreground: '#56b6c2', + token: 'support.type.posix-reserved.c', + }, + { + foreground: '#56b6c2', + token: 'support.type.posix-reserved.cpp', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.sizeof.c', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.sizeof.cpp', + }, + { + foreground: '#d19a66', + token: 'variable.parameter.function.language.python', + }, + { + foreground: '#56b6c2', + token: 'support.type.python', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.logical.python', + }, + { + foreground: '#d19a66', + token: 'variable.parameter.function.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.arguments.begin.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.arguments.end.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.arguments.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.list.begin.python', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.list.end.python', + }, + { + foreground: '#61afef', + token: 'meta.function-call.generic.python', + }, + { + foreground: '#d19a66', + token: 'constant.character.format.placeholder.other.python', + }, + { + foreground: '#abb2bf', + token: 'keyword.operator', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.assignment.compound', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.assignment.compound.js', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.assignment.compound.ts', + }, + { + foreground: '#c678dd', + token: 'keyword', + }, + { + foreground: '#e5c07b', + token: 'entity.name.namespace', + }, + { + foreground: '#e06c75', + token: 'variable', + }, + { + foreground: '#abb2bf', + token: 'variable.c', + }, + { + foreground: '#e5c07b', + token: 'variable.language', + }, + { + foreground: '#abb2bf', + token: 'token.variable.parameter.java', + }, + { + foreground: '#e5c07b', + token: 'import.storage.java', + }, + { + foreground: '#c678dd', + token: 'token.package.keyword', + }, + { + foreground: '#abb2bf', + token: 'token.package', + }, + { + foreground: '#61afef', + token: 'entity.name.function', + }, + { + foreground: '#61afef', + token: 'meta.require', + }, + { + foreground: '#61afef', + token: 'support.function.any-method', + }, + { + foreground: '#61afef', + token: 'variable.function', + }, + { + foreground: '#e5c07b', + token: 'entity.name.type.namespace', + }, + { + foreground: '#e5c07b', + token: 'support.class', + }, + { + foreground: '#e5c07b', + token: 'entity.name.type.class', + }, + { + foreground: '#e5c07b', + token: 'entity.name.class.identifier.namespace.type', + }, + { + foreground: '#e5c07b', + token: 'entity.name.class', + }, + { + foreground: '#e5c07b', + token: 'variable.other.class.js', + }, + { + foreground: '#e5c07b', + token: 'variable.other.class.ts', + }, + { + foreground: '#e06c75', + token: 'variable.other.class.php', + }, + { + foreground: '#e5c07b', + token: 'entity.name.type', + }, + { + foreground: '#c678dd', + token: 'keyword.control', + }, + { + foreground: '#d19a66', + token: 'control.elements', + }, + { + foreground: '#d19a66', + token: 'keyword.operator.less', + }, + { + foreground: '#61afef', + token: 'keyword.other.special-method', + }, + { + foreground: '#c678dd', + token: 'storage', + }, + { + foreground: '#c678dd', + token: 'token.storage', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.delete', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.in', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.of', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.instanceof', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.new', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.typeof', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.void', + }, + { + foreground: '#e5c07b', + token: 'token.storage.type.java', + }, + { + foreground: '#56b6c2', + token: 'support.function', + }, + { + foreground: '#abb2bf', + token: 'support.type.property-name', + }, + { + foreground: '#e06c75', + token: 'support.type.property-name.toml', + }, + { + foreground: '#e06c75', + token: 'support.type.property-name.table.toml', + }, + { + foreground: '#e06c75', + token: 'support.type.property-name.array.toml', + }, + { + foreground: '#abb2bf', + token: 'support.constant.property-value', + }, + { + foreground: '#d19a66', + token: 'support.constant.font-name', + }, + { + foreground: '#abb2bf', + token: 'meta.tag', + }, + { + foreground: '#98c379', + token: 'string', + }, + { + foreground: '#56b6c2', + token: 'constant.other.symbol', + }, + { + foreground: '#d19a66', + token: 'constant.numeric', + }, + { + foreground: '#d19a66', + token: 'constant', + }, + { + foreground: '#d19a66', + token: 'punctuation.definition.constant', + }, + { + foreground: '#e06c75', + token: 'entity.name.tag', + }, + { + foreground: '#d19a66', + token: 'entity.other.attribute-name', + }, + { + foreground: '#61afef', + token: 'entity.other.attribute-name.id', + }, + { + foreground: '#d19a66', + token: 'entity.other.attribute-name.class.css', + }, + { + foreground: '#c678dd', + token: 'meta.selector', + }, + { + foreground: '#e06c75', + token: 'markup.heading', + }, + { + foreground: '#61afef', + token: 'markup.heading punctuation.definition.heading', + }, + { + foreground: '#61afef', + token: 'entity.name.section', + }, + { + foreground: '#e06c75', + token: 'keyword.other.unit', + }, + { + foreground: '#d19a66', + token: 'markup.bold', + }, + { + foreground: '#d19a66', + token: 'todo.bold', + }, + { + foreground: '#e5c07b', + token: 'punctuation.definition.bold', + }, + { + foreground: '#c678dd', + token: 'markup.italic', + }, + { + foreground: '#c678dd', + token: 'punctuation.definition.italic', + }, + { + foreground: '#c678dd', + token: 'todo.emphasis', + }, + { + foreground: '#c678dd', + token: 'emphasis md', + }, + { + foreground: '#e06c75', + token: 'entity.name.section.markdown', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.heading.markdown', + }, + { + foreground: '#e5c07b', + token: 'punctuation.definition.list.begin.markdown', + }, + { + foreground: '#abb2bf', + token: 'markup.heading.setext', + }, + { + foreground: '#d19a66', + token: 'punctuation.definition.bold.markdown', + }, + { + foreground: '#98c379', + token: 'markup.inline.raw.markdown', + }, + { + foreground: '#98c379', + token: 'markup.inline.raw.string.markdown', + }, + { + foreground: '#e5c07b', + token: 'punctuation.definition.raw.markdown', + }, + { + foreground: '#e5c07b', + token: 'punctuation.definition.list.markdown', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.string.begin.markdown', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.string.end.markdown', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.metadata.markdown', + }, + { + foreground: '#e06c75', + token: 'beginning.punctuation.definition.list.markdown', + }, + { + foreground: '#e06c75', + token: 'punctuation.definition.metadata.markdown', + }, + { + foreground: '#c678dd', + token: 'markup.underline.link.markdown', + }, + { + foreground: '#c678dd', + token: 'markup.underline.link.image.markdown', + }, + { + foreground: '#61afef', + token: 'string.other.link.title.markdown', + }, + { + foreground: '#61afef', + token: 'string.other.link.description.markdown', + }, + { + foreground: '#98c379', + token: 'markup.raw.monospace.asciidoc', + }, + { + foreground: '#e5c07b', + token: 'punctuation.definition.asciidoc', + }, + { + foreground: '#e5c07b', + token: 'markup.list.asciidoc', + }, + { + foreground: '#c678dd', + token: 'markup.link.asciidoc', + }, + { + foreground: '#c678dd', + token: 'markup.other.url.asciidoc', + }, + { + foreground: '#61afef', + token: 'string.unquoted.asciidoc', + }, + { + foreground: '#61afef', + token: 'markup.other.url.asciidoc', + }, + { + foreground: '#56b6c2', + token: 'string.regexp', + }, + { + foreground: '#e06c75', + token: 'punctuation.section.embedded', + }, + { + foreground: '#e06c75', + token: 'variable.interpolation', + }, + { + foreground: '#c678dd', + token: 'punctuation.section.embedded.begin', + }, + { + foreground: '#c678dd', + token: 'punctuation.section.embedded.end', + }, + { + foreground: '#ffffff', + token: 'invalid.illegal', + }, + { + foreground: '#abb2bf', + token: 'invalid.illegal.bad-ampersand.html', + }, + { + foreground: '#e06c75', + token: 'invalid.illegal.unrecognized-tag.html', + }, + { + foreground: '#ffffff', + token: 'invalid.broken', + }, + { + foreground: '#ffffff', + token: 'invalid.deprecated', + }, + { + foreground: '#d19a66', + token: 'invalid.deprecated.entity.other.attribute-name.html', + }, + { + foreground: '#ffffff', + token: 'invalid.unimplemented', + }, + { + foreground: '#e06c75', + token: 'source.json meta.structure.dictionary.json > string.quoted.json', + }, + { + foreground: '#e06c75', + token: + 'source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string', + }, + { + foreground: '#98c379', + token: + 'source.json meta.structure.dictionary.json > value.json > string.quoted.json', + }, + { + foreground: '#98c379', + token: + 'source.json meta.structure.array.json > value.json > string.quoted.json', + }, + { + foreground: '#98c379', + token: + 'source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation', + }, + { + foreground: '#98c379', + token: + 'source.json meta.structure.array.json > value.json > string.quoted.json > punctuation', + }, + { + foreground: '#56b6c2', + token: + 'source.json meta.structure.dictionary.json > constant.language.json', + }, + { + foreground: '#56b6c2', + token: 'source.json meta.structure.array.json > constant.language.json', + }, + { + foreground: '#e06c75', + token: 'support.type.property-name.json', + }, + { + foreground: '#e06c75', + token: 'support.type.property-name.json punctuation', + }, + { + foreground: '#c678dd', + token: + 'text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade', + }, + { + foreground: '#c678dd', + token: + 'text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade', + }, + { + foreground: '#e5c07b', + token: 'support.other.namespace.use.php', + }, + { + foreground: '#e5c07b', + token: 'support.other.namespace.use-as.php', + }, + { + foreground: '#e5c07b', + token: 'entity.other.alias.php', + }, + { + foreground: '#e5c07b', + token: 'meta.interface.php', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.error-control.php', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.type.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.array.begin.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.array.end.php', + }, + { + foreground: '#f44747', + token: 'invalid.illegal.non-null-typehinted.php', + }, + { + foreground: '#e5c07b', + token: 'storage.type.php', + }, + { + foreground: '#e5c07b', + token: 'meta.other.type.phpdoc.php', + }, + { + foreground: '#e5c07b', + token: 'keyword.other.type.php', + }, + { + foreground: '#e5c07b', + token: 'keyword.other.array.phpdoc.php', + }, + { + foreground: '#61afef', + token: 'meta.function-call.php', + }, + { + foreground: '#61afef', + token: 'meta.function-call.object.php', + }, + { + foreground: '#61afef', + token: 'meta.function-call.static.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.parameters.begin.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.parameters.end.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.delimiter.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.scope.begin.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.section.scope.end.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.terminator.expression.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.arguments.begin.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.arguments.end.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.storage-type.begin.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.storage-type.end.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.array.begin.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.array.end.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.begin.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.end.bracket.round.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.begin.bracket.curly.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.end.bracket.curly.php', + }, + { + foreground: '#abb2bf', + token: + 'punctuation.definition.section.switch-block.end.bracket.curly.php', + }, + { + foreground: '#abb2bf', + token: + 'punctuation.definition.section.switch-block.start.bracket.curly.php', + }, + { + foreground: '#abb2bf', + token: + 'punctuation.definition.section.switch-block.begin.bracket.curly.php', + }, + { + foreground: '#abb2bf', + token: + 'punctuation.definition.section.switch-block.end.bracket.curly.php', + }, + { + foreground: '#d19a66', + token: 'support.constant.core.rust', + }, + { + foreground: '#d19a66', + token: 'support.constant.ext.php', + }, + { + foreground: '#d19a66', + token: 'support.constant.std.php', + }, + { + foreground: '#d19a66', + token: 'support.constant.core.php', + }, + { + foreground: '#d19a66', + token: 'support.constant.parser-token.php', + }, + { + foreground: '#61afef', + token: 'entity.name.goto-label.php', + }, + { + foreground: '#61afef', + token: 'support.other.php', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.logical.php', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.bitwise.php', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.arithmetic.php', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.regexp.php', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.comparison.php', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.heredoc.php', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.nowdoc.php', + }, + { + foreground: '#61afef', + token: 'meta.function.decorator.python', + }, + { + foreground: '#56b6c2', + token: 'support.token.decorator.python', + }, + { + foreground: '#56b6c2', + token: 'meta.function.decorator.identifier.python', + }, + { + foreground: '#abb2bf', + token: 'function.parameter', + }, + { + foreground: '#abb2bf', + token: 'function.brace', + }, + { + foreground: '#abb2bf', + token: 'function.parameter.ruby', + }, + { + foreground: '#abb2bf', + token: 'function.parameter.cs', + }, + { + foreground: '#56b6c2', + token: 'constant.language.symbol.ruby', + }, + { + foreground: '#56b6c2', + token: 'constant.language.symbol.hashkey.ruby', + }, + { + foreground: '#56b6c2', + token: 'rgb-value', + }, + { + foreground: '#d19a66', + token: 'inline-color-decoration rgb-value', + }, + { + foreground: '#d19a66', + token: 'less rgb-value', + }, + { + foreground: '#e06c75', + token: 'selector.sass', + }, + { + foreground: '#e5c07b', + token: 'support.type.primitive.ts', + }, + { + foreground: '#e5c07b', + token: 'support.type.builtin.ts', + }, + { + foreground: '#e5c07b', + token: 'support.type.primitive.tsx', + }, + { + foreground: '#e5c07b', + token: 'support.type.builtin.tsx', + }, + { + foreground: '#abb2bf', + token: 'block.scope.end', + }, + { + foreground: '#abb2bf', + token: 'block.scope.begin', + }, + { + foreground: '#e5c07b', + token: 'storage.type.cs', + }, + { + foreground: '#e06c75', + token: 'entity.name.variable.local.cs', + }, + { + foreground: '#61afef', + token: 'token.info-token', + }, + { + foreground: '#d19a66', + token: 'token.warn-token', + }, + { + foreground: '#f44747', + token: 'token.error-token', + }, + { + foreground: '#c678dd', + token: 'token.debug-token', + }, + { + foreground: '#c678dd', + token: 'punctuation.definition.template-expression.begin', + }, + { + foreground: '#c678dd', + token: 'punctuation.definition.template-expression.end', + }, + { + foreground: '#c678dd', + token: 'punctuation.section.embedded', + }, + { + foreground: '#abb2bf', + token: 'meta.template.expression', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.module', + }, + { + foreground: '#61afef', + token: 'support.type.type.flowtype', + }, + { + foreground: '#e5c07b', + token: 'support.type.primitive', + }, + { + foreground: '#e06c75', + token: 'meta.property.object', + }, + { + foreground: '#e06c75', + token: 'variable.parameter.function.js', + }, + { + foreground: '#98c379', + token: 'keyword.other.template.begin', + }, + { + foreground: '#98c379', + token: 'keyword.other.template.end', + }, + { + foreground: '#98c379', + token: 'keyword.other.substitution.begin', + }, + { + foreground: '#98c379', + token: 'keyword.other.substitution.end', + }, + { + foreground: '#56b6c2', + token: 'keyword.operator.assignment', + }, + { + foreground: '#e5c07b', + token: 'keyword.operator.assignment.go', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.arithmetic.go', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.address.go', + }, + { + foreground: '#e5c07b', + token: 'entity.name.package.go', + }, + { + foreground: '#56b6c2', + token: 'support.type.prelude.elm', + }, + { + foreground: '#d19a66', + token: 'support.constant.elm', + }, + { + foreground: '#c678dd', + token: 'punctuation.quasi.element', + }, + { + foreground: '#e06c75', + token: 'constant.character.entity', + }, + { + foreground: '#56b6c2', + token: 'entity.other.attribute-name.pseudo-element', + }, + { + foreground: '#56b6c2', + token: 'entity.other.attribute-name.pseudo-class', + }, + { + foreground: '#e5c07b', + token: 'entity.global.clojure', + }, + { + foreground: '#e06c75', + token: 'meta.symbol.clojure', + }, + { + foreground: '#56b6c2', + token: 'constant.keyword.clojure', + }, + { + foreground: '#e06c75', + token: 'meta.arguments.coffee', + }, + { + foreground: '#e06c75', + token: 'variable.parameter.function.coffee', + }, + { + foreground: '#98c379', + token: 'source.ini', + }, + { + foreground: '#e06c75', + token: 'meta.scope.prerequisites.makefile', + }, + { + foreground: '#e5c07b', + token: 'source.makefile', + }, + { + foreground: '#e5c07b', + token: 'storage.modifier.import.groovy', + }, + { + foreground: '#61afef', + token: 'meta.method.groovy', + }, + { + foreground: '#e06c75', + token: 'meta.definition.variable.name.groovy', + }, + { + foreground: '#98c379', + token: 'meta.definition.class.inherited.classes.groovy', + }, + { + foreground: '#e5c07b', + token: 'support.variable.semantic.hlsl', + }, + { + foreground: '#c678dd', + token: 'support.type.texture.hlsl', + }, + { + foreground: '#c678dd', + token: 'support.type.sampler.hlsl', + }, + { + foreground: '#c678dd', + token: 'support.type.object.hlsl', + }, + { + foreground: '#c678dd', + token: 'support.type.object.rw.hlsl', + }, + { + foreground: '#c678dd', + token: 'support.type.fx.hlsl', + }, + { + foreground: '#c678dd', + token: 'support.type.object.hlsl', + }, + { + foreground: '#e06c75', + token: 'text.variable', + }, + { + foreground: '#e06c75', + token: 'text.bracketed', + }, + { + foreground: '#e5c07b', + token: 'support.type.swift', + }, + { + foreground: '#e5c07b', + token: 'support.type.vb.asp', + }, + { + foreground: '#e5c07b', + token: 'entity.name.function.xi', + }, + { + foreground: '#56b6c2', + token: 'entity.name.class.xi', + }, + { + foreground: '#e06c75', + token: 'constant.character.character-class.regexp.xi', + }, + { + foreground: '#c678dd', + token: 'constant.regexp.xi', + }, + { + foreground: '#56b6c2', + token: 'keyword.control.xi', + }, + { + foreground: '#abb2bf', + token: 'invalid.xi', + }, + { + foreground: '#98c379', + token: 'beginning.punctuation.definition.quote.markdown.xi', + }, + { + foreground: '#7f848e', + token: 'beginning.punctuation.definition.list.markdown.xi', + }, + { + foreground: '#61afef', + token: 'constant.character.xi', + }, + { + foreground: '#61afef', + token: 'accent.xi', + }, + { + foreground: '#d19a66', + token: 'wikiword.xi', + }, + { + foreground: '#ffffff', + token: 'constant.other.color.rgb-value.xi', + }, + { + foreground: '#5c6370', + token: 'punctuation.definition.tag.xi', + }, + { + foreground: '#e5c07b', + token: 'entity.name.label.cs', + }, + { + foreground: '#e5c07b', + token: 'entity.name.scope-resolution.function.call', + }, + { + foreground: '#e5c07b', + token: 'entity.name.scope-resolution.function.definition', + }, + { + foreground: '#e06c75', + token: 'entity.name.label.cs', + }, + { + foreground: '#e06c75', + token: 'markup.heading.setext.1.markdown', + }, + { + foreground: '#e06c75', + token: 'markup.heading.setext.2.markdown', + }, + { + foreground: '#abb2bf', + token: 'meta.brace.square', + }, + { + foreground: '#7f848e', + fontStyle: 'italic', + token: 'comment', + }, + { + foreground: '#7f848e', + fontStyle: 'italic', + token: 'punctuation.definition.comment', + }, + { + foreground: '#5c6370', + token: 'markup.quote.markdown', + }, + { + foreground: '#abb2bf', + token: 'punctuation.definition.block.sequence.item.yaml', + }, + { + foreground: '#56b6c2', + token: 'constant.language.symbol.elixir', + }, + { + foreground: '#56b6c2', + token: 'constant.language.symbol.double-quoted.elixir', + }, + { + foreground: '#e5c07b', + token: 'entity.name.variable.parameter.cs', + }, + { + foreground: '#e06c75', + token: 'entity.name.variable.field.cs', + }, + { + foreground: '#e06c75', + token: 'markup.deleted', + }, + { + foreground: '#98c379', + token: 'markup.inserted', + }, + { + fontStyle: 'underline', + token: 'markup.underline', + }, + { + foreground: '#BE5046', + token: 'punctuation.section.embedded.begin.php', + }, + { + foreground: '#BE5046', + token: 'punctuation.section.embedded.end.php', + }, + { + foreground: '#abb2bf', + token: 'support.other.namespace.php', + }, + { + foreground: '#e06c75', + token: 'variable.parameter.function.latex', + }, + { + foreground: '#e5c07b', + token: 'variable.other.object', + }, + { + foreground: '#e06c75', + token: 'variable.other.constant.property', + }, + { + foreground: '#e5c07b', + token: 'entity.other.inherited-class', + }, + { + foreground: '#e06c75', + token: 'variable.other.readwrite.c', + }, + { + foreground: '#abb2bf', + token: 'entity.name.variable.parameter.php', + }, + { + foreground: '#abb2bf', + token: 'punctuation.separator.colon.php', + }, + { + foreground: '#abb2bf', + token: 'constant.other.php', + }, + { + foreground: '#c678dd', + token: 'constant.numeric.decimal.asm.x86_64', + }, + { + foreground: '#d19a66', + token: 'support.other.parenthesis.regexp', + }, + { + foreground: '#56b6c2', + token: 'constant.character.escape', + }, + { + foreground: '#e06c75', + token: 'string.regexp', + }, + { + foreground: '#98c379', + token: 'log.info', + }, + { + foreground: '#e5c07b', + token: 'log.warning', + }, + { + foreground: '#e06c75', + token: 'log.error', + }, + { + foreground: '#c678dd', + token: 'keyword.operator.expression.is', + }, + { + foreground: '#e06c75', + token: 'entity.name.label', + }, + { + fontStyle: 'italic', + token: 'entity.other.attribute-name.js', + }, + { + fontStyle: 'italic', + token: 'entity.other.attribute-name.ts', + }, + { + fontStyle: 'italic', + token: 'entity.other.attribute-name.jsx', + }, + { + fontStyle: 'italic', + token: 'entity.other.attribute-name.tsx', + }, + { + fontStyle: 'italic', + token: 'variable.parameter', + }, + { + fontStyle: 'italic', + token: 'variable.language.super', + }, + { + fontStyle: 'italic', + token: 'comment.line.double-slash', + }, + { + fontStyle: 'italic', + token: 'comment.block.documentation', + }, + { + fontStyle: 'italic', + token: 'markup.italic.markdown', + }, + ], + encodedTokensColors: [], +}; diff --git a/src/components/workspace/ABIUi/ABIUi.module.scss b/src/components/workspace/ABIUi/ABIUi.module.scss index 17ebed9..cd294e5 100644 --- a/src/components/workspace/ABIUi/ABIUi.module.scss +++ b/src/components/workspace/ABIUi/ABIUi.module.scss @@ -1,9 +1,17 @@ .root { - margin: 1rem 0; - border: 1px solid #555050; - border-radius: 5px; - background-color: #363535; - padding: 5px; + padding: 1rem 0px; + position: relative; + &:before { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + width: 5rem; + height: 1px; + margin: 0 auto; + background-color: #373636; + } .formItemABI { margin-bottom: 3px; } diff --git a/src/components/workspace/BottomPanel/BottomPanel.module.scss b/src/components/workspace/BottomPanel/BottomPanel.module.scss index 34a7323..9cb2bb4 100644 --- a/src/components/workspace/BottomPanel/BottomPanel.module.scss +++ b/src/components/workspace/BottomPanel/BottomPanel.module.scss @@ -1,5 +1,5 @@ .root { - background-color: #151515; + background-color: #181717; .tab { display: inline-flex; color: rgb(130, 129, 129); diff --git a/src/components/workspace/ContractInteraction/ContractInteraction.module.scss b/src/components/workspace/ContractInteraction/ContractInteraction.module.scss index 76a38ee..a566f93 100644 --- a/src/components/workspace/ContractInteraction/ContractInteraction.module.scss +++ b/src/components/workspace/ContractInteraction/ContractInteraction.module.scss @@ -1,7 +1,7 @@ .root { font-size: 0.8rem; // border-top: 1px solid #6a6a6a; - margin-top: 0rem; + margin-top: 1rem; .cellBuilderRef { visibility: hidden; width: 1px; diff --git a/src/components/workspace/Editor/Editor.tsx b/src/components/workspace/Editor/Editor.tsx index 1bb4937..2df2068 100644 --- a/src/components/workspace/Editor/Editor.tsx +++ b/src/components/workspace/Editor/Editor.tsx @@ -2,11 +2,14 @@ import { useAuthAction } from '@/hooks/auth.hooks'; import { useWorkspaceActions } from '@/hooks/workspace.hooks'; import { Tree } from '@/interfaces/workspace.interface'; import EventEmitter from '@/utility/eventEmitter'; +import { highlightCodeSnippets } from '@/utility/syntaxHighlighter'; import { fileTypeFromFileName } from '@/utility/utils'; import EditorDefault, { loader } from '@monaco-editor/react'; +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; import { FC, useEffect, useRef, useState } from 'react'; import s from './Editor.module.scss'; import { editorOnMount } from './EditorOnMount'; +type Monaco = typeof monaco; interface Props { file: Tree; @@ -36,12 +39,14 @@ const Editor: FC = ({ file, projectId, className = '' }) => { > | null>(null); const editorRef = useRef(null); - const monacoRef = useRef(null); + const monacoRef = useRef(null); const saveFile = () => { if (!file.id) return; + const fileContent = editorRef?.current?.getValue() || ''; + if (!fileContent) return; try { - updateFileContent(file.id, editorRef.current.getValue(), projectId); + updateFileContent(file.id, fileContent, projectId); } catch (error) {} }; @@ -60,9 +65,13 @@ const Editor: FC = ({ file, projectId, className = '' }) => { return '/_next/static/editor.worker.js'; }; loader.config({ monaco }); - await loader.init(); + // await loader.init(); + await highlightCodeSnippets(loader); } - loadMonacoEditor().then(() => setIsLoaded(true)); + + loadMonacoEditor().then(() => { + setIsLoaded(true); + }); }, []); useEffect(() => { @@ -96,13 +105,18 @@ const Editor: FC = ({ file, projectId, className = '' }) => { }; const markFileDirty = () => { + const fileContent = editorRef.current.getValue(); if ( file.id !== initialFile?.id || !initialFile?.content || - initialFile.content === editorRef.current.getValue() + initialFile.content === fileContent ) { return; } + if (!fileContent) { + return; + } + updateOpenFile(file.id, { isDirty: true }, projectId); }; @@ -111,11 +125,6 @@ const Editor: FC = ({ file, projectId, className = '' }) => { return; } fetchFileContent(); - // if (fileTypeFromFileName(file.name) === 'func') { - // monacoRef.current.setTheme('func-theme'); - // } else { - // monacoRef.current.setTheme('vs-dark'); - // } }, [file, isEditorInitialized]); useEffect(() => { @@ -123,17 +132,6 @@ const Editor: FC = ({ file, projectId, className = '' }) => { return; } - // Define and set custom theme - - // monacoRef.current.defineTheme('app-theme', { - // base: 'vs-dark', - // inherit: true, - // rules: [], - // colors: { - // 'editor.background': '#000000', - // }, - // }); - // monacoRef.current.setTheme('app-theme'); // eslint-disable-next-line react-hooks/exhaustive-deps }, [monacoRef.current]); @@ -146,7 +144,7 @@ const Editor: FC = ({ file, projectId, className = '' }) => { = ({ file, projectId, className = '' }) => { }} onMount={async (editor, monaco) => { editorRef.current = editor; - monacoRef.current = monaco.editor; + monacoRef.current = monaco; setIsEditorInitialized(true); editorOnMount(editor, monaco); diff --git a/src/components/workspace/Editor/EditorOnMount.ts b/src/components/workspace/Editor/EditorOnMount.ts index efdd9f6..e1b49e1 100644 --- a/src/components/workspace/Editor/EditorOnMount.ts +++ b/src/components/workspace/Editor/EditorOnMount.ts @@ -10,198 +10,11 @@ export const editorOnMount = ( monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ experimentalDecorators: false, }); + // Supress typescript import errors monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({ diagnosticCodesToIgnore: [2307], noSemanticValidation: true, - }); - - const keywords = [ - 'impure', - 'inline', - 'global', - 'return', - 'cell', - 'slice', - 'if', - 'while', - ]; - - let globalMethods = ['get_data', 'set_data', 'begin_cell']; - - const types = ['int', 'var']; - - const messageMethods = ['recv_internal', 'recv_external']; - - monaco.languages.register({ id: 'func' }); - monaco.languages.setMonarchTokensProvider('func', { - keywords: keywords, - globalMethods, - messageMethods, - types, - symbols: /[=>', - '<', - '!', - '~', - '?', - ':', - '==', - '<=', - '>=', - '!=', - '&&', - '||', - '++', - '--', - '+', - '-', - '*', - '/', - '&', - '|', - '^', - '%', - '<<', - '>>', - '>>>', - '+=', - '-=', - '*=', - '/=', - '&=', - '|=', - '^=', - '%=', - '<<=', - '>>=', - '>>>=', - ], - tokenizer: { - root: [ - // identifiers and keywords - [ - /[a-z_$][\w$]*/, - { - cases: { - '@globalMethods': 'string', - '@types': 'type.keyword', - '@messageMethods': 'annotation', - '@keywords': 'keyword', - '@default': 'identifier', - }, - }, - ], - [/[A-Z][\w\$]*/, 'type.identifier'], - - // whitespace - { include: '@whitespace' }, - - // delimiters and operators - [/[{}()\[\]]/, '@brackets'], - - [/[<>](?!@symbols)/, '@brackets'], - [/@symbols/, { cases: { '@operators': 'operator', '@default': '' } }], - - // numbers - [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'], - [/0[xX][0-9a-fA-F]+/, 'number.hex'], - [/\d+/, 'number'], - [/(;;.*\n)+/, 'comment'], - - // delimiter: after number because of .\d floats - [/[;,.]/, 'delimiter'], - [/(^#include.*\;)/, 'include'], - - // strings - // [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-teminated string - // [ - // /"/, - // { token: 'string.quote', bracket: '@open', next: '@string' }, - // ], - - // characters - // [/'[^\\']'/, 'string'], - // [/(')(@escapes)(')/, ['string', 'string.escape', 'string']], - // [/'/, 'string.invalid'], - ], - - string: [ - // [/[^\\"]+/, 'string'], - // [/@escapes/, 'string.escape'], - // [/\\./, 'string.escape.invalid'], - ], - - whitespace: [ - [/[ \t\r\n]+/, 'white'], - [/\;\;.*$/, 'comment'], - ], - }, - }); - - monaco.editor.defineTheme('func-theme', { - base: 'vs-dark', - inherit: true, - rules: [ - { - token: 'keyword', - foreground: '#f97583', - fontStyle: 'bold', - }, - { - token: '@brackets', - foreground: '#ff0000', - }, - { - token: 'string', - foreground: '#009966', - }, - { - token: 'variable', - foreground: '#006699', - }, - { - token: 'include', - foreground: '#3bd0e9', - }, - ], - colors: {}, - }); - - monaco.languages.registerCompletionItemProvider('func', { - provideCompletionItems: (model, position) => { - var word = model.getWordUntilPosition(position); - var range = { - startLineNumber: position.lineNumber, - endLineNumber: position.lineNumber, - startColumn: word.startColumn, - endColumn: word.endColumn, - }; - const suggestions = [ - ...keywords.map((k) => { - return { - label: k, - kind: monaco.languages.CompletionItemKind.Keyword, - insertText: k, - range, - }; - }), - ...globalMethods.map((k) => { - return { - label: k, - kind: monaco.languages.CompletionItemKind.Function, - insertText: k, - range, - }; - }), - ]; - - return { suggestions: suggestions }; - }, - // triggerCharacters: ['/'], + noSyntaxValidation: true, }); }; diff --git a/src/components/workspace/ExecuteFile/ExecuteFile.module.scss b/src/components/workspace/ExecuteFile/ExecuteFile.module.scss index 71012e4..4362d1f 100644 --- a/src/components/workspace/ExecuteFile/ExecuteFile.module.scss +++ b/src/components/workspace/ExecuteFile/ExecuteFile.module.scss @@ -1,5 +1,5 @@ .root { - border-bottom: 1px solid #6a6a6a; + // border-bottom: 1px solid #6a6a6a; padding-bottom: 0.6rem; .desc { font-size: 0.9rem; diff --git a/src/components/workspace/ExecuteFile/ExecuteFile.tsx b/src/components/workspace/ExecuteFile/ExecuteFile.tsx index 52b9d77..3c60571 100644 --- a/src/components/workspace/ExecuteFile/ExecuteFile.tsx +++ b/src/components/workspace/ExecuteFile/ExecuteFile.tsx @@ -2,6 +2,7 @@ import { useLogActivity } from '@/hooks/logActivity.hooks'; import { useProjectActions } from '@/hooks/project.hooks'; import { useWorkspaceActions } from '@/hooks/workspace.hooks'; import { Project, Tree } from '@/interfaces/workspace.interface'; +import { getFileExtension } from '@/utility/utils'; import { Button, Select, message } from 'antd'; import { FC, useEffect, useState } from 'react'; import s from './ExecuteFile.module.scss'; @@ -19,11 +20,6 @@ interface Props { allowedFile: string[]; } -const getFileExtension = (fileName: string) => { - if (!fileName) return; - return fileName.split('.').slice(1).join('.'); -}; - const ExecuteFile: FC = ({ // file, projectId, diff --git a/src/components/workspace/WorkSpace/WorkSpace.module.scss b/src/components/workspace/WorkSpace/WorkSpace.module.scss index aa6130e..f2d8c30 100644 --- a/src/components/workspace/WorkSpace/WorkSpace.module.scss +++ b/src/components/workspace/WorkSpace/WorkSpace.module.scss @@ -10,7 +10,7 @@ padding-top: 0.5rem; flex: 0 0 250px; width: 250px; - background-color: #393939; + background-color: #141414; overflow-x: hidden !important; overflow-y: auto !important; :global(.onboarding-active) & { diff --git a/src/components/workspace/WorkspaceSidebar/WorkspaceSidebar.module.scss b/src/components/workspace/WorkspaceSidebar/WorkspaceSidebar.module.scss index d9f1343..1bb88bf 100644 --- a/src/components/workspace/WorkspaceSidebar/WorkspaceSidebar.module.scss +++ b/src/components/workspace/WorkspaceSidebar/WorkspaceSidebar.module.scss @@ -1,5 +1,5 @@ .container { - background-color: var(--grey-500); + background-color: #222222; height: 100%; .action { font-size: 1.8rem; diff --git a/src/styles/global.scss b/src/styles/global.scss index 3be33a9..099f471 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -5,10 +5,10 @@ --text-color: #f7f7f7; --black-500: #171717; --grey: #4f4e4e; - --grey-500: #2f2f31; + --grey-500: #1a1a1a; --grey-900: #212121; --grey-1000: #131212; - --bg-color-dark: #1e1e1e; + --bg-color-dark: #000; --color-danger: #f50; --border-radius: 10px; } diff --git a/src/utility/getterParser.ts b/src/utility/getterParser.ts index bb3b300..a7813b4 100644 --- a/src/utility/getterParser.ts +++ b/src/utility/getterParser.ts @@ -14,11 +14,12 @@ export const initParser = async (treeSitterUri: string, langUri: string) => { }; await Parser.init(options); language = await Parser.Language.load(langUri); + return language; }; -export const createParser = () => { +export const createParser = (parserLanguage: Parser.Language | null = null) => { const parser = new Parser(); - parser.setLanguage(language); + parser.setLanguage(parserLanguage || language); parser.setTimeoutMicros(1000 * 1000); return parser; }; diff --git a/src/utility/syntaxHighlighter.ts b/src/utility/syntaxHighlighter.ts new file mode 100644 index 0000000..e5a2c8c --- /dev/null +++ b/src/utility/syntaxHighlighter.ts @@ -0,0 +1,49 @@ +import { vscodeOneDark } from '@/assets/vscode-one-dark'; +import { wireTmGrammars } from 'monaco-editor-textmate'; +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; +import { Registry } from 'monaco-textmate'; +import { loadWASM } from 'onigasm'; +import ftmLanguage from '../assets/ton/func/ftmLanguage.json'; + +let onigasmLoaded = false; + +export async function highlightCodeSnippets(loader: any): Promise { + if (!onigasmLoaded) { + try { + await loadWASM( + 'https://cdn.jsdelivr.net/npm/onigasm@2.2.5/lib/onigasm.wasm' + ); + onigasmLoaded = true; + } catch {} + } + + await (loader as any).init().then((monaco: any) => { + const registry = new Registry({ + getGrammarDefinition: async () => { + return { + format: 'json', + content: ftmLanguage, + }; + }, + }); + + const grammars = new Map(); + grammars.set('func', 'source.func'); + monaco.languages.register({ id: 'func' }); + monaco.editor.defineTheme('vs-theme-dark', vscodeOneDark); + monaco.editor.setTheme('vs-theme-dark'); + + const funcLanguageConfiguration: monaco.languages.LanguageConfiguration = { + comments: { + lineComment: ';;', + blockComment: ['{-', '-}'], + }, + }; + monaco.languages.setLanguageConfiguration( + 'func', + funcLanguageConfiguration + ); + + wireTmGrammars(monaco, registry, grammars); + }); +} diff --git a/src/utility/utils.ts b/src/utility/utils.ts index e0f3250..9832c32 100644 --- a/src/utility/utils.ts +++ b/src/utility/utils.ts @@ -125,3 +125,8 @@ export const getFileNameFromPath = (filePath: string): string => { return fileName; }; + +export const getFileExtension = (fileName: string) => { + if (!fileName) return; + return fileName.split('.').slice(1).join('.'); +};