mirror of
https://github.com/zadam/trilium.git
synced 2025-11-17 22:14:32 +01:00
feat(mindmap): add support for locales
This commit is contained in:
parent
a10d99f938
commit
89228f264f
@ -1,15 +1,16 @@
|
|||||||
import { useCallback, useEffect, useRef } from "preact/hooks";
|
import { useCallback, useEffect, useRef } from "preact/hooks";
|
||||||
import { TypeWidgetProps } from "./type_widget";
|
import { TypeWidgetProps } from "./type_widget";
|
||||||
import { MindElixirData, MindElixirInstance, Operation, default as VanillaMindElixir } from "mind-elixir";
|
import { MindElixirData, MindElixirInstance, Operation, Options, default as VanillaMindElixir } from "mind-elixir";
|
||||||
import { HTMLAttributes, RefObject } from "preact";
|
import { HTMLAttributes, RefObject } from "preact";
|
||||||
// allow node-menu plugin css to be bundled by webpack
|
// allow node-menu plugin css to be bundled by webpack
|
||||||
import nodeMenu from "@mind-elixir/node-menu";
|
import nodeMenu from "@mind-elixir/node-menu";
|
||||||
import "mind-elixir/style";
|
import "mind-elixir/style";
|
||||||
import "@mind-elixir/node-menu/dist/style.css";
|
import "@mind-elixir/node-menu/dist/style.css";
|
||||||
import "./MindMap.css";
|
import "./MindMap.css";
|
||||||
import { useEditorSpacedUpdate, useNoteLabelBoolean, useSyncedRef, useTriliumEvent, useTriliumEvents } from "../react/hooks";
|
import { useEditorSpacedUpdate, useNoteLabelBoolean, useSyncedRef, useTriliumEvent, useTriliumEvents, useTriliumOption } from "../react/hooks";
|
||||||
import { refToJQuerySelector } from "../react/react_utils";
|
import { refToJQuerySelector } from "../react/react_utils";
|
||||||
import utils from "../../services/utils";
|
import utils from "../../services/utils";
|
||||||
|
import { DISPLAYABLE_LOCALE_IDS } from "@triliumnext/commons";
|
||||||
|
|
||||||
const NEW_TOPIC_NAME = "";
|
const NEW_TOPIC_NAME = "";
|
||||||
|
|
||||||
@ -21,6 +22,24 @@ interface MindElixirProps {
|
|||||||
onChange?: () => void;
|
onChange?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LOCALE_MAPPINGS: Record<DISPLAYABLE_LOCALE_IDS, Options["locale"] | null> = {
|
||||||
|
ar: null,
|
||||||
|
cn: "zh_CN",
|
||||||
|
de: null,
|
||||||
|
en: "en",
|
||||||
|
en_rtl: "en",
|
||||||
|
es: "es",
|
||||||
|
fr: "fr",
|
||||||
|
it: "it",
|
||||||
|
ja: "ja",
|
||||||
|
pt: "pt",
|
||||||
|
pt_br: "pt",
|
||||||
|
ro: null,
|
||||||
|
ru: "ru",
|
||||||
|
tw: "zh_TW",
|
||||||
|
uk: null
|
||||||
|
};
|
||||||
|
|
||||||
export default function MindMap({ note, ntxId, noteContext }: TypeWidgetProps) {
|
export default function MindMap({ note, ntxId, noteContext }: TypeWidgetProps) {
|
||||||
const apiRef = useRef<MindElixirInstance>(null);
|
const apiRef = useRef<MindElixirInstance>(null);
|
||||||
const containerRef = useRef<HTMLDivElement>(null);
|
const containerRef = useRef<HTMLDivElement>(null);
|
||||||
@ -110,12 +129,14 @@ export default function MindMap({ note, ntxId, noteContext }: TypeWidgetProps) {
|
|||||||
function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef: externalApiRef, onChange, editable }: MindElixirProps) {
|
function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef: externalApiRef, onChange, editable }: MindElixirProps) {
|
||||||
const containerRef = useSyncedRef<HTMLDivElement>(externalContainerRef, null);
|
const containerRef = useSyncedRef<HTMLDivElement>(externalContainerRef, null);
|
||||||
const apiRef = useRef<MindElixirInstance>(null);
|
const apiRef = useRef<MindElixirInstance>(null);
|
||||||
|
const [ locale ] = useTriliumOption("locale");
|
||||||
|
|
||||||
function reinitialize() {
|
function reinitialize() {
|
||||||
if (!containerRef.current) return;
|
if (!containerRef.current) return;
|
||||||
|
|
||||||
const mind = new VanillaMindElixir({
|
const mind = new VanillaMindElixir({
|
||||||
el: containerRef.current,
|
el: containerRef.current,
|
||||||
|
locale: LOCALE_MAPPINGS[locale],
|
||||||
editable
|
editable
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -143,7 +164,7 @@ function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef
|
|||||||
if (data) {
|
if (data) {
|
||||||
apiRef.current?.init(data);
|
apiRef.current?.init(data);
|
||||||
}
|
}
|
||||||
}, [ editable ]);
|
}, [ editable, locale ]);
|
||||||
|
|
||||||
// On change listener.
|
// On change listener.
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user