From 8cc6cbd463bd3bff4eb1498dd6ee5de2a7c6f17c Mon Sep 17 00:00:00 2001 From: Qijia Liu Date: Sat, 31 Aug 2024 12:28:25 +0800 Subject: [PATCH] initial InputMethodConfig (#1) --- .github/workflows/ci.yml | 45 +++++++++++++++++++++++ .gitignore | 1 + cache/README.md | 1 + eslint.config.mjs | 4 ++ package.json | 24 ++++++++++++ src/InputMethodConfig.vue | 77 +++++++++++++++++++++++++++++++++++++++ src/MinusButton.vue | 14 +++++++ src/MinusIcon.vue | 9 +++++ src/PlusButton.vue | 14 +++++++ src/PlusIcon.vue | 9 +++++ src/global.d.ts | 7 ++++ src/index.ts | 1 + tsconfig.json | 17 +++++++++ vite.config.ts | 20 ++++++++++ 14 files changed, 243 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 cache/README.md create mode 100644 eslint.config.mjs create mode 100644 package.json create mode 100644 src/InputMethodConfig.vue create mode 100644 src/MinusButton.vue create mode 100644 src/MinusIcon.vue create mode 100644 src/PlusButton.vue create mode 100644 src/PlusIcon.vue create mode 100644 src/global.d.ts create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2c6d868 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,45 @@ +name: ci + +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22.x + + - name: Install dependencies + run: | + wget -P cache https://github.com/fcitx-contrib/fcitx5-js/releases/download/latest/fcitx5-js-0.1.0.tgz + npm i -g pnpm + pnpm i + + - name: Lint + run: | + pnpm run lint + pnpm run check + + - name: Build + run: | + pnpm run build + npm pack + + - name: Release + if: ${{ github.ref == 'refs/heads/master' }} + uses: marvinpinto/action-automatic-releases@latest + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + automatic_release_tag: latest + prerelease: true + title: Nightly Build + files: | + fcitx5-config-vue-*.tgz diff --git a/.gitignore b/.gitignore index 9be3fbf..892b131 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules dist pnpm-lock.yaml +*.tgz diff --git a/cache/README.md b/cache/README.md new file mode 100644 index 0000000..0fc142a --- /dev/null +++ b/cache/README.md @@ -0,0 +1 @@ +This directory caches [fcitx5-js](https://github.com/fcitx-contrib/fcitx5-js) npm package. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..8d12fae --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,4 @@ +import antfu from '@antfu/eslint-config' + +export default antfu({ +}) diff --git a/package.json b/package.json new file mode 100644 index 0000000..6bf4445 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "fcitx5-config-vue", + "type": "module", + "version": "0.1.0", + "license": "AGPL-3.0-or-later", + "main": "dist/index.js", + "scripts": { + "lint": "eslint", + "lint:fix": "eslint --fix", + "check": "vue-tsc --noEmit", + "build": "vite build && vue-tsc -d --emitDeclarationOnly" + }, + "devDependencies": { + "@antfu/eslint-config": "^2.27.1", + "@vitejs/plugin-vue": "^5.1.2", + "eslint": "^9.9.1", + "fcitx5-js": "file:cache/fcitx5-js-0.1.0.tgz", + "naive-ui": "^2.39.0", + "typescript": "^5.5.4", + "vite": "^5.4.2", + "vue": "^3.4.38", + "vue-tsc": "^2.0.29" + } +} diff --git a/src/InputMethodConfig.vue b/src/InputMethodConfig.vue new file mode 100644 index 0000000..49b9bb8 --- /dev/null +++ b/src/InputMethodConfig.vue @@ -0,0 +1,77 @@ + + + diff --git a/src/MinusButton.vue b/src/MinusButton.vue new file mode 100644 index 0000000..7faede3 --- /dev/null +++ b/src/MinusButton.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/MinusIcon.vue b/src/MinusIcon.vue new file mode 100644 index 0000000..3572f07 --- /dev/null +++ b/src/MinusIcon.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/PlusButton.vue b/src/PlusButton.vue new file mode 100644 index 0000000..a5590fa --- /dev/null +++ b/src/PlusButton.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/PlusIcon.vue b/src/PlusIcon.vue new file mode 100644 index 0000000..c43f80a --- /dev/null +++ b/src/PlusIcon.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..93c77e6 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,7 @@ +import type { FCITX } from 'fcitx5-js' + +declare global { + interface Window { + fcitx: FCITX + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..a6066c7 --- /dev/null +++ b/src/index.ts @@ -0,0 +1 @@ +export { default as InputMethodConfig } from './InputMethodConfig.vue' diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..bc1b702 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["ESNext", "DOM"], + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "strict": true, + "outDir": "dist", + "sourceMap": true, + "esModuleInterop": true, + "isolatedModules": true, + "skipLibCheck": true + }, + "include": ["src/**/*.vue", "src/**/*.ts", "src/**/*.d.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..0b6c740 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + lib: { + entry: 'src/index.ts', + fileName: 'index', + formats: ['es'], + }, + rollupOptions: { + external: [ + 'vue', + 'naive-ui', + ], + }, + }, + plugins: [vue()], +})