feat: add post settings modal

Signed-off-by: Ryan Wang <i@ryanc.cc>
pull/581/head
Ryan Wang 2022-05-17 16:45:30 +08:00
parent 3d81d94197
commit 906ecd9b57
6 changed files with 503 additions and 210 deletions

View File

@ -18,7 +18,8 @@
"story:build": "histoire build" "story:build": "histoire build"
}, },
"dependencies": { "dependencies": {
"@vueuse/core": "^8.4.2", "@halo-dev/admin-api": "^1.0.0",
"@vueuse/core": "^8.5.0",
"pinia": "^2.0.14", "pinia": "^2.0.14",
"tailwindcss-safe-area": "^0.2.2", "tailwindcss-safe-area": "^0.2.2",
"tippy.js": "^6.3.7", "tippy.js": "^6.3.7",
@ -30,21 +31,21 @@
"@rushstack/eslint-patch": "^1.1.3", "@rushstack/eslint-patch": "^1.1.3",
"@tailwindcss/aspect-ratio": "^0.4.0", "@tailwindcss/aspect-ratio": "^0.4.0",
"@types/jsdom": "^16.2.14", "@types/jsdom": "^16.2.14",
"@types/node": "^17.0.31", "@types/node": "^17.0.34",
"@vitejs/plugin-vue": "^2.3.2", "@vitejs/plugin-vue": "^2.3.3",
"@vitejs/plugin-vue-jsx": "^1.3.10", "@vitejs/plugin-vue-jsx": "^1.3.10",
"@vitest/ui": "^0.12.3", "@vitest/ui": "^0.12.6",
"@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0", "@vue/eslint-config-typescript": "^10.0.0",
"@vue/test-utils": "^2.0.0-rc.21", "@vue/test-utils": "^2.0.0-rc.21",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"autoprefixer": "^10.4.7", "autoprefixer": "^10.4.7",
"c8": "^7.11.2", "c8": "^7.11.3",
"cypress": "^9.6.1", "cypress": "^9.6.1",
"eslint": "^8.15.0", "eslint": "^8.15.0",
"eslint-plugin-cypress": "^2.12.1", "eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-vue": "^8.7.1", "eslint-plugin-vue": "^8.7.1",
"histoire": "^0.4.5", "histoire": "^0.4.6",
"husky": "^8.0.1", "husky": "^8.0.1",
"jsdom": "^19.0.0", "jsdom": "^19.0.0",
"postcss": "^8.4.13", "postcss": "^8.4.13",
@ -55,11 +56,11 @@
"tailwindcss-themeable": "^1.3.0", "tailwindcss-themeable": "^1.3.0",
"typescript": "~4.6.4", "typescript": "~4.6.4",
"unplugin-icons": "^0.14.3", "unplugin-icons": "^0.14.3",
"vite": "^2.9.8", "vite": "^2.9.9",
"vite-compression-plugin": "^0.0.3", "vite-compression-plugin": "^0.0.3",
"vite-plugin-dts": "^1.1.1", "vite-plugin-dts": "^1.1.1",
"vite-plugin-pwa": "^0.12.0", "vite-plugin-pwa": "^0.12.0",
"vitest": "^0.12.3", "vitest": "^0.12.6",
"vue-tsc": "^0.34.11" "vue-tsc": "^0.34.15"
} }
} }

View File

