@cuemath/leap 2.8.36-link.2 → 2.8.36-link.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.
@@ -1 +1 @@
1
- {"version":3,"file":"use-talk-meter.js","sources":["../../../../src/features/talk-meter/hooks/use-talk-meter.ts"],"sourcesContent":["import type { ITalkMeterHook } from '../talk-meter-types';\n\nimport { useAVActions, useAVMessage, useRemotePeers } from '@cuemath/av';\nimport { useRef, useMemo, useCallback, useState, useEffect } from 'react';\n\nimport { useUIContext } from '../../ui/context/context';\n\nconst ONE_MINUTE = 1000 * 60;\nconst BATCH_ONE_MINUTE = 20;\nconst BATCH_TWO_MINUTE = 40;\n\nconst getBatchToSendInfo = (classStartTime: Date, batchSeen: number) => {\n const now = Date.now();\n const classTS = classStartTime.getTime();\n const diff = Math.abs(now - classTS);\n const minutes = Math.floor(diff / 1000 / 60);\n const canSendFirstBatch =\n (batchSeen === 0 || batchSeen === 1) &&\n minutes >= BATCH_ONE_MINUTE - 2 &&\n minutes <= BATCH_ONE_MINUTE;\n const canSendSecondBatch =\n (batchSeen === 1 || batchSeen === 2) &&\n minutes >= BATCH_TWO_MINUTE - 2 &&\n minutes <= BATCH_TWO_MINUTE;\n\n const lastMinutesLeft = minutes >= 50;\n\n let batchNo = 0;\n let canDisplayBatch = false;\n\n if (lastMinutesLeft) {\n batchNo = 0;\n } else if (canSendSecondBatch) {\n batchNo = 2;\n canDisplayBatch = minutes >= BATCH_TWO_MINUTE;\n } else if (canSendFirstBatch) {\n batchNo = 1;\n canDisplayBatch = minutes >= BATCH_ONE_MINUTE;\n }\n\n return {\n lastMinutesLeft,\n canSendBatch: canSendFirstBatch || canSendSecondBatch,\n batchNoToSend: batchNo,\n minutes,\n canDisplay: canDisplayBatch,\n };\n};\n\nexport const useTalkMeter = (props: ITalkMeterHook) => {\n const {\n userType,\n studentId,\n teacherId,\n classStartTime,\n avPackageEnabled,\n teacherClassroomId,\n teacherTalkTime,\n studentTalkTime,\n lastBatchReceivedNo,\n canDisplayBatch,\n onMessageReceive,\n onDismissMeter,\n } = props;\n const [canAnimateIn, setCanAnimateIn] = useState(false);\n const [canAnimateOut, setCanAnimateOut] = useState(false);\n\n const { onEvent } = useUIContext();\n const { sendMessage } = useAVActions();\n\n const remotePeers = useRemotePeers();\n const studentPeerId = remotePeers.find(peer => peer.userId === studentId)?.id;\n const teacherPeerId = remotePeers.find(p => p.userType === 'teacher')?.id;\n\n const isTeacher = userType === 'TEACHER';\n\n const teacherTalkRef = useRef(teacherTalkTime);\n const studentTalkRef = useRef(studentTalkTime);\n const prevSentRef = useRef(0);\n\n const totalTalkTime = studentTalkRef.current + teacherTalkRef.current;\n const stdRatio = Math.ceil((studentTalkRef.current * 100) / totalTalkTime) || 0;\n const tchRatio = Math.floor((teacherTalkRef.current * 100) / totalTalkTime) || 0;\n\n const payload = useMemo(\n () => ({\n teacher_classroom_id: teacherClassroomId,\n teacher_id: teacherId,\n studentId: studentId,\n }),\n [studentId, teacherClassroomId, teacherId],\n );\n\n const handleDismiss = useCallback(() => {\n setCanAnimateOut(true);\n setCanAnimateIn(false);\n onDismissMeter();\n }, [onDismissMeter]);\n\n const trackEvent = useCallback(\n (eventName: string, data = {}) => {\n onEvent(eventName, { ...payload, ...data });\n },\n [onEvent, payload],\n );\n\n const sendBatch = useCallback(\n (batchNo: number) => {\n const EVENT_NAME = isTeacher ? 'TEACHER_TALK_TIME_UPDATED' : 'STUDENT_TALK_TIME_UPDATED';\n const speechTimePayload = isTeacher\n ? { teacher_speech_time: teacherTalkRef.current }\n : { student_speech_time: studentTalkRef.current };\n\n trackEvent('TALK_METER_BATCH_SENT', {\n batch_no: batchNo,\n ...speechTimePayload,\n });\n if (avPackageEnabled) {\n sendMessage(\n EVENT_NAME,\n {\n ...payload,\n ...speechTimePayload,\n batch_no: batchNo,\n },\n isTeacher ? studentPeerId : teacherPeerId,\n );\n }\n\n prevSentRef.current = studentTalkRef.current;\n },\n [avPackageEnabled, isTeacher, payload, sendMessage, studentPeerId, teacherPeerId, trackEvent],\n );\n\n useAVMessage<{\n teacher_classroom_id: string;\n student_classroom_id: string;\n student_speech_time: number;\n batch_no: 0 | 1 | 2;\n }>({\n type: isTeacher ? 'STUDENT_TALK_TIME_UPDATED' : 'TEACHER_TALK_TIME_UPDATED',\n onMessage: useCallback(\n (_, data) => {\n onMessageReceive(data);\n if (isTeacher) sendBatch(data.batch_no);\n },\n [isTeacher, onMessageReceive, sendBatch],\n ),\n });\n\n useEffect(() => {\n if (!canAnimateIn) {\n teacherTalkRef.current = teacherTalkTime;\n studentTalkRef.current = studentTalkTime;\n }\n }, [teacherTalkTime, studentTalkTime, canAnimateIn]);\n\n useEffect(() => {\n let dismissTimer: NodeJS.Timeout | undefined;\n\n if (canAnimateIn) {\n dismissTimer = setTimeout(() => {\n handleDismiss();\n }, ONE_MINUTE);\n }\n\n return () => {\n if (dismissTimer) clearTimeout(dismissTimer);\n };\n }, [canAnimateIn, handleDismiss]);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | undefined;\n\n if (classStartTime && canDisplayBatch && !canAnimateIn) {\n interval = setInterval(() => {\n const { canDisplay } = getBatchToSendInfo(classStartTime, lastBatchReceivedNo);\n\n if (canDisplay) {\n trackEvent('TALK_METER_BATCH_DISPLAYED', {\n student_speech_time: studentTalkRef.current,\n teacher_speech_time: teacherTalkRef.current,\n batch_no: lastBatchReceivedNo,\n });\n setCanAnimateIn(true);\n setCanAnimateOut(false);\n }\n }, ONE_MINUTE / 30);\n }\n\n return () => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [canAnimateIn, canDisplayBatch, classStartTime, lastBatchReceivedNo, trackEvent]);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | undefined;\n\n if (classStartTime && !isTeacher) {\n interval = setInterval(() => {\n const { lastMinutesLeft, canSendBatch, batchNoToSend } = getBatchToSendInfo(\n classStartTime,\n lastBatchReceivedNo,\n );\n\n if (lastMinutesLeft) {\n if (prevSentRef.current !== studentTalkRef.current) {\n sendBatch(batchNoToSend);\n }\n } else if (canSendBatch) {\n sendBatch(batchNoToSend);\n }\n }, ONE_MINUTE / 6);\n }\n\n return () => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [classStartTime, isTeacher, lastBatchReceivedNo, sendBatch]);\n\n return {\n canAnimateIn,\n canAnimateOut,\n stdRatio,\n tchRatio,\n handleDismiss,\n };\n};\n"],"names":["ONE_MINUTE","BATCH_ONE_MINUTE","BATCH_TWO_MINUTE","getBatchToSendInfo","classStartTime","batchSeen","now","classTS","diff","minutes","canSendFirstBatch","canSendSecondBatch","lastMinutesLeft","batchNo","canDisplayBatch","useTalkMeter","props","userType","studentId","teacherId","avPackageEnabled","teacherClassroomId","teacherTalkTime","studentTalkTime","lastBatchReceivedNo","onMessageReceive","onDismissMeter","canAnimateIn","setCanAnimateIn","useState","canAnimateOut","setCanAnimateOut","onEvent","useUIContext","sendMessage","useAVActions","remotePeers","useRemotePeers","studentPeerId","_a","peer","teacherPeerId","_b","p","isTeacher","teacherTalkRef","useRef","studentTalkRef","prevSentRef","totalTalkTime","stdRatio","tchRatio","payload","useMemo","handleDismiss","useCallback","trackEvent","eventName","data","sendBatch","EVENT_NAME","speechTimePayload","useAVMessage","_","useEffect","dismissTimer","interval","canDisplay","canSendBatch","batchNoToSend"],"mappings":"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"}
1
+ {"version":3,"file":"use-talk-meter.js","sources":["../../../../src/features/talk-meter/hooks/use-talk-meter.ts"],"sourcesContent":["import type { ITalkMeterHook, TMessageData } from '../talk-meter-types';\n\nimport { useAVActions, useAVMessage, useRemotePeers } from '@cuemath/av';\nimport { useRef, useMemo, useCallback, useState, useEffect } from 'react';\n\nimport { useUIContext } from '../../ui/context/context';\n\nconst ONE_MINUTE = 1000 * 60;\nconst BATCH_ONE_MINUTE = 20;\nconst BATCH_TWO_MINUTE = 40;\n\nconst getBatchToSendInfo = (classStartTime: Date, batchSeen: number) => {\n const now = Date.now();\n const classTS = classStartTime.getTime();\n const diff = Math.abs(now - classTS);\n const minutes = Math.floor(diff / 1000 / 60);\n const canSendFirstBatch =\n (batchSeen === 0 || batchSeen === 1) &&\n minutes >= BATCH_ONE_MINUTE - 2 &&\n minutes <= BATCH_ONE_MINUTE;\n const canSendSecondBatch =\n (batchSeen === 1 || batchSeen === 2) &&\n minutes >= BATCH_TWO_MINUTE - 2 &&\n minutes <= BATCH_TWO_MINUTE;\n\n const lastMinutesLeft = minutes >= 50;\n\n let batchNo = 0;\n let canDisplayBatch = false;\n\n if (lastMinutesLeft) {\n batchNo = 0;\n } else if (canSendSecondBatch) {\n batchNo = 2;\n canDisplayBatch = minutes >= BATCH_TWO_MINUTE;\n } else if (canSendFirstBatch) {\n batchNo = 1;\n canDisplayBatch = minutes >= BATCH_ONE_MINUTE;\n }\n\n return {\n lastMinutesLeft,\n canSendBatch: canSendFirstBatch || canSendSecondBatch,\n batchNoToSend: batchNo,\n minutes,\n canDisplay: canDisplayBatch,\n };\n};\n\nexport const useTalkMeter = (props: ITalkMeterHook) => {\n const {\n userType,\n studentId,\n teacherId,\n classStartTime,\n avPackageEnabled,\n teacherClassroomId,\n teacherTalkTime,\n studentTalkTime,\n lastBatchReceivedNo,\n canDisplayBatch,\n onMessageReceive,\n onDismissMeter,\n } = props;\n const [canAnimateIn, setCanAnimateIn] = useState(false);\n const [canAnimateOut, setCanAnimateOut] = useState(false);\n\n const { onEvent } = useUIContext();\n const { sendMessage } = useAVActions();\n\n const remotePeers = useRemotePeers();\n const studentPeerId = remotePeers.find(peer => peer.userId === studentId)?.id;\n const teacherPeerId = remotePeers.find(p => p.userType === 'teacher')?.id;\n\n const isTeacher = userType === 'TEACHER';\n\n const teacherTalkRef = useRef(teacherTalkTime);\n const studentTalkRef = useRef(studentTalkTime);\n const prevSentRef = useRef(0);\n\n const totalTalkTime = studentTalkRef.current + teacherTalkRef.current;\n const stdRatio = Math.ceil((studentTalkRef.current * 100) / totalTalkTime) || 0;\n const tchRatio = Math.floor((teacherTalkRef.current * 100) / totalTalkTime) || 0;\n\n const payload = useMemo(\n () => ({\n teacher_classroom_id: teacherClassroomId,\n teacher_id: teacherId,\n studentId: studentId,\n }),\n [studentId, teacherClassroomId, teacherId],\n );\n\n const handleDismiss = useCallback(() => {\n setCanAnimateOut(true);\n setCanAnimateIn(false);\n onDismissMeter();\n }, [onDismissMeter]);\n\n const trackEvent = useCallback(\n (eventName: string, data = {}) => {\n onEvent(eventName, { ...payload, ...data });\n },\n [onEvent, payload],\n );\n\n const sendBatch = useCallback(\n (batchNo: number) => {\n const EVENT_NAME = isTeacher ? 'TEACHER_TALK_TIME_UPDATED' : 'STUDENT_TALK_TIME_UPDATED';\n const speechTimePayload = isTeacher\n ? { teacher_speech_time: teacherTalkRef.current }\n : { student_speech_time: studentTalkRef.current };\n\n trackEvent('TALK_METER_BATCH_SENT', {\n batch_no: batchNo,\n ...speechTimePayload,\n });\n if (avPackageEnabled) {\n sendMessage(\n EVENT_NAME,\n {\n ...payload,\n ...speechTimePayload,\n batch_no: batchNo,\n },\n isTeacher ? studentPeerId : teacherPeerId,\n );\n }\n\n prevSentRef.current = studentTalkRef.current;\n },\n [avPackageEnabled, isTeacher, payload, sendMessage, studentPeerId, teacherPeerId, trackEvent],\n );\n\n useAVMessage<TMessageData>({\n type: isTeacher ? 'STUDENT_TALK_TIME_UPDATED' : 'TEACHER_TALK_TIME_UPDATED',\n onMessage: useCallback(\n (_, data) => {\n onMessageReceive(data);\n if (isTeacher) sendBatch(data.batch_no);\n },\n [isTeacher, onMessageReceive, sendBatch],\n ),\n });\n\n useEffect(() => {\n if (!canAnimateIn) {\n teacherTalkRef.current = teacherTalkTime;\n studentTalkRef.current = studentTalkTime;\n }\n }, [teacherTalkTime, studentTalkTime, canAnimateIn]);\n\n useEffect(() => {\n let dismissTimer: NodeJS.Timeout | undefined;\n\n if (canAnimateIn) {\n dismissTimer = setTimeout(() => {\n handleDismiss();\n }, ONE_MINUTE);\n }\n\n return () => {\n if (dismissTimer) clearTimeout(dismissTimer);\n };\n }, [canAnimateIn, handleDismiss]);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | undefined;\n\n if (classStartTime && canDisplayBatch && !canAnimateIn) {\n interval = setInterval(() => {\n const { canDisplay } = getBatchToSendInfo(classStartTime, lastBatchReceivedNo);\n\n if (canDisplay) {\n trackEvent('TALK_METER_BATCH_DISPLAYED', {\n student_speech_time: studentTalkRef.current,\n teacher_speech_time: teacherTalkRef.current,\n batch_no: lastBatchReceivedNo,\n });\n setCanAnimateIn(true);\n setCanAnimateOut(false);\n }\n }, ONE_MINUTE / 30);\n }\n\n return () => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [canAnimateIn, canDisplayBatch, classStartTime, lastBatchReceivedNo, trackEvent]);\n\n useEffect(() => {\n let interval: NodeJS.Timeout | undefined;\n\n if (classStartTime && !isTeacher) {\n interval = setInterval(() => {\n const { lastMinutesLeft, canSendBatch, batchNoToSend } = getBatchToSendInfo(\n classStartTime,\n lastBatchReceivedNo,\n );\n\n if (lastMinutesLeft) {\n if (prevSentRef.current !== studentTalkRef.current) {\n sendBatch(batchNoToSend);\n }\n } else if (canSendBatch) {\n sendBatch(batchNoToSend);\n }\n }, ONE_MINUTE / 6);\n }\n\n return () => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [classStartTime, isTeacher, lastBatchReceivedNo, sendBatch]);\n\n return {\n canAnimateIn,\n canAnimateOut,\n stdRatio,\n tchRatio,\n handleDismiss,\n };\n};\n"],"names":["ONE_MINUTE","BATCH_ONE_MINUTE","BATCH_TWO_MINUTE","getBatchToSendInfo","classStartTime","batchSeen","now","classTS","diff","minutes","canSendFirstBatch","canSendSecondBatch","lastMinutesLeft","batchNo","canDisplayBatch","useTalkMeter","props","userType","studentId","teacherId","avPackageEnabled","teacherClassroomId","teacherTalkTime","studentTalkTime","lastBatchReceivedNo","onMessageReceive","onDismissMeter","canAnimateIn","setCanAnimateIn","useState","canAnimateOut","setCanAnimateOut","onEvent","useUIContext","sendMessage","useAVActions","remotePeers","useRemotePeers","studentPeerId","_a","peer","teacherPeerId","_b","p","isTeacher","teacherTalkRef","useRef","studentTalkRef","prevSentRef","totalTalkTime","stdRatio","tchRatio","payload","useMemo","handleDismiss","useCallback","trackEvent","eventName","data","sendBatch","EVENT_NAME","speechTimePayload","useAVMessage","_","useEffect","dismissTimer","interval","canDisplay","canSendBatch","batchNoToSend"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2640,7 +2640,7 @@ declare interface ITalkMeter {
2640
2640
  studentTalkTime: number;
2641
2641
  lastBatchReceivedNo: number;
2642
2642
  canDisplayBatch: boolean;
2643
- onMessageReceive: (data: Record<string, unknown>) => void;
2643
+ onMessageReceive: (data: TMessageData) => void;
2644
2644
  onDismissMeter: () => void;
2645
2645
  }
2646
2646
 
@@ -4489,6 +4489,14 @@ declare type TMathSectionSummary = {
4489
4489
  section_code: 'MATH';
4490
4490
  } & TSectionSummary;
4491
4491
 
4492
+ declare type TMessageData = {
4493
+ teacher_classroom_id: string;
4494
+ student_classroom_id: string;
4495
+ teacher_speech_time?: number;
4496
+ student_speech_time?: number;
4497
+ batch_no: number;
4498
+ };
4499
+
4492
4500
  declare type TMilestoneChapterBlockData = {
4493
4501
  block_id: string;
4494
4502
  block_type: TBlockType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "2.8.36-link.2",
3
+ "version": "2.8.36-link.3",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"