@cuemath/leap 3.1.41-as5 → 3.1.41-as7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CANVAS_COLORS as u } from "./constants/constants.js";
|
|
2
|
-
const
|
|
2
|
+
const S = [
|
|
3
3
|
"none",
|
|
4
4
|
"square2-grid",
|
|
5
5
|
"square-checked",
|
|
@@ -9,7 +9,7 @@ const h = [
|
|
|
9
9
|
"square-grid",
|
|
10
10
|
"tri-grid",
|
|
11
11
|
"tri2-grid"
|
|
12
|
-
],
|
|
12
|
+
], m = /* @__PURE__ */ new Set([
|
|
13
13
|
"undo",
|
|
14
14
|
"redo",
|
|
15
15
|
"clearAll",
|
|
@@ -20,68 +20,68 @@ const h = [
|
|
|
20
20
|
"zoomOut",
|
|
21
21
|
"upload",
|
|
22
22
|
"download"
|
|
23
|
-
]),
|
|
24
|
-
var
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
const s =
|
|
30
|
-
|
|
23
|
+
]), y = (e) => {
|
|
24
|
+
var o;
|
|
25
|
+
const t = (o = e.current) == null ? void 0 : o.shadowRoot;
|
|
26
|
+
if (t) {
|
|
27
|
+
const n = t.querySelectorAll("x-polypad");
|
|
28
|
+
if (n[0]) {
|
|
29
|
+
const s = n[0].querySelector("svg.canvas"), r = s == null ? void 0 : s.querySelector("path.mask");
|
|
30
|
+
r == null || r.setAttribute("stroke", "transparent"), r == null || r.setAttribute("fill", "transparent"), r == null || r.removeAttribute("style");
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
},
|
|
34
|
-
var
|
|
35
|
-
const
|
|
36
|
-
if (
|
|
37
|
-
const a =
|
|
33
|
+
}, E = (e) => {
|
|
34
|
+
var r;
|
|
35
|
+
const t = (r = e.current) == null ? void 0 : r.shadowRoot, o = t == null ? void 0 : t.querySelector("x-pp-sidebar"), n = o == null ? void 0 : o.getElementsByClassName("tabs-header"), s = o == null ? void 0 : o.getElementsByClassName("tabs-body");
|
|
36
|
+
if (o == null || o.setAttribute("style", "display: none;"), o == null || o.setAttribute("style", "height: 30px;"), n && n.length > 0) {
|
|
37
|
+
const a = n[0];
|
|
38
38
|
a.style.display = "none";
|
|
39
39
|
}
|
|
40
40
|
if (s && s.length > 0) {
|
|
41
41
|
const a = s[0];
|
|
42
42
|
a.style.top = "48px";
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
}, b = (
|
|
46
|
-
var
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
}, f = (
|
|
44
|
+
o == null || o.setAttribute("style", "display: block;");
|
|
45
|
+
}, b = (e) => {
|
|
46
|
+
var n, s;
|
|
47
|
+
const t = (n = e.current.shadowRoot) == null ? void 0 : n.querySelectorAll('[data-key="music"]')[0], o = (s = e.current.shadowRoot) == null ? void 0 : s.querySelectorAll('[data-key="logic"]')[0];
|
|
48
|
+
t && (t.style.display = "none"), o && (o.style.display = "none");
|
|
49
|
+
}, f = (e, t, o, n) => o === "canvas" ? {
|
|
50
50
|
canvas: "notebook",
|
|
51
|
-
canvasX:
|
|
52
|
-
canvasY:
|
|
51
|
+
canvasX: e,
|
|
52
|
+
canvasY: t,
|
|
53
53
|
noPinchPan: !0,
|
|
54
54
|
grid: "none",
|
|
55
55
|
background: "transparent",
|
|
56
56
|
noSnapping: !0
|
|
57
57
|
} : {
|
|
58
58
|
canvas: "infinite",
|
|
59
|
-
canvasX:
|
|
60
|
-
canvasY:
|
|
59
|
+
canvasX: e,
|
|
60
|
+
canvasY: t,
|
|
61
61
|
grid: "none",
|
|
62
|
-
noPinchPan:
|
|
63
|
-
noDeleting:
|
|
64
|
-
noCopyPaste:
|
|
62
|
+
noPinchPan: n === "STUDENT",
|
|
63
|
+
noDeleting: n === "STUDENT",
|
|
64
|
+
noCopyPaste: n === "STUDENT",
|
|
65
65
|
noMusic: !0,
|
|
66
66
|
noAudio: !0
|
|
67
|
-
}, C = (
|
|
67
|
+
}, C = (e, t) => e === "canvas" ? {
|
|
68
68
|
sidebarTiles: !1,
|
|
69
69
|
sidebarSettings: !1,
|
|
70
70
|
settings: !1,
|
|
71
71
|
toolbar: !1,
|
|
72
72
|
canvasMargin: 0
|
|
73
73
|
} : {
|
|
74
|
-
sidebarTiles:
|
|
74
|
+
sidebarTiles: t === "TEACHER",
|
|
75
75
|
sidebarSettings: !1,
|
|
76
76
|
settings: !1,
|
|
77
77
|
toolbar: !1
|
|
78
|
-
}, d = (
|
|
79
|
-
const
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
}),
|
|
83
|
-
}, O = (
|
|
84
|
-
switch (
|
|
78
|
+
}, d = (e) => [e[1], e[0]], v = (e) => {
|
|
79
|
+
const t = /* @__PURE__ */ new Map();
|
|
80
|
+
return e.forEach((o, n) => {
|
|
81
|
+
t.set(n, d(o));
|
|
82
|
+
}), t;
|
|
83
|
+
}, O = (e) => {
|
|
84
|
+
switch (e) {
|
|
85
85
|
case "pen":
|
|
86
86
|
return ["pen", "pen"];
|
|
87
87
|
case "marker":
|
|
@@ -93,7 +93,7 @@ const h = [
|
|
|
93
93
|
case "equation":
|
|
94
94
|
return ["text", "equation"];
|
|
95
95
|
default:
|
|
96
|
-
return [
|
|
96
|
+
return [e, void 0];
|
|
97
97
|
}
|
|
98
98
|
}, g = [
|
|
99
99
|
"pen",
|
|
@@ -136,17 +136,17 @@ const h = [
|
|
|
136
136
|
"move",
|
|
137
137
|
"undo",
|
|
138
138
|
"redo"
|
|
139
|
-
], T = ["pen", "ruler", "eraser", "move", "undo", "redo"], R = (
|
|
140
|
-
(
|
|
141
|
-
) :
|
|
142
|
-
const
|
|
143
|
-
for (let c = 0; c <
|
|
144
|
-
i[c] =
|
|
139
|
+
], T = ["pen", "ruler", "eraser", "move", "undo", "redo"], R = (e, t) => t === "whiteboard" ? e === "TEACHER" ? g : A : e === "TEACHER" ? p : T, N = (e, t = "canvas") => t === "whiteboard" ? Object.keys(u).filter(
|
|
140
|
+
(o) => !o.startsWith("CANVAS")
|
|
141
|
+
) : e === "TEACHER" ? ["CANVAS_RED", "CANVAS_YELLOW", "CANVAS_GREEN"] : ["CANVAS_BLUE", "CANVAS_PURPLE", "CANVAS_PINK"], _ = (e) => ["pen", "ruler", "marker", "highlighter"].includes(e), k = (e) => Object.values(e).some((t) => !!(!t[0] && t[1] && "name" in t[1] && (t[1].name === "text" || t[1].name === "equation"))), q = (e) => {
|
|
142
|
+
const t = e.split(","), o = t[0] ?? "", n = t[1] ?? "", r = o.includes("base64") ? atob(n) : decodeURIComponent(n), a = o.match(/:(.*?);/), l = a ? a[1] : "application/octet-stream", i = new Uint8Array(r.length);
|
|
143
|
+
for (let c = 0; c < r.length; c++)
|
|
144
|
+
i[c] = r.charCodeAt(c);
|
|
145
145
|
return new Blob([i], { type: l });
|
|
146
146
|
};
|
|
147
147
|
export {
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
S as GRID_NAMES,
|
|
149
|
+
m as STATELESS_TOOLS,
|
|
150
150
|
k as checkTextOrEquationTool,
|
|
151
151
|
q as dataURIToBlob,
|
|
152
152
|
f as getCanvasConfig,
|
|
@@ -157,8 +157,8 @@ export {
|
|
|
157
157
|
v as getReverseMap,
|
|
158
158
|
O as getToolAndSubtool,
|
|
159
159
|
R as getUserTools,
|
|
160
|
-
|
|
160
|
+
y as removeMask,
|
|
161
161
|
b as removeMusicTiles,
|
|
162
|
-
|
|
162
|
+
E as removeTileButton
|
|
163
163
|
};
|
|
164
164
|
//# sourceMappingURL=cue-canvas-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cue-canvas-helpers.js","sources":["../../../src/features/cue-canvas/cue-canvas-helpers.ts"],"sourcesContent":["import type { TUserTypes } from '../ui/types';\nimport type {\n TCueCanvasColors,\n TCueCanvasChangeData,\n TCueCanvasTool,\n TCueCanvasToolOption,\n TDrawingData,\n TRenderAs,\n TCueCanvasGridName,\n TCueCanvasChangeDataObject,\n} from './types/cue-canvas';\nimport type { IPolypadCreateOptions, IPolypadOptions } from './types/polypad';\n\nimport { CANVAS_COLORS } from './constants/constants';\n\nexport const GRID_NAMES: TCueCanvasGridName[] = [\n 'none',\n 'square2-grid',\n 'square-checked',\n 'square-dots',\n 'tri-dots',\n 'tri2-dots',\n 'square-grid',\n 'tri-grid',\n 'tri2-grid',\n];\n\nexport const STATELESS_TOOLS = new Set<TCueCanvasTool>([\n 'undo',\n 'redo',\n 'clearAll',\n 'home',\n 'lock',\n 'unlock',\n 'zoomIn',\n 'zoomOut',\n 'upload',\n 'download',\n]);\n\nexport const removeMask = (canvasElementRef: React.RefObject<HTMLDivElement>) => {\n const shadowRoot = canvasElementRef.current?.shadowRoot;\n\n if (shadowRoot) {\n const xPolypad = shadowRoot.querySelectorAll('x-polypad');\n\n if (xPolypad[0]) {\n const svgCanvas = xPolypad[0].querySelector('svg.canvas');\n const maskPath = svgCanvas?.querySelector('path.mask');\n\n maskPath?.setAttribute('stroke', 'transparent');\n maskPath?.setAttribute('fill', 'transparent');\n maskPath?.removeAttribute('style');\n }\n }\n\n return undefined;\n};\n\nexport const removeTileButton = (canvasElementRef: React.RefObject<HTMLDivElement>) => {\n const shadowRoot = canvasElementRef.current?.shadowRoot;\n const sidebar = shadowRoot?.querySelector('x-pp-sidebar') as HTMLElement;\n const tabsHeader = sidebar?.getElementsByClassName('tabs-header');\n const tabsBody = sidebar?.getElementsByClassName('tabs-body');\n\n sidebar?.setAttribute('style', 'display: none;');\n sidebar?.setAttribute('style', 'height: 30px;');\n\n if (tabsHeader && tabsHeader.length > 0) {\n const firstTabHeader = tabsHeader[0] as HTMLElement;\n\n firstTabHeader.style.display = 'none';\n }\n\n if (tabsBody && tabsBody.length > 0) {\n const firstTabBody = tabsBody[0] as HTMLElement;\n\n firstTabBody.style.top = '48px';\n }\n sidebar?.setAttribute('style', 'display: block;');\n};\n\n/**\n * Hides the music and logic tiles in the canvas to prevent CORS issues with audio elements\n * @param canvasElementRef - Reference to the canvas div element\n */\nexport const removeMusicTiles = (canvasElementRef: React.RefObject<HTMLDivElement>) => {\n const musicTiles = canvasElementRef.current.shadowRoot?.querySelectorAll(`[data-key=\"music\"]`)[0];\n // const logicTiles = canvasElementRef.current.shadowRoot?.querySelectorAll(`[data-key=\"logic\"]`)[0];\n\n if (musicTiles) {\n (musicTiles as HTMLElement).style.display = 'none';\n }\n\n // if (logicTiles) {\n // (logicTiles as HTMLElement).style.display = 'none';\n // }\n};\n\nexport const getCanvasConfig = (\n width: number,\n height: number,\n renderAs: TRenderAs,\n userType: TUserTypes,\n): IPolypadOptions => {\n return renderAs === 'canvas'\n ? {\n canvas: 'notebook',\n canvasX: width,\n canvasY: height,\n noPinchPan: true,\n grid: 'none',\n background: 'transparent',\n noSnapping: true,\n }\n : {\n canvas: 'infinite',\n canvasX: width,\n canvasY: height,\n grid: 'none',\n noPinchPan: userType === 'STUDENT',\n noDeleting: userType === 'STUDENT',\n noCopyPaste: userType === 'STUDENT',\n noMusic: true,\n noAudio: true,\n };\n};\n\nexport const getCanvasSettings = (\n renderAs: TRenderAs,\n userType: TUserTypes,\n): IPolypadCreateOptions => {\n return renderAs === 'canvas'\n ? {\n sidebarTiles: false,\n sidebarSettings: false,\n settings: false,\n toolbar: false,\n canvasMargin: 0,\n }\n : {\n sidebarTiles: userType === 'TEACHER',\n sidebarSettings: false,\n settings: false,\n toolbar: false,\n };\n};\n\nexport const getReverseAction = (action: TDrawingData[]) => [action[1], action[0]];\n\nexport const getReverseMap = (data: TCueCanvasChangeData) => {\n const newData = new Map<string, TDrawingData[]>();\n\n data.forEach((value, key) => {\n newData.set(key, getReverseAction(value));\n });\n\n return newData;\n};\n\nexport const getToolAndSubtool = (\n tool: TCueCanvasTool,\n): [\n Exclude<TCueCanvasTool, 'marker' | 'highlighter' | 'ruler' | 'equation'>,\n TCueCanvasToolOption | undefined,\n] => {\n switch (tool) {\n case 'pen':\n return ['pen', 'pen'];\n case 'marker':\n return ['pen', 'marker'];\n case 'highlighter':\n return ['pen', 'highlighter'];\n case 'ruler':\n return ['pen', 'ruler'];\n case 'equation':\n return ['text', 'equation'];\n default:\n return [tool, undefined];\n }\n};\n\nconst TEACHER_WHITEBOARD_TOOLS: TCueCanvasTool[] = [\n 'pen',\n 'ruler',\n 'marker',\n 'highlighter',\n 'eraser',\n 'move',\n 'lock',\n 'unlock',\n 'zoomIn',\n 'zoomOut',\n 'pan',\n 'clearAll',\n 'text',\n 'equation',\n 'grid',\n 'home',\n 'undo',\n 'redo',\n\n 'upload',\n 'download',\n];\n\nconst STUDENT_WHITEBOARD_TOOLS: TCueCanvasTool[] = [\n 'pen',\n 'ruler',\n 'marker',\n 'highlighter',\n 'eraser',\n 'move',\n 'text',\n 'undo',\n 'redo',\n 'download',\n];\n\nconst TEACHER_DEFAULT_TOOLS: TCueCanvasTool[] = [\n 'pen',\n 'ruler',\n 'marker',\n 'highlighter',\n 'eraser',\n 'move',\n 'undo',\n 'redo',\n];\n\nconst STUDENT_DEFAULT_TOOLS: TCueCanvasTool[] = ['pen', 'ruler', 'eraser', 'move', 'undo', 'redo'];\n\nexport const getUserTools = (userType: TUserTypes, renderAs: TRenderAs): TCueCanvasTool[] => {\n if (renderAs === 'whiteboard') {\n return userType === 'TEACHER' ? TEACHER_WHITEBOARD_TOOLS : STUDENT_WHITEBOARD_TOOLS;\n }\n\n return userType === 'TEACHER' ? TEACHER_DEFAULT_TOOLS : STUDENT_DEFAULT_TOOLS;\n};\n\nexport const getColorsForUser = (userType: TUserTypes, renderAs: TRenderAs = 'canvas') => {\n if (renderAs === 'whiteboard') {\n return Object.keys(CANVAS_COLORS).filter(\n color => !color.startsWith('CANVAS'),\n ) as TCueCanvasColors[];\n }\n\n return userType === 'TEACHER'\n ? (['CANVAS_RED', 'CANVAS_YELLOW', 'CANVAS_GREEN'] as TCueCanvasColors[])\n : (['CANVAS_BLUE', 'CANVAS_PURPLE', 'CANVAS_PINK'] as TCueCanvasColors[]);\n};\n\nexport const getIsWritingTool = (penTool: string) => {\n return ['pen', 'ruler', 'marker', 'highlighter'].includes(penTool);\n};\n\nexport const checkTextOrEquationTool = (payload: TCueCanvasChangeDataObject) => {\n return Object.values(payload).some(value => {\n if (\n !value[0] &&\n value[1] &&\n 'name' in value[1] &&\n (value[1].name === 'text' || value[1].name === 'equation')\n ) {\n return true;\n }\n\n return false;\n });\n};\n\nexport const dataURIToBlob = (dataURI: string): Blob => {\n const parts = dataURI.split(',');\n const metadata = parts[0] ?? '';\n const base64Data = parts[1] ?? '';\n\n const isBase64 = metadata.includes('base64');\n const byteString = isBase64 ? atob(base64Data) : decodeURIComponent(base64Data);\n\n const mimeTypeMatch = metadata.match(/:(.*?);/);\n const mimeType = mimeTypeMatch ? mimeTypeMatch[1] : 'application/octet-stream';\n\n const byteArray = new Uint8Array(byteString.length);\n\n for (let i = 0; i < byteString.length; i++) {\n byteArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([byteArray], { type: mimeType });\n};\n\nexport const jsonToBlob = (json: unknown) => {\n const data = JSON.stringify(json);\n\n return new Blob([data], {\n type: 'application/json',\n });\n};\n"],"names":["GRID_NAMES","STATELESS_TOOLS","removeMask","canvasElementRef","shadowRoot","_a","xPolypad","svgCanvas","maskPath","removeTileButton","sidebar","tabsHeader","tabsBody","firstTabHeader","firstTabBody","removeMusicTiles","musicTiles","getCanvasConfig","width","height","renderAs","userType","getCanvasSettings","getReverseAction","action","getReverseMap","data","newData","value","key","getToolAndSubtool","tool","TEACHER_WHITEBOARD_TOOLS","STUDENT_WHITEBOARD_TOOLS","TEACHER_DEFAULT_TOOLS","STUDENT_DEFAULT_TOOLS","getUserTools","getColorsForUser","CANVAS_COLORS","color","getIsWritingTool","penTool","checkTextOrEquationTool","payload","dataURIToBlob","dataURI","parts","metadata","base64Data","byteString","mimeTypeMatch","mimeType","byteArray","i"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cue-canvas-helpers.js","sources":["../../../src/features/cue-canvas/cue-canvas-helpers.ts"],"sourcesContent":["import type { TUserTypes } from '../ui/types';\nimport type {\n TCueCanvasColors,\n TCueCanvasChangeData,\n TCueCanvasTool,\n TCueCanvasToolOption,\n TDrawingData,\n TRenderAs,\n TCueCanvasGridName,\n TCueCanvasChangeDataObject,\n} from './types/cue-canvas';\nimport type { IPolypadCreateOptions, IPolypadOptions } from './types/polypad';\n\nimport { CANVAS_COLORS } from './constants/constants';\n\nexport const GRID_NAMES: TCueCanvasGridName[] = [\n 'none',\n 'square2-grid',\n 'square-checked',\n 'square-dots',\n 'tri-dots',\n 'tri2-dots',\n 'square-grid',\n 'tri-grid',\n 'tri2-grid',\n];\n\nexport const STATELESS_TOOLS = new Set<TCueCanvasTool>([\n 'undo',\n 'redo',\n 'clearAll',\n 'home',\n 'lock',\n 'unlock',\n 'zoomIn',\n 'zoomOut',\n 'upload',\n 'download',\n]);\n\nexport const removeMask = (canvasElementRef: React.RefObject<HTMLDivElement>) => {\n const shadowRoot = canvasElementRef.current?.shadowRoot;\n\n if (shadowRoot) {\n const xPolypad = shadowRoot.querySelectorAll('x-polypad');\n\n if (xPolypad[0]) {\n const svgCanvas = xPolypad[0].querySelector('svg.canvas');\n const maskPath = svgCanvas?.querySelector('path.mask');\n\n maskPath?.setAttribute('stroke', 'transparent');\n maskPath?.setAttribute('fill', 'transparent');\n maskPath?.removeAttribute('style');\n }\n }\n\n return undefined;\n};\n\nexport const removeTileButton = (canvasElementRef: React.RefObject<HTMLDivElement>) => {\n const shadowRoot = canvasElementRef.current?.shadowRoot;\n const sidebar = shadowRoot?.querySelector('x-pp-sidebar') as HTMLElement;\n const tabsHeader = sidebar?.getElementsByClassName('tabs-header');\n const tabsBody = sidebar?.getElementsByClassName('tabs-body');\n\n sidebar?.setAttribute('style', 'display: none;');\n sidebar?.setAttribute('style', 'height: 30px;');\n\n if (tabsHeader && tabsHeader.length > 0) {\n const firstTabHeader = tabsHeader[0] as HTMLElement;\n\n firstTabHeader.style.display = 'none';\n }\n\n if (tabsBody && tabsBody.length > 0) {\n const firstTabBody = tabsBody[0] as HTMLElement;\n\n firstTabBody.style.top = '48px';\n }\n sidebar?.setAttribute('style', 'display: block;');\n};\n\n/**\n * Hides the music and logic tiles in the canvas to prevent CORS issues with audio elements\n * @param canvasElementRef - Reference to the canvas div element\n */\nexport const removeMusicTiles = (canvasElementRef: React.RefObject<HTMLDivElement>) => {\n const musicTiles = canvasElementRef.current.shadowRoot?.querySelectorAll(`[data-key=\"music\"]`)[0];\n const logicTiles = canvasElementRef.current.shadowRoot?.querySelectorAll(`[data-key=\"logic\"]`)[0];\n\n if (musicTiles) {\n (musicTiles as HTMLElement).style.display = 'none';\n }\n\n if (logicTiles) {\n (logicTiles as HTMLElement).style.display = 'none';\n }\n};\n\nexport const getCanvasConfig = (\n width: number,\n height: number,\n renderAs: TRenderAs,\n userType: TUserTypes,\n): IPolypadOptions => {\n return renderAs === 'canvas'\n ? {\n canvas: 'notebook',\n canvasX: width,\n canvasY: height,\n noPinchPan: true,\n grid: 'none',\n background: 'transparent',\n noSnapping: true,\n }\n : {\n canvas: 'infinite',\n canvasX: width,\n canvasY: height,\n grid: 'none',\n noPinchPan: userType === 'STUDENT',\n noDeleting: userType === 'STUDENT',\n noCopyPaste: userType === 'STUDENT',\n noMusic: true,\n noAudio: true,\n };\n};\n\nexport const getCanvasSettings = (\n renderAs: TRenderAs,\n userType: TUserTypes,\n): IPolypadCreateOptions => {\n return renderAs === 'canvas'\n ? {\n sidebarTiles: false,\n sidebarSettings: false,\n settings: false,\n toolbar: false,\n canvasMargin: 0,\n }\n : {\n sidebarTiles: userType === 'TEACHER',\n sidebarSettings: false,\n settings: false,\n toolbar: false,\n };\n};\n\nexport const getReverseAction = (action: TDrawingData[]) => [action[1], action[0]];\n\nexport const getReverseMap = (data: TCueCanvasChangeData) => {\n const newData = new Map<string, TDrawingData[]>();\n\n data.forEach((value, key) => {\n newData.set(key, getReverseAction(value));\n });\n\n return newData;\n};\n\nexport const getToolAndSubtool = (\n tool: TCueCanvasTool,\n): [\n Exclude<TCueCanvasTool, 'marker' | 'highlighter' | 'ruler' | 'equation'>,\n TCueCanvasToolOption | undefined,\n] => {\n switch (tool) {\n case 'pen':\n return ['pen', 'pen'];\n case 'marker':\n return ['pen', 'marker'];\n case 'highlighter':\n return ['pen', 'highlighter'];\n case 'ruler':\n return ['pen', 'ruler'];\n case 'equation':\n return ['text', 'equation'];\n default:\n return [tool, undefined];\n }\n};\n\nconst TEACHER_WHITEBOARD_TOOLS: TCueCanvasTool[] = [\n 'pen',\n 'ruler',\n 'marker',\n 'highlighter',\n 'eraser',\n 'move',\n 'lock',\n 'unlock',\n 'zoomIn',\n 'zoomOut',\n 'pan',\n 'clearAll',\n 'text',\n 'equation',\n 'grid',\n 'home',\n 'undo',\n 'redo',\n\n 'upload',\n 'download',\n];\n\nconst STUDENT_WHITEBOARD_TOOLS: TCueCanvasTool[] = [\n 'pen',\n 'ruler',\n 'marker',\n 'highlighter',\n 'eraser',\n 'move',\n 'text',\n 'undo',\n 'redo',\n 'download',\n];\n\nconst TEACHER_DEFAULT_TOOLS: TCueCanvasTool[] = [\n 'pen',\n 'ruler',\n 'marker',\n 'highlighter',\n 'eraser',\n 'move',\n 'undo',\n 'redo',\n];\n\nconst STUDENT_DEFAULT_TOOLS: TCueCanvasTool[] = ['pen', 'ruler', 'eraser', 'move', 'undo', 'redo'];\n\nexport const getUserTools = (userType: TUserTypes, renderAs: TRenderAs): TCueCanvasTool[] => {\n if (renderAs === 'whiteboard') {\n return userType === 'TEACHER' ? TEACHER_WHITEBOARD_TOOLS : STUDENT_WHITEBOARD_TOOLS;\n }\n\n return userType === 'TEACHER' ? TEACHER_DEFAULT_TOOLS : STUDENT_DEFAULT_TOOLS;\n};\n\nexport const getColorsForUser = (userType: TUserTypes, renderAs: TRenderAs = 'canvas') => {\n if (renderAs === 'whiteboard') {\n return Object.keys(CANVAS_COLORS).filter(\n color => !color.startsWith('CANVAS'),\n ) as TCueCanvasColors[];\n }\n\n return userType === 'TEACHER'\n ? (['CANVAS_RED', 'CANVAS_YELLOW', 'CANVAS_GREEN'] as TCueCanvasColors[])\n : (['CANVAS_BLUE', 'CANVAS_PURPLE', 'CANVAS_PINK'] as TCueCanvasColors[]);\n};\n\nexport const getIsWritingTool = (penTool: string) => {\n return ['pen', 'ruler', 'marker', 'highlighter'].includes(penTool);\n};\n\nexport const checkTextOrEquationTool = (payload: TCueCanvasChangeDataObject) => {\n return Object.values(payload).some(value => {\n if (\n !value[0] &&\n value[1] &&\n 'name' in value[1] &&\n (value[1].name === 'text' || value[1].name === 'equation')\n ) {\n return true;\n }\n\n return false;\n });\n};\n\nexport const dataURIToBlob = (dataURI: string): Blob => {\n const parts = dataURI.split(',');\n const metadata = parts[0] ?? '';\n const base64Data = parts[1] ?? '';\n\n const isBase64 = metadata.includes('base64');\n const byteString = isBase64 ? atob(base64Data) : decodeURIComponent(base64Data);\n\n const mimeTypeMatch = metadata.match(/:(.*?);/);\n const mimeType = mimeTypeMatch ? mimeTypeMatch[1] : 'application/octet-stream';\n\n const byteArray = new Uint8Array(byteString.length);\n\n for (let i = 0; i < byteString.length; i++) {\n byteArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([byteArray], { type: mimeType });\n};\n\nexport const jsonToBlob = (json: unknown) => {\n const data = JSON.stringify(json);\n\n return new Blob([data], {\n type: 'application/json',\n });\n};\n"],"names":["GRID_NAMES","STATELESS_TOOLS","removeMask","canvasElementRef","shadowRoot","_a","xPolypad","svgCanvas","maskPath","removeTileButton","sidebar","tabsHeader","tabsBody","firstTabHeader","firstTabBody","removeMusicTiles","musicTiles","logicTiles","_b","getCanvasConfig","width","height","renderAs","userType","getCanvasSettings","getReverseAction","action","getReverseMap","data","newData","value","key","getToolAndSubtool","tool","TEACHER_WHITEBOARD_TOOLS","STUDENT_WHITEBOARD_TOOLS","TEACHER_DEFAULT_TOOLS","STUDENT_DEFAULT_TOOLS","getUserTools","getColorsForUser","CANVAS_COLORS","color","getIsWritingTool","penTool","checkTextOrEquationTool","payload","dataURIToBlob","dataURI","parts","metadata","base64Data","byteString","mimeTypeMatch","mimeType","byteArray","i"],"mappings":"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"}
|
|
@@ -6206,18 +6206,22 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
6206
6206
|
|
|
6207
6207
|
window.addEventListener('online', $g);
|
|
6208
6208
|
window.onbeforeunload = Rh;
|
|
6209
|
+
// AUDIO NEUTRALIZED: Modified to prevent any audio loading or playing
|
|
6209
6210
|
let be = class {
|
|
6210
6211
|
constructor(e, s = 1, t = !0) {
|
|
6211
|
-
|
|
6212
|
-
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6212
|
+
// Don't actually create Audio elements or set src to prevent network requests
|
|
6213
|
+
this.src = null;
|
|
6214
|
+
this.defaultVolume = s;
|
|
6215
|
+
// Create a mock player object with the same interface
|
|
6216
|
+
this.player = {
|
|
6217
|
+
currentTime: 0,
|
|
6218
|
+
volume: 0,
|
|
6219
|
+
play: () => Promise.resolve(),
|
|
6220
|
+
preload: 'none'
|
|
6221
|
+
};
|
|
6216
6222
|
}
|
|
6217
6223
|
play(e) {
|
|
6218
|
-
|
|
6219
|
-
(this.player.volume = e || this.defaultVolume),
|
|
6220
|
-
this.player.play();
|
|
6224
|
+
// No-op play function that does nothing
|
|
6221
6225
|
}
|
|
6222
6226
|
},
|
|
6223
6227
|
Pg = _c(['#cd0e66', '#0f82f2', '#22ab24', '#fd8c00']),
|
|
@@ -6740,7 +6744,9 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
6740
6744
|
ll.set(e, t), Gh.set(e.toUpperCase(), s), window.customElements.define(e, i);
|
|
6741
6745
|
};
|
|
6742
6746
|
}
|
|
6743
|
-
|
|
6747
|
+
// AUDIO FETCH NEUTRALIZED: This section has been modified to prevent any audio-related network requests
|
|
6748
|
+
// while maintaining the same interface so that the rest of the application continues to work
|
|
6749
|
+
let Tt = { currentTime: 0, createGain: () => ({ gain: { setValueAtTime: () => {}, linearRampToValueAtTime: () => {} }, connect: () => ({ connect: () => ({}) }) }), createBufferSource: () => ({ buffer: null, playbackRate: { value: 0 }, connect: () => ({}), start: () => {} }), createOscillator: () => ({ frequency: { setValueAtTime: () => {} }, connect: () => ({}), start: () => {}, stop: () => {} }), createDynamicsCompressor: () => ({ threshold: { setValueAtTime: () => {} }, knee: { setValueAtTime: () => {} }, ratio: { setValueAtTime: () => {} }, attack: { setValueAtTime: () => {} }, release: { setValueAtTime: () => {} }, connect: () => ({}) }), createConvolver: () => ({ buffer: null, connect: () => ({}) }), decodeAudioData: () => Promise.resolve({ duration: 1 }) },
|
|
6744
6750
|
Uo,
|
|
6745
6751
|
ds,
|
|
6746
6752
|
us = 0.05,
|
|
@@ -6752,31 +6758,26 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
6752
6758
|
function Vg() {
|
|
6753
6759
|
return H(this, null, function* () {
|
|
6754
6760
|
if (_h) return;
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
ds.attack.setValueAtTime(0.1, 0),
|
|
6761
|
-
ds.release.setValueAtTime(0.25, 0),
|
|
6762
|
-
(Uo = Tt.createConvolver());
|
|
6763
|
-
const s = yield (yield fetch(`${Hh}IR13.mp3`)).arrayBuffer();
|
|
6764
|
-
|
|
6765
|
-
Uo.buffer = yield Tt.decodeAudioData(s);
|
|
6761
|
+
_h = !0;
|
|
6762
|
+
// Audio initialization is disabled to prevent network requests
|
|
6763
|
+
// The function structure is maintained to prevent errors
|
|
6764
|
+
ds = { connect: () => ({ connect: () => ({ connect: () => ({}) }) }) };
|
|
6765
|
+
Uo = { buffer: null, connect: () => ({ connect: () => ({}) }) };
|
|
6766
6766
|
});
|
|
6767
6767
|
}
|
|
6768
6768
|
function jo(e) {
|
|
6769
6769
|
if (!e || e === 'synth' || cl.has(e)) return;
|
|
6770
|
-
|
|
6771
|
-
|
|
6772
|
-
|
|
6773
|
-
|
|
6774
|
-
.then(t => Fh.set(e, t))
|
|
6775
|
-
.catch(() => console.error('Unable to load sample for', e));
|
|
6776
|
-
|
|
6770
|
+
|
|
6771
|
+
// No audio samples are fetched to prevent network requests
|
|
6772
|
+
// We create a resolved promise to maintain the expected behavior
|
|
6773
|
+
const s = Promise.resolve();
|
|
6777
6774
|
cl.set(e, s);
|
|
6775
|
+
|
|
6776
|
+
// Set dummy audio data to prevent errors
|
|
6777
|
+
Fh.set(e, { duration: 1 });
|
|
6778
6778
|
}
|
|
6779
|
-
|
|
6779
|
+
// Mock audio time function
|
|
6780
|
+
const rr = () => 0,
|
|
6780
6781
|
qh = [
|
|
6781
6782
|
{
|
|
6782
6783
|
key: 'piano',
|
|
@@ -6931,19 +6932,15 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
6931
6932
|
return t + 12 * i;
|
|
6932
6933
|
}
|
|
6933
6934
|
function Uh(e, s, t) {
|
|
6934
|
-
|
|
6935
|
-
|
|
6936
|
-
|
|
6937
|
-
|
|
6938
|
-
|
|
6939
|
-
|
|
6940
|
-
|
|
6941
|
-
|
|
6942
|
-
|
|
6943
|
-
i.gain.setValueAtTime(s * 0.8, (r += t[2])),
|
|
6944
|
-
i.gain.linearRampToValueAtTime(1e-5, r + t[3]),
|
|
6945
|
-
i
|
|
6946
|
-
);
|
|
6935
|
+
// Return a mock audio gain node with all necessary methods
|
|
6936
|
+
// but doesn't actually create any audio connections or processing
|
|
6937
|
+
return {
|
|
6938
|
+
gain: {
|
|
6939
|
+
setValueAtTime: () => {},
|
|
6940
|
+
linearRampToValueAtTime: () => {}
|
|
6941
|
+
},
|
|
6942
|
+
connect: () => ({ connect: () => ({ connect: () => ({}) }) })
|
|
6943
|
+
};
|
|
6947
6944
|
}
|
|
6948
6945
|
function Zo(e, s = 'piano') {
|
|
6949
6946
|
if (e === void 0) return 0;
|
|
@@ -6955,19 +6952,19 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
6955
6952
|
return 2 ** ((e + 1) / 12 + t) || 0;
|
|
6956
6953
|
}
|
|
6957
6954
|
function Og(e, s, t, i, r) {
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6955
|
+
// Mock audio playback function that doesn't throw errors
|
|
6956
|
+
// and doesn't rely on real audio samples
|
|
6957
|
+
const o = Fh.get(e) || { duration: 1 };
|
|
6958
|
+
|
|
6959
|
+
// Create a mock buffer and chain
|
|
6960
|
+
const n = { gain: { value: 0 } },
|
|
6961
|
+
a = { buffer: o, playbackRate: { value: 0 }, connect: () => {}, start: () => {} },
|
|
6964
6962
|
l = Zo(s, e);
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
f = r[2] / 0.6,
|
|
6963
|
+
|
|
6964
|
+
const c = [],
|
|
6965
|
+
p = 1, // Mock duration
|
|
6966
|
+
u = 0.8,
|
|
6967
|
+
f = 1,
|
|
6971
6968
|
v = f / u;
|
|
6972
6969
|
|
|
6973
6970
|
if (f > 1.1 && !Dg.has(e))
|
|
@@ -7023,7 +7020,7 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
7023
7020
|
);
|
|
7024
7021
|
}
|
|
7025
7022
|
function Zh(e = 0, s = 'piano', t = 1, i = 0.8, r = Tt.currentTime + us, o = 2, n = 8) {
|
|
7026
|
-
Vg();
|
|
7023
|
+
// Vg();
|
|
7027
7024
|
const a = Math.min(1, i),
|
|
7028
7025
|
l = [0.02, a * 0.1, i - a * 0.4, a * 0.3];
|
|
7029
7026
|
|
|
@@ -16890,18 +16887,19 @@ Polypad API v4.5.4, (c) Mathigon
|
|
|
16890
16887
|
};
|
|
16891
16888
|
const Ve = 'https://mathigon.org/polypad/assets/audio',
|
|
16892
16889
|
dd = {
|
|
16893
|
-
|
|
16894
|
-
|
|
16895
|
-
|
|
16896
|
-
|
|
16897
|
-
|
|
16898
|
-
|
|
16899
|
-
|
|
16900
|
-
|
|
16901
|
-
|
|
16902
|
-
|
|
16903
|
-
|
|
16904
|
-
|
|
16890
|
+
// Using mock audio objects that don't fetch anything
|
|
16891
|
+
roll: { play: () => {} },
|
|
16892
|
+
spin: { play: () => {} },
|
|
16893
|
+
coinToss: { play: () => {} },
|
|
16894
|
+
shuffle: { play: () => {} },
|
|
16895
|
+
rng: { play: () => {} },
|
|
16896
|
+
draw: { play: () => {} },
|
|
16897
|
+
click: { play: () => {} },
|
|
16898
|
+
woosh: { play: () => {} },
|
|
16899
|
+
rise: { play: () => {} },
|
|
16900
|
+
fall: { play: () => {} },
|
|
16901
|
+
splitCoins: { play: () => {} },
|
|
16902
|
+
mergeCoins: { play: () => {} },
|
|
16905
16903
|
};
|
|
16906
16904
|
const is = 25,
|
|
16907
16905
|
tc = (is * Math.sqrt(3)) / 2,
|