@cuemath/leap 2.8.50 → 2.8.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/assets/illustrations/illustrations.js +1 -0
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/line-icons/icons/clear-all.js +53 -0
  4. package/dist/assets/line-icons/icons/clear-all.js.map +1 -0
  5. package/dist/assets/line-icons/icons/download.js +48 -0
  6. package/dist/assets/line-icons/icons/download.js.map +1 -0
  7. package/dist/assets/line-icons/icons/equation.js +48 -0
  8. package/dist/assets/line-icons/icons/equation.js.map +1 -0
  9. package/dist/assets/line-icons/icons/grid-icon.js +42 -0
  10. package/dist/assets/line-icons/icons/grid-icon.js.map +1 -0
  11. package/dist/assets/line-icons/icons/pan.js +98 -0
  12. package/dist/assets/line-icons/icons/pan.js.map +1 -0
  13. package/dist/assets/line-icons/icons/square-checked-grid.js +25 -0
  14. package/dist/assets/line-icons/icons/square-checked-grid.js.map +1 -0
  15. package/dist/assets/line-icons/icons/square-dots.js +32 -0
  16. package/dist/assets/line-icons/icons/square-dots.js.map +1 -0
  17. package/dist/assets/line-icons/icons/square-grid.js +17 -0
  18. package/dist/assets/line-icons/icons/square-grid.js.map +1 -0
  19. package/dist/assets/line-icons/icons/square2-grid.js +13 -0
  20. package/dist/assets/line-icons/icons/square2-grid.js.map +1 -0
  21. package/dist/assets/line-icons/icons/text-icon.js +48 -0
  22. package/dist/assets/line-icons/icons/text-icon.js.map +1 -0
  23. package/dist/assets/line-icons/icons/tri-dots.js +27 -0
  24. package/dist/assets/line-icons/icons/tri-dots.js.map +1 -0
  25. package/dist/assets/line-icons/icons/tri-grid.js +27 -0
  26. package/dist/assets/line-icons/icons/tri-grid.js.map +1 -0
  27. package/dist/assets/line-icons/icons/tri2-dots.js +27 -0
  28. package/dist/assets/line-icons/icons/tri2-dots.js.map +1 -0
  29. package/dist/assets/line-icons/icons/tri2-grid.js +27 -0
  30. package/dist/assets/line-icons/icons/tri2-grid.js.map +1 -0
  31. package/dist/assets/line-icons/icons/upload.js +48 -0
  32. package/dist/assets/line-icons/icons/upload.js.map +1 -0
  33. package/dist/assets/line-icons/icons/zoom-in.js +58 -0
  34. package/dist/assets/line-icons/icons/zoom-in.js.map +1 -0
  35. package/dist/assets/line-icons/icons/zoom-out.js +48 -0
  36. package/dist/assets/line-icons/icons/zoom-out.js.map +1 -0
  37. package/dist/features/cue-canvas/cue-canvas-core.js +138 -49
  38. package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
  39. package/dist/features/cue-canvas/cue-canvas-helpers.js +88 -29
  40. package/dist/features/cue-canvas/cue-canvas-helpers.js.map +1 -1
  41. package/dist/features/cue-canvas/cue-canvas.js +57 -49
  42. package/dist/features/cue-canvas/cue-canvas.js.map +1 -1
  43. package/dist/features/cue-canvas/cue-cavas-styled.js +127 -92
  44. package/dist/features/cue-canvas/cue-cavas-styled.js.map +1 -1
  45. package/dist/features/cue-canvas/toolbar/color-palette.js +49 -0
  46. package/dist/features/cue-canvas/toolbar/color-palette.js.map +1 -0
  47. package/dist/features/cue-canvas/toolbar/color-picker-menu.js +62 -0
  48. package/dist/features/cue-canvas/toolbar/color-picker-menu.js.map +1 -0
  49. package/dist/features/cue-canvas/toolbar/grid-menu.js +62 -0
  50. package/dist/features/cue-canvas/toolbar/grid-menu.js.map +1 -0
  51. package/dist/features/cue-canvas/toolbar/icon-map.js +58 -0
  52. package/dist/features/cue-canvas/toolbar/icon-map.js.map +1 -0
  53. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js +56 -0
  54. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js.map +1 -0
  55. package/dist/features/cue-canvas/toolbar/tool.js +34 -0
  56. package/dist/features/cue-canvas/toolbar/tool.js.map +1 -0
  57. package/dist/features/cue-canvas/toolbar/toolbar.js +18 -87
  58. package/dist/features/cue-canvas/toolbar/toolbar.js.map +1 -1
  59. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js +16 -0
  60. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js.map +1 -0
  61. package/dist/features/trial-session/comps/offering-information/offering-information-constants.js +7 -10
  62. package/dist/features/trial-session/comps/offering-information/offering-information-constants.js.map +1 -1
  63. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +7 -7
  64. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
  65. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +1 -1
  66. package/dist/index.d.ts +16 -2
  67. package/dist/static/chapter-header-bg.4ed173c2.svg +1 -0
  68. package/package.json +1 -1
  69. package/dist/features/cue-canvas/toolbar/color-pallete.js +0 -49
  70. package/dist/features/cue-canvas/toolbar/color-pallete.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tri-dots.js","sources":["../../../../src/assets/line-icons/icons/tri-dots.tsx"],"sourcesContent":["const TriDotSvg: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\" {...props}>\n <circle cx=\"15\" cy=\"4\" r=\"1.5\" />\n <circle cx=\"3.5\" cy=\"4\" r=\"1.5\" />\n <circle cx=\"26.5\" cy=\"4\" r=\"1.5\" />\n <circle cx=\"38\" cy=\"4\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"44\" r=\"1.5\" />\n <circle cx=\"3.5\" cy=\"44\" r=\"1.5\" />\n <circle cx=\"26.5\" cy=\"44\" r=\"1.5\" />\n <circle cx=\"38\" cy=\"44\" r=\"1.5\" />\n <circle cx=\"21\" cy=\"14\" r=\"1.5\" />\n <circle cx=\"9.5\" cy=\"14\" r=\"1.5\" />\n <circle cx=\"32.5\" cy=\"14\" r=\"1.5\" />\n <circle cx=\"44\" cy=\"14\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"24\" r=\"1.5\" />\n <circle cx=\"3.5\" cy=\"24\" r=\"1.5\" />\n <circle cx=\"26.5\" cy=\"24\" r=\"1.5\" />\n <circle cx=\"38\" cy=\"24\" r=\"1.5\" />\n <circle cx=\"21\" cy=\"34\" r=\"1.5\" />\n <circle cx=\"9.5\" cy=\"34\" r=\"1.5\" />\n <circle cx=\"32.5\" cy=\"34\" r=\"1.5\" />\n <circle cx=\"44\" cy=\"34\" r=\"1.5\" />\n </svg>\n);\n\nexport default TriDotSvg;\n"],"names":["TriDotSvg","jsxs","props","jsx"],"mappings":";AAAM,MAAAA,IAAqD,OACxD,gBAAAC,EAAA,OAAA,EAAI,OAAM,8BAA6B,SAAQ,aAAa,GAAGC,GAC9D,UAAA;AAAA,EAAA,gBAAAC,EAAC,YAAO,IAAG,MAAK,IAAG,KAAI,GAAE,OAAM;AAAA,oBAC9B,UAAO,EAAA,IAAG,OAAM,IAAG,KAAI,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,QAAO,IAAG,KAAI,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,MAAK,IAAG,KAAI,GAAE,OAAM;AAAA,oBAC9B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,OAAM,IAAG,MAAK,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,QAAO,IAAG,MAAK,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,OAAM,IAAG,MAAK,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,QAAO,IAAG,MAAK,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,OAAM,IAAG,MAAK,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,QAAO,IAAG,MAAK,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,OAAM,IAAG,MAAK,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,QAAO,IAAG,MAAK,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,EAClC,CAAA;"}
