@vnejs/plugins.views.scenario.interface 0.1.30 → 0.1.32

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/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  import "@vnejs/contracts.views.scenario.interface";
2
+ import "@vnejs/contracts.text.meet";
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import "@vnejs/contracts.views.scenario.interface";
2
+ import "@vnejs/contracts.text.meet";
2
3
  import { regPlugin } from "@vnejs/shared";
3
4
  import { PARAMS, PLUGIN_NAME, SUBSCRIBE_EVENTS } from "@vnejs/contracts.views.scenario.interface";
4
5
  import { InterfaceController } from "./modules/controller.js";
@@ -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, meet }?: InterfaceSpeakerChangedPayload) => Promise<unknown[] | undefined>;
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 = "", meet = 0 } = {}) => {
47
+ onSpeakerChanged = async ({ speaker = "" } = {}) => {
47
48
  while (this.isStateChangeInProcess)
48
49
  await this.waitRerender();
49
- return this.updateStateAndViewFast({ speaker, meet });
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
- meet: 0,
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, meet }?: InterfaceSpeakerChangedPayload) => Promise<unknown[]> | undefined;
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, meet?: number) => Promise<unknown[]> | undefined;
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, meet } = {}) => this.emitSpeakerChanged(speaker, meet);
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 = "", meet = 0) => this.emit(this.EVENTS.INTERFACE.SPEAKER_CHANGED, { speaker, meet });
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
- meet: number;
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 = "", meet = 0, transition = 0, props, }) => {
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 speakerInfo = speakersInfo[speaker] ?? speakersInfo[props.PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
9
- const { color, opacity = 1, speakerColor = "white" } = speakerInfo;
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 speakerName = locs[`speaker.${speaker}.${meet ?? 0}`];
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) => {
@@ -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 = "", meet = 0, tokens = [], wall = [], postfix = "", prefix = "", uid = "" } = state;
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 speakerName = locs[`speaker.${speaker}.${meet ?? 0}`];
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 speakerInfo = speakersInfo[speaker] ?? speakersInfo[PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
16
- const { color, opacity = 1, speakerColor = "white" } = speakerInfo;
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,6 @@
1
1
  {
2
2
  "name": "@vnejs/plugins.views.scenario.interface",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -37,6 +37,7 @@
37
37
  "@vnejs/module.core": "~0.1.0",
38
38
  "@vnejs/module.components": "~0.1.0",
39
39
  "@vnejs/contracts.text": "~0.1.0",
40
+ "@vnejs/contracts.text.meet": "~0.1.0",
40
41
  "@vnejs/contracts.text.wall": "~0.1.0",
41
42
  "@vnejs/shared": "~0.1.0",
42
43
  "@vnejs/uis.react": "~0.1.0",
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import "@vnejs/contracts.views.scenario.interface";
2
+ import "@vnejs/contracts.text.meet";
2
3
 
3
4
  import { regPlugin } from "@vnejs/shared";
4
5
  import { PARAMS, PLUGIN_NAME, SUBSCRIBE_EVENTS } from "@vnejs/contracts.views.scenario.interface";
@@ -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 = "", meet = 0 }: InterfaceSpeakerChangedPayload = {}) => {
70
+ onSpeakerChanged = async ({ speaker = "" }: InterfaceSpeakerChangedPayload = {}) => {
70
71
  while (this.isStateChangeInProcess) await this.waitRerender();
71
72
 
72
- return this.updateStateAndViewFast({ speaker, meet });
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
- meet: 0,
102
+ speakerInfo: {},
100
103
  isShow: false,
101
104
  isVisible: false,
102
105
  isForce: false,
@@ -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, meet }: InterfaceSpeakerChangedPayload = {}) => this.emitSpeakerChanged(speaker, meet);
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 = "", meet = 0) => this.emit(this.EVENTS.INTERFACE.SPEAKER_CHANGED, { speaker, meet });
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
 
@@ -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
- meet: number;
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
- meet = 0,
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 speakerInfo: TextSpeakerInfo = speakersInfo[speaker] ?? speakersInfo[props.PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
56
- const { color, opacity = 1, speakerColor = "white" } = speakerInfo;
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 speakerName = locs[`speaker.${speaker}.${meet ?? 0}`];
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
  };
@@ -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 = "", meet = 0, tokens = [], wall = [], postfix = "", prefix = "", uid = "" } = state;
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 speakerName = locs[`speaker.${speaker}.${meet ?? 0}`];
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 speakerInfo: TextSpeakerInfo = speakersInfo[speaker] ?? speakersInfo[PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
34
+ const speakerStyleInfo: TextSpeakerInfo = speakersInfo[speaker] ?? speakersInfo[PARAMS.TEXT.DEFAULT_SPEAKER_NAME];
34
35
 
35
- const { color, opacity = 1, speakerColor = "white" } = speakerInfo;
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 }),