@rimori/client 1.4.0 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -71
- package/dist/cli/scripts/init/dev-registration.d.ts +1 -1
- package/dist/cli/scripts/init/dev-registration.js +4 -4
- package/dist/cli/scripts/init/main.js +1 -1
- package/dist/cli/scripts/init/package-setup.d.ts +1 -1
- package/dist/cli/scripts/init/package-setup.js +3 -3
- package/dist/cli/scripts/init/router-transformer.js +19 -12
- package/dist/cli/scripts/init/vite-config.d.ts +2 -2
- package/dist/cli/scripts/init/vite-config.js +2 -2
- package/dist/cli/scripts/release/release-config-upload.js +9 -9
- package/dist/cli/scripts/release/release-db-update.d.ts +1 -1
- package/dist/cli/scripts/release/release-db-update.js +9 -9
- package/dist/cli/scripts/release/release-file-upload.js +1 -1
- package/dist/cli/scripts/release/release.js +2 -2
- package/dist/components/CRUDModal.d.ts +1 -1
- package/dist/components/CRUDModal.js +3 -3
- package/dist/components/MarkdownEditor.js +16 -16
- package/dist/components/Spinner.js +2 -2
- package/dist/components/ai/Assistant.js +7 -8
- package/dist/components/ai/Avatar.d.ts +2 -2
- package/dist/components/ai/Avatar.js +10 -5
- package/dist/components/ai/EmbeddedAssistent/AudioInputField.js +5 -6
- package/dist/components/ai/EmbeddedAssistent/CircleAudioAvatar.d.ts +1 -1
- package/dist/components/ai/EmbeddedAssistent/CircleAudioAvatar.js +1 -2
- package/dist/components/ai/EmbeddedAssistent/TTS/MessageSender.d.ts +1 -2
- package/dist/components/ai/EmbeddedAssistent/TTS/MessageSender.js +4 -2
- package/dist/components/ai/EmbeddedAssistent/VoiceRecoder.js +2 -3
- package/dist/components/audio/Playbutton.js +10 -7
- package/dist/components/components/ContextMenu.d.ts +1 -1
- package/dist/components/components/ContextMenu.js +19 -16
- package/dist/components.d.ts +10 -10
- package/dist/components.js +10 -10
- package/dist/core/controller/AIController.d.ts +2 -2
- package/dist/core/controller/AIController.js +12 -12
- package/dist/core/controller/ExerciseController.d.ts +2 -2
- package/dist/core/controller/ExerciseController.js +2 -2
- package/dist/core/controller/ObjectController.js +5 -5
- package/dist/core/controller/SettingsController.d.ts +22 -7
- package/dist/core/controller/SettingsController.js +73 -8
- package/dist/core/controller/SharedContentController.d.ts +3 -3
- package/dist/core/controller/SharedContentController.js +38 -20
- package/dist/core/controller/VoiceController.js +6 -4
- package/dist/core/core.d.ts +15 -15
- package/dist/core/core.js +7 -7
- package/dist/fromRimori/EventBus.js +23 -23
- package/dist/fromRimori/PluginTypes.d.ts +4 -4
- package/dist/hooks/UseChatHook.d.ts +3 -3
- package/dist/hooks/UseChatHook.js +9 -3
- package/dist/index.d.ts +10 -10
- package/dist/index.js +9 -9
- package/dist/plugin/AccomplishmentHandler.d.ts +5 -5
- package/dist/plugin/AccomplishmentHandler.js +31 -27
- package/dist/plugin/AudioController.d.ts +1 -1
- package/dist/plugin/AudioController.js +6 -6
- package/dist/plugin/Logger.js +15 -13
- package/dist/plugin/PluginController.d.ts +7 -1
- package/dist/plugin/PluginController.js +32 -27
- package/dist/plugin/RimoriClient.d.ts +17 -18
- package/dist/plugin/RimoriClient.js +31 -31
- package/dist/plugin/StandaloneClient.d.ts +1 -1
- package/dist/plugin/StandaloneClient.js +35 -16
- package/dist/plugin/ThemeSetter.js +4 -4
- package/dist/providers/PluginProvider.js +44 -14
- package/dist/utils/Language.js +57 -57
- package/dist/utils/PluginUtils.js +3 -3
- package/dist/utils/difficultyConverter.d.ts +1 -1
- package/dist/utils/difficultyConverter.js +1 -1
- package/dist/utils/endpoint.js +2 -2
- package/dist/worker/WorkerSetup.d.ts +1 -1
- package/dist/worker/WorkerSetup.js +6 -6
- package/example/docs/devdocs.md +50 -40
- package/example/docs/overview.md +1 -1
- package/example/docs/userdocs.md +4 -1
- package/example/rimori.config.ts +51 -49
- package/example/worker/vite.config.ts +3 -3
- package/example/worker/worker.ts +2 -2
- package/package.json +14 -8
- package/prettier.config.js +1 -1
- package/src/cli/scripts/init/dev-registration.ts +5 -8
- package/src/cli/scripts/init/env-setup.ts +1 -1
- package/src/cli/scripts/init/file-operations.ts +1 -1
- package/src/cli/scripts/init/html-cleaner.ts +2 -5
- package/src/cli/scripts/init/main.ts +16 -13
- package/src/cli/scripts/init/package-setup.ts +11 -15
- package/src/cli/scripts/init/router-transformer.ts +40 -37
- package/src/cli/scripts/init/tailwind-config.ts +17 -26
- package/src/cli/scripts/init/vite-config.ts +3 -3
- package/src/cli/scripts/release/release-config-upload.ts +11 -11
- package/src/cli/scripts/release/release-db-update.ts +12 -12
- package/src/cli/scripts/release/release-file-upload.ts +2 -2
- package/src/cli/scripts/release/release.ts +4 -4
- package/src/cli/types/DatabaseTypes.ts +2 -10
- package/src/components/CRUDModal.tsx +64 -48
- package/src/components/MarkdownEditor.tsx +58 -27
- package/src/components/Spinner.tsx +24 -17
- package/src/components/ai/Assistant.tsx +70 -70
- package/src/components/ai/Avatar.tsx +17 -14
- package/src/components/ai/EmbeddedAssistent/AudioInputField.tsx +63 -54
- package/src/components/ai/EmbeddedAssistent/CircleAudioAvatar.tsx +14 -5
- package/src/components/ai/EmbeddedAssistent/TTS/MessageSender.ts +75 -74
- package/src/components/ai/EmbeddedAssistent/TTS/Player.ts +3 -4
- package/src/components/ai/EmbeddedAssistent/VoiceRecoder.tsx +109 -94
- package/src/components/ai/utils.ts +4 -4
- package/src/components/audio/Playbutton.tsx +101 -93
- package/src/components/components/ContextMenu.tsx +47 -35
- package/src/components.ts +10 -10
- package/src/core/controller/AIController.ts +29 -19
- package/src/core/controller/ExerciseController.ts +16 -23
- package/src/core/controller/ObjectController.ts +15 -10
- package/src/core/controller/SettingsController.ts +89 -16
- package/src/core/controller/SharedContentController.ts +80 -44
- package/src/core/controller/VoiceController.ts +10 -8
- package/src/core/core.ts +15 -16
- package/src/fromRimori/EventBus.ts +76 -47
- package/src/fromRimori/PluginTypes.ts +26 -17
- package/src/fromRimori/readme.md +2 -2
- package/src/hooks/UseChatHook.ts +25 -15
- package/src/index.ts +10 -10
- package/src/plugin/AccomplishmentHandler.ts +53 -35
- package/src/plugin/AudioController.ts +18 -12
- package/src/plugin/Logger.ts +28 -21
- package/src/plugin/PluginController.ts +60 -44
- package/src/plugin/RimoriClient.ts +102 -72
- package/src/plugin/StandaloneClient.ts +51 -24
- package/src/plugin/ThemeSetter.ts +5 -5
- package/src/providers/PluginProvider.tsx +90 -36
- package/src/style.scss +3 -3
- package/src/utils/Language.ts +58 -58
- package/src/utils/PluginUtils.ts +16 -20
- package/src/utils/difficultyConverter.ts +2 -2
- package/src/utils/endpoint.ts +3 -2
- package/src/worker/WorkerSetup.ts +8 -9
- package/tsconfig.json +2 -4
package/src/style.scss
CHANGED
|
@@ -66,7 +66,7 @@ dialog::backdrop {
|
|
|
66
66
|
ul {
|
|
67
67
|
@apply list-disc pl-8;
|
|
68
68
|
|
|
69
|
-
li>p {
|
|
69
|
+
li > p {
|
|
70
70
|
@apply mb-1;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
@@ -74,7 +74,7 @@ dialog::backdrop {
|
|
|
74
74
|
ol {
|
|
75
75
|
@apply list-decimal pl-7;
|
|
76
76
|
|
|
77
|
-
li>p {
|
|
77
|
+
li > p {
|
|
78
78
|
@apply mb-1;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -133,4 +133,4 @@ dialog::backdrop {
|
|
|
133
133
|
@apply max-w-full;
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
}
|
|
136
|
+
}
|
package/src/utils/Language.ts
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
export const languageKeys = {
|
|
2
|
-
sq:
|
|
3
|
-
ar:
|
|
4
|
-
hy:
|
|
5
|
-
az:
|
|
6
|
-
bn:
|
|
7
|
-
bs:
|
|
8
|
-
bg:
|
|
9
|
-
ca:
|
|
10
|
-
zh:
|
|
11
|
-
hr:
|
|
12
|
-
cs:
|
|
13
|
-
da:
|
|
14
|
-
nl:
|
|
15
|
-
en:
|
|
16
|
-
et:
|
|
17
|
-
fi:
|
|
18
|
-
fr:
|
|
19
|
-
gl:
|
|
20
|
-
de:
|
|
21
|
-
el:
|
|
22
|
-
he:
|
|
23
|
-
hi:
|
|
24
|
-
hu:
|
|
25
|
-
is:
|
|
26
|
-
id:
|
|
27
|
-
it:
|
|
28
|
-
ja:
|
|
29
|
-
kn:
|
|
30
|
-
kk:
|
|
31
|
-
ko:
|
|
32
|
-
lv:
|
|
33
|
-
lt:
|
|
34
|
-
mk:
|
|
35
|
-
ms:
|
|
36
|
-
mr:
|
|
37
|
-
mi:
|
|
38
|
-
ne:
|
|
39
|
-
no:
|
|
40
|
-
fa:
|
|
41
|
-
pl:
|
|
42
|
-
pt:
|
|
43
|
-
ro:
|
|
44
|
-
ru:
|
|
45
|
-
sr:
|
|
46
|
-
sk:
|
|
47
|
-
sl:
|
|
48
|
-
es:
|
|
49
|
-
sw:
|
|
50
|
-
sv:
|
|
51
|
-
tl:
|
|
52
|
-
ta:
|
|
53
|
-
th:
|
|
54
|
-
tr:
|
|
55
|
-
uk:
|
|
56
|
-
ur:
|
|
57
|
-
vi:
|
|
58
|
-
cy:
|
|
2
|
+
sq: 'albanian',
|
|
3
|
+
ar: 'arabic',
|
|
4
|
+
hy: 'armenian',
|
|
5
|
+
az: 'azerbaijani',
|
|
6
|
+
bn: 'bengali',
|
|
7
|
+
bs: 'bosnian',
|
|
8
|
+
bg: 'bulgarian',
|
|
9
|
+
ca: 'catalan',
|
|
10
|
+
zh: 'chinese',
|
|
11
|
+
hr: 'croatian',
|
|
12
|
+
cs: 'czech',
|
|
13
|
+
da: 'danish',
|
|
14
|
+
nl: 'dutch',
|
|
15
|
+
en: 'english',
|
|
16
|
+
et: 'estonian',
|
|
17
|
+
fi: 'finnish',
|
|
18
|
+
fr: 'french',
|
|
19
|
+
gl: 'galician',
|
|
20
|
+
de: 'german',
|
|
21
|
+
el: 'greek',
|
|
22
|
+
he: 'hebrew',
|
|
23
|
+
hi: 'hindi',
|
|
24
|
+
hu: 'hungarian',
|
|
25
|
+
is: 'icelandic',
|
|
26
|
+
id: 'indonesian',
|
|
27
|
+
it: 'italian',
|
|
28
|
+
ja: 'japanese',
|
|
29
|
+
kn: 'kannada',
|
|
30
|
+
kk: 'kazakh',
|
|
31
|
+
ko: 'korean',
|
|
32
|
+
lv: 'latvian',
|
|
33
|
+
lt: 'lithuanian',
|
|
34
|
+
mk: 'macedonian',
|
|
35
|
+
ms: 'malay',
|
|
36
|
+
mr: 'marathi',
|
|
37
|
+
mi: 'maori',
|
|
38
|
+
ne: 'nepali',
|
|
39
|
+
no: 'norwegian',
|
|
40
|
+
fa: 'persian',
|
|
41
|
+
pl: 'polish',
|
|
42
|
+
pt: 'portuguese',
|
|
43
|
+
ro: 'romanian',
|
|
44
|
+
ru: 'russian',
|
|
45
|
+
sr: 'serbian',
|
|
46
|
+
sk: 'slovak',
|
|
47
|
+
sl: 'slovenian',
|
|
48
|
+
es: 'spanish',
|
|
49
|
+
sw: 'swahili',
|
|
50
|
+
sv: 'swedish',
|
|
51
|
+
tl: 'filipino',
|
|
52
|
+
ta: 'tamil',
|
|
53
|
+
th: 'thai',
|
|
54
|
+
tr: 'turkish',
|
|
55
|
+
uk: 'ukrainian',
|
|
56
|
+
ur: 'urdu',
|
|
57
|
+
vi: 'vietnamese',
|
|
58
|
+
cy: 'welsh',
|
|
59
59
|
} as const;
|
|
60
60
|
|
|
61
61
|
export type Language = keyof typeof languageKeys;
|
|
@@ -69,4 +69,4 @@ export type Language = keyof typeof languageKeys;
|
|
|
69
69
|
export function getLanguageName(languageCode: Language, capitalize: boolean = false): string {
|
|
70
70
|
const lang = languageKeys[languageCode];
|
|
71
71
|
return capitalize ? lang.charAt(0).toUpperCase() + lang.slice(1) : lang;
|
|
72
|
-
}
|
|
72
|
+
}
|
package/src/utils/PluginUtils.ts
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
export function isFullscreen() {
|
|
2
|
-
|
|
2
|
+
return !!document.fullscreenElement;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
export function triggerFullscreen(onStateChange: (isFullscreen: boolean) => void, selector?: string) {
|
|
6
|
-
|
|
7
|
-
onStateChange(isFullscreen());
|
|
8
|
-
});
|
|
9
|
-
try {
|
|
10
|
-
const ref = document.querySelector(selector || "#root")!
|
|
11
|
-
if (!isFullscreen()) {
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
ref.requestFullscreen() || ref.webkitRequestFullscreen()
|
|
14
|
-
} else {
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
document.exitFullscreen() || document.webkitExitFullscreen()
|
|
17
|
-
}
|
|
18
|
-
} catch (error: any) {
|
|
19
|
-
console.error("Failed to enter fullscreen", error.message);
|
|
20
|
-
}
|
|
6
|
+
document.addEventListener('fullscreenchange', () => {
|
|
21
7
|
onStateChange(isFullscreen());
|
|
8
|
+
});
|
|
9
|
+
try {
|
|
10
|
+
const ref = document.querySelector(selector || '#root')!;
|
|
11
|
+
if (!isFullscreen()) {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
ref.requestFullscreen() || ref.webkitRequestFullscreen();
|
|
14
|
+
} else {
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
document.exitFullscreen() || document.webkitExitFullscreen();
|
|
17
|
+
}
|
|
18
|
+
} catch (error: any) {
|
|
19
|
+
console.error('Failed to enter fullscreen', error.message);
|
|
20
|
+
}
|
|
21
|
+
onStateChange(isFullscreen());
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const codes = [
|
|
1
|
+
const codes = ['Pre-A1', 'A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'Post-C2'];
|
|
2
2
|
|
|
3
|
-
export type LanguageLevel =
|
|
3
|
+
export type LanguageLevel = 'Pre-A1' | 'A1' | 'A2' | 'B1' | 'B2' | 'C1' | 'C2' | 'Post-C2';
|
|
4
4
|
|
|
5
5
|
export function getDifficultyLevel(difficulty: LanguageLevel): number {
|
|
6
6
|
return codes.indexOf(difficulty) + 1;
|
package/src/utils/endpoint.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export const DEFAULT_ENDPOINT =
|
|
2
|
-
export const DEFAULT_ANON_KEY =
|
|
1
|
+
export const DEFAULT_ENDPOINT = 'https://pheptqdoqsdnadgoihvr.supabase.co';
|
|
2
|
+
export const DEFAULT_ANON_KEY =
|
|
3
|
+
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBoZXB0cWRvcXNkbmFkZ29paHZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzE2OTY2ODcsImV4cCI6MjA0NzI3MjY4N30.4GPFAXTF8685FaXISdAPNCIM-H3RGLo8GbyhQpu1mP0';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RimoriClient } from
|
|
2
|
-
import { EventBusHandler } from
|
|
3
|
-
import { PluginController } from
|
|
1
|
+
import { RimoriClient } from '../plugin/RimoriClient';
|
|
2
|
+
import { EventBusHandler } from '../fromRimori/EventBus';
|
|
3
|
+
import { PluginController } from '../plugin/PluginController';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Sets up the web worker for the plugin to be able receive and send messages to Rimori.
|
|
@@ -8,21 +8,20 @@ import { PluginController } from "../plugin/PluginController";
|
|
|
8
8
|
* @param init - The function containing the initialization logic.
|
|
9
9
|
*/
|
|
10
10
|
export async function setupWorker(pluginId: string, init: (client: RimoriClient) => void | Promise<void>) {
|
|
11
|
-
|
|
12
11
|
// Mock of the window object for the worker context to be able to use the PluginController.
|
|
13
12
|
const mockWindow = {
|
|
14
13
|
isWorker: true,
|
|
15
14
|
location: {},
|
|
16
15
|
parent: {
|
|
17
|
-
postMessage: () => {
|
|
16
|
+
postMessage: () => {},
|
|
18
17
|
},
|
|
19
|
-
addEventListener: () => {
|
|
18
|
+
addEventListener: () => {},
|
|
20
19
|
};
|
|
21
20
|
|
|
22
21
|
// Assign the mock to globalThis.
|
|
23
22
|
Object.assign(globalThis, { window: mockWindow });
|
|
24
23
|
|
|
25
|
-
EventBusHandler.getInstance(
|
|
24
|
+
EventBusHandler.getInstance('Worker EventBus');
|
|
26
25
|
|
|
27
26
|
const rimoriClient = await PluginController.getInstance(pluginId);
|
|
28
27
|
console.debug('[Worker] RimoriClient initialized.');
|
|
@@ -30,5 +29,5 @@ export async function setupWorker(pluginId: string, init: (client: RimoriClient)
|
|
|
30
29
|
await init(rimoriClient);
|
|
31
30
|
console.debug('[Worker] Worker initialized.');
|
|
32
31
|
|
|
33
|
-
self.postMessage({ type:
|
|
34
|
-
}
|
|
32
|
+
self.postMessage({ type: 'rimori:acknowledged', pluginId: pluginId });
|
|
33
|
+
}
|