@cuemath/leap 2.8.50 → 2.8.52-link.0

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 (85) hide show
  1. package/dist/assets/illustrations/illustrations.js +1 -0
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/line-icons/icons/clear-all.js +53 -0
  4. package/dist/assets/line-icons/icons/clear-all.js.map +1 -0
  5. package/dist/assets/line-icons/icons/download.js +48 -0
  6. package/dist/assets/line-icons/icons/download.js.map +1 -0
  7. package/dist/assets/line-icons/icons/equation.js +48 -0
  8. package/dist/assets/line-icons/icons/equation.js.map +1 -0
  9. package/dist/assets/line-icons/icons/grid-icon.js +42 -0
  10. package/dist/assets/line-icons/icons/grid-icon.js.map +1 -0
  11. package/dist/assets/line-icons/icons/pan.js +98 -0
  12. package/dist/assets/line-icons/icons/pan.js.map +1 -0
  13. package/dist/assets/line-icons/icons/square-checked-grid.js +25 -0
  14. package/dist/assets/line-icons/icons/square-checked-grid.js.map +1 -0
  15. package/dist/assets/line-icons/icons/square-dots.js +32 -0
  16. package/dist/assets/line-icons/icons/square-dots.js.map +1 -0
  17. package/dist/assets/line-icons/icons/square-grid.js +17 -0
  18. package/dist/assets/line-icons/icons/square-grid.js.map +1 -0
  19. package/dist/assets/line-icons/icons/square2-grid.js +13 -0
  20. package/dist/assets/line-icons/icons/square2-grid.js.map +1 -0
  21. package/dist/assets/line-icons/icons/text-icon.js +48 -0
  22. package/dist/assets/line-icons/icons/text-icon.js.map +1 -0
  23. package/dist/assets/line-icons/icons/tri-dots.js +27 -0
  24. package/dist/assets/line-icons/icons/tri-dots.js.map +1 -0
  25. package/dist/assets/line-icons/icons/tri-grid.js +27 -0
  26. package/dist/assets/line-icons/icons/tri-grid.js.map +1 -0
  27. package/dist/assets/line-icons/icons/tri2-dots.js +27 -0
  28. package/dist/assets/line-icons/icons/tri2-dots.js.map +1 -0
  29. package/dist/assets/line-icons/icons/tri2-grid.js +27 -0
  30. package/dist/assets/line-icons/icons/tri2-grid.js.map +1 -0
  31. package/dist/assets/line-icons/icons/upload.js +48 -0
  32. package/dist/assets/line-icons/icons/upload.js.map +1 -0
  33. package/dist/assets/line-icons/icons/zoom-in.js +58 -0
  34. package/dist/assets/line-icons/icons/zoom-in.js.map +1 -0
  35. package/dist/assets/line-icons/icons/zoom-out.js +48 -0
  36. package/dist/assets/line-icons/icons/zoom-out.js.map +1 -0
  37. package/dist/features/cue-canvas/cue-canvas-core.js +138 -49
  38. package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
  39. package/dist/features/cue-canvas/cue-canvas-helpers.js +88 -29
  40. package/dist/features/cue-canvas/cue-canvas-helpers.js.map +1 -1
  41. package/dist/features/cue-canvas/cue-canvas.js +57 -49
  42. package/dist/features/cue-canvas/cue-canvas.js.map +1 -1
  43. package/dist/features/cue-canvas/cue-cavas-styled.js +127 -92
  44. package/dist/features/cue-canvas/cue-cavas-styled.js.map +1 -1
  45. package/dist/features/cue-canvas/toolbar/color-palette.js +49 -0
  46. package/dist/features/cue-canvas/toolbar/color-palette.js.map +1 -0
  47. package/dist/features/cue-canvas/toolbar/color-picker-menu.js +62 -0
  48. package/dist/features/cue-canvas/toolbar/color-picker-menu.js.map +1 -0
  49. package/dist/features/cue-canvas/toolbar/grid-menu.js +62 -0
  50. package/dist/features/cue-canvas/toolbar/grid-menu.js.map +1 -0
  51. package/dist/features/cue-canvas/toolbar/icon-map.js +58 -0
  52. package/dist/features/cue-canvas/toolbar/icon-map.js.map +1 -0
  53. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js +56 -0
  54. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js.map +1 -0
  55. package/dist/features/cue-canvas/toolbar/tool.js +34 -0
  56. package/dist/features/cue-canvas/toolbar/tool.js.map +1 -0
  57. package/dist/features/cue-canvas/toolbar/toolbar.js +18 -87
  58. package/dist/features/cue-canvas/toolbar/toolbar.js.map +1 -1
  59. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js +16 -0
  60. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js.map +1 -0
  61. package/dist/features/trial-session/api/trial-nodes.js +6 -5
  62. package/dist/features/trial-session/api/trial-nodes.js.map +1 -1
  63. package/dist/features/trial-session/comps/offering-information/offering-information-constants.js +7 -10
  64. package/dist/features/trial-session/comps/offering-information/offering-information-constants.js.map +1 -1
  65. package/dist/features/trial-session/comps/school-goals/school-goals.js +54 -54
  66. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  67. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js +41 -41
  68. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js.map +1 -1
  69. package/dist/features/trial-session/comps/student-info/student-info.js +35 -35
  70. package/dist/features/trial-session/comps/student-info/student-info.js.map +1 -1
  71. package/dist/features/trial-session/comps/test-prep/test-prep.js +45 -42
  72. package/dist/features/trial-session/comps/test-prep/test-prep.js.map +1 -1
  73. package/dist/features/trial-session/comps/worksheet/worksheet.js +23 -23
  74. package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
  75. package/dist/features/trial-session/helper.js +52 -52
  76. package/dist/features/trial-session/helper.js.map +1 -1
  77. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  78. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +7 -7
  79. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
  80. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +1 -1
  81. package/dist/index.d.ts +16 -2
  82. package/dist/static/chapter-header-bg.4ed173c2.svg +1 -0
  83. package/package.json +1 -1
  84. package/dist/features/cue-canvas/toolbar/color-pallete.js +0 -49
  85. package/dist/features/cue-canvas/toolbar/color-pallete.js.map +0 -1
