1
1
import { useToggle } from '@vueuse/core'
2
2
import type { FunctionalComponent } from 'vue'
3
- import { computed , defineComponent , h } from 'vue'
4
- import { usePageData , usePageFrontmatter , usePageLang } from 'vuepress/client'
5
- import type {
6
- GitChangelogItem ,
7
- GitPluginFrontmatter ,
8
- GitPluginPageData ,
9
- } from '../../shared/index.js'
10
- import { useGitLocaleConfig , useLastUpdated } from '../composables/index.js'
3
+ import { defineComponent , h } from 'vue'
4
+ import type { ChangelogItem } from '../composables/index.js'
5
+ import {
6
+ useChangelog ,
7
+ useGitLocaleConfig ,
8
+ useLastUpdated ,
9
+ } from '../composables/index.js'
11
10
import { VPHeader } from './VPHeader.js'
12
11
13
12
import '../styles/vars.css'
14
13
import '../styles/changelog.css'
15
14
16
- type ResolvedChangelog = Omit < GitChangelogItem , 'date' > & { datetime : string }
17
-
18
15
export const GitChangelog = defineComponent ( {
19
16
name : 'GitChangelog' ,
20
17
@@ -30,25 +27,9 @@ export const GitChangelog = defineComponent({
30
27
} ,
31
28
32
29
setup ( props ) {
30
+ const changelog = useChangelog ( )
33
31
const locale = useGitLocaleConfig ( )
34
32
const latestUpdated = useLastUpdated ( )
35
- const frontmatter = usePageFrontmatter < GitPluginFrontmatter > ( )
36
- const page = usePageData < GitPluginPageData > ( )
37
- const lang = usePageLang ( )
38
-
39
- const list = computed < ResolvedChangelog [ ] > ( ( ) => {
40
- if ( frontmatter . value . changelog === false ) return [ ]
41
-
42
- const formatter = new Intl . DateTimeFormat ( lang . value , {
43
- dateStyle : 'short' ,
44
- } )
45
-
46
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
47
- return ( page . value . git ?. changelog ?? [ ] ) . map ( ( { date, ...item } ) => {
48
- const datetime = formatter . format ( date )
49
- return { datetime, ...item }
50
- } )
51
- } )
52
33
53
34
const [ active , toggle ] = useToggle ( )
54
35
@@ -64,7 +45,7 @@ export const GitChangelog = defineComponent({
64
45
] ) ,
65
46
] )
66
47
67
- const ReleaseTag : FunctionalComponent < { item : ResolvedChangelog } > = ( {
48
+ const ReleaseTag : FunctionalComponent < { item : ChangelogItem } > = ( {
68
49
item,
69
50
} ) =>
70
51
h (
@@ -75,14 +56,12 @@ export const GitChangelog = defineComponent({
75
56
h ( 'span' , { 'class' : 'datetime' , 'data-allow-mismatch' : '' } , [
76
57
locale . value . timeOn ,
77
58
' ' ,
78
- item . datetime ,
59
+ item . date ,
79
60
] ) ,
80
61
] ) ,
81
62
)
82
63
83
- const Commit : FunctionalComponent < { item : ResolvedChangelog } > = ( {
84
- item,
85
- } ) =>
64
+ const Commit : FunctionalComponent < { item : ChangelogItem } > = ( { item } ) =>
86
65
h ( 'li' , { class : 'changelog commit' } , [
87
66
h (
88
67
item . commitUrl ? 'a' : 'span' ,
@@ -99,12 +78,12 @@ export const GitChangelog = defineComponent({
99
78
h ( 'span' , { 'class' : 'datetime' , 'data-allow-mismatch' : '' } , [
100
79
locale . value . timeOn || 'on' ,
101
80
' ' ,
102
- item . datetime ,
81
+ item . date ,
103
82
] ) ,
104
83
] )
105
84
106
85
return ( ) =>
107
- list . value . length
86
+ changelog . value . length
108
87
? [
109
88
h ( VPHeader , {
110
89
level : props . headerLevel ,
@@ -116,7 +95,7 @@ export const GitChangelog = defineComponent({
116
95
h ( ChangelogHeader ) ,
117
96
118
97
h ( 'ul' , { class : 'changelog-list' } , [
119
- list . value . map ( ( item ) =>
98
+ changelog . value . map ( ( item ) =>
120
99
item . tag
121
100
? h ( ReleaseTag , { item, key : item . tag } )
122
101
: h ( Commit , { item, key : item . hash } ) ,
0 commit comments