@ -1,26 +1,27 @@
lockfileVersion: 5.4 lockfileVersion: 5.4
specifiers: specifiers:
'@halo-dev/admin-api': ^1.0.0
'@iconify-json/ri': ^1.1.1 '@iconify-json/ri': ^1.1.1
'@rushstack/eslint-patch': ^1.1.3 '@rushstack/eslint-patch': ^1.1.3
'@tailwindcss/aspect-ratio': ^0.4.0 '@tailwindcss/aspect-ratio': ^0.4.0
'@types/jsdom': ^16.2.14 '@types/jsdom': ^16.2.14
'@types/node': ^17.0.31 '@types/node': ^17.0.34
'@vitejs/plugin-vue': ^2.3.2 '@vitejs/plugin-vue': ^2.3.3
'@vitejs/plugin-vue-jsx': ^1.3.10 '@vitejs/plugin-vue-jsx': ^1.3.10
'@vitest/ui': ^0.12.3 '@vitest/ui': ^0.12.6
'@vue/eslint-config-prettier': ^7.0.0 '@vue/eslint-config-prettier': ^7.0.0
'@vue/eslint-config-typescript': ^10.0.0 '@vue/eslint-config-typescript': ^10.0.0
'@vue/test-utils': ^2.0.0-rc.21 '@vue/test-utils': ^2.0.0-rc.21
'@vue/tsconfig': ^0.1.3 '@vue/tsconfig': ^0.1.3
'@vueuse/core': ^8.4.2 '@vueuse/core': ^8.5.0
autoprefixer: ^10.4.7 autoprefixer: ^10.4.7
c8: ^7.11.2 c8: ^7.11.3
cypress: ^9.6.1 cypress: ^9.6.1
eslint: ^8.15.0 eslint: ^8.15.0
eslint-plugin-cypress: ^2.12.1 eslint-plugin-cypress: ^2.12.1
eslint-plugin-vue: ^8.7.1 eslint-plugin-vue: ^8.7.1
histoire: ^0.4.5 histoire: ^0.4.6
husky: ^8.0.1 husky: ^8.0.1
jsdom: ^19.0.0 jsdom: ^19.0.0
pinia: ^2.0.14 pinia: ^2.0.14
@ -34,17 +35,18 @@ specifiers:
tippy.js: ^6.3.7 tippy.js: ^6.3.7
typescript: ~4.6.4 typescript: ~4.6.4
unplugin-icons: ^0.14.3 unplugin-icons: ^0.14.3
vite: ^2.9.8 vite: ^2.9.9
vite-compression-plugin: ^0.0.3 vite-compression-plugin: ^0.0.3
vite-plugin-dts: ^1.1.1 vite-plugin-dts: ^1.1.1
vite-plugin-pwa: ^0.12.0 vite-plugin-pwa: ^0.12.0
vitest: ^0.12.3 vitest: ^0.12.6
vue: ^3.2.33 vue: ^3.2.33
vue-router: ^4.0.15 vue-router: ^4.0.15
vue-tsc: ^0.34.11 vue-tsc: ^0.34.15
dependencies: dependencies:
'@vueuse/core': 8.4.2_vue@3.2.33 '@halo-dev/admin-api': 1.0.0
'@vueuse/core': 8.5.0_vue@3.2.33
pinia: 2.0.14_ytvqwwdyss532bvoq2clv4ed5m pinia: 2.0.14_ytvqwwdyss532bvoq2clv4ed5m
tailwindcss-safe-area: 0.2.2 tailwindcss-safe-area: 0.2.2
tippy.js: 6.3.7 tippy.js: 6.3.7
@ -56,21 +58,21 @@ devDependencies:
'@rushstack/eslint-patch': 1.1.3 '@rushstack/eslint-patch': 1.1.3
'@tailwindcss/aspect-ratio': 0.4.0_tailwindcss@3.0.24 '@tailwindcss/aspect-ratio': 0.4.0_tailwindcss@3.0.24
'@types/jsdom': 16.2.14 '@types/jsdom': 16.2.14
'@types/node': 17.0.31 '@types/node': 17.0.34
'@vitejs/plugin-vue': 2.3.2_vite@2.9.8+vue@3.2.33 '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.33
'@vitejs/plugin-vue-jsx': 1.3.10 '@vitejs/plugin-vue-jsx': 1.3.10
'@vitest/ui': 0.12.3 '@vitest/ui': 0.12.6
'@vue/eslint-config-prettier': 7.0.0_bppm6sp3oxoychvfagx6tcd7pe '@vue/eslint-config-prettier': 7.0.0_bppm6sp3oxoychvfagx6tcd7pe
'@vue/eslint-config-typescript': 10.0.0_p4if3q7l2moozcc73o6tbvomjq '@vue/eslint-config-typescript': 10.0.0_p4if3q7l2moozcc73o6tbvomjq
'@vue/test-utils': 2.0.0-rc.21_vue@3.2.33 '@vue/test-utils': 2.0.0-rc.21_vue@3.2.33
'@vue/tsconfig': 0.1.3_@types+node@17.0.31 '@vue/tsconfig': 0.1.3_@types+node@17.0.34
autoprefixer: 10.4.7_postcss@8.4.13 autoprefixer: 10.4.7_postcss@8.4.13
c8: 7.11.2 c8: 7.11.3
cypress: 9.6.1 cypress: 9.6.1
eslint: 8.15.0 eslint: 8.15.0
eslint-plugin-cypress: 2.12.1_eslint@8.15.0 eslint-plugin-cypress: 2.12.1_eslint@8.15.0
eslint-plugin-vue: 8.7.1_eslint@8.15.0 eslint-plugin-vue: 8.7.1_eslint@8.15.0
histoire: 0.4.5_vmi6nhjwm35b7so4eamehfslgu histoire: 0.4.6_gfrfffqr3ji5b3kcyxmqf57s3m
husky: 8.0.1 husky: 8.0.1
jsdom: 19.0.0 jsdom: 19.0.0
postcss: 8.4.13 postcss: 8.4.13
@ -80,13 +82,13 @@ devDependencies:
tailwindcss: 3.0.24 tailwindcss: 3.0.24
tailwindcss-themeable: 1.3.0 tailwindcss-themeable: 1.3.0
typescript: 4.6.4 typescript: 4.6.4
unplugin-icons: 0.14.3_vite@2.9.8 unplugin-icons: 0.14.3_vite@2.9.9
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
vite-compression-plugin: 0.0.3 vite-compression-plugin: 0.0.3
vite-plugin-dts: 1.1.1_vite@2.9.8 vite-plugin-dts: 1.1.1_vite@2.9.9
vite-plugin-pwa: 0.12.0_vite@2.9.8 vite-plugin-pwa: 0.12.0_vite@2.9.9
vitest: 0.12.3_ztzjud4kquuh6gaaxlqfogd3mq vitest: 0.12.6_pfh5lnme5kp6b474lb3mo7jsri
vue-tsc: 0.34.11_typescript@4.6.4 vue-tsc: 0.34.15_typescript@4.6.4
packages: packages:
@ -1410,6 +1412,37 @@ packages:
'@floating-ui/core': 0.3.1 '@floating-ui/core': 0.3.1
dev: true dev: true
/@halo-dev/admin-api/1.0.0:
resolution: {integrity: sha512-DkuNK91Let+jPLx9YclhaU0XWKMA96LJNzGtYUq3e5VGuvPYqPY8AJKfQ8DNLA/3gmkF2b20nUCSDsZRz/ZObQ==}
engines: {node: '>=12'}
dependencies:
'@halo-dev/rest-api-client': 1.0.0
tslib: 2.3.1
transitivePeerDependencies:
- debug
dev: false
/@halo-dev/logger/1.0.0:
resolution: {integrity: sha512-i/bD4GlumEtaJ2Z8o1XutgnLCV8Xa02kQvgjCn8cVxphG4BBDES1JN3TNlmzuGHBowzFwbaC9Qu4O95qGLvkOw==}
engines: {node: '>=12.0.0'}
dependencies:
tslib: 2.3.1
dev: false
/@halo-dev/rest-api-client/1.0.0:
resolution: {integrity: sha512-6zD57CiKWtSthpfAUgkyQfDG8Zck/23Z1r6UjrJf8h2M7/Up/KWNsaYNmsaK/7BvR4TLY9vRQst+0JNAWzMwaA==}
engines: {node: '>=12'}
dependencies:
'@halo-dev/logger': 1.0.0
axios: 0.24.0
form-data: 4.0.0
js-base64: 3.7.2
qs: 6.10.3
tslib: 2.3.1
transitivePeerDependencies:
- debug
dev: false
/@hapi/hoek/9.2.1: /@hapi/hoek/9.2.1:
resolution: {integrity: sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==} resolution: {integrity: sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==}
dev: true dev: true
@ -1420,11 +1453,11 @@ packages:
'@hapi/hoek': 9.2.1 '@hapi/hoek': 9.2.1
dev: true dev: true
/@histoire/controls/0.4.5_vue@3.2.33: /@histoire/controls/0.4.6_vue@3.2.33:
resolution: {integrity: sha512-hicOfvIYIN+Ad8vk2/5qHCUthVXv/xqWSBZkS7x0II3PV7KMrAl0UOcxyMFf4AVKSMwmM1DtClkOMGXKQ/jxjw==} resolution: {integrity: sha512-Wdd2dGIs8a6+T+G3ufOecuo4oMSF4zgVaMtAMJQlWDsgmeIULKnzXA2khQgRAL07YXTPlCpdfGbnSl2LWc5GeQ==}
dependencies: dependencies:
'@iconify/vue': 3.2.1_vue@3.2.33 '@iconify/vue': 3.2.1_vue@3.2.33
'@vueuse/core': 8.4.2_vue@3.2.33 '@vueuse/core': 8.5.0_vue@3.2.33
floating-vue: 2.0.0-beta.16_vue@3.2.33 floating-vue: 2.0.0-beta.16_vue@3.2.33
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
@ -1731,7 +1764,7 @@ packages:
/@types/concat-stream/1.6.1: /@types/concat-stream/1.6.1:
resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==}
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
dev: true dev: true
/@types/estree/0.0.39: /@types/estree/0.0.39:
@ -1741,7 +1774,7 @@ packages:
/@types/form-data/0.0.33: /@types/form-data/0.0.33:
resolution: {integrity: sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=} resolution: {integrity: sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=}
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
dev: true dev: true
/@types/istanbul-lib-coverage/2.0.4: /@types/istanbul-lib-coverage/2.0.4:
@ -1751,7 +1784,7 @@ packages:
/@types/jsdom/16.2.14: /@types/jsdom/16.2.14:
resolution: {integrity: sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==} resolution: {integrity: sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==}
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
'@types/parse5': 6.0.3 '@types/parse5': 6.0.3
'@types/tough-cookie': 4.0.1 '@types/tough-cookie': 4.0.1
dev: true dev: true
@ -1787,8 +1820,8 @@ packages:
resolution: {integrity: sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==} resolution: {integrity: sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==}
dev: true dev: true
/@types/node/17.0.31: /@types/node/17.0.34:
resolution: {integrity: sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==} resolution: {integrity: sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA==}
dev: true dev: true
/@types/node/8.10.66: /@types/node/8.10.66:
@ -1806,7 +1839,7 @@ packages:
/@types/resolve/1.17.1: /@types/resolve/1.17.1:
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
dev: true dev: true
/@types/sinonjs__fake-timers/8.1.1: /@types/sinonjs__fake-timers/8.1.1:
@ -1829,7 +1862,7 @@ packages:
resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==}
requiresBuild: true requiresBuild: true
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
dev: true dev: true
optional: true optional: true
@ -1973,49 +2006,49 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@vitejs/plugin-vue/2.3.2_vite@2.9.8+vue@3.2.33: /@vitejs/plugin-vue/2.3.3_vite@2.9.9+vue@3.2.33:
resolution: {integrity: sha512-umyypfSHS4kQLdYAnJHhaASq7FRzNCdvcRoQ3uYGNk1/M4a+hXUd7ysN7BLhCrWH6uBokyCkFeUAaFDzSaaSrQ==} resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
peerDependencies: peerDependencies:
vite: ^2.5.10 vite: ^2.5.10
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
vue: 3.2.33 vue: 3.2.33
dev: true dev: true
/@vitest/ui/0.12.3: /@vitest/ui/0.12.6:
resolution: {integrity: sha512-S+PfmE8ha4FXRZ6x6qfZDFPXGdER6UXYU/9XWL4qOyAwP28+a0OcI0GW7kobqY2EDs3ABfltsEr3Cbs57f06NQ==} resolution: {integrity: sha512-3qHt0YWveaEmZEp7yr23Sn4nCWdDSAYjBLSoBHbnDXwpNhryLQz2KVR5XkJ74mQnOInXd+mh//GPMeLrJi7LJA==}
dependencies: dependencies:
sirv: 2.0.2 sirv: 2.0.2
dev: true dev: true
/@volar/code-gen/0.34.11: /@volar/code-gen/0.34.15:
resolution: {integrity: sha512-A4w+y+zP8qCDFyZ0KIm2oydRerp14a+IAYXro9wLt0LLvvqUGHEu/6y87uAj6TDqiX4OL/W8r1cEdhOJqFrBlA==} resolution: {integrity: sha512-g30glPo5N9bJocf1NBt802UcmqgZ3UtPst9b/Tangj+zR+K2RV5S2Un/suR6ZRiETXtg3nmrUcCgsTSJ6PC29A==}
dependencies: dependencies:
'@volar/source-map': 0.34.11 '@volar/source-map': 0.34.15
dev: true dev: true
/@volar/source-map/0.34.11: /@volar/source-map/0.34.15:
resolution: {integrity: sha512-ZsNZqFPUDDL1y6hK0ok7EriFb3CnCeapTLQrziTAbi3yOhcE4yM4G59XtRzc1i9EB+RXscm9a6Q6TgzD5KvoeA==} resolution: {integrity: sha512-Y3sENK/kqsgD7Vtve6gq6/Dor6JuoJWR+s9iwHcHTcA4VDkJnJRGHcvP8S3SVBsWl7T9qtlnvH3WCbFj7WlXrw==}
dev: true dev: true
/@volar/vue-code-gen/0.34.11: /@volar/vue-code-gen/0.34.15:
resolution: {integrity: sha512-r/tnLd1eyy/PI0fBUYU7hKXkCyHb0JqBidTiADrazzkYMraRcwL6JNLOj/D7Pk75W0ObzlMUfHJdrAuxKvAHRg==} resolution: {integrity: sha512-GglGsHxPPb7mW2v//5MUrkzxAO68YEIL5bRwpZD0Cp9np34keQdd1SHB5DXdoyU38cnfHJWjBlqCYpTnz2CR/w==}
dependencies: dependencies:
'@volar/code-gen': 0.34.11 '@volar/code-gen': 0.34.15
'@volar/source-map': 0.34.11 '@volar/source-map': 0.34.15
'@vue/compiler-core': 3.2.33 '@vue/compiler-core': 3.2.33
'@vue/compiler-dom': 3.2.33 '@vue/compiler-dom': 3.2.33
'@vue/shared': 3.2.33 '@vue/shared': 3.2.33
dev: true dev: true
/@volar/vue-typescript/0.34.11: /@volar/vue-typescript/0.34.15:
resolution: {integrity: sha512-pZkIeCPIjRRc/Oj9uxyOk6UvE43ecD71B/CSbmtiMU9sqrSwpP8cdDr/B/cqm1jwebkChTaa1gLodNHS8BOLuw==} resolution: {integrity: sha512-7jwhYl1NQB0uYgTO74x+OBSD4SPF7bI3m1KFQ98Wt/NOTXr57YcUyOkDBImcTKRLX3PHG9ex6OfT7u3jiZ2Zzg==}
dependencies: dependencies:
'@volar/code-gen': 0.34.11 '@volar/code-gen': 0.34.15
'@volar/source-map': 0.34.11 '@volar/source-map': 0.34.15
'@volar/vue-code-gen': 0.34.11 '@volar/vue-code-gen': 0.34.15
'@vue/compiler-sfc': 3.2.33 '@vue/compiler-sfc': 3.2.33
'@vue/reactivity': 3.2.33 '@vue/reactivity': 3.2.33
dev: true dev: true
@ -2158,7 +2191,7 @@ packages:
vue: 3.2.33 vue: 3.2.33
dev: true dev: true
/@vue/tsconfig/0.1.3_@types+node@17.0.31: /@vue/tsconfig/0.1.3_@types+node@17.0.34:
resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==}
peerDependencies: peerDependencies:
'@types/node': '*' '@types/node': '*'
@ -2166,11 +2199,11 @@ packages:
'@types/node': '@types/node':
optional: true optional: true
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
dev: true dev: true
/@vueuse/core/8.4.2_vue@3.2.33: /@vueuse/core/8.5.0_vue@3.2.33:
resolution: {integrity: sha512-dUVU96lii1ZdWoNJXauQNt+4QrHz1DKbuW+y6pDR2N10q7rGZJMDU7pQeMcC2XeosX7kMODfaBuqsF03NozzLg==} resolution: {integrity: sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw==}
peerDependencies: peerDependencies:
'@vue/composition-api': ^1.1.0 '@vue/composition-api': ^1.1.0
vue: ^2.6.0 || ^3.2.0 vue: ^2.6.0 || ^3.2.0
@ -2180,16 +2213,16 @@ packages:
vue: vue:
optional: true optional: true
dependencies: dependencies:
'@vueuse/metadata': 8.4.2 '@vueuse/metadata': 8.5.0
'@vueuse/shared': 8.4.2_vue@3.2.33 '@vueuse/shared': 8.5.0_vue@3.2.33
vue: 3.2.33 vue: 3.2.33
vue-demi: 0.12.1_vue@3.2.33 vue-demi: 0.12.1_vue@3.2.33
/@vueuse/metadata/8.4.2: /@vueuse/metadata/8.5.0:
resolution: {integrity: sha512-2BIj++7P0/I5dfMsEe8q7Kw0HqVAjVcyNOd9+G22/ILUC9TVLTeYOuJ1kwa1Gpr+0LWKHc6GqHiLWNL33+exoQ==} resolution: {integrity: sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g==}
/@vueuse/shared/8.4.2_vue@3.2.33: /@vueuse/shared/8.5.0_vue@3.2.33:
resolution: {integrity: sha512-hILXMEjL8YQhj1LHN/HZ49UThyfk8irTjhele2nW+L3N55ElFUBGB/f4w0rg8EW+/suhqv7kJJPTZzvHCqxlIw==} resolution: {integrity: sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g==}
peerDependencies: peerDependencies:
'@vue/composition-api': ^1.1.0 '@vue/composition-api': ^1.1.0
vue: ^2.6.0 || ^3.2.0 vue: ^2.6.0 || ^3.2.0
@ -2358,7 +2391,7 @@ packages:
dev: true dev: true
/asap/2.0.6: /asap/2.0.6:
resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
dev: true dev: true
/asn1/0.2.6: /asn1/0.2.6:
@ -2387,7 +2420,6 @@ packages:
/asynckit/0.4.0: /asynckit/0.4.0:
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
dev: true
/at-least-node/1.0.0: /at-least-node/1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
@ -2421,11 +2453,19 @@ packages:
/axios/0.21.4_debug@4.3.2: /axios/0.21.4_debug@4.3.2:
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
dependencies: dependencies:
follow-redirects: 1.14.9_debug@4.3.2 follow-redirects: 1.14.9
transitivePeerDependencies: transitivePeerDependencies:
- debug - debug
dev: true dev: true
/axios/0.24.0:
resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==}
dependencies:
follow-redirects: 1.14.9
transitivePeerDependencies:
- debug
dev: false
/babel-plugin-dynamic-import-node/2.3.3: /babel-plugin-dynamic-import-node/2.3.3:
resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==}
dependencies: dependencies:
@ -2571,8 +2611,8 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/c8/7.11.2: /c8/7.11.3:
resolution: {integrity: sha512-6ahJSrhS6TqSghHm+HnWt/8Y2+z0hM/FQyB1ybKhAR30+NYL9CTQ1uwHxuWw6U7BHlHv6wvhgOrH81I+lfCkxg==} resolution: {integrity: sha512-6YBmsaNmqRm9OS3ZbIiL2EZgi1+Xc4O24jL3vMYGE6idixYuGdy76rIfIdltSKDj9DpLNrcXSonUTR1miBD0wA==}
engines: {node: '>=10.12.0'} engines: {node: '>=10.12.0'}
hasBin: true hasBin: true
dependencies: dependencies:
@ -2600,7 +2640,6 @@ packages:
dependencies: dependencies:
function-bind: 1.1.1 function-bind: 1.1.1
get-intrinsic: 1.1.1 get-intrinsic: 1.1.1
dev: true
/callsites/3.1.0: /callsites/3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
@ -2665,7 +2704,7 @@ packages:
dev: true dev: true
/check-error/1.0.2: /check-error/1.0.2:
resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
dev: true dev: true
/check-more-types/2.24.0: /check-more-types/2.24.0:
@ -2777,7 +2816,6 @@ packages:
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dependencies: dependencies:
delayed-stream: 1.0.0 delayed-stream: 1.0.0
dev: true
/commander/2.20.3: /commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
@ -3063,7 +3101,6 @@ packages:
/delayed-stream/1.0.0: /delayed-stream/1.0.0:
resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
dev: true
/detective/5.2.0: /detective/5.2.0:
resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==} resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==}
@ -3826,7 +3863,7 @@ packages:
vue-resize: 2.0.0-alpha.1_vue@3.2.33 vue-resize: 2.0.0-alpha.1_vue@3.2.33
dev: true dev: true
/follow-redirects/1.14.9_debug@4.3.2: /follow-redirects/1.14.9:
resolution: {integrity: sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==} resolution: {integrity: sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
peerDependencies: peerDependencies:
@ -3834,9 +3871,6 @@ packages:
peerDependenciesMeta: peerDependenciesMeta:
debug: debug:
optional: true optional: true
dependencies:
debug: 4.3.2
dev: true
/foreground-child/2.0.0: /foreground-child/2.0.0:
resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
@ -3866,7 +3900,6 @@ packages:
asynckit: 0.4.0 asynckit: 0.4.0
combined-stream: 1.0.8 combined-stream: 1.0.8
mime-types: 2.1.34 mime-types: 2.1.34
dev: true
/fraction.js/4.2.0: /fraction.js/4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
@ -3918,7 +3951,6 @@ packages:
/function-bind/1.1.1: /function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
/function.prototype.name/1.1.5: /function.prototype.name/1.1.5:
resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
@ -3958,7 +3990,6 @@ packages:
function-bind: 1.1.1 function-bind: 1.1.1
has: 1.0.3 has: 1.0.3
has-symbols: 1.0.3 has-symbols: 1.0.3
dev: true
/get-own-enumerable-property-symbols/3.0.2: /get-own-enumerable-property-symbols/3.0.2:
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
@ -4109,7 +4140,6 @@ packages:
/has-symbols/1.0.3: /has-symbols/1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dev: true
/has-tostringtag/1.0.0: /has-tostringtag/1.0.0:
resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
@ -4123,7 +4153,6 @@ packages:
engines: {node: '>= 0.4.0'} engines: {node: '>= 0.4.0'}
dependencies: dependencies:
function-bind: 1.1.1 function-bind: 1.1.1
dev: true
/hash-sum/2.0.0: /hash-sum/2.0.0:
resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
@ -4134,16 +4163,16 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/histoire/0.4.5_vmi6nhjwm35b7so4eamehfslgu: /histoire/0.4.6_gfrfffqr3ji5b3kcyxmqf57s3m:
resolution: {integrity: sha512-JaCuoNjlygcUHKcTdzbDb7lmyKRvnKitSFi6IsSmLlRM0dztEX9U8qBAr3dKAjAJNieiJN5PMfoI4UsrAV0nVQ==} resolution: {integrity: sha512-TYghH+wvepQp6RgMag+yyEi6G+gaZQq45w7R8aaA++dxJcUhRIlgtibz4nP9luKO5F8E91J+85Ssuym8FjfH1w==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
vite: ^2.9.0 vite: ^2.9.0
dependencies: dependencies:
'@histoire/controls': 0.4.5_vue@3.2.33 '@histoire/controls': 0.4.6_vue@3.2.33
'@iconify/vue': 3.2.1_vue@3.2.33 '@iconify/vue': 3.2.1_vue@3.2.33
'@types/markdown-it': 12.2.3 '@types/markdown-it': 12.2.3
'@vueuse/core': 8.4.2_vue@3.2.33 '@vueuse/core': 8.5.0_vue@3.2.33
birpc: 0.1.1 birpc: 0.1.1
case: 1.6.3 case: 1.6.3
chokidar: 3.5.3 chokidar: 3.5.3
@ -4168,7 +4197,7 @@ packages:
shiki: 0.10.1 shiki: 0.10.1
sirv: 2.0.2 sirv: 2.0.2
tinypool: 0.1.3 tinypool: 0.1.3
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
vite-node: 0.12.1_sass@1.51.0 vite-node: 0.12.1_sass@1.51.0
vue: 3.2.33 vue: 3.2.33
vue-router: 4.0.15_vue@3.2.33 vue-router: 4.0.15_vue@3.2.33
@ -4540,7 +4569,7 @@ packages:
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
dependencies: dependencies:
'@types/node': 17.0.31 '@types/node': 17.0.34
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 7.2.0 supports-color: 7.2.0
dev: true dev: true
@ -4559,6 +4588,10 @@ packages:
'@sideway/pinpoint': 2.0.0 '@sideway/pinpoint': 2.0.0
dev: true dev: true
/js-base64/3.7.2:
resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==}
dev: false
/js-tokens/4.0.0: /js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: true dev: true
@ -4892,14 +4925,12 @@ packages:
/mime-db/1.51.0: /mime-db/1.51.0:
resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
dev: true
/mime-types/2.1.34: /mime-types/2.1.34:
resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==} resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
dependencies: dependencies:
mime-db: 1.51.0 mime-db: 1.51.0
dev: true
/mimic-fn/2.1.0: /mimic-fn/2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
@ -5029,7 +5060,6 @@ packages:
/object-inspect/1.12.0: /object-inspect/1.12.0:
resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==}
dev: true
/object-keys/1.1.1: /object-keys/1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
@ -5351,6 +5381,12 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/qs/6.10.3:
resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==}
engines: {node: '>=0.6'}
dependencies:
side-channel: 1.0.4
/qs/6.5.3: /qs/6.5.3:
resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
engines: {node: '>=0.6'} engines: {node: '>=0.6'}
@ -5527,14 +5563,6 @@ packages:
terser: 5.13.1 terser: 5.13.1
dev: true dev: true
/rollup/2.69.0:
resolution: {integrity: sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: true
/rollup/2.72.1: /rollup/2.72.1:
resolution: {integrity: sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==} resolution: {integrity: sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
@ -5647,7 +5675,6 @@ packages:
call-bind: 1.0.2 call-bind: 1.0.2
get-intrinsic: 1.1.1 get-intrinsic: 1.1.1
object-inspect: 1.12.0 object-inspect: 1.12.0
dev: true
/signal-exit/3.0.7: /signal-exit/3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@ -5993,7 +6020,7 @@ packages:
http-basic: 8.1.3 http-basic: 8.1.3
http-response-object: 3.0.2 http-response-object: 3.0.2
promise: 8.1.0 promise: 8.1.0
qs: 6.5.3 qs: 6.10.3
dev: true dev: true
/throttleit/1.0.0: /throttleit/1.0.0:
@ -6094,7 +6121,6 @@ packages:
/tslib/2.3.1: /tslib/2.3.1:
resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
dev: true
/tsutils/3.21.0_typescript@4.6.4: /tsutils/3.21.0_typescript@4.6.4:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
@ -6218,7 +6244,7 @@ packages:
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dev: true dev: true
/unplugin-icons/0.14.3_vite@2.9.8: /unplugin-icons/0.14.3_vite@2.9.9:
resolution: {integrity: sha512-PyyNMACpZ/EAiG3B6K1wPGZ151VGdlHIEx8/utgP546yVmPpV/xC1k1V2eEebf71fGm3WD6gzPrERNsbMgIVgg==} resolution: {integrity: sha512-PyyNMACpZ/EAiG3B6K1wPGZ151VGdlHIEx8/utgP546yVmPpV/xC1k1V2eEebf71fGm3WD6gzPrERNsbMgIVgg==}
peerDependencies: peerDependencies:
'@svgr/core': '>=5.5.0' '@svgr/core': '>=5.5.0'
@ -6241,7 +6267,7 @@ packages:
debug: 4.3.4 debug: 4.3.4
kolorist: 1.5.1 kolorist: 1.5.1
local-pkg: 0.4.1 local-pkg: 0.4.1
unplugin: 0.6.2_vite@2.9.8 unplugin: 0.6.2_vite@2.9.9
transitivePeerDependencies: transitivePeerDependencies:
- esbuild - esbuild
- rollup - rollup
@ -6250,7 +6276,7 @@ packages:
- webpack - webpack
dev: true dev: true
/unplugin/0.6.2_vite@2.9.8: /unplugin/0.6.2_vite@2.9.9:
resolution: {integrity: sha512-+QONc2uBFQbeo4x5mlJHjTKjR6pmuchMpGVrWhwdGFFMb4ttFZ4E9KqhOOrNcm3Q8NNyB1vJ4s5e36IZC7UWYw==} resolution: {integrity: sha512-+QONc2uBFQbeo4x5mlJHjTKjR6pmuchMpGVrWhwdGFFMb4ttFZ4E9KqhOOrNcm3Q8NNyB1vJ4s5e36IZC7UWYw==}
peerDependencies: peerDependencies:
esbuild: '>=0.13' esbuild: '>=0.13'
@ -6268,7 +6294,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
chokidar: 3.5.3 chokidar: 3.5.3
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
webpack-sources: 3.2.3 webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.3 webpack-virtual-modules: 0.4.3
dev: true dev: true
@ -6346,14 +6372,14 @@ packages:
kolorist: 1.5.1 kolorist: 1.5.1
mlly: 0.5.2 mlly: 0.5.2
pathe: 0.2.0 pathe: 0.2.0
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
transitivePeerDependencies: transitivePeerDependencies:
- less - less
- sass - sass
- stylus - stylus
dev: true dev: true
/vite-plugin-dts/1.1.1_vite@2.9.8: /vite-plugin-dts/1.1.1_vite@2.9.9:
resolution: {integrity: sha512-2aRLBppGCDhtrj+7uV3/Muvn4Pa35CQpZ5Js+z8HQRsTM1YMuvEkSGGQwHkSQdDSyaFv6O1zBqN0ln6hgqHvyw==} resolution: {integrity: sha512-2aRLBppGCDhtrj+7uV3/Muvn4Pa35CQpZ5Js+z8HQRsTM1YMuvEkSGGQwHkSQdDSyaFv6O1zBqN0ln6hgqHvyw==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
peerDependencies: peerDependencies:
@ -6366,12 +6392,12 @@ packages:
fast-glob: 3.2.11 fast-glob: 3.2.11
fs-extra: 10.0.1 fs-extra: 10.0.1
ts-morph: 14.0.0 ts-morph: 14.0.0
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/vite-plugin-pwa/0.12.0_vite@2.9.8: /vite-plugin-pwa/0.12.0_vite@2.9.9:
resolution: {integrity: sha512-KYD+cnS5ExLF3T28NkfzBLZ53ehHlp+qMhHGFNh0zlVGpFHrJkL2v9wd4AMi7ZkBTffgeNatIFiv8rhCsMSxBQ==} resolution: {integrity: sha512-KYD+cnS5ExLF3T28NkfzBLZ53ehHlp+qMhHGFNh0zlVGpFHrJkL2v9wd4AMi7ZkBTffgeNatIFiv8rhCsMSxBQ==}
peerDependencies: peerDependencies:
vite: ^2.0.0 vite: ^2.0.0
@ -6380,7 +6406,7 @@ packages:
fast-glob: 3.2.11 fast-glob: 3.2.11
pretty-bytes: 6.0.0 pretty-bytes: 6.0.0
rollup: 2.72.1 rollup: 2.72.1
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
workbox-build: 6.5.3 workbox-build: 6.5.3
workbox-window: 6.5.3 workbox-window: 6.5.3
transitivePeerDependencies: transitivePeerDependencies:
@ -6388,8 +6414,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/vite/2.9.8_sass@1.51.0: /vite/2.9.9_sass@1.51.0:
resolution: {integrity: sha512-zsBGwn5UT3YS0NLSJ7hnR54+vUKfgzMUh/Z9CxF1YKEBVIe213+63jrFLmZphgGI5zXwQCSmqIdbPuE8NJywPw==} resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==}
engines: {node: '>=12.2.0'} engines: {node: '>=12.2.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -6407,14 +6433,14 @@ packages:
esbuild: 0.14.29 esbuild: 0.14.29
postcss: 8.4.13 postcss: 8.4.13
resolve: 1.22.0 resolve: 1.22.0
rollup: 2.69.0 rollup: 2.72.1
sass: 1.51.0 sass: 1.51.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true
/vitest/0.12.3_ztzjud4kquuh6gaaxlqfogd3mq: /vitest/0.12.6_pfh5lnme5kp6b474lb3mo7jsri:
resolution: {integrity: sha512-Dc4uJAcnUampdJ6+C8IasrmL+Px+oDhS9gxeHlL9uwUzoM0ae2WydAK9UF2THxHszfZogLGT37atQwOkj1Lqvg==} resolution: {integrity: sha512-YWbCTv0XKBuBw5YtuW/iufuguoi8QhGpYyi2g57Oo7akpscMkkWTAaZGgY0ux1oJJtO/pc/8GFt0EF32WFBUUQ==}
engines: {node: '>=v14.16.0'} engines: {node: '>=v14.16.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -6434,14 +6460,14 @@ packages:
dependencies: dependencies:
'@types/chai': 4.3.1 '@types/chai': 4.3.1
'@types/chai-subset': 1.3.3 '@types/chai-subset': 1.3.3
'@vitest/ui': 0.12.3 '@vitest/ui': 0.12.6
c8: 7.11.2 c8: 7.11.3
chai: 4.3.6 chai: 4.3.6
jsdom: 19.0.0 jsdom: 19.0.0
local-pkg: 0.4.1 local-pkg: 0.4.1
tinypool: 0.1.3 tinypool: 0.1.3
tinyspy: 0.3.2 tinyspy: 0.3.2
vite: 2.9.8_sass@1.51.0 vite: 2.9.9_sass@1.51.0
transitivePeerDependencies: transitivePeerDependencies:
- less - less
- sass - sass
@ -6504,13 +6530,13 @@ packages:
'@vue/devtools-api': 6.1.4 '@vue/devtools-api': 6.1.4
vue: 3.2.33 vue: 3.2.33
/vue-tsc/0.34.11_typescript@4.6.4: /vue-tsc/0.34.15_typescript@4.6.4:
resolution: {integrity: sha512-5NM4oR8U/c3mTlJ9aNXbXkAGT2bhq+FJpCgZDqOKPpCjW5QDx1BXPC+nrBXNMwg8TRL6pK4fl+x+hrK97Siq/Q==} resolution: {integrity: sha512-xRNaOpg/UCHnRcz9vOdbIjB7uCQ0mifHpqNaejAho7em4WLOzNdJx4R9HMJrqWek44keg7AblIiwM+86QfXx9g==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
dependencies: dependencies:
'@volar/vue-typescript': 0.34.11 '@volar/vue-typescript': 0.34.15
typescript: 4.6.4 typescript: 4.6.4
dev: true dev: true

View File

@ -79,7 +79,8 @@ function handleClose() {
> >
<div class="modal-header"> <div class="modal-header">
<div class="modal-header-title">{{ title }}</div> <div class="modal-header-title">{{ title }}</div>
<div class="modal-header-actions"> <div class="modal-header-actions flex flex-row">
<slot name="actions"></slot>
<div class="modal-header-action" @click="handleClose()"> <div class="modal-header-action" @click="handleClose()">
<IconClose /> <IconClose />
</div> </div>

View File

@ -1,6 +1,8 @@
// @ts-ignore // @ts-ignore
import IconDashboard from "~icons/ri/dashboard-3-line"; import IconDashboard from "~icons/ri/dashboard-3-line";
// @ts-ignore // @ts-ignore
import IconArrowLeft from "~icons/ri/arrow-left-s-line";
// @ts-ignore
import IconArrowRight from "~icons/ri/arrow-right-s-line"; import IconArrowRight from "~icons/ri/arrow-right-s-line";
// @ts-ignore // @ts-ignore
import IconBookRead from "~icons/ri/book-read-line"; import IconBookRead from "~icons/ri/book-read-line";
@ -41,6 +43,7 @@ import IconDeleteBin from "~icons/ri/delete-bin-2-line";
export { export {
IconDashboard, IconDashboard,
IconArrowLeft,
IconArrowRight, IconArrowRight,
IconBookRead, IconBookRead,
IconPages, IconPages,

View File

@ -5,12 +5,22 @@ import { VSpace } from "@/components/base/space";
import { VTag } from "@/components/base/tag"; import { VTag } from "@/components/base/tag";
import { VInput } from "@/components/base/input"; import { VInput } from "@/components/base/input";
import { VPageHeader } from "@/components/base/header"; import { VPageHeader } from "@/components/base/header";
import { IconBookRead, IconSettings } from "@/core/icons"; import { VModal } from "@/components/base/modal";
import { VTabItem, VTabs } from "@/components/base/tabs";
import { VTextarea } from "@/components/base/textarea";
import {
IconArrowLeft,
IconArrowRight,
IconBookRead,
IconSettings,
} from "@/core/icons";
import { posts } from "./posts-mock"; import { posts } from "./posts-mock";
import { ref } from "vue"; import { ref } from "vue";
import type { Post } from "@halo-dev/admin-api";
const postsRef = ref( const postsRef = ref(
posts.map((item) => { // eslint-disable-next-line
posts.map((item: any) => {
return { return {
...item, ...item,
checked: false, checked: false,
@ -19,21 +29,268 @@ const postsRef = ref(
); );
const checkAll = ref(false); const checkAll = ref(false);
const postSettings = ref(false);
const settingActiveId = ref("general");
// eslint-disable-next-line
const selected = ref<Post | Record<string, any>>({});
const saving = ref(false);
const handleCheckAll = () => { const handleCheckAll = () => {
postsRef.value.forEach((item) => { postsRef.value.forEach((item) => {
item.checked = checkAll.value; item.checked = checkAll.value;
}); });
}; };
// eslint-disable-next-line
const handleSelect = (post: any) => {
selected.value = post;
postSettings.value = true;
};
const handleSelectPrevious = () => {
const currentIndex = posts.findIndex((post) => post.id === selected.value.id);
if (currentIndex > 0) {
selected.value = posts[currentIndex - 1];
}
};
const handleSelectNext = () => {
const currentIndex = posts.findIndex((post) => post.id === selected.value.id);
if (currentIndex < posts.length - 1) {
selected.value = posts[currentIndex + 1];
}
};
handleCheckAll(); handleCheckAll();
</script> </script>
<template> <template>
<VModal v-model:visible="postSettings" :width="680" title="文章设置">
<template #actions>
<div class="modal-header-action" @click="handleSelectPrevious">
<IconArrowLeft />
</div>
<div class="modal-header-action" @click="handleSelectNext">
<IconArrowRight />
</div>
</template>
<VTabs v-model:active-id="settingActiveId" type="outline">
<VTabItem id="general" label="常规">
<form>
<div class="divide-y-0 sm:divide-y sm:divide-gray-200 space-y-6">
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
标题
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput v-model="selected.title"></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
别名
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput v-model="selected.slug"></VInput>
</div>
</div>
<div
class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-center sm:pt-5"
>
<label class="block text-sm font-medium text-gray-700">
分类目录
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
标签
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
摘要
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VTextarea v-model="selected.summary"></VTextarea>
</div>
</div>
</div>
</form>
</VTabItem>
<VTabItem id="advanced" label="高级">
<form>
<div class="divide-y-0 sm:divide-y sm:divide-gray-200 space-y-6">
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
禁止评论
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput v-model="selected.disallowComment"></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
是否置顶
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput v-model="selected.topPriority"></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
发表时间
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
自定义模板
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput v-model="selected.template"></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
访问密码
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VInput v-model="selected.password"></VInput>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
封面图
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VSpace align="start" class="w-full" direction="column">
<div class="w-full sm:w-1/2">
<div
class="block aspect-w-10 aspect-h-7 bg-gray-100 overflow-hidden cursor-pointer rounded"
>
<img
:src="selected.thumbnail"
alt=""
class="object-cover pointer-events-none"
/>
</div>
</div>
<VInput v-model="selected.thumbnail"></VInput>
</VSpace>
</div>
</div>
</div>
</form>
</VTabItem>
<VTabItem id="seo" label="SEO">
<form>
<div class="divide-y-0 sm:divide-y sm:divide-gray-200 space-y-6">
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
自定义关键词
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VTextarea
v-model="selected.metaKeywords"
:rows="5"
></VTextarea>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
自定义描述
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VTextarea
v-model="selected.metaDescription"
:rows="5"
></VTextarea>
</div>
</div>
</div>
</form>
</VTabItem>
<VTabItem id="metas" label="元数据"></VTabItem>
<VTabItem id="inject-code" label="代码注入">
<form>
<div class="divide-y-0 sm:divide-y sm:divide-gray-200 space-y-6">
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
CSS
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VTextarea :rows="5"></VTextarea>
</div>
</div>
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:pt-5">
<label
class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2"
>
JavaScript
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
<VTextarea :rows="5"></VTextarea>
</div>
</div>
</div>
</form>
</VTabItem>
</VTabs>
<template #footer>
<VSpace>
<VButton :loading="saving" type="secondary" @click="saving = !saving">
保存
</VButton>
<VButton type="default">取消</VButton>
</VSpace>
</template>
</VModal>
<VPageHeader title="文章"> <VPageHeader title="文章">
<template #icon> <template #icon>
<IconBookRead class="self-center mr-2" /> <IconBookRead class="self-center mr-2" />
</template> </template>
<template #actions> <template #actions>
<VButton type="secondary">发布</VButton> <VButton :route="{ name: 'PostEditor' }" type="secondary">发布</VButton>
</template> </template>
</VPageHeader> </VPageHeader>
@ -57,6 +314,10 @@ handleCheckAll();
<ul class="divide-y divide-gray-100 box-border w-full h-full" role="list"> <ul class="divide-y divide-gray-100 box-border w-full h-full" role="list">
<li v-for="(post, index) in postsRef" :key="index"> <li v-for="(post, index) in postsRef" :key="index">
<div <div
:class="{
'border-l-2 border-themeable-primary bg-gray-100':
selected.id === post.id,
}"
class="px-4 py-3 block hover:bg-gray-50 cursor-pointer transition-all" class="px-4 py-3 block hover:bg-gray-50 cursor-pointer transition-all"
> >
<div class="flex flex-row items-center relative"> <div class="flex flex-row items-center relative">
@ -95,8 +356,8 @@ handleCheckAll();
<time class="text-sm text-gray-500" datetime="2020-01-07"> <time class="text-sm text-gray-500" datetime="2020-01-07">
2020-01-07 2020-01-07
</time> </time>
<span> <span class="cursor-pointer">
<IconSettings /> <IconSettings @click="handleSelect(post)" />
</span> </span>
</div> </div>
</div> </div>

View File

@ -1,4 +1,5 @@
export const posts = [ // eslint-disable-next-line
export const posts: any[] = [
{ {
id: 514, id: 514,
title: "Halo 1.5.3 发布了", title: "Halo 1.5.3 发布了",
@ -8,8 +9,8 @@ export const posts = [
updateTime: 1652087983741, updateTime: 1652087983741,
createTime: 1652087543478, createTime: 1652087543478,
editTime: 1652087983738, editTime: 1652087983738,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-153-released.html", fullPath: "https://halo.run/archives/halo-153-released.html",
summary: summary:
"Improvements优化邮件发送异常信息处理。 halo-dev/halo#1860 @ntdgy @superdgy优化静态存储的资源映射处理逻辑支持手动操作 .halo/static 目录后,在后台通过刷新按钮更新资源映射。 halo-dev/halo#1907 @Yhcrown @muy", "Improvements优化邮件发送异常信息处理。 halo-dev/halo#1860 @ntdgy @superdgy优化静态存储的资源映射处理逻辑支持手动操作 .halo/static 目录后,在后台通过刷新按钮更新资源映射。 halo-dev/halo#1907 @Yhcrown @muy",
@ -32,13 +33,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -50,8 +51,8 @@ export const posts = [
updateTime: 1649582521222, updateTime: 1649582521222,
createTime: 1649580837197, createTime: 1649580837197,
editTime: 1649582521202, editTime: 1649582521202,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-152-released.html", fullPath: "https://halo.run/archives/halo-152-released.html",
summary: summary:
"Improvements保存文章的时候不再保存内容到 posts 表originalContent 和 formatContent 已经是废弃字段。 halo-dev/halo#1797 @guqing优化 Markdown 文档导入的 FrontMatter 的解析规则。 halo-dev/ha", "Improvements保存文章的时候不再保存内容到 posts 表originalContent 和 formatContent 已经是废弃字段。 halo-dev/halo#1797 @guqing优化 Markdown 文档导入的 FrontMatter 的解析规则。 halo-dev/ha",
@ -74,13 +75,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -92,8 +93,8 @@ export const posts = [
updateTime: 1648634917957, updateTime: 1648634917957,
createTime: 1648634014575, createTime: 1648634014575,
editTime: 1648634917948, editTime: 1648634917948,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-151-released.html", fullPath: "https://halo.run/archives/halo-151-released.html",
summary: summary:
"Bug Fixes修复文章加密和分类加密功能的逻辑问题。 halo-dev/halo#1781 halo-dev/halo#1785 @guqing @qiany-sui修复文章和分类的链接带有中文时从密码页重定向到详情页面提示 404 的问题。 halo-dev/halo#1786 @guqing", "Bug Fixes修复文章加密和分类加密功能的逻辑问题。 halo-dev/halo#1781 halo-dev/halo#1785 @guqing @qiany-sui修复文章和分类的链接带有中文时从密码页重定向到详情页面提示 404 的问题。 halo-dev/halo#1786 @guqing",
@ -116,13 +117,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -134,8 +135,8 @@ export const posts = [
updateTime: 1648025027976, updateTime: 1648025027976,
createTime: 1648007074766, createTime: 1648007074766,
editTime: 1648025027971, editTime: 1648025027971,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-150-released.html", fullPath: "https://halo.run/archives/halo-150-released.html",
summary: summary:
"距离我们 2020 年 9 月 24 号发布 1.4.0 已经过去了 545 天了,期间虽然有一些版本更新,但大多数都是 patch 修复版本。终于,在今天正式发布 1.5.0 版本。其中带来了大量的优化更新,下面为大家简单介绍一些亮点功能,详细更新日志可在本文末尾查阅。版本亮点文章表拆分在此版本中", "距离我们 2020 年 9 月 24 号发布 1.4.0 已经过去了 545 天了,期间虽然有一些版本更新,但大多数都是 patch 修复版本。终于,在今天正式发布 1.5.0 版本。其中带来了大量的优化更新,下面为大家简单介绍一些亮点功能,详细更新日志可在本文末尾查阅。版本亮点文章表拆分在此版本中",
@ -158,13 +159,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -176,8 +177,8 @@ export const posts = [
updateTime: 1649680073984, updateTime: 1649680073984,
createTime: 1642992439970, createTime: 1642992439970,
editTime: 1649680073975, editTime: 1649680073975,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/butterfly.html", fullPath: "https://halo.run/archives/butterfly.html",
summary: summary:
"Butterfly 主题 Halo 移植版Butterfly 是Hexo社区hexo-theme-Butterfly 此次移植Halo由原版的 pug模板引擎 调整为 freemarker 保持灵活性的同时最大限度的移植了原版功能,希望大家喜欢 ❤️ \uD83C\uDF38 同时也要在此感谢原作者 Jerry 欢迎", "Butterfly 主题 Halo 移植版Butterfly 是Hexo社区hexo-theme-Butterfly 此次移植Halo由原版的 pug模板引擎 调整为 freemarker 保持灵活性的同时最大限度的移植了原版功能,希望大家喜欢 ❤️ \uD83C\uDF38 同时也要在此感谢原作者 Jerry 欢迎",
@ -237,7 +238,7 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1580904752816, createTime: 1580904752816,
fullPath: "https://halo.run/categories/themes.html", fullPath: "https://halo.run/categories/themes.html",
priority: 1, priority: 1,
@ -262,8 +263,8 @@ export const posts = [
updateTime: 1649678688968, updateTime: 1649678688968,
createTime: 1636638704064, createTime: 1636638704064,
editTime: 1649678688959, editTime: 1649678688959,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/joe20.html", fullPath: "https://halo.run/archives/joe20.html",
summary: summary:
" Joe 主题 Halo 移植版 Joe2.0 为 Typecho Themes Joe 主题的 Halo 版,由于 社区 之前有兄弟移植过,这次就叫 Joe2.0 吧,此次在原版主题上做了不少修改和适配,由原版的 php ", " Joe 主题 Halo 移植版 Joe2.0 为 Typecho Themes Joe 主题的 Halo 版,由于 社区 之前有兄弟移植过,这次就叫 Joe2.0 吧,此次在原版主题上做了不少修改和适配,由原版的 php ",
@ -323,7 +324,7 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1580904752816, createTime: 1580904752816,
fullPath: "https://halo.run/categories/themes.html", fullPath: "https://halo.run/categories/themes.html",
priority: 1, priority: 1,
@ -348,8 +349,8 @@ export const posts = [
updateTime: 1631798064866, updateTime: 1631798064866,
createTime: 1631798054886, createTime: 1631798054886,
editTime: 1631798064862, editTime: 1631798064862,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-1412-released.html", fullPath: "https://halo.run/archives/halo-1412-released.html",
summary: summary:
"FeaturesMinio 存储提供 Region 设置项。#1440 halo-dev/halo-admin#346Improvements后台菜单列表提供拖动按钮优化拖动排序的体验。halo-dev/halo-admin#350后台升级 CodeMirror 的版本降低最终构建体积。halo", "FeaturesMinio 存储提供 Region 设置项。#1440 halo-dev/halo-admin#346Improvements后台菜单列表提供拖动按钮优化拖动排序的体验。halo-dev/halo-admin#350后台升级 CodeMirror 的版本降低最终构建体积。halo",
@ -373,13 +374,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -391,8 +392,8 @@ export const posts = [
updateTime: 1626780018282, updateTime: 1626780018282,
createTime: 1626625488791, createTime: 1626625488791,
editTime: 1626780018280, editTime: 1626780018280,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-1410-released.html", fullPath: "https://halo.run/archives/halo-1410-released.html",
summary: summary:
"Features编辑器支持脚注语法。halo-dev/halo#1406 halo-dev/halo-admin#341Improvements优化文章字数计算。halo-dev/halo#1354Content Api 中的获取文章列表支持传入关键字和分类 id 筛选项。halo-dev/halo", "Features编辑器支持脚注语法。halo-dev/halo#1406 halo-dev/halo-admin#341Improvements优化文章字数计算。halo-dev/halo#1354Content Api 中的获取文章列表支持传入关键字和分类 id 筛选项。halo-dev/halo",
@ -416,13 +417,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -434,8 +435,8 @@ export const posts = [
updateTime: 1649679428953, updateTime: 1649679428953,
createTime: 1623470692679, createTime: 1623470692679,
editTime: 1649679428942, editTime: 1649679428942,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/mp-reflect.html", fullPath: "https://halo.run/archives/mp-reflect.html",
summary: summary:
"介绍Reflect Halo 是一个基于 Halo 后端的小程序项目,使用它可以非常便捷的搭建一个属于自己的博客小程序。主要特性符合大众审美的 UI 设计,我们拒绝使用一些花哨的界面或者动效,博客最重要的是阅读,我们力求打造更佳的阅读访问体验。同时我们执着于对细节的把控,力求不让强迫症患者感到不适。", "介绍Reflect Halo 是一个基于 Halo 后端的小程序项目,使用它可以非常便捷的搭建一个属于自己的博客小程序。主要特性符合大众审美的 UI 设计,我们拒绝使用一些花哨的界面或者动效,博客最重要的是阅读,我们力求打造更佳的阅读访问体验。同时我们执着于对细节的把控,力求不让强迫症患者感到不适。",
@ -458,7 +459,7 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1580904752816, createTime: 1580904752816,
fullPath: "https://halo.run/categories/themes.html", fullPath: "https://halo.run/categories/themes.html",
priority: 1, priority: 1,
@ -483,8 +484,8 @@ export const posts = [
updateTime: 1649679443407, updateTime: 1649679443407,
createTime: 1622203962900, createTime: 1622203962900,
editTime: 1649679443403, editTime: 1649679443403,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/theme-iwtwin.html", fullPath: "https://halo.run/archives/theme-iwtwin.html",
summary: summary:
"IwtwinA Simple Halo Themes 预览在线预览https://www.kuya123.com图片预览安装压缩包上传方式推荐下载最新发行版zip压缩包到本地进入博客后台-外观-主题-安装选择本地上传,将压缩包上传上去等待提示安装完成在线拉取方式进入博客后台-外观-主题-安装选择", "IwtwinA Simple Halo Themes 预览在线预览https://www.kuya123.com图片预览安装压缩包上传方式推荐下载最新发行版zip压缩包到本地进入博客后台-外观-主题-安装选择本地上传,将压缩包上传上去等待提示安装完成在线拉取方式进入博客后台-外观-主题-安装选择",
@ -544,7 +545,7 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1580904752816, createTime: 1580904752816,
fullPath: "https://halo.run/categories/themes.html", fullPath: "https://halo.run/categories/themes.html",
priority: 1, priority: 1,
@ -569,8 +570,8 @@ export const posts = [
updateTime: 1649580513991, updateTime: 1649580513991,
createTime: 1620562541772, createTime: 1620562541772,
editTime: 1649580513973, editTime: 1649580513973,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/tencent-cloudbase-halo.html", fullPath: "https://halo.run/archives/tencent-cloudbase-halo.html",
summary: summary:
"腾讯云·云开发简介云开发Tencent CloudBaseTCB是腾讯云提供的云原生一体化开发环境和工具平台为开发者提供高可用、自动弹性扩缩的后端云服务包含计算、存储、托管等 Serverless 化能力可用于云端一体化开发多种端应用小程序、公众号、Web 应用、Flutter 客户端", "腾讯云·云开发简介云开发Tencent CloudBaseTCB是腾讯云提供的云原生一体化开发环境和工具平台为开发者提供高可用、自动弹性扩缩的后端云服务包含计算、存储、托管等 Serverless 化能力可用于云端一体化开发多种端应用小程序、公众号、Web 应用、Flutter 客户端",
@ -594,13 +595,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -612,8 +613,8 @@ export const posts = [
updateTime: 1617953751589, updateTime: 1617953751589,
createTime: 1617952738451, createTime: 1617952738451,
editTime: 1617953751588, editTime: 1617953751588,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-148-released.html", fullPath: "https://halo.run/archives/halo-148-released.html",
summary: summary:
"Features系统设置中支持设置 Gravatar 源地址。#1331 halo-dev/halo-admin#314Improvements优化 RSS 订阅最后更新时间字段。#1342Bug Fixes修复在 1.4.7 中,导入 Markdown 提示格式不正确的问题。halo-dev/ha", "Features系统设置中支持设置 Gravatar 源地址。#1331 halo-dev/halo-admin#314Improvements优化 RSS 订阅最后更新时间字段。#1342Bug Fixes修复在 1.4.7 中,导入 Markdown 提示格式不正确的问题。halo-dev/ha",
@ -637,13 +638,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -655,8 +656,8 @@ export const posts = [
updateTime: 1615698491995, updateTime: 1615698491995,
createTime: 1615698392006, createTime: 1615698392006,
editTime: 1615698491993, editTime: 1615698491993,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-147-released.html", fullPath: "https://halo.run/archives/halo-147-released.html",
summary: summary:
"Bug Fixes修复在 Windows 平台下上传主题压缩包提示不支持当前文件格式的问题。halo-dev/halo-admin#309Upgrade guidehttps://docs.halo.run/install/upgrade", "Bug Fixes修复在 Windows 平台下上传主题压缩包提示不支持当前文件格式的问题。halo-dev/halo-admin#309Upgrade guidehttps://docs.halo.run/install/upgrade",
@ -680,13 +681,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -698,8 +699,8 @@ export const posts = [
updateTime: 1615128686265, updateTime: 1615128686265,
createTime: 1615121994495, createTime: 1615121994495,
editTime: 1615128686264, editTime: 1615128686264,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-146-released.html", fullPath: "https://halo.run/archives/halo-146-released.html",
summary: summary:
"Features主题编写支持继承以及 block 特性。halo-dev/halo#1295Improvements重构初始化页面目前分为全新安装和数据导入。从这个版本开始数据导入将导入所有数据。halo-dev/halo-admin#296优化后台菜单管理的排序拖动体验。halo-dev/ha", "Features主题编写支持继承以及 block 特性。halo-dev/halo#1295Improvements重构初始化页面目前分为全新安装和数据导入。从这个版本开始数据导入将导入所有数据。halo-dev/halo-admin#296优化后台菜单管理的排序拖动体验。halo-dev/ha",
@ -723,13 +724,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -741,8 +742,8 @@ export const posts = [
updateTime: 1612787764475, updateTime: 1612787764475,
createTime: 1612787374387, createTime: 1612787374387,
editTime: 1612787764473, editTime: 1612787764473,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-145-released.html", fullPath: "https://halo.run/archives/halo-145-released.html",
summary: summary:
"Improvementssitemap.xml 新增所有分类和标签的链接。#1267Bug Fixes修复后台因为垂直滚动条导致界面抖动的问题。halo-dev/halo-admin#293修复加密分类页面输入密码后重定向的页面链接不正确的问题。#1264Upgrade guidehttps://d", "Improvementssitemap.xml 新增所有分类和标签的链接。#1267Bug Fixes修复后台因为垂直滚动条导致界面抖动的问题。halo-dev/halo-admin#293修复加密分类页面输入密码后重定向的页面链接不正确的问题。#1264Upgrade guidehttps://d",
@ -766,13 +767,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -784,8 +785,8 @@ export const posts = [
updateTime: 1612710237186, updateTime: 1612710237186,
createTime: 1612706024825, createTime: 1612706024825,
editTime: 1612710237183, editTime: 1612710237183,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-144-released.html", fullPath: "https://halo.run/archives/halo-144-released.html",
summary: summary:
"Features支持对分类目录进行加密。#1235Bug Fixes修复在保存博客设置的时候主题被恢复为上一个激活主题的问题。#1256修复后台在某些场景下顶部加载条无法关闭的问题。", "Features支持对分类目录进行加密。#1235Bug Fixes修复在保存博客设置的时候主题被恢复为上一个激活主题的问题。#1256修复后台在某些场景下顶部加载条无法关闭的问题。",
@ -809,13 +810,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -827,8 +828,8 @@ export const posts = [
updateTime: 1611768562878, updateTime: 1611768562878,
createTime: 1611768239977, createTime: 1611768239977,
editTime: 1611768562872, editTime: 1611768562872,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-143-released.html", fullPath: "https://halo.run/archives/halo-143-released.html",
summary: summary:
"随着这个版本的发布,我们的官网和文档也发生了一些变更。变更之后和 Halo 相关的站点官网https://halo.run文档https://docs.halo.run论坛https://bbs.halo.run主题仓库https://halo.run/themes.htmlBreakin", "随着这个版本的发布,我们的官网和文档也发生了一些变更。变更之后和 Halo 相关的站点官网https://halo.run文档https://docs.halo.run论坛https://bbs.halo.run主题仓库https://halo.run/themes.htmlBreakin",
@ -852,13 +853,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -870,8 +871,8 @@ export const posts = [
updateTime: 1649679459916, updateTime: 1649679459916,
createTime: 1609208959025, createTime: 1609208959025,
editTime: 1649679459907, editTime: 1649679459907,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/theme-xue.html", fullPath: "https://halo.run/archives/theme-xue.html",
summary: summary:
"Halo Theme Xue追求个性与至简说明开始预览示例站点文档主题特性更新日志预览Preview | 个人网站我的个人网站由于存在自定义会和当前主题会有不同示例站点微服务驿站南国薏米通往体面生活的路上pengzhenjin's blognEo.一只从代码中寻找乐趣的猿千与千寻Symon's B", "Halo Theme Xue追求个性与至简说明开始预览示例站点文档主题特性更新日志预览Preview | 个人网站我的个人网站由于存在自定义会和当前主题会有不同示例站点微服务驿站南国薏米通往体面生活的路上pengzhenjin's blognEo.一只从代码中寻找乐趣的猿千与千寻Symon's B",
@ -931,7 +932,7 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1580904752816, createTime: 1580904752816,
fullPath: "https://halo.run/categories/themes.html", fullPath: "https://halo.run/categories/themes.html",
priority: 1, priority: 1,
@ -955,8 +956,8 @@ export const posts = [
updateTime: 1611477431760, updateTime: 1611477431760,
createTime: 1604368978521, createTime: 1604368978521,
editTime: 1611477431757, editTime: 1611477431757,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-142-released.html", fullPath: "https://halo.run/archives/halo-142-released.html",
summary: summary:
"Feature文章固定链接支持年份型。#1095支持添加或修改友链时校验 name 和 url 是否重复。#1079支持 MinIO 云存储。#1097支持删除主题时可选是否删除相关配置。#1105支持设置定时清理回收站的文章。#1114重构后台菜单管理更方便的管理菜单分组以及排序。#1120F", "Feature文章固定链接支持年份型。#1095支持添加或修改友链时校验 name 和 url 是否重复。#1079支持 MinIO 云存储。#1097支持删除主题时可选是否删除相关配置。#1105支持设置定时清理回收站的文章。#1114重构后台菜单管理更方便的管理菜单分组以及排序。#1120F",
@ -980,13 +981,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
{ {
@ -998,8 +999,8 @@ export const posts = [
updateTime: 1611477443335, updateTime: 1611477443335,
createTime: 1600878496716, createTime: 1600878496716,
editTime: 1611477443334, editTime: 1611477443334,
metaKeywords: null, metaKeywords: "",
metaDescription: null, metaDescription: "",
fullPath: "https://halo.run/archives/halo-140-released.html", fullPath: "https://halo.run/archives/halo-140-released.html",
summary: summary:
"Feature支持静态存储重命名和修改文件内容。#819所有附件列表均支持右键复制图片链接。halo-dev/halo-admin#180开发者选项中的实时日志支持自动滚动到最新的日志。在线下载主题支持选择分支和 release。#515 #592 #835评论内容支持显示 html 文本。halo", "Feature支持静态存储重命名和修改文件内容。#819所有附件列表均支持右键复制图片链接。halo-dev/halo-admin#180开发者选项中的实时日志支持自动滚动到最新的日志。在线下载主题支持选择分支和 release。#515 #592 #835评论内容支持显示 html 文本。halo",
@ -1023,13 +1024,13 @@ export const posts = [
description: "", description: "",
thumbnail: "", thumbnail: "",
parentId: 0, parentId: 0,
password: null, password: "",
createTime: 1581682496632, createTime: 1581682496632,
fullPath: "https://halo.run/categories/blog.html", fullPath: "https://halo.run/categories/blog.html",
priority: 8, priority: 8,
}, },
], ],
metas: {}, metas: [],
topped: false, topped: false,
}, },
]; ];