Compare commits

...

5 commits

10 changed files with 182 additions and 125 deletions

View file

@ -2,6 +2,9 @@
A Pleroma/Mastodon client, focus on editing experience (WIP 🏗️), developed by [@seviche@kongwoo.icu](https://kongwoo.icu/seviche)
- [Codeberg](https://codeberg.org/Sevichecc/Seigwai)
- [Github](https://github.com/Sevichecc/Seigwai)
## Features
- Markdown

View file

@ -12,7 +12,6 @@
},
"dependencies": {
"@egoist/tailwindcss-icons": "^1.0.7",
"@iconify/json": "^2.2.40",
"@prosemirror-adapter/vue": "^0.2.3",
"@tiptap/core": "2.0.0-beta.220",
"@tiptap/extension-bubble-menu": "2.0.0-beta.220",
@ -21,12 +20,14 @@
"@tiptap/extension-code-block-lowlight": "^2.0.1",
"@tiptap/extension-highlight": "^2.0.0",
"@tiptap/extension-link": "2.0.0-beta.220",
"@tiptap/extension-placeholder": "^2.0.1",
"@tiptap/extension-typography": "2.0.0-beta.220",
"@tiptap/pm": "2.0.0-beta.220",
"@tiptap/starter-kit": "2.0.0-beta.220",
"@tiptap/suggestion": "^2.0.0",
"@tiptap/vue-3": "2.0.0-beta.220",
"install": "^0.13.0",
"daisyui": "^2.51.5",
"highlight.js": "^11.7.0",
"lowlight": "^2.8.1",
"masto": "^5.10.0",
"tippy.js": "^6.3.7",
@ -38,14 +39,13 @@
"@tailwindcss/typography": "^0.5.9",
"@vitejs/plugin-vue": "^4.1.0",
"autoprefixer": "^10.4.14",
"daisyui": "^2.51.5",
"eslint": "^8.36.0",
"husky": "^8.0.3",
"lint-staged": "^13.2.0",
"postcss": "^8.4.21",
"sass": "^1.60.0",
"tailwindcss": "^3.3.0",
"typescript": "^5.0.2",
"tailwindcss": "^3.3.1",
"typescript": "^5.0.3",
"vite": "^4.2.1",
"vue-tsc": "^1.2.0"
},

View file

@ -3,10 +3,7 @@ lockfileVersion: '6.0'
dependencies:
'@egoist/tailwindcss-icons':
specifier: ^1.0.7
version: 1.0.7(tailwindcss@3.3.0)
'@iconify/json':
specifier: ^2.2.40
version: 2.2.40
version: 1.0.7(tailwindcss@3.3.1)
'@prosemirror-adapter/vue':
specifier: ^0.2.3
version: 0.2.3(vue@3.2.47)
@ -31,6 +28,9 @@ dependencies:
'@tiptap/extension-link':
specifier: 2.0.0-beta.220
version: 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220)
'@tiptap/extension-placeholder':
specifier: ^2.0.1
version: 2.0.1(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220)
'@tiptap/extension-typography':
specifier: 2.0.0-beta.220
version: 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)
@ -46,9 +46,12 @@ dependencies:
'@tiptap/vue-3':
specifier: 2.0.0-beta.220
version: 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220)(vue@3.2.47)
install:
specifier: ^0.13.0
version: 0.13.0
daisyui:
specifier: ^2.51.5
version: 2.51.5(autoprefixer@10.4.14)(postcss@8.4.21)
highlight.js:
specifier: ^11.7.0
version: 11.7.0
lowlight:
specifier: ^2.8.1
version: 2.8.1
@ -65,22 +68,19 @@ dependencies:
devDependencies:
'@antfu/eslint-config':
specifier: ^0.37.0
version: 0.37.0(eslint@8.36.0)(typescript@5.0.2)
version: 0.37.0(eslint@8.36.0)(typescript@5.0.3)
'@iconify-json/tabler':
specifier: ^1.1.68
version: 1.1.68
'@tailwindcss/typography':
specifier: ^0.5.9
version: 0.5.9(tailwindcss@3.3.0)
version: 0.5.9(tailwindcss@3.3.1)
'@vitejs/plugin-vue':
specifier: ^4.1.0
version: 4.1.0(vite@4.2.1)(vue@3.2.47)
autoprefixer:
specifier: ^10.4.14
version: 10.4.14(postcss@8.4.21)
daisyui:
specifier: ^2.51.5
version: 2.51.5(autoprefixer@10.4.14)(postcss@8.4.21)
eslint:
specifier: ^8.36.0
version: 8.36.0
@ -93,31 +93,34 @@ devDependencies:
postcss:
specifier: ^8.4.21
version: 8.4.21
postcss-import:
specifier: ^15.1.0
version: 15.1.0(postcss@8.4.21)
sass:
specifier: ^1.60.0
version: 1.60.0
tailwindcss:
specifier: ^3.3.0
version: 3.3.0(postcss@8.4.21)
specifier: ^3.3.1
version: 3.3.1(postcss@8.4.21)
typescript:
specifier: ^5.0.2
version: 5.0.2
specifier: ^5.0.3
version: 5.0.3
vite:
specifier: ^4.2.1
version: 4.2.1(sass@1.60.0)
vue-tsc:
specifier: ^1.2.0
version: 1.2.0(typescript@5.0.2)
version: 1.2.0(typescript@5.0.3)
packages:
/@antfu/eslint-config-basic@0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2):
/@antfu/eslint-config-basic@0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-iBj6qjAOQr+WMhK38lfR2/xdIY81qUk4i6tHhwmcxXi4GEf2HF6I4Cgeu9SyIlTxOw8AP1CVqdUNzUbmYSaMZg==}
peerDependencies:
eslint: '>=7.4.0'
dependencies:
eslint: 8.36.0
eslint-plugin-antfu: 0.37.0(eslint@8.36.0)(typescript@5.0.2)
eslint-plugin-antfu: 0.37.0(eslint@8.36.0)(typescript@5.0.3)
eslint-plugin-eslint-comments: 3.2.0(eslint@8.36.0)
eslint-plugin-html: 7.1.0
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)
@ -140,18 +143,18 @@ packages:
- typescript
dev: true
/@antfu/eslint-config-ts@0.37.0(eslint@8.36.0)(typescript@5.0.2):
/@antfu/eslint-config-ts@0.37.0(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-+ZS0UE7qa6EzFe0JgCSqdi/IRGQlUj/kOjvwsHCXVK1A02ZW2p0fEKzCpNAz1NJK9nkqhyvNHX+gNOTQsPMbeQ==}
peerDependencies:
eslint: '>=7.4.0'
typescript: '>=3.9'
dependencies:
'@antfu/eslint-config-basic': 0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@antfu/eslint-config-basic': 0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
eslint: 8.36.0
eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
typescript: 5.0.2
eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
typescript: 5.0.3
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@ -159,13 +162,13 @@ packages:
- supports-color
dev: true
/@antfu/eslint-config-vue@0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2):
/@antfu/eslint-config-vue@0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-d7n4+7f6YMizE1HDEOtIBJGruFuIeqrNF+ZjHM8o6+isMrJkvdjVx6nHtHVtoWNYW6jiRJ5AW+nkfo2aoNGUyA==}
peerDependencies:
eslint: '>=7.4.0'
dependencies:
'@antfu/eslint-config-basic': 0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@antfu/eslint-config-ts': 0.37.0(eslint@8.36.0)(typescript@5.0.2)
'@antfu/eslint-config-basic': 0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
'@antfu/eslint-config-ts': 0.37.0(eslint@8.36.0)(typescript@5.0.3)
eslint: 8.36.0
eslint-plugin-vue: 9.9.0(eslint@8.36.0)
local-pkg: 0.4.3
@ -179,14 +182,14 @@ packages:
- typescript
dev: true
/@antfu/eslint-config@0.37.0(eslint@8.36.0)(typescript@5.0.2):
/@antfu/eslint-config@0.37.0(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-Kq12dCBSYNV/wuoX35ijs8aNjdF9FiSp3GbiGh2Y8sPtM6NbJc5LA3ixWz0PcA/byHf1VPVisDZcPqISjic/zA==}
peerDependencies:
eslint: '>=7.4.0'
dependencies:
'@antfu/eslint-config-vue': 0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@antfu/eslint-config-vue': 0.37.0(@typescript-eslint/eslint-plugin@5.56.0)(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
eslint: 8.36.0
eslint-plugin-eslint-comments: 3.2.0(eslint@8.36.0)
eslint-plugin-html: 7.1.0
@ -264,13 +267,13 @@ packages:
'@babel/helper-validator-identifier': 7.19.1
to-fast-properties: 2.0.0
/@egoist/tailwindcss-icons@1.0.7(tailwindcss@3.3.0):
/@egoist/tailwindcss-icons@1.0.7(tailwindcss@3.3.1):
resolution: {integrity: sha512-GeoEZC53+zHJyBEcBc0B4hf9MGdDjy0iatW6GT4Ss+c+t8IgjsJVjz3Gg3RpCdg+rnsyRLeg5S+ubkJpaz85Rw==}
peerDependencies:
tailwindcss: '*'
dependencies:
'@iconify/utils': 2.1.5
tailwindcss: 3.3.0(postcss@8.4.21)
tailwindcss: 3.3.1(postcss@8.4.21)
transitivePeerDependencies:
- supports-color
dev: false
@ -536,13 +539,6 @@ packages:
'@iconify/types': 2.0.0
dev: true
/@iconify/json@2.2.40:
resolution: {integrity: sha512-I6RVi9Y7xt1AXjJ4JKt3dnS5f/Jep1LyPUwDcc7ZlTgW5u7kcDoIjyAlE+ax5bBqxiR60s9qVVufMmjLSq5iUA==}
dependencies:
'@iconify/types': 2.0.0
pathe: 1.1.0
dev: false
/@iconify/types@2.0.0:
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@ -646,7 +642,7 @@ packages:
type-fest: 2.19.0
dev: false
/@tailwindcss/typography@0.5.9(tailwindcss@3.3.0):
/@tailwindcss/typography@0.5.9(tailwindcss@3.3.1):
resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
@ -655,7 +651,7 @@ packages:
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.3.0(postcss@8.4.21)
tailwindcss: 3.3.1(postcss@8.4.21)
dev: true
/@tiptap/core@2.0.0-beta.220(@tiptap/pm@2.0.0-beta.220):
@ -868,6 +864,16 @@ packages:
'@tiptap/core': 2.0.0-beta.220(@tiptap/pm@2.0.0-beta.220)
dev: false
/@tiptap/extension-placeholder@2.0.1(@tiptap/core@2.0.0-beta.220)(@tiptap/pm@2.0.0-beta.220):
resolution: {integrity: sha512-Jc0SrZw6HQ6Ddxr58SAAw5QPYh2pgjc1OSfrKn7+zBzcZDMFLWWgx9lTRwlR5L5VqTEuWqatJCfDrgjbnE4hLw==}
peerDependencies:
'@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0
dependencies:
'@tiptap/core': 2.0.0-beta.220(@tiptap/pm@2.0.0-beta.220)
'@tiptap/pm': 2.0.0-beta.220(@tiptap/core@2.0.0-beta.220)
dev: false
/@tiptap/extension-strike@2.0.0-beta.220(@tiptap/core@2.0.0-beta.220):
resolution: {integrity: sha512-cIM2ma6mzk08pijOn+KS3ZoHWaUVsVT+OF3m6xewjwJdC0ILg9nApEOhPFrhbeDcxcPmJMlgBl/xeUrEu1HQMg==}
peerDependencies:
@ -1022,7 +1028,7 @@ packages:
/@types/unist@2.0.6:
resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
/@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2):
/@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -1034,23 +1040,23 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.4.1
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/scope-manager': 5.56.0
'@typescript-eslint/type-utils': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/type-utils': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
debug: 4.3.4
eslint: 8.36.0
grapheme-splitter: 1.0.4
ignore: 5.2.4
natural-compare-lite: 1.4.0
semver: 7.3.8
tsutils: 3.21.0(typescript@5.0.2)
typescript: 5.0.2
tsutils: 3.21.0(typescript@5.0.3)
typescript: 5.0.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser@5.56.0(eslint@8.36.0)(typescript@5.0.2):
/@typescript-eslint/parser@5.56.0(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -1062,10 +1068,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 5.56.0
'@typescript-eslint/types': 5.56.0
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.2)
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.3)
debug: 4.3.4
eslint: 8.36.0
typescript: 5.0.2
typescript: 5.0.3
transitivePeerDependencies:
- supports-color
dev: true
@ -1078,7 +1084,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.56.0
dev: true
/@typescript-eslint/type-utils@5.56.0(eslint@8.36.0)(typescript@5.0.2):
/@typescript-eslint/type-utils@5.56.0(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -1088,12 +1094,12 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.2)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.3)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
debug: 4.3.4
eslint: 8.36.0
tsutils: 3.21.0(typescript@5.0.2)
typescript: 5.0.2
tsutils: 3.21.0(typescript@5.0.3)
typescript: 5.0.3
transitivePeerDependencies:
- supports-color
dev: true
@ -1103,7 +1109,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree@5.56.0(typescript@5.0.2):
/@typescript-eslint/typescript-estree@5.56.0(typescript@5.0.3):
resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -1118,13 +1124,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.3.8
tsutils: 3.21.0(typescript@5.0.2)
typescript: 5.0.2
tsutils: 3.21.0(typescript@5.0.3)
typescript: 5.0.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils@5.56.0(eslint@8.36.0)(typescript@5.0.2):
/@typescript-eslint/utils@5.56.0(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -1135,7 +1141,7 @@ packages:
'@types/semver': 7.3.13
'@typescript-eslint/scope-manager': 5.56.0
'@typescript-eslint/types': 5.56.0
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.2)
'@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.3)
eslint: 8.36.0
eslint-scope: 5.1.1
semver: 7.3.8
@ -1424,7 +1430,6 @@ packages:
picocolors: 1.0.0
postcss: 8.4.21
postcss-value-parser: 4.2.0
dev: true
/available-typed-arrays@1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
@ -1469,7 +1474,6 @@ packages:
electron-to-chromium: 1.4.340
node-releases: 2.0.10
update-browserslist-db: 1.0.10(browserslist@4.21.5)
dev: true
/builtin-modules@3.3.0:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
@ -1506,7 +1510,6 @@ packages:
/caniuse-lite@1.0.30001469:
resolution: {integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==}
dev: true
/capital-case@1.0.4:
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
@ -1637,7 +1640,6 @@ packages:
engines: {node: '>=7.0.0'}
dependencies:
color-name: 1.1.4
dev: true
/color-name@1.1.3:
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
@ -1651,7 +1653,7 @@ packages:
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
dev: true
dev: false
/color@4.2.3:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
@ -1659,7 +1661,7 @@ packages:
dependencies:
color-convert: 2.0.1
color-string: 1.9.1
dev: true
dev: false
/colorette@2.0.19:
resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
@ -1709,7 +1711,7 @@ packages:
dependencies:
cssesc: 3.0.0
fastparse: 1.1.2
dev: true
dev: false
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
@ -1730,10 +1732,10 @@ packages:
css-selector-tokenizer: 0.8.0
postcss: 8.4.21
postcss-js: 4.0.1(postcss@8.4.21)
tailwindcss: 3.3.0(postcss@8.4.21)
tailwindcss: 3.3.1(postcss@8.4.21)
transitivePeerDependencies:
- ts-node
dev: true
dev: false
/dash-get@1.0.2:
resolution: {integrity: sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==}
@ -1854,7 +1856,6 @@ packages:
/electron-to-chromium@1.4.340:
resolution: {integrity: sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==}
dev: true
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -1976,7 +1977,6 @@ packages:
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
dev: true
/escape-string-regexp@1.0.5:
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
@ -2018,7 +2018,7 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
debug: 3.2.7
eslint: 8.36.0
eslint-import-resolver-node: 0.3.7
@ -2026,10 +2026,10 @@ packages:
- supports-color
dev: true
/eslint-plugin-antfu@0.37.0(eslint@8.36.0)(typescript@5.0.2):
/eslint-plugin-antfu@0.37.0(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-Tekr9S4fkrmH88RS5XHvs3gQwQIn/2As8gYePzrPHTQEQF00pIx0sa1eQrhmvN50ubUG4WkZnpx/uR3073jLeg==}
dependencies:
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
transitivePeerDependencies:
- eslint
- supports-color
@ -2074,7 +2074,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/parser': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
array-includes: 3.1.6
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
@ -2097,7 +2097,7 @@ packages:
- supports-color
dev: true
/eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.36.0)(typescript@5.0.2):
/eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.36.0)(typescript@5.0.3):
resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@ -2110,8 +2110,8 @@ packages:
jest:
optional: true
dependencies:
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
'@typescript-eslint/utils': 5.56.0(eslint@8.36.0)(typescript@5.0.3)
eslint: 8.36.0
transitivePeerDependencies:
- supports-color
@ -2208,7 +2208,7 @@ packages:
'@typescript-eslint/eslint-plugin':
optional: true
dependencies:
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.2)
'@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.36.0)(typescript@5.0.3)
eslint: 8.36.0
eslint-rule-composer: 0.3.0
dev: true
@ -2451,7 +2451,7 @@ packages:
/fastparse@1.1.2:
resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==}
dev: true
dev: false
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
@ -2535,7 +2535,6 @@ packages:
/fraction.js@4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true
/fs.realpath@1.0.0:
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
@ -2776,11 +2775,6 @@ packages:
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
/install@0.13.0:
resolution: {integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==}
engines: {node: '>= 0.10'}
dev: false
/internal-slot@1.0.5:
resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
engines: {node: '>= 0.4'}
@ -2815,7 +2809,7 @@ packages:
/is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: true
dev: false
/is-bigint@1.0.4:
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
@ -3362,7 +3356,6 @@ packages:
/node-releases@2.0.10:
resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
dev: true
/normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
@ -3380,7 +3373,6 @@ packages:
/normalize-range@0.1.2:
resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=}
engines: {node: '>=0.10.0'}
dev: true
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
@ -3597,10 +3589,6 @@ packages:
engines: {node: '>=8'}
dev: true
/pathe@1.1.0:
resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==}
dev: false
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@ -3638,6 +3626,18 @@ packages:
read-cache: 1.0.0
resolve: 1.22.1
/postcss-import@15.1.0(postcss@8.4.21):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.21
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.1
dev: true
/postcss-js@4.0.1(postcss@8.4.21):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
@ -4057,7 +4057,7 @@ packages:
resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=}
dependencies:
is-arrayish: 0.3.2
dev: true
dev: false
/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
@ -4240,8 +4240,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
/tailwindcss@3.3.0(postcss@8.4.21):
resolution: {integrity: sha512-hOXlFx+YcklJ8kXiCAfk/FMyr4Pm9ck477G0m/us2344Vuj355IpoEDB5UmGAsSpTBmr+4ZhjzW04JuFXkb/fw==}
/tailwindcss@3.3.1(postcss@8.4.21):
resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==}
engines: {node: '>=12.13.0'}
hasBin: true
peerDependencies:
@ -4337,14 +4337,14 @@ packages:
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
/tsutils@3.21.0(typescript@5.0.2):
/tsutils@3.21.0(typescript@5.0.3):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
typescript: 5.0.2
typescript: 5.0.3
dev: true
/type-check@0.4.0:
@ -4387,8 +4387,8 @@ packages:
is-typed-array: 1.1.10
dev: true
/typescript@5.0.2:
resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==}
/typescript@5.0.3:
resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==}
engines: {node: '>=12.20'}
hasBin: true
dev: true
@ -4421,7 +4421,6 @@ packages:
browserslist: 4.21.5
escalade: 3.1.1
picocolors: 1.0.0
dev: true
/upper-case-first@2.0.2:
resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
@ -4510,7 +4509,7 @@ packages:
he: 1.2.0
dev: true
/vue-tsc@1.2.0(typescript@5.0.2):
/vue-tsc@1.2.0(typescript@5.0.3):
resolution: {integrity: sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==}
hasBin: true
peerDependencies:
@ -4518,7 +4517,7 @@ packages:
dependencies:
'@volar/vue-language-core': 1.2.0
'@volar/vue-typescript': 1.2.0
typescript: 5.0.2
typescript: 5.0.3
dev: true
/vue@3.2.47:

