@pie-element/hotspot 11.1.2-next.5 → 11.1.3

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 (234) hide show
  1. package/CHANGELOG.json +997 -0
  2. package/CHANGELOG.md +2226 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +1 -0
  5. package/configure/CHANGELOG.json +682 -0
  6. package/configure/CHANGELOG.md +1963 -0
  7. package/configure/lib/DeleteWidget.js +64 -0
  8. package/configure/lib/DeleteWidget.js.map +1 -0
  9. package/configure/lib/button.js +42 -0
  10. package/configure/lib/button.js.map +1 -0
  11. package/configure/lib/buttons/circle.js +33 -0
  12. package/configure/lib/buttons/circle.js.map +1 -0
  13. package/configure/lib/buttons/polygon.js +39 -0
  14. package/configure/lib/buttons/polygon.js.map +1 -0
  15. package/configure/lib/buttons/rectangle.js +39 -0
  16. package/configure/lib/buttons/rectangle.js.map +1 -0
  17. package/configure/lib/defaults.js +155 -0
  18. package/configure/lib/defaults.js.map +1 -0
  19. package/configure/lib/hotspot-circle.js +192 -0
  20. package/configure/lib/hotspot-circle.js.map +1 -0
  21. package/configure/lib/hotspot-container.js +320 -0
  22. package/configure/lib/hotspot-container.js.map +1 -0
  23. package/configure/lib/hotspot-drawable.js +519 -0
  24. package/configure/lib/hotspot-drawable.js.map +1 -0
  25. package/configure/lib/hotspot-palette.js +107 -0
  26. package/configure/lib/hotspot-palette.js.map +1 -0
  27. package/configure/lib/hotspot-polygon.js +293 -0
  28. package/configure/lib/hotspot-polygon.js.map +1 -0
  29. package/configure/lib/hotspot-rectangle.js +190 -0
  30. package/configure/lib/hotspot-rectangle.js.map +1 -0
  31. package/configure/lib/icons.js +7 -0
  32. package/configure/lib/icons.js.map +1 -0
  33. package/configure/lib/image-konva.js +66 -0
  34. package/configure/lib/image-konva.js.map +1 -0
  35. package/configure/lib/index.js +194 -0
  36. package/configure/lib/index.js.map +1 -0
  37. package/configure/lib/root.js +330 -0
  38. package/configure/lib/root.js.map +1 -0
  39. package/configure/lib/shapes/circle.js +84 -0
  40. package/configure/lib/shapes/circle.js.map +1 -0
  41. package/configure/lib/shapes/index.js +50 -0
  42. package/configure/lib/shapes/index.js.map +1 -0
  43. package/configure/lib/shapes/polygon.js +82 -0
  44. package/configure/lib/shapes/polygon.js.map +1 -0
  45. package/configure/lib/shapes/rectagle.js +84 -0
  46. package/configure/lib/shapes/rectagle.js.map +1 -0
  47. package/configure/lib/shapes/utils.js +21 -0
  48. package/configure/lib/shapes/utils.js.map +1 -0
  49. package/configure/lib/upload-control.js +41 -0
  50. package/configure/lib/upload-control.js.map +1 -0
  51. package/configure/lib/utils.js +185 -0
  52. package/configure/lib/utils.js.map +1 -0
  53. package/configure/package.json +26 -0
  54. package/configure/src/DeleteWidget.jsx +51 -0
  55. package/configure/src/__tests__/DeleteWidget.test.jsx +366 -0
  56. package/configure/src/__tests__/button.test.jsx +198 -0
  57. package/configure/src/__tests__/hotspot-circle.test.jsx +259 -0
  58. package/configure/src/__tests__/hotspot-container.test.js +366 -0
  59. package/configure/src/__tests__/hotspot-drawable.test.js +271 -0
  60. package/configure/src/__tests__/hotspot-palette.test.jsx +71 -0
  61. package/configure/src/__tests__/image-konva.test.jsx +226 -0
  62. package/configure/src/__tests__/index.test.js +329 -0
  63. package/configure/src/__tests__/root.test.js +400 -0
  64. package/configure/src/__tests__/utils.test.js +241 -0
  65. package/configure/src/button.jsx +35 -0
  66. package/configure/src/buttons/circle.jsx +18 -0
  67. package/configure/src/buttons/polygon.jsx +29 -0
  68. package/configure/src/buttons/rectangle.jsx +29 -0
  69. package/configure/src/defaults.js +109 -0
  70. package/configure/src/hotspot-circle.jsx +183 -0
  71. package/configure/src/hotspot-container.jsx +330 -0
  72. package/configure/src/hotspot-drawable.jsx +527 -0
  73. package/configure/src/hotspot-palette.jsx +90 -0
  74. package/configure/src/hotspot-polygon.jsx +294 -0
  75. package/configure/src/hotspot-rectangle.jsx +169 -0
  76. package/configure/src/icons.js +5 -0
  77. package/configure/src/image-konva.jsx +63 -0
  78. package/configure/src/index.js +208 -0
  79. package/configure/src/root.jsx +346 -0
  80. package/configure/src/shapes/circle.js +81 -0
  81. package/configure/src/shapes/index.js +4 -0
  82. package/configure/src/shapes/polygon.js +81 -0
  83. package/configure/src/shapes/rectagle.js +82 -0
  84. package/configure/src/shapes/utils.js +16 -0
  85. package/configure/src/upload-control.jsx +33 -0
  86. package/configure/src/utils.js +210 -0
  87. package/controller/CHANGELOG.json +362 -0
  88. package/controller/CHANGELOG.md +1304 -0
  89. package/controller/lib/defaults.js +33 -0
  90. package/controller/lib/defaults.js.map +1 -0
  91. package/controller/lib/index.js +341 -0
  92. package/controller/lib/index.js.map +1 -0
  93. package/controller/lib/utils.js +32 -0
  94. package/controller/lib/utils.js.map +1 -0
  95. package/controller/package.json +18 -0
  96. package/controller/src/__tests__/index.test.js +419 -0
  97. package/controller/src/__tests__/utils.test.js +5 -0
  98. package/controller/src/defaults.js +19 -0
  99. package/controller/src/index.js +328 -0
  100. package/controller/src/utils.js +29 -0
  101. package/docs/config-schema.json +2023 -0
  102. package/docs/config-schema.json.md +1495 -0
  103. package/docs/demo/config.js +8 -0
  104. package/docs/demo/generate.js +118 -0
  105. package/docs/demo/index.html +1 -0
  106. package/docs/demo/session.js +11 -0
  107. package/docs/pie-schema.json +1204 -0
  108. package/docs/pie-schema.json.md +851 -0
  109. package/lib/hotspot/circle.js +156 -0
  110. package/lib/hotspot/circle.js.map +1 -0
  111. package/lib/hotspot/container.js +206 -0
  112. package/lib/hotspot/container.js.map +1 -0
  113. package/lib/hotspot/icons.js +8 -0
  114. package/lib/hotspot/icons.js.map +1 -0
  115. package/lib/hotspot/image-konva-tooltip.js +86 -0
  116. package/lib/hotspot/image-konva-tooltip.js.map +1 -0
  117. package/lib/hotspot/index.js +163 -0
  118. package/lib/hotspot/index.js.map +1 -0
  119. package/lib/hotspot/polygon.js +203 -0
  120. package/lib/hotspot/polygon.js.map +1 -0
  121. package/lib/hotspot/rectangle.js +175 -0
  122. package/lib/hotspot/rectangle.js.map +1 -0
  123. package/lib/index.js +213 -0
  124. package/lib/index.js.map +1 -0
  125. package/lib/session-updater.js +42 -0
  126. package/lib/session-updater.js.map +1 -0
  127. package/package.json +18 -83
  128. package/src/__tests__/container.test.jsx +58 -0
  129. package/src/__tests__/index.test.js +123 -0
  130. package/src/__tests__/session-updater.test.jsx +69 -0
  131. package/src/hotspot/__tests__/circle.test.jsx +464 -0
  132. package/src/hotspot/__tests__/container.test.jsx +546 -0
  133. package/src/hotspot/__tests__/image-konva-tooltip.test.jsx +510 -0
  134. package/src/hotspot/__tests__/polygon.test.jsx +502 -0
  135. package/src/hotspot/__tests__/rectangle.test.jsx +418 -0
  136. package/src/hotspot/circle.jsx +152 -0
  137. package/src/hotspot/container.jsx +217 -0
  138. package/src/hotspot/icons.js +7 -0
  139. package/src/hotspot/image-konva-tooltip.jsx +76 -0
  140. package/src/hotspot/index.jsx +165 -0
  141. package/src/hotspot/polygon.jsx +195 -0
  142. package/src/hotspot/rectangle.jsx +171 -0
  143. package/src/index.js +226 -0
  144. package/src/session-updater.js +29 -0
  145. package/configure.js +0 -2
  146. package/controller.js +0 -1
  147. package/dist/author/DeleteWidget.d.ts +0 -38
  148. package/dist/author/DeleteWidget.js +0 -46
  149. package/dist/author/button.d.ts +0 -31
  150. package/dist/author/button.js +0 -27
  151. package/dist/author/buttons/circle.d.ts +0 -18
  152. package/dist/author/buttons/circle.js +0 -25
  153. package/dist/author/buttons/polygon.d.ts +0 -18
  154. package/dist/author/buttons/polygon.js +0 -36
  155. package/dist/author/buttons/rectangle.d.ts +0 -18
  156. package/dist/author/buttons/rectangle.js +0 -36
  157. package/dist/author/defaults.d.ts +0 -157
  158. package/dist/author/defaults.js +0 -119
  159. package/dist/author/hotspot-circle.d.ts +0 -21
  160. package/dist/author/hotspot-circle.js +0 -124
  161. package/dist/author/hotspot-container.d.ts +0 -29
  162. package/dist/author/hotspot-container.js +0 -210
  163. package/dist/author/hotspot-drawable.d.ts +0 -31
  164. package/dist/author/hotspot-drawable.js +0 -312
  165. package/dist/author/hotspot-palette.d.ts +0 -14
  166. package/dist/author/hotspot-palette.js +0 -72
  167. package/dist/author/hotspot-polygon.d.ts +0 -38
  168. package/dist/author/hotspot-polygon.js +0 -200
  169. package/dist/author/hotspot-rectangle.d.ts +0 -20
  170. package/dist/author/hotspot-rectangle.js +0 -119
  171. package/dist/author/icons.d.ts +0 -9
  172. package/dist/author/icons.js +0 -4
  173. package/dist/author/image-konva.d.ts +0 -19
  174. package/dist/author/image-konva.js +0 -49
  175. package/dist/author/index.d.ts +0 -52
  176. package/dist/author/index.js +0 -143
  177. package/dist/author/root.d.ts +0 -15
  178. package/dist/author/root.js +0 -215
  179. package/dist/author/shapes/circle.d.ts +0 -18
  180. package/dist/author/shapes/circle.js +0 -47
  181. package/dist/author/shapes/index.d.ts +0 -12
  182. package/dist/author/shapes/polygon.d.ts +0 -19
  183. package/dist/author/shapes/polygon.js +0 -51
  184. package/dist/author/shapes/rectagle.d.ts +0 -18
  185. package/dist/author/shapes/rectagle.js +0 -57
  186. package/dist/author/shapes/utils.d.ts +0 -19
  187. package/dist/author/shapes/utils.js +0 -16
  188. package/dist/author/upload-control.d.ts +0 -29
  189. package/dist/author/upload-control.js +0 -28
  190. package/dist/author/utils.d.ts +0 -24
  191. package/dist/author/utils.js +0 -83
  192. package/dist/browser/ReactKonva-CFo7dxdy.js +0 -19336
  193. package/dist/browser/ReactKonva-CFo7dxdy.js.map +0 -1
  194. package/dist/browser/author/index.js +0 -47549
  195. package/dist/browser/author/index.js.map +0 -1
  196. package/dist/browser/browser-CfnAFove.js +0 -219
  197. package/dist/browser/browser-CfnAFove.js.map +0 -1
  198. package/dist/browser/controller/index.js +0 -198
  199. package/dist/browser/controller/index.js.map +0 -1
  200. package/dist/browser/delivery/index.js +0 -2460
  201. package/dist/browser/delivery/index.js.map +0 -1
  202. package/dist/browser/dist-CeB-1djc.js +0 -100
  203. package/dist/browser/dist-CeB-1djc.js.map +0 -1
  204. package/dist/browser/hotspot.css +0 -2
  205. package/dist/controller/defaults.d.ts +0 -35
  206. package/dist/controller/defaults.js +0 -29
  207. package/dist/controller/index.d.ts +0 -22
  208. package/dist/controller/index.js +0 -154
  209. package/dist/controller/utils.d.ts +0 -10
  210. package/dist/controller/utils.js +0 -12
  211. package/dist/delivery/hotspot/circle.d.ts +0 -19
  212. package/dist/delivery/hotspot/circle.js +0 -100
  213. package/dist/delivery/hotspot/container.d.ts +0 -16
  214. package/dist/delivery/hotspot/container.js +0 -150
  215. package/dist/delivery/hotspot/icons.d.ts +0 -10
  216. package/dist/delivery/hotspot/icons.js +0 -4
  217. package/dist/delivery/hotspot/image-konva-tooltip.d.ts +0 -19
  218. package/dist/delivery/hotspot/image-konva-tooltip.js +0 -66
  219. package/dist/delivery/hotspot/index.d.ts +0 -17
  220. package/dist/delivery/hotspot/index.js +0 -114
  221. package/dist/delivery/hotspot/polygon.d.ts +0 -21
  222. package/dist/delivery/hotspot/polygon.js +0 -108
  223. package/dist/delivery/hotspot/rectangle.d.ts +0 -19
  224. package/dist/delivery/hotspot/rectangle.js +0 -104
  225. package/dist/delivery/index.d.ts +0 -20
  226. package/dist/delivery/index.js +0 -107
  227. package/dist/delivery/session-updater.d.ts +0 -10
  228. package/dist/delivery/session-updater.js +0 -14
  229. package/dist/index.d.ts +0 -1
  230. package/dist/index.iife.d.ts +0 -8
  231. package/dist/index.iife.js +0 -169
  232. package/dist/index.js +0 -2
  233. package/dist/runtime-support.d.ts +0 -12
  234. package/dist/runtime-support.js +0 -12
