@cuemath/leap 3.1.1 → 3.1.2-beta-0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/cue-canvas/cue-canvas-core.js +43 -48
- package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/api/get-past-milestone-count.js +13 -0
- package/dist/features/milestone/milestone-list-container/api/get-past-milestone-count.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +146 -143
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
@@ -1,20 +1,19 @@
|
|
1
1
|
var u = Object.defineProperty;
|
2
|
-
var g = (
|
3
|
-
var s = (
|
4
|
-
import
|
5
|
-
import f from "
|
6
|
-
|
7
|
-
class E {
|
2
|
+
var g = (l, t, e) => t in l ? u(l, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[t] = e;
|
3
|
+
var s = (l, t, e) => g(l, typeof t != "symbol" ? t + "" : t, e);
|
4
|
+
import v from "../../node_modules/lodash.debounce/index.js";
|
5
|
+
import { removeTileButton as f, removeMask as y, checkTextOrEquationTool as C, getReverseMap as m, getToolAndSubtool as T } from "./cue-canvas-helpers.js";
|
6
|
+
class k {
|
8
7
|
constructor({
|
9
8
|
onPublish: t,
|
10
9
|
onSubscribe: e,
|
11
10
|
onUpdateActiveTool: a,
|
12
|
-
onUpdateHeight:
|
13
|
-
uploadImageToS3:
|
11
|
+
onUpdateHeight: o,
|
12
|
+
uploadImageToS3: i,
|
14
13
|
height: n,
|
15
14
|
userId: h,
|
16
15
|
canvasId: r,
|
17
|
-
userType:
|
16
|
+
userType: c,
|
18
17
|
renderAs: p,
|
19
18
|
updateCanvasConfig: d
|
20
19
|
}) {
|
@@ -45,7 +44,7 @@ class E {
|
|
45
44
|
});
|
46
45
|
s(this, "onChange", (t) => {
|
47
46
|
const a = Object.fromEntries(t.entries());
|
48
|
-
|
47
|
+
C(a) && this.onUpdateActiveTool("move"), this.publishToChannel(a);
|
49
48
|
});
|
50
49
|
s(this, "undo", () => {
|
51
50
|
if (!this.polycanvas)
|
@@ -53,7 +52,7 @@ class E {
|
|
53
52
|
const t = this.polycanvas.undo();
|
54
53
|
if (!t)
|
55
54
|
return;
|
56
|
-
const e =
|
55
|
+
const e = m(t);
|
57
56
|
this.onChange(e);
|
58
57
|
});
|
59
58
|
s(this, "redo", () => {
|
@@ -97,40 +96,36 @@ class E {
|
|
97
96
|
x: e.x + 24,
|
98
97
|
y: e.y + 24,
|
99
98
|
width: 500
|
100
|
-
},
|
99
|
+
}, o = this.polycanvas.add({
|
101
100
|
...a
|
102
101
|
});
|
103
102
|
this.publishToChannel({
|
104
|
-
[
|
103
|
+
[o]: [void 0, { ...a, status: "locked" }]
|
105
104
|
});
|
106
105
|
});
|
107
106
|
s(this, "onSelectImage", async (t) => {
|
108
|
-
var
|
109
|
-
const e = t.target, a = (
|
107
|
+
var i;
|
108
|
+
const e = t.target, a = (i = e.files) == null ? void 0 : i[0];
|
110
109
|
if (!a || !this.polycanvas || !this.uploadImageToS3) return;
|
111
|
-
const
|
112
|
-
|
110
|
+
const o = await this.uploadImageToS3(a);
|
111
|
+
o !== "error" && (this.addImageToCanvas(o), e.value = "");
|
113
112
|
});
|
114
113
|
s(this, "updateCanvas", ({ data: t, userId: e }) => {
|
115
114
|
const a = this.userType === "TEACHER" || e === this.userId;
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
});
|
121
|
-
} catch {
|
122
|
-
v("Error Updating Canvas", t);
|
123
|
-
}
|
115
|
+
Object.entries(t).forEach(([o, i]) => {
|
116
|
+
var n, h, r;
|
117
|
+
!i[0] && i[1] ? ("name" in i[1] && i[1].name === "image" && (i[1].status = this.userType === "STUDENT" ? "locked" : void 0), (n = this.polycanvas) == null || n.add({ ...i[1], cannotEdit: !a }, o)) : i[0] && !i[1] ? (h = this.polycanvas) == null || h.delete(o) : i[0] && i[1] && ((r = this.polycanvas) == null || r.update(o, { ...i[1] }));
|
118
|
+
});
|
124
119
|
});
|
125
120
|
s(this, "toggleTiles", (t) => {
|
126
121
|
var e;
|
127
122
|
(e = this.polycanvas) == null || e.toggleSidebar(t);
|
128
123
|
});
|
129
124
|
s(this, "setViewPort", ({ x: t, y: e, zoom: a }) => {
|
130
|
-
var
|
125
|
+
var o;
|
131
126
|
if (this.polycanvas) {
|
132
|
-
const
|
133
|
-
if (
|
127
|
+
const i = (o = this.polycanvas) == null ? void 0 : o.getViewport();
|
128
|
+
if (i.x === t && i.y === e && i.zoom === a)
|
134
129
|
return;
|
135
130
|
this.polycanvas.setViewport(t, e, a);
|
136
131
|
}
|
@@ -144,42 +139,42 @@ class E {
|
|
144
139
|
}), this.gridName = t, this.updateCanvasConfigChange && this.updateCanvasConfigChange({ gridName: t }));
|
145
140
|
});
|
146
141
|
s(this, "lockSelectedTiles", () => {
|
147
|
-
var a,
|
148
|
-
const { tiles: t } = ((a = this.polycanvas) == null ? void 0 : a.serialize()) || {}, e = ((
|
142
|
+
var a, o;
|
143
|
+
const { tiles: t } = ((a = this.polycanvas) == null ? void 0 : a.serialize()) || {}, e = ((o = this.polycanvas) == null ? void 0 : o.getSelection()) || [];
|
149
144
|
if (e.length > 0 && t) {
|
150
|
-
const
|
145
|
+
const i = {};
|
151
146
|
e.forEach((n) => {
|
152
|
-
var r,
|
147
|
+
var r, c, p;
|
153
148
|
if (!((r = t[n]) != null && r.name)) return;
|
154
149
|
const h = { ...t[n], status: "locked" };
|
155
|
-
(
|
156
|
-
}), this.publishToChannel(
|
150
|
+
(c = this.polycanvas) == null || c.update(n, h), (p = t[n]) != null && p.name && (i[n] = [t[n], h]);
|
151
|
+
}), this.publishToChannel(i);
|
157
152
|
}
|
158
153
|
});
|
159
154
|
s(this, "unlockAllTiles", () => {
|
160
155
|
if (!this.polycanvas) return;
|
161
156
|
const { tiles: t } = this.polycanvas.serialize(), e = {};
|
162
|
-
t && Object.entries(t).length > 0 && (Object.entries(t).forEach(([a,
|
157
|
+
t && Object.entries(t).length > 0 && (Object.entries(t).forEach(([a, o]) => {
|
163
158
|
var n;
|
164
|
-
if (
|
165
|
-
const
|
166
|
-
(n = this.polycanvas) == null || n.update(a,
|
159
|
+
if (o.status !== "locked") return;
|
160
|
+
const i = { ...o, status: void 0 };
|
161
|
+
(n = this.polycanvas) == null || n.update(a, i), e[a] = [o, i];
|
167
162
|
}), this.publishToChannel(e));
|
168
163
|
});
|
169
164
|
s(this, "replaceCanvas", (t) => {
|
170
165
|
if (!this.polycanvas) return;
|
171
166
|
const { data: e, gridName: a } = t;
|
172
|
-
this.polycanvas.clear(), a && this.changeGrid(a), Object.entries(e).forEach(([
|
167
|
+
this.polycanvas.clear(), a && this.changeGrid(a), Object.entries(e).forEach(([o, i]) => {
|
173
168
|
var n;
|
174
|
-
if (!
|
175
|
-
(n = this.polycanvas) == null || n.add({ ...
|
169
|
+
if (!i[0] && i[1]) {
|
170
|
+
(n = this.polycanvas) == null || n.add({ ...i[1] }, o);
|
176
171
|
return;
|
177
172
|
}
|
178
173
|
}), this.publishToChannel(e);
|
179
174
|
});
|
180
175
|
s(this, "setTool", (t) => {
|
181
176
|
if (this.polycanvas) {
|
182
|
-
const [e, a] =
|
177
|
+
const [e, a] = T(t);
|
183
178
|
switch (e) {
|
184
179
|
case "clearAll":
|
185
180
|
this.clearCanvas();
|
@@ -232,8 +227,8 @@ class E {
|
|
232
227
|
*/
|
233
228
|
s(this, "update", (t) => {
|
234
229
|
if (Array.isArray(t)) {
|
235
|
-
const e = t.map((
|
236
|
-
a > this.height && this.updateHeight(a), t.forEach((
|
230
|
+
const e = t.map((o) => o.height).filter(Boolean), a = Math.max(...e);
|
231
|
+
a > this.height && this.updateHeight(a), t.forEach((o) => this.updateCanvas(o));
|
237
232
|
} else
|
238
233
|
t.height > this.height && this.updateHeight(t.height), this.updateCanvas(t);
|
239
234
|
});
|
@@ -247,9 +242,9 @@ class E {
|
|
247
242
|
s(this, "destroy", () => {
|
248
243
|
this.polycanvas && (this.polycanvas.off("change", this.onChange), this.polycanvas.destroy(), this.debouncedViewportChange.cancel(), this.renderAs === "whiteboard" && this.userType === "TEACHER" && this.polycanvas.off("viewport", this.debouncedViewportChange), this.polycanvas = void 0, this.fileInput && this.fileInput.parentNode && (this.fileInput.parentNode.removeChild(this.fileInput), this.fileInput = null));
|
249
244
|
});
|
250
|
-
this.onUpdateHeight =
|
245
|
+
this.onUpdateHeight = o, this.onUpdateActiveTool = a, this.height = n, this.uploadImageToS3 = i, this.userId = h, this.canvasId = r, this.publish = t, this.userType = c, this.renderAs = p, this.debouncedViewportChange = v(this.onViewPortChange, 300), this.updateCanvasConfigChange = d, e == null || e(this.canvasId, this.update);
|
251
246
|
}
|
252
|
-
async create({ canvasElementRef: t, canvasConfig: e, canvasSetting: a, initialData:
|
247
|
+
async create({ canvasElementRef: t, canvasConfig: e, canvasSetting: a, initialData: o }) {
|
253
248
|
if (!t.current)
|
254
249
|
throw new Error("PolyCanvas: Div Element Not found for canvas");
|
255
250
|
this.polycanvas = await window.Polypad.create(t.current, {
|
@@ -258,10 +253,10 @@ class E {
|
|
258
253
|
},
|
259
254
|
...a,
|
260
255
|
imageUpload: this.renderAs === "whiteboard" && this.userType === "TEACHER" && this.uploadImageToS3 ? this.uploadImageToS3 : void 0
|
261
|
-
}), this.renderAs === "whiteboard" && this.userType === "TEACHER" && (this.polycanvas.toggleSidebar(!1), this.polycanvas.bindKeyboardEvents({}),
|
256
|
+
}), this.renderAs === "whiteboard" && this.userType === "TEACHER" && (this.polycanvas.toggleSidebar(!1), this.polycanvas.bindKeyboardEvents({}), f(t), this.polycanvas.on("viewport", this.debouncedViewportChange)), y(t), this.polycanvas.on("change", this.onChange), o && this.update(o);
|
262
257
|
}
|
263
258
|
}
|
264
259
|
export {
|
265
|
-
|
260
|
+
k as CueCanvasCore
|
266
261
|
};
|
267
262
|
//# sourceMappingURL=cue-canvas-core.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cue-canvas-core.js","sources":["../../../src/features/cue-canvas/cue-canvas-core.ts"],"sourcesContent":["import type { TUserTypes } from '../ui/types';\nimport type {\n IActionData,\n IViewport,\n TCueCanvasChangeData,\n TCueCanvasGridName,\n TCueCanvasTool,\n TPublish,\n TRenderAs,\n TCueCanvasChangeDataObject,\n IReplaceCanvas,\n ICueCanvasCoreProps,\n TUpdateCanvasConfig,\n} from './types/cue-canvas';\nimport type { ICreateOptions } from './types/cue-canvas';\nimport type { IPolypad, IPolyPadInstance } from './types/polypad';\n\nimport { captureMessage } from '@sentry/browser';\nimport debounce from 'lodash.debounce';\n\nimport {\n checkTextOrEquationTool,\n getReverseMap,\n getToolAndSubtool,\n removeMask,\n removeTileButton,\n} from './cue-canvas-helpers';\n\ndeclare global {\n interface Window {\n Polypad: IPolypad;\n }\n}\n\n/**\n * The CueCanvasCore class manages the canvas state and tool synchronization.\n * When text or equations are added, Polypad automatically switches to 'move' tool.\n * onUpdateActiveTool ensures the UI reflects this automatic tool change.\n */\n\nexport class CueCanvasCore {\n private polycanvas: IPolyPadInstance | undefined;\n private publish?: TPublish;\n private height: number;\n private onUpdateActiveTool: (tool: TCueCanvasTool) => void;\n private onUpdateHeight?: (height: number) => void;\n private userId: string;\n private canvasId: string;\n private userType: TUserTypes;\n private renderAs: TRenderAs;\n private fileInput: HTMLInputElement | null = null;\n private debouncedViewportChange: ReturnType<typeof debounce>;\n private uploadImageToS3?: (file: File) => Promise<string>;\n private updateCanvasConfigChange?: TUpdateCanvasConfig;\n private gridName?: TCueCanvasGridName;\n\n constructor({\n onPublish,\n onSubscribe,\n onUpdateActiveTool,\n onUpdateHeight,\n uploadImageToS3,\n height,\n userId,\n canvasId,\n userType,\n renderAs,\n updateCanvasConfig,\n }: ICueCanvasCoreProps) {\n this.onUpdateHeight = onUpdateHeight;\n this.onUpdateActiveTool = onUpdateActiveTool;\n this.height = height;\n this.uploadImageToS3 = uploadImageToS3;\n this.userId = userId;\n this.canvasId = canvasId;\n this.publish = onPublish;\n this.userType = userType;\n this.renderAs = renderAs;\n this.debouncedViewportChange = debounce(this.onViewPortChange, 300);\n this.updateCanvasConfigChange = updateCanvasConfig;\n onSubscribe?.(this.canvasId, this.update);\n }\n\n async create({ canvasElementRef, canvasConfig, canvasSetting, initialData }: ICreateOptions) {\n if (!canvasElementRef.current) {\n throw new Error('PolyCanvas: Div Element Not found for canvas');\n }\n this.polycanvas = await window.Polypad.create(canvasElementRef.current, {\n initial: {\n options: canvasConfig,\n },\n ...canvasSetting,\n imageUpload:\n this.renderAs === 'whiteboard' && this.userType === 'TEACHER' && this.uploadImageToS3\n ? this.uploadImageToS3\n : undefined,\n });\n\n if (this.renderAs === 'whiteboard' && this.userType === 'TEACHER') {\n this.polycanvas.toggleSidebar(false);\n this.polycanvas.bindKeyboardEvents({});\n\n removeTileButton(canvasElementRef);\n this.polycanvas.on('viewport', this.debouncedViewportChange);\n }\n\n removeMask(canvasElementRef);\n this.polycanvas.on('change', this.onChange);\n if (initialData) {\n this.update(initialData);\n }\n }\n\n private publishToChannel = (payload: TCueCanvasChangeDataObject) => {\n if (!this.publish) return;\n\n this.publish({\n eventName: 'cue_canvas_changed',\n eventPayload: {\n data: payload,\n height: this.height,\n userId: this.userId,\n responseId: this.canvasId,\n },\n });\n };\n\n private onChange = (e: unknown) => {\n const data = e as TCueCanvasChangeData;\n const payload = Object.fromEntries(data.entries());\n\n if (checkTextOrEquationTool(payload)) {\n this.onUpdateActiveTool('move');\n }\n\n this.publishToChannel(payload);\n };\n\n private undo = () => {\n if (!this.polycanvas) {\n return;\n }\n\n const data = this.polycanvas.undo() as TCueCanvasChangeData;\n\n if (!data) {\n return;\n }\n\n const undoData = getReverseMap(data);\n\n this.onChange(undoData);\n };\n\n private redo = () => {\n if (!this.polycanvas) {\n return;\n }\n\n const data = this.polycanvas.redo() as TCueCanvasChangeData;\n\n if (!data) {\n return;\n }\n\n this.onChange(data);\n };\n\n clearCanvas = () => {\n if (this.polycanvas) {\n this.polycanvas.clear();\n }\n };\n\n private zoomIn = () => {\n if (!this.polycanvas) return;\n\n const viewPort = this.polycanvas.getViewport();\n\n this.polycanvas.setViewport(viewPort.x, viewPort.y, viewPort.zoom * 1.1);\n };\n\n private zoomOut = () => {\n if (!this.polycanvas) return;\n\n const viewPort = this.polycanvas.getViewport();\n\n this.polycanvas.setViewport(viewPort.x, viewPort.y, viewPort.zoom * 0.9);\n };\n\n getCanvasAsImage = async () => {\n if (!this.polycanvas) return;\n\n const image = await this.polycanvas.image(3000, 3000, 'png');\n\n return image;\n };\n\n private downloadCanvasAsImage = async () => {\n if (!this.polycanvas) return;\n\n const image = await this.polycanvas.image(3000, 3000, 'png');\n\n if (!image) return;\n\n const downloadLink = document.createElement('a');\n\n downloadLink.href = image;\n downloadLink.download = `canvas-drawing-${Date.now()}.png`;\n downloadLink.click();\n };\n\n private onViewPortChange = (e: IViewport): void => {\n if (!this.updateCanvasConfigChange) return;\n\n this.updateCanvasConfigChange({ dimesion: e });\n };\n\n private openFileUpload = (): void => {\n if (!this.fileInput) {\n this.fileInput = document.createElement('input');\n this.fileInput.type = 'file';\n this.fileInput.accept = 'image/*';\n this.fileInput.style.display = 'none';\n this.fileInput.onchange = this.onSelectImage;\n document.body.appendChild(this.fileInput);\n }\n\n this.fileInput.click();\n };\n\n addImageToCanvas = (imageUrl: string): void => {\n if (!this.polycanvas) return;\n\n const viewPort = this.polycanvas.getViewport();\n const imgJson = {\n name: 'image',\n href: imageUrl,\n x: viewPort.x + 24,\n y: viewPort.y + 24,\n width: 500,\n };\n\n const key = this.polycanvas.add({\n ...imgJson,\n });\n\n this.publishToChannel({\n [key]: [undefined, { ...imgJson, status: 'locked' }],\n });\n };\n\n private onSelectImage = async (event: Event): Promise<void> => {\n const target = event.target as HTMLInputElement;\n const file = target.files?.[0];\n\n if (!file || !this.polycanvas || !this.uploadImageToS3) return;\n\n const imageUrl = await this.uploadImageToS3(file);\n\n if (imageUrl === 'error') {\n return;\n }\n\n this.addImageToCanvas(imageUrl);\n\n target.value = '';\n };\n\n private updateCanvas = ({ data, userId }: IActionData) => {\n const canEditStroke = this.userType === 'TEACHER' || userId === this.userId;\n\n try {\n Object.entries(data).forEach(([key, value]) => {\n if (!value[0] && value[1]) {\n if ('name' in value[1] && value[1].name === 'image') {\n value[1].status = this.userType === 'STUDENT' ? 'locked' : undefined; // Lock only images for students\n }\n this.polycanvas?.add({ ...value[1], cannotEdit: !canEditStroke }, key);\n } else if (value[0] && !value[1]) {\n this.polycanvas?.delete(key);\n } else if (value[0] && value[1]) {\n this.polycanvas?.update(key, { ...value[1] });\n }\n });\n } catch (error) {\n captureMessage('Error Updating Canvas', data);\n }\n };\n\n toggleTiles = (val: boolean) => {\n this.polycanvas?.toggleSidebar(val);\n };\n\n setViewPort = ({ x, y, zoom }: IViewport) => {\n if (this.polycanvas) {\n const cv = this.polycanvas?.getViewport();\n\n if (cv.x === x && cv.y === y && cv.zoom === zoom) {\n return; // No change needed\n }\n\n this.polycanvas.setViewport(x, y, zoom);\n }\n };\n\n resetViewPort = () => {\n if (this.polycanvas) {\n this.polycanvas.resetViewport();\n }\n };\n\n changeGrid = (gridName: TCueCanvasGridName) => {\n if (!this.polycanvas || this.gridName === gridName) return;\n\n this.polycanvas.setOptions({\n grid: gridName,\n });\n this.gridName = gridName;\n if (this.updateCanvasConfigChange) {\n this.updateCanvasConfigChange({ gridName: gridName });\n }\n };\n\n lockSelectedTiles = () => {\n const { tiles: allTiles } = this.polycanvas?.serialize() || {};\n const selectedItems = this.polycanvas?.getSelection() || [];\n\n if (selectedItems.length > 0 && allTiles) {\n const lockedTiles: TCueCanvasChangeDataObject = {};\n\n selectedItems.forEach(key => {\n if (!allTiles[key]?.name) return;\n\n const updatedJson = { ...allTiles[key], status: 'locked' as const };\n\n this.polycanvas?.update(key, updatedJson);\n if (allTiles[key]?.name) lockedTiles[key] = [allTiles[key], updatedJson];\n });\n\n this.publishToChannel(lockedTiles);\n }\n };\n\n unlockAllTiles = () => {\n if (!this.polycanvas) return;\n\n const { tiles: allTiles } = this.polycanvas.serialize();\n const unlockedTiles: TCueCanvasChangeDataObject = {};\n\n if (allTiles && Object.entries(allTiles).length > 0) {\n Object.entries(allTiles).forEach(([key, item]) => {\n if (item.status !== 'locked') return;\n\n const updatedJson = { ...item, status: undefined };\n\n this.polycanvas?.update(key, updatedJson);\n unlockedTiles[key] = [item, updatedJson];\n });\n\n this.publishToChannel(unlockedTiles);\n }\n };\n\n replaceCanvas = (data: IReplaceCanvas) => {\n if (!this.polycanvas) return;\n\n const { data: canvasData, gridName } = data;\n\n this.polycanvas.clear();\n if (gridName) {\n this.changeGrid(gridName);\n }\n\n Object.entries(canvasData).forEach(([key, value]) => {\n if (!value[0] && value[1]) {\n this.polycanvas?.add({ ...value[1] }, key);\n\n return;\n }\n });\n\n this.publishToChannel(canvasData);\n };\n\n setTool = (tool: TCueCanvasTool) => {\n if (this.polycanvas) {\n const [currTool, currSubTool] = getToolAndSubtool(tool);\n\n switch (currTool) {\n case 'clearAll':\n this.clearCanvas();\n break;\n case 'home':\n this.resetViewPort();\n break;\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n case 'lock':\n this.lockSelectedTiles();\n break;\n case 'unlock':\n this.unlockAllTiles();\n break;\n case 'zoomIn':\n this.zoomIn();\n break;\n case 'zoomOut':\n this.zoomOut();\n break;\n case 'upload':\n this.openFileUpload();\n break;\n case 'download':\n this.downloadCanvasAsImage();\n break;\n case 'grid':\n break;\n default:\n this.polycanvas.setTool(currTool, currSubTool);\n }\n }\n };\n\n /**\n * The `update` method is called in two cases:\n * 1. When receiving initial data to update the canvas content.\n * 2. When receiving strokes from other peers to update the canvas content.\n * Each item can contain multiple actions, which are applied to the canvas.\n *\n * The method checks if the payload is an array or a single object.\n * If it's an array, it iterates over each item and updates the canvas accordingly.\n * If it's a single object, it directly updates the canvas.\n *\n * Additionally, if the payload contains a height greater than the current height of the canvas, the `updateHeight` method is called to update the canvas height.\n */\n update = (payload: IActionData | IActionData[]) => {\n if (Array.isArray(payload)) {\n const heights = payload.map(data => data.height).filter(Boolean);\n const maxHeight = Math.max(...heights);\n\n if (maxHeight > this.height) {\n this.updateHeight(maxHeight);\n }\n payload.forEach(item => this.updateCanvas(item));\n } else {\n if (payload.height > this.height) {\n this.updateHeight(payload.height);\n }\n this.updateCanvas(payload);\n }\n };\n\n setColor = (color: string) => {\n if (this.polycanvas) {\n this.polycanvas.setColor(color);\n }\n };\n\n updateHeight = (height: number) => {\n this.height = height;\n this.onUpdateHeight?.(height);\n };\n\n destroy = () => {\n if (this.polycanvas) {\n this.polycanvas.off('change', this.onChange);\n this.polycanvas.destroy();\n this.debouncedViewportChange.cancel();\n\n if (this.renderAs === 'whiteboard' && this.userType === 'TEACHER') {\n this.polycanvas.off('viewport', this.debouncedViewportChange);\n }\n this.polycanvas = undefined;\n\n if (this.fileInput && this.fileInput.parentNode) {\n this.fileInput.parentNode.removeChild(this.fileInput);\n this.fileInput = null;\n }\n }\n };\n}\n"],"names":["CueCanvasCore","onPublish","onSubscribe","onUpdateActiveTool","onUpdateHeight","uploadImageToS3","height","userId","canvasId","userType","renderAs","updateCanvasConfig","__publicField","payload","e","checkTextOrEquationTool","data","undoData","getReverseMap","viewPort","image","downloadLink","imageUrl","imgJson","key","event","target","file","_a","canEditStroke","value","_b","_c","captureMessage","val","x","y","zoom","cv","gridName","allTiles","selectedItems","lockedTiles","updatedJson","unlockedTiles","item","canvasData","tool","currTool","currSubTool","getToolAndSubtool","heights","maxHeight","color","debounce","canvasElementRef","canvasConfig","canvasSetting","initialData","removeTileButton","removeMask"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"cue-canvas-core.js","sources":["../../../src/features/cue-canvas/cue-canvas-core.ts"],"sourcesContent":["import type { TUserTypes } from '../ui/types';\nimport type {\n IActionData,\n IViewport,\n TCueCanvasChangeData,\n TCueCanvasGridName,\n TCueCanvasTool,\n TPublish,\n TRenderAs,\n TCueCanvasChangeDataObject,\n IReplaceCanvas,\n ICueCanvasCoreProps,\n TUpdateCanvasConfig,\n} from './types/cue-canvas';\nimport type { ICreateOptions } from './types/cue-canvas';\nimport type { IPolypad, IPolyPadInstance } from './types/polypad';\n\nimport debounce from 'lodash.debounce';\n\nimport {\n checkTextOrEquationTool,\n getReverseMap,\n getToolAndSubtool,\n removeMask,\n removeTileButton,\n} from './cue-canvas-helpers';\n\ndeclare global {\n interface Window {\n Polypad: IPolypad;\n }\n}\n\n/**\n * The CueCanvasCore class manages the canvas state and tool synchronization.\n * When text or equations are added, Polypad automatically switches to 'move' tool.\n * onUpdateActiveTool ensures the UI reflects this automatic tool change.\n */\n\nexport class CueCanvasCore {\n private polycanvas: IPolyPadInstance | undefined;\n private publish?: TPublish;\n private height: number;\n private onUpdateActiveTool: (tool: TCueCanvasTool) => void;\n private onUpdateHeight?: (height: number) => void;\n private userId: string;\n private canvasId: string;\n private userType: TUserTypes;\n private renderAs: TRenderAs;\n private fileInput: HTMLInputElement | null = null;\n private debouncedViewportChange: ReturnType<typeof debounce>;\n private uploadImageToS3?: (file: File) => Promise<string>;\n private updateCanvasConfigChange?: TUpdateCanvasConfig;\n private gridName?: TCueCanvasGridName;\n\n constructor({\n onPublish,\n onSubscribe,\n onUpdateActiveTool,\n onUpdateHeight,\n uploadImageToS3,\n height,\n userId,\n canvasId,\n userType,\n renderAs,\n updateCanvasConfig,\n }: ICueCanvasCoreProps) {\n this.onUpdateHeight = onUpdateHeight;\n this.onUpdateActiveTool = onUpdateActiveTool;\n this.height = height;\n this.uploadImageToS3 = uploadImageToS3;\n this.userId = userId;\n this.canvasId = canvasId;\n this.publish = onPublish;\n this.userType = userType;\n this.renderAs = renderAs;\n this.debouncedViewportChange = debounce(this.onViewPortChange, 300);\n this.updateCanvasConfigChange = updateCanvasConfig;\n onSubscribe?.(this.canvasId, this.update);\n }\n\n async create({ canvasElementRef, canvasConfig, canvasSetting, initialData }: ICreateOptions) {\n if (!canvasElementRef.current) {\n throw new Error('PolyCanvas: Div Element Not found for canvas');\n }\n this.polycanvas = await window.Polypad.create(canvasElementRef.current, {\n initial: {\n options: canvasConfig,\n },\n ...canvasSetting,\n imageUpload:\n this.renderAs === 'whiteboard' && this.userType === 'TEACHER' && this.uploadImageToS3\n ? this.uploadImageToS3\n : undefined,\n });\n\n if (this.renderAs === 'whiteboard' && this.userType === 'TEACHER') {\n this.polycanvas.toggleSidebar(false);\n this.polycanvas.bindKeyboardEvents({});\n\n removeTileButton(canvasElementRef);\n this.polycanvas.on('viewport', this.debouncedViewportChange);\n }\n\n removeMask(canvasElementRef);\n this.polycanvas.on('change', this.onChange);\n if (initialData) {\n this.update(initialData);\n }\n }\n\n private publishToChannel = (payload: TCueCanvasChangeDataObject) => {\n if (!this.publish) return;\n\n this.publish({\n eventName: 'cue_canvas_changed',\n eventPayload: {\n data: payload,\n height: this.height,\n userId: this.userId,\n responseId: this.canvasId,\n },\n });\n };\n\n private onChange = (e: unknown) => {\n const data = e as TCueCanvasChangeData;\n const payload = Object.fromEntries(data.entries());\n\n if (checkTextOrEquationTool(payload)) {\n this.onUpdateActiveTool('move');\n }\n\n this.publishToChannel(payload);\n };\n\n private undo = () => {\n if (!this.polycanvas) {\n return;\n }\n\n const data = this.polycanvas.undo() as TCueCanvasChangeData;\n\n if (!data) {\n return;\n }\n\n const undoData = getReverseMap(data);\n\n this.onChange(undoData);\n };\n\n private redo = () => {\n if (!this.polycanvas) {\n return;\n }\n\n const data = this.polycanvas.redo() as TCueCanvasChangeData;\n\n if (!data) {\n return;\n }\n\n this.onChange(data);\n };\n\n clearCanvas = () => {\n if (this.polycanvas) {\n this.polycanvas.clear();\n }\n };\n\n private zoomIn = () => {\n if (!this.polycanvas) return;\n\n const viewPort = this.polycanvas.getViewport();\n\n this.polycanvas.setViewport(viewPort.x, viewPort.y, viewPort.zoom * 1.1);\n };\n\n private zoomOut = () => {\n if (!this.polycanvas) return;\n\n const viewPort = this.polycanvas.getViewport();\n\n this.polycanvas.setViewport(viewPort.x, viewPort.y, viewPort.zoom * 0.9);\n };\n\n getCanvasAsImage = async () => {\n if (!this.polycanvas) return;\n\n const image = await this.polycanvas.image(3000, 3000, 'png');\n\n return image;\n };\n\n private downloadCanvasAsImage = async () => {\n if (!this.polycanvas) return;\n\n const image = await this.polycanvas.image(3000, 3000, 'png');\n\n if (!image) return;\n\n const downloadLink = document.createElement('a');\n\n downloadLink.href = image;\n downloadLink.download = `canvas-drawing-${Date.now()}.png`;\n downloadLink.click();\n };\n\n private onViewPortChange = (e: IViewport): void => {\n if (!this.updateCanvasConfigChange) return;\n\n this.updateCanvasConfigChange({ dimesion: e });\n };\n\n private openFileUpload = (): void => {\n if (!this.fileInput) {\n this.fileInput = document.createElement('input');\n this.fileInput.type = 'file';\n this.fileInput.accept = 'image/*';\n this.fileInput.style.display = 'none';\n this.fileInput.onchange = this.onSelectImage;\n document.body.appendChild(this.fileInput);\n }\n\n this.fileInput.click();\n };\n\n addImageToCanvas = (imageUrl: string): void => {\n if (!this.polycanvas) return;\n\n const viewPort = this.polycanvas.getViewport();\n const imgJson = {\n name: 'image',\n href: imageUrl,\n x: viewPort.x + 24,\n y: viewPort.y + 24,\n width: 500,\n };\n\n const key = this.polycanvas.add({\n ...imgJson,\n });\n\n this.publishToChannel({\n [key]: [undefined, { ...imgJson, status: 'locked' }],\n });\n };\n\n private onSelectImage = async (event: Event): Promise<void> => {\n const target = event.target as HTMLInputElement;\n const file = target.files?.[0];\n\n if (!file || !this.polycanvas || !this.uploadImageToS3) return;\n\n const imageUrl = await this.uploadImageToS3(file);\n\n if (imageUrl === 'error') {\n return;\n }\n\n this.addImageToCanvas(imageUrl);\n\n target.value = '';\n };\n\n private updateCanvas = ({ data, userId }: IActionData) => {\n const canEditStroke = this.userType === 'TEACHER' || userId === this.userId;\n\n Object.entries(data).forEach(([key, value]) => {\n if (!value[0] && value[1]) {\n if ('name' in value[1] && value[1].name === 'image') {\n value[1].status = this.userType === 'STUDENT' ? 'locked' : undefined; // Lock only images for students\n }\n this.polycanvas?.add({ ...value[1], cannotEdit: !canEditStroke }, key);\n } else if (value[0] && !value[1]) {\n this.polycanvas?.delete(key);\n } else if (value[0] && value[1]) {\n this.polycanvas?.update(key, { ...value[1] });\n }\n });\n };\n\n toggleTiles = (val: boolean) => {\n this.polycanvas?.toggleSidebar(val);\n };\n\n setViewPort = ({ x, y, zoom }: IViewport) => {\n if (this.polycanvas) {\n const cv = this.polycanvas?.getViewport();\n\n if (cv.x === x && cv.y === y && cv.zoom === zoom) {\n return; // No change needed\n }\n\n this.polycanvas.setViewport(x, y, zoom);\n }\n };\n\n resetViewPort = () => {\n if (this.polycanvas) {\n this.polycanvas.resetViewport();\n }\n };\n\n changeGrid = (gridName: TCueCanvasGridName) => {\n if (!this.polycanvas || this.gridName === gridName) return;\n\n this.polycanvas.setOptions({\n grid: gridName,\n });\n this.gridName = gridName;\n if (this.updateCanvasConfigChange) {\n this.updateCanvasConfigChange({ gridName: gridName });\n }\n };\n\n lockSelectedTiles = () => {\n const { tiles: allTiles } = this.polycanvas?.serialize() || {};\n const selectedItems = this.polycanvas?.getSelection() || [];\n\n if (selectedItems.length > 0 && allTiles) {\n const lockedTiles: TCueCanvasChangeDataObject = {};\n\n selectedItems.forEach(key => {\n if (!allTiles[key]?.name) return;\n\n const updatedJson = { ...allTiles[key], status: 'locked' as const };\n\n this.polycanvas?.update(key, updatedJson);\n if (allTiles[key]?.name) lockedTiles[key] = [allTiles[key], updatedJson];\n });\n\n this.publishToChannel(lockedTiles);\n }\n };\n\n unlockAllTiles = () => {\n if (!this.polycanvas) return;\n\n const { tiles: allTiles } = this.polycanvas.serialize();\n const unlockedTiles: TCueCanvasChangeDataObject = {};\n\n if (allTiles && Object.entries(allTiles).length > 0) {\n Object.entries(allTiles).forEach(([key, item]) => {\n if (item.status !== 'locked') return;\n\n const updatedJson = { ...item, status: undefined };\n\n this.polycanvas?.update(key, updatedJson);\n unlockedTiles[key] = [item, updatedJson];\n });\n\n this.publishToChannel(unlockedTiles);\n }\n };\n\n replaceCanvas = (data: IReplaceCanvas) => {\n if (!this.polycanvas) return;\n\n const { data: canvasData, gridName } = data;\n\n this.polycanvas.clear();\n if (gridName) {\n this.changeGrid(gridName);\n }\n\n Object.entries(canvasData).forEach(([key, value]) => {\n if (!value[0] && value[1]) {\n this.polycanvas?.add({ ...value[1] }, key);\n\n return;\n }\n });\n\n this.publishToChannel(canvasData);\n };\n\n setTool = (tool: TCueCanvasTool) => {\n if (this.polycanvas) {\n const [currTool, currSubTool] = getToolAndSubtool(tool);\n\n switch (currTool) {\n case 'clearAll':\n this.clearCanvas();\n break;\n case 'home':\n this.resetViewPort();\n break;\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n case 'lock':\n this.lockSelectedTiles();\n break;\n case 'unlock':\n this.unlockAllTiles();\n break;\n case 'zoomIn':\n this.zoomIn();\n break;\n case 'zoomOut':\n this.zoomOut();\n break;\n case 'upload':\n this.openFileUpload();\n break;\n case 'download':\n this.downloadCanvasAsImage();\n break;\n case 'grid':\n break;\n default:\n this.polycanvas.setTool(currTool, currSubTool);\n }\n }\n };\n\n /**\n * The `update` method is called in two cases:\n * 1. When receiving initial data to update the canvas content.\n * 2. When receiving strokes from other peers to update the canvas content.\n * Each item can contain multiple actions, which are applied to the canvas.\n *\n * The method checks if the payload is an array or a single object.\n * If it's an array, it iterates over each item and updates the canvas accordingly.\n * If it's a single object, it directly updates the canvas.\n *\n * Additionally, if the payload contains a height greater than the current height of the canvas, the `updateHeight` method is called to update the canvas height.\n */\n update = (payload: IActionData | IActionData[]) => {\n if (Array.isArray(payload)) {\n const heights = payload.map(data => data.height).filter(Boolean);\n const maxHeight = Math.max(...heights);\n\n if (maxHeight > this.height) {\n this.updateHeight(maxHeight);\n }\n payload.forEach(item => this.updateCanvas(item));\n } else {\n if (payload.height > this.height) {\n this.updateHeight(payload.height);\n }\n this.updateCanvas(payload);\n }\n };\n\n setColor = (color: string) => {\n if (this.polycanvas) {\n this.polycanvas.setColor(color);\n }\n };\n\n updateHeight = (height: number) => {\n this.height = height;\n this.onUpdateHeight?.(height);\n };\n\n destroy = () => {\n if (this.polycanvas) {\n this.polycanvas.off('change', this.onChange);\n this.polycanvas.destroy();\n this.debouncedViewportChange.cancel();\n\n if (this.renderAs === 'whiteboard' && this.userType === 'TEACHER') {\n this.polycanvas.off('viewport', this.debouncedViewportChange);\n }\n this.polycanvas = undefined;\n\n if (this.fileInput && this.fileInput.parentNode) {\n this.fileInput.parentNode.removeChild(this.fileInput);\n this.fileInput = null;\n }\n }\n };\n}\n"],"names":["CueCanvasCore","onPublish","onSubscribe","onUpdateActiveTool","onUpdateHeight","uploadImageToS3","height","userId","canvasId","userType","renderAs","updateCanvasConfig","__publicField","payload","e","checkTextOrEquationTool","data","undoData","getReverseMap","viewPort","image","downloadLink","imageUrl","imgJson","key","event","target","file","_a","canEditStroke","value","_b","_c","val","x","y","zoom","cv","gridName","allTiles","selectedItems","lockedTiles","updatedJson","unlockedTiles","item","canvasData","tool","currTool","currSubTool","getToolAndSubtool","heights","maxHeight","color","debounce","canvasElementRef","canvasConfig","canvasSetting","initialData","removeTileButton","removeMask"],"mappings":"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"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { createGetAPI as r } from "@cuemath/rest-api";
|
2
|
+
import { BASE_URL_V3 as n } from "../../../../constants/api.js";
|
3
|
+
const { useGet: m, invalidate: c } = r({
|
4
|
+
getURL: (e, u, t) => {
|
5
|
+
const { milestone_state_group: s, course_stream: o } = t;
|
6
|
+
return `${n}/user-milestones/users/${e}/course-streams/${o}/${s}/count`;
|
7
|
+
}
|
8
|
+
});
|
9
|
+
export {
|
10
|
+
c as invalidatePastMilestoneCount,
|
11
|
+
m as useGetPastMilestoneCount
|
12
|
+
};
|
13
|
+
//# sourceMappingURL=get-past-milestone-count.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-past-milestone-count.js","sources":["../../../../../src/features/milestone/milestone-list-container/api/get-past-milestone-count.ts"],"sourcesContent":["import type { TCourseStream } from '../../create/milestone-create-types';\nimport type { IMilestoneData } from '../milestone-list/milestone-list-types';\n\nimport { createGetAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V3 } from '../../../../constants/api';\n\ntype TQuery = {\n milestone_state_group: 'ALL' | 'DRAFT' | 'STUDENT_ALL' | 'LIVE' | 'STUDENT_LIVE' | 'INACTIVE';\n student_id: string;\n course_stream: TCourseStream;\n};\n\nconst { useGet: useGetPastMilestoneCount, invalidate: invalidatePastMilestoneCount } = createGetAPI<\n IMilestoneData,\n void,\n TQuery\n>({\n getURL: (studentId, _, query) => {\n const { milestone_state_group, course_stream } = query;\n\n return `${BASE_URL_V3}/user-milestones/users/${studentId}/course-streams/${course_stream}/${milestone_state_group}/count`;\n },\n});\n\nexport { useGetPastMilestoneCount, invalidatePastMilestoneCount };\n"],"names":["useGetPastMilestoneCount","invalidatePastMilestoneCount","createGetAPI","studentId","_","query","milestone_state_group","course_stream","BASE_URL_V3"],"mappings":";;AAaA,MAAM,EAAE,QAAQA,GAA0B,YAAYC,EAAA,IAAiCC,EAIrF;AAAA,EACA,QAAQ,CAACC,GAAWC,GAAGC,MAAU;AACzB,UAAA,EAAE,uBAAAC,GAAuB,eAAAC,EAAkB,IAAAF;AAEjD,WAAO,GAAGG,CAAW,0BAA0BL,CAAS,mBAAmBI,CAAa,IAAID,CAAqB;AAAA,EACnH;AACF,CAAC;"}
|
package/dist/index.d.ts
CHANGED
@@ -2477,6 +2477,8 @@ export declare const invalidateMilestoneResources: (id: string, query?: void | u
|
|
2477
2477
|
|
2478
2478
|
export declare const invalidateMilestonesData: (query?: TQuery | undefined) => void;
|
2479
2479
|
|
2480
|
+
export declare const invalidatePastMilestoneCount: (id: string, query?: void | undefined, allIdsInvalid?: boolean) => void;
|
2481
|
+
|
2480
2482
|
export declare const invalidateTestHelpData: (id: string, query?: void | undefined, allIdsInvalid?: boolean) => void;
|
2481
2483
|
|
2482
2484
|
declare interface IOnChapterExitWarningProps {
|
@@ -5388,6 +5390,12 @@ declare type TQuery = {
|
|
5388
5390
|
course_stream: TCourseStream;
|
5389
5391
|
};
|
5390
5392
|
|
5393
|
+
declare type TQuery_2 = {
|
5394
|
+
milestone_state_group: 'ALL' | 'DRAFT' | 'STUDENT_ALL' | 'LIVE' | 'STUDENT_LIVE' | 'INACTIVE';
|
5395
|
+
student_id: string;
|
5396
|
+
course_stream: TCourseStream;
|
5397
|
+
};
|
5398
|
+
|
5391
5399
|
declare type TQuestionByQuestionOverviewList = {
|
5392
5400
|
section: string;
|
5393
5401
|
question_no: number;
|
@@ -5766,6 +5774,20 @@ export declare const useGetMilestoneResources: (initialId?: string, initialQuery
|
|
5766
5774
|
} & Record<string, unknown>) | undefined;
|
5767
5775
|
};
|
5768
5776
|
|
5777
|
+
export declare const useGetPastMilestoneCount: (initialId?: string, initialQuery?: void | undefined) => {
|
5778
|
+
get: (id: string, query: void, meta: TQuery_2) => Promise<void>;
|
5779
|
+
resource: ResourceModel<IMilestoneData> | undefined;
|
5780
|
+
data: IMilestoneData | undefined;
|
5781
|
+
permissions: Record<string, unknown> | undefined;
|
5782
|
+
isProcessing: boolean;
|
5783
|
+
isProcessed: boolean;
|
5784
|
+
isProcessingFailed: boolean;
|
5785
|
+
isStale: boolean;
|
5786
|
+
error: ({
|
5787
|
+
message?: string | undefined;
|
5788
|
+
} & Record<string, unknown>) | undefined;
|
5789
|
+
};
|
5790
|
+
|
5769
5791
|
export declare const useGetTestHelpData: (initialId?: string, initialQuery?: void | undefined) => {
|
5770
5792
|
get: (id: string, query: void, meta: {
|
5771
5793
|
studentId: string;
|
package/dist/index.js
CHANGED
@@ -2,17 +2,17 @@ import { default as r } from "./features/ui/grade-selector/grade-selector.js";
|
|
2
2
|
import { default as a } from "./features/ui/stepper/stepper.js";
|
3
3
|
import { ILLUSTRATIONS as s } from "./assets/illustrations/illustrations.js";
|
4
4
|
import { IMAGES as p } from "./assets/images/images.js";
|
5
|
-
import { LOTTIE as
|
5
|
+
import { LOTTIE as m } from "./assets/lottie/lottie.js";
|
6
6
|
import { default as x } from "./assets/line-icons/icons/alert.js";
|
7
7
|
import { default as c } from "./assets/line-icons/icons/back.js";
|
8
|
-
import { default as
|
8
|
+
import { default as I } from "./assets/line-icons/icons/bin.js";
|
9
9
|
import { default as S } from "./assets/line-icons/icons/bin2.js";
|
10
10
|
import { default as C } from "./assets/line-icons/icons/book-closed.js";
|
11
|
-
import { default as
|
11
|
+
import { default as P } from "./assets/line-icons/icons/book.js";
|
12
12
|
import { default as h } from "./assets/line-icons/icons/book2.js";
|
13
13
|
import { default as R } from "./assets/line-icons/icons/bookmark.js";
|
14
14
|
import { default as N } from "./assets/line-icons/icons/bulb.js";
|
15
|
-
import { default as
|
15
|
+
import { default as O } from "./assets/line-icons/icons/bulb2.js";
|
16
16
|
import { default as D } from "./assets/line-icons/icons/calendar.js";
|
17
17
|
import { default as g } from "./assets/line-icons/icons/check.js";
|
18
18
|
import { default as U } from "./assets/line-icons/icons/check2.js";
|
@@ -29,17 +29,17 @@ import { default as re } from "./assets/line-icons/icons/draft.js";
|
|
29
29
|
import { default as ae } from "./assets/line-icons/icons/drag.js";
|
30
30
|
import { default as se } from "./assets/line-icons/icons/edit.js";
|
31
31
|
import { default as pe } from "./assets/line-icons/icons/edit2.js";
|
32
|
-
import { default as
|
32
|
+
import { default as me } from "./assets/line-icons/icons/edit-star.js";
|
33
33
|
import { default as xe } from "./assets/line-icons/icons/eraser.js";
|
34
34
|
import { default as ce } from "./assets/line-icons/icons/eye.js";
|
35
|
-
import { default as
|
35
|
+
import { default as Ie } from "./assets/line-icons/icons/eye2.js";
|
36
36
|
import { default as Se } from "./assets/line-icons/icons/exclamation.js";
|
37
37
|
import { default as Ce } from "./assets/line-icons/icons/hand.js";
|
38
|
-
import { default as
|
38
|
+
import { default as Pe } from "./assets/line-icons/icons/help.js";
|
39
39
|
import { default as he } from "./assets/line-icons/icons/highlighter.js";
|
40
40
|
import { default as Re } from "./assets/line-icons/icons/home.js";
|
41
41
|
import { default as Ne } from "./assets/line-icons/icons/image.js";
|
42
|
-
import { default as
|
42
|
+
import { default as Oe } from "./assets/line-icons/icons/info.js";
|
43
43
|
import { default as De } from "./assets/line-icons/icons/info2.js";
|
44
44
|
import { default as ge } from "./assets/line-icons/icons/left.js";
|
45
45
|
import { default as Ue } from "./assets/line-icons/icons/lock.js";
|
@@ -56,16 +56,16 @@ import { default as ro } from "./assets/line-icons/icons/pointer.js";
|
|
56
56
|
import { default as ao } from "./assets/line-icons/icons/play.js";
|
57
57
|
import { default as so } from "./assets/line-icons/icons/play2.js";
|
58
58
|
import { default as po } from "./assets/line-icons/icons/plus.js";
|
59
|
-
import { default as
|
59
|
+
import { default as mo } from "./assets/line-icons/icons/plus2.js";
|
60
60
|
import { default as no } from "./assets/line-icons/icons/practice.js";
|
61
|
-
import { default as
|
61
|
+
import { default as io } from "./assets/line-icons/icons/progress.js";
|
62
62
|
import { default as To } from "./assets/line-icons/icons/question.js";
|
63
63
|
import { default as Eo } from "./assets/line-icons/icons/question-letter.js";
|
64
64
|
import { default as Ao } from "./assets/line-icons/icons/redo.js";
|
65
|
-
import { default as
|
65
|
+
import { default as _o } from "./assets/line-icons/icons/right.js";
|
66
66
|
import { default as Lo } from "./assets/line-icons/icons/ruler.js";
|
67
67
|
import { default as ko } from "./assets/line-icons/icons/search.js";
|
68
|
-
import { default as
|
68
|
+
import { default as Mo } from "./assets/line-icons/icons/sheet.js";
|
69
69
|
import { default as Ho } from "./assets/line-icons/icons/star.js";
|
70
70
|
import { default as Go } from "./assets/line-icons/icons/skip-colored.js";
|
71
71
|
import { default as yo } from "./assets/line-icons/icons/skip.js";
|
@@ -82,17 +82,17 @@ import { default as or } from "./assets/line-icons/icons/unlock2.js";
|
|
82
82
|
import { default as tr } from "./assets/line-icons/icons/up.js";
|
83
83
|
import { default as fr } from "./assets/line-icons/icons/user.js";
|
84
84
|
import { default as lr } from "./assets/line-icons/icons/user2.js";
|
85
|
-
import { default as
|
85
|
+
import { default as ur, default as mr } from "./assets/line-icons/icons/sketch.js";
|
86
86
|
import { default as xr } from "./assets/line-icons/icons/back2.js";
|
87
87
|
import { default as cr } from "./assets/line-icons/icons/chevron-right.js";
|
88
|
-
import { default as
|
88
|
+
import { default as Ir } from "./assets/line-icons/icons/chevron-left.js";
|
89
89
|
import { default as Sr } from "./assets/line-icons/icons/chevron-down.js";
|
90
90
|
import { default as Cr } from "./assets/line-icons/icons/game.js";
|
91
|
-
import { default as
|
91
|
+
import { default as Pr } from "./assets/line-icons/icons/tutoring.js";
|
92
92
|
import { default as hr } from "./assets/line-icons/icons/chat.js";
|
93
93
|
import { default as Rr } from "./assets/line-icons/icons/cuemath-logo.js";
|
94
94
|
import { default as Nr } from "./assets/line-icons/icons/next2.js";
|
95
|
-
import { AutoPlayPermissionProvider as
|
95
|
+
import { AutoPlayPermissionProvider as Or } from "./features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.js";
|
96
96
|
import { default as Dr } from "./features/hooks/use-zoom-disable.js";
|
97
97
|
import { default as gr } from "./features/hooks/use-force-reload.js";
|
98
98
|
import { default as Ur } from "./features/ui/accordion-section/accordion-section.js";
|
@@ -109,17 +109,17 @@ import { default as rt } from "./features/ui/error/error.js";
|
|
109
109
|
import { default as at } from "./features/ui/inputs/checkbox-input/checkbox-input.js";
|
110
110
|
import { default as st } from "./features/ui/inputs/checkbox-input-list/checkbox-input-list.js";
|
111
111
|
import { default as pt } from "./features/ui/inputs/radio-input/radio-input.js";
|
112
|
-
import { default as
|
112
|
+
import { default as mt } from "./features/ui/inputs/select-input/select-input.js";
|
113
113
|
import { default as xt } from "./features/ui/inputs/searchable-select-input/searchable-select-input.js";
|
114
114
|
import { default as ct } from "./features/ui/inputs/google-places-search-input/google-places-search-input.js";
|
115
|
-
import { default as
|
115
|
+
import { default as It } from "./features/ui/inputs/text-input/text-input.js";
|
116
116
|
import { default as St } from "./features/ui/inputs/cascading-select-input/cascading-select-input.js";
|
117
117
|
import { default as Ct } from "./features/ui/inputs/num-range-input/num-range-input.js";
|
118
|
-
import { default as
|
118
|
+
import { default as Pt } from "./features/ui/inputs/percentile-input/percentile-input.js";
|
119
119
|
import { default as ht } from "./features/ui/selection-cards/selection-cards.js";
|
120
120
|
import { default as Rt } from "./features/ui/layout/flex-view.js";
|
121
121
|
import { default as Nt } from "./features/ui/loader/app-loader/app-loader.js";
|
122
|
-
import { CircularLoader as
|
122
|
+
import { CircularLoader as Ot } from "./features/ui/loader/circular-loader/circular-loader.js";
|
123
123
|
import { default as Dt } from "./features/ui/radio-cards/radio-cards.js";
|
124
124
|
import { default as gt } from "./features/ui/section-list/section-list.js";
|
125
125
|
import { default as Ut } from "./features/ui/text/text.js";
|
@@ -135,17 +135,17 @@ import { default as oa } from "./features/ui/tab/tab.js";
|
|
135
135
|
import { default as ta } from "./features/ui/streak-icon/streak-icon.js";
|
136
136
|
import { default as fa } from "./features/ui/separator/separator.js";
|
137
137
|
import { default as la } from "./features/ui/video/index.js";
|
138
|
-
import { default as
|
138
|
+
import { default as ua } from "./features/ui/perfect-hits/perfect-hits.js";
|
139
139
|
import { default as da } from "./features/ui/image/image.js";
|
140
140
|
import { default as na } from "./features/ui/animated-arc/animated-arc.js";
|
141
|
-
import { default as
|
141
|
+
import { default as ia } from "./features/auth/comps/auth-static-panel/auth-static-panel.js";
|
142
142
|
import { default as Ta } from "./features/auth/comps/auth-page-layout/auth-page-layout.js";
|
143
143
|
import { default as Ea } from "./features/auth/comps/overlay-loader/overlay-loader.js";
|
144
144
|
import { default as Aa } from "./features/auth/comps/tabs/tabs.js";
|
145
|
-
import { default as
|
145
|
+
import { default as _a } from "./features/auth/comps/input-status-icon/input-status-icon.js";
|
146
146
|
import { default as La } from "./features/auth/comps/resend-otp/resend-otp.js";
|
147
147
|
import { default as ka } from "./features/auth/signup/user-type-selector/user-type-selector.js";
|
148
|
-
import { default as
|
148
|
+
import { default as Ma } from "./features/auth/signup/claim-user-account/claim-user-account.js";
|
149
149
|
import { default as Ha } from "./features/auth/signup/custom-input-field/grade-input/grade-input.js";
|
150
150
|
import { default as Ga } from "./features/auth/signup/custom-input-field/date-picker-input/date-picker-input.js";
|
151
151
|
import { default as ya } from "./features/auth/signup/custom-input-field/custom-input-field.js";
|
@@ -162,17 +162,17 @@ import { default as of } from "./features/auth/forgot-password/user-identifier-f
|
|
162
162
|
import { AUTH_TABS as tf } from "./features/auth/login/login-constants.js";
|
163
163
|
import { AuthApiErrorCode as ff } from "./features/auth/signup/signup-constants.js";
|
164
164
|
import { PLATFORM_EVENTS_STUDENT as lf } from "./features/analytics-events/platform-events-student.js";
|
165
|
-
import { PLATFORM_EVENTS_TEACHER as
|
165
|
+
import { PLATFORM_EVENTS_TEACHER as uf } from "./features/analytics-events/platform-events-teacher.js";
|
166
166
|
import { WHITELIST_EVENTS as df } from "./features/analytics-events/whitelist-events.js";
|
167
167
|
import { default as nf } from "./features/blockers/multi-tab-blocker/use-is-tab-blocked.js";
|
168
168
|
import { default as If } from "./features/blockers/multi-tab-blocker/multi-tab-blocker.js";
|
169
169
|
import { default as Sf } from "./features/chapters/chapter/chapter.js";
|
170
170
|
import { default as Cf } from "./features/chapters/chapters-list/chapters-list.js";
|
171
|
-
import { default as
|
171
|
+
import { default as Pf } from "./features/chapters/lpar-chapter/lpar-chapter.js";
|
172
172
|
import { default as hf } from "./features/chapters/lpar-milestone-chapter/lpar-milestone-chapter.js";
|
173
173
|
import { default as Rf } from "./features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-summary/sat-sheet-summary.js";
|
174
174
|
import { checkIfPPTNodeType as Nf } from "./features/chapters/lpar-chapter/utils/index.js";
|
175
|
-
import { default as
|
175
|
+
import { default as Of } from "./features/chapters-v2/chapter-details/chapter-details.js";
|
176
176
|
import { invalidateGetChapterDetails as Df } from "./features/chapters-v2/api/chapter.js";
|
177
177
|
import { GAME_LAUNCHER_ASSET_PADDING as gf } from "./features/circle-games/game-launcher/comps/segmented-game-card/constants.js";
|
178
178
|
import { GAME_LAUNCHER_SIZE as Uf } from "./features/circle-games/game-launcher/comps/card-container/constants.js";
|
@@ -189,16 +189,16 @@ import { ProjectType as rs } from "./features/circle-games/games/web-view/enums/
|
|
189
189
|
import { PlayerType as as } from "./features/circle-games/games/web-view/enums/player-type-enum.js";
|
190
190
|
import { IStatsToAwardErrorCode as ss } from "./features/circle-games/games/web-view/web-view-types.js";
|
191
191
|
import { CIRCLE_ONBOARDING_ANALYTICS_STEPS as ps } from "./features/circle-games/enum/circle-onboarding-steps.js";
|
192
|
-
import { CIRCLE_ACTION_IDS as
|
192
|
+
import { CIRCLE_ACTION_IDS as ms } from "./features/circle-games/enum/circle-action-ids.js";
|
193
193
|
import { GameLauncher as xs } from "./features/circle-games/game-launcher/game-launcher.js";
|
194
194
|
import { useGetCircleHomeDetailsDal as cs } from "./features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js";
|
195
|
-
import { Leaderboard as
|
195
|
+
import { Leaderboard as Is } from "./features/circle-games/leaderboard/leaderboard.js";
|
196
196
|
import { BackgroundImage as Ss, CircularSteps as Es } from "./features/circle-games/sign-up/comp/circular-steps/circular-steps.js";
|
197
197
|
import { SplashScreen as As } from "./features/circle-games/sign-up/comp/splash-screen/splash-screen.js";
|
198
|
-
import { SignUp as
|
198
|
+
import { SignUp as _s } from "./features/circle-games/sign-up/sign-up.js";
|
199
199
|
import { default as Ls } from "./features/cue-canvas/cue-canvas-provider.js";
|
200
200
|
import { default as ks } from "./features/cue-canvas/toolbar/toolbar.js";
|
201
|
-
import { default as
|
201
|
+
import { default as Ms } from "./features/cue-canvas/cue-canvas.js";
|
202
202
|
import { default as Hs } from "./features/cue-canvas/hooks/use-canvas-sync-broker.js";
|
203
203
|
import { default as Gs } from "./features/cue-canvas/sidebar/sidebar.js";
|
204
204
|
import { default as ys } from "./features/cue-canvas/bottombar/homework-controls.js";
|
@@ -215,17 +215,17 @@ import { default as rl } from "./features/homework/hw-card-list/hw-card-list.js"
|
|
215
215
|
import { invalidateHomeworks as al } from "./features/homework/hw-card-list/api/get-homeworks.js";
|
216
216
|
import { useAutoPlayPermission as sl } from "./features/hooks/use-auto-play-permission/use-auto-play-permission.js";
|
217
217
|
import { JOURNEY_ID_STUDENT as pl } from "./features/journey/journey-id/journey-id-student.js";
|
218
|
-
import { JOURNEY_ID_TEACHER as
|
218
|
+
import { JOURNEY_ID_TEACHER as ml } from "./features/journey/journey-id/journey-id-teacher.js";
|
219
219
|
import { useJourney as xl } from "./features/journey/use-journey/use-journey.js";
|
220
220
|
import { useGetEligibleJourneysViaRoute as cl } from "./features/journey/hooks/use-get-eligible-journeys-via-route.js";
|
221
|
-
import { JourneyProvider as
|
221
|
+
import { JourneyProvider as Il } from "./features/journey/use-journey/journey-context-provider.js";
|
222
222
|
import { IndicatorType as Sl } from "./features/journey/use-journey/constants.js";
|
223
223
|
import { Coachmark as Cl } from "./features/journey/comps/coachmark/coachmark.js";
|
224
|
-
import { useHomePageJourney as
|
224
|
+
import { useHomePageJourney as Pl } from "./features/journey/hooks/use-home-page-journey/use-home-page-journey.js";
|
225
225
|
import { useChapterPageJourney as hl } from "./features/journey/hooks/use-chapter-journey.js";
|
226
226
|
import { default as Rl } from "./features/maintenance/maintenance.js";
|
227
227
|
import { default as Nl } from "./features/milestone/create/submit-modal/submit-modal.js";
|
228
|
-
import { default as
|
228
|
+
import { default as Ol } from "./features/milestone/create/comps/confirmation-modals/goal-creation-confirmation.js";
|
229
229
|
import { default as Dl } from "./features/milestone/create/comps/confirmation-modals/chapter-clearance-confirmation.js";
|
230
230
|
import { default as gl } from "./features/milestone/create/milestone-create-container.js";
|
231
231
|
import { default as Ul } from "./features/milestone/edit/goal-drafts/goal-draft-edit-container.js";
|
@@ -241,33 +241,34 @@ import { default as ep } from "./features/milestone/start/milestone-start.js";
|
|
241
241
|
import { default as rp } from "./features/milestone/milestone-tests/tests-creation/tests-creation.js";
|
242
242
|
import { default as ap } from "./features/milestone/milestone-resources/resources-assign/resources-assign.js";
|
243
243
|
import { ACHIEVEMENT_ACTIONS as sp, STAGES as lp } from "./features/milestone/outcome/milestone-outcome-constants.js";
|
244
|
-
import { invalidateMilestonesData as
|
245
|
-
import {
|
246
|
-
import {
|
247
|
-
import {
|
248
|
-
import { default as
|
249
|
-
import {
|
250
|
-
import {
|
251
|
-
import {
|
252
|
-
import {
|
253
|
-
import {
|
254
|
-
import {
|
255
|
-
import { default as
|
256
|
-
import { default as
|
257
|
-
import { default as
|
258
|
-
import {
|
259
|
-
import {
|
260
|
-
import {
|
261
|
-
import { default as
|
262
|
-
import {
|
263
|
-
import {
|
264
|
-
import {
|
265
|
-
import { default as
|
266
|
-
import { default as
|
267
|
-
import { default as
|
268
|
-
import { default as
|
269
|
-
import { default as
|
270
|
-
import { default as
|
244
|
+
import { invalidateMilestonesData as up, useGetAllMilestonesdata as mp } from "./features/milestone/milestone-list-container/api/get-milestones.js";
|
245
|
+
import { invalidatePastMilestoneCount as xp, useGetPastMilestoneCount as np } from "./features/milestone/milestone-list-container/api/get-past-milestone-count.js";
|
246
|
+
import { invalidateTestHelpData as ip, useGetTestHelpData as Ip } from "./features/milestone/milestone-list-container/api/get-tests-list.js";
|
247
|
+
import { invalidateMilestoneResources as Sp, useGetMilestoneResources as Ep } from "./features/milestone/milestone-list-container/api/get-milestone-resources.js";
|
248
|
+
import { default as Ap } from "./features/pointer-sync/pointer.js";
|
249
|
+
import { default as _p } from "./features/pointer-sync/hooks/use-pointer-sync.js";
|
250
|
+
import { DigitalMeter as Lp } from "./features/post-game-stats/digital-meter/digital-meter.js";
|
251
|
+
import { EPostGameStat as kp } from "./features/post-game-stats/enums/post-game-stats-enum.js";
|
252
|
+
import { PostGameStats as Mp } from "./features/post-game-stats/post-game-stats.js";
|
253
|
+
import { default as Hp } from "./features/recent-chapters/recent-chapters.js";
|
254
|
+
import { SENTRY_DENIED_URLS as Gp, SENTRY_IGNORED_ERRORS as gp } from "./features/sentry/constants/ignored.js";
|
255
|
+
import { default as Up } from "./features/sheet-tools/desmos-calculator/desmos-calculator.js";
|
256
|
+
import { default as vp } from "./features/sheet-tools/tool-header/tool-header.js";
|
257
|
+
import { default as wp } from "./features/sheets/sheets-list/sheets-list.js";
|
258
|
+
import { default as Vp } from "./features/sheets/reference-sheet/reference-sheet.js";
|
259
|
+
import { WORKSHEET_V3_NODE_TYPES as Yp } from "./features/sheets/utils/is-v3-worksheet.js";
|
260
|
+
import { COMPLETED_SHEET_STATE as Qp, NODE_LABELS as Kp, NODE_SUB_GROUP as jp, NODE_TYPE as Zp, PYTHON_NODE_TYPES as qp, REWARDS_LIST as zp, SHEET_ACTIONS as Xp, SHEET_ATTEMPT_LOCATION as $p, SHEET_ATTEMPT_LOCATION_MAP as eu, SHEET_ATTEMPT_STATE as ou, SHEET_DATA_TYPE as ru, SHEET_STATE as tu } from "./features/sheets/constants/sheet.js";
|
261
|
+
import { default as fu } from "./features/student-details/student-details.js";
|
262
|
+
import { default as lu } from "./features/utils/load-script.js";
|
263
|
+
import { ACTION_BAR_HEIGHT as uu, QUESTIONS_GAP as mu, QUESTION_WIDTH as du, TOP_NAVIGATION_HEIGHT as xu } from "./features/worksheet/worksheet/constants.js";
|
264
|
+
import { isOkayTypeQuestion as cu } from "./features/worksheet/worksheet/worksheet-helpers.js";
|
265
|
+
import { default as Iu } from "./features/worksheet/worksheet/worksheet-container.js";
|
266
|
+
import { default as Su } from "./features/worksheet/worksheet-preview/worksheet-preview.js";
|
267
|
+
import { default as Cu } from "./features/worksheet/worksheet/worksheet-permissions/sheet-locked.js";
|
268
|
+
import { default as Pu } from "./features/worksheet/worksheet/worksheet-permissions/error.js";
|
269
|
+
import { default as hu } from "./features/worksheet/learnosity-preloader/learnosity-preloader.js";
|
270
|
+
import { default as Ru } from "./features/worksheet/learnosity-preloader/use-is-learnosity-loaded.js";
|
271
|
+
import { default as Nu } from "./features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js";
|
271
272
|
export {
|
272
273
|
sp as ACHIEVEMENT_ACTIONS,
|
273
274
|
tf as AUTH_TABS,
|
@@ -282,30 +283,30 @@ export {
|
|
282
283
|
vr as ArrowTooltip,
|
283
284
|
ff as AuthApiErrorCode,
|
284
285
|
Ta as AuthPageLayout,
|
285
|
-
|
286
|
-
|
286
|
+
ia as AuthStaticPanel,
|
287
|
+
Or as AutoPlayPermissionProvider,
|
287
288
|
zt as Avatar,
|
288
289
|
xr as Back2Icon,
|
289
290
|
c as BackIcon,
|
290
291
|
Ss as BackgroundImage,
|
291
292
|
S as Bin2Icon,
|
292
|
-
|
293
|
+
I as BinIcon,
|
293
294
|
h as Book2Icon,
|
294
295
|
C as BookClosedIcon,
|
295
|
-
|
296
|
+
P as BookIcon,
|
296
297
|
R as BookmarkIcon,
|
297
|
-
|
298
|
+
O as Bulb2Icon,
|
298
299
|
N as BulbIcon,
|
299
300
|
Qr as Button,
|
300
|
-
|
301
|
+
ms as CIRCLE_ACTION_IDS,
|
301
302
|
ps as CIRCLE_ONBOARDING_ANALYTICS_STEPS,
|
302
|
-
|
303
|
+
Qp as COMPLETED_SHEET_STATE,
|
303
304
|
D as CalendarIcon,
|
304
305
|
wt as Callout,
|
305
306
|
St as CascadingSelectInput,
|
306
307
|
Sf as Chapter,
|
307
308
|
Dl as ChapterClearanceConfirmationModal,
|
308
|
-
|
309
|
+
Of as ChapterDetails,
|
309
310
|
Cf as ChaptersList,
|
310
311
|
hr as ChatIcon,
|
311
312
|
U as Check2Icon,
|
@@ -313,13 +314,13 @@ export {
|
|
313
314
|
at as CheckboxInput,
|
314
315
|
st as CheckboxInputList,
|
315
316
|
Sr as ChevronDownIcon,
|
316
|
-
|
317
|
+
Ir as ChevronLeftIcon,
|
317
318
|
cr as ChevronRightIcon,
|
318
319
|
wf as CircleSoundKey,
|
319
|
-
|
320
|
+
Ot as CircularLoader,
|
320
321
|
Ba as CircularStepWrapper,
|
321
322
|
Es as CircularSteps,
|
322
|
-
|
323
|
+
Ma as ClaimUserAccount,
|
323
324
|
jr as Clickable,
|
324
325
|
v as ClipboardIcon,
|
325
326
|
V as Clock2Icon,
|
@@ -330,7 +331,7 @@ export {
|
|
330
331
|
Q as CopyIcon,
|
331
332
|
Vr as CountdownTimer,
|
332
333
|
j as CrossIcon,
|
333
|
-
|
334
|
+
Ms as CueCanvas,
|
334
335
|
ks as CueCanvasController,
|
335
336
|
ys as CueCanvasHomeworkController,
|
336
337
|
Ls as CueCanvasProvider,
|
@@ -340,40 +341,40 @@ export {
|
|
340
341
|
ya as CustomInputField,
|
341
342
|
X as DashArrowIcon,
|
342
343
|
Ga as DatePickerInput,
|
343
|
-
|
344
|
-
|
344
|
+
Up as DesmosCalculator,
|
345
|
+
Lp as DigitalMeter,
|
345
346
|
ee as DownIcon,
|
346
347
|
re as DraftIcon,
|
347
348
|
ae as DragIcon,
|
348
349
|
js as EClassTimeAlertLevel,
|
349
350
|
Yf as ELeaderboardType,
|
350
351
|
ap as EPResourceAssign,
|
351
|
-
|
352
|
+
kp as EPostGameStat,
|
352
353
|
Ws as EVENTS,
|
353
354
|
pe as Edit2Icon,
|
354
355
|
se as EditIcon,
|
355
356
|
Yl as EditMilestoneModal,
|
356
|
-
|
357
|
+
me as EditStarIcon,
|
357
358
|
xe as EraserIcon,
|
358
359
|
rt as Error,
|
359
360
|
Se as ExclamationIcon,
|
360
|
-
|
361
|
+
vp as ExpandableHeader,
|
361
362
|
el as ExtraPractice,
|
362
|
-
|
363
|
+
Ie as Eye2Icon,
|
363
364
|
ce as EyeIcon,
|
364
365
|
Rt as FlexView,
|
365
366
|
gf as GAME_LAUNCHER_ASSET_PADDING,
|
366
367
|
Uf as GAME_LAUNCHER_SIZE,
|
367
368
|
Cr as GameIcon,
|
368
369
|
xs as GameLauncher,
|
369
|
-
|
370
|
+
Ol as GoalCreationConfirmationModal,
|
370
371
|
Ul as GoalDraftEdit,
|
371
372
|
Ql as GoalEdit,
|
372
373
|
ct as GooglePlacesSearchInput,
|
373
374
|
Ha as GradeInput,
|
374
375
|
r as GradeSelector,
|
375
376
|
Ce as HandIcon,
|
376
|
-
|
377
|
+
Pe as HelpIcon,
|
377
378
|
he as HighlighterIcon,
|
378
379
|
Re as HomeIcon,
|
379
380
|
rl as HomeworkCardList,
|
@@ -386,16 +387,16 @@ export {
|
|
386
387
|
Ne as ImageIcon,
|
387
388
|
Sl as IndicatorType,
|
388
389
|
De as Info2Icon,
|
389
|
-
|
390
|
-
|
390
|
+
Oe as InfoIcon,
|
391
|
+
_a as InputStatusIcon,
|
391
392
|
pl as JOURNEY_ID_STUDENT,
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
393
|
+
ml as JOURNEY_ID_TEACHER,
|
394
|
+
Il as JourneyProvider,
|
395
|
+
m as LOTTIE,
|
396
|
+
Pf as LPARChapter,
|
396
397
|
hf as LPARMilestoneChapter,
|
397
|
-
|
398
|
-
|
398
|
+
Is as Leaderboard,
|
399
|
+
hu as LearnosityPreloader,
|
399
400
|
ge as LeftIcon,
|
400
401
|
ve as Lock2Icon,
|
401
402
|
we as Lock3Icon,
|
@@ -413,9 +414,9 @@ export {
|
|
413
414
|
je as Mobile,
|
414
415
|
qe as MoreVerticalIcon,
|
415
416
|
If as MultiTabBlocker,
|
416
|
-
|
417
|
-
|
418
|
-
|
417
|
+
Kp as NODE_LABELS,
|
418
|
+
jp as NODE_SUB_GROUP,
|
419
|
+
Zp as NODE_TYPE,
|
419
420
|
Nr as Next2Icon,
|
420
421
|
Xe as NextIcon,
|
421
422
|
Yr as Nudge,
|
@@ -423,60 +424,60 @@ export {
|
|
423
424
|
za as OTPForm,
|
424
425
|
Ea as OverlayLoader,
|
425
426
|
lf as PLATFORM_EVENTS_STUDENT,
|
426
|
-
|
427
|
-
|
427
|
+
uf as PLATFORM_EVENTS_TEACHER,
|
428
|
+
qp as PYTHON_NODE_TYPES,
|
428
429
|
eo as PencilIcon,
|
429
|
-
|
430
|
-
|
430
|
+
Pt as PercentileInput,
|
431
|
+
ua as PerfectHits,
|
431
432
|
so as Play2Icon,
|
432
433
|
ao as PlayIcon,
|
433
434
|
as as PlayerType,
|
434
|
-
|
435
|
+
mo as Plus2Icon,
|
435
436
|
po as PlusIcon,
|
436
437
|
ro as PointerIcon,
|
437
|
-
|
438
|
+
Mp as PostGameStats,
|
438
439
|
no as PracticeIcon,
|
439
|
-
|
440
|
-
|
440
|
+
Su as PreviewWorksheet,
|
441
|
+
io as ProgressIcon,
|
441
442
|
Xf as ProjectOutcome,
|
442
443
|
rs as ProjectType,
|
443
444
|
To as QuestionIcon,
|
444
445
|
Eo as QuestionLetterIcon,
|
445
|
-
|
446
|
+
zp as REWARDS_LIST,
|
446
447
|
Dt as RadioCard,
|
447
448
|
pt as RadioInput,
|
448
|
-
|
449
|
+
Hp as RecentChapters,
|
449
450
|
Ao as RedoIcon,
|
450
|
-
|
451
|
-
|
451
|
+
Vp as ReferenceSheet,
|
452
|
+
Ap as RemotePeerPointer,
|
452
453
|
La as ResendOTP,
|
453
454
|
$a as ResetPasswordForm,
|
454
|
-
|
455
|
+
_o as RightIcon,
|
455
456
|
Lo as RulerIcon,
|
456
457
|
Rf as SATSheetSummary,
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
458
|
+
Gp as SENTRY_DENIED_URLS,
|
459
|
+
gp as SENTRY_IGNORED_ERRORS,
|
460
|
+
Xp as SHEET_ACTIONS,
|
461
|
+
$p as SHEET_ATTEMPT_LOCATION,
|
462
|
+
eu as SHEET_ATTEMPT_LOCATION_MAP,
|
463
|
+
ou as SHEET_ATTEMPT_STATE,
|
464
|
+
ru as SHEET_DATA_TYPE,
|
465
|
+
tu as SHEET_STATE,
|
465
466
|
lp as STAGES,
|
466
|
-
|
467
|
+
ur as ScribbleIcon,
|
467
468
|
ko as SearchIcon,
|
468
469
|
xt as SearchableSelectInput,
|
469
470
|
gt as SectionList,
|
470
|
-
|
471
|
+
mt as SelectInput,
|
471
472
|
ht as SelectionCards,
|
472
473
|
fa as Separator,
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
474
|
+
Pu as SheetError,
|
475
|
+
Mo as SheetIcon,
|
476
|
+
wp as SheetList,
|
477
|
+
Cu as SheetLocked,
|
478
|
+
_s as SignUp,
|
478
479
|
ba as SignupMethods,
|
479
|
-
|
480
|
+
mr as SketchIcon,
|
480
481
|
Bo as Skip2Icon,
|
481
482
|
Go as SkipColoredIcon,
|
482
483
|
yo as SkipIcon,
|
@@ -490,7 +491,7 @@ export {
|
|
490
491
|
ta as StreakIcon,
|
491
492
|
Qf as StreakReductionLocalStorageUtil,
|
492
493
|
Fo as StrikedEyeIcon,
|
493
|
-
|
494
|
+
fu as StudentDetails,
|
494
495
|
Nl as SubmitMilestoneModal,
|
495
496
|
Jo as SwitchIcon,
|
496
497
|
oa as TabComponent,
|
@@ -500,13 +501,13 @@ export {
|
|
500
501
|
rp as TestsCreation,
|
501
502
|
Ut as Text,
|
502
503
|
Xr as TextButton,
|
503
|
-
|
504
|
+
It as TextInput,
|
504
505
|
Ko as TickIcon,
|
505
506
|
$t as TimeLeftTimeline,
|
506
507
|
Qs as TrialSession,
|
507
508
|
Zo as TrophyIcon,
|
508
509
|
jf as Tutorial,
|
509
|
-
|
510
|
+
Pr as TutoringIcon,
|
510
511
|
Vt as UIContext,
|
511
512
|
zo as UndoIcon,
|
512
513
|
or as Unlock2Icon,
|
@@ -519,23 +520,24 @@ export {
|
|
519
520
|
Ka as UsernamePasswordForm,
|
520
521
|
la as Video,
|
521
522
|
df as WHITELIST_EVENTS,
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
523
|
+
uu as WORKSHEET_ACTION_BAR_HEIGHT,
|
524
|
+
mu as WORKSHEET_QUESTIONS_GAP,
|
525
|
+
du as WORKSHEET_QUESTION_WIDTH,
|
526
|
+
xu as WORKSHEET_TOP_NAVIGATION_HEIGHT,
|
527
|
+
Yp as WORKSHEET_V3_NODE_TYPES,
|
527
528
|
qf as WebView,
|
528
529
|
es as WebViewEvent,
|
529
|
-
|
530
|
+
Iu as Worksheet,
|
530
531
|
Nf as checkIfPPTNodeType,
|
531
532
|
Zt as getTheme,
|
532
533
|
Df as invalidateGetChapterDetails,
|
533
534
|
al as invalidateHomeworks,
|
534
|
-
|
535
|
-
|
536
|
-
xp as
|
537
|
-
|
538
|
-
|
535
|
+
Sp as invalidateMilestoneResources,
|
536
|
+
up as invalidateMilestonesData,
|
537
|
+
xp as invalidatePastMilestoneCount,
|
538
|
+
ip as invalidateTestHelpData,
|
539
|
+
cu as isOkayTypeQuestion,
|
540
|
+
lu as loadScript,
|
539
541
|
sl as useAutoPlayPermission,
|
540
542
|
Hs as useCanvasSyncBroker,
|
541
543
|
hl as useChapterPageJourney,
|
@@ -543,24 +545,25 @@ export {
|
|
543
545
|
qs as useClassTimeAlerts,
|
544
546
|
Kt as useContextMenuClickHandler,
|
545
547
|
gr as useForceReload,
|
546
|
-
|
548
|
+
mp as useGetAllMilestonesdata,
|
547
549
|
cs as useGetCircleHomeDetailsDal,
|
548
550
|
cl as useGetEligibleJourneysViaRoute,
|
549
551
|
Vf as useGetLeaderboardDal,
|
550
|
-
|
551
|
-
np as
|
552
|
-
|
552
|
+
Ep as useGetMilestoneResources,
|
553
|
+
np as useGetPastMilestoneCount,
|
554
|
+
Ip as useGetTestHelpData,
|
555
|
+
Pl as useHomePageJourney,
|
553
556
|
Fs as useInClassActionDispatcher,
|
554
557
|
Ys as useInClassActionListener,
|
555
558
|
Bs as useInClassMessageBroker,
|
556
|
-
|
559
|
+
Ru as useIsLearnosityLoaded,
|
557
560
|
nf as useIsTabBlocked,
|
558
561
|
xl as useJourney,
|
559
|
-
|
562
|
+
_p as usePointerSync,
|
560
563
|
Jt as useTrackingContext,
|
561
564
|
bs as useTrialSessionMessageBroker,
|
562
565
|
Ft as useUIContext,
|
563
|
-
|
566
|
+
Nu as useWorksheetLayout,
|
564
567
|
Dr as useZoomDisable
|
565
568
|
};
|
566
569
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|