View file

@ -1,6 +0,0 @@
/* Copyright 2021, Milkdown by Mirone. */
module.exports = {
plugins: {
tailwindcss: {},
},
}

View file

@ -71,15 +71,16 @@ export default {
<template>
<div class="items">
<template v-if="items.length">
<button
<div
v-for="(item, index) in items"
:key="index"
class="item"
:class="{ 'is-selected': index === selectedIndex }"
@click="selectItem(index)"
>
<span :class="item.icon" />
{{ item.title }}
</button>
</div>
</template>
<div v-else class="item">
No result

View file

@ -6,6 +6,7 @@ import Link from '@tiptap/extension-link'
import Highlight from '@tiptap/extension-highlight'
import { lowlight } from 'lowlight/lib/core'
import CodeBlockLowlight from '@tiptap/extension-code-block-lowlight'
import Placeholder from '@tiptap/extension-placeholder'
import html from 'highlight.js/lib/languages/xml'
import css from 'highlight.js/lib/languages/css'
@ -73,6 +74,23 @@ const editor = useEditor({
class: 'hljs not-prose',
},
}),
Placeholder.configure({
// Use different placeholders depending on the node type:
// placeholder: 'Write something '
placeholder: ({ node }) => {
if (node.type.name === 'heading') {
switch (node.attrs.level) {
case 1:
return 'Heading 1'
case 2:
return 'Heading 2'
case 3:
return 'Heading 3'
}
}
return 'Can you add some further context?'
},
}),
],
editable: true,
autofocus: true,
@ -88,3 +106,30 @@ const editor = useEditor({
<BubbleMenu v-if="editor" :editor="editor" />
<EditorContent :editor="editor" />
</template>
<style lang="scss">
/* Basic editor styles */
.ProseMirror {
> * + * {
margin-top: 0.75em;
}
}
/* Placeholder (at the top) */
.ProseMirror p.is-editor-empty:first-child::before {
content: attr(data-placeholder);
float: left;
color: #adb5bd;
pointer-events: none;
height: 0;
}
/* Placeholder (on every new line) */
.ProseMirror :where(p.is-empty,h1.is-empty,h2.is-empty,h3.is-empty)::before {
content: attr(data-placeholder);
float: left;
color: #adb5bd;
pointer-events: none;
height: 0;
}
</style>

View file

@ -10,6 +10,7 @@ export default {
return [
{
title: 'H1',
icon: 'i-tabler-h-1',
command: ({ editor, range }) => {
editor
.chain()
@ -21,6 +22,7 @@ export default {
},
{
title: 'H2',
icon: 'i-tabler-h-2',
command: ({ editor, range }) => {
editor
.chain()
@ -32,6 +34,7 @@ export default {
},
{
title: 'H3',
icon: 'i-tabler-h-3',
command: ({ editor, range }) => {
editor
.chain()
@ -43,30 +46,35 @@ export default {
},
{
title: 'Code block',
icon: 'i-tabler-terminal',
command: ({ editor, range }) => {
editor.chain().focus().deleteRange(range).setCodeBlock().run()
},
},
{
title: 'Blockquote',
icon: 'i-tabler-blockquote',
command: ({ editor, range }) => {
editor.chain().focus().deleteRange(range).toggleBlockquote().run()
},
},
{
title: 'Divider',
icon: 'i-tabler-separator',
command: ({ editor, range }) => {
editor.chain().focus().deleteRange(range).setHorizontalRule().run()
},
},
{
title: 'Bullet List',
icon: 'i-tabler-list',
command: ({ editor, range }) => {
editor.chain().focus().deleteRange(range).toggleBulletList().run()
},
},
{
title: 'Ordered List',
icon: 'i-tabler-list-numbers',
command: ({ editor, range }) => {
editor.chain().focus().deleteRange(range).toggleOrderedList().run()
},

View file

@ -1,15 +1,14 @@
import type { Config } from 'tailwindcss'
import { getIconCollections, iconsPlugin } from '@egoist/tailwindcss-icons'
import typography from '@tailwindcss/typography'
import daisyui from 'daisyui'
export default {
content: ['**/*.tsx', '**/*.ts', '**/*.vue', '**/*.html'],
content: ['**/*.{js,ts,jsx,tsx}', '**/*.vue', '**/*.html'],
darkMode: 'class',
theme: {
extend: {},
},
plugins: [
require('@tailwindcss/typography'),
require('daisyui'),
typography,
daisyui,
iconsPlugin({
collections: getIconCollections(['tabler']),
}),

View file

@ -5,5 +5,5 @@
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
"include": ["vite.config.ts", "tailwind.config.ts"]
}

View file

@ -1,7 +1,15 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import tailwindcss from 'tailwindcss'
import autoprefixer from 'autoprefixer'
import tailwindConfig from './tailwind.config'
// https://vitejs.dev/config/
export default defineConfig({
css: {
postcss: {
plugins: [tailwindcss(tailwindConfig), autoprefixer()],
},
},
plugins: [vue()],
})