@pie-element/hotspot 9.0.1 → 11.0.3-esm.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.
- package/configure/lib/icons.js +7 -3
- package/configure/lib/icons.js.map +1 -1
- package/configure/package.json +3 -3
- package/configure/src/icons.js +2 -4
- package/controller/package.json +2 -2
- package/esm/configure.js +26302 -0
- package/esm/configure.js.map +1 -0
- package/esm/controller.js +81 -135
- package/esm/controller.js.map +1 -1
- package/esm/element.js +1312 -0
- package/esm/element.js.map +1 -0
- package/lib/hotspot/icons.js +9 -4
- package/lib/hotspot/icons.js.map +1 -1
- package/package.json +16 -6
- package/src/hotspot/icons.js +5 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.js","sources":["../src/hotspot/image-konva-tooltip.jsx","../src/hotspot/icons.js","../src/hotspot/rectangle.jsx","../src/hotspot/polygon.jsx","../src/hotspot/circle.jsx","../src/hotspot/container.jsx","../src/hotspot/index.jsx","../src/session-updater.js","../src/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Group, Image, Text, Tag, Label } from 'react-konva';\n\nclass ImageComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n image: null,\n showTooltip: false,\n };\n }\n\n componentDidMount() {\n this.loadImage();\n }\n\n componentDidUpdate(oldProps) {\n if (oldProps.src !== this.props.src) {\n this.loadImage();\n }\n }\n\n componentWillUnmount() {\n this.image.removeEventListener('load', this.handleLoad);\n }\n\n loadImage() {\n const { src } = this.props;\n\n this.image = new window.Image();\n this.image.src = src;\n this.image.addEventListener('load', this.handleLoad);\n }\n\n handleLoad = () => {\n this.setState({\n image: this.image,\n });\n };\n\n render() {\n const { x, y, tooltip } = this.props;\n const { image, showTooltip } = this.state;\n\n return (\n <Group>\n <Image\n width={20}\n height={20}\n x={x}\n y={y}\n image={image}\n onMouseEnter={() => this.setState({ showTooltip: true })}\n onMouseLeave={() => this.setState({ showTooltip: false })}\n />\n\n {showTooltip && tooltip && (\n <Label x={x - 30} y={y + 25}>\n <Tag fill=\"white\" cornerRadius={5} opacity={0.9} />\n <Text text={tooltip} padding={5} />\n </Label>\n )}\n </Group>\n );\n }\n}\n\nImageComponent.propTypes = {\n src: PropTypes.string.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n tooltip: PropTypes.string.isRequired,\n};\n\nexport default ImageComponent;\n","/* eslint-disable */\nexport const faCorrect =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAD4wtiGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAABAAElEQVR4Ae2dCZwcZZn/n7e6e45kZjJJCIFwDSThTCAQrnAOIORAIICEI+RiEXCVU0QOkQRFRV1h19UVrwABdEH/QZEcyDHguuq60SiKq4AGRZArmStzdXe9/+etnurpnumjuuvoOn7Fh3R1Vb3X96np5/feRDhAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAAR8SkD4NF/IFgiAQGECgiTfeOwCjaa8I+hPPYIGd9WmtqbjqYa61sEBOTEe1ydLKXclKVqFEHtIIZuETnWSJP+vNRPJiXzeIEiLqySEkLpOQhdS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';\nexport const faWrong =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAD4wtiGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAABAAElEQVR4AeydB5wV1fXHf++9bcAuLFWQtlZAFLAkJtZdUeyKvcQC9o5RozGJLbYUjUSj/mMSFbuowd7jgiUaK11UVEQRkLa9v/f+5w476+6y++qUOzO/+Xx2570p9577PffNOffcMgA3EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABXQiEdBGEcpAACXRPoLwYxWiQvxyUICR7oDgcQx/1OR6SYxs347jx8cdjxtd4fOM9rdcl21WEQqhod1EF4m3f1fGK0MbvxvFYGJVyfplxfQuWlTW0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';\n\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Rect, Group } from 'react-konva';\nimport { withStyles } from '@material-ui/core/styles';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass RectComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n classes,\n height,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n isCorrect,\n isEvaluateMode,\n outlineColor,\n selected,\n width,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n showCorrectEnabled,\n } = this.props;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x + width / 2 - 10;\n const iconY = y + height / 2 - 10;\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const { hovered } = this.state;\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n <Rect\n classes={classes.base}\n width={width}\n height={height}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n x={x}\n y={y}\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nconst styles = () => ({\n base: {\n cursor: 'pointer',\n opacity: 0.5,\n position: 'relative',\n },\n});\n\nRectComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n height: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nRectComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default withStyles(styles)(RectComponent);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Line, Group, Rect } from 'react-konva';\nimport { withStyles } from '@material-ui/core/styles';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass PolygonComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n getPolygonCenter = (points) => {\n const x = points.map(({ x }) => x);\n const y = points.map(({ y }) => y);\n const minX = Math.min.apply(null, x);\n const maxX = Math.max.apply(null, x);\n const minY = Math.min.apply(null, y);\n const maxY = Math.max.apply(null, y);\n return [(minX + maxX) / 2, (minY + maxY) / 2];\n };\n\n parsePointsForKonva = (points) => {\n const parsedPoints = [];\n points.forEach(({ x, y }) => {\n parsedPoints.push(x);\n parsedPoints.push(y);\n });\n return parsedPoints;\n };\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n classes,\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n points,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const pointsParsed = this.parsePointsForKonva(points);\n const center = this.getPolygonCenter(points);\n const iconX = center[0];\n const iconY = center[1];\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n const xValues = pointsParsed.filter((_, index) => index % 2 === 0); // Even indices are x-coordinates\n const yValues = pointsParsed.filter((_, index) => index % 2 !== 0); // Odd indices are y-coordinates\n\n const minX = Math.min(...xValues);\n const maxX = Math.max(...xValues);\n const minY = Math.min(...yValues);\n const maxY = Math.max(...yValues);\n\n const rectX = minX;\n const rectY = minY;\n const rectWidth = maxX - minX;\n const rectHeight = maxY - minY;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={rectX}\n y={rectY}\n width={rectWidth}\n height={rectHeight}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n />\n )}\n <Line\n points={pointsParsed}\n closed={true}\n classes={classes.base}\n fill={selected && selectedHotspotColor? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nconst styles = () => ({\n base: {\n cursor: 'pointer',\n opacity: 0.5,\n position: 'relative',\n },\n});\n\nPolygonComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.bool.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n points: PropTypes.array.isRequired,\n selected: PropTypes.bool.isRequired,\n evaluateText: PropTypes.string,\n selectedHotspotColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nPolygonComponent.defaultProps = {\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default withStyles(styles)(PolygonComponent);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Circle, Group, Rect } from 'react-konva';\nimport { withStyles } from '@material-ui/core/styles';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass CircleComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n classes,\n radius,\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x - 10;\n const iconY = y - 10; // Adjust position for the icon\n\n let iconSrc;\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={x - radius}\n y={y - radius}\n width={radius * 2}\n height={radius * 2}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n />\n )}\n <Circle\n classes={classes.base}\n radius={radius}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n x={x}\n y={y}\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nconst styles = () => ({\n base: {\n cursor: 'pointer',\n opacity: 0.5,\n position: 'relative',\n },\n});\n\nCircleComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n radius: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nCircleComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default withStyles(styles)(CircleComponent);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Layer, Stage } from 'react-konva';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\n\nimport Rectangle from './rectangle';\nimport Polygon from './polygon';\nimport Circle from './circle';\n\nexport class Container extends React.Component {\n isSelected(shape) {\n const selectedShape = this.props.session.answers.filter((answer) => answer.id === shape.id)[0];\n return !!selectedShape;\n }\n\n correctness = (isCorrect, isChecked) => (isCorrect ? isChecked : !isChecked);\n\n getEvaluateText = (isCorrect, selected) => {\n if (selected && isCorrect) {\n return 'Correctly\\nselected';\n }\n\n if (selected && !isCorrect) {\n return 'Should not have\\nbeen selected';\n }\n\n if (!selected && isCorrect) {\n return 'Should have\\nbeen selected';\n }\n\n return null;\n };\n\n render() {\n const {\n classes,\n dimensions: { width: withProp, height: heightProp },\n disabled,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n imageUrl,\n isEvaluateMode,\n outlineColor,\n onSelectChoice,\n shapes: { rectangles = [], polygons = [], circles = [] },\n scale: SCALE,\n strokeWidth,\n showCorrect,\n } = this.props;\n\n const width = withProp * SCALE;\n const height = heightProp * SCALE;\n\n return (\n <div className={classes.base} style={{ padding: strokeWidth / 2 }}>\n {imageUrl ? (\n <div className={classes.imageContainer}>\n <img\n alt=\"hotspot-image\"\n className={classes.image}\n height=\"auto\"\n src={imageUrl}\n style={{ width, height, maxWidth: width, maxHeight: height }}\n />\n </div>\n ) : null}\n\n <Stage\n className={classes.stage}\n height={height + strokeWidth}\n width={width + strokeWidth}\n x={strokeWidth / 2}\n y={strokeWidth / 2}\n >\n <Layer>\n {rectangles.map((shape) => {\n const selected = this.isSelected(shape);\n const isCorrect = isEvaluateMode ? this.correctness(shape.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && shape.correct);\n\n return (\n <Rectangle\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n height={shape.height}\n hotspotColor={hotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n selectedHotspotColor={selectedHotspotColor}\n id={shape.id}\n key={shape.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n width={shape.width}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n showCorrectEnabled={showCorrect}\n />\n );\n })}\n {polygons.map((polygon) => {\n const selected = this.isSelected(polygon);\n const isCorrect = isEvaluateMode ? this.correctness(polygon.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(polygon.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && polygon.correct);\n\n return (\n <Polygon\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={!!isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n hotspotColor={hotspotColor}\n id={polygon.id}\n key={polygon.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n points={polygon.points}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n selectedHotspotColor={selectedHotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n showCorrectEnabled={showCorrect}\n />\n );\n })}\n {circles.map((shape) => {\n const selected = this.isSelected(shape);\n const isCorrect = isEvaluateMode ? this.correctness(shape.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && shape.correct);\n\n return (\n <Circle\n classes={classes}\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n radius={shape.radius}\n hotspotColor={hotspotColor}\n id={shape.id}\n key={shape.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n selectedHotspotColor={selectedHotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n showCorrectEnabled={showCorrect}\n />\n );\n })}\n </Layer>\n </Stage>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n base: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n position: 'relative',\n background: theme.palette.common.white,\n border: `${theme.spacing.unit}px solid ${theme.palette.common.white}`,\n width: 'fit-content',\n },\n image: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n },\n stage: {\n left: 0,\n top: 0,\n position: 'absolute',\n },\n resize: {\n borderBottom: `1px solid ${color.disabled()}`,\n borderRight: `1px solid ${color.disabled()}`,\n bottom: '-10px',\n cursor: 'se-resize',\n height: '10px',\n position: 'absolute',\n right: '-10px',\n width: '10px',\n },\n});\n\nContainer.propTypes = {\n classes: PropTypes.object.isRequired,\n dimensions: PropTypes.object.isRequired,\n disabled: PropTypes.bool.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n hoverOutlineColor: PropTypes.string,\n imageUrl: PropTypes.string.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selectedHotspotColor: PropTypes.string,\n session: PropTypes.object.isRequired,\n shapes: PropTypes.object.isRequired,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n showCorrect: PropTypes.bool,\n};\n\nContainer.defaultProps = {\n scale: 1,\n};\n\nexport default withStyles(styles)(Container);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, Collapsible, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Container from './container';\n\nclass HotspotComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showCorrect: false,\n observer: null,\n scale: 1,\n };\n }\n\n componentDidMount() {\n this.observer = new MutationObserver((mutations) => {\n mutations.forEach(() => {\n const target = document.getElementById('question-container')?.style?.cssText;\n const zoom = target?.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));\n const zoomParsed = zoom?.replace(/\\s/g, '');\n\n if (zoomParsed) {\n const newScale = parseFloat(zoomParsed) / 100;\n\n if (newScale !== this.state.scale) {\n this.setState({\n scale: parseFloat(zoomParsed) / 100,\n });\n }\n } else if (!zoomParsed && this.state.scale !== 1) {\n this.setState({\n scale: 1,\n });\n }\n });\n });\n\n const target = document.getElementById('question-container');\n\n if (target) {\n this.observer.observe(target, { attributes: true, attributeFilter: ['style'] });\n }\n }\n\n componentWillUnmount() {\n this.observer?.disconnect();\n }\n\n onToggle = () => {\n const { showCorrect } = this.state;\n this.setState({ showCorrect: !showCorrect });\n };\n\n render() {\n const {\n session,\n model: {\n disabled,\n extraCSSRules,\n imageUrl,\n prompt,\n mode,\n multipleCorrect,\n shapes,\n outlineColor,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n dimensions,\n rationale,\n teacherInstructions,\n strokeWidth,\n responseCorrect,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n customAudioButton,\n },\n onSelectChoice,\n classes,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n return (\n <UiLayout\n extraCSSRules={extraCSSRules}\n id={'main-container'}\n className={classes.main}\n fontSizeFactor={fontSizeFactor}\n >\n {showTeacherInstructions && (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <PreviewPrompt className=\"prompt\" prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && (\n <PreviewPrompt\n className=\"prompt\"\n prompt={prompt}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n )}\n\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n {imageUrl ? (\n <Container\n isEvaluateMode={isEvaluateMode}\n session={session}\n dimensions={dimensions}\n imageUrl={imageUrl}\n hotspotColor={hotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n selectedHotspotColor={selectedHotspotColor}\n multipleCorrect={multipleCorrect}\n outlineColor={outlineColor}\n onSelectChoice={onSelectChoice}\n shapes={shapes}\n disabled={disabled}\n strokeWidth={strokeWidth}\n scale={this.state.scale}\n showCorrect={showCorrect}\n />\n ) : null}\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt className=\"prompt\" prompt={rationale} />\n </Collapsible>\n )}\n </UiLayout>\n );\n }\n}\n\nHotspotComponent.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n session: PropTypes.object.isRequired,\n};\n\nHotspotComponent.defaultProps = {\n classes: {},\n};\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n position: 'relative',\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n fontSize: 'inherit',\n },\n});\n\nexport default withStyles(styles)(HotspotComponent);\n","export function updateSessionValue(session, model, data) {\n const { id, selected } = data;\n const { multipleCorrect } = model || {};\n session.answers = session.answers || [];\n\n if (!selected) {\n session.answers = session.answers.filter((answer) => answer.id !== id);\n } else {\n const item = { id };\n if (multipleCorrect) {\n session.answers.push(item);\n } else {\n session.answers = [item];\n }\n\n //update session metadata\n session.selector = data.selector;\n }\n}\n\nexport function updateSessionMetadata(session, metadata) {\n session.audioStartTime = session.audioStartTime || metadata.audioStartTime; //timestamp when auto-played audio started playing\n session.audioEndTime = session.audioEndTime || metadata.audioEndTime; //timestamp when auto-played audio completed playing\n\n if (!session.waitTime && session.audioStartTime && session.audioEndTime) {\n // waitTime is elapsed time the user waited for auto-played audio to finish\n session.waitTime = session.audioEndTime - session.audioStartTime;\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { EnableAudioAutoplayImage } from '@pie-lib/render-ui';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\n\nimport HotspotComponent from './hotspot';\nimport { updateSessionValue, updateSessionMetadata } from './session-updater';\n\nexport default class Hotspot extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n this._audioInitialized = false;\n this.audioComplete = false;\n }\n\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this._audioInitialized = false;\n this._render();\n }\n\n isComplete() {\n if (!this._session || !this._session.answers) {\n return false;\n }\n\n const { autoplayAudioEnabled, completeAudioEnabled } = this._model || {};\n const elementContext = this;\n\n // check audio completion if audio settings are enabled and audio actually exists\n if (autoplayAudioEnabled && completeAudioEnabled && !this.audioComplete) {\n if (elementContext) {\n const audio = elementContext.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n\n // only require audio completion if audio exists and is inside the prompt\n if (audio && isInsidePrompt) {\n return false;\n }\n }\n }\n\n if (!Array.isArray(this._session.answers)) {\n return false;\n }\n\n return this._session.answers.length > 0;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n onSelectChoice(data) {\n updateSessionValue(this._session, this._model, data);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this._render();\n }\n\n _createAudioInfoToast() {\n const info = document.createElement('div');\n info.id = 'play-audio-info';\n\n Object.assign(info.style, {\n position: 'absolute',\n top: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n zIndex: '1000',\n cursor: 'pointer',\n });\n\n const img = document.createElement('img');\n img.src = EnableAudioAutoplayImage;\n img.alt = 'Click anywhere to enable audio autoplay';\n img.width = 500;\n img.height = 300;\n\n info.appendChild(img);\n return info;\n }\n\n connectedCallback() {\n this._render();\n\n // Observation: audio in Chrome will have the autoplay attribute,\n // while other browsers will not have the autoplay attribute and will need a user interaction to play the audio\n // This workaround fixes the issue of audio being cached and played on any user interaction in Safari and Firefox\n const observer = new MutationObserver((mutationsList, observer) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList') {\n if (this._audioInitialized) return;\n const audio = this.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n\n if (!this._model) return;\n if (!this._model.autoplayAudioEnabled) return;\n if (audio && !isInsidePrompt) return;\n if (!audio) return;\n\n const info = this._createAudioInfoToast();\n const container = this.querySelector('#main-container');\n const enableAudio = () => {\n if (this.querySelector('#play-audio-info')) {\n audio.play();\n container.removeChild(info);\n }\n\n document.removeEventListener('click', enableAudio);\n };\n\n // if the audio is paused, it means the user has not interacted with the page yet and the audio will not play\n // FIX FOR SAFARI: play with a slight delay to check if autoplay was blocked\n setTimeout(() => {\n if (audio.paused && !this.querySelector('#play-audio-info')) {\n // add info message as a toast to enable audio playback\n container.appendChild(info);\n document.addEventListener('click', enableAudio);\n } else {\n document.removeEventListener('click', enableAudio);\n }\n }, 500);\n\n // we need to listen for the playing event to remove the toast in case the audio plays because of re-rendering\n const handlePlaying = () => {\n //timestamp when auto-played audio started playing\n updateSessionMetadata(this._session, { audioStartTime: new Date().getTime() });\n\n const info = this.querySelector('#play-audio-info');\n if (info) {\n container.removeChild(info);\n }\n\n audio.removeEventListener('playing', handlePlaying);\n };\n\n audio.addEventListener('playing', handlePlaying);\n\n // we need to listen for the ended event to update the isComplete state\n const handleEnded = () => {\n //timestamp when auto-played audio completed playing\n updateSessionMetadata(this._session, { audioEndTime: new Date().getTime() });\n\n let { audioStartTime, audioEndTime, waitTime } = this._session;\n if (!waitTime && audioStartTime && audioEndTime) {\n // waitTime is elapsed time the user waited for auto-played audio to finish\n this._session.waitTime = audioEndTime - audioStartTime;\n }\n\n this.audioComplete = true;\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n audio.removeEventListener('ended', handleEnded);\n };\n\n audio.addEventListener('ended', handleEnded);\n\n // store references to remove later\n this._audio = audio;\n this._handlePlaying = handlePlaying;\n this._handleEnded = handleEnded;\n this._enableAudio = enableAudio;\n // set to true to prevent multiple initializations\n this._audioInitialized = true;\n\n observer.disconnect();\n }\n });\n });\n\n observer.observe(this, { childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._enableAudio);\n\n if (this._audio) {\n this._audio.removeEventListener('playing', this._handlePlaying);\n this._audio.removeEventListener('ended', this._handleEnded);\n this._audio = null;\n }\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(HotspotComponent, {\n model: this._model,\n session: this._session,\n onSelectChoice: this.onSelectChoice.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"names":["ImageComponent","React","Component","constructor","props","handleLoad","setState","image","state","showTooltip","componentDidMount","loadImage","componentDidUpdate","oldProps","src","componentWillUnmount","removeEventListener","window","Image","addEventListener","render","x","y","tooltip","propTypes","PropTypes","string","isRequired","number","faCorrect","faWrong","RectComponent","handleClick","e","onClick","id","selected","disabled","cancelBubble","selector","handleMouseEnter","document","body","style","cursor","hovered","handleMouseLeave","getEvaluateOutlineColor","isCorrect","markAsCorrect","outlineColor","getOutlineWidth","showCorrectEnabled","strokeWidth","classes","height","hotspotColor","hoverOutlineColor","selectedHotspotColor","isEvaluateMode","width","evaluateText","scale","outlineColorParsed","outlineWidth","iconX","iconY","iconSrc","useHoveredStyle","base","styles","opacity","position","object","oneOfType","bool","func","defaultProps","withStyles","PolygonComponent","getPolygonCenter","points","map","minX","Math","min","apply","maxX","max","minY","maxY","parsePointsForKonva","parsedPoints","forEach","push","pointsParsed","center","xValues","filter","_","index","yValues","rectX","rectY","rectWidth","rectHeight","array","CircleComponent","radius","Circle","Container","correctness","isChecked","getEvaluateText","isSelected","shape","selectedShape","session","answers","answer","dimensions","withProp","heightProp","imageUrl","onSelectChoice","shapes","rectangles","polygons","circles","SCALE","showCorrect","padding","imageContainer","maxWidth","maxHeight","stage","correct","undefined","polygon","theme","marginTop","spacing","unit","marginBottom","background","palette","common","white","border","alignItems","display","justifyContent","left","top","resize","borderBottom","color","borderRight","bottom","right","HotspotComponent","onToggle","observer","MutationObserver","mutations","target","getElementById","cssText","zoom","substring","indexOf","lastIndexOf","zoomParsed","replace","newScale","parseFloat","observe","attributes","attributeFilter","disconnect","model","extraCSSRules","prompt","mode","multipleCorrect","rationale","teacherInstructions","responseCorrect","language","fontSizeFactor","autoplayAudioEnabled","customAudioButton","showCorrectAnswerToggle","showRationale","hasText","hasMedia","showTeacherInstructions","main","hidden","visible","collapsible","bind","text","backgroundColor","fontSize","updateSessionValue","data","item","updateSessionMetadata","metadata","audioStartTime","audioEndTime","waitTime","Hotspot","HTMLElement","_model","_session","_audioInitialized","audioComplete","m","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_render","completeAudioEnabled","elementContext","audio","querySelector","isInsidePrompt","closest","Array","isArray","length","s","SessionChangedEvent","_createAudioInfoToast","info","createElement","Object","assign","zIndex","img","EnableAudioAutoplayImage","alt","appendChild","connectedCallback","mutationsList","mutation","type","container","enableAudio","play","removeChild","setTimeout","paused","handlePlaying","Date","getTime","handleEnded","_audio","_handlePlaying","_handleEnded","_enableAudio","childList","subtree","disconnectedCallback","el","ReactDOM","renderMath"],"mappings":"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"}
|