@rspress/plugin-preview 1.46.0 → 1.46.2

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 CHANGED
@@ -501,6 +501,7 @@ var __webpack_exports__ = {};
501
501
  const outDir = (0, external_node_path_namespaceObject.join)(config.outDir ?? 'doc_build', '~demo');
502
502
  if (0 === Object.keys(sourceEntry).length) return;
503
503
  const { html, source, output, performance } = clientConfig ?? {};
504
+ const { preEntry, ...otherSourceOptions } = source ?? {};
504
505
  const rsbuildConfig = (0, core_namespaceObject.mergeRsbuildConfig)({
505
506
  dev: {
506
507
  progressBar: false
@@ -516,7 +517,7 @@ var __webpack_exports__ = {};
516
517
  },
517
518
  html,
518
519
  source: {
519
- ...source,
520
+ ...otherSourceOptions,
520
521
  entry: sourceEntry
521
522
  },
522
523
  output: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rspress/plugin-preview",
3
- "version": "1.46.0",
3
+ "version": "1.46.2",
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": {
@@ -25,8 +25,8 @@
25
25
  "@rsbuild/plugin-solid": "~1.0.5",
26
26
  "lodash": "4.17.21",
27
27
  "qrcode.react": "^3.2.0",
28
- "@rspress/shared": "1.46.0",
29
- "@rspress/theme-default": "1.46.0"
28
+ "@rspress/shared": "1.46.2",
29
+ "@rspress/theme-default": "1.46.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@rslib/core": "~0.6.9",
@@ -45,7 +45,7 @@
45
45
  "unist-util-visit": "^4.1.2"
46
46
  },
47
47
  "peerDependencies": {
48
- "@rspress/core": "^1.46.0",
48
+ "@rspress/core": "^1.46.2",
49
49
  "react": ">=17.0.0",
50
50
  "react-router-dom": "^6.8.1"
51
51
  },
@@ -27,8 +27,6 @@ const MobileContainerFixedPerComp: React.FC<ContainerProps> = props => {
27
27
 
28
28
  const setIframeUrl = () => {
29
29
  const url = getPageUrl();
30
- const fixedIframe = document.querySelector('.rspress-fixed-iframe');
31
- fixedIframe?.setAttribute('src', url);
32
30
  publishIframeUrl(url);
33
31
  };
34
32
 
@@ -1,7 +1,10 @@
1
1
  .rspress-fixed-device {
2
2
  display: none;
3
3
  position: fixed;
4
- top: calc(var(--rp-nav-height) + var(--rp-preview-padding));
4
+ top: calc(
5
+ var(--rp-nav-height) + var(--rp-preview-padding) +
6
+ var(--rp-sidebar-menu-height)
7
+ );
5
8
  overflow: hidden;
6
9
  }
7
10
 
@@ -32,17 +35,8 @@
32
35
  }
33
36
 
34
37
  @media (min-width: 960px) {
35
- .rspress-fixed-device {
36
- display: inline;
37
- left: calc(1280px - var(--rp-device-width) - var(--rp-preview-padding));
38
- right: auto;
39
- }
40
- }
41
-
42
- @media (min-width: 1280px) {
43
38
  .rspress-fixed-device {
44
39
  display: inline;
45
40
  right: var(--rp-preview-padding);
46
- left: auto;
47
41
  }
48
42
  }
@@ -1,10 +1,5 @@
1
- import {
2
- NoSSR,
3
- usePageData,
4
- useWindowSize,
5
- withBase,
6
- } from '@rspress/core/runtime';
7
- import { useCallback, useEffect, useState } from 'react';
1
+ import { NoSSR, usePageData, withBase } from '@rspress/core/runtime';
2
+ import { useCallback, useState } from 'react';
8
3
  // @ts-ignore
9
4
  import { normalizeId } from '../../dist/utils';
10
5
  import MobileOperation from './common/mobile-operation';
@@ -21,58 +16,29 @@ export default () => {
21
16
  if (page?.devPort) {
22
17
  return `http://localhost:${page.devPort}/${demoId}`;
23
18
  }
24
- if (typeof window !== 'undefined') {
25
- return `${window.location.origin}${withBase(url)}`;
26
- }
27
- // Do nothing in ssr
28
- return '';
19
+ return withBase(url);
29
20
  };
30
- const [asideWidth, setAsideWidth] = useState('0px');
31
- const { width: innerWidth } = useWindowSize();
32
21
  const [iframeKey, setIframeKey] = useState(0);
33
22
  const refresh = useCallback(() => {
34
23
  setIframeKey(Math.random());
35
24
  }, []);
36
25
 
37
- // get default value from root
38
- // listen resize and re-render
39
- useEffect(() => {
40
- const root = document.querySelector(':root');
41
- if (root) {
42
- const defaultAsideWidth =
43
- getComputedStyle(root).getPropertyValue('--rp-aside-width');
44
- setAsideWidth(defaultAsideWidth);
45
- }
46
- }, []);
47
-
48
- useEffect(() => {
49
- const node = document.querySelector('.rspress-doc-container');
50
- const { style } = document.documentElement;
51
- if (haveDemos) {
52
- if (innerWidth > 1280) {
53
- node?.setAttribute(
54
- 'style',
55
- 'padding-right: calc(var(--rp-device-width) + var(--rp-preview-padding) * 2)',
56
- );
57
- } else if (innerWidth > 960) {
58
- node?.setAttribute(
59
- 'style',
60
- `padding-right: calc(${
61
- innerWidth - 1280
62
- }px + var(--rp-device-width) + var(--rp-preview-padding) * 2)`,
63
- );
64
- } else {
65
- node?.removeAttribute('style');
66
- }
67
- style.setProperty('--rp-aside-width', '0px');
68
- } else {
69
- node?.removeAttribute('style');
70
- style.setProperty('--rp-aside-width', asideWidth);
71
- }
72
- }, [haveDemos, asideWidth, innerWidth]);
73
-
74
26
  return haveDemos ? (
75
27
  <div className="rspress-fixed-device">
28
+ <style>
29
+ {`
30
+ body {
31
+ --rp-aside-width: 0px;
32
+ }
33
+ @media (min-width: 960px) {
34
+ .rspress-doc-container {
35
+ padding-right: calc(var(--rp-device-width) + var(--rp-preview-padding) * 2);
36
+ }
37
+ }
38
+ `
39
+ .split('\n')
40
+ .join(' ')}
41
+ </style>
76
42
  <NoSSR>
77
43
  <iframe
78
44
  // refresh when load the iframe, then remove NoSSR
@@ -1,9 +1,4 @@
1
- import {
2
- NoSSR,
3
- usePageData,
4
- useWindowSize,
5
- withBase,
6
- } from '@rspress/core/runtime';
1
+ import { NoSSR, usePageData, withBase } from '@rspress/core/runtime';
7
2
  import { useCallback, useEffect, useState } from 'react';
8
3
  // @ts-ignore
9
4
  import { normalizeId } from '../../dist/utils';
@@ -22,11 +17,7 @@ export default () => {
22
17
  if (page?.devPort) {
23
18
  return `http://localhost:${page.devPort}/${demoId}`;
24
19
  }
25
- if (typeof window !== 'undefined') {
26
- return `${window.location.origin}${withBase(url)}`;
27
- }
28
- // Do nothing in ssr
29
- return '';
20
+ return withBase(url);
30
21
  };
31
22
 
32
23
  const initialUrl = getPageUrl(url);
@@ -35,58 +26,33 @@ export default () => {
35
26
 
36
27
  const resetIframeUrl = useCallback(() => {
37
28
  publishIframeUrl(initialUrl);
38
- }, [initialUrl, url]);
29
+ }, [initialUrl]);
39
30
 
40
31
  useEffect(() => {
41
32
  publishIframeUrl(initialUrl);
42
- }, []);
33
+ }, [initialUrl]);
43
34
 