@@ -0,0 +1,27 @@
1
+ import { jsx as h, jsxs as d } from "react/jsx-runtime";
2
+ const p = (t) => /* @__PURE__ */ h("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", ...t, children: /* @__PURE__ */ d("g", { fill: "none", stroke: "#000", children: [
3
+ /* @__PURE__ */ h("path", { d: "m.5 44h48" }),
4
+ /* @__PURE__ */ h("path", { d: "m0 24h48" }),
5
+ /* @__PURE__ */ h("path", { d: "m0 34h48" }),
6
+ /* @__PURE__ */ h("path", { d: "m0 44h48" }),
7
+ /* @__PURE__ */ h("path", { d: "m0 4h48" }),
8
+ /* @__PURE__ */ h("path", { d: "m0 14h48" }),
9
+ /* @__PURE__ */ h("path", { d: "m-.5 48 28-48" }),
10
+ /* @__PURE__ */ h("path", { d: "m-.5 27.8 16.2-27.8" }),
11
+ /* @__PURE__ */ h("path", { d: "m-.5 8.4 4.9-8.4" }),
12
+ /* @__PURE__ */ h("path", { d: "m3.9 48-4.4-7.5" }),
13
+ /* @__PURE__ */ h("path", { d: "m11.3 48 28-48" }),
14
+ /* @__PURE__ */ h("path", { d: "m27.5 48-28-48" }),
15
+ /* @__PURE__ */ h("path", { d: "m22.8 48 25.7-44" }),
16
+ /* @__PURE__ */ h("path", { d: "m39 48-28-48" }),
17
+ /* @__PURE__ */ h("path", { d: "m34.5 48 14-24" }),
18
+ /* @__PURE__ */ h("path", { d: "m49.2 45.5-26.5-45.5" }),
19
+ /* @__PURE__ */ h("path", { d: "m48.5 24-14-24" }),
20
+ /* @__PURE__ */ h("path", { d: "m48.5 4-2.2-4" }),
21
+ /* @__PURE__ */ h("path", { d: "m46.3 48 2.2-4" }),
22
+ /* @__PURE__ */ h("path", { d: "m15.7 48-16.2-27.8" })
23
+ ] }) });
24
+ export {
25
+ p as default
26
+ };
27
+ //# sourceMappingURL=tri-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tri-grid.js","sources":["../../../../src/assets/line-icons/icons/tri-grid.tsx"],"sourcesContent":["const TriGridSvg: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g fill=\"none\" stroke=\"#000\">\n <path d=\"m.5 44h48\" />\n <path d=\"m0 24h48\" />\n <path d=\"m0 34h48\" />\n <path d=\"m0 44h48\" />\n <path d=\"m0 4h48\" />\n <path d=\"m0 14h48\" />\n <path d=\"m-.5 48 28-48\" />\n <path d=\"m-.5 27.8 16.2-27.8\" />\n <path d=\"m-.5 8.4 4.9-8.4\" />\n <path d=\"m3.9 48-4.4-7.5\" />\n <path d=\"m11.3 48 28-48\" />\n <path d=\"m27.5 48-28-48\" />\n <path d=\"m22.8 48 25.7-44\" />\n <path d=\"m39 48-28-48\" />\n <path d=\"m34.5 48 14-24\" />\n <path d=\"m49.2 45.5-26.5-45.5\" />\n <path d=\"m48.5 24-14-24\" />\n <path d=\"m48.5 4-2.2-4\" />\n <path d=\"m46.3 48 2.2-4\" />\n <path d=\"m15.7 48-16.2-27.8\" />\n </g>\n </svg>\n);\n\nexport default TriGridSvg;\n"],"names":["TriGridSvg","props","jsx","jsxs"],"mappings":";AAAA,MAAMA,IAAsD,CAAAC,MACzD,gBAAAC,EAAA,OAAA,EAAI,SAAQ,aAAY,OAAM,8BAA8B,GAAGD,GAC9D,UAAC,gBAAAE,EAAA,KAAA,EAAE,MAAK,QAAO,QAAO,QACpB,UAAA;AAAA,EAAC,gBAAAD,EAAA,QAAA,EAAK,GAAE,YAAY,CAAA;AAAA,EACpB,gBAAAA,EAAC,QAAK,EAAA,GAAE,WAAW,CAAA;AAAA,EACnB,gBAAAA,EAAC,QAAK,EAAA,GAAE,WAAW,CAAA;AAAA,EACnB,gBAAAA,EAAC,QAAK,EAAA,GAAE,WAAW,CAAA;AAAA,EACnB,gBAAAA,EAAC,QAAK,EAAA,GAAE,UAAU,CAAA;AAAA,EAClB,gBAAAA,EAAC,QAAK,EAAA,GAAE,WAAW,CAAA;AAAA,EACnB,gBAAAA,EAAC,QAAK,EAAA,GAAE,gBAAgB,CAAA;AAAA,EACxB,gBAAAA,EAAC,QAAK,EAAA,GAAE,sBAAsB,CAAA;AAAA,EAC9B,gBAAAA,EAAC,QAAK,EAAA,GAAE,mBAAmB,CAAA;AAAA,EAC3B,gBAAAA,EAAC,QAAK,EAAA,GAAE,kBAAkB,CAAA;AAAA,EAC1B,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,mBAAmB,CAAA;AAAA,EAC3B,gBAAAA,EAAC,QAAK,EAAA,GAAE,eAAe,CAAA;AAAA,EACvB,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,uBAAuB,CAAA;AAAA,EAC/B,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,gBAAgB,CAAA;AAAA,EACxB,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,qBAAqB,CAAA;AAAA,EAAA,CAC/B,EACF,CAAA;"}
@@ -0,0 +1,27 @@
1
+ import { jsxs as x, jsx as c } from "react/jsx-runtime";
2
+ const i = (r) => /* @__PURE__ */ x("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 48 48", ...r, children: [
3
+ /* @__PURE__ */ c("circle", { cx: "4", cy: "15", r: "1.5" }),
4
+ /* @__PURE__ */ c("circle", { cx: "4", cy: "3.5", r: "1.5" }),
5
+ /* @__PURE__ */ c("circle", { cx: "4", cy: "26.5", r: "1.5" }),
6
+ /* @__PURE__ */ c("circle", { cx: "4", cy: "38", r: "1.5" }),
7
+ /* @__PURE__ */ c("circle", { cx: "44", cy: "15", r: "1.5" }),
8
+ /* @__PURE__ */ c("circle", { cx: "44", cy: "3.5", r: "1.5" }),
9
+ /* @__PURE__ */ c("circle", { cx: "44", cy: "26.5", r: "1.5" }),
10
+ /* @__PURE__ */ c("circle", { cx: "44", cy: "38", r: "1.5" }),
11
+ /* @__PURE__ */ c("circle", { cx: "14", cy: "21", r: "1.5" }),
12
+ /* @__PURE__ */ c("circle", { cx: "14", cy: "9.5", r: "1.5" }),
13
+ /* @__PURE__ */ c("circle", { cx: "14", cy: "32.5", r: "1.5" }),
14
+ /* @__PURE__ */ c("circle", { cx: "14", cy: "44", r: "1.5" }),
15
+ /* @__PURE__ */ c("circle", { cx: "24", cy: "15", r: "1.5" }),
16
+ /* @__PURE__ */ c("circle", { cx: "24", cy: "3.5", r: "1.5" }),
17
+ /* @__PURE__ */ c("circle", { cx: "24", cy: "26.5", r: "1.5" }),
18
+ /* @__PURE__ */ c("circle", { cx: "24", cy: "38", r: "1.5" }),
19
+ /* @__PURE__ */ c("circle", { cx: "34", cy: "21", r: "1.5" }),
20
+ /* @__PURE__ */ c("circle", { cx: "34", cy: "9.5", r: "1.5" }),
21
+ /* @__PURE__ */ c("circle", { cx: "34", cy: "32.5", r: "1.5" }),
22
+ /* @__PURE__ */ c("circle", { cx: "34", cy: "44", r: "1.5" })
23
+ ] });
24
+ export {
25
+ i as default
26
+ };
27
+ //# sourceMappingURL=tri2-dots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tri2-dots.js","sources":["../../../../src/assets/line-icons/icons/tri2-dots.tsx"],"sourcesContent":["const Tri2DotSvg: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\" {...props}>\n <circle cx=\"4\" cy=\"15\" r=\"1.5\" />\n <circle cx=\"4\" cy=\"3.5\" r=\"1.5\" />\n <circle cx=\"4\" cy=\"26.5\" r=\"1.5\" />\n <circle cx=\"4\" cy=\"38\" r=\"1.5\" />\n <circle cx=\"44\" cy=\"15\" r=\"1.5\" />\n <circle cx=\"44\" cy=\"3.5\" r=\"1.5\" />\n <circle cx=\"44\" cy=\"26.5\" r=\"1.5\" />\n <circle cx=\"44\" cy=\"38\" r=\"1.5\" />\n <circle cx=\"14\" cy=\"21\" r=\"1.5\" />\n <circle cx=\"14\" cy=\"9.5\" r=\"1.5\" />\n <circle cx=\"14\" cy=\"32.5\" r=\"1.5\" />\n <circle cx=\"14\" cy=\"44\" r=\"1.5\" />\n <circle cx=\"24\" cy=\"15\" r=\"1.5\" />\n <circle cx=\"24\" cy=\"3.5\" r=\"1.5\" />\n <circle cx=\"24\" cy=\"26.5\" r=\"1.5\" />\n <circle cx=\"24\" cy=\"38\" r=\"1.5\" />\n <circle cx=\"34\" cy=\"21\" r=\"1.5\" />\n <circle cx=\"34\" cy=\"9.5\" r=\"1.5\" />\n <circle cx=\"34\" cy=\"32.5\" r=\"1.5\" />\n <circle cx=\"34\" cy=\"44\" r=\"1.5\" />\n </svg>\n);\n\nexport default Tri2DotSvg;\n"],"names":["Tri2DotSvg","jsxs","props","jsx"],"mappings":";AAAM,MAAAA,IAAsD,OACzD,gBAAAC,EAAA,OAAA,EAAI,OAAM,8BAA6B,SAAQ,aAAa,GAAGC,GAC9D,UAAA;AAAA,EAAA,gBAAAC,EAAC,YAAO,IAAG,KAAI,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC9B,UAAO,EAAA,IAAG,KAAI,IAAG,OAAM,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,KAAI,IAAG,QAAO,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,KAAI,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC9B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,OAAM,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,MAAK,IAAG,QAAO,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,OAAM,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,MAAK,IAAG,QAAO,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,OAAM,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,MAAK,IAAG,QAAO,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,oBAC/B,UAAO,EAAA,IAAG,MAAK,IAAG,OAAM,GAAE,OAAM;AAAA,oBAChC,UAAO,EAAA,IAAG,MAAK,IAAG,QAAO,GAAE,OAAM;AAAA,oBACjC,UAAO,EAAA,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,EAClC,CAAA;"}
@@ -0,0 +1,27 @@
1
+ import { jsx as t, jsxs as h } from "react/jsx-runtime";
2
+ const p = (d) => /* @__PURE__ */ t("svg", { viewBox: "0 0 48 48", xmlns: "http://www.w3.org/2000/svg", ...d, children: /* @__PURE__ */ h("g", { fill: "none", stroke: "#000", children: [
3
+ /* @__PURE__ */ t("path", { d: "m44 47.8v-48" }),
4
+ /* @__PURE__ */ t("path", { d: "m24 48.3v-48" }),
5
+ /* @__PURE__ */ t("path", { d: "m34 48.3v-48" }),
6
+ /* @__PURE__ */ t("path", { d: "m44 48.3v-48" }),
7
+ /* @__PURE__ */ t("path", { d: "m4 48.3v-48" }),
8
+ /* @__PURE__ */ t("path", { d: "m14 48.3v-48" }),
9
+ /* @__PURE__ */ t("path", { d: "m48 48.8-48-28" }),
10
+ /* @__PURE__ */ t("path", { d: "m27.8 48.8-27.8-16.2" }),
11
+ /* @__PURE__ */ t("path", { d: "m8.4 48.8-8.4-4.9" }),
12
+ /* @__PURE__ */ t("path", { d: "m48 44.5-7.5 4.3" }),
13
+ /* @__PURE__ */ t("path", { d: "m48 37.1-48-28" }),
14
+ /* @__PURE__ */ t("path", { d: "m48 20.8-48 28" }),
15
+ /* @__PURE__ */ t("path", { d: "m48 25.5-44-25.7" }),
16
+ /* @__PURE__ */ t("path", { d: "m48 9.3-48 28" }),
17
+ /* @__PURE__ */ t("path", { d: "m48 13.9-24-14.1" }),
18
+ /* @__PURE__ */ t("path", { d: "m45.5-.8-45.5 26.5" }),
19
+ /* @__PURE__ */ t("path", { d: "m24-.2-24 14.1" }),
20
+ /* @__PURE__ */ t("path", { d: "m4-.2-4 2.2" }),
21
+ /* @__PURE__ */ t("path", { d: "m48 2-4-2.2" }),
22
+ /* @__PURE__ */ t("path", { d: "m48 32.6-27.8 16.2" })
23
+ ] }) });
24
+ export {
25
+ p as default
26
+ };
27
+ //# sourceMappingURL=tri2-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tri2-grid.js","sources":["../../../../src/assets/line-icons/icons/tri2-grid.tsx"],"sourcesContent":["const Tri2GridSvg: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g fill=\"none\" stroke=\"#000\">\n <path d=\"m44 47.8v-48\" />\n <path d=\"m24 48.3v-48\" />\n <path d=\"m34 48.3v-48\" />\n <path d=\"m44 48.3v-48\" />\n <path d=\"m4 48.3v-48\" />\n <path d=\"m14 48.3v-48\" />\n <path d=\"m48 48.8-48-28\" />\n <path d=\"m27.8 48.8-27.8-16.2\" />\n <path d=\"m8.4 48.8-8.4-4.9\" />\n <path d=\"m48 44.5-7.5 4.3\" />\n <path d=\"m48 37.1-48-28\" />\n <path d=\"m48 20.8-48 28\" />\n <path d=\"m48 25.5-44-25.7\" />\n <path d=\"m48 9.3-48 28\" />\n <path d=\"m48 13.9-24-14.1\" />\n <path d=\"m45.5-.8-45.5 26.5\" />\n <path d=\"m24-.2-24 14.1\" />\n <path d=\"m4-.2-4 2.2\" />\n <path d=\"m48 2-4-2.2\" />\n <path d=\"m48 32.6-27.8 16.2\" />\n </g>\n </svg>\n);\n\nexport default Tri2GridSvg;\n"],"names":["Tri2GridSvg","props","jsx","jsxs"],"mappings":";AAAA,MAAMA,IAAuD,CAAAC,MAC1D,gBAAAC,EAAA,OAAA,EAAI,SAAQ,aAAY,OAAM,8BAA8B,GAAGD,GAC9D,UAAC,gBAAAE,EAAA,KAAA,EAAE,MAAK,QAAO,QAAO,QACpB,UAAA;AAAA,EAAC,gBAAAD,EAAA,QAAA,EAAK,GAAE,eAAe,CAAA;AAAA,EACvB,gBAAAA,EAAC,QAAK,EAAA,GAAE,eAAe,CAAA;AAAA,EACvB,gBAAAA,EAAC,QAAK,EAAA,GAAE,eAAe,CAAA;AAAA,EACvB,gBAAAA,EAAC,QAAK,EAAA,GAAE,eAAe,CAAA;AAAA,EACvB,gBAAAA,EAAC,QAAK,EAAA,GAAE,cAAc,CAAA;AAAA,EACtB,gBAAAA,EAAC,QAAK,EAAA,GAAE,eAAe,CAAA;AAAA,EACvB,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,uBAAuB,CAAA;AAAA,EAC/B,gBAAAA,EAAC,QAAK,EAAA,GAAE,oBAAoB,CAAA;AAAA,EAC5B,gBAAAA,EAAC,QAAK,EAAA,GAAE,mBAAmB,CAAA;AAAA,EAC3B,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,mBAAmB,CAAA;AAAA,EAC3B,gBAAAA,EAAC,QAAK,EAAA,GAAE,gBAAgB,CAAA;AAAA,EACxB,gBAAAA,EAAC,QAAK,EAAA,GAAE,mBAAmB,CAAA;AAAA,EAC3B,gBAAAA,EAAC,QAAK,EAAA,GAAE,qBAAqB,CAAA;AAAA,EAC7B,gBAAAA,EAAC,QAAK,EAAA,GAAE,iBAAiB,CAAA;AAAA,EACzB,gBAAAA,EAAC,QAAK,EAAA,GAAE,cAAc,CAAA;AAAA,EACtB,gBAAAA,EAAC,QAAK,EAAA,GAAE,cAAc,CAAA;AAAA,EACtB,gBAAAA,EAAC,QAAK,EAAA,GAAE,qBAAqB,CAAA;AAAA,EAAA,CAC/B,EACF,CAAA;"}
@@ -0,0 +1,48 @@
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
+ const s = (o) => /* @__PURE__ */ t(
3
+ "svg",
4
+ {
5
+ width: "20",
6
+ height: "20",
7
+ viewBox: "0 0 20 20",
8
+ fill: "none",
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ ...o,
11
+ children: [
12
+ /* @__PURE__ */ e(
13
+ "path",
14
+ {
15
+ d: "M16.6666 12.499V15.2768C16.6666 15.6452 16.5203 15.9984 16.2599 16.2589C15.9994 16.5194 15.6461 16.6657 15.2778 16.6657H5.55554C5.18718 16.6657 4.83391 16.5194 4.57344 16.2589C4.31298 15.9984 4.16665 15.6452 4.16665 15.2768V12.499",
16
+ stroke: "#2B2B2B",
17
+ strokeWidth: "1.38889",
18
+ strokeLinecap: "square",
19
+ strokeLinejoin: "round"
20
+ }
21
+ ),
22
+ /* @__PURE__ */ e(
23
+ "path",
24
+ {
25
+ d: "M13.8894 7.63824L10.4172 4.16602L6.94497 7.63824",
26
+ stroke: "#2B2B2B",
27
+ strokeWidth: "1.38889",
28
+ strokeLinecap: "square",
29
+ strokeLinejoin: "round"
30
+ }
31
+ ),
32
+ /* @__PURE__ */ e(
33
+ "path",
34
+ {
35
+ d: "M10.4166 4.86035V12.4992",
36
+ stroke: "#2B2B2B",
37
+ strokeWidth: "1.38889",
38
+ strokeLinecap: "square",
39
+ strokeLinejoin: "round"
40
+ }
41
+ )
42
+ ]
43
+ }
44
+ );
45
+ export {
46
+ s as default
47
+ };
48
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sources":["../../../../src/assets/line-icons/icons/upload.tsx"],"sourcesContent":["const UploadIcon: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M16.6666 12.499V15.2768C16.6666 15.6452 16.5203 15.9984 16.2599 16.2589C15.9994 16.5194 15.6461 16.6657 15.2778 16.6657H5.55554C5.18718 16.6657 4.83391 16.5194 4.57344 16.2589C4.31298 15.9984 4.16665 15.6452 4.16665 15.2768V12.499\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.8894 7.63824L10.4172 4.16602L6.94497 7.63824\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10.4166 4.86035V12.4992\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport default UploadIcon;\n"],"names":["UploadIcon","props","jsxs","jsx"],"mappings":";AAAA,MAAMA,IAAsD,CAC1DC,MAAA,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAGD;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,IAAA;AAAA,EAAA;AACF;"}
@@ -0,0 +1,58 @@
1
+ import { jsxs as t, jsx as o } from "react/jsx-runtime";
2
+ const s = (e) => /* @__PURE__ */ t(
3
+ "svg",
4
+ {
5
+ width: "20",
6
+ height: "20",
7
+ viewBox: "0 0 20 20",
8
+ fill: "none",
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ ...e,
11
+ children: [
12
+ /* @__PURE__ */ o(
13
+ "path",
14
+ {
15
+ d: "M9.72221 15.2771C12.7905 15.2771 15.2778 12.7898 15.2778 9.72157C15.2778 6.65332 12.7905 4.16602 9.72221 4.16602C6.65396 4.16602 4.16666 6.65332 4.16666 9.72157C4.16666 12.7898 6.65396 15.2771 9.72221 15.2771Z",
16
+ stroke: "#2B2B2B",
17
+ strokeWidth: "1.38889",
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round"
20
+ }
21
+ ),
22
+ /* @__PURE__ */ o(
23
+ "path",
24
+ {
25
+ d: "M16.6667 16.6663L13.6458 13.6455",
26
+ stroke: "#2B2B2B",
27
+ strokeWidth: "1.38889",
28
+ strokeLinecap: "square",
29
+ strokeLinejoin: "round"
30
+ }
31
+ ),
32
+ /* @__PURE__ */ o(
33
+ "path",
34
+ {
35
+ d: "M9.72166 7.63867V11.8053",
36
+ stroke: "#2B2B2B",
37
+ strokeWidth: "1.38889",
38
+ strokeLinecap: "square",
39
+ strokeLinejoin: "round"
40
+ }
41
+ ),
42
+ /* @__PURE__ */ o(
43
+ "path",
44
+ {
45
+ d: "M7.63834 9.72168H11.805",
46
+ stroke: "#2B2B2B",
47
+ strokeWidth: "1.38889",
48
+ strokeLinecap: "square",
49
+ strokeLinejoin: "round"
50
+ }
51
+ )
52
+ ]
53
+ }
54
+ );
55
+ export {
56
+ s as default
57
+ };
58
+ //# sourceMappingURL=zoom-in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoom-in.js","sources":["../../../../src/assets/line-icons/icons/zoom-in.tsx"],"sourcesContent":["const ZoomInIcon: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M9.72221 15.2771C12.7905 15.2771 15.2778 12.7898 15.2778 9.72157C15.2778 6.65332 12.7905 4.16602 9.72221 4.16602C6.65396 4.16602 4.16666 6.65332 4.16666 9.72157C4.16666 12.7898 6.65396 15.2771 9.72221 15.2771Z\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.6667 16.6663L13.6458 13.6455\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.72166 7.63867V11.8053\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.63834 9.72168H11.805\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport default ZoomInIcon;\n"],"names":["ZoomInIcon","props","jsxs","jsx"],"mappings":";AAAA,MAAMA,IAAsD,CAC1DC,MAAA,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAGD;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,IAAA;AAAA,EAAA;AACF;"}
@@ -0,0 +1,48 @@
1
+ import { jsxs as e, jsx as o } from "react/jsx-runtime";
2
+ const s = (t) => /* @__PURE__ */ e(
3
+ "svg",
4
+ {
5
+ width: "20",
6
+ height: "20",
7
+ viewBox: "0 0 20 20",
8
+ fill: "none",
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ ...t,
11
+ children: [
12
+ /* @__PURE__ */ o(
13
+ "path",
14
+ {
15
+ d: "M9.7222 15.2771C12.7905 15.2771 15.2778 12.7898 15.2778 9.72157C15.2778 6.65332 12.7905 4.16602 9.7222 4.16602C6.65396 4.16602 4.16665 6.65332 4.16665 9.72157C4.16665 12.7898 6.65396 15.2771 9.7222 15.2771Z",
16
+ stroke: "#2B2B2B",
17
+ strokeWidth: "1.38889",
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round"
20
+ }
21
+ ),
22
+ /* @__PURE__ */ o(
23
+ "path",
24
+ {
25
+ d: "M16.6666 16.6663L13.6458 13.6455",
26
+ stroke: "#2B2B2B",
27
+ strokeWidth: "1.38889",
28
+ strokeLinecap: "square",
29
+ strokeLinejoin: "round"
30
+ }
31
+ ),
32
+ /* @__PURE__ */ o(
33
+ "path",
34
+ {
35
+ d: "M7.63833 9.72168H11.805",
36
+ stroke: "#2B2B2B",
37
+ strokeWidth: "1.38889",
38
+ strokeLinecap: "square",
39
+ strokeLinejoin: "round"
40
+ }
41
+ )
42
+ ]
43
+ }
44
+ );
45
+ export {
46
+ s as default
47
+ };
48
+ //# sourceMappingURL=zoom-out.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoom-out.js","sources":["../../../../src/assets/line-icons/icons/zoom-out.tsx"],"sourcesContent":["const ZoomOutIcon: React.FC<React.SVGProps<SVGSVGElement>> = props => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M9.7222 15.2771C12.7905 15.2771 15.2778 12.7898 15.2778 9.72157C15.2778 6.65332 12.7905 4.16602 9.7222 4.16602C6.65396 4.16602 4.16665 6.65332 4.16665 9.72157C4.16665 12.7898 6.65396 15.2771 9.7222 15.2771Z\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.6666 16.6663L13.6458 13.6455\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.63833 9.72168H11.805\"\n stroke=\"#2B2B2B\"\n strokeWidth=\"1.38889\"\n strokeLinecap=\"square\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport default ZoomOutIcon;\n"],"names":["ZoomOutIcon","props","jsxs","jsx"],"mappings":";AAAA,MAAMA,IAAuD,CAC3DC,MAAA,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAGD;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MACjB;AAAA,IAAA;AAAA,EAAA;AACF;"}
@@ -1,68 +1,156 @@
1
- var c = Object.defineProperty;
2
- var d = (o, t, s) => t in o ? c(o, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : o[t] = s;
3
- var e = (o, t, s) => d(o, typeof t != "symbol" ? t + "" : t, s);
4
- import { removeMask as p, getReverseMap as u, getToolAndSubtool as l } from "./cue-canvas-helpers.js";
5
- class y {
6
- constructor(t, s, i, a, h, n, r) {
7
- e(this, "polycanvas");
8
- e(this, "publish");
9
- e(this, "height");
10
- e(this, "onUpdateHeight");
11
- e(this, "userId");
12
- e(this, "responseId");
13
- e(this, "userType");
14
- e(this, "resetViewPort", () => {
15
- this.polycanvas && this.polycanvas.resetViewport();
16
- });
17
- e(this, "onChange", (t) => {
18
- const i = Object.fromEntries(t.entries());
1
+ var d = Object.defineProperty;
2
+ var u = (r, t, e) => t in r ? d(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
+ var s = (r, t, e) => u(r, typeof t != "symbol" ? t + "" : t, e);
4
+ import v from "../../node_modules/lodash.debounce/index.js";
5
+ import { removeMask as f, checkTextOrEquationTool as g, getReverseMap as y, getToolAndSubtool as m } from "./cue-canvas-helpers.js";
6
+ class T {
7
+ constructor(t, e, i, n, o, a, p, h, c, l) {
8
+ s(this, "polycanvas");
9
+ s(this, "publish");
10
+ s(this, "height");
11
+ s(this, "onUpdateActiveTool");
12
+ s(this, "onUpdateHeight");
13
+ s(this, "userId");
14
+ s(this, "responseId");
15
+ s(this, "userType");
16
+ s(this, "renderAs");
17
+ s(this, "fileInput", null);
18
+ s(this, "debouncedViewportChange");
19
+ s(this, "uploadImageToS3");
20
+ s(this, "publishToChannel", (t, e, i) => {
19
21
  this.publish && this.publish({
20
22
  eventName: "cue_canvas_changed",
21
23
  eventPayload: {
22
- data: i,
24
+ data: t,
23
25
  height: this.height,
24
26
  userId: this.userId,
25
- responseId: this.responseId
27
+ responseId: this.responseId,
28
+ gridName: e,
29
+ dimension: i
26
30
  }
27
31
  });
28
32
  });
29
- e(this, "undo", () => {
33
+ s(this, "onChange", (t) => {
34
+ const i = Object.fromEntries(t.entries());
35
+ g(i) && this.onUpdateActiveTool("move"), this.publishToChannel(i);
36
+ });
37
+ s(this, "undo", () => {
30
38
  if (!this.polycanvas)
31
39
  return;
32
40
  const t = this.polycanvas.undo();
33
41
  if (!t)
34
42
  return;
35
- const s = u(t);
36
- this.onChange(s);
43
+ const e = y(t);
44
+ this.onChange(e);
37
45
  });
38
- e(this, "redo", () => {
46
+ s(this, "redo", () => {
39
47
  if (!this.polycanvas)
40
48
  return;
41
49
  const t = this.polycanvas.redo();
42
50
  t && this.onChange(t);
43
51
  });
44
- e(this, "setTool", (t) => {
52
+ s(this, "clearCanvas", () => {
53
+ this.polycanvas && this.polycanvas.clear();
54
+ });
55
+ s(this, "zoomIn", () => {
56
+ if (!this.polycanvas) return;
57
+ const t = this.polycanvas.getViewport();
58
+ this.polycanvas.setViewport(t.x, t.y, t.zoom * 1.1);
59
+ });
60
+ s(this, "zoomOut", () => {
61
+ if (!this.polycanvas) return;
62
+ const t = this.polycanvas.getViewport();
63
+ this.polycanvas.setViewport(t.x, t.y, t.zoom * 0.9);
64
+ });
65
+ s(this, "downloadCanvasAsImage", async () => {
66
+ if (!this.polycanvas) return;
67
+ const t = await this.polycanvas.image(3e3, 3e3, "png");
68
+ if (!t) return;
69
+ const e = document.createElement("a");
70
+ e.href = t, e.download = `canvas-drawing-${Date.now()}.png`, e.click();
71
+ });
72
+ s(this, "uploadFileToCanvas", async (t) => new Promise((e, i) => {
73
+ this.uploadImageToS3 ? e(this.uploadImageToS3(t)) : i(new Error("Upload function not provided"));
74
+ }));
75
+ s(this, "onViewPortChange", (t) => {
76
+ if (!this.publish) return;
77
+ const e = t;
78
+ this.publishToChannel({}, void 0, e);
79
+ });
80
+ s(this, "openFileUpload", () => {
81
+ this.fileInput || (this.fileInput = document.createElement("input"), this.fileInput.type = "file", this.fileInput.accept = "image/*", this.fileInput.style.display = "none", this.fileInput.onchange = this.addImageToCanvas, document.body.appendChild(this.fileInput)), this.fileInput.click();
82
+ });
83
+ s(this, "addImageToCanvas", async (t) => {
84
+ var h;
85
+ const e = t.target, i = (h = e.files) == null ? void 0 : h[0];
86
+ if (!i || !this.polycanvas || !this.uploadImageToS3) return;
87
+ const n = await this.uploadImageToS3(i), o = this.polycanvas.getViewport(), a = {
88
+ name: "image",
89
+ href: n,
90
+ x: o.x + 88,
91
+ y: o.y + 88
92
+ }, p = this.polycanvas.add({
93
+ ...a
94
+ });
95
+ this.publishToChannel({
96
+ [p]: [void 0, { ...a, status: "locked" }]
97
+ }), e.value = "";
98
+ });
99
+ s(this, "updateCanvasConfig", (t, e, i) => {
100
+ this.polycanvas && (t > this.height && this.updateHeight(t), e && this.polycanvas.setViewport(e.x, e.y, e.zoom), i && this.polycanvas.setOptions({
101
+ grid: i
102
+ }));
103
+ });
104
+ s(this, "updateCanvas", ({ data: t, userId: e }) => {
105
+ const i = this.userType === "TEACHER" || e === this.userId;
106
+ Object.entries(t).forEach(([n, o]) => {
107
+ var a, p, h;
108
+ !o[0] && o[1] ? (a = this.polycanvas) == null || a.add({ ...o[1], cannotEdit: !i }, n) : o[0] && !o[1] ? (p = this.polycanvas) == null || p.delete(n) : o[0] && o[1] && ((h = this.polycanvas) == null || h.update(n, { ...o[1] }));
109
+ });
110
+ });
111
+ s(this, "resetViewPort", () => {
112
+ this.polycanvas && this.polycanvas.resetViewport();
113
+ });
114
+ s(this, "changeGrid", (t) => {
115
+ this.polycanvas && (this.polycanvas.setOptions({
116
+ grid: t
117
+ }), this.publishToChannel({}, t));
118
+ });
119
+ s(this, "setTool", (t) => {
45
120
  if (this.polycanvas) {
46
- const [s, i] = l(t);
47
- switch (s) {
121
+ const [e, i] = m(t);
122
+ switch (e) {
123
+ case "clearAll":
124
+ this.clearCanvas();
125
+ break;
126
+ case "home":
127
+ this.resetViewPort();
128
+ break;
48
129
  case "undo":
49
130
  this.undo();
50
131
  break;
51
132
  case "redo":
52
133
  this.redo();
53
134
  break;
135
+ case "zoomIn":
136
+ this.zoomIn();
137
+ break;
138
+ case "zoomOut":
139
+ this.zoomOut();
140
+ break;
141
+ case "upload":
142
+ this.openFileUpload();
143
+ break;
144
+ case "download":
145
+ this.downloadCanvasAsImage();
146
+ break;
147
+ case "grid":
148
+ break;
54
149
  default:
55
- this.polycanvas.setTool(s, i);
150
+ this.polycanvas.setTool(e, i);
56
151
  }
57
152
  }
58
153
  });
59
- e(this, "updateCanvas", ({ data: t, userId: s }) => {
60
- const i = this.userType === "TEACHER" || s === this.userId;
61
- Object.entries(t).forEach(([a, h]) => {
62
- var n, r;
63
- !h[0] && h[1] ? (n = this.polycanvas) == null || n.add({ ...h[1], cannotEdit: !i }, a) : h[0] && !h[1] && ((r = this.polycanvas) == null || r.delete(a));
64
- });
65
- });
66
154
  /**
67
155
  * The `update` method is called in two cases:
68
156
  * 1. When receiving initial data to update the canvas content.
@@ -75,36 +163,37 @@ class y {
75
163
  *
76
164
  * 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.
77
165
  */
78
- e(this, "update", (t) => {
166
+ s(this, "update", (t) => {
79
167
  if (Array.isArray(t)) {
80
- const s = t.map((a) => a.height), i = Math.max(...s);
81
- i > this.height && this.updateHeight(i), t.forEach((a) => this.updateCanvas(a));
168
+ const e = t.map((a) => a.height).filter(Boolean), i = Math.max(...e), n = t.map((a) => a.dimension).filter(Boolean)[t.length - 1], o = t.map((a) => a.gridName).filter(Boolean)[t.length - 1];
169
+ this.updateCanvasConfig(i, n, o), t.forEach((a) => this.updateCanvas(a));
82
170
  } else
83
- t.height > this.height && this.updateHeight(t.height), this.updateCanvas(t);
171
+ this.updateCanvasConfig(t.height, t.dimension, t == null ? void 0 : t.gridName), this.updateCanvas(t);
84
172
  });
85
- e(this, "setColor", (t) => {
173
+ s(this, "setColor", (t) => {
86
174
  this.polycanvas && this.polycanvas.setColor(t);
87
175
  });
88
- e(this, "updateHeight", (t) => {
176
+ s(this, "updateHeight", (t) => {
89
177
  this.height = t, this.onUpdateHeight(t);
90
178
  });
91
- e(this, "destroy", () => {
92
- this.polycanvas && (this.polycanvas.off("change", this.onChange), this.polycanvas.destroy(), this.polycanvas = void 0);
179
+ s(this, "destroy", () => {
180
+ 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));
93
181
  });
94
- this.onUpdateHeight = i, this.height = a, this.userId = h, this.responseId = n, this.publish = t, this.userType = r, s(this.responseId, this.update);
182
+ this.onUpdateHeight = n, this.onUpdateActiveTool = i, this.height = a, this.uploadImageToS3 = o, this.userId = p, this.responseId = h, this.publish = t, this.userType = c, this.renderAs = l, this.debouncedViewportChange = v(this.onViewPortChange, 300), e(this.responseId, this.update);
95
183
  }
96
- async create({ canvasElementRef: t, canvasConfig: s, canvasSetting: i, initialData: a }) {
184
+ async create({ canvasElementRef: t, canvasConfig: e, canvasSetting: i, initialData: n }) {
97
185
  if (!t.current)
98
186
  throw new Error("PolyCanvas: Div Element Not found for canvas");
99
187
  this.polycanvas = await window.Polypad.create(t.current, {
100
188
  initial: {
101
- options: s
189
+ options: e
102
190
  },
103
- ...i
104
- }), p(t), this.polycanvas.on("change", this.onChange), a && this.update(a);
191
+ ...i,
192
+ imageUpload: this.renderAs === "whiteboard" && this.userType === "TEACHER" ? this.uploadFileToCanvas : void 0
193
+ }), this.renderAs === "whiteboard" && this.userType === "TEACHER" && this.polycanvas.on("viewport", this.debouncedViewportChange), f(t), this.polycanvas.on("change", this.onChange), n && this.update(n);
105
194
  }
106
195
  }
107
196
  export {
108
- y as CueCanvasCore
197
+ T as CueCanvasCore
109
198
  };
110
199
  //# 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 TCueCanvasChangeData,\n TCueCanvasTool,\n TPublish,\n TSubscribe,\n} from './types/cue-canvas';\nimport type { ICreateOptions } from './types/cue-canvas';\nimport type { IPolypad, IPolyPadInstance } from './types/polypad';\n\nimport { getReverseMap, getToolAndSubtool, removeMask } from './cue-canvas-helpers';\n\ndeclare global {\n interface Window {\n Polypad: IPolypad;\n }\n}\nexport class CueCanvasCore {\n private polycanvas: IPolyPadInstance | undefined;\n private publish?: TPublish;\n private height: number;\n private onUpdateHeight: (height: number) => void;\n private userId: string;\n private responseId: string;\n private userType: TUserTypes;\n\n constructor(\n onPublish: TPublish,\n onSubscribe: TSubscribe,\n onUpdateHeight: (height: number) => void,\n height: number,\n userId: string,\n responseId: string,\n userType: TUserTypes,\n ) {\n this.onUpdateHeight = onUpdateHeight;\n this.height = height;\n this.userId = userId;\n this.responseId = responseId;\n this.publish = onPublish;\n this.userType = userType;\n onSubscribe(this.responseId, 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 });\n\n removeMask(canvasElementRef);\n this.polycanvas.on('change', this.onChange);\n if (initialData) {\n this.update(initialData);\n }\n }\n\n resetViewPort = () => {\n if (this.polycanvas) {\n this.polycanvas.resetViewport();\n }\n };\n\n onChange = (e: unknown) => {\n const data = e as TCueCanvasChangeData;\n const payload = Object.fromEntries(data.entries());\n\n if (this.publish) {\n this.publish({\n eventName: 'cue_canvas_changed',\n eventPayload: {\n data: payload,\n height: this.height,\n userId: this.userId,\n responseId: this.responseId,\n },\n });\n }\n };\n\n 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 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 setTool = (tool: TCueCanvasTool) => {\n if (this.polycanvas) {\n const [currTool, currSubTool] = getToolAndSubtool(tool);\n\n switch (currTool) {\n case 'undo':\n this.undo();\n break;\n case 'redo':\n this.redo();\n break;\n default:\n this.polycanvas.setTool(currTool, currSubTool);\n }\n }\n };\n\n 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 this.polycanvas?.add({ ...value[1], cannotEdit: !canEditStroke }, key);\n } else if (value[0] && !value[1]) {\n this.polycanvas?.delete(key);\n } else {\n // This is the case for tile edit (rotate, flip, slice etc)\n // this.polycanvas?.update(key, { ...value[1] });\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);\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.polycanvas = undefined;\n }\n };\n}\n"],"names":["CueCanvasCore","onPublish","onSubscribe","onUpdateHeight","height","userId","responseId","userType","__publicField","e","payload","data","undoData","getReverseMap","tool","currTool","currSubTool","getToolAndSubtool","canEditStroke","key","value","_a","_b","heights","maxHeight","item","color","canvasElementRef","canvasConfig","canvasSetting","initialData","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 TSubscribe,\n TCueCanvasChangeDataObject,\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} 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 responseId: 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) => string;\n\n constructor(\n onPublish: TPublish,\n onSubscribe: TSubscribe,\n onUpdateActiveTool: (tool: TCueCanvasTool) => void,\n onUpdateHeight: (height: number) => void,\n uploadImageToS3: (file: File) => string,\n height: number,\n userId: string,\n responseId: string,\n userType: TUserTypes,\n renderAs: TRenderAs,\n ) {\n this.onUpdateHeight = onUpdateHeight;\n this.onUpdateActiveTool = onUpdateActiveTool;\n this.height = height;\n this.uploadImageToS3 = uploadImageToS3;\n this.userId = userId;\n this.responseId = responseId;\n this.publish = onPublish;\n this.userType = userType;\n this.renderAs = renderAs;\n this.debouncedViewportChange = debounce(this.onViewPortChange, 300);\n onSubscribe(this.responseId, 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'\n ? this.uploadFileToCanvas\n : undefined,\n });\n\n if (this.renderAs === 'whiteboard' && this.userType === 'TEACHER') {\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 = (\n payload: TCueCanvasChangeDataObject,\n gridName?: TCueCanvasGridName,\n dimension?: IViewport,\n ) => {\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.responseId,\n gridName,\n dimension,\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 private 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 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 uploadFileToCanvas = async (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n this.uploadImageToS3\n ? resolve(this.uploadImageToS3(file))\n : reject(new Error('Upload function not provided'));\n });\n };\n\n private onViewPortChange = (e: IViewport): void => {\n if (!this.publish) return;\n\n const data = e as IViewport;\n\n this.publishToChannel({}, undefined, data);\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.addImageToCanvas;\n document.body.appendChild(this.fileInput);\n }\n\n this.fileInput.click();\n };\n\n private addImageToCanvas = 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 imageBase64 = await this.uploadImageToS3(file);\n const viewPort = this.polycanvas.getViewport();\n const imgJson = {\n name: 'image',\n href: imageBase64,\n x: viewPort.x + 88,\n y: viewPort.y + 88,\n };\n\n const key = this.polycanvas.add({\n ...imgJson,\n });\n\n this.publishToChannel({\n [key]: [undefined, { ...imgJson, status: 'locked' }],\n });\n\n target.value = '';\n };\n\n private updateCanvasConfig = (\n height: number,\n dimension: IViewport | undefined,\n gridName: TCueCanvasGridName | undefined,\n ) => {\n if (!this.polycanvas) return;\n\n if (height > this.height) {\n this.updateHeight(height);\n }\n\n if (dimension) {\n this.polycanvas.setViewport(dimension.x, dimension.y, dimension.zoom);\n }\n\n if (gridName) {\n this.polycanvas.setOptions({\n grid: gridName,\n });\n }\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 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 resetViewPort = () => {\n if (this.polycanvas) {\n this.polycanvas.resetViewport();\n }\n };\n\n changeGrid = (gridName: TCueCanvasGridName) => {\n if (!this.polycanvas) return;\n\n this.polycanvas.setOptions({\n grid: gridName,\n });\n\n this.publishToChannel({}, gridName);\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 '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 const lastDimension = payload.map(data => data.dimension).filter(Boolean)[payload.length - 1];\n const lastGrid = payload.map(data => data.gridName).filter(Boolean)[payload.length - 1];\n\n this.updateCanvasConfig(maxHeight, lastDimension, lastGrid);\n payload.forEach(item => this.updateCanvas(item));\n } else {\n this.updateCanvasConfig(payload.height, payload.dimension, payload?.gridName);\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","responseId","userType","renderAs","__publicField","payload","gridName","dimension","e","checkTextOrEquationTool","data","undoData","getReverseMap","viewPort","image","downloadLink","file","resolve","reject","event","target","_a","imageBase64","imgJson","key","canEditStroke","value","_b","_c","tool","currTool","currSubTool","getToolAndSubtool","heights","maxHeight","lastDimension","lastGrid","item","color","debounce","canvasElementRef","canvasConfig","canvasSetting","initialData","removeMask"],"mappings":"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"}