Files
TheGame/packages/metamaps/components/Line.tsx
Pacien Boisson 8c99b5df50 Merge dependencies (#415)
* Bump @chakra-ui/icons from 1.0.3 to 1.0.6

Bumps [@chakra-ui/icons](https://github.com/chakra-ui/chakra-ui) from 1.0.3 to 1.0.6.
- [Release notes](https://github.com/chakra-ui/chakra-ui/releases)
- [Commits](https://github.com/chakra-ui/chakra-ui/compare/@chakra-ui/icons@1.0.3...@chakra-ui/icons@1.0.6)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump tsdx from 0.13.3 to 0.14.1

Bumps [tsdx](https://github.com/formium/tsdx) from 0.13.3 to 0.14.1.
- [Release notes](https://github.com/formium/tsdx/releases)
- [Commits](https://github.com/formium/tsdx/compare/v0.13.3...v0.14.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump @types/react from 16.9.52 to 17.0.3

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.52 to 17.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump express-graphql from 0.11.0 to 0.12.0

Bumps [express-graphql](https://github.com/graphql/express-graphql) from 0.11.0 to 0.12.0.
- [Release notes](https://github.com/graphql/express-graphql/releases)
- [Commits](https://github.com/graphql/express-graphql/compare/v0.11.0...v0.12.0)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump eslint-plugin-simple-import-sort from 5.0.3 to 7.0.0

Bumps [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort) from 5.0.3 to 7.0.0.
- [Release notes](https://github.com/lydell/eslint-plugin-simple-import-sort/releases)
- [Changelog](https://github.com/lydell/eslint-plugin-simple-import-sort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lydell/eslint-plugin-simple-import-sort/compare/v5.0.3...v7.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump eslint-plugin-jsx-a11y from 6.3.1 to 6.4.1

Bumps [eslint-plugin-jsx-a11y](https://github.com/evcohen/eslint-plugin-jsx-a11y) from 6.3.1 to 6.4.1.
- [Release notes](https://github.com/evcohen/eslint-plugin-jsx-a11y/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evcohen/eslint-plugin-jsx-a11y/compare/v6.3.1...v6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump eslint-plugin-jest from 24.1.3 to 24.3.1

Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 24.1.3 to 24.3.1.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v24.1.3...v24.3.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump eslint-import-resolver-typescript from 2.2.1 to 2.4.0

Bumps [eslint-import-resolver-typescript](https://github.com/alexgorbatchev/eslint-import-resolver-typescript) from 2.2.1 to 2.4.0.
- [Release notes](https://github.com/alexgorbatchev/eslint-import-resolver-typescript/releases)
- [Changelog](https://github.com/alexgorbatchev/eslint-import-resolver-typescript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexgorbatchev/eslint-import-resolver-typescript/compare/v2.2.1...v2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>

* Bump eslint-config-airbnb-typescript from 9.0.0 to 12.3.1

Bumps [eslint-config-airbnb-typescript](https://github.com/iamturns/eslint-config-airbnb-typescript) from 9.0.0 to 12.3.1.
- [Release notes](https://github.com/iamturns/eslint-config-airbnb-typescript/releases)
- [Changelog](https://github.com/iamturns/eslint-config-airbnb-typescript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/iamturns/eslint-config-airbnb-typescript/compare/v9.0.0...v12.3.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Fix eslint imports

* Fix tslint

* lint!

* lint

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-16 14:45:28 +04:00

118 lines
2.9 KiB
TypeScript

import { FC } from 'react';
import { useDrag } from 'react-dnd';
import { connect } from 'react-redux';
import { LineContainer } from '../styles/Mapping';
import { LineColor } from '../styles/Styles';
export interface LineProps {
dispatch: any;
id: number;
type: string;
left: number;
top: number;
width: number;
height: number;
x1: number;
y1: number;
x2: number;
y2: number;
createLine: boolean;
menuX: number;
menuY: number;
mouseX: number;
mouseY: number;
}
export const LineComponent: FC<LineProps> = ({ dispatch, menuX, menuY, mouseX, mouseY, createLine, id, type, left, top, width, height, x1, y1, x2, y2 }) => {
const [, drag] = useDrag({ item: { id, type, left, top } })
if (createLine) {
let rleft: number; let rtop: number; let rwidth: number; let rheight: number;
if (mouseX > menuX) {
rleft = menuX;
rwidth = mouseX - menuX + 5;
} else {
rleft = mouseX - 5;
rwidth = menuX - mouseX + 5;
}
if (mouseY > menuY) {
rtop = menuY;
rheight = mouseY - menuY + 5;
} else {
rtop = mouseY - 5;
rheight = menuY - mouseY + 5;
}
const X1 = x1;
const X2 = rwidth;
let Y1 = y1;
let Y2 = rheight;
if (mouseX > menuX && mouseY < menuY) {
Y1 = rheight;
Y2 = 0;
}
if (mouseX < menuX && mouseY > menuY) {
Y1 = rheight;
Y2 = 0;
}
return(
<LineContainer
ref={drag}
style={{ left: rleft, top: rtop, width: rwidth, height: rheight }}
data-id={id}
data-type={type}
onClick={(e: any) => dispatch({
type: 'DRAW_LINE',
index: id,
rleft,
rtop,
rwidth,
rheight,
x1: X1,
x2: X2,
y1: Y1,
y2: Y2,
})}
>
<polyline
points={`${X1},${Y1} ${X2},${Y2}`}
style={{ fill: 'none', stroke: LineColor, strokeWidth: 5 }}
/>
</LineContainer>
)
}
return (
<LineContainer
ref={drag}
style={{ left, top, width, height }}
data-id={id}
data-type={type}
>
<polyline
points={`${x1},${y1} ${x2},${y2}`}
style={{ fill: 'none', stroke: LineColor, strokeWidth: 5 }}
/>
</LineContainer>
)
}
export const Line = connect(
(state: any) => ({
createLine: state.createLine,
menuX: state.menuX,
menuY: state.menuY,
mouseX: state.mouseX,
mouseY: state.mouseY,
}),
)(LineComponent);