+
+ {props.packs.map((pack) => (
+
+ ))}
+
+
+ );
+};
diff --git a/src/options/component/organism/index.ts b/src/options/component/organism/index.ts
index 3e5e5114..a62156cd 100644
--- a/src/options/component/organism/index.ts
+++ b/src/options/component/organism/index.ts
@@ -6,6 +6,7 @@
export * from "./AdvancedSettings";
export * from "./BasicSettings";
+export * from "./DictionaryPacks";
export * from "./LoadDictionary";
export * from "./OperationPanel";
export * from "./ReplaceRuleEditor";
diff --git a/src/options/logic/dict.ts b/src/options/logic/dict.ts
index 81a9c0e1..625ed66a 100644
--- a/src/options/logic/dict.ts
+++ b/src/options/logic/dict.ts
@@ -5,9 +5,12 @@
*/
import { env, storage } from "../extern";
-import type { DictionaryFileEncoding, DictionaryFileFormat } from "../types";
+import type { DictionaryFileEncoding, DictionaryFileFormat, DictionaryPack } from "../types";
import { EijiroParser, JsonDictParser, SimpleDictParser } from "./dictparser";
import { LineReader } from "./linereader";
+import { DEFAULT_PACK_IDS, loadPackRegistry, mergeDescriptions, packIdsFromSettings } from "./packs";
+
+const KEY_INSTALLED_PACKS = "***** dict_packs *****";
type ProgressCallback = (wordCount: number, progress: string) => void;
@@ -111,17 +114,84 @@ const createDictParser = (format: DictionaryFileFormat) => {
};
export const registerDefaultDict = async (fnProgress: ProgressCallback): Promise