summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/utils
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-17 03:47:44 -0600
committerAdam <[email protected]>2025-12-17 03:47:49 -0600
commit494e6fff019bb502fff88a07d6c519c063af9a02 (patch)
treecda9a1f68c013c7a542cbc4f82c7b7b63f9fa0a1 /packages/desktop/src/utils
parent0c7a297b1d3d9cdf8a060c4ed75160152da2b981 (diff)
downloadopencode-494e6fff019bb502fff88a07d6c519c063af9a02.tar.gz
opencode-494e6fff019bb502fff88a07d6c519c063af9a02.zip
feat(desktop): share sessions
Diffstat (limited to 'packages/desktop/src/utils')
-rw-r--r--packages/desktop/src/utils/solid-dnd.tsx55
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/desktop/src/utils/solid-dnd.tsx b/packages/desktop/src/utils/solid-dnd.tsx
new file mode 100644
index 000000000..a634be4b4
--- /dev/null
+++ b/packages/desktop/src/utils/solid-dnd.tsx
@@ -0,0 +1,55 @@
+import { useDragDropContext } from "@thisbeyond/solid-dnd"
+import { JSXElement } from "solid-js"
+import type { Transformer } from "@thisbeyond/solid-dnd"
+
+export const getDraggableId = (event: unknown): string | undefined => {
+ if (typeof event !== "object" || event === null) return undefined
+ if (!("draggable" in event)) return undefined
+ const draggable = (event as { draggable?: { id?: unknown } }).draggable
+ if (!draggable) return undefined
+ return typeof draggable.id === "string" ? draggable.id : undefined
+}
+
+export const ConstrainDragXAxis = (): JSXElement => {
+ const context = useDragDropContext()
+ if (!context) return <></>
+ const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
+ const transformer: Transformer = {
+ id: "constrain-x-axis",
+ order: 100,
+ callback: (transform) => ({ ...transform, x: 0 }),
+ }
+ onDragStart((event) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ addTransformer("draggables", id, transformer)
+ })
+ onDragEnd((event) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ removeTransformer("draggables", id, transformer.id)
+ })
+ return <></>
+}
+
+export const ConstrainDragYAxis = (): JSXElement => {
+ const context = useDragDropContext()
+ if (!context) return <></>
+ const [, { onDragStart, onDragEnd, addTransformer, removeTransformer }] = context
+ const transformer: Transformer = {
+ id: "constrain-y-axis",
+ order: 100,
+ callback: (transform) => ({ ...transform, y: 0 }),
+ }
+ onDragStart((event) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ addTransformer("draggables", id, transformer)
+ })
+ onDragEnd((event) => {
+ const id = getDraggableId(event)
+ if (!id) return
+ removeTransformer("draggables", id, transformer.id)
+ })
+ return <></>
+}