Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
cdd3b9f7
Unverified
Commit
cdd3b9f7
authored
Feb 07, 2023
by
Kelvin Fichter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
maint: remove blog components
parent
45c15a62
Changes
71
Hide whitespace changes
Inline
Side-by-side
Showing
71 changed files
with
5 additions
and
2353 deletions
+5
-2353
ArticleInfo.d.ts
...tack/src/.vuepress/theme/components/Blog/ArticleInfo.d.ts
+0
-16
ArticleInfo.js
...-stack/src/.vuepress/theme/components/Blog/ArticleInfo.js
+0
-70
ArticleInfo.js.map
...ck/src/.vuepress/theme/components/Blog/ArticleInfo.js.map
+0
-1
ArticleInfo.vue
...stack/src/.vuepress/theme/components/Blog/ArticleInfo.vue
+0
-74
ArticleItem.d.ts
...tack/src/.vuepress/theme/components/Blog/ArticleItem.d.ts
+0
-9
ArticleItem.js
...-stack/src/.vuepress/theme/components/Blog/ArticleItem.js
+0
-27
ArticleItem.js.map
...ck/src/.vuepress/theme/components/Blog/ArticleItem.js.map
+0
-1
ArticleItem.vue
...stack/src/.vuepress/theme/components/Blog/ArticleItem.vue
+0
-120
ArticleList.d.ts
...tack/src/.vuepress/theme/components/Blog/ArticleList.d.ts
+0
-16
ArticleList.js
...-stack/src/.vuepress/theme/components/Blog/ArticleList.js
+0
-77
ArticleList.js.map
...ck/src/.vuepress/theme/components/Blog/ArticleList.js.map
+0
-1
ArticleList.vue
...stack/src/.vuepress/theme/components/Blog/ArticleList.vue
+0
-37
ArticleType.d.ts
...tack/src/.vuepress/theme/components/Blog/ArticleType.d.ts
+0
-11
ArticleType.js
...-stack/src/.vuepress/theme/components/Blog/ArticleType.js
+0
-23
ArticleType.js.map
...ck/src/.vuepress/theme/components/Blog/ArticleType.js.map
+0
-1
ArticleType.vue
...stack/src/.vuepress/theme/components/Blog/ArticleType.vue
+0
-69
BlogHero.d.ts
...p-stack/src/.vuepress/theme/components/Blog/BlogHero.d.ts
+0
-8
BlogHero.js
.../op-stack/src/.vuepress/theme/components/Blog/BlogHero.js
+0
-29
BlogHero.js.map
...stack/src/.vuepress/theme/components/Blog/BlogHero.js.map
+0
-1
BlogHero.vue
...op-stack/src/.vuepress/theme/components/Blog/BlogHero.vue
+0
-118
BlogHome.d.ts
...p-stack/src/.vuepress/theme/components/Blog/BlogHome.d.ts
+0
-40
BlogHome.js
.../op-stack/src/.vuepress/theme/components/Blog/BlogHome.js
+0
-17
BlogHome.js.map
...stack/src/.vuepress/theme/components/Blog/BlogHome.js.map
+0
-1
BlogHome.vue
...op-stack/src/.vuepress/theme/components/Blog/BlogHome.vue
+0
-70
BlogInfo.d.ts
...p-stack/src/.vuepress/theme/components/Blog/BlogInfo.d.ts
+0
-3
BlogInfo.js
.../op-stack/src/.vuepress/theme/components/Blog/BlogInfo.js
+0
-9
BlogInfo.js.map
...stack/src/.vuepress/theme/components/Blog/BlogInfo.js.map
+0
-1
BlogInfo.vue
...op-stack/src/.vuepress/theme/components/Blog/BlogInfo.vue
+0
-41
BlogInfoList.d.ts
...ack/src/.vuepress/theme/components/Blog/BlogInfoList.d.ts
+0
-25
BlogInfoList.js
...stack/src/.vuepress/theme/components/Blog/BlogInfoList.js
+0
-49
BlogInfoList.js.map
...k/src/.vuepress/theme/components/Blog/BlogInfoList.js.map
+0
-1
BlogInfoList.vue
...tack/src/.vuepress/theme/components/Blog/BlogInfoList.vue
+0
-213
BlogPage.d.ts
...p-stack/src/.vuepress/theme/components/Blog/BlogPage.d.ts
+0
-6
BlogPage.js
.../op-stack/src/.vuepress/theme/components/Blog/BlogPage.js
+0
-37
BlogPage.js.map
...stack/src/.vuepress/theme/components/Blog/BlogPage.js.map
+0
-1
BlogPage.vue
...op-stack/src/.vuepress/theme/components/Blog/BlogPage.vue
+0
-26
BloggerInfo.d.ts
...tack/src/.vuepress/theme/components/Blog/BloggerInfo.d.ts
+0
-30
BloggerInfo.js
...-stack/src/.vuepress/theme/components/Blog/BloggerInfo.js
+0
-45
BloggerInfo.js.map
...ck/src/.vuepress/theme/components/Blog/BloggerInfo.js.map
+0
-1
BloggerInfo.vue
...stack/src/.vuepress/theme/components/Blog/BloggerInfo.vue
+0
-98
CategoryList.d.ts
...ack/src/.vuepress/theme/components/Blog/CategoryList.d.ts
+0
-6
CategoryList.js
...stack/src/.vuepress/theme/components/Blog/CategoryList.js
+0
-13
CategoryList.js.map
...k/src/.vuepress/theme/components/Blog/CategoryList.js.map
+0
-1
CategoryList.vue
...tack/src/.vuepress/theme/components/Blog/CategoryList.vue
+0
-90
ProjectList.d.ts
...tack/src/.vuepress/theme/components/Blog/ProjectList.d.ts
+0
-5
ProjectList.js
...-stack/src/.vuepress/theme/components/Blog/ProjectList.js
+0
-16
ProjectList.js.map
...ck/src/.vuepress/theme/components/Blog/ProjectList.js.map
+0
-1
ProjectList.vue
...stack/src/.vuepress/theme/components/Blog/ProjectList.vue
+0
-103
TagList.d.ts
...op-stack/src/.vuepress/theme/components/Blog/TagList.d.ts
+0
-12
TagList.js
docs/op-stack/src/.vuepress/theme/components/Blog/TagList.js
+0
-35
TagList.js.map
...-stack/src/.vuepress/theme/components/Blog/TagList.js.map
+0
-1
TagList.vue
.../op-stack/src/.vuepress/theme/components/Blog/TagList.vue
+0
-65
Timeline.d.ts
...p-stack/src/.vuepress/theme/components/Blog/Timeline.d.ts
+0
-12
Timeline.js
.../op-stack/src/.vuepress/theme/components/Blog/Timeline.js
+0
-29
Timeline.js.map
...stack/src/.vuepress/theme/components/Blog/Timeline.js.map
+0
-1
Timeline.vue
...op-stack/src/.vuepress/theme/components/Blog/Timeline.vue
+0
-180
TimelineList.d.ts
...ack/src/.vuepress/theme/components/Blog/TimelineList.d.ts
+0
-10
TimelineList.js
...stack/src/.vuepress/theme/components/Blog/TimelineList.js
+0
-22
TimelineList.js.map
...k/src/.vuepress/theme/components/Blog/TimelineList.js.map
+0
-1
TimelineList.vue
...tack/src/.vuepress/theme/components/Blog/TimelineList.vue
+0
-155
Sidebar.js
...p-stack/src/.vuepress/theme/components/Sidebar/Sidebar.js
+1
-5
Sidebar.vue
...-stack/src/.vuepress/theme/components/Sidebar/Sidebar.vue
+0
-7
Blog.d.ts
docs/op-stack/src/.vuepress/theme/layouts/Blog.d.ts
+0
-11
Blog.js
docs/op-stack/src/.vuepress/theme/layouts/Blog.js
+0
-17
Blog.js.map
docs/op-stack/src/.vuepress/theme/layouts/Blog.js.map
+0
-1
Blog.vue
docs/op-stack/src/.vuepress/theme/layouts/Blog.vue
+0
-61
Layout.js
docs/op-stack/src/.vuepress/theme/layouts/Layout.js
+1
-5
Layout.vue
docs/op-stack/src/.vuepress/theme/layouts/Layout.vue
+1
-3
alias.js
docs/op-stack/src/.vuepress/theme/node/alias.js
+1
-14
plugins.js
docs/op-stack/src/.vuepress/theme/node/plugins.js
+1
-24
declare.d.ts
docs/op-stack/src/.vuepress/theme/types/declare.d.ts
+0
-24
No files found.
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleInfo.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
type
{
PageComputed
}
from
"
@mr-hope/vuepress-types
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
unknown
,
{
author
:
string
;
time
:
string
;
tags
:
string
[];
readingTimeContent
:
string
;
readingTime
:
string
;
authorText
:
string
;
timeText
:
string
;
tagText
:
string
;
readingTimeText
:
string
;
},
{
article
:
PageComputed
;
}
>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleInfo.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
{
capitalize
}
from
"
@mr-hope/vuepress-shared
"
;
import
AuthorIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/AuthorIcon.vue
"
;
import
CalendarIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/CalendarIcon.vue
"
;
import
CategoryInfo
from
"
@mr-hope/vuepress-plugin-comment/lib/client/CategoryInfo.vue
"
;
import
TagInfo
from
"
@mr-hope/vuepress-plugin-comment/lib/client/TagInfo.vue
"
;
import
TimerIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/TimerIcon.vue
"
;
export
default
Vue
.
extend
({
name
:
"
ArticleInfo
"
,
components
:
{
AuthorIcon
,
CalendarIcon
,
CategoryInfo
,
TagInfo
,
TimerIcon
,
},
props
:
{
article
:
{
type
:
Object
,
required
:
true
},
},
computed
:
{
author
()
{
return
(
this
.
article
.
frontmatter
.
author
||
(
this
.
$themeConfig
.
author
&&
this
.
article
.
frontmatter
.
author
!==
false
?
this
.
$themeConfig
.
author
:
""
));
},
time
()
{
const
{
date
,
time
=
date
}
=
this
.
article
.
frontmatter
;
if
(
typeof
time
===
"
string
"
)
{
if
(
time
.
indexOf
(
"
T
"
)
!==
-
1
)
{
const
[
dateString
,
temp
]
=
time
.
split
(
"
T
"
);
const
[
times
]
=
temp
.
split
(
"
.
"
);
return
`
${
dateString
}
${
times
===
"
00:00:00
"
?
""
:
times
}
`
;
}
return
time
;
}
return
this
.
article
.
createTime
||
""
;
},
tags
()
{
const
{
tag
,
tags
=
tag
}
=
this
.
article
.
frontmatter
;
if
(
typeof
tags
===
"
string
"
)
return
[
capitalize
(
tags
)];
if
(
Array
.
isArray
(
tags
))
return
tags
.
map
((
item
)
=>
capitalize
(
item
));
return
[];
},
readingTimeContent
()
{
return
`PT
${
Math
.
max
(
Math
.
round
(
this
.
$page
.
readingTime
.
minutes
),
1
)}
M`
;
},
readingTime
()
{
const
{
minute
,
time
}
=
READING_TIME_I18N
[
this
.
$localePath
||
"
/
"
];
return
this
.
article
.
readingTime
.
minutes
<
1
?
minute
:
time
.
replace
(
"
$time
"
,
Math
.
round
(
this
.
article
.
readingTime
.
minutes
).
toString
());
},
authorText
()
{
return
PAGE_INFO_I18N
[
this
.
$localePath
||
"
/
"
].
author
;
},
timeText
()
{
return
PAGE_INFO_I18N
[
this
.
$localePath
||
"
/
"
].
time
;
},
tagText
()
{
return
PAGE_INFO_I18N
[
this
.
$localePath
||
"
/
"
].
tag
;
},
readingTimeText
()
{
return
PAGE_INFO_I18N
[
this
.
$localePath
||
"
/
"
].
readingTime
;
},
},
});
//# sourceMappingURL=ArticleInfo.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleInfo.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"ArticleInfo.js","sourceRoot":"","sources":["ArticleInfo.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleInfo.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
v-if=
"author || time"
class=
"article-info"
>
<!-- Author -->
<span
v-if=
"author"
:aria-label=
"authorText"
data-balloon-pos=
"down"
>
<AuthorIcon
/>
<span
property=
"author"
v-text=
"author"
/>
</span>
<!-- Writing Date -->
<span
v-if=
"time"
class=
"time"
:aria-label=
"timeText"
data-balloon-pos=
"down"
>
<CalendarIcon
/>
<span
property=
"datePublished"
v-text=
"time"
/>
</span>
<CategoryInfo
v-if=
"article.frontmatter.category"
:category=
"article.frontmatter.category"
/>
<TagInfo
v-if=
"tags.length !== 0"
:tags=
"tags"
/>
<!-- Reading time -->
<span
v-if=
"readingTime"
class=
"read-time-info"
:aria-label=
"readingTimeText"
data-balloon-pos=
"down"
>
<TimerIcon
/>
<span
v-text=
"readingTime"
/>
<meta
property=
"timeRequired"
:content=
"readingTimeContent"
/>
</span>
</div>
</
template
>
<
script
src=
"./ArticleInfo"
/>
<
style
lang
=
"
stylus
"
>
$articleInfoTextSize
?
=
14
px
.
article
-
info
color
var
(
--
dark
-
grey
)
font
-
size
$articleInfoTextSize
font
-
family
Arial
,
Helvetica
,
sans
-
serif
&
>
span
display
inline
-
block
margin
-
right
0.5
em
line
-
height
1.8
@
media
(
max
-
width
$MQMobileNarrow
)
margin
-
right
0.3
em
font
-
size
0.86
rem
&
::
after
--
balloon
-
font
-
size
8
px
padding
0.3
em
0.6
em
!
important
svg
position
relative
bottom
-
0.125
em
.
tags
-
wrapper
display
inline
-
block
.
icon
width
1
em
height
1
em
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleItem.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
type
{
PageComputed
}
from
"
@mr-hope/vuepress-types
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
unknown
,
{
isEncrypted
:
boolean
;
excerpt
:
string
;
},
{
article
:
PageComputed
;
}
>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleItem.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
ArticleInfo
from
"
@theme/components/Blog/ArticleInfo.vue
"
;
import
LockIcon
from
"
@theme/icons/LockIcon.vue
"
;
import
PresentationIcon
from
"
@theme/icons/PresentationIcon.vue
"
;
import
StickyIcon
from
"
@theme/icons/StickyIcon.vue
"
;
import
{
getPathMatchedKeys
}
from
"
@theme/utils/encrypt
"
;
export
default
Vue
.
extend
({
name
:
"
ArticleItem
"
,
components
:
{
ArticleInfo
,
LockIcon
,
StickyIcon
,
PresentationIcon
},
props
:
{
article
:
{
type
:
Object
,
required
:
true
},
},
computed
:
{
isEncrypted
()
{
return
(
getPathMatchedKeys
(
this
.
$themeConfig
.
encrypt
,
this
.
article
.
path
)
.
length
!==
0
||
Boolean
(
this
.
article
.
frontmatter
.
password
));
},
excerpt
()
{
if
(
this
.
article
.
excerpt
)
return
this
.
article
.
excerpt
;
return
(
this
.
article
.
frontmatter
.
description
||
this
.
article
.
frontmatter
.
summary
||
""
);
},
},
});
//# sourceMappingURL=ArticleItem.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleItem.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"ArticleItem.js","sourceRoot":"","sources":["ArticleItem.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,gBAAgB,MAAM,mCAAmC,CAAC;AACjE,OAAO,UAAU,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,aAAa;IAEnB,UAAU,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE;IAEnE,KAAK,EAAE;QACL,OAAO,EAAE,EAAE,IAAI,EAAE,MAAgC,EAAE,QAAQ,EAAE,IAAI,EAAE;KACpE;IAED,QAAQ,EAAE;QACR,WAAW;YACT,OAAO,CACL,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;iBAC7D,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAC9D,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAEtD,OAAO,CACL,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW;gBACpC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO;gBAChC,EAAE,CACH,CAAC;QACJ,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleItem.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<article
class=
"article"
vocab=
"https://schema.org/"
typeof=
"Article"
>
<StickyIcon
v-if=
"article.frontmatter.sticky"
/>
<header
class=
"title"
@
click=
"$router.push(article.path)"
>
<LockIcon
v-if=
"isEncrypted"
/>
<PresentationIcon
v-if=
"article.frontmatter.layout === 'Slide'"
/>
<span
property=
"headline"
>
{{
article
.
title
}}
</span>
<meta
v-if=
"article.frontmatter.image"
property=
"image"
:content=
"$withBase(article.frontmatter.image)"
/>
</header>
<!-- eslint-disable-next-line vue/no-v-html -->
<div
v-if=
"excerpt"
class=
"excerpt"
v-html=
"excerpt"
/>
<hr
class=
"hr"
/>
<ArticleInfo
:article=
"article"
/>
</article>
</
template
>
<
script
src=
"./ArticleItem"
/>
<
style
lang
=
"
stylus
"
>
.
article
position
relative
box
-
sizing
border
-
box
width
100
%
margin
0
auto
20
px
padding
16
px
20
px
background
var
(
--
bgcolor
)
border
-
radius
6
px
text
-
align
left
box
-
shadow
0
1
px
3
px
0
var
(
--
card
-
shadow
-
color
)
@
media
(
max
-
width
$MQMobileNarrow
)
border
-
radius
0
&
:
last
-
child
margin
-
bottom
0
&
:
hover
box
-
shadow
0
2
px
6
px
0
var
(
--
card
-
shadow
-
color
)
.
sticky
-
icon
position
absolute
top
0
right
0
width
40
px
height
40
px
fill
var
(
--
accent
-
color
)
.
sticky
-
text
fill
var
(
--
white
)
.
title
display
inline
-
block
position
relative
font
-
size
1.28
rem
line
-
height
36
px
&
::
after
content
''
position
absolute
width
100
%
height
2
px
bottom
0
left
0
background
var
(
--
accent
-
color
)
visibility
hidden
transform
scaleX
(
0
)
transition
transform
0.3
s
ease
-
in
-
out
&
:
hover
cursor
pointer
&
::
after
visibility
visible
transform
scaleX
(
1
)
.
lock
-
icon
,
.
presentation
-
icon
position
relative
bottom
-
0.125
em
display
inline
-
block
vertical
-
align
baseline
width
20
px
height
20
px
color
var
(
--
accent
-
color
)
.
excerpt
overflow
hidden
line
-
height
1.7
h1
display
none
&
+
p
margin
-
top
0.5
em
p
&
:
first
-
child
margin
-
top
0.5
em
&
:
last
-
child
margin
-
bottom
0.5
em
// code block fix
pre
line
-
height
1.4
padding
1.25
rem
1.5
rem
margin
0.85
rem
0
// line number fix
.
line
-
numbers
-
mode
pre
padding
-
left
(
$lineNumbersWrapperWidth
+
1
)
rem
// hide code demo
.
code
-
demo
-
wrapper
display
none
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleList.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
type
{
BlogOptions
}
from
"
@theme/types
"
;
import
type
{
PageComputed
}
from
"
@mr-hope/vuepress-types
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
{
currentPage
:
number
;
articleList
:
PageComputed
[];
},
{
getArticleList
():
PageComputed
[];
},
{
blogConfig
:
BlogOptions
;
articlePerPage
:
number
;
filter
:
((
page
:
PageComputed
)
=>
boolean
)
|
undefined
;
$articles
:
PageComputed
[];
articles
:
PageComputed
[];
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleList.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
ArticleItem
from
"
@theme/components/Blog/ArticleItem.vue
"
;
import
EmptyIcon
from
"
@theme/icons/EmptyIcon.vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
{
filterArticle
,
sortArticle
}
from
"
@theme/utils/article
"
;
import
{
getPathMatchedKeys
}
from
"
@theme/utils/encrypt
"
;
export
default
Vue
.
extend
({
name
:
"
ArticleList
"
,
components
:
{
ArticleItem
,
EmptyIcon
,
MyTransition
},
data
:
()
=>
({
currentPage
:
1
,
articleList
:
[],
}),
computed
:
{
blogConfig
()
{
return
this
.
$themeConfig
.
blog
||
{};
},
articlePerPage
()
{
return
this
.
blogConfig
.
perPage
||
10
;
},
filter
()
{
const
{
path
}
=
this
.
$route
;
return
path
.
includes
(
"
/article
"
)
?
(
page
)
=>
page
.
frontmatter
.
layout
!==
"
Slide
"
:
path
.
includes
(
"
/star
"
)
?
(
page
)
=>
Boolean
(
page
.
frontmatter
.
star
||
page
.
frontmatter
.
sticky
)
:
path
.
includes
(
"
/encrypt
"
)
?
(
page
)
=>
getPathMatchedKeys
(
this
.
$themeConfig
.
encrypt
,
page
.
path
).
length
!==
0
||
Boolean
(
page
.
frontmatter
.
password
)
:
path
.
includes
(
"
/slide
"
)
?
(
page
)
=>
page
.
frontmatter
.
layout
===
"
Slide
"
:
undefined
;
},
$articles
()
{
// filter then sort
return
sortArticle
(
filterArticle
(
this
.
$site
.
pages
,
this
.
filter
),
"
sticky
"
);
},
/** Articles in this page */
articles
()
{
return
this
.
articleList
.
slice
((
this
.
currentPage
-
1
)
*
this
.
articlePerPage
,
this
.
currentPage
*
this
.
articlePerPage
);
},
},
watch
:
{
// update article list when route is changed
$route
(
to
,
from
)
{
if
(
to
.
path
!==
from
.
path
)
{
this
.
articleList
=
this
.
getArticleList
();
// reset page to 1
this
.
currentPage
=
1
;
}
},
currentPage
()
{
// list top border distance
const
distance
=
document
.
querySelector
(
"
#article-list
"
).
getBoundingClientRect
().
top
+
window
.
scrollY
;
setTimeout
(()
=>
{
window
.
scrollTo
(
0
,
distance
);
},
100
);
},
},
mounted
()
{
this
.
articleList
=
this
.
getArticleList
();
},
methods
:
{
getArticleList
()
{
try
{
return
this
.
$pagination
?
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
this
.
$pagination
.
_matchedPages
:
this
.
$articles
;
}
catch
(
err
)
{
return
this
.
$articles
;
}
},
},
});
//# sourceMappingURL=ArticleList.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleList.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"ArticleList.js","sourceRoot":"","sources":["ArticleList.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleList.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
id=
"article-list"
class=
"article-wrapper"
>
<EmptyIcon
v-if=
"!articles.length"
class=
"empty"
/>
<MyTransition
v-for=
"(article, index) in articles"
:key=
"article.path"
:delay=
"index * 0.04"
>
<ArticleItem
:article=
"article"
/>
</MyTransition>
<Pagination
v-model=
"currentPage"
:per-page=
"articlePerPage"
:total=
"articleList.length"
/>
</div>
</
template
>
<
script
src=
"./ArticleList"
/>
<
style
lang
=
"
stylus
"
>
.
article
-
wrapper
margin
-
top
-
0.5
rem
-
$navbarHeight
padding
-
top
:
$navbarHeight
+
0.5
rem
text
-
align
center
@
media
(
max
-
width
$MQMobile
)
margin
-
top
-
0.5
rem
-
$navbarMobileHeight
padding
-
top
:
$navbarMobileHeight
+
0.5
rem
.
empty
max
-
width
560
px
margin
0
auto
text
-
align
center
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleType.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
interface
ArticleTypeItem
{
text
:
string
;
path
:
string
;
}
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
{
navigate
(
path
:
string
):
void
;
},
{
types
:
ArticleTypeItem
[];
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleType.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
{
getDefaultLocale
}
from
"
@mr-hope/vuepress-shared
"
;
import
{
navigate
}
from
"
@theme/utils/navigate
"
;
export
default
Vue
.
extend
({
name
:
"
ArticleType
"
,
computed
:
{
types
()
{
const
blogI18n
=
this
.
$themeLocaleConfig
.
blog
||
getDefaultLocale
().
blog
;
return
[
{
text
:
blogI18n
.
allText
,
path
:
"
/article/
"
},
{
text
:
blogI18n
.
star
,
path
:
"
/star/
"
},
{
text
:
blogI18n
.
slides
,
path
:
"
/slide/
"
},
{
text
:
blogI18n
.
encrypt
,
path
:
"
/encrypt/
"
},
];
},
},
methods
:
{
navigate
(
path
)
{
navigate
(
path
,
this
.
$router
,
this
.
$route
);
},
},
});
//# sourceMappingURL=ArticleType.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleType.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"ArticleType.js","sourceRoot":"","sources":["ArticleType.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOjD,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,aAAa;IAEnB,QAAQ,EAAE;QACR,KAAK;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC,IAAI,CAAC;YAEzE,OAAO;gBACL,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC7C,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1C,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;aAC9C,CAAC;QACJ,CAAC;KACF;IAED,OAAO,EAAE;QACP,QAAQ,CAAC,IAAY;YACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ArticleType.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<ul
class=
"article-type-wrapper"
>
<li
v-for=
"type in types"
:key=
"type.text"
class=
"article-type"
:class=
"
{ active: type.path === $route.path }"
role="navigation"
@click="navigate(type.path)"
>
<span>
{{
type
.
text
}}
</span>
</li>
</ul>
</
template
>
<
script
src=
"./ArticleType"
/>
<
style
lang
=
"
stylus
"
>
.
article
-
type
-
wrapper
position
relative
padding
-
left
0
font
-
size
18
px
font
-
family
Arial
,
Helvetica
,
sans
-
serif
font
-
weight
600
display
flex
justify
-
content
center
align
-
items
center
list
-
style
none
z
-
index
2
@
media
(
max
-
width
$MQMobileNarrow
)
font
-
size
16
px
.
article
-
type
position
relative
vertical
-
align
middle
margin
0.3
em
0.8
em
line
-
height
1.2
cursor
pointer
&
::
after
position
absolute
content
'
'
left
50
%
right
50
%
bottom
-
6
px
height
2
px
background
var
(
--
accent
-
color
)
border
-
radius
1
px
visibility
hidden
transition
left
0.2
s
ease
-
in
-
out
,
right
0.2
s
ease
-
in
-
out
span
transition
all
0.3
s
ease
-
in
-
out
&
.
active
position
relative
span
display
inline
-
block
color
var
(
--
accent
-
color
)
transform
scale
(
1.1
,
1.1
)
&
:
hover
,
&
.
active
&
::
after
left
calc
(
50
%
-
8
px
)
right
calc
(
50
%
-
8
px
)
visibility
visible
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHero.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
{
defaultHeroImage
:
string
;
},
unknown
,
{
heroImageStyle
:
Record
<
string
,
string
>
;
bgImageStyle
:
Record
<
string
,
string
>
;
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHero.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
defaultHeroImage
from
"
@theme/assets/hero.jpg
"
;
export
default
Vue
.
extend
({
name
:
"
BlogHero
"
,
components
:
{
MyTransition
},
data
:
()
=>
({
defaultHeroImage
}),
computed
:
{
heroImageStyle
()
{
const
defaultStyle
=
{
maxHeight
:
"
180px
"
,
margin
:
this
.
$frontmatter
.
showTitle
===
false
?
"
6rem auto 1.5rem
"
:
"
1rem auto
"
,
};
return
Object
.
assign
(
Object
.
assign
({},
defaultStyle
),
this
.
$frontmatter
.
heroImageStyle
);
},
bgImageStyle
()
{
const
defaultBgImageStyle
=
{
height
:
"
350px
"
,
textAlign
:
"
center
"
,
overflow
:
"
hidden
"
,
};
const
{
bgImageStyle
=
{}
}
=
this
.
$frontmatter
;
return
Object
.
assign
(
Object
.
assign
({},
defaultBgImageStyle
),
bgImageStyle
);
},
},
});
//# sourceMappingURL=BlogHero.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHero.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"BlogHero.js","sourceRoot":"","sources":["BlogHero.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE,EAAE,YAAY,EAAE;IAE5B,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAElC,QAAQ,EAAE;QACR,cAAc;YACZ,MAAM,YAAY,GAAG;gBACnB,SAAS,EAAE,OAAO;gBAClB,MAAM,EACJ,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,KAAK;oBACnC,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,WAAW;aAClB,CAAC;YAEF,uCACK,YAAY,GACX,IAAI,CAAC,YAAY,CAAC,cAAyC,EAC/D;QACJ,CAAC;QAED,YAAY;YACV,MAAM,mBAAmB,GAA2B;gBAClD,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,QAAQ;aACnB,CAAC;YACF,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YAEhD,uCACK,mBAAmB,GAClB,YAAuC,EAC3C;QACJ,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHero.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
v-if=
"$frontmatter.hero !== false"
class=
"blog-hero"
:class=
"
{ full: $frontmatter.heroFullScreen }"
:style="{ ...bgImageStyle }"
>
<div
class=
"mask"
:style=
"
{
background: `url(${
$frontmatter.bgImage
? $withBase($frontmatter.bgImage)
: defaultHeroImage
}) center/cover no-repeat`,
}"
/>
<MyTransition
:delay=
"0.04"
>
<img
v-if=
"$frontmatter.heroImage"
class=
"hero-logo"
:style=
"heroImageStyle ||
{}"
:src="$withBase($frontmatter.heroImage)"
alt="hero"
/>
</MyTransition>
<MyTransition
:delay=
"0.08"
>
<h1
v-if=
"$frontmatter.showTitle !== false"
>
{{
$frontmatter
.
heroText
||
$title
||
"
Hope
"
}}
</h1>
</MyTransition>
<MyTransition
:delay=
"0.12"
>
<p
v-if=
"$description"
class=
"description"
v-text=
"$description"
/>
</MyTransition>
</div>
</
template
>
<
script
src=
"./BlogHero"
/>
<
style
lang
=
"
stylus
"
>
.
blog
-
hero
position
relative
color
#
eee
margin
-
bottom
16
px
height
450
px
display
flex
flex
-
direction
column
justify
-
content
center
@
media
(
max
-
width
$MQMobile
)
height
350
px
margin
0
-
1.5
rem
16
px
@
media
(
max
-
width
$MQMobileNarrow
)
margin
0
0
16
px
&
.
full
height
'
calc(100vh - %s)
'
%
$navbarHeight
!
important
@
media
(
max
-
width
$MQMobile
)
height
'
calc(100vh - %s)
'
%
$navbarMobileHeight
!
important
.
mask
background
-
position
-
y
top
!
important
.
mask
position
absolute
top
0
bottom
0
left
0
right
0
&
:
after
display
block
content
'
'
background
var
(
--
light
-
grey
)
position
absolute
top
0
bottom
0
left
0
right
0
z
-
index
1
opacity
0.2
&
>
:
not
(.
mask
)
position
relative
z
-
index
2
h1
margin
0.5
rem
auto
font
-
size
36
px
@
media
(
max
-
width
$MQNarrow
)
font
-
size
30
px
@
media
(
max
-
width
$MQMobile
)
font
-
size
36
px
@
media
(
max
-
width
$MQMobileNarrow
)
font
-
size
30
px
.
hero
-
logo
+
h1
margin
0
auto
.
description
margin
1.2
rem
auto
0
font
-
size
20
px
@
media
(
max
-
width
$MQNarrow
)
font
-
size
18
px
@
media
(
max
-
width
$MQMobile
)
font
-
size
20
px
@
media
(
max
-
width
$MQMobileNarrow
)
font
-
size
18
px
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHome.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
/**
* 项目配置
*
* Project Configuration
*/
export
interface
ProjectOptions
{
/**
* 项目类型
*
* Type of project
*/
type
:
"
article
"
|
"
book
"
|
"
link
"
|
"
project
"
;
/**
* 项目名称
*
* Project name
*/
name
:
string
;
/**
* 项目描述
*
* Project desription
*/
desc
?:
string
;
/**
* 项目封面,应为绝对路径
*
* Cover for the project, must be an absolute path
*/
cover
?:
string
;
/**
* 项目链接
*
* Link of the project
*/
link
:
string
;
}
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
unknown
,
unknown
,
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHome.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
ArticleList
from
"
@theme/components/Blog/ArticleList.vue
"
;
import
BlogHero
from
"
@theme/components/Blog/BlogHero.vue
"
;
import
BlogInfo
from
"
@BlogInfo
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
ProjectList
from
"
@theme/components/Blog/ProjectList.vue
"
;
export
default
Vue
.
extend
({
name
:
"
BlogHome
"
,
components
:
{
ArticleList
,
BlogHero
,
BlogInfo
,
MyTransition
,
ProjectList
,
},
});
//# sourceMappingURL=BlogHome.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHome.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"BlogHome.js","sourceRoot":"","sources":["BlogHome.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,WAAW,MAAM,wCAAwC,CAAC;AAwCjE,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE;QACV,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,WAAW;KACZ;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogHome.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
class=
"page blog"
>
<BlogHero
/>
<div
class=
"blog-page-wrapper"
>
<main
class=
"blog-home"
>
<MyTransition
:delay=
"0.16"
>
<ProjectList
/>
</MyTransition>
<MyTransition
:delay=
"0.24"
>
<ArticleList
:key=
"$route.path"
/>
</MyTransition>
</main>
<MyTransition
:delay=
"0.16"
>
<BlogInfo
/>
</MyTransition>
</div>
<MyTransition
:delay=
"0.28"
>
<Content
:key=
"$route.path"
class=
"theme-default-content"
custom
/>
</MyTransition>
</div>
</
template
>
<
script
src=
"./BlogHome"
/>
<
style
lang
=
"
stylus
"
>
.
page
.
blog
box
-
sizing
content
-
box
min
-
height
100
vh
padding
-
top
$navbarHeight
padding
-
bottom
2
rem
margin
0
px
auto
background
var
(
--
bgcolor
-
light
)
@
media
(
max
-
width
$MQMobile
)
padding
$navbarMobileHeight
1.5
rem
2
rem
@
media
(
max
-
width
$MQMobileNarrow
)
padding
-
left
0
padding
-
right
0
.
blog
-
page
-
wrapper
display
flex
justify
-
content
center
align
-
items
flex
-
start
margin
0
auto
@
media
(
min
-
width
$MQMobile
)
padding
0
1
rem
@
media
(
min
-
width
$MQNarrow
)
padding
0
2
rem
@
media
(
min
-
width
$MQWide
)
padding
0
.
blog
-
home
max
-
width
780
px
overflow
hidden
flex
1
@
media
(
min
-
width
$MQMobile
)
margin
0
15
px
.
theme
-
default
-
content
:
empty
padding
0
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfo.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
unknown
,
unknown
,
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfo.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
BlogInfoList
from
"
@theme/components/Blog/BlogInfoList.vue
"
;
import
BloggerInfo
from
"
@theme/components/Blog/BloggerInfo.vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
export
default
Vue
.
extend
({
name
:
"
BlogInfo
"
,
components
:
{
BlogInfoList
,
BloggerInfo
,
MyTransition
},
});
//# sourceMappingURL=BlogInfo.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfo.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"BlogInfo.js","sourceRoot":"","sources":["BlogInfo.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAE9D,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE;CACxD,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfo.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<aside
class=
"blog-info-wrapper"
>
<MyTransition>
<BloggerInfo
/>
</MyTransition>
<MyTransition
:delay=
"0.04"
>
<BlogInfoList
/>
</MyTransition>
</aside>
</
template
>
<
script
src=
"./BlogInfo"
/>
<
style
lang
=
"
stylus
"
>
.
blog
-
info
-
wrapper
.
sidebar
&
.
blogger
-
info
display
none
.
page
&
position
sticky
box
-
sizing
border
-
box
top
(
$navbarHeight
+
1
rem
)
flex
0
0
300
px
height
auto
margin
-
bottom
12
px
transition
all
0.3
s
@
media
(
max
-
width
$MQMobile
)
display
none
.
blogger
-
info
margin
-
bottom
16
px
padding
8
px
0
border
-
radius
8
px
box
-
shadow
0
1
px
3
px
0
var
(
--
card
-
shadow
-
color
)
&
:
hover
box
-
shadow
0
2
px
6
px
0
var
(
--
card
-
shadow
-
color
)
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfoList.d.ts
deleted
100644 → 0
View file @
45c15a62
import
ArticleIcon
from
"
@theme/icons/ArticleIcon.vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
{
$starArticles
:
import
(
"
@mr-hope/vuepress-types
"
).
PageComputed
[];
}
&
Record
<
never
,
any
>
&
ArticleIcon
,
{
active
:
string
;
},
{
setActive
(
name
:
string
):
void
;
navigate
(
path
:
string
):
void
;
},
{
i18n
:
{
article
:
string
;
articleList
:
string
;
category
:
string
;
tag
:
string
;
timeline
:
string
;
timelineText
:
string
;
allText
:
string
;
intro
:
string
;
star
:
string
;
slides
:
string
;
encrypt
:
string
;
};
articleNumber
:
number
;
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfoList.js
deleted
100644 → 0
View file @
45c15a62
import
{
getDefaultLocale
}
from
"
@mr-hope/vuepress-shared
"
;
import
ArticleIcon
from
"
@theme/icons/ArticleIcon.vue
"
;
import
CategoryIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/CategoryIcon.vue
"
;
import
TagIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/TagIcon.vue
"
;
import
TimeIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/TimeIcon.vue
"
;
import
ArticleList
from
"
@theme/components/Blog/ArticleList.vue
"
;
import
CategoryList
from
"
@theme/components/Blog/CategoryList.vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
TagList
from
"
@theme/components/Blog/TagList.vue
"
;
import
Timeline
from
"
@theme/components/Blog/Timeline.vue
"
;
import
TimelineList
from
"
@theme/components/Blog/TimelineList.vue
"
;
import
{
filterArticle
}
from
"
@theme/utils/article
"
;
import
{
starMixin
}
from
"
@theme/mixins/star
"
;
export
default
starMixin
.
extend
({
name
:
"
BlogInfo
"
,
components
:
{
ArticleIcon
,
ArticleList
,
CategoryIcon
,
CategoryList
,
MyTransition
,
TagIcon
,
TagList
,
TimeIcon
,
Timeline
,
TimelineList
,
},
data
:
()
=>
({
active
:
"
category
"
,
}),
computed
:
{
i18n
()
{
return
this
.
$themeLocaleConfig
.
blog
||
getDefaultLocale
().
blog
;
},
articleNumber
()
{
return
filterArticle
(
this
.
$site
.
pages
).
length
;
},
},
methods
:
{
setActive
(
name
)
{
this
.
active
=
name
;
},
navigate
(
path
)
{
if
(
this
.
$route
.
path
!==
path
)
void
this
.
$router
.
push
(
path
);
},
},
});
//# sourceMappingURL=BlogInfoList.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfoList.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"BlogInfoList.js","sourceRoot":"","sources":["BlogInfoList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,YAAY,MAAM,oEAAoE,CAAC;AAC9F,OAAO,OAAO,MAAM,+DAA+D,CAAC;AACpF,OAAO,QAAQ,MAAM,gEAAgE,CAAC;AACtF,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,eAAe,SAAS,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE;QACV,WAAW;QACX,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,OAAO;QACP,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,YAAY;KACb;IAED,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACX,MAAM,EAAE,UAAU;KACnB,CAAC;IAEF,QAAQ,EAAE;QACR,IAAI;YACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC,IAAI,CAAC;QACjE,CAAC;QAED,aAAa;YACX,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC;KACF;IAED,OAAO,EAAE;QACP,SAAS,CAAC,IAAY;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,QAAQ,CAAC,IAAY;YACnB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI;gBAAE,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogInfoList.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
class=
"blog-info-list"
>
<div
class=
"switch-wrapper"
>
<button
class=
"switch-button"
@
click=
"setActive('article')"
>
<div
class=
"icon-wapper"
:class=
"
{ active: active === 'article' }"
:aria-label="i18n.article"
data-balloon-pos="up"
>
<ArticleIcon
/>
</div>
</button>
<button
class=
"switch-button"
@
click=
"setActive('category')"
>
<div
class=
"icon-wapper"
:class=
"
{ active: active === 'category' }"
:aria-label="i18n.category"
data-balloon-pos="up"
>
<CategoryIcon
/>
</div>
</button>
<button
class=
"switch-button"
@
click=
"setActive('tag')"
>
<div
class=
"icon-wapper"
:class=
"
{ active: active === 'tag' }"
:aria-label="i18n.tag"
data-balloon-pos="up"
>
<TagIcon
/>
</div>
</button>
<button
class=
"switch-button"
@
click=
"setActive('timeline')"
>
<div
class=
"icon-wapper"
:class=
"
{ active: active === 'timeline' }"
:aria-label="i18n.timeline"
data-balloon-pos="up"
>
<TimeIcon
/>
</div>
</button>
</div>
<!-- Article -->
<MyTransition
v-if=
"active === 'article'"
>
<div
class=
"sticky-article-wrapper"
>
<div
class=
"title"
@
click=
"navigate('/article/')"
>
<ArticleIcon
/>
<span
class=
"num"
>
{{
articleNumber
}}
</span>
{{
i18n
.
article
}}
</div>
<hr
/>
<ul
class=
"sticky-article-list"
>
<MyTransition
v-for=
"(article, index) in $starArticles"
:key=
"article.path"
:delay=
"(index + 1) * 0.08"
>
<li
class=
"sticky-article"
@
click=
"navigate(article.path)"
v-text=
"article.title"
/>
</MyTransition>
</ul>
</div>
</MyTransition>
<!-- Category -->
<MyTransition
v-if=
"active === 'category'"
>
<div
class=
"category-wrapper"
>
<div
v-if=
"$category.list.length !== 0"
class=
"title"
@
click=
"navigate('/category/')"
>
<CategoryIcon
/>
<span
class=
"num"
>
{{
$category
.
list
.
length
}}
</span>
{{
i18n
.
category
}}
</div>
<hr
/>
<MyTransition
:delay=
"0.04"
>
<CategoryList
/>
</MyTransition>
</div>
</MyTransition>
<!-- Tags -->
<MyTransition
v-if=
"active === 'tag'"
>
<div
class=
"tag-wrapper"
>
<div
v-if=
"$tag.list.length !== 0"
class=
"title"
@
click=
"navigate('/tag/')"
>
<TagIcon
/>
<span
class=
"num"
>
{{
$tag
.
list
.
length
}}
</span>
{{
i18n
.
tag
}}
</div>
<hr
/>
<MyTransition
:delay=
"0.04"
>
<TagList
/>
</MyTransition>
</div>
</MyTransition>
<!-- Timeline -->
<MyTransition
v-if=
"active === 'timeline'"
>
<TimelineList
/>
</MyTransition>
</div>
</
template
>
<
script
src=
"./BlogInfoList"
/>
<
style
lang
=
"
stylus
"
>
@
require
'
~@mr-hope/vuepress-shared/styles/reset
'
.
blog
-
info
-
list
margin
8
px
auto
padding
8
px
16
px
.
page
&
background
var
(
--
bgcolor
)
border
-
radius
6
px
box
-
shadow
0
1
px
3
px
0
var
(
--
card
-
shadow
-
color
)
&
:
hover
box
-
shadow
0
2
px
6
px
0
var
(
--
card
-
shadow
-
color
)
.
switch
-
wrapper
display
flex
justify
-
content
center
margin
-
bottom
8
px
.
switch
-
button
button
()
width
44
px
height
44
px
margin
0
8
px
padding
4
px
color
var
(
--
grey3
)
&
:
focus
outline
none
.
icon
-
wapper
width
20
px
height
20
px
padding
8
px
border
-
radius
50
%
background
rgba
(
127
,
127
,
127
,
0.15
)
.
theme
-
dark
&
background
rgba
(
255
,
255
,
255
,
0.15
)
&
:
hover
cursor
pointer
&
.
active
.
theme
-
light
&
background
var
(
--
accent
-
color
-
l10
)
.
theme
-
dark
&
background
var
(
--
accent
-
color
-
d10
)
.
icon
width
100
%
height
100
%
.
sticky
-
article
-
wrapper
,
.
category
-
wrapper
,
.
tag
-
wrapper
padding
8
px
0
.
title
cursor
pointer
.
icon
position
relative
bottom
-
0.125
rem
width
16
px
height
16
px
margin
0
6
px
.
num
position
relative
margin
0
2
px
font
-
size
22
px
.
sticky
-
article
-
wrapper
.
sticky
-
article
-
list
margin
8
px
auto
.
sticky
-
article
padding
12
px
8
px
4
px
border
-
bottom
1
px
dashed
var
(
--
grey14
)
&
:
hover
cursor
pointer
color
var
(
--
accent
-
color
)
.
category
-
wrapper
.
category
-
list
-
wrapper
margin
8
px
auto
.
tag
-
wrapper
.
tag
-
list
-
wrapper
margin
8
px
auto
.
page
&
.
timeline
-
list
-
wrapper
.
content
max
-
height
60
vh
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/BlogPage.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
unknown
,
{
showArticles
:
boolean
;
componentName
:
string
;
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/BlogPage.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
ArticleList
from
"
@theme/components/Blog/ArticleList.vue
"
;
import
ArticleType
from
"
@theme/components/Blog/ArticleType.vue
"
;
import
BlogInfo
from
"
@BlogInfo
"
;
import
CategoryList
from
"
@theme/components/Blog/CategoryList.vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
TagList
from
"
@theme/components/Blog/TagList.vue
"
;
import
Timeline
from
"
@theme/components/Blog/Timeline.vue
"
;
import
TimelineList
from
"
@theme/components/Blog/TimelineList.vue
"
;
export
default
Vue
.
extend
({
name
:
"
BlogPage
"
,
components
:
{
ArticleList
,
ArticleType
,
BlogInfo
,
CategoryList
,
MyTransition
,
TagList
,
Timeline
,
TimelineList
,
},
computed
:
{
showArticles
()
{
const
{
path
}
=
this
.
$route
;
return
!
path
.
includes
(
"
/timeline
"
);
},
componentName
()
{
const
pathName
=
this
.
$route
.
path
.
split
(
"
/
"
)[
1
];
if
([
"
category
"
,
"
tag
"
].
includes
(
pathName
))
return
`
${
pathName
}
List`
;
else
if
(
pathName
===
"
timeline
"
)
return
pathName
;
return
"
articleType
"
;
},
},
});
//# sourceMappingURL=BlogPage.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogPage.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"BlogPage.js","sourceRoot":"","sources":["BlogPage.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,WAAW,MAAM,wCAAwC,CAAC;AACjE,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,YAAY,MAAM,yCAAyC,CAAC;AAEnE,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE;QACV,WAAW;QACX,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,OAAO;QACP,QAAQ;QACR,YAAY;KACb;IAED,QAAQ,EAAE;QACR,YAAY;YACV,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAE7B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,aAAa;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhD,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,GAAG,QAAQ,MAAM,CAAC;iBAChE,IAAI,QAAQ,KAAK,UAAU;gBAAE,OAAO,QAAQ,CAAC;YAElD,OAAO,aAAa,CAAC;QACvB,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BlogPage.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<main
class=
"blog-page"
>
<MyTransition>
<component
:is=
"componentName"
v-if=
"componentName"
/>
</MyTransition>
<MyTransition
:delay=
"0.24"
>
<ArticleList
v-if=
"showArticles"
:key=
"$route.path"
/>
</MyTransition>
</main>
</
template
>
<
script
src=
"./BlogPage"
/>
<
style
lang
=
"
stylus
"
>
.
blog
-
page
max
-
width
780
px
flex
1
@
media
(
min
-
width
$MQMobile
)
margin
0
15
px
.
article
-
title
font
-
size
1.8
rem
margin
10
px
15
px
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/BloggerInfo.d.ts
deleted
100644 → 0
View file @
45c15a62
import
MediaLinks
from
"
@theme/components/MediaLinks.vue
"
;
import
type
{
BlogOptions
}
from
"
@theme/types
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
{
$timelineItems
:
import
(
"
@mr-hope/vuepress-types
"
).
PageComputed
[];
$timeline
:
import
(
"
@theme/mixins/timeline
"
).
TimelineItem
[];
}
&
Record
<
never
,
any
>
&
MediaLinks
,
unknown
,
{
navigate
(
url
:
string
):
void
;
jumpIntro
():
void
;
},
{
blogConfig
:
BlogOptions
;
bloggerName
:
string
;
bloggerAvatar
:
string
;
hasIntro
:
boolean
;
hintAttr
:
string
;
i18n
:
{
article
:
string
;
articleList
:
string
;
category
:
string
;
tag
:
string
;
timeline
:
string
;
timelineText
:
string
;
allText
:
string
;
intro
:
string
;
star
:
string
;
slides
:
string
;
encrypt
:
string
;
};
articleNumber
:
number
;
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/BloggerInfo.js
deleted
100644 → 0
View file @
45c15a62
import
{
getDefaultLocale
}
from
"
@mr-hope/vuepress-shared
"
;
import
MediaLinks
from
"
@theme/components/MediaLinks.vue
"
;
import
{
timelineMixin
}
from
"
@theme/mixins/timeline
"
;
import
{
filterArticle
}
from
"
@theme/utils/article
"
;
import
{
navigate
}
from
"
@theme/utils/navigate
"
;
export
default
timelineMixin
.
extend
({
name
:
"
BloggerInfo
"
,
components
:
{
MediaLinks
},
computed
:
{
blogConfig
()
{
return
this
.
$themeConfig
.
blog
||
{};
},
bloggerName
()
{
return
(
this
.
blogConfig
.
name
||
this
.
$themeConfig
.
author
||
this
.
$site
.
title
||
""
);
},
bloggerAvatar
()
{
return
this
.
blogConfig
.
avatar
||
this
.
$themeConfig
.
logo
||
""
;
},
hasIntro
()
{
return
Boolean
(
this
.
blogConfig
.
intro
);
},
hintAttr
()
{
return
this
.
hasIntro
?
"
aria-label
"
:
""
;
},
i18n
()
{
return
this
.
$themeLocaleConfig
.
blog
||
getDefaultLocale
().
blog
;
},
articleNumber
()
{
return
filterArticle
(
this
.
$site
.
pages
).
length
;
},
},
methods
:
{
navigate
(
url
)
{
navigate
(
url
,
this
.
$router
,
this
.
$route
);
},
jumpIntro
()
{
if
(
this
.
hasIntro
)
navigate
(
this
.
blogConfig
.
intro
,
this
.
$router
,
this
.
$route
);
},
},
});
//# sourceMappingURL=BloggerInfo.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BloggerInfo.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"BloggerInfo.js","sourceRoot":"","sources":["BloggerInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,UAAU,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKjD,eAAe,aAAa,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,aAAa;IAEnB,UAAU,EAAE,EAAE,UAAU,EAAE;IAE1B,QAAQ,EAAE;QACR,UAAU;YACR,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,WAAW;YACT,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,IAAI;gBACpB,IAAI,CAAC,YAAY,CAAC,MAAM;gBACxB,IAAI,CAAC,KAAK,CAAC,KAAK;gBAChB,EAAE,CACH,CAAC;QACJ,CAAC;QAED,aAAa;YACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,QAAQ;YACN,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,QAAQ;YACN,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,IAAI;YACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC,IAAI,CAAC;QACjE,CAAC;QAED,aAAa;YACX,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC;KACF;IAED,OAAO,EAAE;QACP,QAAQ,CAAC,GAAW;YAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,SAAS;YACP,IAAI,IAAI,CAAC,QAAQ;gBACf,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAe,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/BloggerInfo.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
class=
"blogger-info"
vocab=
"https://schema.org/"
typeof=
"Person"
>
<div
class=
"blogger"
:class=
"
{ hasIntro }"
:[hintAttr]="hasIntro ? i18n.intro : ''"
:data-balloon-pos="hasIntro ? 'down' : ''"
role="navigation"
@click="jumpIntro"
>
<img
v-if=
"bloggerAvatar"
class=
"avatar"
:class=
"
{ round: blogConfig.roundAvatar !== false }"
property="image"
alt="Blogger Avatar"
:src="$withBase(bloggerAvatar)"
/>
<div
v-if=
"bloggerName"
class=
"name"
property=
"name"
v-text=
"bloggerName"
/>
<meta
v-if=
"hasIntro"
property=
"url"
:content=
"$withBase(blogConfig.intro)"
/>
</div>
<div
class=
"num-wrapper"
>
<div
@
click=
"navigate('/article/')"
>
<div
class=
"num"
>
{{
articleNumber
}}
</div>
<div>
{{
i18n
.
article
}}
</div>
</div>
<div
@
click=
"navigate('/category/')"
>
<div
class=
"num"
>
{{
$category
.
list
.
length
}}
</div>
<div>
{{
i18n
.
category
}}
</div>
</div>
<div
@
click=
"navigate('/tag/')"
>
<div
class=
"num"
>
{{
$tag
.
list
.
length
}}
</div>
<div>
{{
i18n
.
tag
}}
</div>
</div>
<div
@
click=
"navigate('/timeline/')"
>
<div
class=
"num"
>
{{
$timelineItems
.
length
}}
</div>
<div>
{{
i18n
.
timeline
}}
</div>
</div>
</div>
<MediaLinks
/>
</div>
</
template
>
<
script
src=
"./BloggerInfo"
/>
<
style
lang
=
"
stylus
"
>
.
blogger
-
info
.
page
&
background
var
(
--
bgcolor
)
.
blogger
padding
8
px
0
text
-
align
center
&
.
hasIntro
cursor
pointer
.
avatar
width
128
px
height
128
px
margin
0
auto
&
.
round
border
-
radius
50
%
.
name
margin
16
px
auto
font
-
size
22
px
.
num
-
wrapper
display
flex
margin
0
auto
16
px
width
80
%
>
div
width
25
%
text
-
align
center
font
-
size
13
px
cursor
pointer
&
:
hover
color
var
(
--
accent
-
color
)
.
num
position
relative
margin
-
bottom
8
px
font
-
weight
600
font
-
size
20
px
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/CategoryList.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
{
capitalize
:
(
word
:
string
)
=>
string
;
clickCategory
(
path
:
string
):
void
;
},
unknown
,
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/CategoryList.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
{
capitalize
}
from
"
@mr-hope/vuepress-shared
"
;
import
{
navigate
}
from
"
@theme/utils/navigate
"
;
export
default
Vue
.
extend
({
name
:
"
CategoryList
"
,
methods
:
{
capitalize
,
clickCategory
(
path
)
{
navigate
(
path
,
this
.
$router
,
this
.
$route
);
},
},
});
//# sourceMappingURL=CategoryList.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/CategoryList.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"CategoryList.js","sourceRoot":"","sources":["CategoryList.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,cAAc;IAEpB,OAAO,EAAE;QACP,UAAU;QAEV,aAAa,CAAC,IAAY;YACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/CategoryList.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<ul
class=
"category-list-wrapper"
>
<li
v-for=
"(category, index) in $category.list"
:key=
"category.path"
class=
"category"
:class=
"
{
active: category.path === $route.path,
[`category${index % 9}`]: true,
}"
@click="clickCategory(category.path)"
>
{{
capitalize
(
category
.
name
)
}}
<span
class=
"category-num"
>
{{
category
.
pages
.
length
}}
</span>
</li>
</ul>
</
template
>
<
script
src=
"./CategoryList"
/>
<
style
lang
=
"
stylus
"
>
$categoryListTextSize
?
=
14
px
.
category
-
list
-
wrapper
position
relative
z
-
index
2
padding
-
left
0
font
-
size
$categoryListTextSize
font
-
family
Arial
,
Helvetica
,
sans
-
serif
list
-
style
none
.
category
display
inline
-
block
vertical
-
align
middle
margin
0.3
rem
0.6
rem
0.8
rem
padding
0.4
rem
0.8
rem
border
-
radius
0.25
rem
box
-
shadow
0
1
px
4
px
0
var
(
--
card
-
shadow
-
color
)
color
var
(
--
dark
-
grey
)
cursor
pointer
overflow
hidden
transition
background
-
color
0.3
s
,
color
0.3
s
@
media
(
max
-
width
$MQMobileNarrow
)
font
-
size
0.9
rem
.
category
-
num
display
inline
-
block
min
-
width
1
rem
height
1.2
rem
margin
-
left
0.2
em
padding
0
0.1
rem
border
-
radius
0.6
rem
color
var
(
--
white
)
font
-
family
sans
-
serif
font
-
size
0.7
rem
line
-
height
1.2
rem
text
-
align
center
@
require
'
~@mr-hope/vuepress-shared/styles/colors.styl
'
for
$color
,
$index
in
$colors
.
category
-
list
-
wrapper
.
category
{
$index
}
&
,
.
theme
-
light
&
background
lighten
(
$color
,
90
%
)
&
:
hover
background
lighten
(
$color
,
75
%
)
&
.
active
background
var
(
--
accent
-
color
)
color
var
(
--
white
)
.
category
-
num
color
var
(
--
accent
-
color
)
background
var
(
--
bgcolor
-
light
)
.
theme
-
dark
&
background
darken
(
$color
,
75
%
)
&
:
hover
background
darken
(
$color
,
60
%
)
&
.
active
background
var
(
--
accent
-
color
-
d10
)
color
var
(
--
white
)
.
category
-
num
background
$color
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/ProjectList.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
{
navigate
(
link
:
string
):
void
;
},
unknown
,
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/ProjectList.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
ArticleIcon
from
"
@theme/icons/ArticleIcon.vue
"
;
import
BookIcon
from
"
@theme/icons/BookIcon.vue
"
;
import
LinkIcon
from
"
@theme/icons/LinkIcon.vue
"
;
import
ProjectIcon
from
"
@theme/icons/ProjectIcon.vue
"
;
import
{
navigate
}
from
"
@theme/utils/navigate
"
;
export
default
Vue
.
extend
({
name
:
"
ProjectList
"
,
components
:
{
ArticleIcon
,
BookIcon
,
LinkIcon
,
ProjectIcon
},
methods
:
{
navigate
(
link
)
{
navigate
(
link
,
this
.
$router
,
this
.
$route
);
},
},
});
//# sourceMappingURL=ProjectList.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ProjectList.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"ProjectList.js","sourceRoot":"","sources":["ProjectList.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,aAAa;IAEnB,UAAU,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE;IAE5D,OAAO,EAAE;QACP,QAAQ,CAAC,IAAY;YACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/ProjectList.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
class=
"project-list"
>
<div
v-for=
"(project, index) in $frontmatter.project || []"
:key=
"project.name"
class=
"project"
:class=
"`project$
{index % 9}`"
@click="navigate(project.link)"
>
<div
v-if=
"project.cover"
class=
"cover"
:style=
"`background: url($
{$withBase(
project.cover
)}) center/cover no-repeat;`"
/>
<component
:is=
"`$
{project.type}-icon`" />
<div
class=
"name"
>
{{
project
.
name
}}
</div>
<div
class=
"desc"
>
{{
project
.
desc
}}
</div>
</div>
</div>
</
template
>
<
script
src=
"./ProjectList"
/>
<
style
lang
=
"
stylus
"
>
.
project
-
list
position
relative
display
flex
justify
-
content
flex
-
start
align
-
content
stretch
align
-
items
stretch
flex
-
wrap
wrap
font
-
family
sans
-
serif
margin
-
bottom
12
px
z
-
index
2
.
project
position
relative
width
calc
(
50
%
-
40
px
)
background
-
color
var
(
--
grey14
)
border
-
radius
8
px
margin
6
px
8
px
padding
12
px
transition
background
-
color
0.3
s
,
transform
0.3
s
@
media
(
min
-
width
$MQNarrow
)
width
calc
(
33
%
-
40
px
)
@
media
(
min
-
width
$MQWide
)
width
calc
(
25
%
-
40
px
)
&
:
hover
cursor
pointer
transform
scale
(
0.98
,
0.98
)
.
cover
content
''
opacity
0.5
top
0
left
0
bottom
0
right
0
position
absolute
z
-
index
1
.
icon
position
relative
z
-
index
2
float
right
width
20
px
height
20
px
.
name
position
relative
z
-
index
2
color
var
(
--
grey3
)
font
-
size
16
px
font
-
weight
500
.
desc
position
relative
z
-
index
2
margin
6
px
0
color
var
(
--
dark
-
grey
)
font
-
size
13
px
@
require
'
~@mr-hope/vuepress-shared/styles/colors.styl
'
for
$color
,
$index
in
$colors
.
project
-
list
.
project
{
$index
}
&
,
.
theme
-
light
&
background
lighten
(
$color
,
90
%
)
&
:
hover
background
lighten
(
$color
,
75
%
)
.
theme
-
dark
&
background
darken
(
$color
,
75
%
)
&
:
hover
background
darken
(
$color
,
60
%
)
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/TagList.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
interface
TagOption
{
name
:
string
;
path
:
string
;
}
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Vue
,
unknown
,
{
isActive
(
name
:
string
):
boolean
;
clickTag
(
path
:
string
):
void
;
},
{
tagList
:
TagOption
[];
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/TagList.js
deleted
100644 → 0
View file @
45c15a62
import
Vue
from
"
vue
"
;
import
{
getDefaultLocale
}
from
"
@mr-hope/vuepress-shared
"
;
import
{
navigate
}
from
"
@theme/utils/navigate
"
;
export
default
Vue
.
extend
({
name
:
"
TagList
"
,
computed
:
{
tagList
()
{
return
[
{
name
:
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this
.
$themeLocaleConfig
.
blog
.
allText
||
getDefaultLocale
().
blog
.
allText
,
path
:
"
/tag/
"
,
},
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
...
this
.
$tag
.
list
,
];
},
},
methods
:
{
isActive
(
name
)
{
return
(
name
===
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
((
this
.
$currentTag
&&
this
.
$currentTag
.
key
)
||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this
.
$themeLocaleConfig
.
blog
.
allText
||
getDefaultLocale
().
blog
.
allText
));
},
clickTag
(
path
)
{
navigate
(
path
,
this
.
$router
,
this
.
$route
);
},
},
});
//# sourceMappingURL=TagList.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/TagList.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"TagList.js","sourceRoot":"","sources":["TagList.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOjD,eAAe,GAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS;IAEf,QAAQ,EAAE;QACR,OAAO;YACL,OAAO;gBACL;oBACE,IAAI;oBACF,oEAAoE;oBACpE,IAAI,CAAC,kBAAkB,CAAC,IAAK,CAAC,OAAO;wBACrC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO;oBACjC,IAAI,EAAE,OAAO;iBACd;gBACD,sEAAsE;gBACtE,GAAI,IAAI,CAAC,IAAI,CAAC,IAAoB;aACnC,CAAC;QACJ,CAAC;KACF;IAED,OAAO,EAAE;QACP,QAAQ,CAAC,IAAY;YACnB,OAAO,CACL,IAAI;gBACJ,sEAAsE;gBACtE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;oBACzC,oEAAoE;oBACpE,IAAI,CAAC,kBAAkB,CAAC,IAAK,CAAC,OAAO;oBACrC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CACnC,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAY;YACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/TagList.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<ul
class=
"tag-list-wrapper"
>
<li
v-for=
"(tag, index) in tagList"
:key=
"tag.path"
class=
"tag"
:class=
"
{ active: isActive(tag.name), [`tag${index % 9}`]: true }"
@click="clickTag(tag.path)"
>
<div
class=
"tag-name"
>
{{
tag
.
name
}}
</div>
</li>
</ul>
</
template
>
<
script
src=
"./TagList"
/>
<
style
lang
=
"
stylus
"
>
.
tag
-
list
-
wrapper
position
relative
z
-
index
2
padding
-
left
0
font
-
family
Arial
,
Helvetica
,
sans
-
serif
list
-
style
none
display
flex
flex
-
wrap
wrap
justify
-
content
space
-
evenly
.
tag
display
inline
-
block
position
relative
vertical
-
align
middle
min
-
width
24
px
margin
4
px
6
px
padding
3
px
8
px
border
-
radius
8
px
box
-
shadow
0
1
px
6
px
0
var
(
--
box
-
shadow
-
color
)
color
var
(
--
white
)
font
-
size
12
px
text
-
align
center
overflow
hidden
cursor
pointer
transition
background
-
color
0.3
s
,
transform
0.3
s
&
:
hover
cursor
pointer
&
.
active
transform
scale
(
1.1
,
1.1
)
@
require
'
~@mr-hope/vuepress-shared/styles/colors.styl
'
for
$color
,
$index
in
$colors
.
tag
-
list
-
wrapper
.
tag
{
$index
}
.
theme
-
light
&
,
&
background
lighten
(
$color
,
10
%
)
&
:
hover
,
&
.
active
background
darken
(
$color
,
5
%
)
.
theme
-
dark
&
background
darken
(
$color
,
5
%
)
&
:
hover
,
&
.
active
background
lighten
(
$color
,
10
%
)
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Blog/Timeline.d.ts
deleted
100644 → 0
View file @
45c15a62
import
Anchor
from
"
@theme/components/Anchor.vue
"
;
import
type
{
SidebarHeader
}
from
"
@theme/utils/groupHeader
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
{
$timelineItems
:
import
(
"
@mr-hope/vuepress-types
"
).
PageComputed
[];
$timeline
:
import
(
"
@theme/mixins/timeline
"
).
TimelineItem
[];
}
&
Record
<
never
,
any
>
&
Anchor
,
unknown
,
{
navigate
(
url
:
string
):
void
;
},
{
hint
:
string
;
anchorConfig
:
SidebarHeader
[];
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/Timeline.js
deleted
100644 → 0
View file @
45c15a62
import
Anchor
from
"
@theme/components/Anchor.vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
{
timelineMixin
}
from
"
@theme/mixins/timeline
"
;
import
{
getDefaultLocale
}
from
"
@mr-hope/vuepress-shared
"
;
export
default
timelineMixin
.
extend
({
name
:
"
Timeline
"
,
components
:
{
Anchor
,
MyTransition
},
computed
:
{
hint
()
{
return
((
this
.
$themeConfig
.
blog
&&
this
.
$themeConfig
.
blog
.
timeline
)
||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this
.
$themeLocaleConfig
.
blog
.
timelineText
||
getDefaultLocale
().
blog
.
timelineText
);
},
anchorConfig
()
{
return
this
.
$timeline
.
map
((
item
)
=>
({
title
:
item
.
year
.
toString
(),
level
:
2
,
slug
:
item
.
year
.
toString
(),
}));
},
},
methods
:
{
navigate
(
url
)
{
void
this
.
$router
.
push
(
url
);
},
},
});
//# sourceMappingURL=Timeline.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/Timeline.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"Timeline.js","sourceRoot":"","sources":["Timeline.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAClD,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,eAAe,aAAa,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,UAAU;IAEhB,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAEpC,QAAQ,EAAE;QACR,IAAI;YACF,OAAO,CACL,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC3D,oEAAoE;gBACpE,IAAI,CAAC,kBAAkB,CAAC,IAAK,CAAC,YAAY;gBAC1C,gBAAgB,EAAE,CAAC,IAAI,CAAC,YAAY,CACrC,CAAC;QACJ,CAAC;QAED,YAAY;YACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC3B,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;aAC3B,CAAC,CAAC,CAAC;QACN,CAAC;KACF;IAED,OAAO,EAAE;QACP,QAAQ,CAAC,GAAW;YAClB,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/Timeline.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
class=
"timeline-wrapper"
>
<ul
class=
"timeline-content"
>
<MyTransition>
<li
class=
"desc"
>
{{
hint
}}
</li>
</MyTransition>
<Anchor
:items=
"anchorConfig"
/>
<MyTransition
v-for=
"(item, index) in $timeline"
:key=
"index"
:delay=
"0.08 * (index + 1)"
>
<li>
<h3
:id=
"item.year"
class=
"year"
>
<span>
{{
item
.
year
}}
</span>
</h3>
<ul
class=
"year-wrapper"
>
<li
v-for=
"(article, articleIndex) in item.articles"
:key=
"articleIndex"
>
<span
class=
"date"
>
{{
article
.
frontmatter
.
parsedDate
}}
</span>
<span
class=
"title"
@
click=
"navigate(article.path)"
>
{{
article
.
title
}}
</span>
</li>
</ul>
</li>
</MyTransition>
</ul>
</div>
</
template
>
<
script
src=
"./Timeline"
/>
<
style
lang
=
"
stylus
"
>
.
timeline
-
wrapper
max
-
width
740
px
margin
0
auto
padding
40
px
0
--
dot
-
color
#
fff
--
dot
-
bar
-
color
#
eaecef
--
dot
-
border
-
color
#
ddd
.
theme
-
dark
&
--
dot
-
color
#
444
--
dot
-
bar
-
color
#
333
--
dot
-
border
-
color
#
555
#
anchor
left
unset
right
0
min
-
width
0
.
anchor
-
wrapper
position
relative
z
-
index
10
.
timeline
-
content
box
-
sizing
border
-
box
position
relative
padding
-
left
76
px
list
-
style
none
&
::
after
content
'
'
position
absolute
top
14
px
left
64
px
z
-
index
-
1
width
4
px
height
calc
(
100
%
-
38
px
)
margin
-
left
-
2
px
background
var
(
--
dot
-
bar
-
color
)
.
desc
position
relative
color
var
(
--
text
-
color
)
font
-
size
18
px
@
media
(
min
-
width
$MQNormal
)
font
-
size
20
px
&
:
before
content
'
'
position
absolute
z
-
index
2
left
-
12
px
top
50
%
width
8
px
height
8
px
margin
-
left
-
6
px
margin
-
top
-
6
px
background
var
(
--
dot
-
color
)
border
2
px
solid
var
(
--
dot
-
border
-
color
)
border
-
radius
50
%
.
year
margin
-
top
0.5
rem
-
$navbarHeight
margin
-
bottom
0.5
rem
padding
-
top
:
(
$navbarHeight
+
3
rem
)
color
var
(
--
text
-
color
)
font
-
size
26
px
font
-
weight
700
span
position
relative
&
:
before
content
'
'
position
absolute
z
-
index
2
left
-
12
px
top
50
%
width
8
px
height
8
px
margin
-
left
-
6
px
margin
-
top
-
6
px
background
var
(
--
dot
-
color
)
border
2
px
solid
var
(
--
dot
-
border
-
color
)
border
-
radius
50
%
.
year
-
wrapper
padding
-
left
0
!
important
li
position
relative
display
flex
padding
30
px
0
10
px
border
-
bottom
1
px
dashed
var
(
--
border
-
color
)
list
-
style
none
&
:
hover
cursor
pointer
.
date
font
-
size
16
px
transition
font
-
size
0.3
s
ease
-
out
&
::
before
background
-
color
var
(
--
bgcolor
)
border
-
color
var
(
--
accent
-
color
)
.
title
color
var
(
--
accent
-
color
)
font
-
size
18
px
transition
font
-
size
0.3
s
ease
-
out
.
date
position
absolute
right
calc
(
100
%
+
24
px
)
text
-
align
right
width
40
px
font
-
size
14
px
line
-
height
30
px
&
::
before
content
'
'
position
absolute
z
-
index
2
right
-
16
px
top
50
%
width
6
px
height
6
px
margin
-
left
-
6
px
margin
-
top
-
6
px
background
var
(
--
dot
-
color
)
border
2
px
solid
var
(
--
dot
-
border
-
color
)
border
-
radius
50
%
.
title
position
relative
font
-
size
16
px
line
-
height
30
px
@
media
(
max
-
width
$MQMobile
)
.
timeline
-
wrapper
margin
0
1.2
rem
<
/style
>
D
docs/op-stack/src/.vuepress/theme/components/Blog/TimelineList.d.ts
deleted
100644 → 0
View file @
45c15a62
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
{
$timelineItems
:
import
(
"
@mr-hope/vuepress-types
"
).
PageComputed
[];
$timeline
:
import
(
"
@theme/mixins/timeline
"
).
TimelineItem
[];
}
&
Record
<
never
,
any
>
&
MyTransition
,
unknown
,
{
navigate
(
url
:
string
):
void
;
},
{
hint
:
string
;
},
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/components/Blog/TimelineList.js
deleted
100644 → 0
View file @
45c15a62
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
TimeIcon
from
"
@mr-hope/vuepress-plugin-comment/lib/client/icons/TimeIcon.vue
"
;
import
{
timelineMixin
}
from
"
@theme/mixins/timeline
"
;
import
{
getDefaultLocale
}
from
"
@mr-hope/vuepress-shared
"
;
export
default
timelineMixin
.
extend
({
name
:
"
TimelineList
"
,
components
:
{
MyTransition
,
TimeIcon
},
computed
:
{
hint
()
{
return
(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this
.
$themeLocaleConfig
.
blog
.
timeline
||
getDefaultLocale
().
blog
.
timeline
);
},
},
methods
:
{
navigate
(
url
)
{
void
this
.
$router
.
push
(
url
);
},
},
});
//# sourceMappingURL=TimelineList.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/TimelineList.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"TimelineList.js","sourceRoot":"","sources":["TimelineList.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,QAAQ,MAAM,gEAAgE,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,eAAe,aAAa,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,cAAc;IAEpB,UAAU,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE;IAEtC,QAAQ,EAAE;QACR,IAAI;YACF,OAAO;YACL,oEAAoE;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAK,CAAC,QAAQ;gBACtC,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CACjC,CAAC;QACJ,CAAC;KACF;IAED,OAAO,EAAE;QACP,QAAQ,CAAC,GAAW;YAClB,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;KACF;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Blog/TimelineList.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<div
class=
"timeline-list-wrapper"
>
<div
class=
"title"
@
click=
"navigate('/timeline/')"
>
<TimeIcon
/>
<span
class=
"num"
>
{{
$timelineItems
.
length
}}
</span>
{{
hint
}}
</div>
<hr
/>
<div
class=
"content"
>
<ul
class=
"timeline-list"
>
<MyTransition
v-for=
"(item, index) in $timeline"
:key=
"index"
:delay=
"0.08 * (index + 1)"
>
<li>
<h3
class=
"year"
>
{{
item
.
year
}}
</h3>
<ul
class=
"year-wrapper"
>
<li
v-for=
"(article, articleIndex) in item.articles"
:key=
"articleIndex"
>
<span
class=
"date"
>
{{
article
.
frontmatter
.
parsedDate
}}
</span>
<span
class=
"timeline-title"
@
click=
"navigate(article.path)"
>
{{
article
.
title
}}
</span>
</li>
</ul>
</li>
</MyTransition>
</ul>
</div>
</div>
</
template
>
<
script
src=
"./TimelineList"
/>
<
style
lang
=
"
stylus
"
>
.
timeline
-
list
-
wrapper
padding
8
px
0
--
dot
-
color
#
fff
--
dot
-
bar
-
color
#
eaecef
--
dot
-
border
-
color
#
ddd
.
theme
-
dark
&
--
dot
-
color
#
444
--
dot
-
bar
-
color
#
333
--
dot
-
border
-
color
#
555
.
title
cursor
pointer
.
icon
position
relative
bottom
-
0.125
rem
width
16
px
height
16
px
margin
0
6
px
.
num
position
relative
margin
0
2
px
font
-
size
22
px
.
content
overflow
-
y
scroll
max
-
height
80
vh
&
::
-
webkit
-
scrollbar
-
track
-
piece
background
transparent
.
timeline
-
list
position
relative
margin
0
8
px
box
-
sizing
border
-
box
list
-
style
none
&
::
after
content
'
'
position
absolute
top
14
px
left
0
z
-
index
-
1
margin
-
left
-
2
px
width
4
px
height
calc
(
100
%
-
14
px
)
background
var
(
--
dot
-
bar
-
color
)
.
year
position
relative
margin
20
px
0
0
px
color
var
(
--
text
-
color
)
font
-
size
20
px
font
-
weight
700
&
:
before
content
'
'
position
absolute
z
-
index
2
left
-
20
px
top
50
%
margin
-
left
-
4
px
margin
-
top
-
4
px
width
8
px
height
8
px
background
var
(
--
dot
-
color
)
border
1
px
solid
var
(
--
dot
-
border
-
color
)
border
-
radius
50
%
.
year
-
wrapper
padding
-
left
0
!
important
li
position
relative
display
flex
padding
12
px
0
4
px
list
-
style
none
border
-
bottom
1
px
dashed
var
(
--
border
-
color
)
&
:
hover
.
date
color
var
(
--
accent
-
color
)
&
::
before
background
var
(
--
accent
-
color
)
border
-
color
var
(
--
dot
-
color
)
.
title
color
var
(
--
accent
-
color
)
.
date
width
36
px
line
-
height
32
px
display
inline
-
block
vertical
-
align
bottom
font
-
size
12
px
&
::
before
content
'
'
position
absolute
left
-
19
px
top
24
px
width
6
px
height
6
px
margin
-
left
-
4
px
background
var
(
--
dot
-
color
)
border
-
radius
50
%
border
1
px
solid
var
(
--
dot
-
border
-
color
)
z
-
index
2
.
timeline
-
title
line
-
height
32
px
font
-
size
14
px
cursor
pointer
<
/style
>
docs/op-stack/src/.vuepress/theme/components/Sidebar/Sidebar.js
View file @
cdd3b9f7
import
Vue
from
"
vue
"
;
import
Vue
from
"
vue
"
;
import
BlogInfo
from
"
@BlogInfo
"
;
import
BloggerInfo
from
"
@BloggerInfo
"
;
import
SidebarNavLinks
from
"
@theme/components/Sidebar/SidebarNavLinks.vue
"
;
import
SidebarNavLinks
from
"
@theme/components/Sidebar/SidebarNavLinks.vue
"
;
import
SidebarLinks
from
"
@theme/components/Sidebar/SidebarLinks.vue
"
;
import
SidebarLinks
from
"
@theme/components/Sidebar/SidebarLinks.vue
"
;
export
default
Vue
.
extend
({
export
default
Vue
.
extend
({
name
:
"
Sidebar
"
,
name
:
"
Sidebar
"
,
components
:
{
components
:
{
BlogInfo
,
BloggerInfo
,
SidebarLinks
,
SidebarLinks
,
SidebarNavLinks
,
SidebarNavLinks
,
},
},
...
@@ -23,4 +19,4 @@ export default Vue.extend({
...
@@ -23,4 +19,4 @@ export default Vue.extend({
},
},
},
},
});
});
//# sourceMappingURL=Sidebar.js.map
//# sourceMappingURL=Sidebar.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/components/Sidebar/Sidebar.vue
View file @
cdd3b9f7
<
template
>
<
template
>
<aside
class=
"sidebar"
>
<aside
class=
"sidebar"
>
<template
v-if=
"sidebarDisplay !== 'none'"
>
<BloggerInfo
:class=
"
{ mobile: sidebarDisplay === 'mobile' }" />
<hr
/>
</
template
>
<slot
name=
"top"
/>
<slot
name=
"top"
/>
<SidebarNavLinks
/>
<SidebarNavLinks
/>
...
@@ -14,8 +9,6 @@
...
@@ -14,8 +9,6 @@
<SidebarLinks
:depth=
"0"
:items=
"items"
/>
<SidebarLinks
:depth=
"0"
:items=
"items"
/>
<slot
name=
"bottom"
/>
<slot
name=
"bottom"
/>
<BlogInfo
v-if=
"$frontmatter.blog && $themeConfig.blog !== false"
/>
</aside>
</aside>
</
template
>
</
template
>
...
...
docs/op-stack/src/.vuepress/theme/layouts/Blog.d.ts
deleted
100644 → 0
View file @
45c15a62
import
BlogInfo
from
"
@BlogInfo
"
;
declare
const
_default
:
import
(
"
vue/types/vue
"
).
ExtendedVue
<
Record
<
never
,
any
>
&
{
globalEncryptPassword
:
string
;
}
&
{
checkGlobalPassword
(
globalPassword
:
string
):
void
;
}
&
{
isGlobalEncrypted
:
boolean
;
}
&
{
encryptOptions
:
import
(
"
../types
"
).
EncryptOptions
;
}
&
BlogInfo
,
unknown
,
unknown
,
unknown
,
Record
<
never
,
any
>>
;
export
default
_default
;
docs/op-stack/src/.vuepress/theme/layouts/Blog.js
deleted
100644 → 0
View file @
45c15a62
import
BlogInfo
from
"
@BlogInfo
"
;
import
BlogPage
from
"
@BlogPage
"
;
import
Common
from
"
@theme/components/Common.vue
"
;
import
MyTransition
from
"
@theme/components/MyTransition.vue
"
;
import
{
globalEncryptMixin
}
from
"
@theme/mixins/globalEncrypt
"
;
import
{
pathEncryptMixin
}
from
"
@theme/mixins/pathEncrypt
"
;
import
Password
from
"
@theme/components/Password.vue
"
;
export
default
globalEncryptMixin
.
extend
(
pathEncryptMixin
).
extend
({
components
:
{
BlogInfo
,
BlogPage
,
Common
,
MyTransition
,
Password
,
},
});
//# sourceMappingURL=Blog.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/layouts/Blog.js.map
deleted
100644 → 0
View file @
45c15a62
{"version":3,"file":"Blog.js","sourceRoot":"","sources":["Blog.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAClD,OAAO,YAAY,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,QAAQ,MAAM,gCAAgC,CAAC;AAEtD,eAAe,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;IAChE,UAAU,EAAE;QACV,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,QAAQ;KACT;CACF,CAAC,CAAC"}
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/layouts/Blog.vue
deleted
100644 → 0
View file @
45c15a62
<
template
>
<Common
:sidebar=
"false"
>
<template
#sidebar-bottom
>
<BlogInfo
/>
</
template
>
<Password
v-if=
"isGlobalEncrypted"
@
password-verify=
"checkGlobalPassword"
/>
<Password
v-else-if=
"isPathEncrypted"
@
password-verify=
"checkPathPassword"
/>
<main
v-else
class=
"page blog"
>
<div
class=
"blog-page-wrapper"
>
<BlogPage
/>
<MyTransition
:delay=
"0.16"
>
<BlogInfo
/>
</MyTransition>
</div>
</main>
</Common>
</template>
<
script
src=
"./Blog"
/>
<
style
lang
=
"
stylus
"
>
.
page
.
blog
box
-
sizing
border
-
box
min
-
height
100
vh
margin
0
px
auto
padding
-
top
$navbarHeight
padding
-
bottom
2
rem
background
var
(
--
bgcolor
-
light
)
display
flex
flex
-
direction
column
justify
-
content
space
-
between
@
media
(
max
-
width
$MQMobile
)
padding
$navbarMobileHeight
1.5
rem
2
rem
@
media
(
max
-
width
$MQMobileNarrow
)
padding
-
left
0
padding
-
right
0
.
blog
-
page
-
wrapper
box
-
sizing
border
-
box
width
100
%
margin
0
auto
display
flex
justify
-
content
center
align
-
items
flex
-
start
@
media
(
min
-
width
$MQMobile
)
padding
0
1
rem
@
media
(
min
-
width
$MQNarrow
)
padding
0
2
rem
@
media
(
min
-
width
$MQWide
)
padding
0
<
/style
>
docs/op-stack/src/.vuepress/theme/layouts/Layout.js
View file @
cdd3b9f7
import
Vue
from
"
vue
"
;
import
Vue
from
"
vue
"
;
import
BlogInfo
from
"
@BlogInfo
"
;
import
BlogHome
from
"
@BlogHome
"
;
import
ContentBottom
from
"
@ContentBottom
"
;
import
ContentBottom
from
"
@ContentBottom
"
;
import
ContentTop
from
"
@ContentTop
"
;
import
ContentTop
from
"
@ContentTop
"
;
import
NavbarStart
from
"
@NavbarStart
"
;
import
NavbarStart
from
"
@NavbarStart
"
;
...
@@ -17,8 +15,6 @@ import Page from "@theme/components/Page.vue";
...
@@ -17,8 +15,6 @@ import Page from "@theme/components/Page.vue";
export
default
Vue
.
extend
({
export
default
Vue
.
extend
({
name
:
"
Layout
"
,
name
:
"
Layout
"
,
components
:
{
components
:
{
BlogInfo
,
BlogHome
,
Common
,
Common
,
ContentBottom
,
ContentBottom
,
ContentTop
,
ContentTop
,
...
@@ -34,4 +30,4 @@ export default Vue.extend({
...
@@ -34,4 +30,4 @@ export default Vue.extend({
SidebarTop
,
SidebarTop
,
},
},
});
});
//# sourceMappingURL=Layout.js.map
//# sourceMappingURL=Layout.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/layouts/Layout.vue
View file @
cdd3b9f7
...
@@ -43,9 +43,7 @@
...
@@ -43,9 +43,7 @@
</
template
>
</
template
>
<
template
#default
="
slotProps
"
>
<
template
#default
="
slotProps
"
>
<BlogHome
v-if=
"$frontmatter.blog && $themeConfig.blog !== false"
/>
<Home
v-if=
"$frontmatter.home"
/>
<Home
v-else-if=
"$frontmatter.home"
/>
<Page
<Page
v-else
v-else
...
...
docs/op-stack/src/.vuepress/theme/node/alias.js
View file @
cdd3b9f7
...
@@ -7,7 +7,6 @@ const getAlias = (themeConfig, ctx) => {
...
@@ -7,7 +7,6 @@ const getAlias = (themeConfig, ctx) => {
// Resolve algolia
// Resolve algolia
const
isAlgoliaSearch
=
Boolean
(
themeConfig
.
algolia
)
||
const
isAlgoliaSearch
=
Boolean
(
themeConfig
.
algolia
)
||
Object
.
keys
((
siteConfig
.
locales
&&
themeConfig
.
locales
)
||
{}).
some
((
base
)
=>
themeConfig
.
locales
[
base
].
algolia
);
Object
.
keys
((
siteConfig
.
locales
&&
themeConfig
.
locales
)
||
{}).
some
((
base
)
=>
themeConfig
.
locales
[
base
].
algolia
);
const
blogEnabled
=
themeConfig
.
blog
!==
false
;
const
commentEnabled
=
themeConfig
.
comment
&&
const
commentEnabled
=
themeConfig
.
comment
&&
themeConfig
.
comment
.
type
&&
themeConfig
.
comment
.
type
&&
themeConfig
.
comment
.
type
!==
"
disable
"
;
themeConfig
.
comment
.
type
!==
"
disable
"
;
...
@@ -20,18 +19,6 @@ const getAlias = (themeConfig, ctx) => {
...
@@ -20,18 +19,6 @@ const getAlias = (themeConfig, ctx) => {
?
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/AlgoliaSearch/Full.vue
"
)
?
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/AlgoliaSearch/Full.vue
"
)
:
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/AlgoliaSearch/Dropdown.vue
"
)
:
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/AlgoliaSearch/Dropdown.vue
"
)
:
noopModule
,
:
noopModule
,
"
@BlogInfo
"
:
blogEnabled
?
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/Blog/BlogInfo.vue
"
)
:
noopModule
,
"
@BloggerInfo
"
:
blogEnabled
?
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/Blog/BloggerInfo.vue
"
)
:
noopModule
,
"
@BlogHome
"
:
blogEnabled
?
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/Blog/BlogHome.vue
"
)
:
noopModule
,
"
@BlogPage
"
:
blogEnabled
?
(
0
,
path_1
.
resolve
)(
__dirname
,
"
../components/Blog/BlogPage.vue
"
)
:
noopModule
,
"
@ContentTop
"
:
custom
.
contentTop
"
@ContentTop
"
:
custom
.
contentTop
?
(
0
,
path_1
.
resolve
)(
ctx
.
sourceDir
,
"
.vuepress
"
,
custom
.
contentTop
)
?
(
0
,
path_1
.
resolve
)(
ctx
.
sourceDir
,
"
.vuepress
"
,
custom
.
contentTop
)
:
noopModule
,
:
noopModule
,
...
@@ -71,4 +58,4 @@ const getAlias = (themeConfig, ctx) => {
...
@@ -71,4 +58,4 @@ const getAlias = (themeConfig, ctx) => {
};
};
};
};
exports
.
getAlias
=
getAlias
;
exports
.
getAlias
=
getAlias
;
//# sourceMappingURL=alias.js.map
//# sourceMappingURL=alias.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/node/plugins.js
View file @
cdd3b9f7
...
@@ -24,29 +24,6 @@ const getPluginConfig = (themeConfig) => {
...
@@ -24,29 +24,6 @@ const getPluginConfig = (themeConfig) => {
?
{
delay
:
themeConfig
.
smoothScroll
}
?
{
delay
:
themeConfig
.
smoothScroll
}
:
themeConfig
.
smoothScroll
||
{
delay
:
500
},
:
themeConfig
.
smoothScroll
||
{
delay
:
500
},
],
],
[
"
@vuepress/blog
"
,
themeConfig
.
blog
===
false
?
false
:
{
frontmatters
:
[
{
id
:
"
tag
"
,
keys
:
[
"
tag
"
,
"
tags
"
],
path
:
"
/tag/
"
,
layout
:
"
Blog
"
,
scopeLayout
:
"
Blog
"
,
},
{
id
:
"
category
"
,
keys
:
[
"
category
"
,
"
categories
"
],
path
:
"
/category/
"
,
layout
:
"
Blog
"
,
scopeLayout
:
"
Blog
"
,
},
],
},
],
[
"
@vuepress/last-updated
"
,
false
],
[
"
@vuepress/last-updated
"
,
false
],
"
@vuepress/nprogress
"
,
"
@vuepress/nprogress
"
,
[
[
...
@@ -88,4 +65,4 @@ const getPluginConfig = (themeConfig) => {
...
@@ -88,4 +65,4 @@ const getPluginConfig = (themeConfig) => {
];
];
};
};
exports
.
getPluginConfig
=
getPluginConfig
;
exports
.
getPluginConfig
=
getPluginConfig
;
//# sourceMappingURL=plugins.js.map
//# sourceMappingURL=plugins.js.map
\ No newline at end of file
docs/op-stack/src/.vuepress/theme/types/declare.d.ts
View file @
cdd3b9f7
...
@@ -16,30 +16,6 @@ declare module "@AlgoliaSearchBox" {
...
@@ -16,30 +16,6 @@ declare module "@AlgoliaSearchBox" {
export
default
vue
;
export
default
vue
;
}
}
declare
module
"
@BlogHome
"
{
import
vue
from
"
vue
"
;
export
default
vue
;
}
declare
module
"
@BlogInfo
"
{
import
vue
from
"
vue
"
;
export
default
vue
;
}
declare
module
"
@BloggerInfo
"
{
import
vue
from
"
vue
"
;
export
default
vue
;
}
declare
module
"
@BlogPage
"
{
import
vue
from
"
vue
"
;
export
default
vue
;
}
declare
module
"
@Comment
"
{
declare
module
"
@Comment
"
{
import
vue
from
"
vue
"
;
import
vue
from
"
vue
"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment