@pie-element/hotspot 9.3.4-next.3 → 10.0.0-beta.0

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 (103) hide show
  1. package/configure/lib/DeleteWidget.js +30 -43
  2. package/configure/lib/DeleteWidget.js.map +1 -1
  3. package/configure/lib/button.js +26 -45
  4. package/configure/lib/button.js.map +1 -1
  5. package/configure/lib/buttons/circle.js +20 -27
  6. package/configure/lib/buttons/circle.js.map +1 -1
  7. package/configure/lib/buttons/polygon.js +26 -33
  8. package/configure/lib/buttons/polygon.js.map +1 -1
  9. package/configure/lib/buttons/rectangle.js +26 -33
  10. package/configure/lib/buttons/rectangle.js.map +1 -1
  11. package/configure/lib/defaults.js +2 -3
  12. package/configure/lib/defaults.js.map +1 -1
  13. package/configure/lib/hotspot-circle.js +132 -198
  14. package/configure/lib/hotspot-circle.js.map +1 -1
  15. package/configure/lib/hotspot-container.js +250 -355
  16. package/configure/lib/hotspot-container.js.map +1 -1
  17. package/configure/lib/hotspot-drawable.js +360 -472
  18. package/configure/lib/hotspot-drawable.js.map +1 -1
  19. package/configure/lib/hotspot-palette.js +92 -139
  20. package/configure/lib/hotspot-palette.js.map +1 -1
  21. package/configure/lib/hotspot-polygon.js +212 -317
  22. package/configure/lib/hotspot-polygon.js.map +1 -1
  23. package/configure/lib/hotspot-rectangle.js +128 -192
  24. package/configure/lib/hotspot-rectangle.js.map +1 -1
  25. package/configure/lib/icons.js.map +1 -1
  26. package/configure/lib/image-konva.js +46 -86
  27. package/configure/lib/image-konva.js.map +1 -1
  28. package/configure/lib/index.js +162 -222
  29. package/configure/lib/index.js.map +1 -1
  30. package/configure/lib/root.js +301 -393
  31. package/configure/lib/root.js.map +1 -1
  32. package/configure/lib/shapes/circle.js +69 -101
  33. package/configure/lib/shapes/circle.js.map +1 -1
  34. package/configure/lib/shapes/index.js +4 -12
  35. package/configure/lib/shapes/index.js.map +1 -1
  36. package/configure/lib/shapes/polygon.js +64 -96
  37. package/configure/lib/shapes/polygon.js.map +1 -1
  38. package/configure/lib/shapes/rectagle.js +69 -101
  39. package/configure/lib/shapes/rectagle.js.map +1 -1
  40. package/configure/lib/shapes/utils.js +2 -8
  41. package/configure/lib/shapes/utils.js.map +1 -1
  42. package/configure/lib/upload-control.js +25 -52
  43. package/configure/lib/upload-control.js.map +1 -1
  44. package/configure/lib/utils.js +84 -137
  45. package/configure/lib/utils.js.map +1 -1
  46. package/configure/package.json +11 -10
  47. package/configure/src/__tests__/hotspot-container.test.js +50 -19
  48. package/configure/src/__tests__/hotspot-drawable.test.js +55 -34
  49. package/configure/src/__tests__/index.test.js +167 -5
  50. package/configure/src/__tests__/root.test.js +89 -63
  51. package/configure/src/button.jsx +12 -20
  52. package/configure/src/hotspot-circle.jsx +5 -18
  53. package/configure/src/hotspot-container.jsx +82 -98
  54. package/configure/src/hotspot-drawable.jsx +43 -45
  55. package/configure/src/hotspot-palette.jsx +45 -37
  56. package/configure/src/hotspot-polygon.jsx +4 -20
  57. package/configure/src/hotspot-rectangle.jsx +4 -17
  58. package/configure/src/index.js +12 -2
  59. package/configure/src/root.jsx +85 -79
  60. package/configure/src/upload-control.jsx +6 -16
  61. package/controller/lib/defaults.js +2 -3
  62. package/controller/lib/defaults.js.map +1 -1
  63. package/controller/lib/index.js +151 -205
  64. package/controller/lib/index.js.map +1 -1
  65. package/controller/lib/utils.js +14 -34
  66. package/controller/lib/utils.js.map +1 -1
  67. package/controller/package.json +2 -2
  68. package/lib/hotspot/circle.js +110 -169
  69. package/lib/hotspot/circle.js.map +1 -1
  70. package/lib/hotspot/container.js +174 -260
  71. package/lib/hotspot/container.js.map +1 -1
  72. package/lib/hotspot/icons.js.map +1 -1
  73. package/lib/hotspot/image-konva-tooltip.js +65 -112
  74. package/lib/hotspot/image-konva-tooltip.js.map +1 -1
  75. package/lib/hotspot/index.js +135 -198
  76. package/lib/hotspot/index.js.map +1 -1
  77. package/lib/hotspot/polygon.js +150 -214
  78. package/lib/hotspot/polygon.js.map +1 -1
  79. package/lib/hotspot/rectangle.js +128 -185
  80. package/lib/hotspot/rectangle.js.map +1 -1
  81. package/lib/index.js +187 -256
  82. package/lib/index.js.map +1 -1
  83. package/lib/session-updater.js +12 -18
  84. package/lib/session-updater.js.map +1 -1
  85. package/package.json +14 -11
  86. package/src/__tests__/container.test.jsx +27 -175
  87. package/src/__tests__/index.test.js +70 -30
  88. package/src/hotspot/circle.jsx +2 -13
  89. package/src/hotspot/container.jsx +35 -50
  90. package/src/hotspot/index.jsx +16 -28
  91. package/src/hotspot/polygon.jsx +4 -13
  92. package/src/hotspot/rectangle.jsx +5 -15
  93. package/src/index.js +21 -12
  94. package/configure/src/__tests__/DeleteWidget.test.js +0 -64
  95. package/configure/src/__tests__/__snapshots__/hotspot-container.test.js.snap +0 -192
  96. package/configure/src/__tests__/__snapshots__/hotspot-drawable.test.js.snap +0 -562
  97. package/configure/src/__tests__/__snapshots__/root.test.js.snap +0 -469
  98. package/src/__tests__/__snapshots__/container.test.jsx.snap +0 -264
  99. package/src/__tests__/__snapshots__/index.test.js.snap +0 -81
  100. package/src/__tests__/__snapshots__/polygon.test.jsx.snap +0 -192
  101. package/src/__tests__/__snapshots__/rectangle.test.jsx.snap +0 -127
  102. package/src/__tests__/polygon.test.jsx +0 -230
  103. package/src/__tests__/rectangle.test.jsx +0 -232
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hotspot-drawable.jsx"],"names":["IMAGE_MAX_WIDTH","Drawable","props","e","shapeType","onUpdateShapes","shapes","newState","newShapeId","target","currentTarget","Object","values","SUPPORTED_SHAPES","includes","RECTANGLE","RectangleShape","create","CIRCLE","CircleShape","POLYGON","state","isDrawingShapeId","addPolygonPoint","isDrawing","PolygonShape","setState","finalizeCreation","handleMouseMove","handleOnMouseUp","id","updatedProps","dimensions","canvasWidth","width","canvasHeight","height","newShapes","map","shape","newX","x","newY","y","group","radius","points","xValues","point","yValues","minX","Math","min","minY","maxX","max","maxY","deltaX","deltaY","filter","inProgressPolygon","find","undefined","multipleCorrect","correct","closeInProgressPolygons","onUpdateImageDimension","resizeHandle","resize","elementStyle","getComputedStyle","newHeight","parseFloat","newWidth","aspectWidth","addEventListener","initialiseResize","window","startResizing","stopResizing","bounds","getBoundingClientRect","box","image","disableDrag","preserveAspectRatioEnabled","clientX","left","clientY","top","resizeValid","checkIfResizeValid","hasMinimumWidth","style","resizing","stateShapes","enableDrag","removeEventListener","onDeleteShape","temporaryPolygon","addPoint","drawable","forEach","right","bottom","classes","imageUrl","hotspotColor","outlineColor","strokeWidth","hoverOutlineColor","selectedHotspotColor","heightFromState","widthFromState","shapesToUse","base","imageContainer","handleOnImageLoad","ref","stage","handleOnMouseDown","handleOnMouseOutOrLeave","i","Tag","SHAPE_GROUPS","RECTANGLES","Rectangle","CIRCLES","Circle","POLYGONS","Polygon","handleOnSetAsCorrect","handleOnDragEnd","deleteShape","nextProps","prevState","React","Component","styles","position","alignItems","display","justifyContent","borderBottom","borderRight","cursor","propTypes","PropTypes","object","isRequired","func","oneOf","string","handleFinishDrawing","bool","array","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Layer, Stage } from 'react-konva';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles/index';\n\nimport Rectangle from './hotspot-rectangle';\nimport Polygon from './hotspot-polygon';\nimport Circle from './hotspot-circle';\nimport { getUpdatedShapes, updateImageDimensions } from './utils';\nimport { RectangleShape, CircleShape, PolygonShape, SUPPORTED_SHAPES, SHAPE_GROUPS } from './shapes';\nconst IMAGE_MAX_WIDTH = 800;\n\nexport class Drawable extends React.Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n // Update the state only if the props have changed\n if (nextProps.shapes !== prevState.shapes) {\n return { shapes: nextProps.shapes };\n }\n\n return null;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n isDrawing: false,\n stateShapes: false,\n resizing: false,\n temporaryPolygon: null,\n shapes: [],\n dimensions: {\n height: 0,\n width: 0,\n },\n };\n }\n\n handleOnMouseDown = (e) => {\n const { shapeType, onUpdateShapes, shapes } = this.props;\n let newState, newShapeId;\n\n // Ensure that the click originated from the expected element\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (!Object.values(SUPPORTED_SHAPES).includes(shapeType)) {\n return;\n }\n\n switch (shapeType) {\n case SUPPORTED_SHAPES.RECTANGLE:\n newState = RectangleShape.create(shapes, e);\n break;\n case SUPPORTED_SHAPES.CIRCLE:\n newState = CircleShape.create(shapes, e);\n break;\n case SUPPORTED_SHAPES.POLYGON:\n newShapeId = this.state.isDrawingShapeId;\n\n if (newShapeId) {\n // If a polygon is in progress, add a new point\n const shapes = this.addPolygonPoint(e);\n\n newState = {\n isDrawing: true,\n isDrawingShapeId: newShapeId,\n shapes: shapes,\n };\n } else {\n // Else start a new one\n newState = PolygonShape.create(shapes, e);\n }\n break;\n default:\n return;\n }\n\n this.setState({\n ...newState,\n });\n\n onUpdateShapes(newState.shapes);\n };\n\n addPolygonPoint(e) {\n const { shapes } = PolygonShape.addPoint(this.state, e, (newShapes) => {\n this.setState({\n isDrawing: false,\n shapes: newShapes,\n isDrawingShapeId: undefined,\n });\n\n this.props.onUpdateShapes(newShapes);\n });\n\n return shapes;\n }\n\n handleOnMouseUp = () => {\n const { shapeType, onUpdateShapes } = this.props;\n let newState;\n\n if (shapeType === SUPPORTED_SHAPES.POLYGON) {\n return;\n }\n\n switch (shapeType) {\n case SUPPORTED_SHAPES.RECTANGLE:\n newState = RectangleShape.finalizeCreation(this.state, this.props);\n break;\n case SUPPORTED_SHAPES.CIRCLE:\n newState = CircleShape.finalizeCreation(this.state, this.props);\n break;\n default:\n return;\n }\n\n this.setState({\n ...newState,\n isDrawing: false,\n });\n\n onUpdateShapes(newState.shapes);\n };\n\n handleMouseMove = (e) => {\n const { shapeType, onUpdateShapes } = this.props;\n let newState;\n\n if (!this.state.isDrawing || !Object.values(SUPPORTED_SHAPES).includes(shapeType)) {\n return;\n }\n\n switch (shapeType) {\n case SUPPORTED_SHAPES.RECTANGLE:\n newState = RectangleShape.handleMouseMove(this.state, e);\n break;\n case SUPPORTED_SHAPES.CIRCLE:\n newState = CircleShape.handleMouseMove(this.state, e);\n break;\n case SUPPORTED_SHAPES.POLYGON:\n newState = PolygonShape.handleMouseMove(this.state, e);\n break;\n default:\n return;\n }\n\n this.setState(newState);\n onUpdateShapes(newState.shapes);\n };\n\n handleOnMouseOutOrLeave = (e) => {\n if (this.state.isDrawing) {\n this.handleOnMouseUp(e);\n }\n };\n\n handleOnDragEnd = (id, updatedProps) => {\n const { shapes, onUpdateShapes, dimensions } = this.props;\n const { width: canvasWidth, height: canvasHeight } = dimensions;\n\n // when a shape is moved completely outside the canvas\n // remove that shape\n const newShapes = shapes\n .map((shape) => {\n if (shape.id !== id) {\n return shape;\n }\n\n let newX = updatedProps.x;\n let newY = updatedProps.y;\n\n if (shape.group === 'rectangles') {\n if (newX + shape.width < 0 || newX > canvasWidth || newY + shape.height < 0 || newY > canvasHeight) {\n return null;\n }\n\n return { ...shape, ...updatedProps };\n }\n\n if (shape.group === 'circles') {\n const radius = shape.radius;\n if (newX + radius < 0 || newX - radius > canvasWidth || newY + radius < 0 || newY - radius > canvasHeight) {\n return null;\n }\n\n return { ...shape, ...updatedProps };\n }\n\n if (shape.group === 'polygons') {\n const points = shape.points;\n const xValues = points.map((point) => point.x);\n const yValues = points.map((point) => point.y);\n\n let minX = Math.min(...xValues);\n let minY = Math.min(...yValues);\n let maxX = Math.max(...xValues);\n let maxY = Math.max(...yValues);\n\n // Calculate deltas based on the first point as a reference\n const deltaX = updatedProps['points'][0].x - points[0].x;\n const deltaY = updatedProps['points'][0].y - points[0].y;\n\n minX = minX + deltaX;\n maxX = maxX + deltaX;\n minY = minY + deltaY;\n maxY = maxY + deltaY;\n\n if (maxX < 0 || minX > canvasWidth || maxY < 0 || minY > canvasHeight) {\n return null;\n }\n\n return { ...shape, ...updatedProps };\n }\n\n return shape;\n })\n .filter((shape) => shape !== null);\n\n onUpdateShapes(cloneDeep(newShapes));\n };\n\n closeInProgressPolygons = (id) => {\n const { shapes, onUpdateShapes } = this.props;\n\n const inProgressPolygon = (shapes || []).find((shape) => shape.id === 'newPolygon');\n if (id === 'newPolygon' || (inProgressPolygon && this.state.isDrawing)) {\n PolygonShape.finalizeCreation(this.state, (newShapes) => {\n this.setState({\n isDrawing: false,\n shapes: newShapes,\n isDrawingShapeId: undefined,\n });\n\n onUpdateShapes(cloneDeep(newShapes));\n });\n }\n }\n\n handleOnSetAsCorrect = (shape) => {\n const { id } = shape;\n const { multipleCorrect, shapes, onUpdateShapes } = this.props;\n\n let newShapes;\n\n if (multipleCorrect) {\n newShapes = shapes.map((shape) => {\n if (shape.id === id) {\n shape.correct = !shape.correct;\n }\n return shape;\n });\n } else {\n newShapes = shapes.map((shape) => {\n shape.correct = shape.id === id;\n return shape;\n });\n }\n\n onUpdateShapes(cloneDeep(newShapes));\n\n this.closeInProgressPolygons(id);\n };\n /// end of handling HotSpots section\n\n /// start of handling Image section\n handleOnImageLoad = ({ target }) => {\n const { onUpdateImageDimension } = this.props;\n const resizeHandle = this.resize;\n const elementStyle = getComputedStyle(target);\n const newHeight = parseFloat(elementStyle.height);\n const newWidth = parseFloat(elementStyle.width);\n const aspectWidth = newWidth / IMAGE_MAX_WIDTH;\n\n const dimensions =\n newWidth > IMAGE_MAX_WIDTH\n ? {\n height: newHeight / aspectWidth,\n width: IMAGE_MAX_WIDTH,\n }\n : {\n height: newHeight,\n width: newWidth,\n };\n\n this.setState({ dimensions }, () => onUpdateImageDimension(dimensions));\n\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n checkIfResizeValid(x, y) {\n const { shapes } = this.state;\n let drawable = true;\n\n // Do not allow resizing over the hotspots\n shapes &&\n shapes.forEach((shape) => {\n const right = shape.x + shape.width + 5;\n const bottom = shape.y + shape.height + 5;\n if (x <= right || y <= bottom) {\n drawable = false;\n }\n });\n return drawable;\n }\n\n startResizing = (e) => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.image;\n const { disableDrag, preserveAspectRatioEnabled, dimensions, shapes } = this.props;\n\n const { width, height } = updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top,\n },\n preserveAspectRatioEnabled,\n );\n\n const resizeValid = this.checkIfResizeValid(width, height);\n const hasMinimumWidth = width > 150 && height > 150;\n\n if (resizeValid && hasMinimumWidth && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n resizing: true,\n dimensions: { height: height, width: width },\n stateShapes: getUpdatedShapes(dimensions, { width, height }, shapes),\n });\n }\n\n disableDrag();\n };\n\n stopResizing = () => {\n const { enableDrag, onUpdateImageDimension, onUpdateShapes } = this.props;\n const { dimensions, stateShapes } = this.state;\n\n enableDrag();\n\n if (stateShapes) {\n onUpdateShapes(cloneDeep(stateShapes));\n }\n\n onUpdateImageDimension(dimensions);\n\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n\n this.setState({ resizing: false, stateShapes: false });\n };\n\n deleteShape = (id) => {\n this.setState({\n isDrawing: false,\n isDrawingShapeId: undefined,\n });\n this.props.onDeleteShape(id);\n };\n\n /// end of handling Image section\n\n render() {\n const {\n classes,\n imageUrl,\n dimensions: { height, width },\n hotspotColor,\n outlineColor,\n shapes,\n strokeWidth,\n hoverOutlineColor,\n selectedHotspotColor,\n } = this.props;\n\n const {\n stateShapes,\n isDrawing,\n dimensions: { height: heightFromState, width: widthFromState },\n } = this.state;\n const shapesToUse = stateShapes || shapes;\n\n return (\n <div className={classes.base}>\n {imageUrl && (\n <div className={classes.imageContainer}>\n <img\n className={classes.image}\n onLoad={this.handleOnImageLoad}\n ref={(ref) => {\n this.image = ref;\n }}\n src={imageUrl}\n {...(height && width ? { style: { height, width } } : {})}\n />\n <div\n ref={(ref) => {\n this.resize = ref;\n }}\n className={classes.resize}\n />\n </div>\n )}\n\n <Stage\n className={classes.stage}\n height={heightFromState || height}\n width={widthFromState || width}\n onMouseDown={this.handleOnMouseDown}\n onMouseUp={this.handleOnMouseUp}\n onMouseMove={this.handleMouseMove}\n onContentMouseOut={this.handleOnMouseOutOrLeave}\n onContentMouseLeave={this.handleOnMouseOutOrLeave}\n >\n <Layer>\n {shapesToUse.map((shape, i) => {\n let Tag;\n switch (shape.group) {\n case SHAPE_GROUPS.RECTANGLES:\n Tag = Rectangle;\n break;\n case SHAPE_GROUPS.CIRCLES:\n Tag = Circle;\n break;\n case SHAPE_GROUPS.POLYGONS:\n Tag = Polygon;\n break;\n default:\n return null;\n }\n\n return (\n <Tag\n {...(shape.group === SHAPE_GROUPS.CIRCLES ? { radius: shape.radius } : {})}\n {...(shape.group === SHAPE_GROUPS.RECTANGLES ? { height: shape.height, width: shape.width } : {})}\n {...(shape.group === SHAPE_GROUPS.POLYGONS\n ? { points: shape.points, addPolygonPoint: (e) => this.addPolygonPoint(e) }\n : {})}\n correct={shape.correct}\n isDrawing={isDrawing}\n hotspotColor={hotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n selectedHotspotColor={selectedHotspotColor}\n id={shape.id}\n key={i}\n onClick={() => this.handleOnSetAsCorrect(shape)}\n onDragEnd={this.handleOnDragEnd}\n onDeleteShape={this.deleteShape}\n outlineColor={outlineColor}\n width={shape.width}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n imageHeight={heightFromState || height}\n imageWidth={widthFromState || width}\n {...(shape.group === 'polygons' ? { addPolygonPoint: (e) => this.addPolygonPoint(e) } : {})}\n />\n );\n })}\n </Layer>\n </Stage>\n </div>\n );\n }\n}\n\nconst styles = () => ({\n base: {\n position: 'relative',\n },\n image: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n },\n resize: {\n borderBottom: '1px solid #727272',\n borderRight: '1px solid #727272',\n bottom: '-10px',\n cursor: 'se-resize',\n height: '10px',\n position: 'absolute',\n right: '-10px',\n width: '10px',\n },\n stage: {\n left: 0,\n top: 0,\n position: 'absolute',\n },\n});\n\nDrawable.propTypes = {\n classes: PropTypes.object.isRequired,\n disableDrag: PropTypes.func.isRequired,\n dimensions: PropTypes.object.isRequired,\n enableDrag: PropTypes.func.isRequired,\n shapeType: PropTypes.oneOf(Object.values(SUPPORTED_SHAPES)),\n imageUrl: PropTypes.string.isRequired,\n handleFinishDrawing: PropTypes.func.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n selectedHotspotColor: PropTypes.string,\n hoverOutlineColor: PropTypes.string,\n multipleCorrect: PropTypes.bool.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n onDeleteShape: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n shapes: PropTypes.array.isRequired,\n strokeWidth: PropTypes.number,\n preserveAspectRatioEnabled: PropTypes.bool,\n};\n\nexport default withStyles(styles)(Drawable);\n"],"file":"hotspot-drawable.js"}
1
+ {"version":3,"file":"hotspot-drawable.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_cloneDeep","_styles","_hotspotRectangle","_hotspotPolygon","_hotspotCircle","_utils","_shapes","BaseContainer","styled","position","ImageContainer","width","Image","alignItems","display","justifyContent","ResizeHandle","borderBottom","borderRight","bottom","cursor","height","right","StyledStage","Stage","left","top","IMAGE_MAX_WIDTH","Drawable","React","Component","getDerivedStateFromProps","nextProps","prevState","shapes","constructor","props","_defineProperty2","default","e","shapeType","onUpdateShapes","newState","newShapeId","target","currentTarget","Object","values","SUPPORTED_SHAPES","includes","RECTANGLE","RectangleShape","create","CIRCLE","CircleShape","POLYGON","state","isDrawingShapeId","addPolygonPoint","isDrawing","PolygonShape","setState","finalizeCreation","handleMouseMove","handleOnMouseUp","id","updatedProps","dimensions","canvasWidth","canvasHeight","newShapes","map","shape","newX","x","newY","y","group","radius","points","xValues","point","yValues","minX","Math","min","minY","maxX","max","maxY","deltaX","deltaY","filter","cloneDeep","inProgressPolygon","find","undefined","multipleCorrect","correct","closeInProgressPolygons","onUpdateImageDimension","resizeHandle","resize","elementStyle","getComputedStyle","newHeight","parseFloat","newWidth","aspectWidth","addEventListener","initialiseResize","window","startResizing","stopResizing","bounds","getBoundingClientRect","box","image","disableDrag","preserveAspectRatioEnabled","updateImageDimensions","clientX","clientY","resizeValid","checkIfResizeValid","hasMinimumWidth","style","resizing","stateShapes","getUpdatedShapes","enableDrag","removeEventListener","onDeleteShape","temporaryPolygon","addPoint","drawable","forEach","render","imageUrl","hotspotColor","outlineColor","strokeWidth","hoverOutlineColor","selectedHotspotColor","heightFromState","widthFromState","shapesToUse","createElement","_extends2","onLoad","handleOnImageLoad","ref","src","onMouseDown","handleOnMouseDown","onMouseUp","onMouseMove","onContentMouseOut","handleOnMouseOutOrLeave","onContentMouseLeave","Layer","i","Tag","SHAPE_GROUPS","RECTANGLES","Rectangle","CIRCLES","Circle","POLYGONS","Polygon","key","onClick","handleOnSetAsCorrect","onDragEnd","handleOnDragEnd","deleteShape","imageHeight","imageWidth","exports","propTypes","PropTypes","func","isRequired","object","oneOf","string","handleFinishDrawing","bool","array","number","_default"],"sources":["../src/hotspot-drawable.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Layer, Stage } from 'react-konva';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { styled } from '@mui/material/styles';\n\nimport Rectangle from './hotspot-rectangle';\nimport Polygon from './hotspot-polygon';\nimport Circle from './hotspot-circle';\nimport { getUpdatedShapes, updateImageDimensions } from './utils';\nimport { RectangleShape, CircleShape, PolygonShape, SUPPORTED_SHAPES, SHAPE_GROUPS } from './shapes';\n\nconst BaseContainer = styled('div')({\n position: 'relative',\n});\n\nconst ImageContainer = styled('div')({\n position: 'relative',\n width: 'fit-content',\n});\n\nconst Image = styled('img')({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n});\n\nconst ResizeHandle = styled('div')({\n borderBottom: '1px solid #727272',\n borderRight: '1px solid #727272',\n bottom: '-10px',\n cursor: 'se-resize',\n height: '10px',\n position: 'absolute',\n right: '-10px',\n width: '10px',\n});\n\nconst StyledStage = styled(Stage)({\n left: 0,\n top: 0,\n position: 'absolute',\n});\n\nconst IMAGE_MAX_WIDTH = 800;\n\nexport class Drawable extends React.Component {\n static getDerivedStateFromProps(nextProps, prevState) {\n // Update the state only if the props have changed\n if (nextProps.shapes !== prevState.shapes) {\n return { shapes: nextProps.shapes };\n }\n\n return null;\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n isDrawing: false,\n stateShapes: false,\n resizing: false,\n temporaryPolygon: null,\n shapes: [],\n dimensions: {\n height: 0,\n width: 0,\n },\n };\n }\n\n handleOnMouseDown = (e) => {\n const { shapeType, onUpdateShapes, shapes } = this.props;\n let newState, newShapeId;\n\n // Ensure that the click originated from the expected element\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (!Object.values(SUPPORTED_SHAPES).includes(shapeType)) {\n return;\n }\n\n switch (shapeType) {\n case SUPPORTED_SHAPES.RECTANGLE:\n newState = RectangleShape.create(shapes, e);\n break;\n case SUPPORTED_SHAPES.CIRCLE:\n newState = CircleShape.create(shapes, e);\n break;\n case SUPPORTED_SHAPES.POLYGON:\n newShapeId = this.state.isDrawingShapeId;\n\n if (newShapeId) {\n // If a polygon is in progress, add a new point\n const shapes = this.addPolygonPoint(e);\n\n newState = {\n isDrawing: true,\n isDrawingShapeId: newShapeId,\n shapes: shapes,\n };\n } else {\n // Else start a new one\n newState = PolygonShape.create(shapes, e);\n }\n break;\n default:\n return;\n }\n\n this.setState({\n ...newState,\n });\n\n onUpdateShapes(newState.shapes);\n };\n\n addPolygonPoint(e) {\n const { shapes } = PolygonShape.addPoint(this.state, e, (newShapes) => {\n this.setState({\n isDrawing: false,\n shapes: newShapes,\n isDrawingShapeId: undefined,\n });\n\n this.props.onUpdateShapes(newShapes);\n });\n\n return shapes;\n }\n\n handleOnMouseUp = () => {\n const { shapeType, onUpdateShapes } = this.props;\n let newState;\n\n if (shapeType === SUPPORTED_SHAPES.POLYGON) {\n return;\n }\n\n switch (shapeType) {\n case SUPPORTED_SHAPES.RECTANGLE:\n newState = RectangleShape.finalizeCreation(this.state, this.props);\n break;\n case SUPPORTED_SHAPES.CIRCLE:\n newState = CircleShape.finalizeCreation(this.state, this.props);\n break;\n default:\n return;\n }\n\n this.setState({\n ...newState,\n isDrawing: false,\n });\n\n onUpdateShapes(newState.shapes);\n };\n\n handleMouseMove = (e) => {\n const { shapeType, onUpdateShapes } = this.props;\n let newState;\n\n if (!this.state.isDrawing || !Object.values(SUPPORTED_SHAPES).includes(shapeType)) {\n return;\n }\n\n switch (shapeType) {\n case SUPPORTED_SHAPES.RECTANGLE:\n newState = RectangleShape.handleMouseMove(this.state, e);\n break;\n case SUPPORTED_SHAPES.CIRCLE:\n newState = CircleShape.handleMouseMove(this.state, e);\n break;\n case SUPPORTED_SHAPES.POLYGON:\n newState = PolygonShape.handleMouseMove(this.state, e);\n break;\n default:\n return;\n }\n\n this.setState(newState);\n onUpdateShapes(newState.shapes);\n };\n\n handleOnMouseOutOrLeave = (e) => {\n if (this.state.isDrawing) {\n this.handleOnMouseUp(e);\n }\n };\n\n handleOnDragEnd = (id, updatedProps) => {\n const { shapes, onUpdateShapes, dimensions } = this.props;\n const { width: canvasWidth, height: canvasHeight } = dimensions;\n\n // when a shape is moved completely outside the canvas\n // remove that shape\n const newShapes = shapes\n .map((shape) => {\n if (shape.id !== id) {\n return shape;\n }\n\n let newX = updatedProps.x;\n let newY = updatedProps.y;\n\n if (shape.group === 'rectangles') {\n if (newX + shape.width < 0 || newX > canvasWidth || newY + shape.height < 0 || newY > canvasHeight) {\n return null;\n }\n\n return { ...shape, ...updatedProps };\n }\n\n if (shape.group === 'circles') {\n const radius = shape.radius;\n if (newX + radius < 0 || newX - radius > canvasWidth || newY + radius < 0 || newY - radius > canvasHeight) {\n return null;\n }\n\n return { ...shape, ...updatedProps };\n }\n\n if (shape.group === 'polygons') {\n const points = shape.points;\n const xValues = points.map((point) => point.x);\n const yValues = points.map((point) => point.y);\n\n let minX = Math.min(...xValues);\n let minY = Math.min(...yValues);\n let maxX = Math.max(...xValues);\n let maxY = Math.max(...yValues);\n\n // Calculate deltas based on the first point as a reference\n const deltaX = updatedProps['points'][0].x - points[0].x;\n const deltaY = updatedProps['points'][0].y - points[0].y;\n\n minX = minX + deltaX;\n maxX = maxX + deltaX;\n minY = minY + deltaY;\n maxY = maxY + deltaY;\n\n if (maxX < 0 || minX > canvasWidth || maxY < 0 || minY > canvasHeight) {\n return null;\n }\n\n return { ...shape, ...updatedProps };\n }\n\n return shape;\n })\n .filter((shape) => shape !== null);\n\n onUpdateShapes(cloneDeep(newShapes));\n };\n\n closeInProgressPolygons = (id) => {\n const { shapes, onUpdateShapes } = this.props;\n\n const inProgressPolygon = (shapes || []).find((shape) => shape.id === 'newPolygon');\n if (id === 'newPolygon' || (inProgressPolygon && this.state.isDrawing)) {\n PolygonShape.finalizeCreation(this.state, (newShapes) => {\n this.setState({\n isDrawing: false,\n shapes: newShapes,\n isDrawingShapeId: undefined,\n });\n\n onUpdateShapes(cloneDeep(newShapes));\n });\n }\n }\n\n handleOnSetAsCorrect = (shape) => {\n const { id } = shape;\n const { multipleCorrect, shapes, onUpdateShapes } = this.props;\n\n let newShapes;\n\n if (multipleCorrect) {\n newShapes = shapes.map((shape) => {\n if (shape.id === id) {\n shape.correct = !shape.correct;\n }\n return shape;\n });\n } else {\n newShapes = shapes.map((shape) => {\n shape.correct = shape.id === id;\n return shape;\n });\n }\n\n onUpdateShapes(cloneDeep(newShapes));\n\n this.closeInProgressPolygons(id);\n };\n /// end of handling HotSpots section\n\n /// start of handling Image section\n handleOnImageLoad = ({ target }) => {\n const { onUpdateImageDimension } = this.props;\n const resizeHandle = this.resize;\n const elementStyle = getComputedStyle(target);\n const newHeight = parseFloat(elementStyle.height);\n const newWidth = parseFloat(elementStyle.width);\n const aspectWidth = newWidth / IMAGE_MAX_WIDTH;\n\n const dimensions =\n newWidth > IMAGE_MAX_WIDTH\n ? {\n height: newHeight / aspectWidth,\n width: IMAGE_MAX_WIDTH,\n }\n : {\n height: newHeight,\n width: newWidth,\n };\n\n this.setState({ dimensions }, () => onUpdateImageDimension(dimensions));\n\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n checkIfResizeValid(x, y) {\n const { shapes } = this.state;\n let drawable = true;\n\n // Do not allow resizing over the hotspots\n shapes &&\n shapes.forEach((shape) => {\n const right = shape.x + shape.width + 5;\n const bottom = shape.y + shape.height + 5;\n if (x <= right || y <= bottom) {\n drawable = false;\n }\n });\n return drawable;\n }\n\n startResizing = (e) => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.image;\n const { disableDrag, preserveAspectRatioEnabled, dimensions, shapes } = this.props;\n\n const { width, height } = updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top,\n },\n preserveAspectRatioEnabled,\n );\n\n const resizeValid = this.checkIfResizeValid(width, height);\n const hasMinimumWidth = width > 150 && height > 150;\n\n if (resizeValid && hasMinimumWidth && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n resizing: true,\n dimensions: { height: height, width: width },\n stateShapes: getUpdatedShapes(dimensions, { width, height }, shapes),\n });\n }\n\n disableDrag();\n };\n\n stopResizing = () => {\n const { enableDrag, onUpdateImageDimension, onUpdateShapes } = this.props;\n const { dimensions, stateShapes } = this.state;\n\n enableDrag();\n\n if (stateShapes) {\n onUpdateShapes(cloneDeep(stateShapes));\n }\n\n onUpdateImageDimension(dimensions);\n\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n\n this.setState({ resizing: false, stateShapes: false });\n };\n\n deleteShape = (id) => {\n this.setState({\n isDrawing: false,\n isDrawingShapeId: undefined,\n });\n this.props.onDeleteShape(id);\n };\n\n /// end of handling Image section\n\n render() {\n const {\n imageUrl,\n dimensions: { height, width },\n hotspotColor,\n outlineColor,\n shapes,\n strokeWidth,\n hoverOutlineColor,\n selectedHotspotColor,\n } = this.props;\n\n const {\n stateShapes,\n isDrawing,\n dimensions: { height: heightFromState, width: widthFromState },\n } = this.state;\n const shapesToUse = stateShapes || shapes;\n\n return (\n <BaseContainer>\n {imageUrl && (\n <ImageContainer>\n <Image\n onLoad={this.handleOnImageLoad}\n ref={(ref) => {\n this.image = ref;\n }}\n src={imageUrl}\n {...(height && width ? { style: { height, width } } : {})}\n />\n <ResizeHandle\n ref={(ref) => {\n this.resize = ref;\n }}\n />\n </ImageContainer>\n )}\n\n <StyledStage\n height={heightFromState || height}\n width={widthFromState || width}\n onMouseDown={this.handleOnMouseDown}\n onMouseUp={this.handleOnMouseUp}\n onMouseMove={this.handleMouseMove}\n onContentMouseOut={this.handleOnMouseOutOrLeave}\n onContentMouseLeave={this.handleOnMouseOutOrLeave}\n >\n <Layer>\n {shapesToUse.map((shape, i) => {\n let Tag;\n switch (shape.group) {\n case SHAPE_GROUPS.RECTANGLES:\n Tag = Rectangle;\n break;\n case SHAPE_GROUPS.CIRCLES:\n Tag = Circle;\n break;\n case SHAPE_GROUPS.POLYGONS:\n Tag = Polygon;\n break;\n default:\n return null;\n }\n\n return (\n <Tag\n {...(shape.group === SHAPE_GROUPS.CIRCLES ? { radius: shape.radius } : {})}\n {...(shape.group === SHAPE_GROUPS.RECTANGLES ? { height: shape.height, width: shape.width } : {})}\n {...(shape.group === SHAPE_GROUPS.POLYGONS\n ? { points: shape.points, addPolygonPoint: (e) => this.addPolygonPoint(e) }\n : {})}\n correct={shape.correct}\n isDrawing={isDrawing}\n hotspotColor={hotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n selectedHotspotColor={selectedHotspotColor}\n id={shape.id}\n key={i}\n onClick={() => this.handleOnSetAsCorrect(shape)}\n onDragEnd={this.handleOnDragEnd}\n onDeleteShape={this.deleteShape}\n outlineColor={outlineColor}\n width={shape.width}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n imageHeight={heightFromState || height}\n imageWidth={widthFromState || width}\n {...(shape.group === 'polygons' ? { addPolygonPoint: (e) => this.addPolygonPoint(e) } : {})}\n />\n );\n })}\n </Layer>\n </StyledStage>\n </BaseContainer>\n );\n }\n}\n\nDrawable.propTypes = {\n disableDrag: PropTypes.func.isRequired,\n dimensions: PropTypes.object.isRequired,\n enableDrag: PropTypes.func.isRequired,\n shapeType: PropTypes.oneOf(Object.values(SUPPORTED_SHAPES)),\n imageUrl: PropTypes.string.isRequired,\n handleFinishDrawing: PropTypes.func.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n selectedHotspotColor: PropTypes.string,\n hoverOutlineColor: PropTypes.string,\n multipleCorrect: PropTypes.bool.isRequired,\n onUpdateImageDimension: PropTypes.func.isRequired,\n onUpdateShapes: PropTypes.func.isRequired,\n onDeleteShape: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n shapes: PropTypes.array.isRequired,\n strokeWidth: PropTypes.number,\n preserveAspectRatioEnabled: PropTypes.bool,\n};\n\nexport default Drawable;\n"],"mappings":"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","ignoreList":[]}
@@ -1,154 +1,107 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
7
+ exports.default = void 0;
22
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
9
  var _react = _interopRequireDefault(require("react"));
25
-
26
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
11
  var _configUi = require("@pie-lib/config-ui");
29
-
30
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
31
-
32
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
36
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
-
38
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
-
40
- var Palette = /*#__PURE__*/function (_React$Component) {
41
- (0, _inherits2["default"])(Palette, _React$Component);
42
-
43
- var _super = _createSuper(Palette);
44
-
45
- function Palette() {
46
- var _this;
47
-
48
- (0, _classCallCheck2["default"])(this, Palette);
49
-
50
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
51
- args[_key] = arguments[_key];
52
- }
53
-
54
- _this = _super.call.apply(_super, [this].concat(args));
55
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (name) {
56
- return function (event) {
57
- var value = event.target.value;
58
- var _this$props = _this.props,
59
- onHotspotColorChange = _this$props.onHotspotColorChange,
60
- onOutlineColorChange = _this$props.onOutlineColorChange;
61
-
62
- if (name === 'hotspot') {
63
- onHotspotColorChange(value);
64
- } else {
65
- onOutlineColorChange(value);
66
- }
67
- };
12
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
13
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
14
+ var _styles = require("@mui/material/styles");
15
+ const BaseContainer = (0, _styles.styled)('div')(({
16
+ theme
17
+ }) => ({
18
+ marginTop: theme.spacing(2),
19
+ display: 'flex'
20
+ }));
21
+ const StyledInputContainer = (0, _styles.styled)(_configUi.InputContainer)({
22
+ flex: 1,
23
+ width: '90%'
24
+ });
25
+ const StyledMenuItem = (0, _styles.styled)(_MenuItem.default)(({
26
+ theme
27
+ }) => ({
28
+ borderRadius: '2px',
29
+ height: '22px',
30
+ marginLeft: theme.spacing(2),
31
+ marginRight: theme.spacing(2),
32
+ marginTop: theme.spacing(2)
33
+ }));
34
+ class Palette extends _react.default.Component {
35
+ constructor(...args) {
36
+ super(...args);
37
+ (0, _defineProperty2.default)(this, "onChange", name => event => {
38
+ const {
39
+ value
40
+ } = event.target;
41
+ const {
42
+ onHotspotColorChange,
43
+ onOutlineColorChange
44
+ } = this.props;
45
+ if (name === 'hotspot') {
46
+ onHotspotColorChange(value);
47
+ } else {
48
+ onOutlineColorChange(value);
49
+ }
68
50
  });
69
- return _this;
70
51
  }
71
-
72
- (0, _createClass2["default"])(Palette, [{
73
- key: "render",
74
- value: function render() {
75
- var _this$props2 = this.props,
76
- classes = _this$props2.classes,
77
- hotspotColor = _this$props2.hotspotColor,
78
- outlineColor = _this$props2.outlineColor,
79
- hotspotList = _this$props2.hotspotList,
80
- outlineList = _this$props2.outlineList;
81
- return /*#__PURE__*/_react["default"].createElement("div", {
82
- className: classes.base
83
- }, /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
84
- label: "Hot Spot",
85
- className: classes.input
86
- }, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
87
- className: classes.select,
88
- onChange: this.onChange('hotspot'),
89
- value: hotspotColor
90
- }, hotspotList.map(function (hotspot) {
91
- return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
92
- key: hotspot,
93
- value: hotspot,
94
- className: classes.item,
95
- style: {
96
- backgroundColor: hotspot
97
- }
98
- }, hotspot);
99
- }))), /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
100
- label: "Response Outline",
101
- className: classes.input
102
- }, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
103
- className: classes.select,
104
- onChange: this.onChange('outline'),
105
- value: outlineColor
106
- }, outlineList.map(function (outline) {
107
- return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
108
- key: outline,
109
- value: outline,
110
- className: classes.item,
111
- style: {
112
- border: "2px solid ".concat(outline)
113
- }
114
- }, outline);
115
- }))));
116
- }
117
- }]);
118
- return Palette;
119
- }(_react["default"].Component);
120
-
121
- var styles = function styles(theme) {
122
- return {
123
- base: {
124
- marginTop: theme.spacing.unit * 2,
125
- display: 'flex'
126
- },
127
- input: {
128
- flex: 1,
129
- width: '90%'
130
- },
131
- item: {
132
- borderRadius: '2px',
133
- height: '22px',
134
- marginLeft: theme.spacing.unit * 2,
135
- marginRight: theme.spacing.unit * 2,
136
- marginTop: theme.spacing.unit * 2
137
- }
138
- };
139
- };
140
-
52
+ render() {
53
+ const {
54
+ hotspotColor,
55
+ outlineColor,
56
+ hotspotList,
57
+ outlineList
58
+ } = this.props;
59
+ return /*#__PURE__*/_react.default.createElement(BaseContainer, null, /*#__PURE__*/_react.default.createElement(StyledInputContainer, {
60
+ label: "Hot Spot"
61
+ }, /*#__PURE__*/_react.default.createElement(_Select.default, {
62
+ onChange: this.onChange('hotspot'),
63
+ value: hotspotColor,
64
+ variant: "standard",
65
+ MenuProps: {
66
+ transitionDuration: {
67
+ enter: 225,
68
+ exit: 195
69
+ }
70
+ }
71
+ }, hotspotList.map(hotspot => /*#__PURE__*/_react.default.createElement(StyledMenuItem, {
72
+ key: hotspot,
73
+ value: hotspot,
74
+ style: {
75
+ backgroundColor: hotspot
76
+ }
77
+ }, hotspot)))), /*#__PURE__*/_react.default.createElement(StyledInputContainer, {
78
+ label: "Response Outline"
79
+ }, /*#__PURE__*/_react.default.createElement(_Select.default, {
80
+ onChange: this.onChange('outline'),
81
+ value: outlineColor,
82
+ variant: "standard",
83
+ MenuProps: {
84
+ transitionDuration: {
85
+ enter: 225,
86
+ exit: 195
87
+ }
88
+ }
89
+ }, outlineList.map(outline => /*#__PURE__*/_react.default.createElement(StyledMenuItem, {
90
+ key: outline,
91
+ value: outline,
92
+ style: {
93
+ border: `2px solid ${outline}`
94
+ }
95
+ }, outline)))));
96
+ }
97
+ }
141
98
  Palette.propTypes = {
142
- classes: _propTypes["default"].object.isRequired,
143
- hotspotColor: _propTypes["default"].string.isRequired,
144
- hotspotList: _propTypes["default"].array.isRequired,
145
- onHotspotColorChange: _propTypes["default"].func.isRequired,
146
- onOutlineColorChange: _propTypes["default"].func.isRequired,
147
- outlineColor: _propTypes["default"].string.isRequired,
148
- outlineList: _propTypes["default"].array.isRequired
99
+ hotspotColor: _propTypes.default.string.isRequired,
100
+ hotspotList: _propTypes.default.array.isRequired,
101
+ onHotspotColorChange: _propTypes.default.func.isRequired,
102
+ onOutlineColorChange: _propTypes.default.func.isRequired,
103
+ outlineColor: _propTypes.default.string.isRequired,
104
+ outlineList: _propTypes.default.array.isRequired
149
105
  };
150
-
151
- var _default = (0, _styles.withStyles)(styles)(Palette);
152
-
153
- exports["default"] = _default;
106
+ var _default = exports.default = Palette;
154
107
  //# sourceMappingURL=hotspot-palette.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hotspot-palette.jsx"],"names":["Palette","name","event","value","target","props","onHotspotColorChange","onOutlineColorChange","classes","hotspotColor","outlineColor","hotspotList","outlineList","base","input","select","onChange","map","hotspot","item","backgroundColor","outline","border","React","Component","styles","theme","marginTop","spacing","unit","display","flex","width","borderRadius","height","marginLeft","marginRight","propTypes","PropTypes","object","isRequired","string","array","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core/styles';\n\nclass Palette extends React.Component {\n onChange = (name) => (event) => {\n const { value } = event.target;\n const { onHotspotColorChange, onOutlineColorChange } = this.props;\n\n if (name === 'hotspot') {\n onHotspotColorChange(value);\n } else {\n onOutlineColorChange(value);\n }\n };\n\n render() {\n const { classes, hotspotColor, outlineColor, hotspotList, outlineList } = this.props;\n\n return (\n <div className={classes.base}>\n <InputContainer label=\"Hot Spot\" className={classes.input}>\n <Select className={classes.select} onChange={this.onChange('hotspot')} value={hotspotColor}>\n {hotspotList.map((hotspot) => (\n <MenuItem key={hotspot} value={hotspot} className={classes.item} style={{ backgroundColor: hotspot }}>\n {hotspot}\n </MenuItem>\n ))}\n </Select>\n </InputContainer>\n\n <InputContainer label=\"Response Outline\" className={classes.input}>\n <Select className={classes.select} onChange={this.onChange('outline')} value={outlineColor}>\n {outlineList.map((outline) => (\n <MenuItem\n key={outline}\n value={outline}\n className={classes.item}\n style={{ border: `2px solid ${outline}` }}\n >\n {outline}\n </MenuItem>\n ))}\n </Select>\n </InputContainer>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n base: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n },\n input: {\n flex: 1,\n width: '90%',\n },\n item: {\n borderRadius: '2px',\n height: '22px',\n marginLeft: theme.spacing.unit * 2,\n marginRight: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n },\n});\n\nPalette.propTypes = {\n classes: PropTypes.object.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n hotspotList: PropTypes.array.isRequired,\n onHotspotColorChange: PropTypes.func.isRequired,\n onOutlineColorChange: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n outlineList: PropTypes.array.isRequired,\n};\n\nexport default withStyles(styles)(Palette);\n"],"file":"hotspot-palette.js"}
1
+ {"version":3,"file":"hotspot-palette.js","names":["_react","_interopRequireDefault","require","_propTypes","_configUi","_Select","_MenuItem","_styles","BaseContainer","styled","theme","marginTop","spacing","display","StyledInputContainer","InputContainer","flex","width","StyledMenuItem","MenuItem","borderRadius","height","marginLeft","marginRight","Palette","React","Component","constructor","args","_defineProperty2","default","name","event","value","target","onHotspotColorChange","onOutlineColorChange","props","render","hotspotColor","outlineColor","hotspotList","outlineList","createElement","label","onChange","variant","MenuProps","transitionDuration","enter","exit","map","hotspot","key","style","backgroundColor","outline","border","propTypes","PropTypes","string","isRequired","array","func","_default","exports"],"sources":["../src/hotspot-palette.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport { styled } from '@mui/material/styles';\n\nconst BaseContainer = styled('div')(({ theme }) => ({\n marginTop: theme.spacing(2),\n display: 'flex',\n}));\n\nconst StyledInputContainer = styled(InputContainer)({\n flex: 1,\n width: '90%',\n});\n\nconst StyledMenuItem = styled(MenuItem)(({ theme }) => ({\n borderRadius: '2px',\n height: '22px',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginTop: theme.spacing(2),\n}));\n\nclass Palette extends React.Component {\n onChange = (name) => (event) => {\n const { value } = event.target;\n const { onHotspotColorChange, onOutlineColorChange } = this.props;\n\n if (name === 'hotspot') {\n onHotspotColorChange(value);\n } else {\n onOutlineColorChange(value);\n }\n };\n\n render() {\n const { hotspotColor, outlineColor, hotspotList, outlineList } = this.props;\n\n return (\n <BaseContainer>\n <StyledInputContainer label=\"Hot Spot\">\n <Select \n onChange={this.onChange('hotspot')} \n value={hotspotColor}\n variant='standard'\n MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}\n >\n {hotspotList.map((hotspot) => (\n <StyledMenuItem key={hotspot} value={hotspot} style={{ backgroundColor: hotspot }}>\n {hotspot}\n </StyledMenuItem>\n ))}\n </Select>\n </StyledInputContainer>\n\n <StyledInputContainer label=\"Response Outline\">\n <Select \n onChange={this.onChange('outline')} \n value={outlineColor} \n variant='standard'\n MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}\n >\n {outlineList.map((outline) => (\n <StyledMenuItem\n key={outline}\n value={outline}\n style={{ border: `2px solid ${outline}` }}\n >\n {outline}\n </StyledMenuItem>\n ))}\n </Select>\n </StyledInputContainer>\n </BaseContainer>\n );\n }\n}\n\nPalette.propTypes = {\n hotspotColor: PropTypes.string.isRequired,\n hotspotList: PropTypes.array.isRequired,\n onHotspotColorChange: PropTypes.func.isRequired,\n onOutlineColorChange: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n outlineList: PropTypes.array.isRequired,\n};\n\nexport default Palette;\n"],"mappings":"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","ignoreList":[]}