From 85b6d52d6ea45100ff3b62842be504804e8753a6 Mon Sep 17 00:00:00 2001 From: Alex <49969959+alexzhang1030@users.noreply.github.com> Date: Wed, 20 Dec 2023 21:47:01 +0800 Subject: [PATCH] feat: command palette (#93) --- .gitignore | 3 + package.json | 9 +- packages/client/data/vue-apis.json | 1124 +++++++++++++++++ packages/client/src/App.vue | 1 + .../client/src/components/CommandPalette.vue | 161 +++ .../client/src/composables/state-commands.ts | 87 ++ packages/client/src/composables/state-tab.ts | 10 +- packages/client/src/pages/overview.vue | 22 + packages/shared/src/general.ts | 4 + pnpm-lock.yaml | 26 + scripts/vue-api-manifest.ts | 61 + 11 files changed, 1505 insertions(+), 3 deletions(-) create mode 100644 packages/client/data/vue-apis.json create mode 100644 packages/client/src/components/CommandPalette.vue create mode 100644 packages/client/src/composables/state-commands.ts create mode 100644 scripts/vue-api-manifest.ts diff --git a/.gitignore b/.gitignore index 9632114f..e519a1a7 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,6 @@ packages/browser-extension/client/**/* packages/electron/client/**/* packages/vite/src/overlay/**/* docs/.vitepress/cache/ + +# for scripts +clones diff --git a/package.json b/package.json index ce41f647..268923f4 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "dev:ui-play": "nr -C packages/ui-playground dev", "prepare:type": "pnpm -r --filter='./packages/**' run prepare:type", "dev": "NODE_OPTIONS=\"--max-old-space-size=8192\" nr prepare:type && nr build:ui && pnpm -r --parallel --filter='./packages/**' run stub", - "build": "pnpm -r --filter='./packages/{schema,shared,core,ui,devtools-kit,vite}' run build && pnpm build:client && pnpm build:overlay && pnpm build:browser-extension & pnpm build:electron && pnpm build:devtools&& pnpm build:devtools-api", + "build": "pnpm -r --filter='./packages/{schema,shared,core,ui,devtools-kit,vite}' run build && pnpm build:client && pnpm build:overlay && pnpm build:browser-extension & pnpm build:electron && pnpm build:devtools && pnpm build:devtools-api", "build:browser-extension": "nr -C packages/browser-extension build", "lint": "eslint .", "lint:fix": "eslint . --fix", @@ -59,12 +59,14 @@ "play": "nr -C packages/playground dev", "docs": "pnpm -C docs run docs:dev", "docs:build": "pnpm -C docs run docs:build", - "zip": "tsx ./scripts/extension-zip.ts" + "zip": "tsx ./scripts/extension-zip.ts", + "gen:vue-apis": "tsx ./scripts/vue-api-manifest.ts" }, "devDependencies": { "@antfu/eslint-config": "2.4.2", "@antfu/ni": "^0.21.12", "@types/chrome": "^0.0.254", + "@types/degit": "^2.8.6", "@types/fs-extra": "^11.0.4", "@types/node": "^20.10.4", "@unocss/eslint-plugin": "^0.58.0", @@ -73,15 +75,18 @@ "archiver": "^6.0.1", "bumpp": "^9.2.1", "cross-env": "^7.0.3", + "degit": "^2.8.4", "eslint": "npm:eslint-ts-patch@8.55.0-1", "eslint-plugin-format": "^0.1.0", "eslint-ts-patch": "8.55.0-1", + "fast-glob": "^3.3.2", "fs-extra": "^11.2.0", "lint-staged": "^15.2.0", "npm-run-all": "^4.1.5", "pnpm": "^8.12.1", "progress": "^2.0.3", "readdir-glob": "^1.1.3", + "regex-extra": "^0.2.2", "simple-git-hooks": "^2.9.0", "taze": "^0.13.0", "tsup": "^8.0.1", diff --git a/packages/client/data/vue-apis.json b/packages/client/data/vue-apis.json new file mode 100644 index 00000000..407033db --- /dev/null +++ b/packages/client/data/vue-apis.json @@ -0,0 +1,1124 @@ +[ + { + "id": "doc:application:createApp()", + "title": "createApp()", + "description": "application", + "url": "https:/vuejs.org/api/application#createapp" + }, + { + "id": "doc:application:createSSRApp()", + "title": "createSSRApp()", + "description": "application", + "url": "https:/vuejs.org/api/application#createssrapp" + }, + { + "id": "doc:application:app.mount()", + "title": "app.mount()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-mount" + }, + { + "id": "doc:application:app.unmount()", + "title": "app.unmount()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-unmount" + }, + { + "id": "doc:application:app.component()", + "title": "app.component()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-component" + }, + { + "id": "doc:application:app.directive()", + "title": "app.directive()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-directive" + }, + { + "id": "doc:application:app.use()", + "title": "app.use()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-use" + }, + { + "id": "doc:application:app.mixin()", + "title": "app.mixin()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-mixin" + }, + { + "id": "doc:application:app.provide()", + "title": "app.provide()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-provide" + }, + { + "id": "doc:application:app.runWithContext()", + "title": "app.runWithContext()", + "description": "application", + "url": "https:/vuejs.org/api/application#app-runwithcontext" + }, + { + "id": "doc:application:app.version", + "title": "app.version", + "description": "application", + "url": "https:/vuejs.org/api/application#app-version" + }, + { + "id": "doc:application:app.config", + "title": "app.config", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config" + }, + { + "id": "doc:application:app.config.errorHandler", + "title": "app.config.errorHandler", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config-errorhandler" + }, + { + "id": "doc:application:app.config.warnHandler", + "title": "app.config.warnHandler", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config-warnhandler" + }, + { + "id": "doc:application:app.config.performance", + "title": "app.config.performance", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config-performance" + }, + { + "id": "doc:application:app.config.compilerOptions", + "title": "app.config.compilerOptions", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config-compileroptions" + }, + { + "id": "doc:application:app.config.globalProperties", + "title": "app.config.globalProperties", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config-globalproperties" + }, + { + "id": "doc:application:app.config.optionMergeStrategies", + "title": "app.config.optionMergeStrategies", + "description": "application", + "url": "https:/vuejs.org/api/application#app-config-optionmergestrategies" + }, + { + "id": "doc:built-in-components:``", + "title": "``", + "description": "built-in-components", + "url": "https:/vuejs.org/api/built-in-components#transition" + }, + { + "id": "doc:built-in-components:``", + "title": "``", + "description": "built-in-components", + "url": "https:/vuejs.org/api/built-in-components#transitiongroup" + }, + { + "id": "doc:built-in-components:``", + "title": "``", + "description": "built-in-components", + "url": "https:/vuejs.org/api/built-in-components#keepalive" + }, + { + "id": "doc:built-in-components:``", + "title": "``", + "description": "built-in-components", + "url": "https:/vuejs.org/api/built-in-components#teleport" + }, + { + "id": "doc:built-in-components:``", + "title": "``", + "description": "built-in-components", + "url": "https:/vuejs.org/api/built-in-components#suspense" + }, + { + "id": "doc:built-in-directives:v-text", + "title": "v-text", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-text" + }, + { + "id": "doc:built-in-directives:v-html", + "title": "v-html", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-html" + }, + { + "id": "doc:built-in-directives:v-show", + "title": "v-show", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-show" + }, + { + "id": "doc:built-in-directives:v-if", + "title": "v-if", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-if" + }, + { + "id": "doc:built-in-directives:v-else", + "title": "v-else", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-else" + }, + { + "id": "doc:built-in-directives:v-else-if", + "title": "v-else-if", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-else-if" + }, + { + "id": "doc:built-in-directives:v-for", + "title": "v-for", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-for" + }, + { + "id": "doc:built-in-directives:v-on", + "title": "v-on", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-on" + }, + { + "id": "doc:built-in-directives:v-bind", + "title": "v-bind", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-bind" + }, + { + "id": "doc:built-in-directives:v-model", + "title": "v-model", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-model" + }, + { + "id": "doc:built-in-directives:v-slot", + "title": "v-slot", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-slot" + }, + { + "id": "doc:built-in-directives:v-pre", + "title": "v-pre", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-pre" + }, + { + "id": "doc:built-in-directives:v-once", + "title": "v-once", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-once" + }, + { + "id": "doc:built-in-directives:v-memo", + "title": "v-memo", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-memo" + }, + { + "id": "doc:built-in-directives:v-cloak", + "title": "v-cloak", + "description": "built-in-directives", + "url": "https:/vuejs.org/api/built-in-directives#v-cloak" + }, + { + "id": "doc:built-in-special-attributes:key", + "title": "key", + "description": "built-in-special-attributes", + "url": "https:/vuejs.org/api/built-in-special-attributes#key" + }, + { + "id": "doc:built-in-special-attributes:ref", + "title": "ref", + "description": "built-in-special-attributes", + "url": "https:/vuejs.org/api/built-in-special-attributes#ref" + }, + { + "id": "doc:built-in-special-attributes:is", + "title": "is", + "description": "built-in-special-attributes", + "url": "https:/vuejs.org/api/built-in-special-attributes#is" + }, + { + "id": "doc:built-in-special-elements:``", + "title": "``", + "description": "built-in-special-elements", + "url": "https:/vuejs.org/api/built-in-special-elements#component" + }, + { + "id": "doc:built-in-special-elements:``", + "title": "``", + "description": "built-in-special-elements", + "url": "https:/vuejs.org/api/built-in-special-elements#slot" + }, + { + "id": "doc:built-in-special-elements:`