@speakableio/core 0.1.103 → 0.1.106

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.
Files changed (57) hide show
  1. package/dist/analytics.js +25 -329
  2. package/dist/analytics.js.map +1 -1
  3. package/dist/{assignment.model-Lu21tZCh.d.mts → assignment.model-DLMWAp0Y.d.ts} +1 -1
  4. package/dist/chunk-233VJDUF.js +149 -0
  5. package/dist/chunk-233VJDUF.js.map +1 -0
  6. package/dist/chunk-2CRI5MJP.js +225 -0
  7. package/dist/chunk-2CRI5MJP.js.map +1 -0
  8. package/dist/chunk-AWVUNWML.js +141 -0
  9. package/dist/chunk-AWVUNWML.js.map +1 -0
  10. package/dist/chunk-CJ5JXKII.js +129 -0
  11. package/dist/chunk-CJ5JXKII.js.map +1 -0
  12. package/dist/chunk-EEBMPASA.js +21 -0
  13. package/dist/chunk-EEBMPASA.js.map +1 -0
  14. package/dist/chunk-H5XNOXRC.js +11 -0
  15. package/dist/chunk-H5XNOXRC.js.map +1 -0
  16. package/dist/chunk-LZG3MTSH.js +53 -0
  17. package/dist/chunk-LZG3MTSH.js.map +1 -0
  18. package/dist/chunk-OLSTHM2U.js +154 -0
  19. package/dist/chunk-OLSTHM2U.js.map +1 -0
  20. package/dist/chunk-TQGDTKTE.js +13 -0
  21. package/dist/chunk-TQGDTKTE.js.map +1 -0
  22. package/dist/chunk-YKUMIPSO.js +212 -0
  23. package/dist/chunk-YKUMIPSO.js.map +1 -0
  24. package/dist/chunk-YMJRCINF.js +68 -0
  25. package/dist/chunk-YMJRCINF.js.map +1 -0
  26. package/dist/chunk-YO34TZYN.js +28 -0
  27. package/dist/chunk-YO34TZYN.js.map +1 -0
  28. package/dist/const.d.ts +331 -0
  29. package/dist/const.js +170 -162
  30. package/dist/const.js.map +1 -1
  31. package/dist/{hooks.d.mts → hooks.d.ts} +5 -5
  32. package/dist/hooks.js +35 -591
  33. package/dist/hooks.js.map +1 -1
  34. package/dist/index.native.js +52 -64
  35. package/dist/index.native.js.map +1 -1
  36. package/dist/{index.web.d.mts → index.web.d.ts} +3 -3
  37. package/dist/index.web.js +12 -427
  38. package/dist/index.web.js.map +1 -1
  39. package/dist/{models.d.mts → models.d.ts} +3 -3
  40. package/dist/models.js +8 -43
  41. package/dist/models.js.map +1 -1
  42. package/dist/{notification.constants-B72fb734.d.mts → notification.constants-Da4-_0kX.d.ts} +1 -1
  43. package/dist/{repos.d.mts → repos.d.ts} +4 -4
  44. package/dist/repos.js +13 -440
  45. package/dist/repos.js.map +1 -1
  46. package/dist/{utils.d.mts → utils.d.ts} +2 -2
  47. package/dist/utils.js +14 -174
  48. package/dist/utils.js.map +1 -1
  49. package/package.json +21 -25
  50. package/dist/assignment.model-Bcbxx8oI.d.mts +0 -299
  51. package/dist/const.d.mts +0 -26
  52. package/dist/index.native.d.mts +0 -591
  53. package/dist/index.native.mjs +0 -505
  54. package/dist/index.native.mjs.map +0 -1
  55. /package/dist/{analytics.d.mts → analytics.d.ts} +0 -0
  56. /package/dist/{assignment.constants-BIKM6fYi.d.mts → assignment.constants-BIKM6fYi.d.ts} +0 -0
  57. /package/dist/{card.constants-DhKFipX3.d.mts → card.constants-DhKFipX3.d.ts} +0 -0
