@vnejs/plugins.views.scenario.interface 0.1.30 → 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 +2 -2
- package/dist/modules/interface.js +2 -2
- 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 +2 -2
- 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,
|
|
@@ -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
|
}
|
|
@@ -42,7 +42,7 @@ export class Interface extends ModuleCore {
|
|
|
42
42
|
return this.emitTextChanged(tokens, uid, tokensVisible);
|
|
43
43
|
};
|
|
44
44
|
onVisibleTokensChanged = ({ tokensVisible = 0, uid = "" } = {}) => this.emitTextChanged(this.globalState.text.tokens, uid, tokensVisible);
|
|
45
|
-
onTextSpeakerChanged = ({ speaker
|
|
45
|
+
onTextSpeakerChanged = ({ speaker } = {}) => this.emitSpeakerChanged(speaker);
|
|
46
46
|
onTextEmitBefore = () => this.emit(this.EVENTS.INTERFACE.SHOW);
|
|
47
47
|
onTextHide = () => this.emitTextChanged([], "", 0);
|
|
48
48
|
onView = ({ view, isForce = false } = {}) => this.setView(view, isForce);
|
|
@@ -66,7 +66,7 @@ export class Interface extends ModuleCore {
|
|
|
66
66
|
return this.emit(this.EVENTS.INTERFACE.VISIBLE_CHANGED, { isForce });
|
|
67
67
|
};
|
|
68
68
|
emitTextChanged = (tokens = [], uid = "", tokensVisible) => this.emit(this.EVENTS.INTERFACE.TEXT_CHANGED, { tokens, uid, tokensVisible });
|
|
69
|
-
emitSpeakerChanged = (speaker = ""
|
|
69
|
+
emitSpeakerChanged = (speaker = "") => this.emit(this.EVENTS.INTERFACE.SPEAKER_CHANGED, { speaker });
|
|
70
70
|
setNewState = (view, isVisible, isShow) => {
|
|
71
71
|
Object.assign(this.state, { isShow, view, isVisible });
|
|
72
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
|
@@ -71,7 +71,7 @@ export class Interface extends ModuleCore<
|
|
|
71
71
|
};
|
|
72
72
|
onVisibleTokensChanged = ({ tokensVisible = 0, uid = "" }: InterfaceVisibleTokensChangedPayload = {}) =>
|
|
73
73
|
this.emitTextChanged(this.globalState.text.tokens, uid, tokensVisible);
|
|
74
|
-
onTextSpeakerChanged = ({ speaker
|
|
74
|
+
onTextSpeakerChanged = ({ speaker }: InterfaceSpeakerChangedPayload = {}) => this.emitSpeakerChanged(speaker);
|
|
75
75
|
onTextEmitBefore = () => this.emit(this.EVENTS.INTERFACE.SHOW);
|
|
76
76
|
onTextHide = () => this.emitTextChanged([], "", 0);
|
|
77
77
|
onView = ({ view, isForce = false }: InterfaceViewPayload = {}) => this.setView(view, isForce);
|
|
@@ -101,7 +101,7 @@ export class Interface extends ModuleCore<
|
|
|
101
101
|
};
|
|
102
102
|
emitTextChanged = (tokens: InterfaceTextChangedPayload["tokens"] = [], uid = "", tokensVisible?: number) =>
|
|
103
103
|
this.emit(this.EVENTS.INTERFACE.TEXT_CHANGED, { tokens, uid, tokensVisible });
|
|
104
|
-
emitSpeakerChanged = (speaker = ""
|
|
104
|
+
emitSpeakerChanged = (speaker = "") => this.emit(this.EVENTS.INTERFACE.SPEAKER_CHANGED, { speaker });
|
|
105
105
|
setNewState = (view?: string, isVisible?: boolean, isShow?: boolean) => {
|
|
106
106
|
Object.assign(this.state, { isShow, view, isVisible });
|
|
107
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 }),
|