@@ -1,21 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/src/hotspot/polygon.jsx
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- import React from 'react';
10
- declare class PolygonComponent extends React.Component {
11
- constructor(props: any);
12
- getPolygonCenter: any;
13
- parsePointsForKonva: any;
14
- handleClick: any;
15
- handleMouseEnter: any;
16
- handleMouseLeave: any;
17
- getEvaluateOutlineColor: (isCorrect: any, markAsCorrect: any, outlineColor: any) => any;
18
- getOutlineWidth: (showCorrectEnabled: any, selected: any, markAsCorrect: any, strokeWidth: any) => any;
19
- render(): React.JSX.Element;
20
- }
21
- export default PolygonComponent;
@@ -1,108 +0,0 @@
1
- import e from "./image-konva-tooltip.js";
2
- import { faCorrect as t, faWrong as n } from "./icons.js";
3
- import r from "react";
4
- import i from "prop-types";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
- import { Group as s, Line as c, Rect as l } from "react-konva";
7
- //#region src/delivery/hotspot/polygon.tsx
8
- function u(e) {
9
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
10
- }
11
- function d(e, t) {
12
- return !e || u(e) ? e : u(e.default) ? e.default : t && u(e[t]) ? e[t] : t && u(e[t]?.default) ? e[t].default : e;
13
- }
14
- var f = d(l, "Rect"), p = d(s, "Group"), m = d(c, "Line"), h = class extends r.Component {
15
- constructor(e) {
16
- super(e), this.state = { hovered: !1 };
17
- }
18
- getPolygonCenter = (e) => {
19
- let t = e.map(({ x: e }) => e), n = e.map(({ y: e }) => e), r = Math.min.apply(null, t), i = Math.max.apply(null, t), a = Math.min.apply(null, n), o = Math.max.apply(null, n);
20
- return [(r + i) / 2, (a + o) / 2];
21
- };
22
- parsePointsForKonva = (e) => {
23
- let t = [];
24
- return e.forEach(({ x: e, y: n }) => {
25
- t.push(e), t.push(n);
26
- }), t;
27
- };
28
- handleClick = (e) => {
29
- let { onClick: t, id: n, selected: r, disabled: i } = this.props;
30
- i || (e.cancelBubble = !0, t({
31
- id: n,
32
- selected: !r,
33
- selector: "Mouse"
34
- }));
35
- };
36
- handleMouseEnter = () => {
37
- let { disabled: e } = this.props;
38
- e || (document.body.style.cursor = "pointer"), this.setState({ hovered: !0 });
39
- };
40
- handleMouseLeave = () => {
41
- document.body.style.cursor = "default", this.setState({ hovered: !1 });
42
- };
43
- getEvaluateOutlineColor = (e, t, n) => t ? "green" : e ? n : "red";
44
- getOutlineWidth = (e, t, n, r) => n || !n && !e && t ? r : 0;
45
- render() {
46
- let { hotspotColor: r, isCorrect: i, isEvaluateMode: s, hoverOutlineColor: c, outlineColor: l, selected: u, points: d, evaluateText: h, strokeWidth: g, scale: _, markAsCorrect: v, selectedHotspotColor: y, showCorrectEnabled: b } = this.props, { hovered: x } = this.state, S = s ? this.getEvaluateOutlineColor(i, v, l) : l, C = this.getOutlineWidth(b, u, v, g), w = this.parsePointsForKonva(d), T = this.getPolygonCenter(d), E = T[0], D = T[1], O;
47
- b ? (u && i || !u && !i) && (O = t) : u ? O = i ? t : n : i || (O = n);
48
- let k = x && c, A = w.filter((e, t) => t % 2 == 0), j = w.filter((e, t) => t % 2 != 0), M = Math.min(...A), N = Math.max(...A), P = Math.min(...j), F = Math.max(...j), I = M, L = P, R = N - M, z = F - P;
49
- return /* @__PURE__ */ o(p, {
50
- scaleX: _,
51
- scaleY: _,
52
- children: [
53
- k && /* @__PURE__ */ a(f, {
54
- x: I,
55
- y: L,
56
- width: R,
57
- height: z,
58
- stroke: u ? "transparent" : c,
59
- strokeWidth: g
60
- }),
61
- /* @__PURE__ */ a(m, {
62
- points: w,
63
- closed: !0,
64
- fill: u && y ? y : r,
65
- onClick: this.handleClick,
66
- onTap: this.handleClick,
67
- draggable: !1,
68
- stroke: k && !u ? "transparent" : S,
69
- strokeWidth: k && !u ? 0 : C,
70
- onMouseLeave: this.handleMouseLeave,
71
- onMouseEnter: this.handleMouseEnter,
72
- cursor: "pointer",
73
- position: "relative"
74
- }),
75
- s && O ? /* @__PURE__ */ a(e, {
76
- src: O,
77
- x: E,
78
- y: D,
79
- tooltip: h
80
- }) : null
81
- ]
82
- });
83
- }
84
- };
85
- h.propTypes = {
86
- hotspotColor: i.string.isRequired,
87
- id: i.string.isRequired,
88
- isCorrect: i.bool.isRequired,
89
- isEvaluateMode: i.bool.isRequired,
90
- hoverOutlineColor: i.string,
91
- disabled: i.bool.isRequired,
92
- onClick: i.func.isRequired,
93
- outlineColor: i.string.isRequired,
94
- points: i.array.isRequired,
95
- selected: i.bool.isRequired,
96
- evaluateText: i.string,
97
- selectedHotspotColor: i.string,
98
- strokeWidth: i.number,
99
- scale: i.number,
100
- markAsCorrect: i.bool.isRequired,
101
- showCorrectEnabled: i.bool.isRequired
102
- }, h.defaultProps = {
103
- evaluateText: null,
104
- strokeWidth: 5,
105
- scale: 1
106
- };
107
- //#endregion
108
- export { h as default };
@@ -1,19 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/src/hotspot/rectangle.jsx
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- import React from 'react';
10
- declare class RectComponent extends React.Component {
11
- constructor(props: any);
12
- handleClick: any;
13
- handleMouseEnter: any;
14
- handleMouseLeave: any;
15
- getEvaluateOutlineColor: (isCorrect: any, markAsCorrect: any, outlineColor: any) => any;
16
- getOutlineWidth: (showCorrectEnabled: any, selected: any, markAsCorrect: any, strokeWidth: any) => any;
17
- render(): React.JSX.Element;
18
- }
19
- export default RectComponent;
@@ -1,104 +0,0 @@
1
- import e from "./image-konva-tooltip.js";
2
- import { faCorrect as t, faWrong as n } from "./icons.js";
3
- import r from "react";
4
- import i from "prop-types";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
- import { Group as s, Rect as c } from "react-konva";
7
- //#region src/delivery/hotspot/rectangle.tsx
8
- function l(e) {
9
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
10
- }
11
- function u(e, t) {
12
- return !e || l(e) ? e : l(e.default) ? e.default : t && l(e[t]) ? e[t] : t && l(e[t]?.default) ? e[t].default : e;
13
- }
14
- var d = u(s, "Group"), f = u(c, "Rect"), p = class extends r.Component {
15
- constructor(e) {
16
- super(e), this.state = { hovered: !1 };
17
- }
18
- handleClick = (e) => {
19
- let { onClick: t, id: n, selected: r, disabled: i } = this.props;
20
- i || (e.cancelBubble = !0, t({
21
- id: n,
22
- selected: !r,
23
- selector: "Mouse"
24
- }));
25
- };
26
- handleMouseEnter = () => {
27
- let { disabled: e } = this.props;
28
- e || (document.body.style.cursor = "pointer"), this.setState({ hovered: !0 });
29
- };
30
- handleMouseLeave = () => {
31
- document.body.style.cursor = "default", this.setState({ hovered: !1 });
32
- };
33
- getEvaluateOutlineColor = (e, t, n) => t ? "green" : e ? n : "red";
34
- getOutlineWidth = (e, t, n, r) => n || !n && !e && t ? r : 0;
35
- render() {
36
- let { height: r, hotspotColor: i, hoverOutlineColor: s, selectedHotspotColor: c, isCorrect: l, isEvaluateMode: u, outlineColor: p, selected: m, width: h, x: g, y: _, evaluateText: v, strokeWidth: y, scale: b, markAsCorrect: x, showCorrectEnabled: S } = this.props, C = u ? this.getEvaluateOutlineColor(l, x, p) : p, w = this.getOutlineWidth(S, m, x, y), T = g + h / 2 - 10, E = _ + r / 2 - 10, D;
37
- S ? (m && l || !m && !l) && (D = t) : m ? D = l ? t : n : l || (D = n);
38
- let { hovered: O } = this.state, k = O && s;
39
- return /* @__PURE__ */ o(d, {
40
- scaleX: b,
41
- scaleY: b,
42
- children: [
43
- k && /* @__PURE__ */ a(f, {
44
- x: g,
45
- y: _,
46
- width: h,
47
- height: r,
48
- stroke: m ? "transparent" : s,
49
- strokeWidth: y,
50
- listening: !1
51
- }),
52
- /* @__PURE__ */ a(f, {
53
- x: g,
54
- y: _,
55
- width: h,
56
- height: r,
57
- fill: m && c ? c : i,
58
- onClick: this.handleClick,
59
- onTap: this.handleClick,
60
- draggable: !1,
61
- stroke: k && !m ? "transparent" : C,
62
- strokeWidth: k && !m ? 0 : w,
63
- onMouseLeave: this.handleMouseLeave,
64
- onMouseEnter: this.handleMouseEnter,
65
- cursor: "pointer"
66
- }),
67
- u && D ? /* @__PURE__ */ a(e, {
68
- src: D,
69
- x: T,
70
- y: E,
71
- tooltip: v
72
- }) : null
73
- ]
74
- });
75
- }
76
- };
77
- p.propTypes = {
78
- height: i.number.isRequired,
79
- hotspotColor: i.string.isRequired,
80
- id: i.string.isRequired,
81
- isCorrect: i.oneOfType([i.bool, i.string]),
82
- isEvaluateMode: i.bool.isRequired,
83
- hoverOutlineColor: i.string,
84
- disabled: i.bool.isRequired,
85
- onClick: i.func.isRequired,
86
- outlineColor: i.string.isRequired,
87
- selected: i.bool.isRequired,
88
- width: i.number.isRequired,
89
- x: i.number.isRequired,
90
- y: i.number.isRequired,
91
- evaluateText: i.string,
92
- strokeWidth: i.number,
93
- scale: i.number,
94
- selectedHotspotColor: i.string,
95
- markAsCorrect: i.bool.isRequired,
96
- showCorrectEnabled: i.bool.isRequired
97
- }, p.defaultProps = {
98
- isCorrect: !1,
99
- evaluateText: null,
100
- strokeWidth: 5,
101
- scale: 1
102
- };
103
- //#endregion
104
- export { p as default };
@@ -1,20 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/src/index.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- export default class Hotspot extends HTMLElement {
10
- constructor();
11
- set model(m: any);
12
- isComplete(): boolean;
13
- set session(s: any);
14
- get session(): any;
15
- onSelectChoice(data: any): void;
16
- _createAudioInfoToast(): HTMLDivElement;
17
- connectedCallback(): void;
18
- _render(): void;
19
- disconnectedCallback(): void;
20
- }
@@ -1,107 +0,0 @@
1
- import e from "./hotspot/index.js";
2
- import { updateSessionMetadata as t, updateSessionValue as n } from "./session-updater.js";
3
- import r from "react";
4
- import { createRoot as i } from "react-dom/client";
5
- import { renderMath as a } from "@pie-element/shared-math-rendering-mathjax";
6
- import * as o from "@pie-lib/render-ui";
7
- import { EnableAudioAutoplayImage as s } from "@pie-lib/render-ui";
8
- import { ModelSetEvent as c, SessionChangedEvent as l } from "@pie-element/shared-player-events";
9
- //#region src/delivery/index.ts
10
- function u(e) {
11
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
12
- }
13
- function d(e, t) {
14
- return !e || u(e) ? e : u(e.default) ? e.default : t && u(e[t]) ? e[t] : t && u(e[t]?.default) ? e[t].default : e;
15
- }
16
- var f = d(s, "EnableAudioAutoplayImage") || d(h.EnableAudioAutoplayImage, "EnableAudioAutoplayImage"), p = o, m = p.default, h = m && typeof m == "object" ? m : p, g = class extends HTMLElement {
17
- constructor() {
18
- super(), this._model = null, this._session = null, this._audioInitialized = !1, this.audioComplete = !1, this._root = null;
19
- }
20
- set model(e) {
21
- this._model = e, this.dispatchEvent(new c(this.tagName.toLowerCase(), this.isComplete(), !!this._model)), this._audioInitialized = !1, this._render();
22
- }
23
- isComplete() {
24
- if (!this._session || !this._session.answers) return !1;
25
- let { autoplayAudioEnabled: e, completeAudioEnabled: t } = this._model || {}, n = this;
26
- if (e && t && !this.audioComplete && n) {
27
- let e = n.querySelector("audio"), t = e && e.closest("#preview-prompt");
28
- if (e && t) return !1;
29
- }
30
- return Array.isArray(this._session.answers) ? this._session.answers.length > 0 : !1;
31
- }
32
- set session(e) {
33
- e && !e.answers && (e.answers = []), this._session = e, this._render();
34
- }
35
- get session() {
36
- return this._session;
37
- }
38
- onSelectChoice(e) {
39
- n(this._session, this._model, e), this.dispatchEvent(new l(this.tagName.toLowerCase(), this.isComplete())), this._render();
40
- }
41
- _createAudioInfoToast() {
42
- let e = document.createElement("div");
43
- e.id = "play-audio-info", Object.assign(e.style, {
44
- position: "absolute",
45
- top: 0,
46
- width: "100%",
47
- height: "100%",
48
- display: "flex",
49
- justifyContent: "center",
50
- alignItems: "center",
51
- background: "white",
52
- zIndex: "1000",
53
- cursor: "pointer"
54
- });
55
- let t = document.createElement("img");
56
- return t.src = f, t.alt = "Click anywhere to enable audio autoplay", t.width = 500, t.height = 300, e.appendChild(t), e;
57
- }
58
- connectedCallback() {
59
- this._render(), new MutationObserver((e, n) => {
60
- e.forEach((e) => {
61
- if (e.type === "childList") {
62
- if (this._audioInitialized) return;
63
- let e = this.querySelector("audio"), r = e && e.closest("#preview-prompt");
64
- if (!this._model || !this._model.autoplayAudioEnabled || e && !r || !e) return;
65
- let i = this._createAudioInfoToast(), a = this.querySelector("#main-container"), o = () => {
66
- this.querySelector("#play-audio-info") && (e.play(), a.removeChild(i)), document.removeEventListener("click", o);
67
- };
68
- setTimeout(() => {
69
- e.paused && !this.querySelector("#play-audio-info") ? (a.appendChild(i), document.addEventListener("click", o)) : document.removeEventListener("click", o);
70
- }, 500);
71
- let s = () => {
72
- t(this._session, { audioStartTime: (/* @__PURE__ */ new Date()).getTime() });
73
- let n = this.querySelector("#play-audio-info");
74
- n && a.removeChild(n), e.removeEventListener("playing", s);
75
- };
76
- e.addEventListener("playing", s);
77
- let c = () => {
78
- t(this._session, { audioEndTime: (/* @__PURE__ */ new Date()).getTime() });
79
- let { audioStartTime: n, audioEndTime: r, waitTime: i } = this._session;
80
- !i && n && r && (this._session.waitTime = r - n), this.audioComplete = !0, this.dispatchEvent(new l(this.tagName.toLowerCase(), this.isComplete())), e.removeEventListener("ended", c);
81
- };
82
- e.addEventListener("ended", c), this._audio = e, this._handlePlaying = s, this._handleEnded = c, this._enableAudio = o, this._audioInitialized = !0, n.disconnect();
83
- }
84
- });
85
- }).observe(this, {
86
- childList: !0,
87
- subtree: !0
88
- });
89
- }
90
- _render() {
91
- if (this._model && this._session) {
92
- let t = r.createElement(e, {
93
- model: this._model,
94
- session: this._session,
95
- onSelectChoice: this.onSelectChoice.bind(this)
96
- });
97
- this._root ||= i(this), this._root.render(t), queueMicrotask(() => {
98
- a(this);
99
- });
100
- }
101
- }
102
- disconnectedCallback() {
103
- document.removeEventListener("click", this._enableAudio), this._audio &&= (this._audio.removeEventListener("playing", this._handlePlaying), this._audio.removeEventListener("ended", this._handleEnded), null), this._root && this._root.unmount();
104
- }
105
- };
106
- //#endregion
107
- export { g as default };
@@ -1,10 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/src/session-updater.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- export declare function updateSessionValue(session: any, model: any, data: any): void;
10
- export declare function updateSessionMetadata(session: any, metadata: any): void;
@@ -1,14 +0,0 @@
1
- //#region src/delivery/session-updater.ts
2
- function e(e, t, n) {
3
- let { id: r, selected: i } = n, { multipleCorrect: a } = t || {};
4
- if (e.answers = e.answers || [], !i) e.answers = e.answers.filter((e) => e.id !== r);
5
- else {
6
- let t = { id: r };
7
- a ? e.answers.push(t) : e.answers = [t], e.selector = n.selector;
8
- }
9
- }
10
- function t(e, t) {
11
- e.audioStartTime = e.audioStartTime || t.audioStartTime, e.audioEndTime = e.audioEndTime || t.audioEndTime, !e.waitTime && e.audioStartTime && e.audioEndTime && (e.waitTime = e.audioEndTime - e.audioStartTime);
12
- }
13
- //#endregion
14
- export { t as updateSessionMetadata, e as updateSessionValue };
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export { default } from './delivery/index.js';
@@ -1,8 +0,0 @@
1
- /**
2
- * IIFE entry point for hotspot element
3
- * This file is only used for IIFE builds and includes auto-registration
4
- *
5
- * @sync-generated - Auto-generated during sync from pie-elements
6
- */
7
- import Element from './index.js';
8
- export default Element;