{"version":3,"file":"js/3862-0d36ae7a40b8af30105b.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/survey/editor/components/lib/hm.js","webpack://AYTM/./app/_stock/webpack/app/survey/editor/lib/uid.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm/pin.module.scss?37c2","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/dot.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/functions.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/pin-item.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm/panel.module.scss?15df","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/panel-item.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm/oe.module.scss?a7aa","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/open-ended.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm/instruction.module.scss?95d1","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/instruction.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/common/magnifier.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/magnifier.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm/wizard.module.scss?3369","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/pincher-wizard.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/dot-clone.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm/no-pins-cursor.module.scss?dbee","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/no-pins-cursor.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/hm.module.scss?b56d","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm/clusters.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/hm.jsx","webpack://AYTM/./node_modules/uuid/dist/esm-browser/rng.js","webpack://AYTM/./node_modules/uuid/dist/esm-browser/regex.js","webpack://AYTM/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://AYTM/./node_modules/uuid/dist/esm-browser/validate.js","webpack://AYTM/./node_modules/uuid/dist/esm-browser/v4.js"],"sourcesContent":["export function flipCoordinatesVertically(points, h) {\n return points.map(point => {\n const flippedPoint = []\n flippedPoint[0] = point[0]\n flippedPoint[1] = h - point[1] - 1\n return flippedPoint\n })\n}\n\nexport function calcPolygonArea(polygon) {\n let area = 0\n for (let i = 0; i < polygon.length; i++) {\n const [x1, y1] = polygon[i]\n const [x2, y2] = polygon[(i + 1) % polygon.length]\n area += x1 * y2 - x2 * y1\n }\n\n return Math.abs(area) / 2\n}\n\nfunction escapeRegExp(string) {\n return string.replace(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&')\n}\n\nexport function getClusterTitle(cluster, existingClusters) {\n const BASE_TITLE_REGEXP = new RegExp(/^(.*) \\(\\d+\\)$/)\n const clusterTitle = cluster.get('title')\n const title = '' == clusterTitle.trim() ? 'Cluster' : clusterTitle\n // try find exact existing title, return if not found\n\n const existingCluster = existingClusters.find(cl => cl.get('uid') != cluster.get('uid') && cl.get('title') == title)\n const existingTitle = existingCluster ? existingCluster.get('title') : null\n if (null == existingTitle || !existingTitle.length) return title\n\n // find existing clusters with same title base\n const baseTitleData = BASE_TITLE_REGEXP.exec(title)\n const baseTitle = null === baseTitleData ? title : baseTitleData[1]\n const queryRegExp = new RegExp(`^(?:${escapeRegExp(baseTitle)})(?: \\\\((\\\\d+)\\\\))?$`)\n const titledClusters = existingClusters.filter(cl => queryRegExp.test(cl.get('title')))\n\n if (0 == titledClusters.size) return title\n\n const indexes = []\n titledClusters.forEach(cluster => {\n const titleData = queryRegExp.exec(cluster.get('title'))\n indexes.push(undefined === titleData[1] ? 0 : parseInt(titleData[1], 10))\n })\n indexes.sort((a, b) => a - b)\n const resultIndex = indexes.findIndex((elem, i) => elem > i)\n return `${baseTitle} (${resultIndex > 0 ? resultIndex : indexes[indexes.length - 1] + 1})`\n}\n\nexport function hasClustersOfType(type, clusters) {\n return clusters && clusters.some(c => type == c.get('clusterType') || type == c.getIn(['attributes', 'blockType']))\n}\n","import { v4 as uuidv4 } from 'uuid'\n\nexport function generateUID() {\n const uid = uuidv4() // ########-####-####-####-############\n return `${uid.slice(0, 8)}${uid.slice(9, 13)}${uid.slice(14, 18)}${uid.slice(19, 23)}${uid.slice(24, 36)}`\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pin\":\"pin-module__pin___1328h swidget-Question-hm-pin\",\"clone\":\"pin-module__clone___AQsw4 swidget-Question-hm-pin\",\"pin-active\":\"pin-module__pin-active___2epU_\",\"label\":\"pin-module__label___3CXKR\",\"pin-disabled\":\"pin-module__pin-disabled___3GSay swidget-question-hm-pin-disabled\",\"img\":\"pin-module__img___3J4r6\",\"pin-readonly\":\"pin-module__pin-readonly___1opdA\",\"pin-noactive\":\"pin-module__pin-noactive___1JAL9\",\"dot\":\"pin-module__dot___2iSVN\"};","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/pin.module.scss'\n\nexport default class Dot extends ManagedRenderComponent {\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n oe: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n size: PropTypes.number.isRequired\n }\n\n render() {\n const { color, oe, isActive, size } = this.props\n\n return (\n <i className={style.dot}>\n {'off' != oe && isActive ? (\n <svg width={size} height={size}>\n <defs>\n <mask id=\"hole\">\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\n <circle r=\"2.5\" cx={size / 2} cy={size / 2} />\n </mask>\n </defs>\n\n <circle id=\"dot-with-oe\" r=\"10.5\" cx={size / 2} cy={size / 2} mask=\"url(#hole)\" fill={color} />\n <circle r=\"3\" cx={size / 2} cy={size / 2} fill=\"none\" />\n </svg>\n ) : (\n <svg width={size} height={size}>\n <circle id=\"dot\" r=\"10.5\" cx={size / 2} cy={size / 2} fill={color} />\n </svg>\n )}\n </i>\n )\n }\n}\n","export function pointInsidePolygon(coords, polygon) {\n const n = polygon.length\n const p = polygon[n - 1]\n const x = coords.x\n const y = coords.y\n let x0 = p[0]\n let y0 = p[1]\n let inside = false\n\n for (let i = 0; i < n; i++) {\n const p = polygon[i]\n const x1 = p[0]\n const y1 = p[1]\n if (y1 > y != y0 > y && x < ((x0 - x1) * (y - y1)) / (y0 - y1) + x1) {\n inside = !inside\n }\n x0 = x1\n y0 = y1\n }\n return inside\n}\n\nexport function hexToRGB(color) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([\\da-f])([\\da-f])([\\da-f])$/i\n const hex = color.replace(shorthandRegex, (_m, r, g, b) => r + r + g + g + b + b)\n\n const result = /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/i.exec(hex)\n return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : null\n}\n\nexport function getTextColor(color, colorDark, colorLight) {\n const [R, G, B] = hexToRGB(color)\n return R * 0.299 + G * 0.587 + B * 0.114 > 150 ? colorDark : colorLight\n}\n\nexport function calcVelocity(prevMove, newMove) {\n const xDist = newMove.x - prevMove.x\n const yDist = newMove.y - prevMove.y\n const interval = newMove.time - prevMove.time\n\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval\n}\n\nexport function extractPinTypeId(pinId) {\n return pinId.split('-')[0]\n}\n\nexport function isPointInsideEl(coords, el) {\n return Boolean(coords.x >= 0 && coords.y >= 0 && coords.x < el.offsetWidth && coords.y < el.offsetHeight)\n}\n\nexport function DOMElementRect(element, sessionDocument) {\n if (null == element) return {}\n const rect = element.getBoundingClientRect()\n const fixedRect = {}\n const sessionDocumentEl = sessionDocument.documentElement || sessionDocument.body.parentNode || sessionDocument.body\n const scrollXOffset = sessionDocumentEl.scrollLeft\n const scrollYOffset = sessionDocumentEl.scrollTop\n\n fixedRect.top = (rect.top || rect.y) + scrollYOffset\n fixedRect.left = (rect.left || rect.x) + scrollXOffset\n fixedRect.bottom = rect.bottom + scrollYOffset\n fixedRect.right = rect.right + scrollXOffset\n fixedRect.width = rect.width || rect.right - rect.left\n fixedRect.height = rect.height || rect.bottom - rect.top\n fixedRect.x = (rect.x || rect.left) + scrollXOffset\n fixedRect.y = (rect.y || rect.top) + scrollYOffset\n\n return fixedRect\n}\n","// libs\nimport autobind from 'autobind-decorator'\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { fromEvent as ObservableFromEvent, merge as ObservableMerge } from 'rxjs'\nimport { map as rxMap, takeUntil as rxTakeUntil, take as rxTake, filter as rxFilter } from 'rxjs/operators'\n\n// components\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport Dot from '@aytm/app/swidget/questions/components/hm/dot'\n\n// functions\nimport { calcVelocity, isPointInsideEl, DOMElementRect } from '@aytm/app/swidget/questions/components/hm/functions'\nimport { stopEvent } from '@aytm/lib/common/func'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/pin.module.scss'\n\n// constants\nconst NA_PIN_H = 22\nconst NA_PIN_W = 22\nconst JITTER_SPACE = 3\n\nexport default class PinItem extends ManagedRenderComponent {\n static propTypes = {\n pin: PropTypes.object.isRequired,\n scale: PropTypes.number.isRequired,\n isActive: PropTypes.bool.isRequired,\n color: PropTypes.string.isRequired,\n oe: PropTypes.string.isRequired,\n onPinClick: PropTypes.func.isRequired,\n onPinTypeSelect: PropTypes.func.isRequired,\n onPinMoved: PropTypes.func.isRequired,\n onPinMove: PropTypes.func.isRequired,\n showMagnify: PropTypes.func.isRequired,\n hideMagnify: PropTypes.func.isRequired,\n stopMagnifyTimer: PropTypes.func.isRequired,\n runRemoveClusterAnimation: PropTypes.func,\n setPinDragging: PropTypes.func,\n allowEvents: PropTypes.bool.isRequired,\n sessionDocument: PropTypes.object.isRequired\n }\n\n constructor(props, context) {\n super(props, context)\n this.state = {\n top: props.pin.get('y'),\n left: props.pin.get('x'),\n time: Date.now(),\n magnifyOffsetX: 0,\n magnifyOffsetY: 0\n }\n this.preventClickEvent = false\n }\n\n componentDidUpdate(prevProps) {\n const { left, top } = this.state\n const newPin = this.props.pin\n const prevPin = prevProps.pin\n\n if (\n (newPin.get('x') != prevPin.get('x') || newPin.get('y') != prevPin.get('y')) &&\n (newPin.get('x') != left || newPin.get('y') != top)\n ) {\n this.setState({\n top: newPin.get('y'),\n left: newPin.get('x')\n })\n }\n }\n\n runVelocityTimer(currentMove) {\n this.velocityTimeout = setTimeout(() => {\n this.velocityTimer = setInterval(() => {\n const { left, top, time, magnifyOffsetX, magnifyOffsetY, lastTimeDif } = this.state\n const velocity = calcVelocity(\n { x: currentMove.left, y: currentMove.top, time: currentMove.time },\n { x: left, y: top, time }\n )\n\n const newTimeDif = time - currentMove.time\n if (lastTimeDif == newTimeDif) {\n this.props.showMagnify(0, '', magnifyOffsetX, magnifyOffsetY)\n }\n this.setState({ lastTimeDif: newTimeDif })\n\n if (velocity > 0.001 && velocity < 0.03) {\n this.props.showMagnify(0, this.props.pin.get('id'), magnifyOffsetX, magnifyOffsetY)\n }\n }, 300)\n }, 200)\n }\n\n @autobind\n getPinCoordinatesOffset() {\n const { scale } = this.props\n const x = ((NA_PIN_W / 2) * scale - (NA_PIN_W / 2) * (scale - 1)) / scale\n const y = ((NA_PIN_W / 2) * scale - (NA_PIN_W / 2) * (scale - 1)) / scale\n\n return { x, y }\n }\n\n @autobind\n onClick() {\n const { allowEvents, onPinClick } = this.props\n if (allowEvents && 'function' == typeof onPinClick && !this.preventClickEvent) {\n onPinClick()\n }\n this.preventClickEvent = false\n }\n\n @autobind\n onDragMove({ x, y, _dragging, touchmove, pageX, pageY }) {\n const { onPinMove, setPinDragging, sessionDocument } = this.props\n const currentDate = Date.now()\n const currentMove = {\n left: x,\n top: y,\n time: currentDate\n }\n\n this.setState({ ...currentMove })\n\n setPinDragging(true)\n\n if (touchmove) {\n onPinMove(x, y, pageX, pageY)\n }\n\n const pinsArea = sessionDocument.querySelector('#pins-area')\n const isCursorInsidePinsArea = isPointInsideEl({ x, y }, pinsArea)\n\n const pinsAreaWrapper = sessionDocument.querySelector('#pins-area-wrapper')\n const isCursorInsidePinsAreaWrapper = isPointInsideEl(\n { x: x - pinsAreaWrapper.scrollLeft, y: y - pinsAreaWrapper.scrollTop },\n pinsAreaWrapper\n )\n\n if (isCursorInsidePinsArea && isCursorInsidePinsAreaWrapper) {\n if (!this.velocityTimeout) {\n this.props.stopMagnifyTimer()\n this.runVelocityTimer({ ...currentMove })\n }\n } else {\n this.preventClickEvent = true\n this.props.hideMagnify()\n\n if (this.velocityTimer) {\n clearInterval(this.velocityTimer)\n this.velocityTimer = null\n }\n if (this.velocityTimeout) {\n clearTimeout(this.velocityTimeout)\n this.velocityTimeout = null\n }\n }\n }\n\n @autobind\n onDragEnd({ x, y }) {\n const { onPinMoved, setPinDragging, hideMagnify } = this.props\n hideMagnify()\n if (this.velocityTimer) {\n clearInterval(this.velocityTimer)\n this.velocityTimer = null\n }\n if (this.velocityTimeout) {\n clearTimeout(this.velocityTimeout)\n this.velocityTimeout = null\n }\n onPinMoved(x, y)\n if ('function' == typeof setPinDragging) {\n setPinDragging(false)\n }\n }\n\n @autobind\n subscribeToMove(dragUpdate) {\n if (!dragUpdate.dragging) {\n if (!dragUpdate.click) {\n this.onDragEnd(dragUpdate)\n } else if (dragUpdate.click) {\n this.onClick()\n }\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n } else {\n this.onDragMove(dragUpdate)\n }\n }\n\n @autobind\n handleMouseDown(event) {\n event.stopPropagation()\n const { allowEvents, onPinTypeSelect, pin, sessionDocument, showMagnify } = this.props\n\n if (allowEvents && 0 === event.button) {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n\n onPinTypeSelect(pin.get('id').split('-')[0], 'pin')\n const pinsArea = sessionDocument.querySelector('#pins-area')\n const pinsAreaPos = DOMElementRect(pinsArea, sessionDocument)\n const target = event.currentTarget\n const startX = event.clientX\n const startY = event.clientY\n const magnifyOffsetX = event.pageX - pinsAreaPos.left - target.offsetLeft - parseInt(NA_PIN_H / 2, 10)\n const magnifyOffsetY = event.pageY - pinsAreaPos.top - target.offsetTop - parseInt(NA_PIN_H / 2, 10)\n this.setState({ magnifyOffsetX, magnifyOffsetY })\n\n const offsetX = target.offsetLeft - startX + parseInt(NA_PIN_H / 2, 10)\n const offsetY = target.offsetTop - startY + parseInt(NA_PIN_H / 2, 10)\n\n showMagnify(300, pin.get('id'), magnifyOffsetX, magnifyOffsetY)\n this.subscription = this.movePin(offsetX, offsetY, startX, startY).subscribe(this.subscribeToMove)\n }\n }\n\n @autobind\n movePin(offsetX, offsetY, startX, startY) {\n const { sessionDocument, runRemoveClusterAnimation, pin } = this.props\n const mousemove = ObservableFromEvent(sessionDocument, 'mousemove')\n const mouseup = ObservableFromEvent(sessionDocument, 'mouseup')\n\n let dragHappend = false\n\n return ObservableMerge(\n mousemove.pipe(\n // filter moves until delta is more than JITTER_SPACE\n rxFilter(event => {\n if (dragHappend) {\n return true\n }\n const isMoved =\n Math.abs(startX - event.clientX) > JITTER_SPACE || Math.abs(startY - event.clientY) > JITTER_SPACE\n if (!dragHappend && isMoved) {\n dragHappend = true\n\n if ('function' == typeof runRemoveClusterAnimation) {\n runRemoveClusterAnimation(pin.get('id'))\n }\n }\n return isMoved\n }),\n rxMap(event => {\n return {\n x: event.clientX + offsetX,\n y: event.clientY + offsetY,\n dragging: true\n }\n }),\n // stop listening to moves when mouseup happens\n rxTakeUntil(mouseup)\n ),\n mouseup.pipe(\n // only take first mouseup event\n rxTake(1),\n // return final event\n rxMap(event => {\n this.onClick()\n return dragHappend\n ? {\n x: event.clientX + offsetX,\n y: event.clientY + offsetY,\n dragging: false\n }\n : {\n x: startX + offsetX,\n y: startY + offsetY,\n dragging: false,\n click: true\n }\n })\n )\n )\n }\n\n @autobind\n handleTouchStart(event) {\n const { allowEvents, pin, showMagnify, onPinTypeSelect, scale, onPinMove } = this.props\n\n if (allowEvents) {\n if (event.touches.length !== 1) {\n return\n }\n\n event.stopPropagation()\n\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n\n showMagnify(300, pin.get('id'))\n onPinTypeSelect(pin.get('id').split('-')[0], 'pin')\n\n const target = event.currentTarget\n const startX = event.touches[0].clientX\n const startY = event.touches[0].clientY\n\n const offsetX = target.offsetLeft * scale - startX + parseInt(NA_PIN_H / 2, 10)\n const offsetY = target.offsetTop * scale - startY + parseInt(NA_PIN_H / 2, 10)\n\n onPinMove(\n target.offsetLeft + parseInt(NA_PIN_H / 2, 10),\n target.offsetTop + parseInt(NA_PIN_H / 2, 10),\n event.changedTouches[0].pageX,\n event.changedTouches[0].pageY\n )\n this.subscription = this.touchmovePin(offsetX, offsetY, startX, startY).subscribe(this.subscribeToMove)\n }\n }\n\n @autobind\n handleTouchEnd() {\n this.props.hideMagnify()\n }\n\n @autobind\n touchmovePin(offsetX, offsetY, startX, startY) {\n const { scale, sessionDocument } = this.props\n const touchmove = ObservableFromEvent(sessionDocument, 'touchmove', { passive: false })\n const touchend = ObservableFromEvent(sessionDocument, 'touchend')\n let dragHappend = false\n\n return ObservableMerge(\n touchmove.pipe(\n // filter moves until delta is more than JITTER_SPACE\n rxFilter(event => {\n if (1 !== event.touches.length) {\n return false\n }\n if (dragHappend) {\n return true\n }\n const isMoved =\n Math.abs(startX - event.touches[0].clientX) > JITTER_SPACE ||\n Math.abs(startY - event.touches[0].clientY) > JITTER_SPACE\n if (!dragHappend && isMoved) {\n dragHappend = true\n }\n return isMoved\n }),\n rxMap(event => {\n stopEvent(event)\n\n return {\n x: (event.touches[0].clientX + offsetX) / scale,\n y: (event.touches[0].clientY + offsetY) / scale,\n dragging: true,\n touchmove: true,\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }\n }),\n // stop listening to moves when mouseup happens\n rxTakeUntil(touchend)\n ),\n touchend.pipe(\n // only take first mouseup event\n rxTake(1),\n rxFilter(event => 1 === event.changedTouches.length),\n // return final event\n rxMap(event => {\n stopEvent(event)\n this.onClick()\n return dragHappend\n ? {\n x: (event.changedTouches[0].clientX + offsetX) / scale,\n y: (event.changedTouches[0].clientY + offsetY) / scale,\n dragging: false\n }\n : {\n x: startX + offsetX,\n y: startY + offsetY,\n dragging: false,\n click: true\n }\n })\n )\n )\n }\n\n render() {\n const { pin, isActive, scale, color, oe, allowEvents } = this.props\n const { top, left } = this.state\n const pinsDifCoord = this.getPinCoordinatesOffset()\n\n return (\n <div\n className={`${style.pin} ${isActive ? style['pin-active'] : ''} ${!allowEvents ? style['pin-noactive'] : ''}`}\n id={`pin-${pin.get('id')}`}\n style={{\n top: top - pinsDifCoord.y,\n left: left - pinsDifCoord.x,\n transform: 'scale(' + 1 / scale + ') translateZ(0)'\n }}\n onMouseDown={this.handleMouseDown}\n onTouchStart={this.handleTouchStart}\n onTouchEnd={this.handleTouchEnd}\n onContextMenu={event_ => event_.preventDefault()}\n data-testid=\"SW-HM-Pin\"\n >\n <Dot color={color} oe={oe} isActive={isActive} size={NA_PIN_H} />\n </div>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"label\":\"panel-module__label___G46nA swidget-global-span\",\"panel\":\"panel-module__panel___2GKYG swidget-question-hm-pins-panel\",\"mobile\":\"panel-module__mobile___2KTEX\",\"item\":\"panel-module__item___2dSFN\",\"compact\":\"panel-module__compact___1y1Yp\",\"portal\":\"panel-module__portal___3cON3\",\"icon\":\"panel-module__icon___3L9ph\",\"item-active\":\"panel-module__item-active___2RdvU\",\"item-hidden\":\"panel-module__item-hidden___1TnAR\",\"logicRef\":\"panel-module__logicRef___3Fweu\",\"pin\":\"panel-module__pin___31vnx pin-module__pin___1328h swidget-Question-hm-pin\",\"counter\":\"panel-module__counter___1gZB-\"};","// libs\nimport autobind from 'autobind-decorator'\nimport React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { fromEvent as ObservableFromEvent, merge as ObservableMerge } from 'rxjs'\nimport { map as rxMap, takeUntil as rxTakeUntil, take as rxTake, filter as rxFilter } from 'rxjs/operators'\n\n// components\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport Dot from '@aytm/app/swidget/questions/components/hm/dot'\n\n// functions\nimport { calcVelocity, isPointInsideEl, DOMElementRect } from '@aytm/app/swidget/questions/components/hm/functions'\nimport { stopEvent } from '@aytm/lib/common/func'\n\n// styles\nimport pinStyle from '@aytm/app/swidget/questions/styles/hm/pin.module.scss'\nimport panelStyle from '@aytm/app/swidget/questions/styles/hm/panel.module.scss'\n\nconst JITTER_SPACE = 3\n\nexport default class PanelItem extends ManagedRenderComponent {\n static propTypes = {\n pin: PropTypes.object.isRequired,\n scale: PropTypes.number.isRequired,\n isActive: PropTypes.bool.isRequired,\n counter: PropTypes.number.isRequired,\n textColor: PropTypes.string.isRequired,\n onPinTypeDrop: PropTypes.func.isRequired,\n onPinTypeSelect: PropTypes.func.isRequired,\n onPinMove: PropTypes.func.isRequired,\n showMagnify: PropTypes.func.isRequired,\n hideMagnify: PropTypes.func.isRequired,\n stopMagnifyTimer: PropTypes.func.isRequired,\n readOnly: PropTypes.bool.isRequired,\n allowEvents: PropTypes.bool.isRequired,\n setPinDragging: PropTypes.func.isRequired,\n sessionDocument: PropTypes.object.isRequired\n }\n\n constructor(props, context) {\n super(props, context)\n this.state = {\n top: props.pin.get('y'),\n left: props.pin.get('x'),\n dragging: false,\n lastTimeDif: 0\n }\n }\n\n runVelocityTimer(currentMove) {\n const { showMagnify } = this.props\n this.velocityTimeout = setTimeout(() => {\n this.velocityTimer = setInterval(() => {\n const { left, top, time, lastTimeDif } = this.state\n const velocity = calcVelocity(\n { x: currentMove.left, y: currentMove.top, time: currentMove.time },\n { x: left, y: top, time }\n )\n\n const newTimeDif = time - currentMove.time\n if (lastTimeDif == newTimeDif) {\n showMagnify(0)\n }\n this.setState({ lastTimeDif: newTimeDif })\n\n if (velocity > 0.001 && velocity < 0.03) {\n showMagnify(0)\n }\n }, 300)\n this.pinMovedToImage = this.pinMovedToImage + 1\n }, 200)\n }\n\n @autobind\n onDragMove({ x, y, x1, y1, _dragging, touchmove }) {\n const { setPinDragging, sessionDocument } = this.props\n const currentDate = Date.now()\n const currentMove = {\n left: x,\n top: y,\n dragging: true,\n time: currentDate\n }\n\n this.setState({ ...currentMove })\n\n const pinsArea = sessionDocument.querySelector('#pins-area')\n const pinsAreaPos = DOMElementRect(pinsArea, sessionDocument)\n\n const pinsAreaWrapper = sessionDocument.querySelector('#pins-area-wrapper')\n const pinsAreaWrapperPos = DOMElementRect(pinsAreaWrapper, sessionDocument)\n\n const isCursorInsidePinsArea = isPointInsideEl({ x: x1 - pinsAreaPos.left, y: y1 - pinsAreaPos.top }, pinsArea)\n const isCursorInsidePinsAreaWrapper = isPointInsideEl(\n { x: x1 - pinsAreaWrapperPos.left, y: y1 - pinsAreaWrapperPos.top },\n pinsAreaWrapper\n )\n\n if (touchmove) {\n this.props.onPinMove(x1 - pinsAreaPos.left, y1 - pinsAreaPos.top, x1, y1)\n }\n\n setPinDragging(true)\n\n if (isCursorInsidePinsArea && isCursorInsidePinsAreaWrapper) {\n if (touchmove) {\n if (0 == this.pinMovedToImage) {\n this.pinMovedToImage = this.pinMovedToImage + 1\n }\n if (!this.velocityTimeout && 1 == this.pinMovedToImage) {\n this.props.stopMagnifyTimer()\n this.runVelocityTimer({ ...currentMove })\n }\n } else {\n if (!this.velocityTimeout) {\n this.props.stopMagnifyTimer()\n this.runVelocityTimer({ ...currentMove })\n }\n }\n } else {\n this.props.hideMagnify()\n\n if (this.velocityTimer) {\n clearInterval(this.velocityTimer)\n this.velocityTimer = null\n }\n if (this.velocityTimeout) {\n clearTimeout(this.velocityTimeout)\n this.velocityTimeout = null\n }\n }\n }\n\n @autobind\n onDragEnd(pinCoord) {\n const { setPinDragging, hideMagnify, scale, onPinTypeDrop, sessionDocument } = this.props\n hideMagnify()\n\n if (this.velocityTimer) {\n clearInterval(this.velocityTimer)\n this.velocityTimer = null\n }\n if (this.velocityTimeout) {\n clearTimeout(this.velocityTimeout)\n this.velocityTimeout = null\n }\n\n const pinsArea = sessionDocument.querySelector('#pins-area')\n const pinsAreaPos = DOMElementRect(pinsArea, sessionDocument)\n const x = (pinCoord.x - pinsAreaPos.x) / scale\n const y = (pinCoord.y - pinsAreaPos.y) / scale\n const isPinDroppedInsideArea = isPointInsideEl({ x, y }, pinsArea)\n this.setState({ dragging: false })\n setPinDragging(false)\n\n if (isPinDroppedInsideArea) {\n onPinTypeDrop({ x, y })\n }\n }\n\n @autobind\n subscribeToMove(dragUpdate) {\n if (!dragUpdate.dragging) {\n if (!dragUpdate.click) {\n this.onDragEnd(dragUpdate)\n } else if (dragUpdate.click) {\n this.props.onPinTypeSelect(this.props.pin.get('id'))\n }\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n } else {\n this.onDragMove(dragUpdate)\n }\n }\n\n @autobind\n handleMouseDown(event) {\n event.stopPropagation()\n const { allowEvents, onPinTypeSelect, pin } = this.props\n\n if (allowEvents && 0 === event.button) {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n onPinTypeSelect(pin.get('id'), 'pin')\n setTimeout(() => {\n const target = event.target\n const targetPos = target.getBoundingClientRect()\n const startX = event.clientX\n const startY = event.clientY\n const offsetX = targetPos.x\n const offsetY = targetPos.y\n\n this.subscription = this.movePin(offsetX, offsetY, startX, startY).subscribe(this.subscribeToMove)\n }, 0)\n }\n }\n\n @autobind\n movePin(offsetX, offsetY, startX, startY) {\n const { sessionDocument } = this.props\n const mousemove = ObservableFromEvent(sessionDocument, 'mousemove')\n const mouseup = ObservableFromEvent(sessionDocument, 'mouseup')\n\n let dragHappend = false\n\n return ObservableMerge(\n mousemove.pipe(\n // filter moves until delta is more than JITTER_SPACE\n rxFilter(event => {\n if (dragHappend) {\n return true\n }\n const isMoved =\n Math.abs(startX - event.clientX) > JITTER_SPACE || Math.abs(startY - event.clientY) > JITTER_SPACE\n if (!dragHappend && isMoved) {\n dragHappend = true\n }\n return isMoved\n }),\n\n rxMap(event => {\n return {\n x: event.clientX - offsetX,\n y: event.clientY - offsetY,\n x1: event.pageX,\n y1: event.pageY,\n dragging: true\n }\n }),\n // stop listening to moves when mouseup happens\n rxTakeUntil(mouseup)\n ),\n mouseup.pipe(\n // only take first mouseup event\n rxTake(1),\n // return final event\n rxMap(event =>\n dragHappend\n ? {\n x: event.pageX,\n y: event.pageY,\n dragging: false\n }\n : {\n x: startX + offsetX,\n y: startY + offsetY,\n dragging: false,\n click: true\n }\n )\n )\n )\n }\n\n @autobind\n handleTouchStart(event) {\n const { allowEvents, onPinTypeSelect, pin } = this.props\n if (allowEvents) {\n event.stopPropagation()\n if (event.touches.length !== 1) {\n return\n }\n\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n\n this.pinMovedToImage = 0\n\n onPinTypeSelect(pin.get('id'), 'pin')\n const target = event.currentTarget\n const targetPos = target.getBoundingClientRect()\n const startX = event.touches[0].clientX\n const startY = event.touches[0].clientY\n const offsetX = targetPos.x\n const offsetY = targetPos.y\n this.subscription = this.touchmovePin(offsetX, offsetY, startX, startY).subscribe(this.subscribeToMove)\n }\n }\n\n @autobind\n touchmovePin(offsetX, offsetY, startX, startY) {\n const { sessionDocument } = this.props\n const touchmove = ObservableFromEvent(sessionDocument, 'touchmove', { passive: false })\n const touchend = ObservableFromEvent(sessionDocument, 'touchend')\n\n let dragHappend = false\n\n return ObservableMerge(\n touchmove.pipe(\n // filter moves until delta is more than JITTER_SPACE\n rxFilter(event => {\n if (1 !== event.touches.length) {\n return false\n }\n if (dragHappend) {\n return true\n }\n const isMoved =\n Math.abs(startX - event.touches[0].clientX) > JITTER_SPACE ||\n Math.abs(startY - event.touches[0].clientY) > JITTER_SPACE\n if (!dragHappend && isMoved) {\n dragHappend = true\n }\n return isMoved\n }),\n rxMap(event => {\n stopEvent(event)\n return {\n x: event.touches[0].clientX - offsetX,\n y: event.touches[0].clientY - offsetY,\n x1: event.touches[0].pageX,\n y1: event.touches[0].pageY,\n dragging: true,\n touchmove: true\n }\n }),\n // stop listening to moves when mouseup happens\n rxTakeUntil(touchend)\n ),\n touchend.pipe(\n // only take first mouseup event\n rxTake(1),\n rxFilter(event => 1 === event.changedTouches.length),\n // return final event\n rxMap(event => {\n stopEvent(event)\n return dragHappend\n ? {\n x: event.changedTouches[0].pageX,\n y: event.changedTouches[0].pageY,\n dragging: false\n }\n : {\n x: startX + offsetX,\n y: startY + offsetY,\n dragging: false,\n click: true\n }\n })\n )\n )\n }\n\n renderClone() {\n const { top, left } = this.state\n const { pin, isActive } = this.props\n const color = pin.get('color')\n\n return (\n <div\n className={pinStyle.clone}\n style={{ top: top - 11, left: left - 11 }}\n id={`pinPanelItemClone-${pin.get('id')}`}\n >\n <Dot color={color} oe={'off'} isActive={isActive} size={22} />\n </div>\n )\n }\n\n render() {\n const { dragging } = this.state\n const { pin, isActive, textColor, counter, readOnly, allowEvents } = this.props\n\n return (\n <Fragment>\n <div\n className={`${panelStyle.pin}\n ${isActive ? pinStyle['pin-active'] : ''}\n ${readOnly ? pinStyle['pin-readonly'] : ''}\n ${!allowEvents ? pinStyle['pin-noactive'] : ''}\n ${0 == counter ? pinStyle['pin-disabled'] : ''}`}\n id={`pinPanelItem-${pin.get('id')}`}\n data-testid=\"SW-HM-PanelItem\"\n onMouseDown={readOnly ? null : this.handleMouseDown}\n onTouchStart={readOnly ? null : this.handleTouchStart}\n onContextMenu={event_ => event_.preventDefault()}\n >\n <div className={panelStyle.icon} data-testid=\"SW-HM-PanelItem-Icon\">\n <svg\n className={pinStyle.img}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"31\"\n viewBox=\"100 180 620 620\"\n preserveAspectRatio=\"xMaxYMax slice\"\n >\n <path\n fill={0 == counter ? '#525252' : pin.get('color')}\n d=\"M500.096 192.72zm210.426 210.89c-7.294 149.948-202.486 383.827-210.426 393.43-8.126-9.234-203.132-243.482-210.611-393.43-5.633-116.155 94.18-210.611 210.61-210.888s215.967 94.733 210.427 210.888zm-282.261-1.847zM500.096 797.5h-.462z\"\n />\n </svg>\n <span\n className={panelStyle.counter}\n data-testid=\"SW-HM-PanelItem-Counter\"\n style={{ color: 0 != counter ? textColor : '' }}\n >\n {counter}\n </span>\n </div>\n <span\n style={{ background: pin.get('color'), color: textColor }}\n className={panelStyle.label}\n data-testid=\"SW-HM-PanelItem-Label\"\n dangerouslySetInnerHTML={{\n __html: pin.get('text')\n }}\n />\n </div>\n {dragging && counter > 0 && this.renderClone()}\n </Fragment>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"comment\":\"oe-module__comment___2cE1v\",\"comment-error\":\"oe-module__comment-error___2KkIS\",\"compact\":\"oe-module__compact___1w1QS\"};","import React from 'react'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\nimport TextField from '@aytm/lib/rfd-ui/components/basic/text-field'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/oe.module.scss'\n\n// constants\nconst COMMENT_ROWS_DEFAULT = 3\n\nexport default class OpenEnded extends ManagedRenderComponent {\n static propTypes = {\n pin: PropTypes.instanceOf(Map).isRequired,\n locale: PropTypes.instanceOf(Map).isRequired,\n mandatory: PropTypes.bool.isRequired,\n hasErrors: PropTypes.bool,\n onCommentBlur: PropTypes.func.isRequired,\n onCommentFocus: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n compactLayout: PropTypes.bool,\n isLandscape: PropTypes.bool\n }\n\n componentDidMount() {\n this.scrollToComment()\n }\n\n // componentDidUpdate(prevProps) {\n // if (prevProps.pin.get('id') !== this.props.pin.get('id')) {\n // this.scrollToComment(false)\n // }\n // }\n\n @autobind\n scrollToComment(scroll = true, focus = true) {\n const { isLandscape } = this.props\n const userAgent = navigator?.userAgent\n const isIOS = userAgent ? /iPhone/.test(userAgent) : false\n const element = this.refCommentEl?.querySelector('.rfd-ui-text-area-field')\n\n if (element) {\n if (focus) element.focus()\n\n if (scroll && isIOS) {\n if (isLandscape) {\n setTimeout(() => {\n window.scrollTo({\n top: 120,\n left: 0,\n behavior: 'smooth'\n })\n }, 300)\n }\n setTimeout(() => {\n element.scrollIntoView({ behavior: 'smooth' })\n }, 310)\n } else {\n element.scrollIntoView({ behavior: 'smooth' })\n }\n }\n }\n\n @autobind\n onCommentFocus() {\n const { onCommentFocus } = this.props\n if ('function' == typeof onCommentFocus) {\n onCommentFocus()\n }\n\n setTimeout(() => {\n this.scrollToComment(true, false)\n }, 100)\n }\n\n render() {\n const { mandatory, pin, locale, onCommentBlur, onCommentChange, hasErrors, compactLayout } = this.props\n\n const commentContent = pin.get('c')\n const commentRows = commentContent\n ? Math.max((commentContent.match(/\\n/g) || []).length + 1, COMMENT_ROWS_DEFAULT)\n : COMMENT_ROWS_DEFAULT\n\n return (\n <div className={`${style.comment} ${compactLayout ? style.compact : ''}`} ref={this.saveRef('CommentEl')}>\n <TextField\n ref={this.saveRef('TextField')}\n autoFocus={false}\n debounce={200}\n rows={commentRows}\n resizableHeight={true}\n onChange={onCommentChange}\n onBlur={onCommentBlur}\n onFocus={this.onCommentFocus}\n error={hasErrors}\n placeholder={mandatory ? locale.get('commentMandatoryPlaceHolder') : locale.get('commentOptionalPlaceHolder')}\n value={commentContent}\n data-testid=\"SW-HM-Input\"\n />\n </div>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"instruction-module__text___FOkgL swidget-global-span swidget-global-div\",\"toggle\":\"instruction-module__toggle___23lw3 icon-aytmfd-help\",\"instruction\":\"instruction-module__instruction___2Ex0y\",\"instruction-fixed\":\"instruction-module__instruction-fixed___3QMih\",\"instruction-visible\":\"instruction-module__instruction-visible___1oVmW\",\"instruction-hidden\":\"instruction-module__instruction-hidden___RHZzW\",\"instruction-animate\":\"instruction-module__instruction-animate___1JgmH\",\"error\":\"instruction-module__error___HJ6Rr\",\"text-animate\":\"instruction-module__text-animate___2RxQx\",\"instruction-text\":\"instruction-module__instruction-text___q-qZQ\"};","import React, { Fragment } from 'react'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/instruction.module.scss'\n\nexport default class Instruction extends ManagedRenderComponent {\n static propTypes = {\n questionSchema: PropTypes.object.isRequired,\n errorsKeys: PropTypes.array.isRequired,\n locale: PropTypes.instanceOf(Map).isRequired,\n isMobile: PropTypes.bool.isRequired,\n isAnimationShown: PropTypes.bool.isRequired,\n onAnimationEnd: PropTypes.func.isRequired\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n showInstruction: false,\n isAnimationShown: this.props.isAnimationShown\n }\n }\n\n componentDidMount() {\n const { isAnimationShown } = this.state\n const { onAnimationEnd } = this.props\n\n if (!isAnimationShown) {\n setTimeout(() => {\n this.setState({\n isAnimationShown: true\n })\n if ('function' == typeof onAnimationEnd) {\n onAnimationEnd()\n }\n }, 1800)\n }\n }\n\n @autobind\n toggleHelp() {\n const { showInstruction } = this.state\n this.setState({ showInstruction: !showInstruction })\n }\n\n @autobind\n toggleHelpOn() {\n this.setState({ showInstruction: true })\n }\n\n @autobind\n toggleHelpOff() {\n this.setState({ showInstruction: false })\n }\n\n @autobind\n stopAnimation() {\n this.setState({\n isAnimationShown: true,\n showInstruction: true\n })\n }\n\n getInstructionText() {\n const { questionSchema, errorsKeys, locale } = this.props\n const minPoints = questionSchema.get('min_points')\n const maxPoints = questionSchema.get('max_points')\n const pinPerPage = questionSchema.get('pin_per_page')\n const pinTypesSize = questionSchema.get('pin_types').size\n const oe = questionSchema.get('pin_types').some(item => item.get('oe') != 'off')\n const isOnePinTypeOnPage = pinPerPage || 1 == pinTypesSize\n const pointLimitType = questionSchema.get('point_limit_type')\n const pinsBehavior = questionSchema.get('pins_behavior')\n\n const instructions = [\n <span key=\"instruction-text-1\">{isOnePinTypeOnPage ? locale.get('addPin') : locale.get('addPins')} </span>,\n <span\n key=\"instruction-text-2\"\n className={errorsKeys.length && errorsKeys.includes('pinTypes') ? style.error : ''}\n >\n {void 0 != minPoints\n ? minPoints == maxPoints\n ? 1 == minPoints && 1 == maxPoints\n ? isOnePinTypeOnPage\n ? locale.get('leaveExactlyPinPerPage')\n : 'allPins' == pointLimitType\n ? locale.get('leaveExactlyPinAny')\n : locale.get('leaveExactlyPin')\n : isOnePinTypeOnPage\n ? locale.get('leaveExactlyPinsPerPage')(maxPoints)\n : 'allPins' == pointLimitType\n ? locale.get('leaveExactlyPinsAny')(maxPoints)\n : locale.get('leaveExactlyPins')(maxPoints)\n : isOnePinTypeOnPage\n ? locale.get('leavePinsPerPage')(minPoints, maxPoints)\n : 'allPins' == pointLimitType\n ? locale.get('leavePinsAny')(minPoints, maxPoints)\n : locale.get('leavePins')(minPoints, maxPoints)\n : isOnePinTypeOnPage\n ? maxPoints > 1\n ? locale.get('leavePinsPerPageWithOff')(maxPoints)\n : locale.get('leavePinPerPageWithOff')\n : maxPoints > 1\n ? 'allPins' == pointLimitType\n ? locale.get('leavePinsWithOffAny')(maxPoints)\n : locale.get('leavePinsWithOff')(maxPoints)\n : 'allPins' == pointLimitType\n ? locale.get('leavePinWithOffAny')\n : locale.get('leavePinWithOff')}\n </span>,\n <span key=\"instruction-text-3\" className={errorsKeys.length && errorsKeys.includes('pins') ? style.error : ''}>\n {oe ? locale.get('leaveComment') : ''}\n </span>,\n <span key=\"instruction-text-4\">\n {`${locale.get('dragPin')} ${locale.get('removePin')}`}\n {oe ? locale.get('editComment') : ''}\n </span>\n ]\n\n if ('pins' != pinsBehavior) {\n instructions.push([\n <span key=\"instruction-text-5\">{locale.get('pinsBehavior')}</span>,\n <span key=\"instruction-text-6\">{locale.get(pinsBehavior)}</span>\n ])\n }\n return instructions\n }\n\n render() {\n const { showInstruction, isAnimationShown } = this.state\n const { errorsKeys, isMobile } = this.props\n\n return (\n <Fragment>\n <div\n className={`${style.instruction}\n ${errorsKeys.length ? '' : style['instruction-fixed']}\n ${isAnimationShown ? '' : style['instruction-animate']}\n ${showInstruction || errorsKeys.length ? style['instruction-visible'] : style['instruction-hidden']}`}\n onMouseEnter={this.stopAnimation}\n onMouseLeave={this.toggleHelpOff}\n onTouchStart={this.stopAnimation}\n onTouchEnd={this.toggleHelp}\n data-testid=\"SW-HM-Instruction\"\n >\n <div className={`${style.text} ${isAnimationShown ? '' : style['text-animate']}`}>\n {this.getInstructionText()}\n </div>\n </div>\n\n {isMobile ? (\n <i className={style.toggle} onClick={this.toggleHelp} />\n ) : (\n <i className={style.toggle} onMouseEnter={this.toggleHelpOn} onMouseLeave={this.toggleHelpOff} />\n )}\n </Fragment>\n )\n }\n}\n","import React from 'react'\nimport { createPortal } from 'react-dom'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { CSSTransition } from 'react-transition-group'\n\n//component\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/common/magnifier.module.scss'\n\nexport default class Magnifier extends PureDataComponent {\n static propTypes = {\n children: PropTypes.any,\n cursor: PropTypes.any,\n imageSrc: PropTypes.string.isRequired,\n imageWidth: PropTypes.number.isRequired,\n imageHeight: PropTypes.number.isRequired,\n imageX: PropTypes.number.isRequired,\n imageY: PropTypes.number.isRequired,\n show: PropTypes.bool.isRequired,\n pageX: PropTypes.number.isRequired,\n pageY: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n zoom: PropTypes.number.isRequired,\n element: PropTypes.object\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n height: 0,\n width: 0\n }\n }\n\n // componentWillUnmount() {\n // this.onHide()\n // }\n\n componentDidUpdate(prevProps) {\n const { show } = this.props\n if (prevProps.show != show) {\n if (show) {\n this.onShow()\n } else {\n this.onHide()\n }\n }\n }\n\n @autobind\n onShow() {\n const { width, height } = this.props\n this.setState({ width, height })\n }\n\n @autobind\n onHide() {\n this.setState({ width: 0, height: 0 })\n }\n\n render() {\n const {\n imageSrc,\n imageWidth,\n imageHeight,\n zoom,\n pageX,\n pageY,\n imageX,\n imageY,\n children,\n cursor,\n show,\n fixed,\n element\n } = this.props\n const { width, height } = this.state\n const magnifierPositionStyle = fixed\n ? {\n width: `${width}px`,\n height: `${height}px`,\n top: pageY,\n left: pageX,\n position: 'fixed'\n }\n : {\n width: `${width}px`,\n height: `${height}px`,\n top: pageY - height,\n left: pageX - width / 2\n }\n\n const magnifierContentStyle = {\n backgroundImage: `url(${imageSrc})`,\n backgroundSize: `${imageWidth * zoom}px ${imageHeight * zoom}px`,\n backgroundPosition: `0 0`,\n height: `${imageHeight * zoom}px`,\n width: `${imageWidth * zoom}px`,\n left: `${-(imageX * zoom - width / 2)}px`,\n top: `${-(imageY * zoom - height / 2)}px`\n }\n\n return createPortal(\n <div\n className={`${style.component} ` + (fixed ? `${style.fixed}` : `${style.floating}`)}\n style={magnifierPositionStyle}\n >\n <CSSTransition in={show} timeout={200} classNames=\"swidget-magnifier-animate\">\n <div className={style.animate}>\n <div className={style.content} style={magnifierContentStyle}>\n {children}\n </div>\n {cursor}\n </div>\n </CSSTransition>\n </div>,\n element ? element : document.body\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { List } from 'immutable'\nimport autobind from 'autobind-decorator'\n\n// components\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport Dot from '@aytm/app/swidget/questions/components/hm/dot'\nimport Magnifier from '@aytm/app/swidget/questions/components/common/magnifier'\n\n// styles\nimport pinStyle from '@aytm/app/swidget/questions/styles/hm/pin.module.scss'\n\nconst ZOOM = 5\nconst MAGNIFIER_SIZE_MOBILE = 120\nconst MAGNIFIER_SIZE_DESKTOP = 150\n\nexport default class Magnify extends ManagedRenderComponent {\n static propTypes = {\n color: PropTypes.string.isRequired,\n imageSrc: PropTypes.string.isRequired,\n show: PropTypes.bool.isRequired,\n mobile: PropTypes.bool.isRequired,\n pins: PropTypes.instanceOf(List).isRequired,\n pinTypes: PropTypes.instanceOf(List).isRequired,\n pinIdTohide: PropTypes.string.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n pageX: PropTypes.number.isRequired,\n pageY: PropTypes.number.isRequired,\n sizes: PropTypes.object.isRequired,\n sessionDocument: PropTypes.object.isRequired,\n compactLayout: PropTypes.bool\n }\n\n @autobind\n renderDotForMagnify() {\n const { color } = this.props\n return <Dot oe=\"off\" color={color} isActive={false} size={22} />\n }\n\n @autobind\n renderPinsForMagnify() {\n const { pins, pinIdTohide, pinTypes } = this.props\n\n return pins.map(item => {\n const answers = item.get('answers')\n return answers.length > 0\n ? item.get('answers').map(pin => {\n if (pinIdTohide != pin.get('id')) {\n const pinType = pinTypes.find(pinType => item.get('id') == pinType.get('id'))\n const color = pinType.get('color')\n const pinStylePosition = {\n left: pin.get('x') * ZOOM - 11,\n top: pin.get('y') * ZOOM - 11\n }\n\n return (\n <div className={pinStyle.pin} style={pinStylePosition} key={`magnify-pin-copy-${pin.get('id')}`}>\n <Dot oe={'off'} color={color} isActive={false} size={22} />\n </div>\n )\n } else {\n return null\n }\n })\n : null\n })\n }\n\n render() {\n const { mobile, compactLayout, x, y, pageX, pageY, show, sizes, imageSrc, sessionDocument } = this.props\n const magnifySize = mobile ? MAGNIFIER_SIZE_MOBILE : MAGNIFIER_SIZE_DESKTOP\n const magnifyPageX =\n mobile || compactLayout ? Math.max(magnifySize / 2, Math.min(pageX, sizes.width - magnifySize / 2)) : pageX\n\n return (\n <Magnifier\n cursor={this.renderDotForMagnify()}\n zoom={ZOOM}\n width={magnifySize}\n height={magnifySize}\n imageSrc={imageSrc}\n imageX={x}\n imageY={y}\n imageHeight={sizes.imgHeight}\n imageWidth={sizes.imgWidth}\n pageX={magnifyPageX}\n pageY={pageY}\n show={show}\n element={sessionDocument.body}\n >\n {this.renderPinsForMagnify()}\n </Magnifier>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wizard\":\"wizard-module__wizard___2b1Ke\",\"left\":\"wizard-module__left___cP8HB\",\"pincher-wizard-left\":\"wizard-module__pincher-wizard-left___259We\",\"right\":\"wizard-module__right___1iDhT\",\"pincher-wizard-right\":\"wizard-module__pincher-wizard-right___3ahBH\"};","import React from 'react'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/wizard.module.scss'\n\nexport default class PincherWizard extends ManagedRenderComponent {\n render() {\n const { size } = this.props\n return (\n <div className={style.wizard} style={{ width: size, height: size }}>\n <div className={style.left}></div>\n <div className={style.right}></div>\n </div>\n )\n }\n}\n","// libs\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport Dot from '@aytm/app/swidget/questions/components/hm/dot'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/pin.module.scss'\n\nexport default class DotClone extends ManagedRenderComponent {\n static propTypes = {\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired,\n showMagnify: PropTypes.func.isRequired,\n hideMagnify: PropTypes.func.isRequired,\n color: PropTypes.string.isRequired\n }\n\n componentDidMount() {\n this.props.showMagnify(50)\n }\n\n componentWillUnmount() {\n this.props.hideMagnify()\n }\n\n render() {\n const { top, left, color } = this.props\n const size = 22\n return (\n <div className={style.clone} style={{ top: top - size / 2, left: left - size / 2 }}>\n <Dot color={color} oe={'off'} isActive={false} size={size} />\n </div>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"cursor\":\"no-pins-cursor-module__cursor___3lCmf\",\"animate\":\"no-pins-cursor-module__animate___uFS1B\",\"no-pins\":\"no-pins-cursor-module__no-pins___2hrtR\",\"text\":\"no-pins-cursor-module__text___1k8W6\",\"line1\":\"no-pins-cursor-module__line1___1eamB\",\"no-pins-line1\":\"no-pins-cursor-module__no-pins-line1___35fGN\",\"line2\":\"no-pins-cursor-module__line2___3I2A_\",\"no-pins-line2\":\"no-pins-cursor-module__no-pins-line2___1oKpu\",\"line3\":\"no-pins-cursor-module__line3___1eadu\",\"line4\":\"no-pins-cursor-module__line4___2HCZO\",\"no-pins-line4\":\"no-pins-cursor-module__no-pins-line4___jldAt\",\"line5\":\"no-pins-cursor-module__line5___3QSkg\",\"no-pins-line5\":\"no-pins-cursor-module__no-pins-line5___2pP12\",\"line6\":\"no-pins-cursor-module__line6___2YwPC\"};","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm/no-pins-cursor.module.scss'\n\nexport default class NoPinsCursor extends ManagedRenderComponent {\n static propTypes = {\n scale: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n text: PropTypes.string.isRequired,\n fullsize: PropTypes.bool\n }\n\n shouldComponentUpdate(nextProps) {\n if (nextProps.scale != this.props.scale) return true\n return false\n }\n\n render() {\n const { x, y, text, scale, width } = this.props\n const positionStyle = {\n position: 'absolute',\n top: y,\n transform: 'scale(' + 1 / scale + ') translateZ(0)'\n }\n\n if (x < width - 70) {\n positionStyle.left = x // 75 is a half of not message cursor with\n positionStyle.right = 'auto'\n } else {\n positionStyle.right = -70\n positionStyle.left = 'auto'\n }\n\n return (\n <div className={style.cursor} style={positionStyle} data-testid=\"SW-HM-NoPins-Cursor\">\n <div className={style.line1}></div>\n <div className={style.line2}></div>\n <div className={style.line3}></div>\n <div className={style.line4}></div>\n <div className={style.line5}></div>\n <div className={style.line6}></div>\n <div className={style.animate}>\n <div className={style.text}>{text}</div>\n </div>\n </div>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"hm-module__component___1eqUU swidget-question-hm\",\"wrapper\":\"hm-module__wrapper___3Cxs-\",\"wrapper-fullsize\":\"hm-module__wrapper-fullsize___2Pocw\",\"area\":\"hm-module__area___1VtJt\",\"highlight\":\"hm-module__highlight___3O2Uh\",\"selected\":\"hm-module__selected___2fBOE\",\"image\":\"hm-module__image___345pi\",\"cursor\":\"hm-module__cursor___9ncYd\",\"cursor-dot\":\"hm-module__cursor-dot____YlRn\",\"no-answers\":\"hm-module__no-answers___3dqUm common-module__no-answers___11uwi swidget-global-span\"};","// libs\nimport React, { memo } from 'react'\nimport PropTypes from 'prop-types'\nimport { List } from 'immutable'\n\n// functions\nimport { hexToRGB } from '@aytm/app/swidget/questions/components/hm/functions'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm.module.scss'\n\nClusters.propTypes = {\n color: PropTypes.string.isRequired,\n clusters: PropTypes.instanceOf(List).isRequired,\n highlight: PropTypes.bool.isRequired,\n sizes: PropTypes.object.isRequired\n}\n\nexport function Clusters(props) {\n const { sizes, color, clusters, highlight } = props\n const isSafari = /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent) // eslint-disable-line compat/compat\n const colorRgb = hexToRGB(color).join(',')\n\n return (\n <svg\n id=\"svg\"\n data-testid=\"SW-HM-Clusters\"\n style={{ position: 'absolute', top: 0, left: 0 }}\n width={sizes.imgWidth}\n height={sizes.imgHeight}\n viewBox={`0 0 ${sizes.imgWidth} ${sizes.imgHeight}`}\n >\n <defs>\n {isSafari ? (\n <radialGradient id=\"heatmap-clusters-gradient\" cx=\"50%\" cy=\"50%\" r=\"150%\">\n <stop offset=\"0%\" stopColor={`rgba(${colorRgb}, 0.5)`} />\n <stop offset=\"15%\" stopColor={`rgba(${colorRgb}, 0.5)`} />\n <stop offset=\"20%\" stopColor={`rgba(${colorRgb}, 0.4)`} />\n <stop offset=\"55%\" stopColor={`rgba(${colorRgb}, 0)`} />\n </radialGradient>\n ) : (\n <radialGradient id=\"heatmap-clusters-gradient\" cx=\"50%\" cy=\"50%\" r=\"150%\">\n <stop offset=\"0%\" stopColor={`rgba(${colorRgb}, 0.5)`}>\n <animate\n attributeName=\"stopColor\"\n values={`rgba(${colorRgb}, 1); rgba(${colorRgb}, 0.5)`}\n dur=\"1s\"\n repeatCount=\"1\"\n />\n </stop>\n <stop offset=\"15%\" stopColor={`rgba(${colorRgb}, 0.5)`}>\n <animate\n attributeName=\"stopColor\"\n values={`rgba(${colorRgb}, 1); rgba(${colorRgb}, 0.5)`}\n dur=\"1s\"\n repeatCount=\"1\"\n />\n </stop>\n <stop offset=\"20%\" stopColor={`rgba(${colorRgb}, 0.4)`} />\n <stop offset=\"55%\" stopColor={`rgba(${colorRgb}, 0)`} />\n </radialGradient>\n )}\n {clusters\n .map(cl => (\n <clipPath key={`clip-${cl.get('uid')}`} id={`clip-${cl.get('uid')}`}>\n <polygon points={cl.get('border')} />\n </clipPath>\n ))\n .toArray()}\n </defs>\n {clusters\n .map(cl => (\n <g key={`url(#clip-${cl.get('uid')})`} clipPath={`url(#clip-${cl.get('uid')})`}>\n <polygon\n id={`poly${cl.get('uid')}`}\n data-testid=\"SW-HM-Cluster\"\n fill={color}\n className={`${highlight ? style.highlight : ''} ${cl.get('pins').size > 0 ? style.selected : ''}`}\n points={cl.get('border')}\n >\n {!cl.get('pins').size && (\n <animate\n className={'animateOpacity'}\n id={`animateOpacityPoly${cl.get('uid')}`}\n attributeName=\"fill-opacity\"\n values=\"0; 0.65; 0\"\n dur=\"0.25s\"\n begin=\"indefinite\"\n repeatCount=\"1\"\n />\n )}\n </polygon>\n <circle\n key={`circle${cl.get('uid')}`}\n cx={cl.get('pins').size > 0 ? cl.getIn(['pins', cl.get('pins').size - 1, 'x']) : -200}\n cy={cl.get('pins').size > 0 ? cl.getIn(['pins', cl.get('pins').size - 1, 'y']) : -200}\n r=\"20px\"\n fillOpacity=\"0.5\"\n fill=\"url(#heatmap-clusters-gradient)\"\n >\n {cl.get('pins').size > 0 && (\n <animate\n id={`animateCircle${cl.get('uid')}`}\n attributeName=\"r\"\n values=\"20px; 40px; 80px; 150px; 150%;\"\n dur=\"0.3s\"\n begin=\"indefinite\"\n repeatCount=\"1\"\n fill=\"freeze\"\n />\n )}\n <animate\n id={`animateCircle${cl.get('uid')}Delete`}\n attributeName=\"r\"\n values=\"150%; 70%; 150px; 80px; 40px; 0\"\n dur=\"0.25s\"\n begin=\"indefinite\"\n repeatCount=\"1\"\n fill=\"freeze\"\n />\n </circle>\n </g>\n ))\n .toArray()}\n </svg>\n )\n}\n\nexport default memo(\n Clusters,\n (prevProps, nextProps) =>\n prevProps.sizes === nextProps.sizes &&\n prevProps.color === nextProps.color &&\n prevProps.clusters === nextProps.clusters &&\n prevProps.highlight === nextProps.highlight\n)\n","/* eslint-disable max-lines */\n// libs\nimport React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { List, Map } from 'immutable'\nimport { stopEvent } from '@aytm/lib/common/func'\nimport { generateUID } from '@aytm/app/survey/editor/lib/uid'\n\n// components\nimport Question from '@aytm/app/swidget/questions/components/_base'\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport PinItem from '@aytm/app/swidget/questions/components/hm/pin-item'\nimport PanelItem from '@aytm/app/swidget/questions/components/hm/panel-item'\nimport OpenEnded from '@aytm/app/swidget/questions/components/hm/open-ended'\nimport Instruction from '@aytm/app/swidget/questions/components/hm/instruction'\nimport Magnify from '@aytm/app/swidget/questions/components/hm/magnifier'\nimport PincherWizard from '@aytm/app/swidget/questions/components/hm/pincher-wizard'\nimport DotClone from '@aytm/app/swidget/questions/components/hm/dot-clone'\nimport NoPinsCursor from '@aytm/app/swidget/questions/components/hm/no-pins-cursor'\nimport Clusters from '@aytm/app/swidget/questions/components/hm/clusters'\n\n// functions\nimport {\n extractPinTypeId,\n getTextColor,\n pointInsidePolygon,\n isPointInsideEl,\n DOMElementRect\n} from '@aytm/app/swidget/questions/components/hm/functions'\nimport { flipCoordinatesVertically } from '@aytm/app/survey/editor/components/lib/hm'\nimport { getImageAssetPath, IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT } from '@aytm/lib/common/assets'\n\n// constants\nimport locale from '@aytm/app/swidget/questions/locale'\nimport { KEYCODE_BACKSPACE, KEYCODE_DELETE } from '@aytm/lib/common/const'\n// styles\nimport style from '@aytm/app/swidget/questions/styles/hm.module.scss'\nimport panelStyle from '@aytm/app/swidget/questions/styles/hm/panel.module.scss'\n\nconst COLOR_BLACK = '#000'\nconst COLOR_WHITE = '#fff'\nconst COLOR_PIN_HIDDEN = '#afafaf'\nconst PINSPANEL_H = 35\nconst IMAGE_DEFAULT_HEIGHT = 600\nconst IMAGE_DEFAULT_WIDTH = 600\n\nexport default class hm extends Question {\n static propTypes = Object.assign(Question.propTypes, {\n uploadUrl: PropTypes.string,\n mobile: PropTypes.bool\n })\n\n constructor(props) {\n super(props)\n this.locale = locale(props.locale).getIn(['questions', 'hm'])\n this.highlightErrors = false\n this.isFieldEventsHandled = false\n this.noPinsTimer = null\n this.touchEventHappend = false\n\n this.isAnimationShown = Boolean(sessionStorage.getItem('heatmapAnimationShown')) || !this.props.firstFrame\n this.pincherWizardAnimationDone = this.isAnimationShown\n\n const pins = this.props.questionSchema.get('pin_types').map(pinType => Map({ id: pinType.get('id'), answers: [] }))\n const pinTypes = this.props.questionSchema.get('pin_types')\n const notFake = pinTypes.size ? pinTypes.find(item => !item.get('fakeHidden')) : null\n\n this.state = {\n ...this.state,\n scale: 1,\n errorsKeys: [],\n selectedPinType: notFake ? notFake.get('id') : null,\n activePinId: null,\n lastTouchStart: { x: 0, y: 0 },\n lastTouchMove: { x: 0, y: 0 },\n pins: pins,\n commentActive: false,\n isActivePinTypeAnimated: true,\n isPincherActive: false,\n showMagnify: false,\n x: 0,\n y: 0,\n pageX: 0,\n pageY: 0,\n magnifyOffsetX: 0,\n magnifyOffsetY: 0,\n pinIdTohide: '',\n showNoPins: false,\n noPinsLeft: 0,\n noPinsTop: 0,\n showDotClone: false,\n isPinDragging: false,\n showPincherWizardAnimation: false,\n showInstructionAnimation: !this.isAnimationShown,\n showCommentError: false,\n clusters: List()\n }\n }\n\n @autobind\n handleInstructionAnimationEnd() {\n if (this.refFieldEl) {\n const { scale, isPincherActive } = this.state\n const { theme } = this.props\n sessionStorage.setItem('heatmapAnimationShown', true)\n\n if ('mobile' == theme && !isPincherActive) {\n this.setState({ showInstructionAnimation: false, showPincherWizardAnimation: true })\n setTimeout(() => {\n this.setState({ showPincherWizardAnimation: false })\n if (this.refImage && !this.pincherWizardAnimationDone) {\n this.refImage.style.transform = `scale(${scale})`\n this.pincherWizardAnimationDone = true\n }\n }, 1500)\n } else {\n this.setState({ showInstructionAnimation: false })\n }\n }\n }\n\n handleFieldEvents() {\n if (this.refFieldEl && !this.isFieldEventsHandled) {\n this.refFieldEl.addEventListener('pincher:create', this.handlePincherCreate)\n this.refFieldEl.addEventListener('pincher:transform', this.handlePincherTransform)\n this.refFieldEl.addEventListener('pincher:destroy', this.handlePincherDestroy)\n this.isFieldEventsHandled = true\n }\n }\n\n handleContext(event) {\n stopEvent(event)\n }\n\n componentDidMount() {\n super.componentDidMount()\n const { pins } = this.state\n const { sessionDocument } = this.props\n\n if (pins?.size && sessionDocument) {\n this.handleFieldEvents()\n this.setState({ clusters: this.createClusters() })\n\n sessionDocument.addEventListener('mousemove', this.handleMouseMove)\n sessionDocument.addEventListener('keydown', this.handleKeyDown)\n sessionDocument.addEventListener('mousedown', this.handleMouseDown)\n sessionDocument.addEventListener('mouseup', this.handleMouseUp)\n sessionDocument.addEventListener('touchstart', this.handleTouchStart)\n sessionDocument.addEventListener('touchmove', this.handleTouchMove, { passive: false })\n sessionDocument.addEventListener('touchend', this.handleTouchEnd)\n sessionDocument.addEventListener('click', this.handleClick)\n sessionDocument.addEventListener('contextmenu', this.handleContext)\n this.applyAnswer()\n } else {\n this.updateAnswer({ answerArray: [], valid: true })\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n // happens on click on disabled Next button on call showValidationMessage\n const isEventAllowed = !this.validateMandatoryComment()\n if (isEventAllowed) {\n if (nextProps.showErrors) {\n this.highlightErrors = true\n this.validate()\n this.highlightErrorElements()\n }\n } else {\n this.setState({ showCommentError: true })\n }\n }\n\n componentDidUpdate(prevProps) {\n const { sizes } = this.props\n\n if (\n sizes &&\n Object.keys(sizes).length &&\n sizes.imgWidth &&\n prevProps &&\n prevProps.sizes &&\n Object.keys(prevProps.sizes) &&\n prevProps.sizes.imgWidth &&\n sizes.imgWidth != prevProps.sizes.imgWidth\n ) {\n this.setState({ clusters: this.createClusters() })\n this.recalcPinsPosition(prevProps.sizes.imgWidth / sizes.imgWidth)\n if (this.refFieldEl) {\n this.refFieldEl.dispatchEvent(\n new CustomEvent('transform:pincher', {\n detail: {\n transform: preview => {\n preview.elements.content.style.height = sizes.imgHeight + 'px'\n preview.elements.content.style.width = sizes.imgWidth + 'px'\n }\n }\n })\n )\n }\n }\n }\n\n componentWillUnmount() {\n const { sessionDocument } = this.props\n if (this.refFieldEl) {\n this.refFieldEl.removeEventListener('pincher:create', this.handlePincherCreate)\n this.refFieldEl.removeEventListener('pincher:transform', this.handlePincherTransform)\n this.refFieldEl.removeEventListener('pincher:destroy', this.handlePincherDestroy)\n }\n sessionDocument?.removeEventListener('mousemove', this.handleMouseMove)\n sessionDocument?.removeEventListener('resize', this.handleResize)\n sessionDocument?.removeEventListener('keydown', this.handleKeyDown)\n sessionDocument?.removeEventListener('mousedown', this.handleMouseDown)\n sessionDocument?.removeEventListener('mouseup', this.handleMouseUp)\n sessionDocument?.removeEventListener('touchstart', this.handleTouchStart)\n sessionDocument?.removeEventListener('touchmove', this.handleTouchMove)\n sessionDocument?.removeEventListener('touchend', this.handleTouchEnd)\n sessionDocument?.removeEventListener('click', this.handleClick)\n sessionDocument.addEventListener('contextmenu', this.handleContext)\n\n if (this.noPinsTimer) {\n clearTimeout(this.noPinsTimer)\n this.noPinsTimer = null\n }\n }\n\n @autobind\n handleKeyDown(event) {\n const { commentActive, activePinId } = this.state\n if (\n (KEYCODE_DELETE == event.keyCode || KEYCODE_BACKSPACE == event.keyCode) &&\n !commentActive &&\n void 0 != activePinId\n ) {\n this.removePin(activePinId)\n }\n }\n\n @autobind\n handleTouchStart(event) {\n const { sessionDocument } = this.props\n const isEventAllowed = !this.validateMandatoryComment()\n this.touchEventHappend = true\n\n if (isEventAllowed) {\n const pinsArea = this.refFieldEl\n const pinsAreaPos = DOMElementRect(pinsArea, sessionDocument)\n const pageX = event.touches[0].pageX\n const pageY = event.touches[0].pageY\n\n const coords = {\n x: pageX,\n y: pageY\n }\n\n this.setState({\n x: pageX - pinsAreaPos.left,\n y: pageY - pinsAreaPos.top,\n pageX: pageX,\n pageY: pageY,\n lastTouchStart: coords,\n lastTouchMove: coords\n })\n\n if (\n pinsArea &&\n (pinsArea == event.target ||\n this.refImage == event.target ||\n 'svg' == event.target.tagName ||\n 'polygon' == event.target.tagName)\n ) {\n this.showDotClone(500)\n }\n }\n }\n\n @autobind\n handleTouchMove(event) {\n const { sessionDocument } = this.props\n if (!this.state.showDotClone) {\n if (this.dotCloneTimer) {\n this.dotCloneTimer && clearTimeout(this.dotCloneTimer)\n this.dotCloneTimer = null\n }\n } else {\n stopEvent(event)\n const pinsArea = this.refFieldEl\n const pinsAreaPos = DOMElementRect(pinsArea, sessionDocument)\n const pageX = event.touches[0].pageX\n const pageY = event.touches[0].pageY\n const x = pageX - pinsAreaPos.left\n const y = pageY - pinsAreaPos.top\n\n this.setState({\n x,\n y,\n pageX: pageX,\n pageY: pageY,\n lastTouchMove: {\n x: pageX,\n y: pageY\n }\n })\n\n const isCursorInsidePinsArea = isPointInsideEl({ x, y }, pinsArea)\n const pinsAreaWrapper = this.refPinsAreaWrapperEl\n const isCursorInsidePinsAreaWrapper = isPointInsideEl(\n { x: x - pinsAreaWrapper.scrollLeft, y: y - pinsAreaWrapper.scrollTop },\n pinsAreaWrapper\n )\n\n if (!isCursorInsidePinsArea && !isCursorInsidePinsAreaWrapper) {\n this.hideDotClone()\n }\n }\n }\n\n @autobind\n onPinMove(x, y, pageX, pageY) {\n this.setState({ x, y, pageX, pageY })\n }\n\n @autobind\n resetActivePinByEvent(event) {\n const cursor = this.refCursor\n if (\n this.state.activePinId &&\n this.refOpenEnded &&\n this.refOpenEnded.refCommentEl &&\n !this.refOpenEnded.refCommentEl.contains(event.target) &&\n this.rootEl &&\n this.rootEl?.current &&\n this.rootEl?.current?.contains(event.target) &&\n this.refImage != event.target &&\n cursor != event.target &&\n 'svg' != event.target.tagName &&\n 'polygon' != event.target.tagName\n ) {\n this.resetActivePin()\n }\n }\n\n @autobind\n handleMouseMove(event) {\n const { showDotClone } = this.state\n const { sessionDocument } = this.props\n const cursor = this.refCursor\n const pinsArea = this.refFieldEl\n const pinsAreaPos = DOMElementRect(pinsArea, sessionDocument)\n const x = event.pageX - pinsAreaPos.left\n const y = event.pageY - pinsAreaPos.top\n\n this.setState({ x, y, pageX: event.pageX, pageY: event.pageY })\n const pinPositionValidToPinsBehavior = this.isPinPositionValidToPinsBehavior({ x, y })\n\n if (\n showDotClone ||\n (cursor &&\n pinsArea &&\n (pinsArea == event.target ||\n this.refImage == event.target ||\n cursor == event.target ||\n 'svg' == event.target.tagName ||\n 'polygon' == event.target.tagName))\n ) {\n const isCursorInsidePinsArea = isPointInsideEl({ x, y }, pinsArea)\n const pinsAreaWrapper = this.refPinsAreaWrapperEl\n const isCursorInsidePinsAreaWrapper = isPointInsideEl(\n { x: x - pinsAreaWrapper.scrollLeft, y: y - pinsAreaWrapper.scrollTop },\n pinsAreaWrapper\n )\n\n if (isCursorInsidePinsArea && isCursorInsidePinsAreaWrapper && pinPositionValidToPinsBehavior) {\n if (cursor) {\n cursor.style.display = 'block'\n cursor.style.left = `${x}px`\n cursor.style.top = `${y}px`\n }\n } else {\n if (cursor) cursor.style.display = 'none'\n this.hideDotClone()\n }\n } else {\n if (cursor) cursor.style.display = 'none'\n }\n }\n\n @autobind\n handleMouseDown(event) {\n const isEventAllowed = !this.validateMandatoryComment()\n\n if (isEventAllowed && 0 == event.button) {\n const cursor = this.refCursor\n const pinsArea = this.refFieldEl\n\n // TODO Asya check that mousedown happened inside image area\n if (\n cursor &&\n pinsArea &&\n (pinsArea == event.target ||\n this.refImage == event.target ||\n cursor == event.target ||\n 'svg' == event.target.tagName ||\n 'polygon' == event.target.tagName)\n ) {\n this.showDotClone(400)\n } else {\n this.resetActivePinByEvent(event)\n }\n } else {\n this.resetActivePinByEvent(event)\n this.setState({ showCommentError: true })\n }\n }\n\n @autobind\n handleMouseUp(event) {\n this.hideMagnify(event)\n if (this.state.showDotClone) {\n this.addPin(this.extractCoords(event))\n }\n this.hideDotClone()\n }\n\n @autobind\n handleTouchEnd(event) {\n const isEventAllowed = !this.validateMandatoryComment()\n this.touchEventHappend = true\n\n if (isEventAllowed) {\n const {\n lastTouchStart: { x: startX, y: startY },\n lastTouchMove: { x: moveX, y: moveY },\n showDotClone\n } = this.state\n\n this.hideDotClone()\n\n if (\n event &&\n event.target &&\n (this.refImage == event.target || 'svg' == event.target.tagName || 'polygon' == event.target.tagName) &&\n event.changedTouches &&\n 1 === event.changedTouches.length &&\n (showDotClone || (startX === moveX && startY === moveY))\n ) {\n stopEvent(event)\n this.addPin(this.extractCoords(event))\n return\n }\n\n this.hideMagnify()\n this.resetActivePinByEvent(event)\n }\n }\n\n @autobind\n handleClick(event) {\n const isEventAllowed = !this.validateMandatoryComment()\n\n if (isEventAllowed && !this.touchEventHappend) {\n const cursor = this.refCursor\n // ASya TODO here maybe replace with check that click was inside image area but not on the dot\n if (event.target === this.refImage || 'svg' == event.target.tagName || 'polygon' == event.target.tagName) {\n stopEvent(event)\n if (cursor) cursor.style.display = 'none'\n this.addPin(this.extractCoords(event))\n }\n } else {\n this.setState({ showCommentError: true })\n }\n }\n\n @autobind\n resetActivePin() {\n this.setState({\n activePinId: null,\n commentActive: false\n })\n }\n\n @autobind\n handlePincherCreate() {\n this.hideMagnify()\n this.hideDotClone()\n\n this.pincherWizardAnimationDone = true\n this.setState({\n isPincherActive: true,\n showPincherWizardAnimation: false\n })\n }\n\n @autobind\n handlePincherTransform(event) {\n if (event && event.detail && event.detail.scale) {\n this.setState({\n scale: event.detail.scale\n })\n }\n }\n\n @autobind\n handlePincherDestroy() {\n this.setState({\n scale: 1,\n isPincherActive: false\n })\n }\n\n @autobind\n showDotClone(delay) {\n const { isPincherActive, showDotClone } = this.state\n this.dotCloneTimer && clearTimeout(this.dotCloneTimer)\n if (!isPincherActive) {\n this.dotCloneTimer = setTimeout(() => {\n if (!showDotClone) {\n this.setState({ showDotClone: true })\n }\n }, delay)\n }\n }\n\n @autobind\n hideDotClone() {\n if (this.dotCloneTimer) {\n clearTimeout(this.dotCloneTimer)\n this.dotCloneTimer = null\n }\n this.setState({ showDotClone: false })\n }\n\n @autobind\n showMagnify(delay, pinIdTohide = '', offsetX = 0, offsetY = 0) {\n const { isPincherActive, showMagnify } = this.state\n this.magnifyTimer && clearTimeout(this.magnifyTimer)\n if (!isPincherActive) {\n this.magnifyTimer = setTimeout(() => {\n if (!showMagnify) {\n this.setState({ showMagnify: true, pinIdTohide, magnifyOffsetX: offsetX, magnifyOffsetY: offsetY })\n }\n }, delay)\n }\n }\n\n @autobind\n hideMagnify() {\n if (this.magnifyTimer) {\n clearTimeout(this.magnifyTimer)\n this.magnifyTimer = null\n }\n this.setState({ showMagnify: false })\n }\n\n @autobind\n stopMagnifyTimer() {\n this.magnifyTimer && clearTimeout(this.magnifyTimer)\n }\n\n @autobind\n getErrors() {\n const { pins } = this.state\n const { questionSchema } = this.props\n\n const pinTypes = questionSchema.get('pin_types')\n const maxPoints = questionSchema.get('max_points')\n const minPoints = questionSchema.get('min_points', 0)\n\n return pinTypes.reduce(\n (errRes, pinType) => {\n if (!pinType.get('fakeHidden')) {\n const pinTypeId = pinType.get('id')\n const isOEMandatory = 'mandatory' == pinType.get('oe')\n const answersArr = pins.find(item => pinTypeId == item.get('id'))?.get('answers')\n const counter = maxPoints - this.getCounterValue(pinTypeId)\n if (counter < minPoints || counter > maxPoints) {\n errRes.get('pinTypes').push(pinTypeId)\n }\n // check comment for pins\n if (isOEMandatory) {\n answersArr.forEach(item => {\n const c = item\n .get('c')\n .trim()\n .replace(/\\r?\\n|\\r/g, '')\n if (void 0 == c || '' == c) {\n errRes.get('pins').push(item.get('id'))\n }\n })\n }\n }\n return errRes\n },\n Map({ pinTypes: [], pins: [] })\n )\n }\n\n @autobind\n highlightErrorElements() {\n const errors = this.getErrors()\n const errorsKeys = errors.keySeq().reduce((res, errKey) => {\n if (errors.get(errKey).length > 0) {\n res.push(errKey)\n }\n return res\n }, [])\n\n const updates = {}\n\n if (errorsKeys.length && this.highlightErrors) {\n // if pinTypes errors exist\n if (errors.get('pinTypes').length) {\n updates.activePinId = null\n updates.selectedPinType = errors.get('pinTypes')[0]\n } else if (errors.get('pins').length) {\n updates.activePinId = errors.get('pins')[0]\n updates.selectedPinType = extractPinTypeId(updates.activePinId)\n }\n }\n\n this.setState({ ...updates })\n }\n\n @autobind\n validate() {\n const { pins } = this.state\n\n if (!pins?.size) {\n return Map({ valid: true })\n }\n\n const errors = this.getErrors()\n const errorsKeys = errors.keySeq().reduce((res, errKey) => {\n if (errors.get(errKey).length > 0) {\n res.push(errKey)\n }\n return res\n }, [])\n\n if (this.highlightErrors) {\n this.setState({ errorsKeys: errorsKeys })\n }\n return Map({ valid: !errors || !errorsKeys.length })\n }\n\n @autobind\n validateMandatoryComment() {\n const { activePinId } = this.state\n\n if (!activePinId) return false\n\n const errors = this.getErrors()\n const pinsErrors = errors.get('pins')\n return pinsErrors.length > 0 && pinsErrors.includes(activePinId)\n }\n\n @autobind\n applyAnswer() {\n const { pins, errorsKeys } = this.state\n const { questionSchema, sizes } = this.props\n\n if (pins && sizes && Object.keys(sizes).length) {\n const pinTypes = questionSchema.get('pin_types')\n const originalImgWidth = questionSchema.get('image') ? questionSchema.getIn(['image', 'width']) : 600\n const originalImgHeight = questionSchema.get('image') ? questionSchema.getIn(['image', 'height']) : 600\n const imageRatio = originalImgWidth / sizes.imgWidth\n\n const answerArray = pins.reduce((arr, pin) => {\n const pinAnswers = pin.get('answers')\n if (pinAnswers.length > 0) {\n const answersArr = pin.get('answers').map((answer, index) => {\n const pinType = pinTypes.find(item => pin.get('id') == item.get('id'))\n const oe = pinType.get('oe')\n\n // set proper item id from answers\n const trueId = pinType.getIn(['answers', index]).get('id')\n\n const resultPin = {\n id: trueId,\n x: Math.min(Math.round(answer.get('x') * imageRatio), originalImgWidth - 1),\n y: Math.min(originalImgHeight - Math.round(answer.get('y') * imageRatio), originalImgHeight - 1)\n }\n\n if ('off' != oe) {\n const comment = answer.get('c')\n if (void 0 != comment) {\n resultPin.c = comment\n } else {\n if ('mandatory' == oe) {\n resultPin.c = comment\n }\n }\n }\n return resultPin\n })\n return [...arr, ...answersArr]\n }\n return arr\n }, [])\n\n const errors = this.getErrors()\n const hasErrors = errors.get('pinTypes').length > 0 || errors.get('pins').length > 0\n this.updateAnswer({ answerArray, valid: !(hasErrors && errorsKeys.length) })\n }\n }\n\n @autobind\n recalcPinsPosition(ratio) {\n const { pins } = this.state\n const updates = pins\n .keySeq()\n .toArray()\n .reduce((newPins, key) => {\n const newPinAnswers = pins.getIn([key, 'answers']).map(answer => {\n if (answer.has('x') && answer.has('y')) {\n const map1 = answer\n const map2 = map1.withMutations(answer => {\n answer.set('x', answer.get('x') / ratio).set('y', answer.get('y') / ratio)\n })\n return map2\n } else {\n return answer\n }\n })\n const updated = newPins.withMutations(item => item.setIn([key, 'answers'], newPinAnswers))\n return updated\n }, pins)\n\n this.setState({ pins: updates })\n }\n\n @autobind\n getCurrentPinStyle() {\n const { selectedPinType } = this.state\n const { questionSchema } = this.props\n\n const selectedPinData = selectedPinType\n ? questionSchema.get('pin_types').find(item => selectedPinType == item.get('id'))\n : Map({\n color: COLOR_PIN_HIDDEN,\n oe: false,\n text: ''\n })\n\n return Map({\n color: selectedPinData?.get('color'),\n oe: selectedPinData?.get('oe'),\n text: selectedPinData?.get('text')\n })\n }\n\n @autobind\n extractCoords(event) {\n const { scale } = this.state\n const { sessionDocument } = this.props\n const coords = {}\n\n if (event.nativeEvent) {\n // nativeEvent happens on click on pinsArea\n coords.x = event.nativeEvent.offsetX\n coords.y = event.nativeEvent.offsetY\n } else {\n // pincher events on touch\n // or when user dragging pin from panel - on mouseup / on touchend\n const pinsAreaPos = DOMElementRect(this.refFieldEl, sessionDocument)\n const pageX = event.changedTouches ? event.changedTouches[0].pageX : event.pageX\n const pageY = event.changedTouches ? event.changedTouches[0].pageY : event.pageY\n\n const x = pageX - pinsAreaPos.left\n const y = pageY - pinsAreaPos.top\n\n coords.x = x / scale\n coords.y = y / scale\n }\n\n return coords\n }\n\n @autobind\n updateClustersState(pinId, pin) {\n const { sessionDocument } = this.props\n const { clusters } = this.state\n\n if (pin) {\n // add or move pin\n const findNewPoly = this.getPointPolygon({ x: pin.get('x'), y: pin.get('y') })\n const findPrevPoly = clusters.find(item => item.get('pins').find(p => p.get('id') == pinId))\n\n if (findNewPoly || findPrevPoly) {\n const isPinMovedInsideSameCluster =\n findNewPoly && findPrevPoly && findPrevPoly.get('uid') == findNewPoly.get('uid')\n\n const updatedClusters = findPrevPoly\n ? findNewPoly\n ? isPinMovedInsideSameCluster\n ? clusters.update(\n clusters.findIndex(i => i.get('uid') == findNewPoly.get('uid')),\n item => item.updateIn(['pins', item.get('pins').findIndex(p => p.get('id') == pinId)], () => pin)\n )\n : clusters\n .update(\n clusters.findIndex(i => i.get('uid') == findNewPoly.get('uid')),\n item => item.update('pins', list => list.push(pin))\n )\n .update(\n clusters.findIndex(i => i.get('uid') == findPrevPoly.get('uid')),\n item => item.deleteIn(['pins', item.get('pins').findIndex(p => p.get('id') == pinId)])\n )\n : clusters.update(\n clusters.findIndex(i => i.get('uid') == findPrevPoly.get('uid')),\n item => item.deleteIn(['pins', item.get('pins').findIndex(p => p.get('id') == pinId)])\n )\n : clusters.update(\n clusters.findIndex(i => i.get('uid') == findNewPoly.get('uid')),\n item => item.update('pins', list => list.push(pin))\n )\n\n this.setState({ clusters: updatedClusters }, () => {\n if (findNewPoly) {\n const animation = sessionDocument.querySelector(`#animateCircle${findNewPoly.get('uid')}`)\n animation.beginElement()\n }\n })\n }\n } else {\n // remove pin from cluster\n if (clusters.size) {\n const index = clusters.findIndex(item => item.get('pins').find(p => p.get('id') == pinId))\n if (index > -1) {\n const clust = clusters.get(index)\n const pinIndex = clust.get('pins').findIndex(p => p.get('id') == pinId)\n const updatedClusters = clusters.update(index, item => item.deleteIn(['pins', pinIndex]))\n this.setState({ clusters: updatedClusters })\n }\n }\n }\n }\n\n @autobind\n runRemoveClusterAnimation(pinId) {\n const { clusters } = this.state\n const { sessionDocument } = this.props\n const cluster = clusters.find(item => item.get('pins').find(p => p.get('id') == pinId))\n\n if (cluster && cluster.get('pins').size < 2) {\n const animation = sessionDocument.querySelector(`#animateCircle${cluster.get('uid')}Delete`)\n animation.beginElement()\n }\n }\n\n @autobind\n getPointPolygon(coords) {\n const { clusters } = this.state\n const { sizes, questionSchema } = this.props\n\n const schemaClusters = questionSchema.get('clusters')\n const originalImgWidth = questionSchema.get('image') ? questionSchema.getIn(['image', 'width']) : 600\n const originalImgHeight = questionSchema.get('image') ? questionSchema.getIn(['image', 'height']) : 600\n const imageRatio = originalImgWidth / sizes.imgWidth\n const xOriginal = Math.min(Math.round(coords.x * imageRatio), originalImgWidth - 1)\n const yOriginal = Math.min(originalImgHeight - 1 - Math.round(coords.y * imageRatio), originalImgHeight - 1)\n return clusters.reverse().find(cl => {\n const originalCluster = schemaClusters.find(scl => cl.get('uid') == scl.get('uid'))\n return originalCluster\n ? pointInsidePolygon(\n { x: xOriginal, y: yOriginal },\n originalCluster\n .get('border')\n .toArray()\n .map(p => p.toArray())\n )\n : null\n })\n }\n\n @autobind\n isPinPositionValidToPinsBehavior(coords) {\n const { questionSchema } = this.props\n const pinsBehavior = questionSchema.get('pins_behavior')\n const findPoly = this.getPointPolygon(coords)\n return (findPoly && findPoly.size) || 'clusters' != pinsBehavior\n }\n\n @autobind\n addPin(coords) {\n const { pins, selectedPinType, showPincherWizardAnimation, showInstructionAnimation } = this.state\n const { questionSchema, mobile, sessionDocument } = this.props\n\n if ((selectedPinType && !mobile) || (mobile && !showInstructionAnimation && !showPincherWizardAnimation)) {\n const pinTypes = questionSchema.get('pin_types')\n const pinData = pins.find(pin => selectedPinType == pin.get('id'))\n const counter = this.getCounterValue(selectedPinType)\n\n const answers = pinData.get('answers')\n const oe = pinTypes.find(pinType => selectedPinType == pinType.get('id')).get('oe')\n\n const pinsAreaWrapper = this.refPinsAreaWrapperEl\n const isPinDroppedInsideArea = isPointInsideEl(coords, this.refFieldEl)\n const isPinDroppedInsidePinsAreaWrapper = isPointInsideEl(\n { x: coords.x - pinsAreaWrapper.scrollLeft, y: coords.y - pinsAreaWrapper.scrollTop },\n pinsAreaWrapper\n )\n const pinPositionValidToPinsBehavior = this.isPinPositionValidToPinsBehavior(coords)\n\n if (isPinDroppedInsideArea && isPinDroppedInsidePinsAreaWrapper && pinPositionValidToPinsBehavior) {\n if (counter > 0) {\n const id = `${selectedPinType}-${generateUID()}`\n const pinTypeIndex = pins.findIndex(item => item.get('id') == selectedPinType)\n const pin = { ...coords, id }\n if ('off' != oe) {\n pin.c = ''\n }\n\n this.updateClustersState(pin.id, Map(pin))\n\n answers.push(Map(pin))\n this.setState(\n {\n pins: pins.setIn([pinTypeIndex, 'answers'], answers),\n activePinId: id,\n showCommentError: false\n },\n () => this.applyAnswer()\n )\n } else {\n this.showNoPins(coords)\n this.resetActivePin()\n }\n } else {\n if (!pinPositionValidToPinsBehavior) {\n const animations = sessionDocument.querySelectorAll('.animateOpacity')\n if (animations) {\n Array.from(animations).forEach(a => a.beginElement())\n }\n }\n this.resetActivePin()\n }\n }\n }\n\n @autobind\n removePin(removedPin) {\n const { pins } = this.state\n const removedPinId = removedPin.get('id')\n\n const pinTypeId = extractPinTypeId(removedPinId)\n const answers = pins.find(pin => pinTypeId == pin.get('id')).get('answers')\n const pinIndex = answers.findIndex(item => item.get('id') == removedPinId)\n answers.splice(pinIndex, 1)\n this.updateClustersState(removedPinId)\n\n this.setState(\n {\n pins: pins.setIn([pinTypeId, 'answers'], answers),\n activePinId: null\n },\n () => this.applyAnswer()\n )\n }\n\n @autobind\n updatePin(pin, data) {\n const pinTypeId = extractPinTypeId(pin.get('id'))\n const movedPin = pin.merge(data)\n const answers = this.state.pins.find(pin => pinTypeId == pin.get('id')).get('answers')\n const pins = this.state.pins.setIn([pinTypeId, 'answers'], answers)\n const pinIndex = answers.findIndex(item => item.get('id') == pin.get('id'))\n\n this.updateClustersState(pin.get('id'), movedPin)\n answers.splice(pinIndex, 1, movedPin)\n this.setState({ pins }, () => {\n this.applyAnswer()\n })\n }\n\n @autobind\n createPinClickHandler(pin) {\n return () => {\n const { questionSchema } = this.props\n const { selectedPinType, activePinId, isPincherActive } = this.state\n const pinId = pin.get('id')\n const pinTypeId = extractPinTypeId(pinId)\n const pinTypes = questionSchema.get('pin_types')\n const pinType = pinTypes.find(pinType => pinTypeId == pinType.get('id'))\n const oe = pinType.get('oe')\n\n if (activePinId == pinId && isPincherActive && 'off' != oe) {\n this.refFieldEl.dispatchEvent(new CustomEvent('destroy:pincher'))\n }\n const newState = {\n activePinId: pinId\n }\n if (pinTypeId != selectedPinType) {\n newState.selectedPinType = pinTypeId\n }\n this.setState(newState)\n }\n }\n\n @autobind\n createPinMovedHandler(pin) {\n return (x, y) => {\n const isPinDroppedInsideArea = isPointInsideEl({ x, y }, this.refFieldEl)\n const pinPositionValidToPinsBehavior = this.isPinPositionValidToPinsBehavior({ x, y }, pin.get('id'))\n if (isPinDroppedInsideArea && pinPositionValidToPinsBehavior) {\n this.updatePin(pin, Map({ x, y }))\n } else {\n this.removePin(pin)\n }\n }\n }\n\n @autobind\n onCommentFocus() {\n this.setState({\n commentActive: true\n })\n }\n\n @autobind\n onCommentBlur() {\n this.setState({\n commentActive: false\n })\n }\n\n @autobind\n onCommentChange(comment) {\n const { activePinId, pins } = this.state\n\n const pinTypeId = extractPinTypeId(activePinId)\n const pinTypeData = pins.find(pinType => pinTypeId == pinType.get('id'))\n const answers = pinTypeData.get('answers')\n const pinIndex = answers.findIndex(item => item.get('id') == activePinId)\n const pin = answers[pinIndex]\n\n answers.splice(pinIndex, 1, pin.set('c', comment))\n\n this.setState(\n {\n pins: pins.setIn([pinTypeId, 'answers'], answers)\n },\n () => this.applyAnswer()\n )\n }\n\n @autobind\n onPinTypeSelect(id, target) {\n const isEventAllowed = !this.validateMandatoryComment()\n\n if (isEventAllowed) {\n if ('pin' != target) {\n this.setState({\n selectedPinType: id,\n activePinId: null,\n commentActive: false\n })\n } else {\n this.setState({\n selectedPinType: id\n })\n }\n }\n }\n\n @autobind\n onPinTypeDrop(coords) {\n this.addPin(coords)\n }\n\n @autobind\n showNoPins(coord) {\n if (!this.noPinsTimer) {\n this.setState({ showNoPins: true, noPinsTop: coord.y, noPinsLeft: coord.x })\n this.noPinsTimer = setTimeout(() => {\n this.setState({ showNoPins: false })\n this.noPinsTimer = null\n }, 2000)\n }\n }\n\n @autobind\n renderOutOfPins() {\n const { sizes } = this.props\n const { showNoPins, noPinsTop, noPinsLeft, scale } = this.state\n\n if (!showNoPins) return null\n return (\n <NoPinsCursor\n x={this.refFieldEl?.offsetLeft + noPinsLeft > 70 ? noPinsLeft : noPinsLeft + 70}\n y={this.refFieldEl?.offsetTop + noPinsTop > 30 ? noPinsTop : noPinsTop + 45}\n width={sizes?.width}\n scale={scale}\n text={this.locale.get('outOfPins')}\n data-testid=\"SW-HM-NoPins\"\n />\n )\n }\n\n @autobind\n renderPins() {\n const { pins, activePinId, scale = 1 } = this.state\n const { questionSchema, sessionDocument } = this.props\n const pinTypes = questionSchema.get('pin_types')\n const allowEvents = !this.validateMandatoryComment()\n\n return pins.map(item => {\n const answers = item.get('answers')\n if (answers.length > 0) {\n return item.get('answers').map(pin => {\n const pinType = pinTypes.find(pinType => item.get('id') == pinType.get('id'))\n\n if (pinType) {\n const oe = pinType.get('oe')\n const color = pinType.get('color')\n const isActive = activePinId == pin.get('id')\n return (\n <PinItem\n isActive={isActive}\n key={`hm-pin-${pin.get('id')}`}\n oe={oe}\n pin={pin}\n color={color}\n scale={scale}\n onPinClick={this.createPinClickHandler(pin)}\n onPinMoved={this.createPinMovedHandler(pin)}\n onPinTypeSelect={this.onPinTypeSelect}\n onPinMove={this.onPinMove}\n setPinDragging={this.setPinDragging}\n showMagnify={this.showMagnify}\n hideMagnify={this.hideMagnify}\n stopMagnifyTimer={this.stopMagnifyTimer}\n runRemoveClusterAnimation={this.runRemoveClusterAnimation}\n allowEvents={allowEvents || isActive}\n sessionDocument={sessionDocument}\n />\n )\n } else return null\n })\n }\n\n return null\n })\n }\n\n @autobind\n renderNoAnswer() {\n return (\n <Fragment>\n <div className={style['no-answers']}>\n <p>{this.locale.get('noAnswers')}</p>\n </div>\n </Fragment>\n )\n }\n\n @autobind\n getCounterValue(key) {\n const { pins } = this.state\n const { questionSchema } = this.props\n const pointLimitType = questionSchema.get('point_limit_type')\n const maxPoints = questionSchema.get('max_points')\n\n if ('allPins' == pointLimitType) {\n const answers = pins.reduce((sum, pin) => pin?.get('answers')?.length + sum, 0)\n return maxPoints - answers\n } else {\n const answers = pins.find(pin => key == pin?.get('id'))?.get('answers')\n return maxPoints - answers?.length\n }\n }\n\n @autobind\n renderPinTypes() {\n const { selectedPinType, scale, showPincherWizardAnimation, showInstructionAnimation } = this.state\n const { questionSchema, mobile, sessionDocument } = this.props\n\n const pinTypes = questionSchema.get('pin_types')\n const readOnly = mobile ? showInstructionAnimation || showPincherWizardAnimation : false\n const allowEvents = !this.validateMandatoryComment()\n\n return pinTypes.map(pinType => {\n const key = pinType.get('id')\n const isActive = selectedPinType == key\n const isFakeHidden = pinType.get('fakeHidden')\n const textColor = getTextColor(pinType.get('color'), COLOR_BLACK, COLOR_WHITE)\n\n return (\n <div\n className={`${panelStyle.item}\n ${isActive ? panelStyle['item-active'] : ''}\n ${isFakeHidden ? panelStyle['item-hidden'] : ''}`}\n key={`hm-pinTypeItem-${key}`}\n id={`hm-pinTypeItem-${key}`}\n style={{ width: `${100 / pinTypes.size}%` }}\n data-testid=\"SW-HM-PinType\"\n >\n <PanelItem\n key={`hm-pinType-${key}`}\n pin={pinType}\n scale={scale}\n isActive={isActive}\n textColor={textColor}\n counter={this.getCounterValue(key)}\n onPinTypeDrop={this.onPinTypeDrop}\n onPinTypeSelect={this.onPinTypeSelect}\n onPinMove={this.onPinMove}\n showMagnify={this.showMagnify}\n hideMagnify={this.hideMagnify}\n stopMagnifyTimer={this.stopMagnifyTimer}\n readOnly={readOnly}\n allowEvents={allowEvents && !isFakeHidden}\n setPinDragging={this.setPinDragging}\n sessionDocument={sessionDocument}\n />\n </div>\n )\n })\n }\n\n @autobind\n renderPanel() {\n const { theme, sessionDocument, compactLayout } = this.props\n const { isPincherActive } = this.state\n\n return isPincherActive ? (\n <Portal>\n <div\n className={`${panelStyle.panel} ${panelStyle.portal}`}\n data-testid=\"SW-HM-Panel\"\n style={{ top: sessionDocument?.innerHeight - PINSPANEL_H + sessionDocument?.pageYOffset + 2 }}\n >\n {this.renderPinTypes()}\n </div>\n </Portal>\n ) : (\n <div\n className={`${panelStyle.panel} ${'mobile' == theme ? panelStyle.mobile : ''} ${\n compactLayout ? panelStyle.compact : ''\n }`}\n >\n {this.renderPinTypes()}\n </div>\n )\n }\n\n @autobind\n renderOE() {\n const { activePinId, pins, isPincherActive, showCommentError } = this.state\n const { questionSchema, compactLayout, landscape } = this.props\n\n if (!activePinId || isPincherActive) {\n return null\n }\n const pinTypeId = extractPinTypeId(activePinId)\n const oe = questionSchema\n .get('pin_types')\n ?.find(pinType => pinTypeId == pinType.get('id'))\n ?.get('oe')\n\n if ('off' == oe) {\n return null\n }\n\n const answers = pins.find(pin => pinTypeId == pin.get('id')).get('answers')\n const pinIndex = answers.findIndex(item => item.get('id') == activePinId)\n const pin = answers[pinIndex]\n\n if (!pin) {\n return null\n }\n\n const isOEMandatory = 'mandatory' == oe\n const hasErrors = this.validateMandatoryComment()\n\n return (\n <OpenEnded\n ref={this.saveRef('OpenEnded')}\n pin={pin}\n mandatory={isOEMandatory}\n locale={this.locale}\n hasErrors={hasErrors && showCommentError}\n onCommentBlur={this.onCommentBlur}\n onCommentFocus={this.onCommentFocus}\n onCommentChange={this.onCommentChange}\n compactLayout={compactLayout}\n isLandscape={landscape}\n />\n )\n }\n\n @autobind\n createClusters() {\n const { questionSchema, sizes } = this.props\n const { clusters } = this.state\n const clustersSchema = questionSchema.get('clusters')\n\n if (sizes?.imgWidth && clustersSchema?.size) {\n const imageWidth = questionSchema.getIn(['image', 'width'])\n const imageHeight = questionSchema.getIn(['image', 'height'])\n const calcWidth = sizes.imgWidth\n const scaled = imageWidth / calcWidth\n const pinTypes = questionSchema.get('pin_types')\n const color = pinTypes.getIn([0, 'color'])\n\n const scaledBorder = border => border.map(el => [el[0] / scaled, el[1] / scaled]).toArray()\n\n return clustersSchema\n .map(cl => {\n const border = cl.get('border').map(p => p.toArray())\n const res = cl\n .set('border', scaledBorder(flipCoordinatesVertically(border, imageHeight)))\n .set('color', color)\n .set('pins', clusters.size ? clusters.find(el => el.get('uid') == cl.get('uid')).get('pins') : List())\n return res\n })\n .sort((c1, c2) => {\n const area1 = c1.getIn(['attributes', 'area'])\n const area2 = c2.getIn(['attributes', 'area'])\n return area2 - area1\n })\n } else {\n return List()\n }\n }\n\n @autobind\n setPinDragging(value) {\n this.setState({ isPinDragging: value })\n }\n\n @autobind\n renderPinsArea() {\n const {\n selectedPinType,\n pins,\n scale,\n showMagnify,\n pinIdTohide,\n x,\n y,\n pageX,\n pageY,\n magnifyOffsetX,\n magnifyOffsetY,\n showDotClone,\n showPincherWizardAnimation,\n clusters,\n isPinDragging\n } = this.state\n const { questionSchema, sizes, mobile, theme, sessionDocument, compactLayout } = this.props\n\n if (void 0 == sizes || 0 == Object.keys(sizes).length) {\n return null\n }\n\n const imageSrc = questionSchema.getIn(['image', 'original_url'])\n const vImagePreviewURL = getImageAssetPath({\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n width: IMAGE_DEFAULT_WIDTH,\n height: IMAGE_DEFAULT_HEIGHT,\n path: imageSrc,\n backgroundColor: 'white'\n })\n\n const fullsize = questionSchema.getIn(['image', 'scrolling']) || false\n const maxPoints = questionSchema.get('max_points')\n const pinTypes = questionSchema.get('pin_types')\n\n const isActivePinTypeAnimated = selectedPinType\n ? pins.find(pin => selectedPinType == pin.get('id'))?.get('answers')?.length < maxPoints\n : false\n\n const wrapperStyle = mobile ? { height: sizes.height } : { maxHeight: sizes.height }\n\n const pinsAreaStyle = {\n height: sizes.imgHeight,\n width: sizes.imgWidth\n }\n\n const pinColor = this.getCurrentPinStyle().get('color')\n\n return (\n <div\n ref={this.saveRef('PinsAreaWrapperEl')}\n id=\"pins-area-wrapper\"\n className={`${style.wrapper} ${fullsize && sizes.height < sizes.imgHeight ? style['wrapper-fullsize'] : ''}`}\n style={wrapperStyle}\n >\n <div\n data-testid=\"SW-HM-Pins\"\n id=\"pins-area\"\n data-pincher\n className={style.area}\n ref={this.saveRef('FieldEl')}\n style={pinsAreaStyle}\n >\n {this.renderOutOfPins()}\n <div style={{ transform: `scale(${1 / scale}) translateZ(0)` }}>\n <div\n className={style.image}\n ref={this.saveRef('Image')}\n data-testid=\"SW-HM-Image\"\n style={{\n height: sizes.imgHeight,\n width: sizes.imgWidth,\n backgroundImage: `url(${imageSrc ? imageSrc : vImagePreviewURL})`,\n transform: `scale(${\n 'mobile' == theme && !this.pincherWizardAnimationDone ? (showPincherWizardAnimation ? 1 : 0.8) : scale\n })`,\n transition: `${showPincherWizardAnimation ? 'all 0.8s ease' : 'none'}`\n }}\n />\n </div>\n {Boolean(clusters.size) && Boolean(Object.keys(sizes).length) && (\n <Clusters clusters={clusters} color={pinColor} highlight={showDotClone || isPinDragging} sizes={sizes} />\n )}\n {isActivePinTypeAnimated && !showMagnify && !mobile && (\n <div ref={this.saveRef('Cursor')} className={style.cursor} />\n )}\n {this.renderPins()}\n {isActivePinTypeAnimated && showDotClone && (\n <DotClone left={x} top={y} showMagnify={this.showMagnify} hideMagnify={this.hideMagnify} color={pinColor} />\n )}\n <Magnify\n imageSrc={imageSrc ? imageSrc : vImagePreviewURL}\n x={x - magnifyOffsetX}\n y={y - magnifyOffsetY}\n pageX={pageX - magnifyOffsetX}\n pageY={pageY - magnifyOffsetY}\n show={showMagnify}\n sizes={sizes}\n pins={pins}\n pinIdTohide={pinIdTohide}\n pinTypes={pinTypes}\n color={pinColor}\n mobile={mobile}\n sessionDocument={sessionDocument}\n compactLayout={compactLayout}\n />\n </div>\n {showPincherWizardAnimation && <PincherWizard size={Math.min(sizes.imgWidth, sizes.imgHeight)} />}\n </div>\n )\n }\n\n @autobind\n renderContent() {\n const { errorsKeys } = this.state\n const { questionSchema, mobile } = this.props\n\n return (\n <Fragment>\n <Instruction\n questionSchema={questionSchema}\n errorsKeys={errorsKeys}\n locale={this.locale}\n isMobile={mobile}\n onAnimationEnd={this.handleInstructionAnimationEnd}\n isAnimationShown={this.isAnimationShown}\n />\n {this.renderPinsArea()}\n {this.renderPanel()}\n {this.renderOE()}\n </Fragment>\n )\n }\n\n @autobind\n renderDesktop() {\n const { questionSchema } = this.props\n if (!questionSchema.get('pin_types').size) {\n return this.renderNoAnswer()\n }\n return (\n <div data-testid=\"SW-HM\" className={style.component}>\n {this.renderContent()}\n </div>\n )\n }\n\n @autobind\n renderMobile() {\n return this.renderDesktop()\n }\n}\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;"],"names":["flipCoordinatesVertically","points","h","map","point","flippedPoint","calcPolygonArea","polygon","area","i","length","_polygon$i","_slicedToArray","x1","y1","_polygon","x2","Math","abs","getClusterTitle","cluster","existingClusters","BASE_TITLE_REGEXP","RegExp","clusterTitle","get","title","trim","existingCluster","find","cl","existingTitle","string","baseTitleData","exec","baseTitle","queryRegExp","replace","titledClusters","filter","test","size","indexes","forEach","titleData","push","undefined","parseInt","sort","a","b","resultIndex","findIndex","elem","hasClustersOfType","type","clusters","some","c","getIn","generateUID","uid","uuidv4","slice","Dot","_ManagedRenderCompone","_classCallCheck","_callSuper","arguments","_inherits","key","value","_this$props","this","props","color","oe","isActive","React","className","style","width","height","id","fill","r","cx","cy","mask","ManagedRenderComponent","hexToRGB","hex","_m","g","result","calcVelocity","prevMove","newMove","xDist","x","yDist","y","interval","time","sqrt","extractPinTypeId","pinId","split","isPointInsideEl","coords","el","Boolean","offsetWidth","offsetHeight","DOMElementRect","element","sessionDocument","rect","getBoundingClientRect","fixedRect","sessionDocumentEl","documentElement","body","parentNode","scrollXOffset","scrollLeft","scrollYOffset","scrollTop","top","left","bottom","right","propTypes","PropTypes","NA_PIN_H","PinItem","_PinItem","context","_this","state","pin","Date","now","magnifyOffsetX","magnifyOffsetY","preventClickEvent","prevProps","_this$state","newPin","prevPin","setState","currentMove","_this2","velocityTimeout","setTimeout","velocityTimer","setInterval","_this2$state","lastTimeDif","velocity","newTimeDif","showMagnify","scale","NA_PIN_W","allowEvents","onPinClick","_ref","touchmove","_dragging","pageX","pageY","_this$props2","onPinMove","setPinDragging","_objectSpread","isCursorInsidePinsArea","querySelector","pinsAreaWrapper","isCursorInsidePinsAreaWrapper","stopMagnifyTimer","runVelocityTimer","hideMagnify","clearInterval","clearTimeout","_ref2","_this$props3","onPinMoved","dragUpdate","dragging","onDragMove","click","onClick","onDragEnd","subscription","unsubscribe","event","stopPropagation","_this$props4","onPinTypeSelect","button","pinsAreaPos","target","currentTarget","startX","clientX","startY","clientY","offsetLeft","offsetTop","offsetX","offsetY","movePin","subscribe","subscribeToMove","_this3","_this$props5","runRemoveClusterAnimation","mousemove","ObservableFromEvent","mouseup","dragHappend","ObservableMerge","pipe","rxFilter","isMoved","rxMap","rxTakeUntil","rxTake","_this$props6","touches","changedTouches","touchmovePin","_this4","_this$props7","passive","touchend","stopEvent","_this$props8","_this$state2","pinsDifCoord","getPinCoordinatesOffset","transform","onMouseDown","handleMouseDown","onTouchStart","handleTouchStart","onTouchEnd","handleTouchEnd","onContextMenu","event_","preventDefault","_applyDecoratedDescriptor","_class","prototype","autobind","Object","getOwnPropertyDescriptor","PanelItem","_PanelItem","pinMovedToImage","pinsArea","pinsAreaWrapperPos","pinCoord","onPinTypeDrop","isPinDroppedInsideArea","targetPos","pinStyle","textColor","counter","readOnly","Fragment","panelStyle","xmlns","viewBox","preserveAspectRatio","d","background","dangerouslySetInnerHTML","__html","renderClone","OpenEnded","_OpenEnded","scrollToComment","_navigator","_this$refCommentEl","scroll","focus","isLandscape","userAgent","navigator","isIOS","refCommentEl","window","scrollTo","behavior","scrollIntoView","onCommentFocus","mandatory","locale","onCommentBlur","onCommentChange","hasErrors","compactLayout","commentContent","commentRows","max","match","ref","saveRef","TextField","autoFocus","debounce","rows","resizableHeight","onChange","onBlur","onFocus","error","placeholder","Map","isRequired","Instruction","_Instruction","showInstruction","isAnimationShown","onAnimationEnd","questionSchema","errorsKeys","minPoints","maxPoints","pinPerPage","pinTypesSize","item","isOnePinTypeOnPage","pointLimitType","pinsBehavior","instructions","includes","isMobile","onMouseEnter","stopAnimation","onMouseLeave","toggleHelpOff","toggleHelp","getInstructionText","toggleHelpOn","Magnifier","_Magnifier","_PureDataComponent","show","onShow","onHide","imageSrc","imageWidth","imageHeight","zoom","imageX","imageY","children","cursor","fixed","magnifierPositionStyle","position","magnifierContentStyle","backgroundImage","backgroundSize","backgroundPosition","createPortal","CSSTransition","in","timeout","classNames","document","PureDataComponent","Magnify","_Magnify","pins","pinIdTohide","pinTypes","pinType","pinStylePosition","mobile","sizes","magnifySize","magnifyPageX","min","renderDotForMagnify","imgHeight","imgWidth","renderPinsForMagnify","List","PincherWizard","DotClone","NoPinsCursor","nextProps","text","positionStyle","fullsize","Clusters","highlight","isSafari","colorRgb","join","offset","stopColor","attributeName","values","dur","repeatCount","toArray","clipPath","begin","fillOpacity","memo","hm","_hm","_Question","highlightErrors","isFieldEventsHandled","noPinsTimer","touchEventHappend","sessionStorage","getItem","firstFrame","pincherWizardAnimationDone","answers","notFake","selectedPinType","activePinId","lastTouchStart","lastTouchMove","commentActive","isActivePinTypeAnimated","isPincherActive","showNoPins","noPinsLeft","noPinsTop","showDotClone","isPinDragging","showPincherWizardAnimation","showInstructionAnimation","showCommentError","refFieldEl","theme","setItem","refImage","addEventListener","handlePincherCreate","handlePincherTransform","handlePincherDestroy","_get","_getPrototypeOf","call","handleFieldEvents","createClusters","handleMouseMove","handleKeyDown","handleMouseUp","handleTouchMove","handleClick","handleContext","applyAnswer","updateAnswer","answerArray","valid","validateMandatoryComment","showErrors","validate","highlightErrorElements","keys","recalcPinsPosition","dispatchEvent","CustomEvent","detail","preview","elements","content","removeEventListener","handleResize","KEYCODE_DELETE","keyCode","KEYCODE_BACKSPACE","removePin","isEventAllowed","tagName","refPinsAreaWrapperEl","hideDotClone","dotCloneTimer","_this$rootEl","_this$rootEl2","_this$rootEl2$current","refCursor","refOpenEnded","contains","rootEl","current","resetActivePin","pinPositionValidToPinsBehavior","isPinPositionValidToPinsBehavior","display","resetActivePinByEvent","addPin","extractCoords","_this$state3","_this$state3$lastTouc","_this$state3$lastTouc2","moveX","moveY","delay","_this$state4","_this$state5","magnifyTimer","_this5","reduce","errRes","_pins$find","pinTypeId","isOEMandatory","answersArr","getCounterValue","errors","getErrors","updates","keySeq","res","errKey","pinsErrors","_this$state6","originalImgWidth","originalImgHeight","imageRatio","arr","answer","index","resultPin","round","comment","concat","_toConsumableArray","ratio","newPins","newPinAnswers","has","map2","withMutations","set","setIn","selectedPinData","nativeEvent","findNewPoly","getPointPolygon","findPrevPoly","p","isPinMovedInsideSameCluster","updatedClusters","update","updateIn","list","deleteIn","beginElement","pinIndex","schemaClusters","xOriginal","yOriginal","reverse","originalCluster","scl","n","x0","y0","inside","pointInsidePolygon","findPoly","_this6","_this$state7","pinData","isPinDroppedInsidePinsAreaWrapper","pinTypeIndex","updateClustersState","animations","querySelectorAll","Array","from","removedPin","_this7","removedPinId","splice","data","_this8","movedPin","merge","_this9","_this9$state","newState","_this10","updatePin","_this11","_this$state8","coord","_this12","_this$refFieldEl","_this$refFieldEl2","_this$state9","_this13","_this$state10","_this$state10$scale","createPinClickHandler","createPinMovedHandler","sum","_pin$get","_pins$find2","_this14","_this$state11","colorDark","colorLight","_hexToRGB2","isFakeHidden","Portal","innerHeight","pageYOffset","renderPinTypes","_questionSchema$get","_questionSchema$get$f","_this$state12","landscape","clustersSchema","scaled","border","scaledBorder","c1","c2","area1","_pins$find3","_pins$find3$get","_this$state13","_this$props9","vImagePreviewURL","getImageAssetPath","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT","path","backgroundColor","wrapperStyle","maxHeight","pinsAreaStyle","pinColor","getCurrentPinStyle","renderOutOfPins","transition","renderPins","_this$props10","handleInstructionAnimationEnd","renderPinsArea","renderPanel","renderOE","renderContent","renderNoAnswer","renderDesktop","Question","assign","uploadUrl","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","uuid","byteToHex","toString","substr","toLowerCase","TypeError","options","buf","rnds","random"],"sourceRoot":""}