@rspress/plugin-preview 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/virtual-demo.js +1 -1
- package/package.json +2 -2
- package/static/global-components/Container.scss +7 -8
- package/static/global-components/Container.tsx +8 -8
- package/static/global-components/DemoBlock.scss +4 -4
- package/static/global-components/DemoBlock.tsx +3 -3
- package/static/global-components/Device.scss +19 -17
- package/static/global-components/Device.tsx +7 -8
- package/static/global-components/common/mobile-operation.tsx +2 -2
- package/static/global-styles/mobile.css +14 -14
- package/static/global-styles/web.css +4 -4
package/dist/virtual-demo.js
CHANGED
@@ -47,7 +47,7 @@ function styleInject(css, ref) {
|
|
47
47
|
var style_inject_es_default = styleInject;
|
48
48
|
|
49
49
|
// src/virtual-demo.scss
|
50
|
-
var css_248z = ":root {\n --
|
50
|
+
var css_248z = ":root {\n --rp-iframe-bg: var(--rp-code-block-bg);\n}\n\nbody {\n background-color: var(--rp-iframe-bg);\n}\n\n.preview-nav {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 56px;\n background-color: var(--rp-c-bg);\n font-weight: 600;\n font-size: 17px;\n}";
|
51
51
|
style_inject_es_default(css_248z);
|
52
52
|
|
53
53
|
// src/virtual-demo.tsx
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@rspress/plugin-preview",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.3",
|
4
4
|
"description": "A plugin for rspress to preview the code block in markdown/mdx file.",
|
5
5
|
"bugs": "https://github.com/web-infra-dev/rspress/issues",
|
6
6
|
"repository": {
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"@modern-js/utils": "2.30.0",
|
25
25
|
"qrcode.react": "^3.1.0",
|
26
26
|
"remark-gfm": "3.0.1",
|
27
|
-
"@rspress/shared": "0.0.
|
27
|
+
"@rspress/shared": "0.0.3"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
30
30
|
"@types/mdast": "^3.0.10",
|
@@ -1,15 +1,14 @@
|
|
1
1
|
:root {
|
2
|
-
--
|
3
|
-
--
|
4
|
-
|
2
|
+
--rp-preview-button-hover-bg: #e5e6eb;
|
3
|
+
--rp-preview-button-bg: #e5e6eb;
|
5
4
|
}
|
6
5
|
|
7
6
|
.dark {
|
8
|
-
--
|
9
|
-
--
|
7
|
+
--rp-preview-button-hover-bg: #c5c5c5;
|
8
|
+
--rp-preview-button-bg: #c5c5c5;
|
10
9
|
}
|
11
10
|
|
12
|
-
.
|
11
|
+
.rspress-preview {
|
13
12
|
padding: 16px 0;
|
14
13
|
|
15
14
|
&-operations {
|
@@ -20,11 +19,11 @@
|
|
20
19
|
text-align: center;
|
21
20
|
border-radius: 50%;
|
22
21
|
border: 1px solid transparent;
|
23
|
-
background-color: var(--
|
22
|
+
background-color: var(--rp-c-bg-soft);
|
24
23
|
margin-left: 14px;
|
25
24
|
|
26
25
|
&:hover {
|
27
|
-
background-color: var(--
|
26
|
+
background-color: var(--rp-preview-button-hover-bg);
|
28
27
|
}
|
29
28
|
}
|
30
29
|
|
@@ -36,18 +36,18 @@ const Container: React.FC<ContainerProps> = props => {
|
|
36
36
|
|
37
37
|
return (
|
38
38
|
<NoSSR>
|
39
|
-
<div className="
|
39
|
+
<div className="rspress-preview">
|
40
40
|
{isMobile === 'true' ? (
|
41
|
-
<div className="
|
42
|
-
<div className="
|
43
|
-
<div className="
|
41
|
+
<div className="rspress-preview-wrapper flex">
|
42
|
+
<div className="rspress-preview-code">{children?.[0]}</div>
|
43
|
+
<div className="rspress-preview-device">
|
44
44
|
<iframe src={getPageUrl()} key={iframeKey}></iframe>
|
45
45
|
<MobileOperation url={url} refresh={refresh} />
|
46
46
|
</div>
|
47
47
|
</div>
|
48
48
|
) : (
|
49
49
|
<div>
|
50
|
-
<div className="
|
50
|
+
<div className="rspress-preview-card">
|
51
51
|
<div
|
52
52
|
style={{
|
53
53
|
overflow: 'auto',
|
@@ -56,7 +56,7 @@ const Container: React.FC<ContainerProps> = props => {
|
|
56
56
|
>
|
57
57
|
{children?.[1]}
|
58
58
|
</div>
|
59
|
-
<div className="
|
59
|
+
<div className="rspress-preview-operations web">
|
60
60
|
<button
|
61
61
|
onClick={toggleCode}
|
62
62
|
aria-label={lang === 'zh' ? '收起代码' : ''}
|
@@ -69,8 +69,8 @@ const Container: React.FC<ContainerProps> = props => {
|
|
69
69
|
<div
|
70
70
|
className={`${
|
71
71
|
showCode
|
72
|
-
? '
|
73
|
-
: '
|
72
|
+
? 'rspress-preview-code-show'
|
73
|
+
: 'rspress-preview-code-hide'
|
74
74
|
}`}
|
75
75
|
>
|
76
76
|
{children?.[0]}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
:root {
|
2
|
-
--
|
2
|
+
--rp-demo-block-bg: #f7f8fa;
|
3
3
|
}
|
4
4
|
|
5
5
|
.dark {
|
6
|
-
--
|
6
|
+
--rp-demo-block-bg: #1a1a1a;
|
7
7
|
}
|
8
8
|
|
9
|
-
.
|
9
|
+
.rspress-demo-block {
|
10
10
|
padding-bottom: 12px;
|
11
|
-
background-color: var(--
|
11
|
+
background-color: var(--rp-demo-block-bg);
|
12
12
|
&-title {
|
13
13
|
padding: 12px 12px 8px;
|
14
14
|
color: #697b8c;
|
@@ -8,9 +8,9 @@ interface Props {
|
|
8
8
|
export default (props: Props) => {
|
9
9
|
const { title, children } = props;
|
10
10
|
return (
|
11
|
-
<div className="
|
12
|
-
<div className="
|
13
|
-
<div className="
|
11
|
+
<div className="rspress-demo-block">
|
12
|
+
<div className="rspress-demo-block-title">{title}</div>
|
13
|
+
<div className="rspress-demo-block-main">{children}</div>
|
14
14
|
</div>
|
15
15
|
);
|
16
16
|
};
|
@@ -1,46 +1,48 @@
|
|
1
1
|
.fixed-device {
|
2
2
|
display: none;
|
3
3
|
position: fixed;
|
4
|
-
top: calc(var(--
|
4
|
+
top: calc(var(--rp-nav-height) + var(--rp-preview-padding));
|
5
5
|
overflow: hidden;
|
6
6
|
}
|
7
7
|
|
8
8
|
.fixed-iframe {
|
9
|
-
height: var(--
|
10
|
-
max-height: calc(
|
9
|
+
height: var(--rp-device-height);
|
10
|
+
max-height: calc(
|
11
|
+
100vh - var(--rp-preview-padding) * 2 - var(--rp-nav-height)
|
12
|
+
);
|
11
13
|
width: 360px;
|
12
14
|
pointer-events: auto;
|
13
|
-
border-radius: var(--
|
14
|
-
|
15
|
+
border-radius: var(--rp-device-border-radius) var(--rp-device-border-radius) 0
|
16
|
+
0;
|
17
|
+
border: var(--rp-device-border);
|
15
18
|
}
|
16
19
|
|
17
20
|
.fixed-operation {
|
18
|
-
border: var(--
|
21
|
+
border: var(--rp-device-border);
|
19
22
|
border-top: 0;
|
20
|
-
border-radius: 0 0 var(--
|
23
|
+
border-radius: 0 0 var(--rp-device-border-radius)
|
24
|
+
var(--rp-device-border-radius);
|
21
25
|
}
|
22
26
|
|
23
27
|
:root {
|
24
|
-
--
|
25
|
-
--
|
26
|
-
--
|
27
|
-
--
|
28
|
+
--rp-device-width: 360px;
|
29
|
+
--rp-device-height: 640px;
|
30
|
+
--rp-device-border-radius: 20px;
|
31
|
+
--rp-device-border: 1px solid #e5e6e8;
|
28
32
|
}
|
29
33
|
|
30
|
-
|
31
|
-
@media (min-width: 960px){
|
34
|
+
@media (min-width: 960px) {
|
32
35
|
.fixed-device {
|
33
36
|
display: inline;
|
34
|
-
left: calc(1280px - var(--
|
37
|
+
left: calc(1280px - var(--rp-device-width) - var(--rp-preview-padding));
|
35
38
|
right: auto;
|
36
39
|
}
|
37
40
|
}
|
38
41
|
|
39
|
-
@media (min-width: 1280px){
|
42
|
+
@media (min-width: 1280px) {
|
40
43
|
.fixed-device {
|
41
44
|
display: inline;
|
42
|
-
right: var(--
|
45
|
+
right: var(--rp-preview-padding);
|
43
46
|
left: auto;
|
44
47
|
}
|
45
48
|
}
|
46
|
-
|
@@ -38,9 +38,8 @@ export default () => {
|
|
38
38
|
useEffect(() => {
|
39
39
|
const root = document.querySelector(':root');
|
40
40
|
if (root) {
|
41
|
-
const defaultAsideWidth =
|
42
|
-
'--
|
43
|
-
);
|
41
|
+
const defaultAsideWidth =
|
42
|
+
getComputedStyle(root).getPropertyValue('--rp-aside-width');
|
44
43
|
setAsideWidth(defaultAsideWidth);
|
45
44
|
}
|
46
45
|
const handleResize = () => {
|
@@ -51,28 +50,28 @@ export default () => {
|
|
51
50
|
}, []);
|
52
51
|
|
53
52
|
useEffect(() => {
|
54
|
-
const node = document.querySelector('.
|
53
|
+
const node = document.querySelector('.rspress-doc-container');
|
55
54
|
const { style } = document.documentElement;
|
56
55
|
if (haveDemos) {
|
57
56
|
if (innerWidth > 1280) {
|
58
57
|
node?.setAttribute(
|
59
58
|
'style',
|
60
|
-
'padding-right: calc(var(--
|
59
|
+
'padding-right: calc(var(--rp-device-width) + var(--rp-preview-padding) * 2)',
|
61
60
|
);
|
62
61
|
} else if (innerWidth > 960) {
|
63
62
|
node?.setAttribute(
|
64
63
|
'style',
|
65
64
|
`padding-right: calc(${
|
66
65
|
innerWidth - 1280
|
67
|
-
}px + var(--
|
66
|
+
}px + var(--rp-device-width) + var(--rp-preview-padding) * 2)`,
|
68
67
|
);
|
69
68
|
} else {
|
70
69
|
node?.removeAttribute('style');
|
71
70
|
}
|
72
|
-
style.setProperty('--
|
71
|
+
style.setProperty('--rp-aside-width', '0');
|
73
72
|
} else {
|
74
73
|
node?.removeAttribute('style');
|
75
|
-
style.setProperty('--
|
74
|
+
style.setProperty('--rp-aside-width', asideWidth);
|
76
75
|
}
|
77
76
|
}, [haveDemos, asideWidth, innerWidth]);
|
78
77
|
|
@@ -84,13 +84,13 @@ export default (props: {
|
|
84
84
|
}, [showQRCode]);
|
85
85
|
|
86
86
|
return (
|
87
|
-
<div className={`
|
87
|
+
<div className={`rspress-preview-operations mobile ${className}`}>
|
88
88
|
<button onClick={refresh} aria-label={t.refresh}>
|
89
89
|
<IconRefresh />
|
90
90
|
</button>
|
91
91
|
<div className="relative" ref={triggerRef}>
|
92
92
|
{showQRCode && (
|
93
|
-
<div className="
|
93
|
+
<div className="rspress-preview-qrcode">
|
94
94
|
<QRCodeSVG value={getPageUrl()} size={96} />
|
95
95
|
</div>
|
96
96
|
)}
|
@@ -1,35 +1,35 @@
|
|
1
|
-
:root .
|
1
|
+
:root .rspress-preview div[class*='language-'] {
|
2
2
|
margin: 0;
|
3
3
|
border-radius: 0;
|
4
4
|
height: 100%;
|
5
5
|
}
|
6
6
|
|
7
7
|
:root {
|
8
|
-
--
|
8
|
+
--rp-preview-padding: 32px;
|
9
9
|
}
|
10
10
|
|
11
11
|
@media (min-width: 1280px) {
|
12
|
-
.
|
13
|
-
width: calc(100% - var(--
|
14
|
-
margin-left: var(--
|
12
|
+
.rspress-doc-layout {
|
13
|
+
width: calc(100% - var(--rp-preview-padding));
|
14
|
+
margin-left: var(--rp-preview-padding);
|
15
15
|
}
|
16
16
|
|
17
|
-
.
|
18
|
-
margin-left: var(--
|
17
|
+
.rspress-sidebar {
|
18
|
+
margin-left: var(--rp-preview-padding);
|
19
19
|
}
|
20
20
|
|
21
|
-
.
|
21
|
+
.rspress-doc-nav-container {
|
22
22
|
max-width: 100%;
|
23
|
-
margin-left: var(--
|
23
|
+
margin-left: var(--rp-preview-padding);
|
24
24
|
}
|
25
25
|
|
26
|
-
.
|
27
|
-
padding-right: var(--
|
28
|
-
padding-left: var(--
|
26
|
+
.rspress-doc-container {
|
27
|
+
padding-right: var(--rp-preview-padding);
|
28
|
+
padding-left: var(--rp-preview-padding);
|
29
29
|
}
|
30
30
|
|
31
|
-
.
|
31
|
+
.rspress-doc {
|
32
32
|
width: 100%;
|
33
|
-
padding-right: var(--
|
33
|
+
padding-right: var(--rp-preview-padding);
|
34
34
|
}
|
35
35
|
}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
:root {
|
2
|
-
--
|
3
|
-
--
|
4
|
-
--
|
2
|
+
--rp-sidebar-width: 210px;
|
3
|
+
--rp-aside-width: 192px;
|
4
|
+
--rp-preview-padding: 32px;
|
5
5
|
}
|
6
6
|
|
7
7
|
:root .preview-code div[class*='language-'] {
|
8
8
|
margin: 0;
|
9
9
|
border-radius: 0;
|
10
|
-
height: 100
|
10
|
+
height: 100%;
|
11
11
|
}
|