@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 h = [
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
- ], S = /* @__PURE__ */ new Set([
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
- ]), E = (n) => {
24
- var t;
25
- const e = (t = n.current) == null ? void 0 : t.shadowRoot;
26
- if (e) {
27
- const r = e.querySelectorAll("x-polypad");
28
- if (r[0]) {
29
- const s = r[0].querySelector("svg.canvas"), o = s == null ? void 0 : s.querySelector("path.mask");
30
- o == null || o.setAttribute("stroke", "transparent"), o == null || o.setAttribute("fill", "transparent"), o == null || o.removeAttribute("style");
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
- }, y = (n) => {
34
- var o;
35
- const e = (o = n.current) == null ? void 0 : o.shadowRoot, t = e == null ? void 0 : e.querySelector("x-pp-sidebar"), r = t == null ? void 0 : t.getElementsByClassName("tabs-header"), s = t == null ? void 0 : t.getElementsByClassName("tabs-body");
36
- if (t == null || t.setAttribute("style", "display: none;"), t == null || t.setAttribute("style", "height: 30px;"), r && r.length > 0) {
37
- const a = r[0];
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
- t == null || t.setAttribute("style", "display: block;");
45
- }, b = (n) => {
46
- var t;
47
- const e = (t = n.current.shadowRoot) == null ? void 0 : t.querySelectorAll('[data-key="music"]')[0];
48
- e && (e.style.display = "none");
49
- }, f = (n, e, t, r) => t === "canvas" ? {
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: n,
52
- canvasY: e,
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: n,
60
- canvasY: e,
59
+ canvasX: e,
60
+ canvasY: t,
61
61
  grid: "none",
62
- noPinchPan: r === "STUDENT",
63
- noDeleting: r === "STUDENT",
64
- noCopyPaste: r === "STUDENT",
62
+ noPinchPan: n === "STUDENT",
63
+ noDeleting: n === "STUDENT",
64
+ noCopyPaste: n === "STUDENT",
65
65
  noMusic: !0,
66
66
  noAudio: !0
67
- }, C = (n, e) => n === "canvas" ? {
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: e === "TEACHER",
74
+ sidebarTiles: t === "TEACHER",
75
75
  sidebarSettings: !1,
76
76
  settings: !1,
77
77
  toolbar: !1
78
- }, d = (n) => [n[1], n[0]], v = (n) => {
79
- const e = /* @__PURE__ */ new Map();
80
- return n.forEach((t, r) => {
81
- e.set(r, d(t));
82
- }), e;
83
- }, O = (n) => {
84
- switch (n) {
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 [n, void 0];
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 = (n, e) => e === "whiteboard" ? n === "TEACHER" ? g : A : n === "TEACHER" ? p : T, N = (n, e = "canvas") => e === "whiteboard" ? Object.keys(u).filter(
140
- (t) => !t.startsWith("CANVAS")
141
- ) : n === "TEACHER" ? ["CANVAS_RED", "CANVAS_YELLOW", "CANVAS_GREEN"] : ["CANVAS_BLUE", "CANVAS_PURPLE", "CANVAS_PINK"], _ = (n) => ["pen", "ruler", "marker", "highlighter"].includes(n), k = (n) => Object.values(n).some((e) => !!(!e[0] && e[1] && "name" in e[1] && (e[1].name === "text" || e[1].name === "equation"))), q = (n) => {
142
- const e = n.split(","), t = e[0] ?? "", r = e[1] ?? "", o = t.includes("base64") ? atob(r) : decodeURIComponent(r), a = t.match(/:(.*?);/), l = a ? a[1] : "application/octet-stream", i = new Uint8Array(o.length);
143
- for (let c = 0; c < o.length; c++)
144
- i[c] = o.charCodeAt(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
- h as GRID_NAMES,
149
- S as STATELESS_TOOLS,
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
- E as removeMask,
160
+ y as removeMask,
161
161
  b as removeMusicTiles,
162
- y as removeTileButton
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
- (this.src = e),
6212
- (this.defaultVolume = s),
6213
- (this.player = new Audio()),
6214
- (this.player.src = e),
6215
- t && (this.player.preload = 'auto');
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
- (this.player.currentTime = 0),
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
- let Tt = new AudioContext(),
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
- (_h = !0),
6756
- (ds = Tt.createDynamicsCompressor()),
6757
- ds.threshold.setValueAtTime(-5, 0),
6758
- ds.knee.setValueAtTime(0.4, 0),
6759
- ds.ratio.setValueAtTime(10, 0),
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
- const s = fetch(`${Hh}${e}.mp3?v=2`)
6772
- .then(t => t.arrayBuffer())
6773
- .then(t => Tt.decodeAudioData(t))
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
- const rr = () => Tt.currentTime,
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
- const i = Tt.createGain();
6935
-
6936
- i.connect(ds), i.connect(Uo).connect(ds).connect(Tt.destination);
6937
- let r = e + 1e-5;
6938
-
6939
- return (
6940
- i.gain.setValueAtTime(1e-5, r),
6941
- i.gain.linearRampToValueAtTime(s, (r += t[0])),
6942
- i.gain.linearRampToValueAtTime(s * 0.8, (r += t[1])),
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
- const o = Fh.get(e);
6959
-
6960
- if (!o) throw new Error(`Missing audio sample: ${e}`);
6961
-
6962
- const n = Uh(t, i, r),
6963
- a = Tt.createBufferSource(),
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
- (a.playbackRate.value = l), (a.buffer = o), a.connect(n), a.start(t);
6967
- const c = [a],
6968
- p = a.buffer.duration / l,
6969
- u = p * 0.5 > 1.5 ? 0.8 : p * 0.5,
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
- roll: new be(`${Ve}/roll.mp3`, 0.6, !1),
16894
- spin: new be(`${Ve}/spin.mp3`, 0.5, !1),
16895
- coinToss: new be(`${Ve}/coin-toss.mp3`, 0.3, !1),
16896
- shuffle: new be(`${Ve}/shuffle.mp3`, 0.3, !1),
16897
- rng: new be(`${Ve}/rng-roll.mp3`, 0.3, !1),
16898
- draw: new be(`${Ve}/card-draw.mp3`, 0.2, !1),
16899
- click: new be(`${Ve}/click.mp3`, 0.3, !1),
16900
- woosh: new be(`${Ve}/woosh.mp3`, 0.2, !1),
16901
- rise: new be(`${Ve}/rise.mp3`, 0.3, !1),
16902
- fall: new be(`${Ve}/fall.mp3`, 0.3, !1),
16903
- splitCoins: new be(`${Ve}/split-coins.mp3`, 0.175, !1),
16904
- mergeCoins: new be(`${Ve}/merge-coins.mp3`, 0.3, !1),
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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.1.41-as5",
3
+ "version": "3.1.41-as7",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"