restore react hooks

This commit is contained in:
Felix Roos
2023-11-02 22:33:16 +01:00
parent 95a9ab6182
commit 5850106eef
3 changed files with 25 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
import { useLayoutEffect } from 'react';
// set active pattern on ctrl+enter
const useKeydown = (callback) =>
useLayoutEffect(() => {
window.addEventListener('keydown', callback, true);
return () => window.removeEventListener('keydown', callback, true);
}, [callback]);
export default useKeydown;
+13
View File
@@ -0,0 +1,13 @@
import { useEffect, useState } from 'react';
import { updateWidgets } from '@strudel/codemirror';
// i know this is ugly.. in the future, repl needs to run without react
export function useWidgets(view) {
const [widgets, setWidgets] = useState([]);
useEffect(() => {
if (view) {
updateWidgets(view, widgets);
}
}, [view, widgets]);
return { widgets, setWidgets };
}
+2
View File
@@ -6,6 +6,8 @@ export { default as useHighlighting } from './hooks/useHighlighting'; // !SSR
export { default as useStrudel } from './hooks/useStrudel'; // !SSR
export { default as usePostMessage } from './hooks/usePostMessage';
export { default as usePatternFrame } from './hooks/usePatternFrame';
export { default as useKeydown } from './hooks/useKeydown';
export { useWidgets } from './hooks/useWidgets';
export { default as useEvent } from './hooks/useEvent';
export { default as strudelTheme } from './themes/strudel-theme';
export { default as teletext } from './themes/teletext';