aboutsummaryrefslogtreecommitdiff
path: root/src/components/common
diff options
context:
space:
mode:
authorIvan Chen <ivan@tagg.id>2021-05-25 17:13:12 -0400
committerIvan Chen <ivan@tagg.id>2021-05-25 17:13:12 -0400
commit438ac0d1f82a95367b374b56f9c61a7a5802735c (patch)
treef262ba1f8678ef8d5dc32a9595707178a163da3b /src/components/common
parentfd223276632af429e2dead7abc9149d812c6e4b9 (diff)
Squashed commit of the following:
commit 7711d92c8dab4f00e36ad3bbca9bc202fa313e43 Author: Brian Kim <brian@tagg.id> Date: Tue May 25 17:08:41 2021 -0400 Integrate with layering commit cbd01996ae4784b737fb4b634eb0048bb7d85967 Author: Brian Kim <brian@tagg.id> Date: Tue May 25 16:48:52 2021 -0400 Fix yarn commit 39164064b903df36b7373e177d00c3307a8a311a Author: Brian Kim <brian@tagg.id> Date: Tue May 25 16:46:34 2021 -0400 Add horizontal scroll commit 02841df862aa68dcf615d0264236d9a14b52befe Author: Brian Kim <brian@tagg.id> Date: Tue May 25 15:03:13 2021 -0400 Lint fixes commit 5c6e8e453026005f6621efe751d90c76f457a72f Author: Brian Kim <brian@tagg.id> Date: Tue May 25 14:46:39 2021 -0400 Set boundaries, fix offset calculation, fix length and height calculation to be individual commit 6d27d859fd5364556928e5a2feadad1aff4dc6b9 Author: Brian Kim <brian@tagg.id> Date: Tue May 25 11:32:08 2021 -0400 Pause
Diffstat (limited to 'src/components/common')
-rw-r--r--src/components/common/MomentTags.tsx71
1 files changed, 55 insertions, 16 deletions
diff --git a/src/components/common/MomentTags.tsx b/src/components/common/MomentTags.tsx
index 9a6cd08b..75a81814 100644
--- a/src/components/common/MomentTags.tsx
+++ b/src/components/common/MomentTags.tsx
@@ -17,27 +17,56 @@ const MomentTags: React.FC<MomentTagsProps> = ({
deleteFromList,
}) => {
const [offset, setOffset] = useState([0, 0]);
- const [curStart, setCurStart] = useState([0, 0]);
+ const [curStart, setCurStart] = useState({});
const [imageDimensions, setImageDimensions] = useState([0, 0]);
const [maxZIndex, setMaxZIndex] = useState(1);
+ const editCurStart = (idName: number, coords: number[]) => {
+ setCurStart((prev) => ({...prev, [idName]: coords}));
+ };
+
useEffect(() => {
- imageRef.current.measure((fx, fy, width, height, px, py) => {
- setOffset([px, py]);
- setImageDimensions([width, height]);
- });
+ setTimeout(() => {
+ imageRef.current.measure(
+ (
+ fx: number,
+ fy: number,
+ width: number,
+ height: number,
+ _x: number,
+ _y: number,
+ ) => {
+ setOffset([fx, fy]);
+ setImageDimensions([width, height]);
+ },
+ );
+ }, 250);
}, []);
+ useEffect(() => {}, [curStart]);
+
if (!tags) {
return null;
}
return editing && deleteFromList ? (
<>
- {tags.map((tag) => (
+ {tags.map((tag, index) => (
<Draggable
key={tag.user.id}
- x={imageDimensions[0] / 2 - curStart[0] / 2 + offset[0]}
- y={offset[1] + imageDimensions[1] / 2 - curStart[1] / 2}
+ x={
+ curStart[index]
+ ? (imageDimensions[0] * tag.x) / 100 +
+ offset[0] -
+ curStart[index][0] / 2
+ : (imageDimensions[0] * tag.x) / 100 + offset[0]
+ }
+ y={
+ curStart[index]
+ ? (imageDimensions[1] * tag.y) / 100 +
+ offset[1] -
+ curStart[index][1] / 2
+ : (imageDimensions[1] * tag.y) / 100 + offset[1] + offset[1]
+ }
z={maxZIndex + 1}
minX={offset[0]}
minY={offset[1]}
@@ -51,21 +80,31 @@ const MomentTags: React.FC<MomentTagsProps> = ({
<TaggDraggable
taggedUser={tag.user}
editingView={true}
- deleteFromList={() => {
- deleteFromList(tag.user);
- }}
- setStart={setCurStart}
+ deleteFromList={() => deleteFromList(tag.user)}
+ setStart={(coords: number[]) => editCurStart(index, coords)}
/>
</Draggable>
))}
</>
) : (
<>
- {tags.map((tag) => (
+ {tags.map((tag, index) => (
<Draggable
key={tag.user.id}
- x={imageDimensions[0] / 2 - curStart[0] / 2 + tag.x}
- y={imageDimensions[0] / 2 - curStart[0] / 2 + tag.y}
+ x={
+ curStart[index]
+ ? (imageDimensions[0] * tag.x) / 100 +
+ offset[0] -
+ curStart[index][0] / 2
+ : (imageDimensions[0] * tag.x) / 100 + offset[0]
+ }
+ y={
+ curStart[index]
+ ? (imageDimensions[1] * tag.y) / 100 +
+ offset[1] -
+ curStart[index][1] / 2
+ : (imageDimensions[1] * tag.y) / 100 + offset[1] + offset[1]
+ }
z={tag.z}
minX={offset[0]}
minY={offset[1]}
@@ -76,7 +115,7 @@ const MomentTags: React.FC<MomentTagsProps> = ({
taggedUser={tag.user}
editingView={editing}
deleteFromList={() => null}
- setStart={setCurStart}
+ setStart={(coords: number[]) => editCurStart(index, coords)}
/>
</Draggable>
))}