summaryrefslogtreecommitdiff
path: root/packages/prosody-ui/src/fonts/FontChanger.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/prosody-ui/src/fonts/FontChanger.tsx')
-rw-r--r--packages/prosody-ui/src/fonts/FontChanger.tsx64
1 files changed, 64 insertions, 0 deletions
diff --git a/packages/prosody-ui/src/fonts/FontChanger.tsx b/packages/prosody-ui/src/fonts/FontChanger.tsx
new file mode 100644
index 0000000..15c932e
--- /dev/null
+++ b/packages/prosody-ui/src/fonts/FontChanger.tsx
@@ -0,0 +1,64 @@
+import React, { useEffect, useState, type ReactNode } from "react";
+import fontIcon from "../assets/icons/font.svg";
+import { getScriptPredictor } from "glotscript";
+import ThaiFontLoader from "./Thai";
+
+function FontChanger({ text }: { text: string }) {
+ const [script, setScript] = useState<string | null>(null);
+ useEffect(() => {
+ const predictor = getScriptPredictor();
+ const res = predictor(text);
+ console.log("script predicted", res);
+ setScript(res[0]);
+ }, [text]);
+ useEffect(() => {
+ if (script === "Hani") setFontCount(12);
+ else if (script === "Thai") setFontCount(6);
+ else if (script === "Jpan") setFontCount(5);
+ // else if (script === "Latn") setFontCount(6)
+ }, [script]);
+ const [fontIdx, setFont] = useState(0);
+ const [fontCount, setFontCount] = useState(0);
+ function changeFont() {
+ if (fontIdx === fontCount) setFont(0);
+ else setFont((prev) => prev + 1);
+ }
+ return (
+ <div
+ className={`font-changer font-${script}-${fontIdx}`}
+ lang={script || ""}
+ >
+ <img
+ className="font-icon cp"
+ style={{ width: 25 }}
+ onClick={changeFont}
+ src={fontIcon}
+ />
+ {script === "Thai" ? <ThaiFontLoader text={text} /> : null}
+ </div>
+ );
+}
+// function FontChanger({
+// lang,
+// children,
+// }: {
+// lang: string;
+// children: ReactNode;
+// }) {
+// useEffect(() => {}, []);
+// const [script, setScript] = useState("Latn");
+// const [fontIdx, setFont] = useState(0);
+// const fontCount = 6;
+// function changeFont() {
+// if (fontIdx === fontCount) setFont(0);
+// else setFont((prev) => prev + 1);
+// }
+// return (
+// <div className="font-changer" lang={script}>
+// <img className="font-icon cp" onClick={changeFont} src={fontIcon} />
+// {children}
+// </div>
+// );
+// }
+
+export default FontChanger;