@@ -1,80 +1,80 @@
1
- import { DAYS as I } from "../../constants/date-time.js";
2
- import { getOffsetBetweenTimezone as N, convertEpochToDateTime as h, getTimeUnits as O, convertToMilliseconds as x } from "../../helpers/date-time.js";
3
- import { GOAL_CATEGORY as _ } from "../milestone/constants.js";
4
- import { getGoalsFromConfig as y } from "../milestone/create/milestone-create-helpers.js";
5
- import { TrialPageId as c, TEACHER_TIMEZONE as R } from "./trial-session-constants.js";
6
- const H = (a, t, o) => {
7
- const e = a ? [...a] : [], r = e == null ? void 0 : e.findIndex((i) => i.goal_category === t);
8
- if (r === -1) {
9
- const i = {
10
- ...o,
1
+ import { DAYS as N } from "../../constants/date-time.js";
2
+ import { getOffsetBetweenTimezone as y, convertEpochToDateTime as O, getTimeUnits as x, convertToMilliseconds as D } from "../../helpers/date-time.js";
3
+ import { GOAL_CATEGORY as h } from "../milestone/constants.js";
4
+ import { getGoalsFromConfig as R } from "../milestone/create/milestone-create-helpers.js";
5
+ import { TrialPageId as a, TEACHER_TIMEZONE as L } from "./trial-session-constants.js";
6
+ const U = (c, t, r) => {
7
+ const e = c ? [...c] : [], s = e == null ? void 0 : e.findIndex((d) => d.goal_category === t);
8
+ if (s === -1) {
9
+ const d = {
10
+ ...r,
11
11
  goal_category: t,
12
12
  publish: !1
13
13
  };
14
- e.push(i);
14
+ e.push(d);
15
15
  } else
16
- e[r] = {
17
- ...e[r],
18
- ...o
16
+ e[s] = {
17
+ ...e[s],
18
+ ...r
19
19
  };
20
20
  return e;
21
- }, M = (a, t) => {
21
+ }, $ = (c, t) => {
22
22
  if (!t) return [];
23
- const o = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = N(R, t), r = o + e, { day: i = "" } = h(r, t), u = I.indexOf(i);
24
- return a.length > 0 ? a.filter((f) => f.selectedDay && f.selectedTime).map((f) => {
25
- const { selectedDay: l, selectedTime: s } = f, { hours: m, minutes: T, period: g } = O(s), P = (I.indexOf(l) - u + 7) % 7;
23
+ const r = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0), e = y(L, t), s = r + e, { day: d = "" } = O(s, t), m = N.indexOf(d);
24
+ return c.length > 0 ? c.filter((f) => f.selectedDay && f.selectedTime).map((f) => {
25
+ const { selectedDay: P, selectedTime: u } = f, { hours: i, minutes: o, period: g } = x(u), T = (N.indexOf(P) - m + 7) % 7;
26
26
  return {
27
- id: o + e + x({ days: P, hours: m, minutes: T }),
28
- value: `${l}, ${s} - ${m + 1}:${T < 10 ? "0" : ""}${T} ${g}`
27
+ id: r + e + D({ days: T, hours: i, minutes: o }),
28
+ value: `${P}, ${u} - ${i + 1}:${o < 10 ? "0" : ""}${o} ${g}`
29
29
  // Formatted the value string as required
30
30
  };
31
31
  }) : [];
32
- }, U = ({
33
- milestoneConfigData: a,
32
+ }, b = ({
33
+ milestoneConfigData: c,
34
34
  trialHomeData: t,
35
- grade: o
35
+ grade: r
36
36
  }) => {
37
- var P;
38
- const { student: e, demo_info: r } = t, { grade: i } = e || {}, { stream: u } = r || {}, f = (d) => y(a, {
39
- countryCode: "US",
40
- grade: o || i || "",
41
- goalCategory: d,
42
- courseStream: u,
37
+ var I;
38
+ const { student: e, demo_info: s } = t, { grade: d } = e || {}, { stream: m, region_data: f } = s || {}, { opportunity_country: P = "US" } = f || {}, u = (l) => R(c, {
39
+ countryCode: P,
40
+ grade: r || d || "",
41
+ goalCategory: l,
42
+ courseStream: m,
43
43
  enrollmentType: "ONLINE"
44
- }), l = f(_.TEST_PREP), s = f(_.ENRICHMENT);
45
- if ((l == null ? void 0 : l.length) > 0 && (s == null ? void 0 : s.length) > 0)
44
+ }), i = u(h.TEST_PREP), o = u(h.ENRICHMENT);
45
+ if ((i == null ? void 0 : i.length) > 0 && (o == null ? void 0 : o.length) > 0)
46
46
  return t;
47
- const m = { ...t }, T = Object.fromEntries(m.pages.map((d) => [d.id, d])), g = (() => {
48
- var d, S, n, E;
49
- return ((S = (d = T[c.SCHOOL_GOALS]) == null ? void 0 : d.nextPage) == null ? void 0 : S.pageId) === c.TEST_PREP && l.length === 0 ? c.SCHOOL_GOALS : l.length > 0 && ((E = (n = T[c.TEST_PREP]) == null ? void 0 : n.nextPage) == null ? void 0 : E.pageId) === c.STUDENT_ENRICHMENT && s.length === 0 ? c.TEST_PREP : null;
50
- })(), p = g ? (P = T[(s == null ? void 0 : s.length) === 0 ? c.STUDENT_ENRICHMENT : c.TEST_PREP]) == null ? void 0 : P.nextPage : null;
51
- if (p && g) {
52
- const d = (n) => l.length === 0 && n === c.TEST_PREP || s.length === 0 && n === c.STUDENT_ENRICHMENT, S = m.pages.filter((n) => !d(n.id));
53
- m.pages = S.map((n) => {
47
+ const g = { ...t }, p = Object.fromEntries(g.pages.map((l) => [l.id, l])), T = (() => {
48
+ var l, _, n, E;
49
+ return ((_ = (l = p[a.SCHOOL_GOALS]) == null ? void 0 : l.nextPage) == null ? void 0 : _.pageId) === a.TEST_PREP && i.length === 0 ? a.SCHOOL_GOALS : i.length > 0 && ((E = (n = p[a.TEST_PREP]) == null ? void 0 : n.nextPage) == null ? void 0 : E.pageId) === a.STUDENT_ENRICHMENT && o.length === 0 ? a.TEST_PREP : null;
50
+ })(), S = T ? (I = p[(o == null ? void 0 : o.length) === 0 ? a.STUDENT_ENRICHMENT : a.TEST_PREP]) == null ? void 0 : I.nextPage : null;
51
+ if (S && T) {
52
+ const l = (n) => i.length === 0 && n === a.TEST_PREP || o.length === 0 && n === a.STUDENT_ENRICHMENT, _ = g.pages.filter((n) => !l(n.id));
53
+ g.pages = _.map((n) => {
54
54
  var E;
55
- return n.id === g ? { ...n, nextPage: p } : n.id === p.pageId ? {
55
+ return n.id === T ? { ...n, nextPage: S } : n.id === S.pageId ? {
56
56
  ...n,
57
57
  prevPage: {
58
- buttonLabel: ((E = T[g]) == null ? void 0 : E.navigationLabel) ?? "",
59
- pageId: g
58
+ buttonLabel: ((E = p[T]) == null ? void 0 : E.navigationLabel) ?? "",
59
+ pageId: T
60
60
  }
61
61
  } : n;
62
62
  });
63
63
  }
64
- return m;
65
- }, $ = (a, t) => {
64
+ return g;
65
+ }, F = (c, t) => {
66
66
  var e;
67
- const { preference_config: o } = a;
68
- return t.length > 0 ? ((e = o == null ? void 0 : o.filter((r) => t.includes(r.preference_code))) == null ? void 0 : e.map(({ preference_code: r, preference_name: i, preference_category: u }) => ({
69
- preference_code: r,
70
- preference_name: i,
71
- preference_category: u
67
+ const { preference_config: r } = c;
68
+ return t.length > 0 ? ((e = r == null ? void 0 : r.filter((s) => t.includes(s.preference_code))) == null ? void 0 : e.map(({ preference_code: s, preference_name: d, preference_category: m }) => ({
69
+ preference_code: s,
70
+ preference_name: d,
71
+ preference_category: m
72
72
  }))) || [] : [];
73
73
  };
74
74
  export {
75
- U as filterAndUpdateSlideNavigation,
76
- M as getFormattedPreferences,
77
- $ as getFormattedStudentPersonalizedPreference,
78
- H as updateGoalInFormData
75
+ b as filterAndUpdateSlideNavigation,
76
+ $ as getFormattedPreferences,
77
+ F as getFormattedStudentPersonalizedPreference,
78
+ U as updateGoalInFormData
79
79
  };
80
80
  //# sourceMappingURL=helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sources":["../../../src/features/trial-session/helper.ts"],"sourcesContent":["import type { IMilestoneConfig } from '../milestone/create/milestone-create-types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type { ITrialHomeData, TGoals } from './trial-session-types';\n\nimport { DAYS } from '../../constants/date-time';\nimport {\n convertEpochToDateTime,\n convertToMilliseconds,\n getOffsetBetweenTimezone,\n getTimeUnits,\n} from '../../helpers/date-time';\nimport { GOAL_CATEGORY } from '../milestone/constants';\nimport { getGoalsFromConfig } from '../milestone/create/milestone-create-helpers';\nimport { TEACHER_TIMEZONE, TrialPageId } from './trial-session-constants';\n\nconst updateGoalInFormData = (goals: TGoals[] | undefined, goalCategory: string, data: TGoals) => {\n const updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n publish: false,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade } = student || {};\n const { stream } = demoInfo || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode: 'US',\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: 'ONLINE',\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n\n if (testPrepGoals?.length > 0 && enrichmentGoals?.length > 0) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(({ preference_code, preference_name, preference_category }) => ({\n preference_code,\n preference_name,\n preference_category,\n })) || []\n );\n }\n\n return [];\n};\n\nexport {\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getFormattedStudentPersonalizedPreference,\n};\n"],"names":["updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","stream","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","pref","preference_code","preference_name","preference_category"],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sources":["../../../src/features/trial-session/helper.ts"],"sourcesContent":["import type { IMilestoneConfig } from '../milestone/create/milestone-create-types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type { ITrialHomeData, TGoals } from './trial-session-types';\n\nimport { DAYS } from '../../constants/date-time';\nimport {\n convertEpochToDateTime,\n convertToMilliseconds,\n getOffsetBetweenTimezone,\n getTimeUnits,\n} from '../../helpers/date-time';\nimport { GOAL_CATEGORY } from '../milestone/constants';\nimport { getGoalsFromConfig } from '../milestone/create/milestone-create-helpers';\nimport { TEACHER_TIMEZONE, TrialPageId } from './trial-session-constants';\n\nconst updateGoalInFormData = (goals: TGoals[] | undefined, goalCategory: string, data: TGoals) => {\n const updateGoals = goals ? [...goals] : [];\n const goalIndex = updateGoals?.findIndex(goal => goal.goal_category === goalCategory);\n\n if (goalIndex === -1) {\n const schoolSuccessGoal = {\n ...data,\n goal_category: goalCategory,\n publish: false,\n };\n\n updateGoals.push(schoolSuccessGoal);\n } else {\n updateGoals[goalIndex] = {\n ...updateGoals[goalIndex],\n ...data,\n };\n }\n\n return updateGoals;\n};\n\nconst getFormattedPreferences = (preferences: TPreference[], studentTimezone?: string) => {\n if (!studentTimezone) return [];\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0); // Set the current date to midnight.\n const timestampOffset = getOffsetBetweenTimezone(TEACHER_TIMEZONE, studentTimezone); // Offset between the teacher's and student's timezone.\n const studentTimestamp = todayTimestamp + timestampOffset; // Adjusting the current date to the student's timezone.\n const { day: today = '' } = convertEpochToDateTime(studentTimestamp, studentTimezone); // Current day at student's timezone.\n const currentDayIndex = DAYS.indexOf(today); // Current day index.\n\n return preferences.length > 0\n ? preferences\n .filter(preference => preference.selectedDay && preference.selectedTime)\n .map(preference => {\n const { selectedDay, selectedTime } = preference;\n // Extracting hours, minutes, and period from the selected time.\n const { hours, minutes, period } = getTimeUnits(selectedTime);\n\n // Calculating the index of the selected day in the DAYS array.\n const selectedDayIndex = DAYS.indexOf(selectedDay);\n const dayDifference = (selectedDayIndex - currentDayIndex + 7) % 7;\n\n // Calculate the epoch timestamp for the selected day and time in the student's timezone.\n const epochTimestamp =\n todayTimestamp +\n timestampOffset +\n convertToMilliseconds({ days: dayDifference, hours, minutes });\n\n return {\n id: epochTimestamp,\n value: `${selectedDay}, ${selectedTime} - ${hours + 1}:${\n minutes < 10 ? '0' : ''\n }${minutes} ${period}`, // Formatted the value string as required\n };\n })\n : [];\n};\n\nconst filterAndUpdateSlideNavigation = ({\n milestoneConfigData,\n trialHomeData,\n grade,\n}: {\n milestoneConfigData: IMilestoneConfig;\n trialHomeData: ITrialHomeData;\n grade?: string;\n}) => {\n const { student, demo_info: demoInfo } = trialHomeData;\n const { grade: studentGrade } = student || {};\n const { stream, region_data: regionData } = demoInfo || {};\n const { opportunity_country: countryCode = 'US' } = regionData || {};\n\n const getGoals = (goalCategory: keyof typeof GOAL_CATEGORY) =>\n getGoalsFromConfig(milestoneConfigData, {\n countryCode,\n grade: grade || studentGrade || '',\n goalCategory,\n courseStream: stream,\n enrollmentType: 'ONLINE',\n });\n\n const testPrepGoals = getGoals(GOAL_CATEGORY.TEST_PREP);\n const enrichmentGoals = getGoals(GOAL_CATEGORY.ENRICHMENT);\n\n if (testPrepGoals?.length > 0 && enrichmentGoals?.length > 0) {\n return trialHomeData;\n }\n\n const updatedTrialHomeData = { ...trialHomeData };\n\n const pagesMap = Object.fromEntries(updatedTrialHomeData.pages.map(page => [page.id, page]));\n\n //slide whose nextPage reference needs to be updated\n const slideIdToUpdate = (() => {\n if (\n pagesMap[TrialPageId.SCHOOL_GOALS]?.nextPage?.pageId === TrialPageId.TEST_PREP &&\n testPrepGoals.length === 0\n ) {\n return TrialPageId.SCHOOL_GOALS;\n }\n\n if (\n testPrepGoals.length > 0 &&\n pagesMap[TrialPageId.TEST_PREP]?.nextPage?.pageId === TrialPageId.STUDENT_ENRICHMENT &&\n enrichmentGoals.length === 0\n ) {\n return TrialPageId.TEST_PREP;\n }\n\n return null;\n })();\n\n // the new next page reference for slideIdToUpdate\n const updatedNextPageInfo = slideIdToUpdate\n ? pagesMap[\n enrichmentGoals?.length === 0 ? TrialPageId.STUDENT_ENRICHMENT : TrialPageId.TEST_PREP\n ]?.nextPage\n : null;\n\n // updating the nextPage and prevPage references\n if (updatedNextPageInfo && slideIdToUpdate) {\n const shouldRemoveSlide = (slideId: TrialPageId) =>\n (testPrepGoals.length === 0 && slideId === TrialPageId.TEST_PREP) ||\n (enrichmentGoals.length === 0 && slideId === TrialPageId.STUDENT_ENRICHMENT);\n\n const filteredSlides = updatedTrialHomeData.pages.filter(page => !shouldRemoveSlide(page.id));\n\n updatedTrialHomeData.pages = filteredSlides.map(page => {\n if (page.id === slideIdToUpdate) {\n return { ...page, nextPage: updatedNextPageInfo };\n }\n\n if (page.id === updatedNextPageInfo.pageId) {\n return {\n ...page,\n prevPage: {\n buttonLabel: pagesMap[slideIdToUpdate]?.navigationLabel ?? '',\n pageId: slideIdToUpdate,\n },\n };\n }\n\n return page;\n });\n }\n\n return updatedTrialHomeData;\n};\n\nconst getFormattedStudentPersonalizedPreference = (\n config: IMilestoneConfig,\n selectedCodes: string[],\n) => {\n const { preference_config: preferenceConfig } = config;\n\n if (selectedCodes.length > 0) {\n return (\n preferenceConfig\n ?.filter(pref => selectedCodes.includes(pref.preference_code))\n ?.map(({ preference_code, preference_name, preference_category }) => ({\n preference_code,\n preference_name,\n preference_category,\n })) || []\n );\n }\n\n return [];\n};\n\nexport {\n filterAndUpdateSlideNavigation,\n updateGoalInFormData,\n getFormattedPreferences,\n getFormattedStudentPersonalizedPreference,\n};\n"],"names":["updateGoalInFormData","goals","goalCategory","data","updateGoals","goalIndex","goal","schoolSuccessGoal","getFormattedPreferences","preferences","studentTimezone","todayTimestamp","timestampOffset","getOffsetBetweenTimezone","TEACHER_TIMEZONE","studentTimestamp","today","convertEpochToDateTime","currentDayIndex","DAYS","preference","selectedDay","selectedTime","hours","minutes","period","getTimeUnits","dayDifference","convertToMilliseconds","filterAndUpdateSlideNavigation","milestoneConfigData","trialHomeData","grade","student","demoInfo","studentGrade","stream","regionData","countryCode","getGoals","getGoalsFromConfig","testPrepGoals","GOAL_CATEGORY","enrichmentGoals","updatedTrialHomeData","pagesMap","page","slideIdToUpdate","_b","_a","TrialPageId","_d","_c","updatedNextPageInfo","shouldRemoveSlide","slideId","filteredSlides","getFormattedStudentPersonalizedPreference","config","selectedCodes","preferenceConfig","pref","preference_code","preference_name","preference_category"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trial-session-types.js","sources":["../../../src/features/trial-session/trial-session-types.ts"],"sourcesContent":["import type { TNodeTypes } from '../../types/models/worksheet';\nimport type { IInfoMessage } from '../circle-games/games/web-view/web-view-types';\nimport type { IMilestoneConfig, TCourseStream } from '../milestone/create/milestone-create-types';\nimport type { IAvatarLayer } from '../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../ui/types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type {\n ITrialCircleConfig,\n ITrialCircleGameParams,\n} from './comps/trial-circle-game/trial-circle-game-types';\nimport type { TrialPageId } from './trial-session-constants';\nimport type { Dispatch, SetStateAction } from 'react';\n\nexport type TSlideId = TrialPageId;\n\nexport enum EClassTimeAlertLevel {\n FIVE_MIN = '5min',\n FIFTEEN_MIN = '15min',\n}\ninterface IButtonConfig {\n buttonLabel: string;\n pageId: string;\n}\n\nexport interface ISolution {\n media?: string;\n media_type?: 'image' | 'video';\n text?: string;\n}\n\nexport type TDegreeInformation = { degree_name?: string; field_of_study?: string };\n\nexport interface ITeacherProfileDetails {\n lower_grade: string;\n higher_grade: string;\n header_image: string;\n years_of_experience: number;\n number_of_students_taught: number;\n countries: string[];\n degree: TDegreeInformation;\n}\n\nexport interface ISlide {\n id: TrialPageId;\n renderAs: 'split' | 'full';\n renderAVIn: 'left' | 'right';\n header: string;\n subHeader?: string;\n prevPage?: IButtonConfig;\n nextPage?: IButtonConfig;\n cues?: string[];\n dos?: string[];\n donts?: string[];\n navigationLabel?: string;\n slideTag?: string;\n teacher_profile?: ITeacherProfileDetails;\n solutions?: ISolution[];\n enableSessionPerk?: boolean;\n}\n\nexport interface TGoals {\n goal_code?: string;\n milestone_date_ts?: number;\n goal_category?: string;\n milestone_name?: string;\n publish?: boolean;\n}\n\nexport interface ITrialSessionFormFields {\n id: string;\n name?: string;\n grade?: string;\n curriculum?: string;\n goals?: TGoals[];\n studentProfile?: {\n profileSummary?: string;\n dummyProfileImageIndex?: number;\n summaryFetched?: boolean;\n summaryFetchFailed?: boolean;\n };\n userNodeId?: string;\n nodeId?: string;\n nodeType?: TNodeTypes;\n attemptId?: string;\n preferences?: TPreference[];\n personalizedLevel?: string[];\n personalizedFocus?: string[];\n personalizedBehaviors?: string[];\n isCircleGamePlayed?: boolean;\n isCirclePuzzleSolved?: boolean;\n isCircleSkillCompleted?: boolean;\n studentTimezone?: string;\n showCircleGameScreen?: boolean;\n accuracyStr?: string;\n totalTimeTaken?: number;\n chapterId?: string;\n matchmakingId?: string;\n}\n\nexport interface IButtonState {\n isDisabled: boolean;\n isLoading: boolean;\n}\n\nexport interface ITrialHomeData {\n pages: ISlide[];\n demo_info: {\n student_classroom_id: string;\n stream: TCourseStream;\n };\n parent: {\n name: string;\n };\n student: {\n grade: string;\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n teacher: {\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n circle_trial_game_config: ITrialCircleConfig;\n}\n\nexport interface IClassTimeAlertConfig {\n alertLevel: EClassTimeAlertLevel | null;\n isVisible: boolean;\n onComplete: () => void;\n}\n\nexport interface ITrialSessionProps {\n countryCode?: string;\n classStartedOn?: Date;\n height?: string | number;\n userType: TUserTypes;\n studentId: string;\n teacherId: string;\n teacherClassroomId: string;\n teacherPanel?: JSX.Element;\n studentPanel?: JSX.Element;\n formData?: ITrialSessionFormFields;\n onFormDataChange?: Dispatch<SetStateAction<ITrialSessionFormFields | undefined>>;\n worksheet?: JSX.Element;\n worksheetNavigationPanel?: JSX.Element;\n questionsRatingPanel?: JSX.Element;\n studentAbsentInClass?: boolean;\n openEndClassModal?: () => void;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n classTimeAlertConfig?: IClassTimeAlertConfig;\n classDuration?: number;\n}\n\nexport interface ITrialSessionContext\n extends Pick<\n ITrialSessionProps,\n | 'classStartedOn'\n | 'formData'\n | 'teacherPanel'\n | 'studentId'\n | 'teacherId'\n | 'studentPanel'\n | 'worksheet'\n | 'worksheetNavigationPanel'\n | 'questionsRatingPanel'\n | 'openEndClassModal'\n | 'studentAbsentInClass'\n | 'classDuration'\n | 'classTimeAlertConfig'\n > {\n buttonState: { left: IButtonState; right: IButtonState };\n isTeacher: boolean;\n milestoneConfig: IMilestoneConfig;\n slideConfig: ISlide;\n updateButtonState: (\n btnNavDir: 'left' | 'right' | 'both',\n currentState: IButtonState | { left: IButtonState; right: IButtonState },\n ) => void;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n trialHomeData: ITrialHomeData;\n onTrialInformationUpdate?: () => void;\n circleGames: ITrialCircleGameParams;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string) => void;\n}\n\nexport interface ITrialSessionViewProps extends ITrialSessionProps {\n trialHomeData: ITrialHomeData;\n milestoneConfig: IMilestoneConfig;\n studentTimezone?: string;\n onStudentTimezoneUpdate?: () => void;\n onTrialInformationUpdate?: () => void;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string) => void;\n}\n"],"names":["EClassTimeAlertLevel"],"mappings":"AAeY,IAAAA,sBAAAA,OACVA,EAAA,WAAW,QACXA,EAAA,cAAc,SAFJA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"trial-session-types.js","sources":["../../../src/features/trial-session/trial-session-types.ts"],"sourcesContent":["import type { TNodeTypes } from '../../types/models/worksheet';\nimport type { IInfoMessage } from '../circle-games/games/web-view/web-view-types';\nimport type { IMilestoneConfig, TCourseStream } from '../milestone/create/milestone-create-types';\nimport type { IAvatarLayer } from '../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../ui/types';\nimport type { TPreference } from './comps/class-preference/class-preference-types';\nimport type {\n ITrialCircleConfig,\n ITrialCircleGameParams,\n} from './comps/trial-circle-game/trial-circle-game-types';\nimport type { TrialPageId } from './trial-session-constants';\nimport type { Dispatch, SetStateAction } from 'react';\n\nexport type TSlideId = TrialPageId;\n\nexport type TRegionData = {\n opportunity_country: string;\n};\n\nexport enum EClassTimeAlertLevel {\n FIVE_MIN = '5min',\n FIFTEEN_MIN = '15min',\n}\ninterface IButtonConfig {\n buttonLabel: string;\n pageId: string;\n}\n\nexport interface ISolution {\n media?: string;\n media_type?: 'image' | 'video';\n text?: string;\n}\n\nexport type TDegreeInformation = { degree_name?: string; field_of_study?: string };\n\nexport interface ITeacherProfileDetails {\n lower_grade: string;\n higher_grade: string;\n header_image: string;\n years_of_experience: number;\n number_of_students_taught: number;\n countries: string[];\n degree: TDegreeInformation;\n}\n\nexport interface ISlide {\n id: TrialPageId;\n renderAs: 'split' | 'full';\n renderAVIn: 'left' | 'right';\n header: string;\n subHeader?: string;\n prevPage?: IButtonConfig;\n nextPage?: IButtonConfig;\n cues?: string[];\n dos?: string[];\n donts?: string[];\n navigationLabel?: string;\n slideTag?: string;\n teacher_profile?: ITeacherProfileDetails;\n solutions?: ISolution[];\n enableSessionPerk?: boolean;\n}\n\nexport interface TGoals {\n goal_code?: string;\n milestone_date_ts?: number;\n goal_category?: string;\n milestone_name?: string;\n publish?: boolean;\n}\n\nexport interface ITrialSessionFormFields {\n id: string;\n name?: string;\n grade?: string;\n curriculum?: string;\n goals?: TGoals[];\n studentProfile?: {\n profileSummary?: string;\n dummyProfileImageIndex?: number;\n summaryFetched?: boolean;\n summaryFetchFailed?: boolean;\n };\n userNodeId?: string;\n nodeId?: string;\n nodeType?: TNodeTypes;\n attemptId?: string;\n preferences?: TPreference[];\n personalizedLevel?: string[];\n personalizedFocus?: string[];\n personalizedBehaviors?: string[];\n isCircleGamePlayed?: boolean;\n isCirclePuzzleSolved?: boolean;\n isCircleSkillCompleted?: boolean;\n studentTimezone?: string;\n showCircleGameScreen?: boolean;\n accuracyStr?: string;\n totalTimeTaken?: number;\n chapterId?: string;\n matchmakingId?: string;\n}\n\nexport interface IButtonState {\n isDisabled: boolean;\n isLoading: boolean;\n}\n\nexport interface ITrialHomeData {\n pages: ISlide[];\n demo_info: {\n student_classroom_id: string;\n stream: TCourseStream;\n region_data: TRegionData;\n };\n parent: {\n name: string;\n };\n student: {\n grade: string;\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n teacher: {\n name: string;\n circle_username: string;\n user_avatar: IAvatarLayer[];\n };\n circle_trial_game_config: ITrialCircleConfig;\n}\n\nexport interface IClassTimeAlertConfig {\n alertLevel: EClassTimeAlertLevel | null;\n isVisible: boolean;\n onComplete: () => void;\n}\n\nexport interface ITrialSessionProps {\n countryCode?: string;\n classStartedOn?: Date;\n height?: string | number;\n userType: TUserTypes;\n studentId: string;\n teacherId: string;\n teacherClassroomId: string;\n teacherPanel?: JSX.Element;\n studentPanel?: JSX.Element;\n formData?: ITrialSessionFormFields;\n onFormDataChange?: Dispatch<SetStateAction<ITrialSessionFormFields | undefined>>;\n worksheet?: JSX.Element;\n worksheetNavigationPanel?: JSX.Element;\n questionsRatingPanel?: JSX.Element;\n studentAbsentInClass?: boolean;\n openEndClassModal?: () => void;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n classTimeAlertConfig?: IClassTimeAlertConfig;\n classDuration?: number;\n}\n\nexport interface ITrialSessionContext\n extends Pick<\n ITrialSessionProps,\n | 'classStartedOn'\n | 'formData'\n | 'teacherPanel'\n | 'studentId'\n | 'teacherId'\n | 'studentPanel'\n | 'worksheet'\n | 'worksheetNavigationPanel'\n | 'questionsRatingPanel'\n | 'openEndClassModal'\n | 'studentAbsentInClass'\n | 'classDuration'\n | 'classTimeAlertConfig'\n > {\n buttonState: { left: IButtonState; right: IButtonState };\n isTeacher: boolean;\n milestoneConfig: IMilestoneConfig;\n slideConfig: ISlide;\n updateButtonState: (\n btnNavDir: 'left' | 'right' | 'both',\n currentState: IButtonState | { left: IButtonState; right: IButtonState },\n ) => void;\n updateSlideConfig: (config: Partial<ITrialSessionFormFields>) => void;\n trialHomeData: ITrialHomeData;\n onTrialInformationUpdate?: () => void;\n circleGames: ITrialCircleGameParams;\n trialGameUrl: string;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string) => void;\n}\n\nexport interface ITrialSessionViewProps extends ITrialSessionProps {\n trialHomeData: ITrialHomeData;\n milestoneConfig: IMilestoneConfig;\n studentTimezone?: string;\n onStudentTimezoneUpdate?: () => void;\n onTrialInformationUpdate?: () => void;\n handleInfoMessage: (message: IInfoMessage) => void;\n onRemoveOptionalSlides?: (grade?: string) => void;\n}\n"],"names":["EClassTimeAlertLevel"],"mappings":"AAmBY,IAAAA,sBAAAA,OACVA,EAAA,WAAW,QACXA,EAAA,cAAc,SAFJA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -17,13 +17,13 @@ const ve = L(($) => {
17
17
  userType: m,
18
18
  layout: f,
19
19
  behavior: r,
20
- worksheetName: W,
20
+ worksheetName: A,
21
21
  questions: o,
22
22
  responses: t,
23
23
  activeQuestionIndex: s,
24
24
  lastUnlockedQuestionIndex: h,
25
- appendedQuestionIds: q,
26
- learnosity: A,
25
+ appendedQuestionIds: W,
26
+ learnosity: q,
27
27
  isCanvasEnabled: R,
28
28
  isScribblingEnabled: S,
29
29
  isSummaryVisible: k,
@@ -45,7 +45,7 @@ const ve = L(($) => {
45
45
  loggerRef: y,
46
46
  onSkip: _,
47
47
  canToggleScribbling: z
48
- } = $, { navigationBar: H, questionsScrollable: w } = f, p = o[s], { response_id: l } = p ?? {}, [Q, d] = M(!1), P = l ? q.includes(l) : !1, X = i(
48
+ } = $, { navigationBar: H, questionsScrollable: w } = f, p = o[s], { response_id: l } = p ?? {}, [Q, d] = M(!1), P = l ? W.includes(l) : !1, X = i(
49
49
  (n) => {
50
50
  d(!1), C(n);
51
51
  },
@@ -93,7 +93,7 @@ const ve = L(($) => {
93
93
  }
94
94
  )
95
95
  ] }),
96
- S && /* @__PURE__ */ e(oe, { userType: m }),
96
+ S && /* @__PURE__ */ e(oe, { userType: m, renderAs: "canvas" }),
97
97
  H === "bottom" && /* @__PURE__ */ b(B, { children: [
98
98
  Q && /* @__PURE__ */ e(me, { $alignItems: "center", children: /* @__PURE__ */ e(
99
99
  ae,
@@ -103,7 +103,7 @@ const ve = L(($) => {
103
103
  onItemNumberClick: X,
104
104
  questions: o,
105
105
  responses: t,
106
- worksheetName: W,
106
+ worksheetName: A,
107
107
  behavior: r,
108
108
  userType: m,
109
109
  onClose: v,
@@ -128,7 +128,7 @@ const ve = L(($) => {
128
128
  p && l && /* @__PURE__ */ e(
129
129
  re,
130
130
  {
131
- learnosity: A,
131
+ learnosity: q,
132
132
  question: p,
133
133
  questions: o,
134
134
  responses: t,
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-action-bar.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.tsx"],"sourcesContent":["import type { IWorksheetActionBarProps } from './worksheet-action-bar-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useState } from 'react';\n\nimport CalculatorIcon from '../../../../assets/line-icons/icons/calculator';\nimport DownIcon from '../../../../assets/line-icons/icons/down';\nimport UpIcon from '../../../../assets/line-icons/icons/up';\nimport Toolbar from '../../../cue-canvas/toolbar/toolbar';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { scrollToQuestion } from '../worksheet-helpers';\nimport ScribbleSwitch from '../worksheet-questions-controller/scribble-switch';\nimport WorksheetQuestionsController from '../worksheet-questions-controller/worksheet-questions-controller';\nimport WorksheetQuestionsSummary from '../worksheet-questions-summary/worksheet-questions-summary';\nimport * as Styled from '../worksheet-styled';\nimport WorksheetSummaryController from '../worksheet-summary-controller/worksheet-summary-controller';\n\nconst WorksheetActionBar: FC<IWorksheetActionBarProps> = memo(props => {\n const {\n userType,\n layout,\n behavior,\n worksheetName,\n questions,\n responses,\n activeQuestionIndex,\n lastUnlockedQuestionIndex,\n appendedQuestionIds,\n learnosity,\n isCanvasEnabled,\n isScribblingEnabled,\n isSummaryVisible,\n setIsScribblingEnabled,\n setActiveQuestionId,\n setResponses,\n getTimeSpentOnQuestion,\n setBlocker,\n setSummaryVisible,\n showCalculator,\n onItemNumberClick,\n onTeacherValidation,\n onGoToReview,\n onResponseChange,\n onHelp,\n onSubmit,\n onCalculatorOpen,\n canSubmitWorksheet,\n loggerRef,\n onSkip,\n canToggleScribbling,\n } = props;\n const { navigationBar, questionsScrollable } = layout;\n const activeQuestion = questions[activeQuestionIndex];\n const { response_id: activeQuestionId } = activeQuestion ?? {};\n const [isSummaryOpened, setIsSummaryOpened] = useState(false);\n const isAppended = activeQuestionId ? appendedQuestionIds.includes(activeQuestionId) : false;\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setIsSummaryOpened(false);\n onItemNumberClick(questionId);\n },\n [onItemNumberClick],\n );\n\n const handleOnGoToReview = useCallback(() => {\n setIsSummaryOpened(false);\n onGoToReview();\n }, [onGoToReview]);\n\n const handleSummaryButtonClick = useCallback(() => {\n setIsSummaryOpened(prev => !prev);\n }, []);\n\n const handleBackFromSummary = useCallback(() => {\n setSummaryVisible(false);\n\n const questionId = questions[questions.length - 1]?.response_id;\n\n if (questionId) {\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n }\n }, [questions, questionsScrollable, setActiveQuestionId, setSummaryVisible]);\n\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses);\n }, [onSubmit, responses]);\n\n if (isSummaryVisible) {\n return (\n <WorksheetSummaryController\n onBack={handleBackFromSummary}\n behavior={behavior}\n onSubmit={handleSheetSubmitButtonClick}\n canSubmitWorksheet={!!canSubmitWorksheet}\n />\n );\n }\n\n return (\n <>\n <FlexView $flexDirection=\"row\" $flexGap={12}>\n <ScribbleSwitch\n isScribblingEnabled={isScribblingEnabled}\n setIsScribblingEnabled={setIsScribblingEnabled}\n isCanvasEnabled={isCanvasEnabled}\n loggerRef={loggerRef}\n canToggleScribbling={canToggleScribbling}\n />\n {behavior.canShowDesmosCalc && (\n <Styled.IconContainer\n $active={showCalculator}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n onClick={onCalculatorOpen}\n >\n <CalculatorIcon />\n </Styled.IconContainer>\n )}\n </FlexView>\n {isScribblingEnabled && <Toolbar userType={userType} />}\n {navigationBar === 'bottom' && (\n <>\n {isSummaryOpened && (\n <Styled.SummaryWrapper $alignItems=\"center\">\n <WorksheetQuestionsSummary\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n questions={questions}\n responses={responses}\n worksheetName={worksheetName}\n behavior={behavior}\n userType={userType}\n onClose={handleSummaryButtonClick}\n onGoToReview={handleOnGoToReview}\n summaryVisible={isSummaryVisible}\n />\n </Styled.SummaryWrapper>\n )}\n <Button\n renderAs=\"secondary\"\n widthX={13.25}\n label={`Question ${activeQuestionIndex + 1} of ${questions.length}`}\n size=\"small\"\n Icon={isSummaryOpened ? DownIcon : UpIcon}\n iconPosition=\"right\"\n justifyContent=\"space-between\"\n onClick={handleSummaryButtonClick}\n />\n </>\n )}\n {activeQuestion && activeQuestionId && (\n <WorksheetQuestionsController\n learnosity={learnosity}\n question={activeQuestion}\n questions={questions}\n responses={responses}\n canSubmitWorksheet={canSubmitWorksheet}\n questionIndex={activeQuestionIndex}\n isQuestionAppended={isAppended}\n isQuestionUnlocked={activeQuestionIndex <= lastUnlockedQuestionIndex}\n response={responses[activeQuestionId]}\n behavior={behavior}\n userType={userType}\n layout={layout}\n onResponseChange={onResponseChange}\n onTeacherValidation={onTeacherValidation}\n onHelp={onHelp}\n onSubmit={handleSheetSubmitButtonClick}\n setActiveQuestionId={setActiveQuestionId}\n setBlocker={setBlocker}\n setSummaryVisible={setSummaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n loggerRef={loggerRef}\n onSkip={onSkip}\n />\n )}\n </>\n );\n});\n\nexport default WorksheetActionBar;\n"],"names":["WorksheetActionBar","memo","props","userType","layout","behavior","worksheetName","questions","responses","activeQuestionIndex","lastUnlockedQuestionIndex","appendedQuestionIds","learnosity","isCanvasEnabled","isScribblingEnabled","isSummaryVisible","setIsScribblingEnabled","setActiveQuestionId","setResponses","getTimeSpentOnQuestion","setBlocker","setSummaryVisible","showCalculator","onItemNumberClick","onTeacherValidation","onGoToReview","onResponseChange","onHelp","onSubmit","onCalculatorOpen","canSubmitWorksheet","loggerRef","onSkip","canToggleScribbling","navigationBar","questionsScrollable","activeQuestion","activeQuestionId","isSummaryOpened","setIsSummaryOpened","useState","isAppended","handleItemNumberClick","useCallback","questionId","handleOnGoToReview","handleSummaryButtonClick","prev","handleBackFromSummary","_a","scrollToQuestion","handleSheetSubmitButtonClick","jsx","WorksheetSummaryController","jsxs","Fragment","FlexView","ScribbleSwitch","Styled.IconContainer","CalculatorIcon","Toolbar","Styled.SummaryWrapper","WorksheetQuestionsSummary","Button","DownIcon","UpIcon","WorksheetQuestionsController"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-action-bar.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.tsx"],"sourcesContent":["import type { IWorksheetActionBarProps } from './worksheet-action-bar-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useState } from 'react';\n\nimport CalculatorIcon from '../../../../assets/line-icons/icons/calculator';\nimport DownIcon from '../../../../assets/line-icons/icons/down';\nimport UpIcon from '../../../../assets/line-icons/icons/up';\nimport Toolbar from '../../../cue-canvas/toolbar/toolbar';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { scrollToQuestion } from '../worksheet-helpers';\nimport ScribbleSwitch from '../worksheet-questions-controller/scribble-switch';\nimport WorksheetQuestionsController from '../worksheet-questions-controller/worksheet-questions-controller';\nimport WorksheetQuestionsSummary from '../worksheet-questions-summary/worksheet-questions-summary';\nimport * as Styled from '../worksheet-styled';\nimport WorksheetSummaryController from '../worksheet-summary-controller/worksheet-summary-controller';\n\nconst WorksheetActionBar: FC<IWorksheetActionBarProps> = memo(props => {\n const {\n userType,\n layout,\n behavior,\n worksheetName,\n questions,\n responses,\n activeQuestionIndex,\n lastUnlockedQuestionIndex,\n appendedQuestionIds,\n learnosity,\n isCanvasEnabled,\n isScribblingEnabled,\n isSummaryVisible,\n setIsScribblingEnabled,\n setActiveQuestionId,\n setResponses,\n getTimeSpentOnQuestion,\n setBlocker,\n setSummaryVisible,\n showCalculator,\n onItemNumberClick,\n onTeacherValidation,\n onGoToReview,\n onResponseChange,\n onHelp,\n onSubmit,\n onCalculatorOpen,\n canSubmitWorksheet,\n loggerRef,\n onSkip,\n canToggleScribbling,\n } = props;\n const { navigationBar, questionsScrollable } = layout;\n const activeQuestion = questions[activeQuestionIndex];\n const { response_id: activeQuestionId } = activeQuestion ?? {};\n const [isSummaryOpened, setIsSummaryOpened] = useState(false);\n const isAppended = activeQuestionId ? appendedQuestionIds.includes(activeQuestionId) : false;\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setIsSummaryOpened(false);\n onItemNumberClick(questionId);\n },\n [onItemNumberClick],\n );\n\n const handleOnGoToReview = useCallback(() => {\n setIsSummaryOpened(false);\n onGoToReview();\n }, [onGoToReview]);\n\n const handleSummaryButtonClick = useCallback(() => {\n setIsSummaryOpened(prev => !prev);\n }, []);\n\n const handleBackFromSummary = useCallback(() => {\n setSummaryVisible(false);\n\n const questionId = questions[questions.length - 1]?.response_id;\n\n if (questionId) {\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n }\n }, [questions, questionsScrollable, setActiveQuestionId, setSummaryVisible]);\n\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses);\n }, [onSubmit, responses]);\n\n if (isSummaryVisible) {\n return (\n <WorksheetSummaryController\n onBack={handleBackFromSummary}\n behavior={behavior}\n onSubmit={handleSheetSubmitButtonClick}\n canSubmitWorksheet={!!canSubmitWorksheet}\n />\n );\n }\n\n return (\n <>\n <FlexView $flexDirection=\"row\" $flexGap={12}>\n <ScribbleSwitch\n isScribblingEnabled={isScribblingEnabled}\n setIsScribblingEnabled={setIsScribblingEnabled}\n isCanvasEnabled={isCanvasEnabled}\n loggerRef={loggerRef}\n canToggleScribbling={canToggleScribbling}\n />\n {behavior.canShowDesmosCalc && (\n <Styled.IconContainer\n $active={showCalculator}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n onClick={onCalculatorOpen}\n >\n <CalculatorIcon />\n </Styled.IconContainer>\n )}\n </FlexView>\n {isScribblingEnabled && <Toolbar userType={userType} renderAs=\"canvas\" />}\n {navigationBar === 'bottom' && (\n <>\n {isSummaryOpened && (\n <Styled.SummaryWrapper $alignItems=\"center\">\n <WorksheetQuestionsSummary\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n questions={questions}\n responses={responses}\n worksheetName={worksheetName}\n behavior={behavior}\n userType={userType}\n onClose={handleSummaryButtonClick}\n onGoToReview={handleOnGoToReview}\n summaryVisible={isSummaryVisible}\n />\n </Styled.SummaryWrapper>\n )}\n <Button\n renderAs=\"secondary\"\n widthX={13.25}\n label={`Question ${activeQuestionIndex + 1} of ${questions.length}`}\n size=\"small\"\n Icon={isSummaryOpened ? DownIcon : UpIcon}\n iconPosition=\"right\"\n justifyContent=\"space-between\"\n onClick={handleSummaryButtonClick}\n />\n </>\n )}\n {activeQuestion && activeQuestionId && (\n <WorksheetQuestionsController\n learnosity={learnosity}\n question={activeQuestion}\n questions={questions}\n responses={responses}\n canSubmitWorksheet={canSubmitWorksheet}\n questionIndex={activeQuestionIndex}\n isQuestionAppended={isAppended}\n isQuestionUnlocked={activeQuestionIndex <= lastUnlockedQuestionIndex}\n response={responses[activeQuestionId]}\n behavior={behavior}\n userType={userType}\n layout={layout}\n onResponseChange={onResponseChange}\n onTeacherValidation={onTeacherValidation}\n onHelp={onHelp}\n onSubmit={handleSheetSubmitButtonClick}\n setActiveQuestionId={setActiveQuestionId}\n setBlocker={setBlocker}\n setSummaryVisible={setSummaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n loggerRef={loggerRef}\n onSkip={onSkip}\n />\n )}\n </>\n );\n});\n\nexport default WorksheetActionBar;\n"],"names":["WorksheetActionBar","memo","props","userType","layout","behavior","worksheetName","questions","responses","activeQuestionIndex","lastUnlockedQuestionIndex","appendedQuestionIds","learnosity","isCanvasEnabled","isScribblingEnabled","isSummaryVisible","setIsScribblingEnabled","setActiveQuestionId","setResponses","getTimeSpentOnQuestion","setBlocker","setSummaryVisible","showCalculator","onItemNumberClick","onTeacherValidation","onGoToReview","onResponseChange","onHelp","onSubmit","onCalculatorOpen","canSubmitWorksheet","loggerRef","onSkip","canToggleScribbling","navigationBar","questionsScrollable","activeQuestion","activeQuestionId","isSummaryOpened","setIsSummaryOpened","useState","isAppended","handleItemNumberClick","useCallback","questionId","handleOnGoToReview","handleSummaryButtonClick","prev","handleBackFromSummary","_a","scrollToQuestion","handleSheetSubmitButtonClick","jsx","WorksheetSummaryController","jsxs","Fragment","FlexView","ScribbleSwitch","Styled.IconContainer","CalculatorIcon","Toolbar","Styled.SummaryWrapper","WorksheetQuestionsSummary","Button","DownIcon","UpIcon","WorksheetQuestionsController"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scribble-switch.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.tsx"],"sourcesContent":["import React, { memo, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport ScribbleIcon from '../../../../assets/line-icons/icons/scribble';\nimport { StyledWrapper } from '../../../cue-canvas/cue-cavas-styled';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport EVENTS from '../../constants/events';\n\ninterface IScribbleSwitchProps {\n isScribblingEnabled: boolean;\n setIsScribblingEnabled: (enabled: boolean) => void;\n isCanvasEnabled: boolean;\n loggerRef: React.MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;\n canToggleScribbling?: boolean;\n}\nStyledWrapper;\n\nconst IconWrapper = styled(FlexView)<{ $active: boolean }>(\n ({ theme, $active }) => `\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border: 1px solid black;\n &:hover {\n background-color: ${theme.colors.BLACK};\n svg path {\n stroke: ${theme.colors.WHITE};\n }\n }\n background-color: ${$active ? theme.colors.BLACK : theme.colors.WHITE};\n justify-content: center;\n align-items: center;\n svg path {\n stroke: ${$active ? theme.colors.WHITE : theme.colors.BLACK};\n }\n`,\n);\n\nconst ScribbleSwitch: React.FC<IScribbleSwitchProps> = memo(\n ({\n isScribblingEnabled,\n setIsScribblingEnabled,\n isCanvasEnabled,\n loggerRef,\n canToggleScribbling = true,\n }) => {\n const handleToggleScribble = useCallback(() => {\n setIsScribblingEnabled(!isScribblingEnabled);\n loggerRef.current(EVENTS.WORKSHEET_V3_SCRIBBLE_TOGGLE, {\n scribbling_enabled: !isScribblingEnabled,\n });\n }, [isScribblingEnabled, loggerRef, setIsScribblingEnabled]);\n\n if (!isCanvasEnabled) {\n // This is done to center align the QuestionNavBar for worksheets for whom scribbling is not enabled.\n return <FlexView $widthX={15.25} />;\n }\n\n return (\n <Clickable\n label=\"ScribbleSwitch Toggled\"\n onClick={handleToggleScribble}\n disabled={!canToggleScribbling}\n >\n <IconWrapper $active={isScribblingEnabled}>\n <ScribbleIcon />\n </IconWrapper>\n </Clickable>\n );\n },\n);\n\nexport default ScribbleSwitch;\n"],"names":["IconWrapper","styled","FlexView","theme","$active","ScribbleSwitch","memo","isScribblingEnabled","setIsScribblingEnabled","isCanvasEnabled","loggerRef","canToggleScribbling","handleToggleScribble","useCallback","EVENTS","jsx","Clickable","ScribbleIcon"],"mappings":";;;;;;;AAkBA,MAAMA,IAAcC,EAAOC,CAAQ;AAAA,EACjC,CAAC,EAAE,OAAAC,GAAO,SAAAC,EAAA,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMFD,EAAM,OAAO,KAAK;AAAA;AAAA,gBAE1BA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA,sBAGZC,IAAUD,EAAM,OAAO,QAAQA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,cAIzDC,IAAUD,EAAM,OAAO,QAAQA,EAAM,OAAO,KAAK;AAAA;AAAA;AAG/D,GAEME,IAAiDC;AAAA,EACrD,CAAC;AAAA,IACC,qBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC,IAAsB;AAAA,EAAA,MAClB;AACE,UAAAC,IAAuBC,EAAY,MAAM;AAC7C,MAAAL,EAAuB,CAACD,CAAmB,GACjCG,EAAA,QAAQI,EAAO,8BAA8B;AAAA,QACrD,oBAAoB,CAACP;AAAA,MAAA,CACtB;AAAA,IACA,GAAA,CAACA,GAAqBG,GAAWF,CAAsB,CAAC;AAE3D,WAAKC,IAMH,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAASJ;AAAA,QACT,UAAU,CAACD;AAAA,QAEX,4BAACX,GAAY,EAAA,SAASO,GACpB,UAAA,gBAAAQ,EAACE,IAAa,CAAA,GAChB;AAAA,MAAA;AAAA,IAAA,IAXK,gBAAAF,EAACb,GAAS,EAAA,SAAS,MAAO,CAAA;AAAA,EAcrC;AACF;"}
1
+ {"version":3,"file":"scribble-switch.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.tsx"],"sourcesContent":["import React, { memo, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport ScribbleIcon from '../../../../assets/line-icons/icons/scribble';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport EVENTS from '../../constants/events';\n\ninterface IScribbleSwitchProps {\n isScribblingEnabled: boolean;\n setIsScribblingEnabled: (enabled: boolean) => void;\n isCanvasEnabled: boolean;\n loggerRef: React.MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;\n canToggleScribbling?: boolean;\n}\n\nconst IconWrapper = styled(FlexView)<{ $active: boolean }>(\n ({ theme, $active }) => `\n width: 36px;\n height: 36px;\n border-radius: 50%;\n border: 1px solid black;\n &:hover {\n background-color: ${theme.colors.BLACK};\n svg path {\n stroke: ${theme.colors.WHITE};\n }\n }\n background-color: ${$active ? theme.colors.BLACK : theme.colors.WHITE};\n justify-content: center;\n align-items: center;\n svg path {\n stroke: ${$active ? theme.colors.WHITE : theme.colors.BLACK};\n }\n`,\n);\n\nconst ScribbleSwitch: React.FC<IScribbleSwitchProps> = memo(\n ({\n isScribblingEnabled,\n setIsScribblingEnabled,\n isCanvasEnabled,\n loggerRef,\n canToggleScribbling = true,\n }) => {\n const handleToggleScribble = useCallback(() => {\n setIsScribblingEnabled(!isScribblingEnabled);\n loggerRef.current(EVENTS.WORKSHEET_V3_SCRIBBLE_TOGGLE, {\n scribbling_enabled: !isScribblingEnabled,\n });\n }, [isScribblingEnabled, loggerRef, setIsScribblingEnabled]);\n\n if (!isCanvasEnabled) {\n // This is done to center align the QuestionNavBar for worksheets for whom scribbling is not enabled.\n return <FlexView $widthX={15.25} />;\n }\n\n return (\n <Clickable\n label=\"ScribbleSwitch Toggled\"\n onClick={handleToggleScribble}\n disabled={!canToggleScribbling}\n >\n <IconWrapper $active={isScribblingEnabled}>\n <ScribbleIcon />\n </IconWrapper>\n </Clickable>\n );\n },\n);\n\nexport default ScribbleSwitch;\n"],"names":["IconWrapper","styled","FlexView","theme","$active","ScribbleSwitch","memo","isScribblingEnabled","setIsScribblingEnabled","isCanvasEnabled","loggerRef","canToggleScribbling","handleToggleScribble","useCallback","EVENTS","jsx","Clickable","ScribbleIcon"],"mappings":";;;;;;;AAgBA,MAAMA,IAAcC,EAAOC,CAAQ;AAAA,EACjC,CAAC,EAAE,OAAAC,GAAO,SAAAC,EAAA,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMFD,EAAM,OAAO,KAAK;AAAA;AAAA,gBAE1BA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA,sBAGZC,IAAUD,EAAM,OAAO,QAAQA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,cAIzDC,IAAUD,EAAM,OAAO,QAAQA,EAAM,OAAO,KAAK;AAAA;AAAA;AAG/D,GAEME,IAAiDC;AAAA,EACrD,CAAC;AAAA,IACC,qBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC,IAAsB;AAAA,EAAA,MAClB;AACE,UAAAC,IAAuBC,EAAY,MAAM;AAC7C,MAAAL,EAAuB,CAACD,CAAmB,GACjCG,EAAA,QAAQI,EAAO,8BAA8B;AAAA,QACrD,oBAAoB,CAACP;AAAA,MAAA,CACtB;AAAA,IACA,GAAA,CAACA,GAAqBG,GAAWF,CAAsB,CAAC;AAE3D,WAAKC,IAMH,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAASJ;AAAA,QACT,UAAU,CAACD;AAAA,QAEX,4BAACX,GAAY,EAAA,SAASO,GACpB,UAAA,gBAAAQ,EAACE,IAAa,CAAA,GAChB;AAAA,MAAA;AAAA,IAAA,IAXK,gBAAAF,EAACb,GAAS,EAAA,SAAS,MAAO,CAAA;AAAA,EAcrC;AACF;"}
package/dist/index.d.ts CHANGED
@@ -491,6 +491,8 @@ declare interface IActionData {
491
491
  height: number;
492
492
  userId: string;
493
493
  responseId: string;
494
+ gridName?: TCueCanvasGridName;
495
+ dimension?: IViewport;
494
496
  }
495
497
 
496
498
  declare interface IAppLoaderProps {
@@ -1231,9 +1233,10 @@ declare interface IGradeSelectorProps {
1231
1233
  layoutAlignment?: 'center' | 'auto';
1232
1234
  }
1233
1235
 
1234
- declare interface IIconButtonProps extends Omit<IButtonProps, 'label' | 'shape' | 'widthX' | 'width' | 'iconPosition' | 'alignSelf' | 'analyticsLabel'>, Required<Pick<IClickableAnalyticsProps, 'analyticsLabel'>> {
1236
+ declare interface IIconButtonProps extends Omit<IButtonProps, 'label' | 'shape' | 'widthX' | 'width' | 'iconPosition' | 'alignSelf' | 'analyticsLabel' | 'renderAs'>, Required<Pick<IClickableAnalyticsProps, 'analyticsLabel'>> {
1235
1237
  Icon: React.FC<React.SVGProps<SVGSVGElement>>;
1236
1238
  customBgColor?: TColorNames;
1239
+ renderAs: TButtonVariants;
1237
1240
  }
1238
1241
 
1239
1242
  export declare interface IInfoMessage {
@@ -1591,6 +1594,7 @@ export declare const ILLUSTRATIONS: {
1591
1594
  CHAPTER_7: string;
1592
1595
  CHAPTER_8: string;
1593
1596
  CHAPTER_9: string;
1597
+ CHAPTER_HEADER_BG: string;
1594
1598
  CIRCLE_CUEMATH_LOGO: string;
1595
1599
  CIRCLE_OUTERCIRCLE_BG: string;
1596
1600
  CLOCK_ORANGE: string;
@@ -2606,7 +2610,7 @@ export declare interface IStreakLeaderboardDetails extends IBaseLeaderboardDetai
2606
2610
  declare interface IStroke {
2607
2611
  points: string;
2608
2612
  color?: string;
2609
- brush: 'pen' | 'marker' | 'highlighter';
2613
+ brush: 'pen' | 'ruler' | 'marker' | 'highlighter';
2610
2614
  cannotEdit?: boolean;
2611
2615
  }
2612
2616
 
@@ -2871,6 +2875,7 @@ export declare interface ITheme {
2871
2875
 
2872
2876
  declare interface ITile {
2873
2877
  name: string;
2878
+ href?: string;
2874
2879
  x?: number;
2875
2880
  y?: number;
2876
2881
  rot?: number;
@@ -2915,6 +2920,7 @@ export declare interface ITodaysContentTimeStamps {
2915
2920
 
2916
2921
  declare interface IToolbarProps {
2917
2922
  userType: TUserTypes;
2923
+ renderAs: TRenderAs_2;
2918
2924
  }
2919
2925
 
2920
2926
  export declare interface ITrackEvent {
@@ -3130,6 +3136,12 @@ export declare interface IVibrationPattern {
3130
3136
  pattern: number[] | number;
3131
3137
  }
3132
3138
 
3139
+ declare interface IViewport {
3140
+ x: number;
3141
+ y: number;
3142
+ zoom: number;
3143
+ }
3144
+
3133
3145
  export declare interface IWebViewProps extends IframeHTMLAttributes<HTMLIFrameElement> {
3134
3146
  baseUrl: string;
3135
3147
  projectDetails: IMultiplayerWebGameProps | IPuzzleWebGameProps | ILessonWebGameProps | ITableWebGameProps;
@@ -4127,6 +4139,8 @@ declare type TCreateOnPresubmit = (options: TOnPreSubmitOptions) => void;
4127
4139
 
4128
4140
  declare type TCueCanvasChangeDataObject = Record<string, TDrawingData[]>;
4129
4141
 
4142
+ declare type TCueCanvasGridName = 'none' | 'square2-grid' | 'square-checked' | 'square-dots' | 'square-grid' | 'tri-dots' | 'tri-grid' | 'tri2-dots' | 'tri2-grid';
4143
+
4130
4144
  declare type TCueProgramData = {
4131
4145
  description: string;
4132
4146
  id: string;
@@ -0,0 +1 @@
1
+ <svg width="800" height="168" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_7763_6637)"><circle cx="126" cy="84" r="222" fill="white" fill-opacity="0.25"/><circle cx="126" cy="84" r="126" fill="white" fill-opacity="0.25"/><circle cx="126" cy="84" r="78" fill="white" fill-opacity="0.25"/></g><defs><clipPath id="clip0_7763_6637"><rect width="800" height="168" fill="white"/></clipPath></defs></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "2.8.50",
3
+ "version": "2.8.52-link.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -1,49 +0,0 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { memo as d, useCallback as m, useMemo as $ } from "react";
3
- import s from "../../ui/buttons/clickable/clickable.js";
4
- import n from "../../ui/layout/flex-view.js";
5
- import { getColorsForUser as h } from "../cue-canvas-helpers.js";
6
- import { PalleteWrapper as u, ColorPicker as C, StyledCheckIcon as f } from "../cue-cavas-styled.js";
7
- const x = d(({ setActiveColor: o, activeColor: t, userType: i }) => {
8
- const l = m(
9
- (e) => {
10
- o(e);
11
- },
12
- [o]
13
- ), a = $(() => h(i), [i]);
14
- return /* @__PURE__ */ r(u, { $background: "WHITE", $gutterX: 0.5, $gapX: 0.5, $borderRadius: 10, children: /* @__PURE__ */ r(n, { $flexDirection: "row", children: a.map((e, c) => /* @__PURE__ */ r(
15
- s,
16
- {
17
- onClick: () => l(e),
18
- label: `Color Picker - ${e}`,
19
- children: /* @__PURE__ */ r(
20
- n,
21
- {
22
- $width: 22,
23
- $height: 22,
24
- $borderRadius: 11,
25
- $justifyContent: "center",
26
- $background: t === e ? "BLACK" : "WHITE",
27
- $alignItems: "center",
28
- children: /* @__PURE__ */ r(
29
- C,
30
- {
31
- $width: 20,
32
- $height: 20,
33
- $borderRadius: 10,
34
- $color: e,
35
- $alignItems: "center",
36
- $justifyContent: "center",
37
- children: t === e && /* @__PURE__ */ r(f, {})
38
- }
39
- )
40
- }
41
- )
42
- },
43
- c
44
- )) }) });
45
- });
46
- export {
47
- x as default
48
- };
49
- //# sourceMappingURL=color-pallete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-pallete.js","sources":["../../../../src/features/cue-canvas/toolbar/color-pallete.tsx"],"sourcesContent":["import type { TUserTypes } from '../../ui/types';\nimport type { TCueCanvasColors } from '../types/cue-canvas';\n\nimport { memo, useCallback, useMemo } from 'react';\n\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport FlexView from '../../ui/layout/flex-view';\nimport { getColorsForUser } from '../cue-canvas-helpers';\nimport { StyledCheckIcon } from '../cue-cavas-styled';\nimport { PalleteWrapper, ColorPicker } from '../cue-cavas-styled';\n\ninterface IColorPallete {\n setActiveColor: (color: TCueCanvasColors) => void;\n activeColor: TCueCanvasColors;\n userType: TUserTypes;\n}\n\nconst ColorPallete: React.FC<IColorPallete> = memo(({ setActiveColor, activeColor, userType }) => {\n const handleColorChange = useCallback(\n (color: TCueCanvasColors) => {\n setActiveColor(color);\n },\n [setActiveColor],\n );\n const colors = useMemo(() => getColorsForUser(userType), [userType]);\n\n return (\n <PalleteWrapper $background=\"WHITE\" $gutterX={0.5} $gapX={0.5} $borderRadius={10}>\n <FlexView $flexDirection=\"row\">\n {colors.map((color, index) => (\n <Clickable\n key={index}\n onClick={() => handleColorChange(color)}\n label={`Color Picker - ${color}`}\n >\n <FlexView\n $width={22}\n $height={22}\n $borderRadius={11}\n $justifyContent=\"center\"\n $background={activeColor === color ? 'BLACK' : 'WHITE'}\n $alignItems=\"center\"\n >\n <ColorPicker\n $width={20}\n $height={20}\n $borderRadius={10}\n $color={color}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {activeColor === color && <StyledCheckIcon />}\n </ColorPicker>\n </FlexView>\n </Clickable>\n ))}\n </FlexView>\n </PalleteWrapper>\n );\n});\n\nexport default ColorPallete;\n"],"names":["ColorPallete","memo","setActiveColor","activeColor","userType","handleColorChange","useCallback","color","colors","useMemo","getColorsForUser","PalleteWrapper","jsx","FlexView","index","Clickable","ColorPicker","StyledCheckIcon"],"mappings":";;;;;;AAiBA,MAAMA,IAAwCC,EAAK,CAAC,EAAE,gBAAAC,GAAgB,aAAAC,GAAa,UAAAC,QAAe;AAChG,QAAMC,IAAoBC;AAAA,IACxB,CAACC,MAA4B;AAC3B,MAAAL,EAAeK,CAAK;AAAA,IACtB;AAAA,IACA,CAACL,CAAc;AAAA,EAAA,GAEXM,IAASC,EAAQ,MAAMC,EAAiBN,CAAQ,GAAG,CAACA,CAAQ,CAAC;AAEnE,2BACGO,GAAe,EAAA,aAAY,SAAQ,UAAU,KAAK,OAAO,KAAK,eAAe,IAC5E,UAAA,gBAAAC,EAACC,KAAS,gBAAe,OACtB,YAAO,IAAI,CAACN,GAAOO,MAClB,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MAEC,SAAS,MAAMV,EAAkBE,CAAK;AAAA,MACtC,OAAO,kBAAkBA,CAAK;AAAA,MAE9B,UAAA,gBAAAK;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,eAAe;AAAA,UACf,iBAAgB;AAAA,UAChB,aAAaV,MAAgBI,IAAQ,UAAU;AAAA,UAC/C,aAAY;AAAA,UAEZ,UAAA,gBAAAK;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,eAAe;AAAA,cACf,QAAQT;AAAA,cACR,aAAY;AAAA,cACZ,iBAAgB;AAAA,cAEf,UAAAJ,MAAgBI,KAAS,gBAAAK,EAACK,GAAgB,CAAA,CAAA;AAAA,YAAA;AAAA,UAC7C;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAtBKH;AAAA,EAAA,CAwBR,GACH,EACF,CAAA;AAEJ,CAAC;"}