@vnejs/plugins.views.scenario.interface 0.1.29 → 0.1.31
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/dist/modules/controller.d.ts +1 -1
- package/dist/modules/controller.js +5 -3
- package/dist/modules/interface.d.ts +3 -3
- package/dist/modules/interface.js +6 -4
- package/dist/utils/interface.d.ts +2 -3
- package/dist/view/components/InterfaceViewWall.js +5 -4
- package/dist/view/index.js +5 -4
- package/package.json +1 -1
- package/src/modules/controller.ts +6 -3
- package/src/modules/interface.ts +6 -4
- package/src/utils/interface.ts +2 -3
- package/src/view/components/InterfaceViewWall.tsx +5 -4
- package/src/view/index.tsx +5 -4
|
@@ -17,7 +17,7 @@ export declare class InterfaceController extends ModuleController<InterfacePlugi
|
|
|
17
17
|
onViewChanged: ({ isForce }?: InterfaceForcePayload) => Promise<unknown[]> | undefined;
|
|
18
18
|
onTextChanged: ({ tokens, uid, tokensVisible }?: InterfaceTextChangedPayload) => Promise<unknown[] | undefined>;
|
|
19
19
|
onWallChanged: ({ wall }?: InterfaceWallChangedPayload) => Promise<unknown[] | undefined>;
|
|
20
|
-
onSpeakerChanged: ({ speaker
|
|
20
|
+
onSpeakerChanged: ({ speaker }?: InterfaceSpeakerChangedPayload) => Promise<unknown[] | undefined>;
|
|
21
21
|
onVisibleChanged: ({ isForce }?: InterfaceForcePayload) => Promise<void>;
|
|
22
22
|
onStateChanged: () => Promise<void>;
|
|
23
23
|
getDefaultState: () => InterfacePluginState;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ModuleController } from "@vnejs/module.components";
|
|
2
2
|
import { CONSTANTS as ControlsConstants } from "@vnejs/contracts.controls";
|
|
3
|
+
import { getTextSpeakerInfo } from "@vnejs/contracts.text";
|
|
3
4
|
export class InterfaceController extends ModuleController {
|
|
4
5
|
name = "interface.controller";
|
|
5
6
|
isStateChangeInProcess = false;
|
|
@@ -43,10 +44,11 @@ export class InterfaceController extends ModuleController {
|
|
|
43
44
|
await this.waitRerender();
|
|
44
45
|
return this.updateStateAndViewFast({ wall });
|
|
45
46
|
};
|
|
46
|
-
onSpeakerChanged = async ({ speaker = ""
|
|
47
|
+
onSpeakerChanged = async ({ speaker = "" } = {}) => {
|
|
47
48
|
while (this.isStateChangeInProcess)
|
|
48
49
|
await this.waitRerender();
|
|
49
|
-
|
|
50
|
+
const speakerInfo = { ...getTextSpeakerInfo(this.globalState["text.speaker"], speaker) };
|
|
51
|
+
return this.updateStateAndViewFast({ speaker, speakerInfo });
|
|
50
52
|
};
|
|
51
53
|
onVisibleChanged = async ({ isForce = false } = {}) => {
|
|
52
54
|
const { isVisible = false } = this.globalState.interface;
|
|
@@ -68,7 +70,7 @@ export class InterfaceController extends ModuleController {
|
|
|
68
70
|
uid: "",
|
|
69
71
|
tokensVisible: 0,
|
|
70
72
|
speaker: "",
|
|
71
|
-
|
|
73
|
+
speakerInfo: {},
|
|
72
74
|
isShow: false,
|
|
73
75
|
isVisible: false,
|
|
74
76
|
isForce: false,
|
|
@@ -6,7 +6,7 @@ import type { InterfaceForcePayload, InterfaceModuleState, InterfaceSpeakerChang
|
|
|
6
6
|
export declare class Interface extends ModuleCore<InterfacePluginEvents, InterfacePluginConstants, InterfacePluginSettings, InterfacePluginParams, InterfaceModuleState> {
|
|
7
7
|
name: string;
|
|
8
8
|
subscribe: () => void;
|
|
9
|
-
init: () => Promise<unknown[]
|
|
9
|
+
init: () => Promise<[unknown[] | undefined, unknown[] | undefined]>;
|
|
10
10
|
onLineExec: ({ line }?: LineExecHandlerArg) => Promise<void>;
|
|
11
11
|
onInteract: () => Promise<unknown[]> | undefined;
|
|
12
12
|
onShow: ({ isForce }?: InterfaceForcePayload) => false | Promise<unknown[] | undefined>;
|
|
@@ -14,7 +14,7 @@ export declare class Interface extends ModuleCore<InterfacePluginEvents, Interfa
|
|
|
14
14
|
onVisible: ({ isForce }?: InterfaceForcePayload) => Promise<unknown[]> | undefined;
|
|
15
15
|
onTextChanged: ({ tokens, uid }?: InterfaceTextChangedPayload) => Promise<unknown[]> | undefined;
|
|
16
16
|
onVisibleTokensChanged: ({ tokensVisible, uid }?: InterfaceVisibleTokensChangedPayload) => Promise<unknown[]> | undefined;
|
|
17
|
-
onTextSpeakerChanged: ({ speaker
|
|
17
|
+
onTextSpeakerChanged: ({ speaker }?: InterfaceSpeakerChangedPayload) => Promise<unknown[]> | undefined;
|
|
18
18
|
onTextEmitBefore: () => Promise<unknown[]> | undefined;
|
|
19
19
|
onTextHide: () => Promise<unknown[]> | undefined;
|
|
20
20
|
onView: ({ view, isForce }?: InterfaceViewPayload) => Promise<unknown[]> | undefined;
|
|
@@ -24,7 +24,7 @@ export declare class Interface extends ModuleCore<InterfacePluginEvents, Interfa
|
|
|
24
24
|
setShow: (isShow: boolean, isForce?: boolean) => Promise<unknown[] | undefined>;
|
|
25
25
|
setVisible: (isVisible: boolean, isForce?: boolean) => Promise<unknown[]> | undefined;
|
|
26
26
|
emitTextChanged: (tokens?: InterfaceTextChangedPayload["tokens"], uid?: string, tokensVisible?: number) => Promise<unknown[]> | undefined;
|
|
27
|
-
emitSpeakerChanged: (speaker?: string
|
|
27
|
+
emitSpeakerChanged: (speaker?: string) => Promise<unknown[]> | undefined;
|
|
28
28
|
setNewState: (view?: string, isVisible?: boolean, isShow?: boolean) => Promise<unknown[]> | undefined;
|
|
29
29
|
getDefaultState: () => InterfaceModuleState;
|
|
30
30
|
}
|
|
@@ -12,13 +12,15 @@ export class Interface extends ModuleCore {
|
|
|
12
12
|
this.on(this.EVENTS.INTERFACE.VISIBLE_TOKENS_CHANGED, this.onVisibleTokensChanged);
|
|
13
13
|
this.on(this.EVENTS.TEXT.CHANGED, this.onTextChanged);
|
|
14
14
|
this.on(this.EVENTS.TEXT.SPEAKER_CHANGED, this.onTextSpeakerChanged);
|
|
15
|
-
this.on(this.EVENTS.TEXT.EMIT_BEFORE, this.onTextEmitBefore);
|
|
16
15
|
this.on(this.EVENTS.STATE.SET, this.onStateSet);
|
|
17
16
|
this.on(this.EVENTS.STATE.CLEAR, this.onStateClear);
|
|
18
17
|
};
|
|
19
18
|
init = () => {
|
|
20
19
|
this.shared.interfaceTextShowAllTokensOnChange = true;
|
|
21
|
-
return
|
|
20
|
+
return Promise.all([
|
|
21
|
+
this.emit(this.EVENTS.SCENARIO.LINE_EXEC_REG, { module: this.name, handler: this.onLineExec }),
|
|
22
|
+
this.emit(this.EVENTS.TEXT.EMIT_BEFORE_REG, { handler: this.onTextEmitBefore }),
|
|
23
|
+
]);
|
|
22
24
|
};
|
|
23
25
|
onLineExec = async ({ line = "" } = {}) => {
|
|
24
26
|
const isForce = this.shared.viewForceAnimationSources.isNotEmpty();
|
|
@@ -40,7 +42,7 @@ export class Interface extends ModuleCore {
|
|
|
40
42
|
return this.emitTextChanged(tokens, uid, tokensVisible);
|
|
41
43
|
};
|
|
42
44
|
onVisibleTokensChanged = ({ tokensVisible = 0, uid = "" } = {}) => this.emitTextChanged(this.globalState.text.tokens, uid, tokensVisible);
|
|
43
|
-
onTextSpeakerChanged = ({ speaker
|
|
45
|
+
onTextSpeakerChanged = ({ speaker } = {}) => this.emitSpeakerChanged(speaker);
|
|
44
46
|
onTextEmitBefore = () => this.emit(this.EVENTS.INTERFACE.SHOW);
|
|
45
47
|
onTextHide = () => this.emitTextChanged([], "", 0);
|
|
46
48
|
onView = ({ view, isForce = false } = {}) => this.setView(view, isForce);
|
|
@@ -64,7 +66,7 @@ export class Interface extends ModuleCore {
|
|
|
64
66
|
return this.emit(this.EVENTS.INTERFACE.VISIBLE_CHANGED, { isForce });
|
|
65
67
|
};
|
|
66
68
|
emitTextChanged = (tokens = [], uid = "", tokensVisible) => this.emit(this.EVENTS.INTERFACE.TEXT_CHANGED, { tokens, uid, tokensVisible });
|
|
67
|
-
emitSpeakerChanged = (speaker = ""
|
|
69
|
+
emitSpeakerChanged = (speaker = "") => this.emit(this.EVENTS.INTERFACE.SPEAKER_CHANGED, { speaker });
|
|
68
70
|
setNewState = (view, isVisible, isShow) => {
|
|
69
71
|
Object.assign(this.state, { isShow, view, isVisible });
|
|
70
72
|
return this.emit(this.EVENTS.INTERFACE.STATE_CHANGED);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ModuleControllerState } from "@vnejs/module.components";
|
|
2
|
-
import type { TokenizedChar } from "@vnejs/contracts.text";
|
|
2
|
+
import type { TextSpeakerEntry, TokenizedChar } from "@vnejs/contracts.text";
|
|
3
3
|
import type { WallElement } from "@vnejs/contracts.text.wall";
|
|
4
4
|
import type { InterfaceModuleState } from "@vnejs/contracts.views.scenario.interface";
|
|
5
5
|
export type { InterfaceModuleState };
|
|
@@ -9,7 +9,7 @@ export type InterfaceRuntimeState = {
|
|
|
9
9
|
uid: string;
|
|
10
10
|
tokensVisible: number;
|
|
11
11
|
speaker: string;
|
|
12
|
-
|
|
12
|
+
speakerInfo: TextSpeakerEntry;
|
|
13
13
|
};
|
|
14
14
|
export type InterfacePluginState = ModuleControllerState & InterfaceModuleState & InterfaceRuntimeState & {
|
|
15
15
|
isFast?: boolean;
|
|
@@ -39,5 +39,4 @@ export type InterfaceWallChangedPayload = {
|
|
|
39
39
|
};
|
|
40
40
|
export type InterfaceSpeakerChangedPayload = {
|
|
41
41
|
speaker?: string;
|
|
42
|
-
meet?: number;
|
|
43
42
|
};
|
|
@@ -2,13 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Flex, PositionBox, Scrollbar, SmoothText, Text, useMemo } from "@vnejs/uis.react";
|
|
3
3
|
import { useTokensHook } from "./tokens.hook.js";
|
|
4
4
|
const renderOneText = (wallElement) => (_jsxs("div", { children: [wallElement.speakerName && (_jsx(Text, { ...wallElement.propsByView.text, isInlineBlock: true, color: wallElement.speakerColor, text: `${wallElement.speakerName}:`, marginRight: 12 })), _jsx(SmoothText, { ...wallElement.propsByView.text, isNoScrollBar: true, color: wallElement.color, opacity: wallElement.opacity, transition: wallElement.transition, tokens: wallElement.tokens, tokensVisibleForce: wallElement.tokensVisible })] }, wallElement.uid));
|
|
5
|
-
const mapWall = ({ uid = "", tokens = [], speaker = "",
|
|
5
|
+
const mapWall = ({ uid = "", tokens = [], speaker = "", speakerInfo = {}, transition = 0, props, }) => {
|
|
6
6
|
const propsByView = props.PARAMS.INTERFACE.VIEW_PROPS.wall;
|
|
7
7
|
const speakersInfo = props.PARAMS.TEXT.SPEAKERS_INFO;
|
|
8
|
-
const
|
|
9
|
-
const { color, opacity = 1, speakerColor = "white" } =
|
|
8
|
+
const speakerStyleInfo = speakersInfo[speaker] ?? speakersInfo[props.PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
|
|
9
|
+
const { color, opacity = 1, speakerColor = "white" } = speakerStyleInfo;
|
|
10
10
|
const locs = props.locs ?? {};
|
|
11
|
-
const
|
|
11
|
+
const meet = speakerInfo.meet ?? 0;
|
|
12
|
+
const speakerName = locs[`speaker.${speaker}.${meet}`];
|
|
12
13
|
return { speakerName, speakerColor, uid, color, opacity, tokens, tokensVisible: tokens.length, transition, propsByView };
|
|
13
14
|
};
|
|
14
15
|
export const InterfaceViewWall = (props) => {
|
package/dist/view/index.js
CHANGED
|
@@ -5,15 +5,16 @@ const Interface = (props) => {
|
|
|
5
5
|
const { store, onMount, emit, EVENTS, PARAMS } = props;
|
|
6
6
|
const state = useStoreState(store, onMount);
|
|
7
7
|
const { isShow = false, isVisible = false, isForce = false, tokensVisible = 0, view = "", locs = {} } = state;
|
|
8
|
-
const { speaker = "",
|
|
8
|
+
const { speaker = "", speakerInfo = {}, tokens = [], wall = [], postfix = "", prefix = "", uid = "" } = state;
|
|
9
9
|
const onClick = useCallback(() => emit(EVENTS.INTERFACE.INTERACT), [emit, EVENTS.INTERFACE.INTERACT]);
|
|
10
10
|
const isRealForce = useIsForceHook(isForce);
|
|
11
|
-
const
|
|
11
|
+
const meet = speakerInfo.meet ?? 0;
|
|
12
|
+
const speakerName = locs[`speaker.${speaker}.${meet}`];
|
|
12
13
|
const speakerText = speakerName ? `${`${locs[`prefix.${prefix}`] ?? ""} `}${speakerName}${` ${locs[`postfix.${postfix}`] ?? ""}`}` : ".";
|
|
13
14
|
const transition = isRealForce ? 0 : PARAMS.INTERFACE.TRANSITION;
|
|
14
15
|
const speakersInfo = PARAMS.TEXT.SPEAKERS_INFO;
|
|
15
|
-
const
|
|
16
|
-
const { color, opacity = 1, speakerColor = "white" } =
|
|
16
|
+
const speakerStyleInfo = speakersInfo[speaker] ?? speakersInfo[PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
|
|
17
|
+
const { color, opacity = 1, speakerColor = "white" } = speakerStyleInfo;
|
|
17
18
|
const propsCommon = useMemo(() => ({ isForce: isRealForce, transition, tokensVisible, tokens, wall, uid, locs }), [isRealForce, transition, tokensVisible, tokens, wall, uid, locs]);
|
|
18
19
|
const propsSpeaker = useMemo(() => ({ speakerText, speakerName, speakerColor }), [speakerText, speakerName, speakerColor]);
|
|
19
20
|
const propsText = useMemo(() => ({ opacity, color }), [opacity, color]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ModuleController } from "@vnejs/module.components";
|
|
2
2
|
import type { ControlsPopPayload, ControlsPushPayload } from "@vnejs/module.components";
|
|
3
3
|
import { CONSTANTS as ControlsConstants } from "@vnejs/contracts.controls";
|
|
4
|
+
import { getTextSpeakerInfo } from "@vnejs/contracts.text";
|
|
4
5
|
|
|
5
6
|
import type { InterfacePluginConstants, InterfacePluginEvents, InterfacePluginParams, InterfacePluginSettings } from "../types.js";
|
|
6
7
|
import type {
|
|
@@ -66,10 +67,12 @@ export class InterfaceController extends ModuleController<
|
|
|
66
67
|
|
|
67
68
|
return this.updateStateAndViewFast({ wall });
|
|
68
69
|
};
|
|
69
|
-
onSpeakerChanged = async ({ speaker = ""
|
|
70
|
+
onSpeakerChanged = async ({ speaker = "" }: InterfaceSpeakerChangedPayload = {}) => {
|
|
70
71
|
while (this.isStateChangeInProcess) await this.waitRerender();
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
const speakerInfo = { ...getTextSpeakerInfo(this.globalState["text.speaker"], speaker) };
|
|
74
|
+
|
|
75
|
+
return this.updateStateAndViewFast({ speaker, speakerInfo });
|
|
73
76
|
};
|
|
74
77
|
onVisibleChanged = async ({ isForce = false }: InterfaceForcePayload = {}) => {
|
|
75
78
|
const { isVisible = false } = this.globalState.interface;
|
|
@@ -96,7 +99,7 @@ export class InterfaceController extends ModuleController<
|
|
|
96
99
|
uid: "",
|
|
97
100
|
tokensVisible: 0,
|
|
98
101
|
speaker: "",
|
|
99
|
-
|
|
102
|
+
speakerInfo: {},
|
|
100
103
|
isShow: false,
|
|
101
104
|
isVisible: false,
|
|
102
105
|
isForce: false,
|
package/src/modules/interface.ts
CHANGED
|
@@ -34,7 +34,6 @@ export class Interface extends ModuleCore<
|
|
|
34
34
|
|
|
35
35
|
this.on(this.EVENTS.TEXT.CHANGED, this.onTextChanged);
|
|
36
36
|
this.on(this.EVENTS.TEXT.SPEAKER_CHANGED, this.onTextSpeakerChanged);
|
|
37
|
-
this.on(this.EVENTS.TEXT.EMIT_BEFORE, this.onTextEmitBefore);
|
|
38
37
|
|
|
39
38
|
this.on(this.EVENTS.STATE.SET, this.onStateSet);
|
|
40
39
|
this.on(this.EVENTS.STATE.CLEAR, this.onStateClear);
|
|
@@ -43,7 +42,10 @@ export class Interface extends ModuleCore<
|
|
|
43
42
|
init = () => {
|
|
44
43
|
this.shared.interfaceTextShowAllTokensOnChange = true;
|
|
45
44
|
|
|
46
|
-
return
|
|
45
|
+
return Promise.all([
|
|
46
|
+
this.emit(this.EVENTS.SCENARIO.LINE_EXEC_REG, { module: this.name, handler: this.onLineExec }),
|
|
47
|
+
this.emit(this.EVENTS.TEXT.EMIT_BEFORE_REG, { handler: this.onTextEmitBefore }),
|
|
48
|
+
]);
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
onLineExec = async ({ line = "" }: LineExecHandlerArg = {}) => {
|
|
@@ -69,7 +71,7 @@ export class Interface extends ModuleCore<
|
|
|
69
71
|
};
|
|
70
72
|
onVisibleTokensChanged = ({ tokensVisible = 0, uid = "" }: InterfaceVisibleTokensChangedPayload = {}) =>
|
|
71
73
|
this.emitTextChanged(this.globalState.text.tokens, uid, tokensVisible);
|
|
72
|
-
onTextSpeakerChanged = ({ speaker
|
|
74
|
+
onTextSpeakerChanged = ({ speaker }: InterfaceSpeakerChangedPayload = {}) => this.emitSpeakerChanged(speaker);
|
|
73
75
|
onTextEmitBefore = () => this.emit(this.EVENTS.INTERFACE.SHOW);
|
|
74
76
|
onTextHide = () => this.emitTextChanged([], "", 0);
|
|
75
77
|
onView = ({ view, isForce = false }: InterfaceViewPayload = {}) => this.setView(view, isForce);
|
|
@@ -99,7 +101,7 @@ export class Interface extends ModuleCore<
|
|
|
99
101
|
};
|
|
100
102
|
emitTextChanged = (tokens: InterfaceTextChangedPayload["tokens"] = [], uid = "", tokensVisible?: number) =>
|
|
101
103
|
this.emit(this.EVENTS.INTERFACE.TEXT_CHANGED, { tokens, uid, tokensVisible });
|
|
102
|
-
emitSpeakerChanged = (speaker = ""
|
|
104
|
+
emitSpeakerChanged = (speaker = "") => this.emit(this.EVENTS.INTERFACE.SPEAKER_CHANGED, { speaker });
|
|
103
105
|
setNewState = (view?: string, isVisible?: boolean, isShow?: boolean) => {
|
|
104
106
|
Object.assign(this.state, { isShow, view, isVisible });
|
|
105
107
|
|
package/src/utils/interface.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ModuleControllerState } from "@vnejs/module.components";
|
|
2
|
-
import type { TokenizedChar } from "@vnejs/contracts.text";
|
|
2
|
+
import type { TextSpeakerEntry, TokenizedChar } from "@vnejs/contracts.text";
|
|
3
3
|
import type { WallElement } from "@vnejs/contracts.text.wall";
|
|
4
4
|
import type { InterfaceModuleState } from "@vnejs/contracts.views.scenario.interface";
|
|
5
5
|
|
|
@@ -11,7 +11,7 @@ export type InterfaceRuntimeState = {
|
|
|
11
11
|
uid: string;
|
|
12
12
|
tokensVisible: number;
|
|
13
13
|
speaker: string;
|
|
14
|
-
|
|
14
|
+
speakerInfo: TextSpeakerEntry;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export type InterfacePluginState = ModuleControllerState &
|
|
@@ -49,5 +49,4 @@ export type InterfaceWallChangedPayload = {
|
|
|
49
49
|
|
|
50
50
|
export type InterfaceSpeakerChangedPayload = {
|
|
51
51
|
speaker?: string;
|
|
52
|
-
meet?: number;
|
|
53
52
|
};
|
|
@@ -46,16 +46,17 @@ const mapWall = ({
|
|
|
46
46
|
uid = "",
|
|
47
47
|
tokens = [],
|
|
48
48
|
speaker = "",
|
|
49
|
-
|
|
49
|
+
speakerInfo = {},
|
|
50
50
|
transition = 0,
|
|
51
51
|
props,
|
|
52
52
|
}: WallElement & { transition?: number; props: InterfaceViewProps }) => {
|
|
53
53
|
const propsByView = props.PARAMS.INTERFACE.VIEW_PROPS.wall;
|
|
54
54
|
const speakersInfo = props.PARAMS.TEXT.SPEAKERS_INFO;
|
|
55
|
-
const
|
|
56
|
-
const { color, opacity = 1, speakerColor = "white" } =
|
|
55
|
+
const speakerStyleInfo: TextSpeakerInfo = speakersInfo[speaker] ?? speakersInfo[props.PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
|
|
56
|
+
const { color, opacity = 1, speakerColor = "white" } = speakerStyleInfo;
|
|
57
57
|
const locs = props.locs ?? {};
|
|
58
|
-
const
|
|
58
|
+
const meet = speakerInfo.meet ?? 0;
|
|
59
|
+
const speakerName = locs[`speaker.${speaker}.${meet}`];
|
|
59
60
|
|
|
60
61
|
return { speakerName, speakerColor, uid, color, opacity, tokens, tokensVisible: tokens.length, transition, propsByView };
|
|
61
62
|
};
|
package/src/view/index.tsx
CHANGED
|
@@ -20,19 +20,20 @@ const Interface = (props: InterfaceComponentProps) => {
|
|
|
20
20
|
const state = useStoreState<InterfacePluginState>(store, onMount);
|
|
21
21
|
|
|
22
22
|
const { isShow = false, isVisible = false, isForce = false, tokensVisible = 0, view = "", locs = {} } = state;
|
|
23
|
-
const { speaker = "",
|
|
23
|
+
const { speaker = "", speakerInfo = {}, tokens = [], wall = [], postfix = "", prefix = "", uid = "" } = state;
|
|
24
24
|
|
|
25
25
|
const onClick = useCallback(() => emit(EVENTS.INTERFACE.INTERACT), [emit, EVENTS.INTERFACE.INTERACT]);
|
|
26
26
|
|
|
27
27
|
const isRealForce = useIsForceHook(isForce);
|
|
28
28
|
|
|
29
|
-
const
|
|
29
|
+
const meet = speakerInfo.meet ?? 0;
|
|
30
|
+
const speakerName = locs[`speaker.${speaker}.${meet}`];
|
|
30
31
|
const speakerText = speakerName ? `${`${locs[`prefix.${prefix}`] ?? ""} `}${speakerName}${` ${locs[`postfix.${postfix}`] ?? ""}`}` : ".";
|
|
31
32
|
const transition = isRealForce ? 0 : PARAMS.INTERFACE.TRANSITION;
|
|
32
33
|
const speakersInfo = PARAMS.TEXT.SPEAKERS_INFO;
|
|
33
|
-
const
|
|
34
|
+
const speakerStyleInfo: TextSpeakerInfo = speakersInfo[speaker] ?? speakersInfo[PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
|
|
34
35
|
|
|
35
|
-
const { color, opacity = 1, speakerColor = "white" } =
|
|
36
|
+
const { color, opacity = 1, speakerColor = "white" } = speakerStyleInfo;
|
|
36
37
|
|
|
37
38
|
const propsCommon = useMemo(
|
|
38
39
|
() => ({ isForce: isRealForce, transition, tokensVisible, tokens, wall, uid, locs }),
|