Skip to content

Commit 5f08ee0

Browse files
authored
Merge pull request #160 from code-hike/smart-import
Smart imports
2 parents f2c8e83 + 509154a commit 5f08ee0

File tree

12 files changed

+367
-22
lines changed

12 files changed

+367
-22
lines changed

.github/workflows/bundle_analysis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
uses: dawidd6/action-download-artifact@v2
7070
if: success() && github.event.number
7171
with:
72-
workflow: nextjs_bundle_analysis.yml
72+
workflow: bundle_analysis.yml
7373
branch: ${{ github.event.pull_request.base.ref }}
7474
path: ./examples/bundle-test/.next/analyze/base
7575

examples/bundle-test/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"nextBundleAnalysis": {
1717
"budget": 358400,
1818
"budgetPercentIncreaseRed": 20,
19-
"showDetails": true
19+
"showDetails": true,
20+
"minimumChangeThreshold": 0
2021
}
2122
}

examples/bundle-test/pages/js-page.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export default function Page() {
22
return (
33
<div>
44
<h1>Hello</h1>
5-
Lorem ipsum dolor sit amet.
5+
Lorem ipsum dolor sit amet. Consectetur adipiscing elit.
66
</div>
77
)
88
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Hello
22

3-
Lorem ipsum dolor sit amet.
3+
Lorem ipsum dolor sit amet. Consectetur adipiscing elit.

examples/nextjs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"private": true,
44
"version": "0.0.0",
55
"scripts": {
6+
"dev": "next",
67
"build": "next build"
78
},
89
"dependencies": {

examples/nextjs/pages/scrolly.mdx

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# Scrollycoding with preview
2+
3+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
4+
5+
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
6+
7+
<CH.Scrollycoding preset="https://codesandbox.io/s/w5wfe">
8+
9+
## Step 1
10+
11+
Lorem ipsum dolor sit amet, consectetur adipiscing something about points, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
12+
13+
> Nova in illis at dabat legi harundine non, ova miratur? _Quid in_ sole aer
14+
> ad diffusa illis voluisti fidensque coniugiale laniata curam. Aras rivus
15+
> eripuit, qua fistula haec partus; serpens, negat.
16+
17+
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget.
18+
19+
Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.
20+
21+
```jsx src/App.js
22+
import { motion } from "framer-motion"
23+
24+
export default function App() {
25+
const bg = "hsl(20, 100%, 50%)"
26+
return (
27+
<motion.div
28+
className="swatch"
29+
animate={{ backgroundColor: bg }}
30+
transition={{ duration: 1 }}
31+
/>
32+
)
33+
}
34+
```
35+
36+
---
37+
38+
## Step 2
39+
40+
Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in.
41+
42+
Praesent elementum facilisis leo vel fringilla est ullamcorper eget.
43+
44+
Id aliquet risus feugiat in ante metus dictum at tempor. Sed blandit libero volutpat sed cras. Sed odio morbi quis commodo odio aenean sed adipiscing. Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in. Nibh cras pulvinar mattis nunc sed. Luctus accumsan tortor posuere ac ut consequat semper viverra. Fringilla ut morbi tincidunt augue interdum velit euismod.
45+
46+
Morbi quis commodo.
47+
48+
```jsx src/App.js focus=1,4,6:10
49+
import { motion } from "framer-motion"
50+
51+
export default function App() {
52+
const bg = "hsl(110, 100%, 50%)"
53+
return (
54+
<motion.div
55+
className="swatch"
56+
animate={{ backgroundColor: bg }}
57+
transition={{ duration: 1 }}
58+
/>
59+
)
60+
}
61+
```
62+
63+
---
64+
65+
## Step 3
66+
67+
Id aliquet risus feugiat in ante metus dictum at tempor. Sed blandit libero volutpat sed cras. Sed odio morbi quis commodo odio aenean sed adipiscing. Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu.
68+
69+
- Nisi lacus sed viverra tellus in
70+
- Nibh cras pulvinar mattis nunc sed
71+
- Luctus accumsan tortor posuere ac
72+
73+
Ut consequat semper viverra. Fringilla ut morbi tincidunt augue interdum velit euismod.
74+
75+
```jsx src/App.js focus=1,4,6:10
76+
import { motion } from "framer-motion"
77+
78+
export default function App() {
79+
const bg = "hsl(200, 100%, 50%)"
80+
return (
81+
<motion.div
82+
className="swatch"
83+
animate={{ backgroundColor: bg }}
84+
transition={{ duration: 1 }}
85+
/>
86+
)
87+
}
88+
```
89+
90+
---
91+
92+
## Step 4
93+
94+
Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in. Venenatis cras sed felis eget velit. Consectetur libero id faucibus nisl tincidunt.
95+
96+
Sed blandit libero volutpat sed cras.
97+
98+
- Nisi lacus sed viverra tellus in
99+
- Nibh cras pulvinar mattis nunc sed
100+
101+
Gravida in fermentum et sollicitudin ac orci phasellus egestas tellus. Volutpat consequat mauris nunc congue nisi vitae.
102+
103+
```jsx src/App.js focus=1,4,6:10
104+
import { motion } from "framer-motion"
105+
106+
export default function App() {
107+
const bg = "hsl(290, 100%, 50%)"
108+
return (
109+
<motion.div
110+
className="swatch"
111+
animate={{ backgroundColor: bg }}
112+
transition={{ duration: 1 }}
113+
/>
114+
)
115+
}
116+
```
117+
118+
---
119+
120+
## Step 5
121+
122+
Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in.
123+
124+
Praesent elementum facilisis leo vel fringilla est ullamcorper eget.
125+
126+
Id aliquet risus feugiat in ante metus dictum at tempor. Sed blandit libero volutpat sed cras. Sed odio morbi quis commodo odio aenean sed adipiscing. Velit euismod in pellentesque massa placerat.
127+
128+
Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in. Nibh cras pulvinar mattis nunc sed. Luctus accumsan tortor posuere ac ut consequat semper viverra.
129+
130+
- Fringilla ut morbi tincidunt augue interdum velit euismod.
131+
- Luctus accumsan tortor posuere ac ut consequat semper viverra.
132+
133+
Morbi quis commodo.
134+
135+
```jsx src/App.js focus=1,4,6:10
136+
import { motion } from "framer-motion"
137+
138+
export default function App() {
139+
const bg = "hsl(10, 100%, 50%)"
140+
return (
141+
<motion.div
142+
className="swatch"
143+
animate={{ backgroundColor: bg }}
144+
transition={{ duration: 1 }}
145+
/>
146+
)
147+
}
148+
```
149+
150+
</CH.Scrollycoding>
151+
152+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
153+
154+
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.

packages/mdx/package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,28 +38,29 @@
3838
"coverage": "vitest run --coverage"
3939
},
4040
"dependencies": {
41-
"@codesandbox/sandpack-client": "^0.1.20",
42-
"diff": "^4.0.2",
4341
"hast-util-to-estree": "^1.4.0",
4442
"is-plain-obj": "^3.0.0",
4543
"node-fetch": "^2.0.0",
4644
"remark-rehype": "^8.1.0",
4745
"shiki": "^0.10.1",
4846
"unified": "^9.2.2",
4947
"unist-util-visit": "^2.0.0",
50-
"unist-util-visit-parents": "^3.0.0",
51-
"use-spring": "^0.2.3"
48+
"unist-util-visit-parents": "^3.0.0"
5249
},
5350
"devDependencies": {
51+
"@codesandbox/sandpack-client": "^0.19.0",
5452
"@mdx-js/mdx": "^2.0.0",
53+
"@rollup/plugin-commonjs": "^21.1.0",
5554
"@rollup/plugin-json": "^4.1.0",
55+
"@rollup/plugin-node-resolve": "^13.2.1",
5656
"@rollup/plugin-replace": "^4.0.0",
5757
"@types/diff": "^5.0.2",
5858
"@types/node": "^17.0.21",
5959
"@types/node-fetch": "^2.6.1",
6060
"@types/react": "^17.0.39",
6161
"autoprefixer": "^9.8.2",
6262
"cssnano": "^4.1.10",
63+
"diff": "^4.0.2",
6364
"esbuild": "^0.13.2",
6465
"mdx-bundler": "^8.0.1",
6566
"mdx-debugger": "^0.2.0",
@@ -73,6 +74,7 @@
7374
"rollup-plugin-typescript2": "^0.27.1",
7475
"sass": "^1.49.9",
7576
"typescript": "^4.6.2",
77+
"use-spring": "^0.2.3",
7678
"vite": "^2.8.6",
7779
"vitest": "^0.5.9"
7880
},

packages/mdx/rollup.config.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ import path from "path"
88
import json from "@rollup/plugin-json"
99
import del from "rollup-plugin-delete"
1010
import replace from "@rollup/plugin-replace"
11+
import { nodeResolve } from "@rollup/plugin-node-resolve"
1112
// import { terser } from "rollup-plugin-terser"
13+
import commonjs from "@rollup/plugin-commonjs"
1214

1315
const clientExternal = [
1416
"react",
15-
"@codesandbox/sandpack-client",
16-
"use-spring",
17-
"diff",
17+
"react-dom",
18+
// "@codesandbox/sandpack-client",
19+
// "use-spring",
20+
// "diff",
1821
]
1922
const remarkExternal = [
2023
"react",
@@ -112,6 +115,8 @@ export default function makeConfig(commandOptions) {
112115
],
113116
external: clientExternal,
114117
plugins: [
118+
nodeResolve(),
119+
commonjs(),
115120
json({ compact: true }),
116121
typescript({
117122
tsconfigOverride: {

packages/mdx/src/components.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ import {
1414
import { Preview } from "./mdx-client/preview"
1515
import { InlineCode } from "./mdx-client/inline-code"
1616

17+
export {
18+
Code,
19+
Section,
20+
SectionLink,
21+
SectionCode,
22+
Spotlight,
23+
Scrollycoding,
24+
Preview,
25+
annotationsMap as annotations,
26+
Annotation,
27+
Slideshow,
28+
InlineCode,
29+
}
30+
1731
export const CH = {
1832
Code,
1933
Section,
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { JsxNode, SuperNode, visit } from "./nodes"
2+
3+
export function chUsage(tree: SuperNode) {
4+
const usage = []
5+
visit(
6+
tree,
7+
["mdxJsxFlowElement", "mdxJsxTextElement"],
8+
(node: JsxNode) => {
9+
if (
10+
node.name &&
11+
node.name.startsWith("CH.") &&
12+
!usage.includes(node.name)
13+
) {
14+
usage.push(node.name)
15+
}
16+
}
17+
)
18+
return usage
19+
}

0 commit comments

Comments
 (0)