44
- const [asideWidth, setAsideWidth] = useState('0px');
45
- const { width: innerWidth } = useWindowSize();
46
35
  const [iframeKey, setIframeKey] = useState(0);
47
36
  const refresh = useCallback(() => {
48
37
  setIframeKey(Math.random());
49
38
  }, []);
50
39
 
51
- // get default value from root
52
- // listen resize and re-render
53
- useEffect(() => {
54
- const root = document.querySelector(':root');
55
- if (root) {
56
- const defaultAsideWidth =
57
- getComputedStyle(root).getPropertyValue('--rp-aside-width');
58
- setAsideWidth(defaultAsideWidth);
59
- }
60
- }, []);
61
-
62
- useEffect(() => {
63
- const node = document.querySelector('.rspress-doc-container');
64
- const { style } = document.documentElement;
65
- if (haveDemos) {
66
- if (innerWidth > 1280) {
67
- node?.setAttribute(
68
- 'style',
69
- 'padding-right: calc(var(--rp-device-width) + var(--rp-preview-padding) * 2)',
70
- );
71
- } else if (innerWidth > 960) {
72
- node?.setAttribute(
73
- 'style',
74
- `padding-right: calc(${
75
- innerWidth - 1280
76
- }px + var(--rp-device-width) + var(--rp-preview-padding) * 2)`,
77
- );
78
- } else {
79
- node?.removeAttribute('style');
80
- }
81
- style.setProperty('--rp-aside-width', '0px');
82
- } else {
83
- node?.removeAttribute('style');
84
- style.setProperty('--rp-aside-width', asideWidth);
85
- }
86
- }, [haveDemos, asideWidth, innerWidth]);
87
-
88
40
  return haveDemos ? (
89
41
  <div className="rspress-fixed-device">
42
+ <style>
43
+ {`
44
+ body {
45
+ --rp-aside-width: 0px;
46
+ }
47
+ @media (min-width: 960px) {
48
+ .rspress-doc-container {
49
+ padding-right: calc(var(--rp-device-width) + var(--rp-preview-padding) * 2);
50
+ }
51
+ }
52
+ `
53
+ .split('\n')
54
+ .join(' ')}
55
+ </style>
90
56
  <NoSSR>
91
57
  <iframe
92
58
  // refresh when load the iframe, then remove NoSSR
@@ -3,11 +3,11 @@
3
3
  --rp-iframe-nav-bg: #ffffff;
4
4
  }
5
5
 
6
- /* TODO: support dark mode */
7
- /* .dark {
6
+ .dark {
7
+ /* TODO: support sync dark mode state */
8
8
  --rp-iframe-bg: #242424;
9
9
  --rp-iframe-nav-bg: #191d24;
10
- } */
10
+ }
11
11
 
12
12
  body {
13
13
  background-color: var(--rp-iframe-bg) !important;
@@ -7,25 +7,3 @@
7
7
  :root {
8
8
  --rp-preview-padding: 32px;
9
9
  }
10
-
11
- @media (min-width: 1280px) {
12
- .rspress-doc-layout {
13
- width: calc(100% - var(--rp-preview-padding));
14
- margin-left: var(--rp-preview-padding);
15
- }
16
-
17
- .rspress-sidebar {
18
- margin-left: var(--rp-preview-padding);
19
- }
20
-
21
- .rspress-doc-nav-container {
22
- max-width: 100%;
23
- margin-left: var(--rp-preview-padding);
24
- }
25
-
26
- .rspress-doc {
27
- width: 100%;
28
- padding-left: var(--rp-preview-padding);
29
- padding-right: var(--rp-preview-padding);
30
- }
31
- }