react-lasso-select 1.2.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/helpers.ts","../src/SVGHelpers.ts","../src/withDraggable.tsx","../src/SVGPolyline.tsx","../src/SVGPolygon.tsx","../src/SVGPoint.tsx","../src/pathReducer.ts","../src/index.tsx"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\nexport interface Vector {\n dx: number;\n dy: number;\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport interface Dictionary<T> {\n [key: string]: T;\n}\n\nexport type touchOrMouseEvent<T> = React.MouseEvent<T, MouseEvent> | React.TouchEvent<T>;\nexport type touchAndMouseEvent<T> = React.MouseEvent<T, MouseEvent> & React.TouchEvent<T>;\n\nexport const objectToClassName = (obj: Dictionary<boolean>) => {\n return Object.keys(obj)\n .filter((key) => obj[key])\n .join(' ');\n};\n\nexport const arePointsEqual = (p1: Point, p2: Point) => p1.x === p2.x && p1.y === p2.y;\n\nexport const arePointListEqual = (arr1: Point[], arr2: Point[]) => {\n if ((!arr1 && arr2) || (arr1 && !arr2) || arr1.length !== arr2.length) return false;\n return arr1.every((point, i) => arePointsEqual(point, arr2[i]));\n};\n\nexport const roundPointCoordinates = ({ x, y }: Point, p = 1): Point => ({\n x: Math.round((x + Number.EPSILON) * p) / p,\n y: Math.round((y + Number.EPSILON) * p) / p\n});\n\nexport const findPointByPosition = (\n points: Point[],\n position: Point,\n r = 0\n): { point: Point; index: number } => {\n const index = points.findIndex(\n (point) => Math.max(Math.abs(point.x - position.x), Math.abs(point.y - position.y)) <= r\n );\n return { point: { ...(points[index] || { x: NaN, y: NaN }) }, index };\n};\n\nexport const getDistance = (p1: Point, p2: Point) => {\n return Math.hypot(p2.x - p1.x, p2.y - p1.y);\n};\n\nexport const getAngle = (p1: Point, p2: Point) => {\n return Math.atan2(p2.y - p1.y, p2.x - p1.x);\n};\n\nexport const approximateToAnAngleMultiplicity = (\n startPoint: Point,\n endPoint: Point,\n minAngle: number\n): Point => {\n const r = getDistance(startPoint, endPoint);\n const angle = getAngle(startPoint, endPoint);\n const newAngle = Math.round(angle / minAngle) * minAngle;\n return {\n x: startPoint.x + r * Math.cos(newAngle),\n y: startPoint.y + r * Math.sin(newAngle)\n };\n};\n\nexport const approximateToAngles = (\n startPoint: Point,\n endPoint: Point,\n angles: number[]\n): Point => {\n const r = getDistance(startPoint, endPoint);\n const angle = getAngle(startPoint, endPoint);\n const nearestAngle = angles.reduce(\n (prev, now) => (Math.abs(now - angle) < Math.abs(prev - angle) ? now : prev),\n Infinity\n );\n if (nearestAngle !== Infinity) {\n endPoint.x = startPoint.x + r * Math.cos(nearestAngle);\n endPoint.y = startPoint.y + r * Math.sin(nearestAngle);\n }\n return endPoint;\n};\n\nexport const calculateAnglesBeetwenPoints = (points: Point[]) => {\n const angles: number[] = [];\n for (let i = 1; i < points.length; i++) {\n const alpha = Math.atan2(points[i].y - points[i - 1].y, points[i].x - points[i - 1].x);\n const alpha2 = alpha + Math.PI;\n angles.push(alpha, alpha2 > Math.PI ? alpha2 - 2 * Math.PI : alpha2);\n }\n return angles.filter((val, idx, arr) => arr.indexOf(val) === idx);\n};\n\nexport function getClippedImageCanvas(\n src: string,\n path: Point[],\n callback: (err: Error | null, canvas: HTMLCanvasElement) => void,\n crop = true\n) {\n const image = new Image();\n image.crossOrigin = 'Anonymous';\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return callback(new Error('CTX is null'), canvas);\n }\n image.onerror = () => {\n callback(new Error('Failed to load image'), canvas);\n };\n image.onload = () => {\n try {\n canvas.width = image.naturalWidth + 2;\n canvas.height = image.naturalHeight + 2;\n ctx.drawImage(image, 0, 0);\n if (path.length < 3) {\n callback(null, canvas);\n return;\n }\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(canvas.width, 0);\n ctx.lineTo(canvas.width, canvas.height);\n ctx.lineTo(0, canvas.height);\n ctx.lineTo(0, 0);\n ctx.lineTo(path[0].x + 1, path[0].y + 1);\n path.slice(1).forEach(({ x, y }) => ctx.lineTo(x + 1, y + 1));\n ctx.lineTo(path[0].x + 1, path[0].y + 1);\n ctx.lineTo(0, 0);\n ctx.closePath();\n ctx.clip('evenodd');\n ctx.globalCompositeOperation = 'destination-out';\n ctx.fill();\n if (crop) {\n const xAxis = path.map(({ x }) => x + 1);\n const yAxis = path.map(({ y }) => y + 1);\n const [minX, minY] = [Math.min.apply(null, xAxis), Math.min.apply(null, yAxis)];\n const [maxX, maxY] = [Math.max.apply(null, xAxis), Math.max.apply(null, yAxis)];\n const [width, height] = [maxX - minX, maxY - minY];\n const imageData = ctx.getImageData(minX, minY, width, height);\n canvas.width = width;\n canvas.height = height;\n ctx.putImageData(imageData, 0, 0);\n }\n callback(null, canvas);\n } catch (err) {\n callback(err instanceof Error ? err : new Error(String(err)), canvas);\n }\n };\n image.src = src;\n}\n","import { Point, roundPointCoordinates, Size, touchOrMouseEvent } from './helpers';\n\nexport class SVGHelper {\n public getSvgElement: () => SVGSVGElement | null | undefined;\n constructor(getSvgElement: () => SVGSVGElement | null | undefined) {\n this.getSvgElement = getSvgElement;\n }\n getSvg() {\n const svg = this.getSvgElement();\n if (!svg) throw new Error('SVG is null');\n return svg;\n }\n getCTM() {\n const svg = this.getSvg();\n let ctm = svg.getCTM();\n if (ctm === null) {\n const svgChild = svg.querySelector('polyline');\n const matrix = svgChild?.getCTM();\n if (matrix) {\n matrix.f = 0;\n ctm = matrix;\n }\n }\n if (!ctm) throw new Error('CTM is null');\n return ctm;\n }\n getViewboxSize() {\n return this.getSvg().viewBox.baseVal;\n }\n getRealSize(): Size {\n // Firefox have problems with SVGSVGElement.width.baseVal.value\n return {\n width: this.getSvg().clientWidth,\n height: this.getSvg().clientHeight\n };\n }\n getViewboxOffset(): Point {\n const svg = this.getSvg();\n const { width: rWidth, height: rHeight } = this.getRealSize();\n const { width: vWidth, height: vHeight } = this.getViewboxSize();\n const point = Object.assign(svg.createSVGPoint(), {\n x: rWidth,\n y: rHeight\n });\n const ctm = this.getCTM();\n const { x, y } = point.matrixTransform(ctm.inverse());\n // only for preserveAspectRatio=\"xMidYMid meet\" !!!\n return {\n x: x - vWidth,\n y: y - vHeight\n };\n }\n convertViewboxPointsToReal(points: Point[]): Point[] {\n const svg = this.getSvg();\n const ctm = this.getCTM();\n return points.map(({ x, y }) => {\n const p = Object.assign(svg.createSVGPoint(), { x, y }).matrixTransform(ctm);\n return roundPointCoordinates(p);\n });\n }\n convertRealPointsToViewbox(points: Point[]): Point[] {\n const svg = this.getSvg();\n const ctm = this.getCTM().inverse();\n return points.map(({ x, y }) => {\n const p = Object.assign(svg.createSVGPoint(), { x, y }).matrixTransform(ctm);\n return roundPointCoordinates(p, 1e3);\n });\n }\n getBorderPoints(repeatFirst = true) {\n const { width, height } = this.getViewboxSize();\n const { x: offsetX, y: offsetY } = this.getViewboxOffset();\n const arr: Point[] = [\n { x: -offsetX, y: -offsetY },\n { x: width + offsetX, y: -offsetY },\n { x: width + offsetX, y: height + offsetY },\n { x: -offsetX, y: height + offsetY }\n ];\n if (repeatFirst) {\n arr.push({ x: -offsetX, y: -offsetY });\n }\n return arr;\n }\n isAboveTheBorder({ x, y }: Point) {\n const { width, height } = this.getViewboxSize();\n const { x: offsetX, y: offsetY } = this.getViewboxOffset();\n return x < -offsetX || x > width + offsetX || y < -offsetY || y > height + offsetY;\n }\n getMouseCoordinates(event: touchOrMouseEvent<SVGSVGElement>): Point {\n const e = event as React.MouseEvent<SVGSVGElement, MouseEvent> &\n React.TouchEvent<SVGSVGElement>;\n const { clientX, clientY } =\n e.changedTouches && e.touches ? e.changedTouches[0] || e.touches[0] : e;\n const svg = this.getSvg();\n const ctm = svg.getScreenCTM();\n if (!ctm) throw new Error('ScreenCTM is null');\n const point = svg.createSVGPoint();\n point.x = clientX;\n point.y = clientY;\n const { x, y } = point.matrixTransform(ctm.inverse());\n return { x, y };\n }\n}\n","import React from 'react';\nimport { SVGHelper } from './SVGHelpers';\n\nimport { Point, Vector, touchOrMouseEvent } from './helpers';\n\nexport interface WithDraggableProps {\n draggable: boolean;\n onDragStart?: (arg: Point & Vector) => void;\n onDrag?: (arg: Vector) => void;\n onDragEnd?: (arg: Point) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const withDraggable = <P extends object>(Component: React.ComponentType<P>) =>\n class DraggableHOC extends React.Component<P & WithDraggableProps> {\n public ref = React.createRef<SVGSVGElement>();\n public svg = new SVGHelper(() => this.ref?.current?.ownerSVGElement);\n public dragLastPosition: null | Point = null;\n public wasMoved = false;\n render() {\n const { draggable, onDrag, onDragStart, onDragEnd, ...rest } = this.props;\n return <Component ref={this.ref} {...(rest as P)} draggable={draggable} />;\n }\n componentDidUpdate(prevProps: WithDraggableProps) {\n if (prevProps.draggable && !this.props.draggable) {\n // cleanup after props.draggable changed to false\n if (this.dragLastPosition && this.wasMoved) {\n if (this.props.onDragEnd) {\n this.props.onDragEnd({\n x: this.dragLastPosition.x,\n y: this.dragLastPosition.y\n });\n }\n this.dragLastPosition = null;\n this.wasMoved = false;\n }\n }\n }\n componentDidMount() {\n window.addEventListener('mousedown', this.onMouseTouchDown, true);\n window.addEventListener('mousemove', this.onMouseTouchMove, true);\n window.addEventListener('mouseup', this.onMouseTouchUp, true);\n window.addEventListener('touchstart', this.onMouseTouchDown, true);\n window.addEventListener('touchmove', this.onMouseTouchMove, true);\n window.addEventListener('touchend', this.onMouseTouchUp, true);\n }\n componentWillUnmount() {\n window.removeEventListener('mousedown', this.onMouseTouchDown);\n window.removeEventListener('mousemove', this.onMouseTouchMove);\n window.removeEventListener('mouseup', this.onMouseTouchUp);\n window.removeEventListener('touchstart', this.onMouseTouchDown);\n window.removeEventListener('touchmove', this.onMouseTouchMove);\n window.removeEventListener('touchend', this.onMouseTouchUp);\n }\n getMousePosition(ev: TouchEvent | MouseEvent) {\n const e = (ev as unknown) as touchOrMouseEvent<SVGSVGElement>;\n return this.svg.getMouseCoordinates(e);\n }\n onMouseTouchDown = (e: TouchEvent | MouseEvent) => {\n if (e.target === this.ref.current && this.props.draggable) {\n e.stopImmediatePropagation();\n e.preventDefault();\n const target = e.target as EventTarget & SVGSVGElement;\n this.dragLastPosition = this.getMousePosition(e);\n if (target.ownerSVGElement) {\n target.ownerSVGElement.focus({ preventScroll: true });\n }\n }\n };\n onMouseTouchMove = (e: TouchEvent | MouseEvent) => {\n if (this.dragLastPosition) {\n e.stopImmediatePropagation();\n e.preventDefault();\n const { x, y } = this.getMousePosition(e);\n const dx = x - this.dragLastPosition.x;\n const dy = y - this.dragLastPosition.y;\n if (!this.wasMoved && this.props.onDragStart) {\n this.props.onDragStart({\n x: this.dragLastPosition.x,\n y: this.dragLastPosition.y,\n dx,\n dy\n });\n }\n if (this.props.onDrag) {\n this.props.onDrag({ dx, dy });\n }\n this.dragLastPosition = { x, y };\n this.wasMoved = true;\n }\n };\n onMouseTouchUp = (e: TouchEvent | MouseEvent) => {\n if (this.dragLastPosition && this.wasMoved) {\n e.stopImmediatePropagation();\n e.preventDefault();\n if (e instanceof MouseEvent || !e.touches) {\n window.addEventListener('click', (e) => e.stopPropagation(), {\n capture: true,\n once: true\n });\n }\n if (this.props.onDragEnd) {\n this.props.onDragEnd({\n x: this.dragLastPosition.x,\n y: this.dragLastPosition.y\n });\n }\n }\n this.dragLastPosition = null;\n this.wasMoved = false;\n };\n };\n","import React from 'react';\nimport { withDraggable } from './withDraggable';\nimport { Point } from './helpers';\n\nexport interface SVGPolylineProps {\n path: Point[];\n animate: boolean;\n draggable: boolean;\n}\n\nexport const SVGPolyline = withDraggable(\n React.forwardRef<SVGPolylineElement, SVGPolylineProps>(function SVGPolyline(\n { path, animate, draggable },\n ref\n ) {\n return (\n <polyline\n ref={ref}\n style={{ cursor: draggable ? 'move' : '' }}\n points={path.map(({ x, y }) => `${x},${y}`).join(' ')}\n fill=\"rgba(0,0,0,0)\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n shapeRendering=\"geometricPrecision\"\n strokeDasharray=\"3\"\n strokeDashoffset=\"0\"\n vectorEffect=\"non-scaling-stroke\"\n >\n {animate && (\n <animate\n attributeName=\"stroke-dashoffset\"\n values=\"0;1000;0\"\n dur=\"100s\"\n repeatCount=\"indefinite\"\n />\n )}\n </polyline>\n );\n })\n);\n","import React from 'react';\nimport { Point } from './helpers';\n\nexport interface SVGPolygonProps {\n path: Point[];\n}\n\nexport function SVGPolygon({ path }: SVGPolygonProps) {\n return (\n <polygon\n style={{\n pointerEvents: 'none',\n transform: 'translate(-1px, -1px)'\n }}\n points={path.map(({ x, y }) => `${x},${y}`).join(' ')}\n fill=\"rgba(0, 0, 0, 0.5)\"\n fillRule=\"evenodd\"\n stroke=\"null\"\n shapeRendering=\"geometricPrecision\"\n />\n );\n}\n","import React from 'react';\nimport { withDraggable } from './withDraggable';\nimport { Point } from './helpers';\n\nexport interface SVGPointProps extends Point {\n style: React.CSSProperties;\n draggable: boolean;\n onClickTouchEvent: (e: React.MouseEvent | React.TouchEvent) => void;\n}\n\nexport const SVGPoint = withDraggable(\n React.forwardRef<SVGRectElement, SVGPointProps>(function SVGPoint(\n { x, y, onClickTouchEvent, draggable, style },\n ref\n ) {\n const { cursor = draggable ? 'move' : 'default', ...rest } = style;\n return (\n <rect\n style={{\n cursor,\n ...rest\n }}\n ref={ref}\n x={x - 10}\n y={y - 10}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onClickTouchEvent(e);\n }}\n onTouchEnd={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onClickTouchEvent(e);\n }}\n width=\"20px\"\n height=\"20\"\n fill=\"rgba(0, 0, 0, 0)\"\n stroke=\"white\"\n strokeWidth=\"1.25\"\n vectorEffect=\"non-scaling-stroke\"\n // vectorEffect=\"non-scaling-size\" will be featured in SVG 2.0!\n />\n );\n })\n);\n","import { arePointListEqual, arePointsEqual, Point } from './helpers';\n\nexport enum pathActions {\n ADD = 'ADD',\n DELETE = 'DELETE',\n MODIFY = 'MODIFY',\n MOVE = 'MOVE',\n RESET = 'RESET',\n CHANGE = 'CHANGE'\n}\n\nexport type pathReducerAction =\n | { type: pathActions.ADD; payload: Point }\n | { type: pathActions.DELETE; payload: number }\n | { type: pathActions.MODIFY; payload: { index: number } & Point }\n | { type: pathActions.MOVE; payload: Point }\n | { type: pathActions.RESET }\n | { type: pathActions.CHANGE; payload: Point[] };\nexport interface PathState {\n points: Point[];\n closed: boolean;\n}\n\nexport function pathReducer(state: PathState, action: pathReducerAction): [PathState, boolean] {\n const length = state.points.length;\n switch (action.type) {\n case pathActions.ADD: {\n if (state.closed) return [state, false];\n if (\n (length > 0 && arePointsEqual(state.points[length - 1], action.payload)) ||\n (length > 1 && arePointsEqual(state.points[length - 2], action.payload))\n ) {\n return [state, false];\n }\n const needToBeClosed = length > 2 && arePointsEqual(state.points[0], action.payload);\n if (needToBeClosed) return [{ points: [...state.points], closed: true }, true];\n return [{ points: [...state.points, action.payload], closed: false }, true];\n }\n case pathActions.DELETE: {\n return [\n {\n points: [...state.points.filter((_, idx) => action.payload !== idx)],\n closed: length > 4 && state.closed\n },\n true\n ];\n }\n case pathActions.MODIFY: {\n const { x: sx, y: sy } = state.points[action.payload.index];\n const newPoints = state.points.map(({ x, y }) => {\n if (x === sx && y === sy) {\n return {\n x: action.payload.x,\n y: action.payload.y\n };\n }\n return { x, y };\n });\n return [\n { points: newPoints, closed: state.closed },\n !!(action.payload.x || action.payload.y)\n ];\n }\n case pathActions.MOVE: {\n return [\n {\n points: state.points.map(({ x, y }) => ({\n x: x + action.payload.x,\n y: y + action.payload.y\n })),\n closed: state.closed\n },\n !!(action.payload.x || action.payload.y)\n ];\n }\n case pathActions.CHANGE: {\n const wasModified = !arePointListEqual(action.payload, state.points);\n return [\n {\n points: action.payload,\n closed: wasModified ? action.payload.length > 2 : state.closed\n },\n wasModified\n ];\n }\n case pathActions.RESET:\n return [{ points: [], closed: false }, !!state.points.length];\n default:\n return [state, false];\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SVGPolyline } from './SVGPolyline';\nimport { SVGPolygon } from './SVGPolygon';\nimport { SVGPoint } from './SVGPoint';\nimport { SVGHelper } from './SVGHelpers';\n\nimport {\n roundPointCoordinates,\n arePointListEqual,\n objectToClassName,\n getClippedImageCanvas,\n Point,\n Vector,\n touchOrMouseEvent,\n Size,\n approximateToAnAngleMultiplicity,\n approximateToAngles,\n calculateAnglesBeetwenPoints,\n findPointByPosition\n} from './helpers';\n\nimport { pathReducer, pathActions, pathReducerAction, PathState } from './pathReducer';\n\nexport interface ReactLassoProps {\n src: string;\n value: Point[];\n style: React.CSSProperties;\n viewBox: Size;\n disabled: boolean;\n imageStyle: React.CSSProperties;\n onImageLoad: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n onImageError: (e: React.SyntheticEvent<HTMLImageElement, Event>) => void;\n onChange?: (path: Point[]) => void;\n onComplete?: (path: Point[]) => void;\n imageAlt?: string;\n crossOrigin?: 'anonymous' | 'use-credentials' | '';\n}\n\nexport interface ReactLassoState {\n path: PathState;\n pointer: Point;\n}\n\nexport class ReactLasso extends React.Component<ReactLassoProps, ReactLassoState> {\n public state: ReactLassoState;\n public imageRef = React.createRef<HTMLImageElement>();\n public svgRef = React.createRef<SVGSVGElement>();\n public svg = new SVGHelper(() => this.svgRef?.current);\n public angles: number[] = [];\n public path: PathState = {\n points: [],\n closed: false\n };\n public lastEmittedPoints: Point[] = [];\n public lastUpdatedPoints: Point[] = [];\n public imgError = false;\n public setPathFromPropsOnMediaLoad = true;\n constructor(props: ReactLassoProps) {\n super(props);\n this.state = {\n path: {\n points: [],\n closed: false\n },\n pointer: {\n x: props.viewBox.width / 2,\n y: props.viewBox.width / 2\n }\n };\n }\n render() {\n return (\n <div\n className={objectToClassName({\n ReactFreeSelect__Component: true,\n ReactFreeSelect__Closed: this.state.path.closed,\n ReactFreeSelect__Disabled: this.props.disabled\n })}\n style={{\n display: 'inline-block',\n position: 'relative',\n margin: '0',\n padding: '0',\n fontSize: '0',\n cursor: this.props.disabled ? 'not-allowed' : 'default',\n ...this.props.style\n }}\n >\n <img\n ref={this.imageRef}\n src={this.props.src}\n alt={this.props.imageAlt}\n crossOrigin={this.props.crossOrigin}\n style={this.props.imageStyle}\n onLoad={this.onMediaLoaded}\n onError={this.onMediaError}\n />\n <svg\n ref={this.svgRef}\n style={{\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n userSelect: 'none',\n touchAction: 'none'\n }}\n viewBox={`0 0 ${this.props.viewBox.width} ${this.props.viewBox.height}`}\n onMouseMove={this.onMouseTouchMove}\n onTouchMove={this.onMouseTouchMove}\n onClick={this.onClick}\n onTouchEnd={this.onTouchEnd}\n onContextMenu={this.onContextMenu}\n onMouseLeave={this.hidePointer}\n >\n {!!this.state.path.points.length && <SVGPolygon path={this.getPolygonPoints()} />}\n <SVGPolyline\n draggable={this.state.path.closed && !this.props.disabled}\n onDrag={this.onShapeDrag}\n onDragEnd={this.onDragEnd}\n animate={!this.props.disabled}\n path={this.getPolylinePoints()}\n />\n {this.getRoundedPoints().map(({ x, y }, idx) => (\n <SVGPoint\n key={idx}\n x={x}\n y={y}\n draggable={!this.props.disabled}\n style={{\n cursor:\n !idx && this.state.path.points.length > 2 && !this.state.path.closed\n ? 'pointer'\n : undefined\n }}\n onDrag={({ dx, dy }) => this.onPointDrag(idx, { dx, dy })}\n onDragEnd={this.onDragEnd}\n onClickTouchEvent={() => this.onPointClick(idx)}\n />\n ))}\n </svg>\n </div>\n );\n }\n componentDidUpdate(prevProps: ReactLassoProps) {\n if (!prevProps.disabled && this.props.disabled && !this.path.closed) {\n this.hidePointer();\n }\n if (prevProps.src && prevProps.src !== this.props.src) {\n this.dispatchPathAction({ type: pathActions.RESET });\n } else if (!arePointListEqual(prevProps.value, this.props.value)) {\n if (this.isLoaded()) {\n this.setPathStateFromProps();\n } else {\n this.setPathFromPropsOnMediaLoad = true;\n }\n }\n }\n convertPoints(points: Point[]): Point[] {\n const aspectRatio = this.getAspectRatio();\n return this.svg.convertViewboxPointsToReal(points).map(({ x, y }) => ({\n x: Math.round(x / aspectRatio.x),\n y: Math.round(y / aspectRatio.y)\n }));\n }\n checkIfPathUpdated(wasClosedBefore: boolean) {\n if (this.path.closed || wasClosedBefore) {\n const convertedPoints = this.convertPoints(this.path.points);\n if (!arePointListEqual(convertedPoints, this.lastUpdatedPoints)) {\n this.emitOnComplete(convertedPoints);\n this.lastUpdatedPoints = convertedPoints.map(({ x, y }) => ({ x, y }));\n }\n }\n }\n emitOnChange({ points }: PathState) {\n if (this.props.onChange) {\n const convertedPoints = this.convertPoints(points);\n this.lastEmittedPoints = convertedPoints;\n this.props.onChange(convertedPoints);\n }\n }\n emitOnComplete(convertedPoints: Point[]) {\n if (this.props.onComplete) {\n this.props.onComplete(convertedPoints);\n }\n }\n setPointer({ x, y }: Point, force = false) {\n if (force || !this.props.disabled) {\n this.setState({\n path: this.path,\n pointer: { x, y }\n });\n }\n }\n hidePointer = () => {\n const lastPoint = this.path.points[this.path.points.length - 1] || {\n x: 0,\n y: 0\n };\n this.setPointer({ ...lastPoint }, true); // tricky way to hide pointer line\n };\n dispatchPathAction(action: pathReducerAction & { pointer?: Point }) {\n const wasClosedBefore = this.path.closed;\n const [newPathState, wasModified] = pathReducer(this.path, action);\n newPathState.points = newPathState.points.map((point) => roundPointCoordinates(point, 1e3));\n if (wasModified) {\n this.path = newPathState;\n this.setState({\n pointer: action.pointer || this.path.points[this.path.points.length - 1] || { x: 0, y: 0 },\n path: newPathState\n });\n this.angles = calculateAnglesBeetwenPoints(newPathState.points);\n this.emitOnChange(newPathState);\n if (![pathActions.MODIFY, pathActions.MOVE].includes(action.type)) {\n this.checkIfPathUpdated(wasClosedBefore); // optimized version of onChange\n }\n }\n }\n isLoaded() {\n if (this.imgError || !this.svgRef.current) return false;\n const svg = this.svgRef.current;\n return !!(svg.width.baseVal.value && svg.height.baseVal.value);\n }\n getAspectRatio(): Point {\n if (!this.imageRef.current) {\n return { x: NaN, y: NaN };\n }\n // original * aspectRatio = size\n return {\n x: this.imageRef.current.clientWidth / this.imageRef.current.naturalWidth,\n y: this.imageRef.current.clientHeight / this.imageRef.current.naturalHeight\n };\n }\n setPathStateFromProps() {\n if (arePointListEqual(this.lastEmittedPoints, this.props.value)) return;\n const aspectRatio = this.getAspectRatio();\n const value = this.svg.convertRealPointsToViewbox(\n this.props.value.map(({ x, y }) => ({\n x: x * aspectRatio.x,\n y: y * aspectRatio.y\n }))\n );\n this.dispatchPathAction({\n type: pathActions.CHANGE,\n payload: value\n });\n }\n getRoundedPoints() {\n return this.state.path.points.map((point) => roundPointCoordinates(point));\n }\n getBorder(): Point[] {\n return this.svg\n .getBorderPoints()\n .map((point) => roundPointCoordinates(point))\n .map(({ x, y }) => ({ x: x - 1, y: y + 1 })); // fishy bug here so i have to margin area\n }\n getPolygonPoints(): Point[] {\n const roundedPoints = this.getRoundedPoints();\n const border = this.getBorder();\n return this.state.path.closed\n ? [...border, ...roundedPoints, roundedPoints[0], border[0]]\n : border;\n }\n getPolylinePoints(): Point[] {\n const roundedPoints = this.getRoundedPoints();\n return roundedPoints.concat(\n this.state.path.closed ? roundedPoints[0] : roundPointCoordinates(this.state.pointer)\n );\n }\n getMousePosition(\n e: touchOrMouseEvent<SVGSVGElement>,\n lookupForNearlyPoints = true,\n lookupForApproximation = true\n ): [Point, { point: Point; index: number }] {\n let pointer = this.svg.getMouseCoordinates(e);\n if (lookupForApproximation) {\n const ctrlCmdPressed = navigator.platform.includes('Mac') ? e.metaKey : e.ctrlKey;\n const lastPoint = this.path.points[this.path.points.length - 1];\n // straighten path from last point\n if (ctrlCmdPressed && lastPoint) {\n if (e.shiftKey) {\n // lookup for parallel lines\n pointer = approximateToAngles(lastPoint, pointer, this.angles);\n } else {\n // angle approximation to 15 deg\n pointer = approximateToAnAngleMultiplicity(lastPoint, pointer, Math.PI / 12);\n }\n }\n }\n const { point, index } = findPointByPosition(this.path.points, pointer, 10);\n if (lookupForNearlyPoints && index > -1) {\n pointer = { ...point };\n }\n return [pointer, { point, index }];\n }\n // Events\n onShapeDrag = ({ dx, dy }: Vector) => {\n const newPath = this.path.points.map(({ x, y }) => ({\n x: x + dx,\n y: y + dy\n }));\n if (!newPath.some((point) => this.svg.isAboveTheBorder(point))) {\n this.dispatchPathAction({\n type: pathActions.MOVE,\n payload: { x: dx, y: dy }\n });\n }\n };\n onPointDrag = (idx: number, { dx, dy }: Vector) => {\n const point = { ...this.path.points[idx] };\n point.x += dx;\n point.y += dy;\n if (!this.svg.isAboveTheBorder(point)) {\n this.dispatchPathAction({\n type: pathActions.MODIFY,\n payload: { ...point, index: idx }\n });\n }\n };\n onPointClick = (idx: number) => {\n if (this.isLoaded() && !this.props.disabled && !this.path.closed) {\n this.dispatchPathAction({\n type: pathActions.ADD,\n payload: this.path.points[idx]\n });\n }\n };\n onDragEnd = () => {\n this.checkIfPathUpdated(false);\n };\n onMediaLoaded = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (this.setPathFromPropsOnMediaLoad) {\n this.setPathStateFromProps();\n this.setPathFromPropsOnMediaLoad = false;\n }\n this.imgError = false;\n this.props.onImageLoad(e);\n };\n onMediaError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n this.dispatchPathAction({ type: pathActions.RESET });\n this.imgError = true;\n this.props.onImageError(e);\n };\n onClickTouchEvent = (e: touchOrMouseEvent<SVGSVGElement>) => {\n if (this.isLoaded() && !this.props.disabled) {\n if (this.path.closed) {\n if (e.target === this.svgRef.current) {\n this.dispatchPathAction({\n type: pathActions.RESET\n });\n }\n return;\n }\n const [pointer] = this.getMousePosition(e);\n if (!this.svg.isAboveTheBorder(pointer)) {\n this.dispatchPathAction({\n type: pathActions.ADD,\n payload: roundPointCoordinates(pointer, 1e3),\n pointer\n });\n } else {\n this.hidePointer();\n }\n }\n };\n onClick = (e: React.MouseEvent<SVGSVGElement, MouseEvent>) => {\n this.onClickTouchEvent(e);\n };\n onTouchEnd = (e: React.TouchEvent<SVGSVGElement>) => {\n if (e.cancelable) {\n e.preventDefault();\n this.onClickTouchEvent(e);\n }\n this.hidePointer();\n };\n onMouseTouchMove = (e: touchOrMouseEvent<SVGSVGElement>) => {\n if (this.isLoaded()) {\n const [pointer] = this.getMousePosition(e);\n this.setPointer(pointer);\n }\n };\n onContextMenu = (e: React.MouseEvent<SVGSVGElement, MouseEvent>) => {\n if (this.isLoaded()) {\n e.preventDefault();\n if (!this.props.disabled && !this.path.closed) {\n const [pointer, { index }] = this.getMousePosition(e);\n if (index > -1) {\n this.dispatchPathAction({\n type: pathActions.DELETE,\n payload: index,\n pointer\n });\n } else {\n this.setPointer(pointer);\n }\n }\n }\n };\n static propTypes = {\n value: PropTypes.arrayOf(\n PropTypes.exact({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n })\n ),\n style: PropTypes.shape({}),\n viewBox: PropTypes.exact({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onComplete: PropTypes.func,\n src: PropTypes.string.isRequired,\n imageAlt: PropTypes.string,\n crossOrigin: PropTypes.string,\n imageStyle: PropTypes.shape({}),\n onImageLoad: PropTypes.func,\n onImageError: PropTypes.func\n };\n static defaultProps = {\n value: [],\n style: {},\n imageStyle: {},\n viewBox: { width: 1e3, height: 1e3 },\n disabled: false,\n onImageError: Function.prototype,\n onImageLoad: Function.prototype\n };\n}\n\nexport { ReactLasso as default, ReactLasso as Component, getClippedImageCanvas as getCanvas };\n"],"names":["React","PropTypes"],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { Point } from './helpers';
2
- export declare enum pathActions {
3
- ADD = "ADD",
4
- DELETE = "DELETE",
5
- MODIFY = "MODIFY",
6
- MOVE = "MOVE",
7
- RESET = "RESET",
8
- CHANGE = "CHANGE"
9
- }
10
- export declare type pathReducerAction = {
11
- type: pathActions.ADD;
12
- payload: Point;
13
- } | {
14
- type: pathActions.DELETE;
15
- payload: number;
16
- } | {
17
- type: pathActions.MODIFY;
18
- payload: {
19
- index: number;
20
- } & Point;
21
- } | {
22
- type: pathActions.MOVE;
23
- payload: Point;
24
- } | {
25
- type: pathActions.RESET;
26
- } | {
27
- type: pathActions.CHANGE;
28
- payload: Point[];
29
- };
30
- export interface PathState {
31
- points: Point[];
32
- closed: boolean;
33
- }
34
- export declare function pathReducer(state: PathState, action: pathReducerAction): [PathState, boolean];
@@ -1,78 +0,0 @@
1
- import React from 'react';
2
- import { SVGHelper } from './SVGHelpers';
3
- import { Point, Vector } from './helpers';
4
- export interface WithDraggableProps {
5
- draggable: boolean;
6
- onDragStart?: (arg: Point & Vector) => void;
7
- onDrag?: (arg: Vector) => void;
8
- onDragEnd?: (arg: Point) => void;
9
- }
10
- export declare const withDraggable: <P extends object>(Component: React.ComponentType<P>) => {
11
- new (props: (P & WithDraggableProps) | Readonly<P & WithDraggableProps>): {
12
- ref: React.RefObject<SVGSVGElement>;
13
- svg: SVGHelper;
14
- dragLastPosition: null | Point;
15
- wasMoved: boolean;
16
- render(): JSX.Element;
17
- componentDidUpdate(prevProps: WithDraggableProps): void;
18
- componentDidMount(): void;
19
- componentWillUnmount(): void;
20
- getMousePosition(ev: TouchEvent | MouseEvent): Point;
21
- onMouseTouchDown: (e: TouchEvent | MouseEvent) => void;
22
- onMouseTouchMove: (e: TouchEvent | MouseEvent) => void;
23
- onMouseTouchUp: (e: TouchEvent | MouseEvent) => void;
24
- context: any;
25
- setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P & WithDraggableProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
26
- forceUpdate(callback?: (() => void) | undefined): void;
27
- readonly props: Readonly<P & WithDraggableProps> & Readonly<{
28
- children?: React.ReactNode;
29
- }>;
30
- state: Readonly<{}>;
31
- refs: {
32
- [key: string]: React.ReactInstance;
33
- };
34
- shouldComponentUpdate?(nextProps: Readonly<P & WithDraggableProps>, nextState: Readonly<{}>, nextContext: any): boolean;
35
- componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
36
- getSnapshotBeforeUpdate?(prevProps: Readonly<P & WithDraggableProps>, prevState: Readonly<{}>): any;
37
- componentWillMount?(): void;
38
- UNSAFE_componentWillMount?(): void;
39
- componentWillReceiveProps?(nextProps: Readonly<P & WithDraggableProps>, nextContext: any): void;
40
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P & WithDraggableProps>, nextContext: any): void;
41
- componentWillUpdate?(nextProps: Readonly<P & WithDraggableProps>, nextState: Readonly<{}>, nextContext: any): void;
42
- UNSAFE_componentWillUpdate?(nextProps: Readonly<P & WithDraggableProps>, nextState: Readonly<{}>, nextContext: any): void;
43
- };
44
- new (props: P & WithDraggableProps, context: any): {
45
- ref: React.RefObject<SVGSVGElement>;
46
- svg: SVGHelper;
47
- dragLastPosition: null | Point;
48
- wasMoved: boolean;
49
- render(): JSX.Element;
50
- componentDidUpdate(prevProps: WithDraggableProps): void;
51
- componentDidMount(): void;
52
- componentWillUnmount(): void;
53
- getMousePosition(ev: TouchEvent | MouseEvent): Point;
54
- onMouseTouchDown: (e: TouchEvent | MouseEvent) => void;
55
- onMouseTouchMove: (e: TouchEvent | MouseEvent) => void;
56
- onMouseTouchUp: (e: TouchEvent | MouseEvent) => void;
57
- context: any;
58
- setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P & WithDraggableProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
59
- forceUpdate(callback?: (() => void) | undefined): void;
60
- readonly props: Readonly<P & WithDraggableProps> & Readonly<{
61
- children?: React.ReactNode;
62
- }>;
63
- state: Readonly<{}>;
64
- refs: {
65
- [key: string]: React.ReactInstance;
66
- };
67
- shouldComponentUpdate?(nextProps: Readonly<P & WithDraggableProps>, nextState: Readonly<{}>, nextContext: any): boolean;
68
- componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
69
- getSnapshotBeforeUpdate?(prevProps: Readonly<P & WithDraggableProps>, prevState: Readonly<{}>): any;
70
- componentWillMount?(): void;
71
- UNSAFE_componentWillMount?(): void;
72
- componentWillReceiveProps?(nextProps: Readonly<P & WithDraggableProps>, nextContext: any): void;
73
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P & WithDraggableProps>, nextContext: any): void;
74
- componentWillUpdate?(nextProps: Readonly<P & WithDraggableProps>, nextState: Readonly<{}>, nextContext: any): void;
75
- UNSAFE_componentWillUpdate?(nextProps: Readonly<P & WithDraggableProps>, nextState: Readonly<{}>, nextContext: any): void;
76
- };
77
- contextType?: React.Context<any> | undefined;
78
- };