mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 11:44:40 +00:00
feat(ReactAdaptor): upgrade react to react 18
This commit is contained in:
@@ -25,18 +25,22 @@ const defaultPresets = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
function Picker() {
|
function Picker() {
|
||||||
const [customThemeColor, setCustomThemeColor] = useState(() => {
|
const [customThemeColor, setCustomThemeColor] = useState<string | null>(null);
|
||||||
return settingsState.selectedColor
|
const [presets, setPresets] = useState<string[]>(defaultPresets);
|
||||||
});
|
|
||||||
const [presets, setPresets] = useState(() => {
|
useEffect(() => {
|
||||||
|
setCustomThemeColor(settingsState.selectedColor);
|
||||||
|
setPresets(() => {
|
||||||
const savedPresets = localStorage.getItem('colorPickerPresets');
|
const savedPresets = localStorage.getItem('colorPickerPresets');
|
||||||
return savedPresets ? JSON.parse(savedPresets) : defaultPresets;
|
return savedPresets ? JSON.parse(savedPresets) : defaultPresets;
|
||||||
});
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// on component dismount, save the presets to local storage
|
// on component dismount, save the presets to local storage
|
||||||
return () => {
|
return () => {
|
||||||
|
if (customThemeColor) {
|
||||||
// Check if the selected color is already in the presets
|
// Check if the selected color is already in the presets
|
||||||
const existingIndex = presets.indexOf(customThemeColor);
|
const existingIndex = presets.indexOf(customThemeColor);
|
||||||
|
|
||||||
@@ -56,14 +60,17 @@ function Picker() {
|
|||||||
setPresets(updatedPresets);
|
setPresets(updatedPresets);
|
||||||
localStorage.setItem('colorPickerPresets', JSON.stringify(updatedPresets));
|
localStorage.setItem('colorPickerPresets', JSON.stringify(updatedPresets));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (customThemeColor) {
|
||||||
settingsState.selectedColor = customThemeColor;
|
settingsState.selectedColor = customThemeColor;
|
||||||
|
}
|
||||||
}, [customThemeColor]);
|
}, [customThemeColor]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ColorPicker disableDarkMode={true} presets={presets} hideInputs={true} value={customThemeColor} onChange={setCustomThemeColor} />
|
<ColorPicker disableDarkMode={true} presets={presets} hideInputs={true} value={customThemeColor ?? ''} onChange={setCustomThemeColor} />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import ReactDOM from "react-dom";
|
import { createRoot } from "react-dom/client";
|
||||||
import { onDestroy, onMount } from "svelte";
|
import { onDestroy, onMount } from "svelte";
|
||||||
|
|
||||||
const e = React.createElement;
|
const e = React.createElement;
|
||||||
let container: HTMLDivElement;
|
let container: HTMLDivElement;
|
||||||
|
let root: ReturnType<typeof createRoot>;
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
const { el, children, class: _, ...props } = $$props;
|
const { el, children, class: _, ...props } = $$props;
|
||||||
try {
|
try {
|
||||||
ReactDOM.render(e(el, props, children), container);
|
root = createRoot(container);
|
||||||
|
root.render(e(el, props, children));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn(`react-adapter failed to mount.`, { err });
|
console.warn(`react-adapter failed to mount.`, { err });
|
||||||
}
|
}
|
||||||
@@ -17,7 +19,9 @@
|
|||||||
|
|
||||||
onDestroy(() => {
|
onDestroy(() => {
|
||||||
try {
|
try {
|
||||||
ReactDOM.unmountComponentAtNode(container);
|
if (root) {
|
||||||
|
root.unmount();
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn(`react-adapter failed to unmount.`, { err });
|
console.warn(`react-adapter failed to unmount.`, { err });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user