(axis: "x" | "y", transformerId: string)
| 23 | }) |
| 24 | |
| 25 | const createAxisConstraint = (axis: "x" | "y", transformerId: string) => (): JSXElement => { |
| 26 | const context = useDragDropContext() |
| 27 | if (!context) return null |
| 28 | const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context |
| 29 | const transformer = createTransformer(transformerId, axis) |
| 30 | const dispose = createRoot((dispose) => { |
| 31 | onDragStart((event) => { |
| 32 | const id = getDraggableId(event) |
| 33 | if (!id) return |
| 34 | addTransformer("draggables", id, transformer) |
| 35 | }) |
| 36 | onDragEnd((event) => { |
| 37 | const id = getDraggableId(event) |
| 38 | if (!id) return |
| 39 | removeTransformer("draggables", id, transformer.id) |
| 40 | }) |
| 41 | return dispose |
| 42 | }) |
| 43 | onCleanup(dispose) |
| 44 | return null |
| 45 | } |
| 46 | |
| 47 | export const ConstrainDragXAxis = createAxisConstraint("x", "constrain-x-axis") |
| 48 |
no test coverage detected