Skip to content

Commit 205afbe

Browse files
committed
chore: update use react signal
1 parent c8ea494 commit 205afbe

File tree

10 files changed

+49
-95
lines changed

10 files changed

+49
-95
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,11 @@
128128
"react-image-crop": "^11.0.7",
129129
"react-tweet": "^3.2.1",
130130
"react-visibility-sensor": "^5.1.1",
131+
"reactjs-signal": "^1.0.1",
131132
"scroll-into-view-if-needed": "^3.1.0",
132133
"shiki": "^1.24.2",
133134
"svg64": "^2.0.0",
134-
"tippy.js": "^6.3.7",
135-
"valtio": "^1.13.2"
135+
"tippy.js": "^6.3.7"
136136
},
137137
"devDependencies": {
138138
"@antfu/eslint-config": "^2.27.3",

pnpm-lock.yaml

+20-48
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/extensions/Image/components/ActionImageButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ function ActionImageButton(props: any) {
5959
}
6060

6161
return (
62-
<Dialog open={dialogImage.isOpen} onOpenChange={actionDialogImage.setOpen}>
62+
<Dialog open={dialogImage} onOpenChange={actionDialogImage.setOpen}>
6363
<DialogTrigger asChild>
6464
<ActionButton
6565
icon={props.icon}

src/extensions/Image/store.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
import { proxy, useSnapshot } from 'valtio'
1+
import { createSignal, useSignalValue } from 'reactjs-signal'
22

3-
const dialogImage = proxy({
4-
isOpen: false,
5-
})
3+
const dialogImage = createSignal(false)
64

75
export function useDialogImage() {
8-
const snap = useSnapshot(dialogImage)
9-
10-
return snap
6+
return useSignalValue(dialogImage)
117
}
128

139
export const actionDialogImage = {
1410
setOpen: (value: boolean) => {
15-
dialogImage.isOpen = value
11+
dialogImage.set(value)
1612
},
1713
}

src/extensions/Video/components/ActiveVideoButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ function ActionVideoButton(props: any) {
7777
}
7878

7979
return (
80-
<Dialog open={dialogVideo.isOpen} onOpenChange={actionDialogVideo.setOpen}>
80+
<Dialog open={dialogVideo} onOpenChange={actionDialogVideo.setOpen}>
8181
<DialogTrigger asChild>
8282
<ActionButton
8383
icon={props.icon}

src/extensions/Video/store.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
import { proxy, useSnapshot } from 'valtio'
1+
import { createSignal, useSignalValue } from 'reactjs-signal'
22

3-
const dialogVideo = proxy({
4-
isOpen: false,
5-
})
3+
const dialogVideo = createSignal(false)
64

75
export function useDialogVideo() {
8-
const snap = useSnapshot(dialogVideo)
9-
10-
return snap
6+
return useSignalValue(dialogVideo)
117
}
128

139
export const actionDialogVideo = {
1410
setOpen: (value: boolean) => {
15-
dialogVideo.isOpen = value
11+
dialogVideo.set(value)
1612
},
1713
}

src/locales/index.tsx

+8-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { useEffect, useMemo } from 'react'
2-
3-
import { proxy, useSnapshot } from 'valtio'
2+
import { createSignal, useSignal } from 'reactjs-signal'
43

54
import en from './en'
65
import pt_BR from './pt-br'
@@ -123,20 +122,18 @@ class Locale {
123122
const locale = new Locale()
124123

125124
// Proxy for reactive language state
126-
const atomLang = proxy({
127-
lang: DEFAULT_LOCALE.lang,
128-
})
125+
const atomLang = createSignal(DEFAULT_LOCALE.lang)
129126

130127
function useLocale() {
131-
const atomLangSnap = useSnapshot(atomLang)
128+
const [lang, setLang] = useSignal(atomLang)
132129

133130
const t = useMemo(() => {
134-
return locale.buildLocalesHandler(atomLangSnap.lang)
135-
}, [atomLangSnap.lang])
131+
return locale.buildLocalesHandler(lang)
132+
}, [lang])
136133

137134
useEffect(() => {
138135
const watchLang = locale.registerWatchLang((val) => {
139-
atomLang.lang = val
136+
setLang(val)
140137
})
141138

142139
return () => {
@@ -145,14 +142,14 @@ function useLocale() {
145142
}, [])
146143

147144
return {
148-
lang: atomLangSnap.lang,
145+
lang,
149146
t,
150147
}
151148
}
152149

153150
const localeActions = {
154151
t: (path: MessageKeysType) => {
155-
return locale.buildLocalesHandler(atomLang.lang)(path)
152+
return locale.buildLocalesHandler(atomLang.get())(path)
156153
},
157154
}
158155

src/store/editableEditor.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import { proxy, useSnapshot } from 'valtio'
1+
import { createSignal, useSignalValue } from 'reactjs-signal'
22

3-
const editableEditorProxy = proxy({
4-
disable: false,
5-
})
3+
const editableEditorProxy = createSignal(false)
64

75
export function useEditableEditor() {
8-
const editableEditor = useSnapshot(editableEditorProxy)
9-
return editableEditor.disable
6+
return useSignalValue(editableEditorProxy)
107
}
118

129
export const editableEditorActions = {
1310
setDisable: (disable: boolean) => {
14-
editableEditorProxy.disable = disable
11+
editableEditorProxy.set(disable)
1512
},
1613
}

src/theme/theme.ts

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
import { proxy, useSnapshot } from 'valtio'
1+
import { createSignal, useSignalValue } from 'reactjs-signal'
22

3-
const themeProxy = proxy({
4-
theme: 'light',
5-
})
3+
const themeProxy = createSignal('light')
64

75
export function useTheme() {
8-
const themeSnapshot = useSnapshot(themeProxy)
9-
10-
return themeSnapshot.theme
6+
return useSignalValue(themeProxy)
117
}
128

139
export const themeActions = {
1410
setTheme: (theme: string) => {
15-
themeProxy.theme = theme
11+
themeProxy.set(theme)
1612
},
1713
}

vite.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export default defineConfig(({ mode }) => {
7777
}
7878
},
7979
},
80-
external: ['react', 'react-dom', 'react/jsx-runtime', 'katex', 'shiki', 'docx', '@radix-ui/react-dropdown-menu', '@radix-ui/react-icons', '@radix-ui/react-label', '@radix-ui/react-popover', '@radix-ui/react-separator', '@radix-ui/react-slot', '@radix-ui/react-switch', '@radix-ui/react-tabs', '@radix-ui/react-toast', '@radix-ui/react-toggle', '@radix-ui/react-tooltip', '@radix-ui/react-select', '@radix-ui/react-checkbox', 'react-colorful', 'scroll-into-view-if-needed', 'tippy.js', 'valtio', 'lucide-react', 'prosemirror-docx', 're-resizable', '@excalidraw/excalidraw', '@radix-ui/react-dialog', 'react-image-crop', 'mermaid', 'react-tweet'],
80+
external: ['react', 'react-dom', 'react/jsx-runtime', 'katex', 'shiki', 'docx', '@radix-ui/react-dropdown-menu', '@radix-ui/react-icons', '@radix-ui/react-label', '@radix-ui/react-popover', '@radix-ui/react-separator', '@radix-ui/react-slot', '@radix-ui/react-switch', '@radix-ui/react-tabs', '@radix-ui/react-toast', '@radix-ui/react-toggle', '@radix-ui/react-tooltip', '@radix-ui/react-select', '@radix-ui/react-checkbox', 'react-colorful', 'scroll-into-view-if-needed', 'tippy.js', 'lucide-react', 'prosemirror-docx', 're-resizable', '@excalidraw/excalidraw', '@radix-ui/react-dialog', 'react-image-crop', 'mermaid', 'react-tweet', 'reactjs-signal'],
8181
},
8282
},
8383
}

0 commit comments

Comments
 (0)