@@ -0,0 +1,154 @@
1
+ import {
2
+ createCard,
3
+ createCards,
4
+ getCard,
5
+ withErrorHandler
6
+ } from "./chunk-233VJDUF.js";
7
+ import {
8
+ ASSIGNMENT_ANALYTICS_TYPES,
9
+ refsAssignmentFiresotre
10
+ } from "./chunk-AWVUNWML.js";
11
+ import {
12
+ checkAssignmentAvailability
13
+ } from "./chunk-TQGDTKTE.js";
14
+ import {
15
+ api
16
+ } from "./chunk-CJ5JXKII.js";
17
+
18
+ // src/domains/assignment/services/get-assignments-score.service.ts
19
+ var _getAssignmentScores = async ({
20
+ assignmentId,
21
+ analyticType = "macro" /* Macro */,
22
+ studentId,
23
+ currentUserId
24
+ }) => {
25
+ if (analyticType === "student" /* Student */) {
26
+ const path = refsAssignmentFiresotre.assignmentScores({
27
+ id: assignmentId,
28
+ userId: currentUserId
29
+ });
30
+ const response = await api.getDoc(path);
31
+ return { scores: response.data, id: assignmentId };
32
+ }
33
+ if (analyticType === "student_summary" /* StudentSummary */ && studentId) {
34
+ const path = refsAssignmentFiresotre.assignmentScores({
35
+ id: assignmentId,
36
+ userId: studentId
37
+ });
38
+ const response = await api.getDoc(path);
39
+ return { scores: response.data, id: assignmentId };
40
+ }
41
+ if (analyticType !== "all" /* All */ && ASSIGNMENT_ANALYTICS_TYPES.includes(analyticType)) {
42
+ const ref = refsAssignmentFiresotre.assignmentAnalytics({
43
+ id: assignmentId,
44
+ type: analyticType
45
+ });
46
+ const docData = await api.getDoc(ref);
47
+ return { scores: docData.data, id: assignmentId };
48
+ } else if (analyticType === "all" /* All */) {
49
+ const ref = refsAssignmentFiresotre.assignmentAllAnalytics({ id: assignmentId });
50
+ const response = await api.getDocs(ref);
51
+ const data = response.data.reduce((acc, curr) => {
52
+ acc[curr.id] = curr;
53
+ return acc;
54
+ }, {});
55
+ return { scores: data, id: assignmentId };
56
+ }
57
+ };
58
+ var getAssignmentScores = withErrorHandler(_getAssignmentScores, "getAssignmentScores");
59
+
60
+ // src/domains/assignment/services/attach-score-assignment.service.ts
61
+ var _attachScoresAssignment = async ({
62
+ assignments,
63
+ analyticType,
64
+ studentId,
65
+ currentUserId
66
+ }) => {
67
+ const scoresPromises = assignments.map((a) => {
68
+ return getAssignmentScores({
69
+ assignmentId: a.id,
70
+ analyticType,
71
+ studentId,
72
+ currentUserId
73
+ });
74
+ });
75
+ const scores = await Promise.all(scoresPromises);
76
+ const scoresObject = scores.reduce((acc, curr) => {
77
+ acc[curr.id] = curr.scores;
78
+ return acc;
79
+ }, {});
80
+ const assignmentsWithScores = assignments.map((a) => {
81
+ var _a;
82
+ return {
83
+ ...a,
84
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/ban-ts-comment
85
+ // @ts-ignore
86
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
87
+ scores: (_a = scoresObject[a.id]) != null ? _a : null
88
+ };
89
+ });
90
+ return assignmentsWithScores;
91
+ };
92
+ var attachScoresAssignment = withErrorHandler(
93
+ _attachScoresAssignment,
94
+ "attachScoresAssignment"
95
+ );
96
+
97
+ // src/domains/assignment/services/get-all-assignment.service.ts
98
+ async function _getAllAssignments() {
99
+ const path = refsAssignmentFiresotre.allAssignments();
100
+ const response = await api.getDocs(path);
101
+ return response.data;
102
+ }
103
+ var getAllAssignments = withErrorHandler(_getAllAssignments, "getAllAssignments");
104
+
105
+ // src/domains/assignment/services/get-assignment.service.ts
106
+ async function _getAssignment(params) {
107
+ var _a;
108
+ const path = refsAssignmentFiresotre.assignment({ id: params.assignmentId });
109
+ const response = await api.getDoc(path);
110
+ if (!response.data) return null;
111
+ const assignment = response.data;
112
+ const isAvailable = checkAssignmentAvailability(assignment.scheduledTime);
113
+ const assignmentWithId = {
114
+ ...assignment,
115
+ isAvailable,
116
+ id: params.assignmentId,
117
+ scheduledTime: (_a = assignment.scheduledTime) != null ? _a : null
118
+ };
119
+ if (params.analyticType) {
120
+ const assignmentsWithScores = await attachScoresAssignment({
121
+ assignments: [assignmentWithId],
122
+ analyticType: params.analyticType,
123
+ currentUserId: params.currentUserId
124
+ });
125
+ return assignmentsWithScores.length > 0 ? assignmentsWithScores[0] : assignmentWithId;
126
+ }
127
+ return assignmentWithId;
128
+ }
129
+ var getAssignment = withErrorHandler(_getAssignment, "getAssignment");
130
+
131
+ // src/domains/assignment/assignment.repo.ts
132
+ var createAssignmentRepo = () => {
133
+ return {
134
+ getAssignment,
135
+ attachScoresAssignment,
136
+ getAssignmentScores,
137
+ getAllAssignments
138
+ };
139
+ };
140
+
141
+ // src/domains/cards/card.repo.ts
142
+ var createCardRepo = () => {
143
+ return {
144
+ createCard,
145
+ createCards,
146
+ getCard
147
+ };
148
+ };
149
+
150
+ export {
151
+ createAssignmentRepo,
152
+ createCardRepo
153
+ };
154
+ //# sourceMappingURL=chunk-OLSTHM2U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domains/assignment/services/get-assignments-score.service.ts","../src/domains/assignment/services/attach-score-assignment.service.ts","../src/domains/assignment/services/get-all-assignment.service.ts","../src/domains/assignment/services/get-assignment.service.ts","../src/domains/assignment/assignment.repo.ts","../src/domains/cards/card.repo.ts"],"sourcesContent":["import { api } from '@core/lib/firebase/api'\nimport { withErrorHandler } from '@core/utils/error-handler'\n\nimport {\n ASSIGNMENT_ANALYTICS_TYPES,\n AssignmentAnalyticsType,\n refsAssignmentFiresotre,\n} from '../assignment.constants'\n\nconst _getAssignmentScores = async ({\n assignmentId,\n analyticType = AssignmentAnalyticsType.Macro,\n studentId,\n currentUserId,\n}: {\n assignmentId: string\n currentUserId: string\n analyticType?: AssignmentAnalyticsType\n studentId?: string\n}) => {\n if (analyticType === AssignmentAnalyticsType.Student) {\n const path = refsAssignmentFiresotre.assignmentScores({\n id: assignmentId,\n userId: currentUserId,\n })\n const response = await api.getDoc(path)\n\n return { scores: response.data, id: assignmentId }\n }\n\n if (analyticType === AssignmentAnalyticsType.StudentSummary && studentId) {\n const path = refsAssignmentFiresotre.assignmentScores({\n id: assignmentId,\n userId: studentId,\n })\n const response = await api.getDoc(path)\n\n return { scores: response.data, id: assignmentId }\n }\n\n if (\n analyticType !== AssignmentAnalyticsType.All &&\n ASSIGNMENT_ANALYTICS_TYPES.includes(analyticType)\n ) {\n const ref = refsAssignmentFiresotre.assignmentAnalytics({\n id: assignmentId,\n type: analyticType,\n })\n\n const docData = await api.getDoc(ref)\n\n return { scores: docData.data, id: assignmentId }\n } else if (analyticType === AssignmentAnalyticsType.All) {\n const ref = refsAssignmentFiresotre.assignmentAllAnalytics({ id: assignmentId })\n\n const response = await api.getDocs(ref)\n const data = response.data.reduce((acc, curr) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n acc[curr.id] = curr\n\n return acc\n }, {})\n\n return { scores: data, id: assignmentId }\n }\n}\n\nexport const getAssignmentScores = withErrorHandler(_getAssignmentScores, 'getAssignmentScores')\n","import { withErrorHandler } from '@core/utils/error-handler'\n\nimport { type AssignmentAnalyticsType } from '../assignment.constants'\nimport { type AssignmentWithId } from '../assignment.model'\n\nimport { getAssignmentScores } from './get-assignments-score.service'\n\nconst _attachScoresAssignment = async ({\n assignments,\n analyticType,\n studentId,\n currentUserId,\n}: {\n assignments: AssignmentWithId[]\n analyticType: AssignmentAnalyticsType\n studentId?: string\n currentUserId: string\n}) => {\n const scoresPromises = assignments.map(a => {\n return getAssignmentScores({\n assignmentId: a.id,\n analyticType: analyticType,\n studentId,\n currentUserId,\n })\n })\n const scores = await Promise.all(scoresPromises)\n\n const scoresObject = scores.reduce((acc, curr) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n acc[curr.id] = curr.scores\n\n return acc\n }, {})\n const assignmentsWithScores = assignments.map(a => {\n return {\n ...a,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scores: scoresObject[a.id] ?? null,\n }\n })\n\n return assignmentsWithScores\n}\n\nexport const attachScoresAssignment = withErrorHandler(\n _attachScoresAssignment,\n 'attachScoresAssignment',\n)\n","import { api } from '@core/lib/firebase/api'\nimport { withErrorHandler } from '@core/utils/error-handler'\n\nimport { refsAssignmentFiresotre } from '../assignment.constants'\nimport { type AssignmentWithId } from '../assignment.model'\n\nexport async function _getAllAssignments() {\n const path = refsAssignmentFiresotre.allAssignments()\n const response = await api.getDocs<AssignmentWithId>(path)\n\n return response.data\n}\n\nexport const getAllAssignments = withErrorHandler(_getAllAssignments, 'getAllAssignments')\n","import { api } from '@core/lib/firebase/api'\nimport { withErrorHandler } from '@core/utils/error-handler'\n\nimport { type AssignmentWithId } from '../assignment.model'\nimport { type AssignmentAnalyticsType, refsAssignmentFiresotre } from '../assignment.constants'\nimport { checkAssignmentAvailability } from '../utils/check-assignment-availability'\n\nimport { attachScoresAssignment } from './attach-score-assignment.service'\n\nasync function _getAssignment(params: {\n assignmentId: string\n currentUserId: string\n analyticType?: AssignmentAnalyticsType\n studentId?: string\n}) {\n const path = refsAssignmentFiresotre.assignment({ id: params.assignmentId })\n const response = await api.getDoc<AssignmentWithId>(path)\n\n if (!response.data) return null\n\n const assignment = response.data\n\n const isAvailable = checkAssignmentAvailability(assignment.scheduledTime)\n\n const assignmentWithId: AssignmentWithId = {\n ...assignment,\n isAvailable,\n id: params.assignmentId,\n scheduledTime: assignment.scheduledTime ?? null,\n }\n\n if (params.analyticType) {\n const assignmentsWithScores = await attachScoresAssignment({\n assignments: [assignmentWithId],\n analyticType: params.analyticType,\n currentUserId: params.currentUserId,\n })\n\n return assignmentsWithScores.length > 0 ? assignmentsWithScores[0] : assignmentWithId\n }\n\n return assignmentWithId\n}\n\nexport const getAssignment = withErrorHandler(_getAssignment, 'getAssignment')\n","import { attachScoresAssignment } from './services/attach-score-assignment.service'\nimport { getAllAssignments } from './services/get-all-assignment.service'\nimport { getAssignment } from './services/get-assignment.service'\nimport { getAssignmentScores } from './services/get-assignments-score.service'\n\nexport const createAssignmentRepo = () => {\n return {\n getAssignment: getAssignment,\n attachScoresAssignment: attachScoresAssignment,\n getAssignmentScores: getAssignmentScores,\n getAllAssignments: getAllAssignments,\n }\n}\n","import { createCards } from './services/create-card.service'\nimport { createCard } from './services/create-card.service'\nimport { getCard } from './services/get-card.service'\n\nexport const createCardRepo = () => {\n return {\n createCard: createCard,\n createCards: createCards,\n getCard: getCard,\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,13 @@
1
+ // src/domains/assignment/utils/check-assignment-availability.ts
2
+ import dayjs from "dayjs";
3
+ var checkAssignmentAvailability = (scheduledTime) => {
4
+ if (!scheduledTime) return true;
5
+ const scheduledDate = typeof scheduledTime === "string" ? dayjs(scheduledTime) : dayjs(scheduledTime.toDate());
6
+ if (!scheduledDate.isValid()) return true;
7
+ return dayjs().isAfter(scheduledDate);
8
+ };
9
+
10
+ export {
11
+ checkAssignmentAvailability
12
+ };
13
+ //# sourceMappingURL=chunk-TQGDTKTE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domains/assignment/utils/check-assignment-availability.ts"],"sourcesContent":["import { type CustomTimestamp } from '@core/types/firebase.types'\nimport dayjs from 'dayjs'\n\nexport const checkAssignmentAvailability = (\n scheduledTime: string | CustomTimestamp | null | undefined,\n) => {\n if (!scheduledTime) return true\n\n const scheduledDate =\n typeof scheduledTime === 'string' ? dayjs(scheduledTime) : dayjs(scheduledTime.toDate())\n\n if (!scheduledDate.isValid()) return true\n\n return dayjs().isAfter(scheduledDate)\n}\n"],"mappings":";AACA,OAAO,WAAW;AAEX,IAAM,8BAA8B,CACzC,kBACG;AACH,MAAI,CAAC,cAAe,QAAO;AAE3B,QAAM,gBACJ,OAAO,kBAAkB,WAAW,MAAM,aAAa,IAAI,MAAM,cAAc,OAAO,CAAC;AAEzF,MAAI,CAAC,cAAc,QAAQ,EAAG,QAAO;AAErC,SAAO,MAAM,EAAE,QAAQ,aAAa;AACtC;","names":[]}
@@ -0,0 +1,212 @@
1
+ import {
2
+ ANALYTICS_EVENT_TYPES
3
+ } from "./chunk-YO34TZYN.js";
4
+ import {
5
+ api
6
+ } from "./chunk-CJ5JXKII.js";
7
+
8
+ // src/lib/firebase/firebase-analytics/grading-standard.ts
9
+ var logGradingStandardLog = (data) => {
10
+ var _a, _b, _c;
11
+ if (data.courseId && data.type && data.level) {
12
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
13
+ eventType: data.type || "custom",
14
+ level: data.level,
15
+ courseId: data.courseId
16
+ });
17
+ }
18
+ api.logEvent("logGradingStandard", data);
19
+ };
20
+
21
+ // src/lib/firebase/firebase-analytics/assignment.ts
22
+ var logOpenAssignment = (data = {}) => {
23
+ api.logEvent("open_assignment", data);
24
+ };
25
+ var logOpenActivityPreview = (data = {}) => {
26
+ api.logEvent("open_activity_preview", data);
27
+ };
28
+ var logSubmitAssignment = (data = {}) => {
29
+ var _a, _b, _c;
30
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
31
+ eventType: ANALYTICS_EVENT_TYPES.SUBMISSION,
32
+ ...data
33
+ });
34
+ api.logEvent(ANALYTICS_EVENT_TYPES.SUBMISSION, data);
35
+ };
36
+ var logCreateAssignment = (data = {}) => {
37
+ var _a, _b, _c;
38
+ if (data.courseId) {
39
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
40
+ eventType: ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT,
41
+ ...data
42
+ });
43
+ }
44
+ api.logEvent(ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT, data);
45
+ };
46
+ var logStartAssignment = (data = {}) => {
47
+ var _a, _b, _c;
48
+ if (data.courseId) {
49
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
50
+ eventType: ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED,
51
+ ...data
52
+ });
53
+ }
54
+ api.logEvent(ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED, data);
55
+ };
56
+
57
+ // src/lib/firebase/firebase-analytics/page-analytics.ts
58
+ var HANDLE_COURSE_ANALYTICS_EVENT = "handleCouresAnalyticsEvent";
59
+ var logRepeatSuccess = (data = {}) => {
60
+ var _a, _b, _c;
61
+ if (data.courseId) {
62
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
63
+ eventType: ANALYTICS_EVENT_TYPES.VOICE_SUCCESS,
64
+ ...data,
65
+ courseId: data.courseId
66
+ });
67
+ }
68
+ api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_SUCCESS, data);
69
+ };
70
+ var logRepeatFail = (data = {}) => {
71
+ var _a, _b, _c;
72
+ if (data.courseId) {
73
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
74
+ eventType: ANALYTICS_EVENT_TYPES.VOICE_FAIL,
75
+ ...data,
76
+ courseId: data.courseId
77
+ });
78
+ }
79
+ api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_FAIL, data);
80
+ };
81
+ var logRespondSuccess = (data) => {
82
+ var _a, _b, _c;
83
+ if (data.courseId) {
84
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
85
+ eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS,
86
+ ...data,
87
+ courseId: data.courseId
88
+ });
89
+ }
90
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS, data);
91
+ };
92
+ var logRespondFail = (data) => {
93
+ var _a, _b, _c;
94
+ if (data.courseId) {
95
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
96
+ eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL,
97
+ ...data,
98
+ courseId: data.courseId
99
+ });
100
+ }
101
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL, data);
102
+ };
103
+ var logRespondSubmitted = (data) => {
104
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUBMITTED, data);
105
+ };
106
+ var logRespondError = (errorDetails) => {
107
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_ERROR, {
108
+ errorDetails
109
+ });
110
+ };
111
+ var logWrittenResponseSuccess = (data) => {
112
+ var _a, _b, _c;
113
+ if (data.courseId) {
114
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
115
+ eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS,
116
+ ...data,
117
+ courseId: data.courseId
118
+ });
119
+ }
120
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS, data);
121
+ };
122
+ var logWrittenResponseFail = (data) => {
123
+ var _a, _b, _c;
124
+ if (data.courseId) {
125
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
126
+ eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL,
127
+ ...data,
128
+ courseId: data.courseId
129
+ });
130
+ }
131
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL, data);
132
+ };
133
+ var logWrittenResponseSubmitted = (data = {}) => {
134
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUBMITTED, data);
135
+ };
136
+ var logWrittenResponseError = (errorDetails) => {
137
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_ERROR, {
138
+ errorDetails
139
+ });
140
+ };
141
+ var logFreePlanRespond = (data) => {
142
+ var _a, _b, _c;
143
+ if (data.courseId) {
144
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
145
+ eventType: ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN,
146
+ ...data,
147
+ courseId: data.courseId
148
+ });
149
+ }
150
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN, data);
151
+ };
152
+ var logFreePlanWrittenResponse = (data) => {
153
+ var _a, _b, _c;
154
+ if (data.courseId) {
155
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
156
+ eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN,
157
+ ...data,
158
+ courseId: data.courseId
159
+ });
160
+ }
161
+ api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN, data);
162
+ };
163
+ var logMultipleChoiceSuccess = (data) => {
164
+ var _a, _b, _c;
165
+ if (data.courseId) {
166
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
167
+ eventType: ANALYTICS_EVENT_TYPES.MC_SUCCESS,
168
+ courseId: data.courseId
169
+ });
170
+ }
171
+ api.logEvent(ANALYTICS_EVENT_TYPES.MC_SUCCESS, data);
172
+ };
173
+ var logMultipleChoiceFail = (data) => {
174
+ var _a, _b, _c;
175
+ if (data.courseId) {
176
+ (_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
177
+ eventType: ANALYTICS_EVENT_TYPES.MC_FAIL,
178
+ courseId: data.courseId
179
+ });
180
+ }
181
+ api.logEvent(ANALYTICS_EVENT_TYPES.MC_FAIL, data);
182
+ };
183
+ var logMultipleChoiceError = (errorDetails) => {
184
+ api.logEvent(ANALYTICS_EVENT_TYPES.MC_ERROR, {
185
+ errorDetails
186
+ });
187
+ };
188
+
189
+ export {
190
+ logGradingStandardLog,
191
+ logOpenAssignment,
192
+ logOpenActivityPreview,
193
+ logSubmitAssignment,
194
+ logCreateAssignment,
195
+ logStartAssignment,
196
+ logRepeatSuccess,
197
+ logRepeatFail,
198
+ logRespondSuccess,
199
+ logRespondFail,
200
+ logRespondSubmitted,
201
+ logRespondError,
202
+ logWrittenResponseSuccess,
203
+ logWrittenResponseFail,
204
+ logWrittenResponseSubmitted,
205
+ logWrittenResponseError,
206
+ logFreePlanRespond,
207
+ logFreePlanWrittenResponse,
208
+ logMultipleChoiceSuccess,
209
+ logMultipleChoiceFail,
210
+ logMultipleChoiceError
211
+ };
212
+ //# sourceMappingURL=chunk-YKUMIPSO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/firebase/firebase-analytics/grading-standard.ts","../src/lib/firebase/firebase-analytics/assignment.ts","../src/lib/firebase/firebase-analytics/page-analytics.ts"],"sourcesContent":["import { type GradingStandard } from '@core/services/add-grading-standard'\n\nimport { api } from '../api'\n\nexport const logGradingStandardLog = (data: {\n type: GradingStandard['type']\n level?: GradingStandard['level']\n courseId?: GradingStandard['courseId']\n}) => {\n if (data.courseId && data.type && data.level) {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: data.type || 'custom',\n level: data.level,\n courseId: data.courseId,\n })\n }\n api.logEvent('logGradingStandard', data)\n}\n","import { ANALYTICS_EVENT_TYPES } from '@core/constants/analytics.constants'\n\nimport { api } from '../api'\n\nexport const logOpenAssignment = (data = {}) => {\n api.logEvent('open_assignment', data)\n}\n\nexport const logOpenActivityPreview = (data = {}) => {\n api.logEvent('open_activity_preview', data)\n}\n\nexport const logSubmitAssignment = (data = {}) => {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: ANALYTICS_EVENT_TYPES.SUBMISSION,\n ...data,\n })\n api.logEvent(ANALYTICS_EVENT_TYPES.SUBMISSION, data)\n}\n\nexport const logCreateAssignment = (data = {}) => {\n // @ts-ignore\n if (data.courseId) {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT,\n ...data,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT, data)\n}\n\nexport const logStartAssignment = (data = {}) => {\n // @ts-ignore\n if (data.courseId) {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED,\n ...data,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED, data)\n}\n","import { ANALYTICS_EVENT_TYPES } from '@core/constants/analytics.constants'\n\nimport { api } from '../api'\n\nconst HANDLE_COURSE_ANALYTICS_EVENT = 'handleCouresAnalyticsEvent'\n\nexport const logRepeatSuccess = (\n data: {\n courseId?: string\n [key: string]: any\n } = {},\n) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.VOICE_SUCCESS,\n ...data,\n courseId: data.courseId,\n })\n }\n\n api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_SUCCESS, data)\n}\n\nexport const logRepeatFail = (\n data: {\n courseId?: string\n [key: string]: any\n } = {},\n) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.VOICE_FAIL,\n ...data,\n courseId: data.courseId,\n })\n }\n\n api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_FAIL, data)\n}\n\nexport const logRespondSuccess = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS, data)\n}\n\nexport const logRespondFail = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL, data)\n}\n\nexport const logRespondSubmitted = (data: { courseId?: string; [key: string]: any }) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUBMITTED, data)\n}\n\nexport const logRespondError = (errorDetails: { courseId?: string; [key: string]: any }) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_ERROR, {\n errorDetails,\n })\n}\n\nexport const logWrittenResponseSuccess = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS, data)\n}\n\nexport const logWrittenResponseFail = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL, data)\n}\n\nexport const logWrittenResponseSubmitted = (data = {}) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUBMITTED, data)\n}\n\nexport const logWrittenResponseError = (errorDetails: Record<string, unknown>) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_ERROR, {\n errorDetails,\n })\n}\n\nexport const logFreePlanRespond = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN,\n ...data,\n courseId: data.courseId,\n })\n }\n\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN, data)\n}\n\nexport const logFreePlanWrittenResponse = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN, data)\n}\n\nexport const logMultipleChoiceSuccess = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.MC_SUCCESS,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.MC_SUCCESS, data)\n}\n\nexport const logMultipleChoiceFail = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.MC_FAIL,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.MC_FAIL, data)\n}\n\nexport const logMultipleChoiceError = (errorDetails: { courseId?: string; [key: string]: any }) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.MC_ERROR, {\n errorDetails,\n })\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,68 @@
1
+ import {
2
+ api
3
+ } from "./chunk-CJ5JXKII.js";
4
+
5
+ // src/domains/assignment/utils/create-default-score.ts
6
+ var defaultScore = (props) => {
7
+ const { serverTimestamp } = api.accessHelpers();
8
+ const score = {
9
+ progress: 0,
10
+ score: 0,
11
+ startDate: serverTimestamp(),
12
+ status: "IN_PROGRESS",
13
+ submitted: false,
14
+ cards: {},
15
+ lastPlayed: serverTimestamp(),
16
+ owners: props.owners,
17
+ userId: props.userId
18
+ };
19
+ if (props.googleClassroomUserId) {
20
+ score.googleClassroomUserId = props.googleClassroomUserId;
21
+ }
22
+ if (props.courseId) {
23
+ score.courseId = props.courseId;
24
+ }
25
+ return score;
26
+ };
27
+
28
+ // src/domains/assignment/utils/calculateScoreAndProgress.ts
29
+ var calculateScoreAndProgress = (scores, cardsList, weights) => {
30
+ const totalSetPoints = cardsList.reduce((acc, cardId) => {
31
+ acc += (weights == null ? void 0 : weights[cardId]) || 1;
32
+ return acc;
33
+ }, 0);
34
+ const totalPointsAwarded = Object.keys((scores == null ? void 0 : scores.cards) || {}).reduce((acc, cardId) => {
35
+ var _a, _b;
36
+ const cardScores = (_a = scores == null ? void 0 : scores.cards) == null ? void 0 : _a[cardId];
37
+ if ((cardScores == null ? void 0 : cardScores.completed) || (cardScores == null ? void 0 : cardScores.score) || (cardScores == null ? void 0 : cardScores.score) === 0) {
38
+ const score2 = (cardScores == null ? void 0 : cardScores.score) || (cardScores == null ? void 0 : cardScores.score) === 0 ? Number((_b = cardScores == null ? void 0 : cardScores.score) != null ? _b : 0) : null;
39
+ const weight = (weights == null ? void 0 : weights[cardId]) || 1;
40
+ const fraction = (score2 != null ? score2 : 0) / 100;
41
+ if (score2 || score2 === 0) {
42
+ acc += weight * fraction;
43
+ } else {
44
+ acc += weight;
45
+ }
46
+ }
47
+ return acc;
48
+ }, 0);
49
+ const totalCompletedCards = Object.keys((scores == null ? void 0 : scores.cards) || {}).reduce((acc, cardId) => {
50
+ var _a;
51
+ const cardScores = (_a = scores == null ? void 0 : scores.cards) == null ? void 0 : _a[cardId];
52
+ if ((cardScores == null ? void 0 : cardScores.completed) || (cardScores == null ? void 0 : cardScores.score) || (cardScores == null ? void 0 : cardScores.score) === 0) {
53
+ acc += 1;
54
+ }
55
+ return acc;
56
+ }, 0);
57
+ const percent = totalPointsAwarded / totalSetPoints;
58
+ const score = Math.round(percent * 100);
59
+ const progress = Math.round(totalCompletedCards / (cardsList.length || 1) * 100);
60
+ return { score, progress };
61
+ };
62
+ var calculateScoreAndProgress_default = calculateScoreAndProgress;
63
+
64
+ export {
65
+ defaultScore,
66
+ calculateScoreAndProgress_default
67
+ };
68
+ //# sourceMappingURL=chunk-YMJRCINF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domains/assignment/utils/create-default-score.ts","../src/domains/assignment/utils/calculateScoreAndProgress.ts"],"sourcesContent":["import { api } from '@core/lib/firebase/api'\n\nimport { type Score } from '../assignment.model'\n\nexport const defaultScore = (props: {\n owners: string[]\n courseId?: string\n userId: string\n googleClassroomUserId?: string\n}): Score => {\n const { serverTimestamp } = api.accessHelpers()\n\n const score = {\n progress: 0,\n score: 0,\n startDate: serverTimestamp(),\n status: 'IN_PROGRESS',\n submitted: false,\n cards: {},\n lastPlayed: serverTimestamp(),\n owners: props.owners,\n userId: props.userId,\n } as Score\n\n if (props.googleClassroomUserId) {\n score.googleClassroomUserId = props.googleClassroomUserId\n }\n\n if (props.courseId) {\n score.courseId = props.courseId\n }\n\n return score\n}\n","import { type Score } from '../assignment.model'\n\nconst calculateScoreAndProgress = (\n scores: Score,\n cardsList: string[],\n weights: Record<string, number>,\n) => {\n const totalSetPoints = cardsList.reduce((acc, cardId) => {\n acc += weights?.[cardId] || 1\n\n return acc\n }, 0)\n\n const totalPointsAwarded = Object.keys(scores?.cards || {}).reduce((acc, cardId) => {\n const cardScores = scores?.cards?.[cardId]\n\n if (cardScores?.completed || cardScores?.score || cardScores?.score === 0) {\n const score =\n cardScores?.score || cardScores?.score === 0 ? Number(cardScores?.score ?? 0) : null\n const weight = weights?.[cardId] || 1\n const fraction = (score ?? 0) / 100\n\n if (score || score === 0) {\n acc += weight * fraction\n } else {\n acc += weight\n }\n }\n\n return acc\n }, 0)\n const totalCompletedCards = Object.keys(scores?.cards || {}).reduce((acc, cardId) => {\n const cardScores = scores?.cards?.[cardId]\n\n if (cardScores?.completed || cardScores?.score || cardScores?.score === 0) {\n acc += 1\n }\n\n return acc\n }, 0)\n\n const percent = totalPointsAwarded / totalSetPoints\n\n const score = Math.round(percent * 100)\n\n const progress = Math.round((totalCompletedCards / (cardsList.length || 1)) * 100)\n\n return { score, progress }\n}\n\nexport default calculateScoreAndProgress\n"],"mappings":";;;;;AAIO,IAAM,eAAe,CAAC,UAKhB;AACX,QAAM,EAAE,gBAAgB,IAAI,IAAI,cAAc;AAE9C,QAAM,QAAQ;AAAA,IACZ,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW,gBAAgB;AAAA,IAC3B,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO,CAAC;AAAA,IACR,YAAY,gBAAgB;AAAA,IAC5B,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,EAChB;AAEA,MAAI,MAAM,uBAAuB;AAC/B,UAAM,wBAAwB,MAAM;AAAA,EACtC;AAEA,MAAI,MAAM,UAAU;AAClB,UAAM,WAAW,MAAM;AAAA,EACzB;AAEA,SAAO;AACT;;;AC/BA,IAAM,4BAA4B,CAChC,QACA,WACA,YACG;AACH,QAAM,iBAAiB,UAAU,OAAO,CAAC,KAAK,WAAW;AACvD,YAAO,mCAAU,YAAW;AAE5B,WAAO;AAAA,EACT,GAAG,CAAC;AAEJ,QAAM,qBAAqB,OAAO,MAAK,iCAAQ,UAAS,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW;AAbtF;AAcI,UAAM,cAAa,sCAAQ,UAAR,mBAAgB;AAEnC,SAAI,yCAAY,eAAa,yCAAY,WAAS,yCAAY,WAAU,GAAG;AACzE,YAAMA,UACJ,yCAAY,WAAS,yCAAY,WAAU,IAAI,QAAO,8CAAY,UAAZ,YAAqB,CAAC,IAAI;AAClF,YAAM,UAAS,mCAAU,YAAW;AACpC,YAAM,YAAYA,UAAA,OAAAA,SAAS,KAAK;AAEhC,UAAIA,UAASA,WAAU,GAAG;AACxB,eAAO,SAAS;AAAA,MAClB,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC;AACJ,QAAM,sBAAsB,OAAO,MAAK,iCAAQ,UAAS,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW;AA/BvF;AAgCI,UAAM,cAAa,sCAAQ,UAAR,mBAAgB;AAEnC,SAAI,yCAAY,eAAa,yCAAY,WAAS,yCAAY,WAAU,GAAG;AACzE,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,GAAG,CAAC;AAEJ,QAAM,UAAU,qBAAqB;AAErC,QAAM,QAAQ,KAAK,MAAM,UAAU,GAAG;AAEtC,QAAM,WAAW,KAAK,MAAO,uBAAuB,UAAU,UAAU,KAAM,GAAG;AAEjF,SAAO,EAAE,OAAO,SAAS;AAC3B;AAEA,IAAO,oCAAQ;","names":["score"]}
@@ -0,0 +1,28 @@
1
+ // src/constants/analytics.constants.ts
2
+ var ANALYTICS_EVENT_TYPES = {
3
+ VOICE_SUCCESS: "voice_success",
4
+ VOICE_FAIL: "voice_fail",
5
+ RESPOND_CARD_SUCCESS: "respond_card_success",
6
+ RESPOND_CARD_FAIL: "respond_card_fail",
7
+ RESPOND_WRITE_CARD_SUCCESS: "respond_write_card_success",
8
+ RESPOND_WRITE_CARD_FAIL: "respond_write_card_fail",
9
+ RESPOND_WRITE_CARD_SUBMITTED: "respond_write_card_submitted",
10
+ RESPOND_WRITE_CARD_ERROR: "respond_write_card_error",
11
+ RESPOND_CARD_ERROR: "respond_card_error",
12
+ RESPOND_CARD_SUBMITTED: "respond_card_submitted",
13
+ RESPOND_FREE_PLAN: "respond_free_plan",
14
+ RESPOND_WRITE_FREE_PLAN: "respond_write_free_plan",
15
+ SUBMISSION: "assignment_submitted",
16
+ ASSIGNMENT_STARTED: "assignment_started",
17
+ CREATE_ASSIGNMENT: "create_assignment",
18
+ MC_SUCCESS: "multiple_choice_success",
19
+ MC_FAIL: "multiple_choice_fail",
20
+ MC_ERROR: "multiple_choice_error",
21
+ ACTFL_LEVEL: "actfl_level",
22
+ WIDA_LEVEL: "wida_level"
23
+ };
24
+
25
+ export {
26
+ ANALYTICS_EVENT_TYPES
27
+ };
28
+ //# sourceMappingURL=chunk-YO34TZYN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/analytics.constants.ts"],"sourcesContent":["// Event constants\nexport const ANALYTICS_EVENT_TYPES = {\n VOICE_SUCCESS: 'voice_success',\n VOICE_FAIL: 'voice_fail',\n RESPOND_CARD_SUCCESS: 'respond_card_success',\n RESPOND_CARD_FAIL: 'respond_card_fail',\n RESPOND_WRITE_CARD_SUCCESS: 'respond_write_card_success',\n RESPOND_WRITE_CARD_FAIL: 'respond_write_card_fail',\n RESPOND_WRITE_CARD_SUBMITTED: 'respond_write_card_submitted',\n RESPOND_WRITE_CARD_ERROR: 'respond_write_card_error',\n RESPOND_CARD_ERROR: 'respond_card_error',\n RESPOND_CARD_SUBMITTED: 'respond_card_submitted',\n RESPOND_FREE_PLAN: 'respond_free_plan',\n RESPOND_WRITE_FREE_PLAN: 'respond_write_free_plan',\n SUBMISSION: 'assignment_submitted',\n ASSIGNMENT_STARTED: 'assignment_started',\n CREATE_ASSIGNMENT: 'create_assignment',\n MC_SUCCESS: 'multiple_choice_success',\n MC_FAIL: 'multiple_choice_fail',\n MC_ERROR: 'multiple_choice_error',\n ACTFL_LEVEL: 'actfl_level',\n WIDA_LEVEL: 'wida_level',\n} as const\n"],"mappings":";AACO,IAAM,wBAAwB;AAAA,EACnC,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,yBAAyB;AAAA,EACzB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AACd;","names":[]}