@pie-element/hotspot 11.1.2-next.2 → 11.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.json +997 -0
  2. package/CHANGELOG.md +2220 -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 +1957 -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-DI5WIo8o.js +0 -19336
  193. package/dist/browser/ReactKonva-DI5WIo8o.js.map +0 -1
  194. package/dist/browser/author/index.js +0 -41646
  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-C78LDz6R.js +0 -96
  203. package/dist/browser/dist-C78LDz6R.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,29 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/configure/src/hotspot-container.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, { Component } from 'react';
10
- export declare class Container extends Component {
11
- static getDerivedStateFromProps(nextProps: any, prevState: any): any;
12
- constructor(props: any);
13
- handleFileRead: any;
14
- enableDropzone: () => void;
15
- disableDropzone: () => void;
16
- handleOnPaste: any;
17
- handleOnDrop: any;
18
- handleOnDragOver: any;
19
- handleOnDragExit: any;
20
- onUpdateShapes: any;
21
- onDeleteShape: any;
22
- handleClearAll: () => any;
23
- handleEnableDrag: () => void;
24
- handleDisableDrag: () => void;
25
- handleInputClick: any;
26
- handleFinishDrawing: any;
27
- render(): React.JSX.Element;
28
- }
29
- export default Container;
@@ -1,210 +0,0 @@
1
- import e from "./button.js";
2
- import { CircleButton as t } from "./buttons/circle.js";
3
- import { PolygonButton as n } from "./buttons/polygon.js";
4
- import { RectangleButton as r } from "./buttons/rectangle.js";
5
- import { SUPPORTED_SHAPES as i } from "./shapes/utils.js";
6
- import { getAllShapes as a, groupShapes as o } from "./utils.js";
7
- import s from "./hotspot-drawable.js";
8
- import c from "./upload-control.js";
9
- import { Component as l } from "react";
10
- import u from "prop-types";
11
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
12
- import { styled as p } from "@mui/material/styles";
13
- //#region src/author/hotspot-container.tsx
14
- var m = p("div")(({ theme: e }) => ({
15
- marginTop: e.spacing(1.5),
16
- marginBottom: e.spacing(2.5)
17
- })), h = p("div")(({ theme: e, hasErrors: t, dropzoneActive: n }) => ({
18
- border: "1px solid #E0E1E6",
19
- borderRadius: "5px",
20
- ...n && { border: "1px solid #0032C2" },
21
- ...t && !n && { border: `1px solid ${e.palette.error.main}` }
22
- })), g = p("div")({
23
- marginRight: "5px",
24
- "&:hover": { cursor: "pointer" }
25
- }), _ = p("div")({
26
- alignItems: "center",
27
- display: "flex",
28
- flexDirection: "column",
29
- justifyContent: "center"
30
- }), v = p("div")(({ theme: e }) => ({
31
- minHeight: 350,
32
- paddingBottom: e.spacing(5),
33
- paddingRight: e.spacing(5)
34
- })), y = p("div")(({ theme: e }) => ({
35
- backgroundColor: "#FFF",
36
- borderBottom: "1px solid #E0E1E6",
37
- borderTopLeftRadius: "5px",
38
- borderTopRightRadius: "5px",
39
- display: "flex",
40
- justifyContent: "flex-end",
41
- padding: e.spacing(1)
42
- })), b = p("div")({ marginRight: "auto" }), x = (e) => e.type.match(/image.*/), S = class extends l {
43
- static getDerivedStateFromProps(e, t) {
44
- return {
45
- ...t,
46
- shapes: a(e.shapes)
47
- };
48
- }
49
- constructor(e) {
50
- super(e), this.state = {
51
- dragEnabled: !0,
52
- shapes: a(e.shapes),
53
- selectedShape: i.NONE
54
- }, this.fakeImageHandler = {
55
- cancel: () => {},
56
- done: (e, t) => this.props.onImageUpload(t),
57
- fileChosen: () => {},
58
- progress: () => {}
59
- };
60
- }
61
- handleFileRead = (e) => {
62
- if (e instanceof Blob) {
63
- let { onImageUpload: t, insertImage: n } = this.props, r = new FileReader();
64
- r.onloadend = () => t(r.result), r.readAsDataURL(e), n && n({
65
- ...this.fakeImageHandler,
66
- getChosenFile: () => e,
67
- isPasted: !0
68
- });
69
- }
70
- };
71
- enableDropzone = () => this.setState({ dropzoneActive: !0 });
72
- disableDropzone = () => this.setState({ dropzoneActive: !1 });
73
- handleOnPaste = (e) => {
74
- let { files: t } = e.clipboardData;
75
- t && x(t[0]) && this.handleFileRead(t[0]);
76
- };
77
- handleOnDrop = (e) => {
78
- e.preventDefault();
79
- let { items: t, files: n } = e.dataTransfer;
80
- if (t && t[0].kind === "file") {
81
- let e = t[0].getAsFile();
82
- x(e) && this.handleFileRead(e);
83
- } else x(n[0]) && this.handleFileRead(n[0]);
84
- this.disableDropzone();
85
- };
86
- handleOnDragOver = (e) => {
87
- e.preventDefault();
88
- let { dropzoneActive: t } = this.state;
89
- t || this.enableDropzone();
90
- };
91
- handleOnDragExit = (e) => {
92
- e.preventDefault(), this.disableDropzone();
93
- };
94
- onUpdateShapes = (e) => {
95
- let { onUpdateShapes: t } = this.props;
96
- this.setState({ shapes: e }, () => t(o(e)));
97
- };
98
- onDeleteShape = (e) => {
99
- let { shapes: t } = this.state;
100
- if (t && t.length) {
101
- let n = t.filter((t) => t.id !== e);
102
- this.onUpdateShapes(n);
103
- }
104
- };
105
- handleClearAll = () => this.onUpdateShapes([]);
106
- handleEnableDrag = () => this.setState({ dragEnabled: !0 });
107
- handleDisableDrag = () => this.setState({ dragEnabled: !1 });
108
- handleInputClick = () => {
109
- let { insertImage: e } = this.props;
110
- e && e(this.fakeImageHandler);
111
- };
112
- handleFinishDrawing = () => {
113
- this.setState({ selectedShape: i.NONE });
114
- };
115
- render() {
116
- let { dimensions: a, hasErrors: o, hotspotColor: l, imageUrl: u, multipleCorrect: p, onUpdateImageDimension: x, outlineColor: S, strokeWidth: C, preserveAspectRatioEnabled: w, hoverOutlineColor: T, selectedHotspotColor: E } = this.props, { dropzoneActive: D, dragEnabled: O } = this.state, { shapes: k, selectedShape: A } = this.state;
117
- return /* @__PURE__ */ d(m, { children: /* @__PURE__ */ f(h, {
118
- hasErrors: o,
119
- dropzoneActive: D,
120
- ...O ? {
121
- onDragExit: this.handleOnDragExit,
122
- onDragLeave: this.handleOnDragExit,
123
- onDragOver: this.handleOnDragOver,
124
- onDrop: this.handleOnDrop,
125
- onPaste: this.handleOnPaste
126
- } : {},
127
- children: [/* @__PURE__ */ f(y, { children: [
128
- /* @__PURE__ */ d(g, {
129
- onClick: () => this.setState({ selectedShape: A === i.RECTANGLE ? i.NONE : i.RECTANGLE }),
130
- children: /* @__PURE__ */ d(r, { isActive: A === i.RECTANGLE })
131
- }),
132
- /* @__PURE__ */ d(g, {
133
- onClick: () => this.setState({ selectedShape: A === i.POLYGON ? i.NONE : i.POLYGON }),
134
- children: /* @__PURE__ */ d(n, { isActive: A === i.POLYGON })
135
- }),
136
- /* @__PURE__ */ d(g, {
137
- onClick: () => this.setState({ selectedShape: A === i.CIRCLE ? i.NONE : i.CIRCLE }),
138
- children: /* @__PURE__ */ d(t, { isActive: A === i.CIRCLE })
139
- }),
140
- u && /* @__PURE__ */ d(b, { children: /* @__PURE__ */ d(c, {
141
- label: "Replace Image",
142
- onInputClick: this.handleInputClick,
143
- setRef: (e) => {
144
- this.input = e;
145
- }
146
- }) }),
147
- /* @__PURE__ */ d(e, {
148
- disabled: !(k && k.length),
149
- onClick: this.handleClearAll,
150
- label: "Clear all"
151
- })
152
- ] }), /* @__PURE__ */ d(v, {
153
- ref: (e) => {
154
- this.imageSection = e;
155
- },
156
- children: u ? /* @__PURE__ */ d(s, {
157
- dimensions: a,
158
- disableDrag: this.handleDisableDrag,
159
- enableDrag: this.handleEnableDrag,
160
- shapeType: this.state.selectedShape,
161
- handleFinishDrawing: this.handleFinishDrawing,
162
- imageUrl: u,
163
- hotspotColor: l,
164
- selectedHotspotColor: E,
165
- hoverOutlineColor: T,
166
- multipleCorrect: p,
167
- onUpdateImageDimension: x,
168
- onUpdateShapes: this.onUpdateShapes,
169
- onDeleteShape: this.onDeleteShape,
170
- outlineColor: S,
171
- shapes: k,
172
- strokeWidth: C,
173
- preserveAspectRatioEnabled: w
174
- }) : /* @__PURE__ */ f(_, { children: [
175
- /* @__PURE__ */ d("label", { children: "Drag and drop or upload image from computer" }),
176
- /* @__PURE__ */ d("br", {}),
177
- /* @__PURE__ */ d(c, {
178
- label: "Upload Image",
179
- onInputClick: this.handleInputClick,
180
- setRef: (e) => {
181
- this.input = e;
182
- }
183
- })
184
- ] })
185
- })]
186
- }) });
187
- }
188
- };
189
- S.propTypes = {
190
- dimensions: u.object.isRequired,
191
- imageUrl: u.string.isRequired,
192
- hotspotColor: u.string.isRequired,
193
- selectedHotspotColor: u.string,
194
- hoverOutlineColor: u.string,
195
- multipleCorrect: u.bool.isRequired,
196
- onImageUpload: u.func.isRequired,
197
- onUpdateImageDimension: u.func.isRequired,
198
- insertImage: u.func,
199
- onUpdateShapes: u.func.isRequired,
200
- outlineColor: u.string.isRequired,
201
- shapes: u.shape({
202
- rectangles: u.array,
203
- polygons: u.array
204
- }).isRequired,
205
- strokeWidth: u.number,
206
- preserveAspectRatioEnabled: u.bool,
207
- hasErrors: u.bool
208
- }, S.defaultProps = { strokeWidth: 5 };
209
- //#endregion
210
- export { S as default };
@@ -1,31 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/configure/src/hotspot-drawable.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
- export declare class Drawable extends React.Component {
11
- static getDerivedStateFromProps(nextProps: any, prevState: any): {
12
- shapes: any;
13
- } | null;
14
- constructor(props: any);
15
- handleOnMouseDown: any;
16
- addPolygonPoint(e: any): any;
17
- handleOnMouseUp: any;
18
- handleMouseMove: any;
19
- handleOnMouseOutOrLeave: any;
20
- handleOnDragEnd: any;
21
- closeInProgressPolygons: any;
22
- handleOnSetAsCorrect: any;
23
- handleOnImageLoad: any;
24
- initialiseResize: any;
25
- checkIfResizeValid(x: any, y: any): boolean;
26
- startResizing: any;
27
- stopResizing: any;
28
- deleteShape: any;
29
- render(): React.JSX.Element;
30
- }
31
- export default Drawable;
@@ -1,312 +0,0 @@
1
- import { CircleShape as e } from "./shapes/circle.js";
2
- import { RectangleShape as t } from "./shapes/rectagle.js";
3
- import { PolygonShape as n } from "./shapes/polygon.js";
4
- import { SHAPE_GROUPS as r, SUPPORTED_SHAPES as i } from "./shapes/utils.js";
5
- import { getUpdatedShapes as a, updateImageDimensions as o } from "./utils.js";
6
- import s from "./hotspot-rectangle.js";
7
- import c from "./hotspot-polygon.js";
8
- import l from "./hotspot-circle.js";
9
- import u, { createElement as d } from "react";
10
- import f from "prop-types";
11
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
12
- import { styled as h } from "@mui/material/styles";
13
- import { Layer as g, Stage as _ } from "react-konva";
14
- import { cloneDeep as v } from "@pie-element/shared-lodash";
15
- //#region src/author/hotspot-drawable.tsx
16
- function y(e) {
17
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
18
- }
19
- function b(e, t) {
20
- return !e || y(e) ? e : y(e.default) ? e.default : t && y(e[t]) ? e[t] : t && y(e[t]?.default) ? e[t].default : e;
21
- }
22
- var x = b(_, "Stage"), S = b(g, "Layer"), C = h("div")({ position: "relative" }), w = h("div")({
23
- position: "relative",
24
- width: "fit-content"
25
- }), T = h("img")({
26
- alignItems: "center",
27
- display: "flex",
28
- justifyContent: "center"
29
- }), E = h("div")({
30
- borderBottom: "1px solid #727272",
31
- borderRight: "1px solid #727272",
32
- bottom: "-10px",
33
- cursor: "se-resize",
34
- height: "10px",
35
- position: "absolute",
36
- right: "-10px",
37
- width: "10px"
38
- }), D = h(x)({
39
- left: 0,
40
- top: 0,
41
- position: "absolute"
42
- }), O = 800, k = class extends u.Component {
43
- static getDerivedStateFromProps(e, t) {
44
- return e.shapes === t.shapes ? null : { shapes: e.shapes };
45
- }
46
- constructor(e) {
47
- super(e), this.state = {
48
- isDrawing: !1,
49
- stateShapes: !1,
50
- resizing: !1,
51
- temporaryPolygon: null,
52
- shapes: [],
53
- dimensions: {
54
- height: 0,
55
- width: 0
56
- }
57
- };
58
- }
59
- handleOnMouseDown = (r) => {
60
- let { shapeType: a, onUpdateShapes: o, shapes: s } = this.props, c, l;
61
- if (r.target === r.currentTarget && Object.values(i).includes(a)) {
62
- switch (a) {
63
- case i.RECTANGLE:
64
- c = t.create(s, r);
65
- break;
66
- case i.CIRCLE:
67
- c = e.create(s, r);
68
- break;
69
- case i.POLYGON:
70
- if (l = this.state.isDrawingShapeId, l) {
71
- let e = this.addPolygonPoint(r);
72
- c = {
73
- isDrawing: !0,
74
- isDrawingShapeId: l,
75
- shapes: e
76
- };
77
- } else c = n.create(s, r);
78
- break;
79
- default: return;
80
- }
81
- this.setState({ ...c }), o(c.shapes);
82
- }
83
- };
84
- addPolygonPoint(e) {
85
- let { shapes: t } = n.addPoint(this.state, e, (e) => {
86
- this.setState({
87
- isDrawing: !1,
88
- shapes: e,
89
- isDrawingShapeId: void 0
90
- }), this.props.onUpdateShapes(e);
91
- });
92
- return t;
93
- }
94
- handleOnMouseUp = () => {
95
- let { shapeType: n, onUpdateShapes: r } = this.props, a;
96
- if (n !== i.POLYGON) {
97
- switch (n) {
98
- case i.RECTANGLE:
99
- a = t.finalizeCreation(this.state, this.props);
100
- break;
101
- case i.CIRCLE:
102
- a = e.finalizeCreation(this.state, this.props);
103
- break;
104
- default: return;
105
- }
106
- this.setState({
107
- ...a,
108
- isDrawing: !1
109
- }), r(a.shapes);
110
- }
111
- };
112
- handleMouseMove = (r) => {
113
- let { shapeType: a, onUpdateShapes: o } = this.props, s;
114
- if (!(!this.state.isDrawing || !Object.values(i).includes(a))) {
115
- switch (a) {
116
- case i.RECTANGLE:
117
- s = t.handleMouseMove(this.state, r);
118
- break;
119
- case i.CIRCLE:
120
- s = e.handleMouseMove(this.state, r);
121
- break;
122
- case i.POLYGON:
123
- s = n.handleMouseMove(this.state, r);
124
- break;
125
- default: return;
126
- }
127
- this.setState(s), o(s.shapes);
128
- }
129
- };
130
- handleOnMouseOutOrLeave = (e) => {
131
- this.state.isDrawing && this.handleOnMouseUp(e);
132
- };
133
- handleOnDragEnd = (e, t) => {
134
- let { shapes: n, onUpdateShapes: r, dimensions: i } = this.props, { width: a, height: o } = i;
135
- r(v(n.map((n) => {
136
- if (n.id !== e) return n;
137
- let r = t.x, i = t.y;
138
- if (n.group === "rectangles") return r + n.width < 0 || r > a || i + n.height < 0 || i > o ? null : {
139
- ...n,
140
- ...t
141
- };
142
- if (n.group === "circles") {
143
- let e = n.radius;
144
- return r + e < 0 || r - e > a || i + e < 0 || i - e > o ? null : {
145
- ...n,
146
- ...t
147
- };
148
- }
149
- if (n.group === "polygons") {
150
- let e = n.points, r = e.map((e) => e.x), i = e.map((e) => e.y), s = Math.min(...r), c = Math.min(...i), l = Math.max(...r), u = Math.max(...i), d = t.points[0].x - e[0].x, f = t.points[0].y - e[0].y;
151
- return s += d, l += d, c += f, u += f, l < 0 || s > a || u < 0 || c > o ? null : {
152
- ...n,
153
- ...t
154
- };
155
- }
156
- return n;
157
- }).filter((e) => e !== null)));
158
- };
159
- closeInProgressPolygons = (e) => {
160
- let { shapes: t, onUpdateShapes: r } = this.props, i = (t || []).find((e) => e.id === "newPolygon");
161
- (e === "newPolygon" || i && this.state.isDrawing) && n.finalizeCreation(this.state, (e) => {
162
- this.setState({
163
- isDrawing: !1,
164
- shapes: e,
165
- isDrawingShapeId: void 0
166
- }), r(v(e));
167
- });
168
- };
169
- handleOnSetAsCorrect = (e) => {
170
- let { id: t } = e, { multipleCorrect: n, shapes: r, onUpdateShapes: i } = this.props, a;
171
- a = n ? r.map((e) => (e.id === t && (e.correct = !e.correct), e)) : r.map((e) => (e.correct = e.id === t, e)), i(v(a)), this.closeInProgressPolygons(t);
172
- };
173
- handleOnImageLoad = ({ target: e }) => {
174
- let { onUpdateImageDimension: t } = this.props, n = this.resize, r = getComputedStyle(e), i = parseFloat(r.height), a = parseFloat(r.width), o = a / O, s = a > O ? {
175
- height: i / o,
176
- width: O
177
- } : {
178
- height: i,
179
- width: a
180
- };
181
- this.setState({ dimensions: s }, () => t(s)), n.addEventListener("mousedown", this.initialiseResize, !1);
182
- };
183
- initialiseResize = () => {
184
- window.addEventListener("mousemove", this.startResizing, !1), window.addEventListener("mouseup", this.stopResizing, !1);
185
- };
186
- checkIfResizeValid(e, t) {
187
- let { shapes: n } = this.state, r = !0;
188
- return n && n.forEach((n) => {
189
- let i = n.x + n.width + 5, a = n.y + n.height + 5;
190
- (e <= i || t <= a) && (r = !1);
191
- }), r;
192
- }
193
- startResizing = (e) => {
194
- let t = e.target.getBoundingClientRect(), n = this.image, { disableDrag: r, preserveAspectRatioEnabled: i, dimensions: s, shapes: c } = this.props, { width: l, height: u } = o(s, {
195
- width: e.clientX - t.left,
196
- height: e.clientY - t.top
197
- }, i);
198
- this.checkIfResizeValid(l, u) && l > 150 && u > 150 && n && (n.style.width = `${l}px`, n.style.height = `${u}px`, this.setState({
199
- resizing: !0,
200
- dimensions: {
201
- height: u,
202
- width: l
203
- },
204
- stateShapes: a(s, {
205
- width: l,
206
- height: u
207
- }, c)
208
- })), r();
209
- };
210
- stopResizing = () => {
211
- let { enableDrag: e, onUpdateImageDimension: t, onUpdateShapes: n } = this.props, { dimensions: r, stateShapes: i } = this.state;
212
- e(), i && n(v(i)), t(r), window.removeEventListener("mousemove", this.startResizing, !1), window.removeEventListener("mouseup", this.stopResizing, !1), this.setState({
213
- resizing: !1,
214
- stateShapes: !1
215
- });
216
- };
217
- deleteShape = (e) => {
218
- this.setState({
219
- isDrawing: !1,
220
- isDrawingShapeId: void 0
221
- }), this.props.onDeleteShape(e);
222
- };
223
- render() {
224
- let { imageUrl: e, dimensions: { height: t, width: n }, hotspotColor: i, outlineColor: a, shapes: o, strokeWidth: u, hoverOutlineColor: f, selectedHotspotColor: h } = this.props, { stateShapes: g, isDrawing: _, dimensions: { height: v, width: y } } = this.state, b = g || o;
225
- return /* @__PURE__ */ m(C, { children: [e && /* @__PURE__ */ m(w, { children: [/* @__PURE__ */ p(T, {
226
- onLoad: this.handleOnImageLoad,
227
- ref: (e) => {
228
- this.image = e;
229
- },
230
- src: e,
231
- ...t && n ? { style: {
232
- height: t,
233
- width: n
234
- } } : {}
235
- }), /* @__PURE__ */ p(E, { ref: (e) => {
236
- this.resize = e;
237
- } })] }), /* @__PURE__ */ p(D, {
238
- height: v || t,
239
- width: y || n,
240
- onMouseDown: this.handleOnMouseDown,
241
- onMouseUp: this.handleOnMouseUp,
242
- onMouseMove: this.handleMouseMove,
243
- onContentMouseOut: this.handleOnMouseOutOrLeave,
244
- onContentMouseLeave: this.handleOnMouseOutOrLeave,
245
- children: /* @__PURE__ */ p(S, { children: b.map((e, o) => {
246
- let p;
247
- switch (e.group) {
248
- case r.RECTANGLES:
249
- p = s;
250
- break;
251
- case r.CIRCLES:
252
- p = l;
253
- break;
254
- case r.POLYGONS:
255
- p = c;
256
- break;
257
- default: return null;
258
- }
259
- return /* @__PURE__ */ d(p, {
260
- ...e.group === r.CIRCLES ? { radius: e.radius } : {},
261
- ...e.group === r.RECTANGLES ? {
262
- height: e.height,
263
- width: e.width
264
- } : {},
265
- ...e.group === r.POLYGONS ? {
266
- points: e.points,
267
- addPolygonPoint: (e) => this.addPolygonPoint(e)
268
- } : {},
269
- correct: e.correct,
270
- isDrawing: _,
271
- hotspotColor: i,
272
- hoverOutlineColor: f,
273
- selectedHotspotColor: h,
274
- id: e.id,
275
- key: o,
276
- onClick: () => this.handleOnSetAsCorrect(e),
277
- onDragEnd: this.handleOnDragEnd,
278
- onDeleteShape: this.deleteShape,
279
- outlineColor: a,
280
- width: e.width,
281
- x: e.x,
282
- y: e.y,
283
- strokeWidth: u,
284
- imageHeight: v || t,
285
- imageWidth: y || n,
286
- ...e.group === "polygons" ? { addPolygonPoint: (e) => this.addPolygonPoint(e) } : {}
287
- });
288
- }) })
289
- })] });
290
- }
291
- };
292
- k.propTypes = {
293
- disableDrag: f.func.isRequired,
294
- dimensions: f.object.isRequired,
295
- enableDrag: f.func.isRequired,
296
- shapeType: f.oneOf(Object.values(i)),
297
- imageUrl: f.string.isRequired,
298
- handleFinishDrawing: f.func.isRequired,
299
- hotspotColor: f.string.isRequired,
300
- selectedHotspotColor: f.string,
301
- hoverOutlineColor: f.string,
302
- multipleCorrect: f.bool.isRequired,
303
- onUpdateImageDimension: f.func.isRequired,
304
- onUpdateShapes: f.func.isRequired,
305
- onDeleteShape: f.func.isRequired,
306
- outlineColor: f.string.isRequired,
307
- shapes: f.array.isRequired,
308
- strokeWidth: f.number,
309
- preserveAspectRatioEnabled: f.bool
310
- };
311
- //#endregion
312
- export { k as default };
@@ -1,14 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/hotspot/configure/src/hotspot-palette.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 Palette extends React.Component {
11
- onChange: (name: any) => (event: any) => void;
12
- render(): React.JSX.Element;
13
- }
14
- export default Palette;
@@ -1,72 +0,0 @@
1
- import e from "react";
2
- import t from "prop-types";
3
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
- import { styled as i } from "@mui/material/styles";
5
- import { InputContainer as a } from "@pie-lib/config-ui";
6
- import o from "@mui/material/Select";
7
- import s from "@mui/material/MenuItem";
8
- //#region src/author/hotspot-palette.tsx
9
- var c = i("div")(({ theme: e }) => ({
10
- marginTop: e.spacing(2),
11
- display: "flex"
12
- })), l = i(a)({
13
- flex: 1,
14
- width: "90%"
15
- }), u = i(s)(({ theme: e }) => ({
16
- borderRadius: "2px",
17
- height: "22px",
18
- marginLeft: e.spacing(2),
19
- marginRight: e.spacing(2),
20
- marginTop: e.spacing(2)
21
- })), d = class extends e.Component {
22
- onChange = (e) => (t) => {
23
- let { value: n } = t.target, { onHotspotColorChange: r, onOutlineColorChange: i } = this.props;
24
- e === "hotspot" ? r(n) : i(n);
25
- };
26
- render() {
27
- let { hotspotColor: e, outlineColor: t, hotspotList: i, outlineList: a } = this.props;
28
- return /* @__PURE__ */ r(c, { children: [/* @__PURE__ */ n(l, {
29
- label: "Hot Spot",
30
- children: /* @__PURE__ */ n(o, {
31
- onChange: this.onChange("hotspot"),
32
- value: e,
33
- variant: "standard",
34
- MenuProps: { transitionDuration: {
35
- enter: 225,
36
- exit: 195
37
- } },
38
- children: i.map((e) => /* @__PURE__ */ n(u, {
39
- value: e,
40
- style: { backgroundColor: e },
41
- children: e
42
- }, e))
43
- })
44
- }), /* @__PURE__ */ n(l, {
45
- label: "Response Outline",
46
- children: /* @__PURE__ */ n(o, {
47
- onChange: this.onChange("outline"),
48
- value: t,
49
- variant: "standard",
50
- MenuProps: { transitionDuration: {
51
- enter: 225,
52
- exit: 195
53
- } },
54
- children: a.map((e) => /* @__PURE__ */ n(u, {
55
- value: e,
56
- style: { border: `2px solid ${e}` },
57
- children: e
58
- }, e))
59
- })
60
- })] });
61
- }
62
- };
63
- d.propTypes = {
64
- hotspotColor: t.string.isRequired,
65
- hotspotList: t.array.isRequired,
66
- onHotspotColorChange: t.func.isRequired,
67
- onOutlineColorChange: t.func.isRequired,
68
- outlineColor: t.string.isRequired,
69
- outlineList: t.array.isRequired
70
- };
71
- //#endregion
72
- export { d as default };