allow resize of note card

a bug ramains
This commit is contained in:
Triston Armstrong 2024-10-05 15:10:29 -04:00
parent 4f0e588efa
commit 460fbdd3f9

View File

@ -18,6 +18,9 @@ export function NoteCard({ key: itemKey, data: item }: NoteCard.NoteCardProps) {
const newY = useRef(0) const newY = useRef(0)
const offsetX = useRef(0) const offsetX = useRef(0)
const offsetY = useRef(0) const offsetY = useRef(0)
const initialResizeX = useRef(0)
const initialResizeY = useRef(0)
const { debounce } = useDebounce() const { debounce } = useDebounce()
function updateLocalStorage(time?: number) { function updateLocalStorage(time?: number) {
@ -54,6 +57,25 @@ export function NoteCard({ key: itemKey, data: item }: NoteCard.NoteCardProps) {
window.addEventListener('mouseup', _handleMouseUp) window.addEventListener('mouseup', _handleMouseUp)
} }
function _handleResizeMove(e: MouseEvent) {
const { pageX, pageY } = e
const [newX, newY] = [initialResizeX.current - pageX, initialResizeY.current - pageY]
NotesSigal.default.updateNoteProperty(itemKey, 'dimensions', { w: -newX + item.dimensions.w, h: -newY + item.dimensions.h })
}
function _handleResizeMouseDown(e: MouseEvent) {
if (pressed.value) return _handleResizeMouseUp()
initialResizeX.current = e.pageX
initialResizeY.current = e.pageY
pressed.value = true
window.addEventListener('mousemove', _handleResizeMove)
}
function _handleResizeMouseUp() {
pressed.value = false
window.removeEventListener('mousemove', _handleResizeMove)
}
return ( return (
<div <div
onmousedown={() => focusedItem.value = itemKey} onmousedown={() => focusedItem.value = itemKey}
@ -91,6 +113,26 @@ export function NoteCard({ key: itemKey, data: item }: NoteCard.NoteCardProps) {
saved.value = true saved.value = true
}} }}
/> />
<svg
onmousedown={_handleResizeMouseDown}
onmouseup={_handleResizeMouseUp}
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="#333"
stroke-width="1"
stroke-linecap="round"
stroke-linejoin="round"
className="cursor-[se-resize] absolute right-0 bottom-0 rotate-[225deg]"
>
<path d="M2 10v4" />
<path d="M4 8v8" />
<path d="M6 5v14" />
</svg>
</div> </div>
</div > </div >