Packages
mob
0.7.1
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.26
0.6.25
0.6.24
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.2
0.6.1
0.6.0
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.11
0.5.10
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
BEAM-on-device mobile framework for Elixir
Current section
Files
Jump to
Current section
Files
lib/mob/clipboard.ex
defmodule Mob.Clipboard do
@moduledoc """
System clipboard access. No permission required.
## Write
def handle_event("copy", _params, socket) do
Mob.Clipboard.put(socket, socket.assigns.text)
{:noreply, socket}
end
## Read
def handle_event("paste", _params, socket) do
case Mob.Clipboard.get(socket) do
{:clipboard, :ok, text} -> {:noreply, Mob.Socket.assign(socket, :field, text)}
{:clipboard, :empty} -> {:noreply, socket}
end
end
`get/1` dispatches to the main thread synchronously (same model as
`safe_area/0`) — fast enough to call from any callback.
"""
@doc """
Write `text` to the system clipboard. Fire-and-forget; returns the socket.
"""
@spec put(Mob.Socket.t(), binary()) :: Mob.Socket.t()
def put(socket, text) when is_binary(text) do
:mob_nif.clipboard_put(text)
socket
end
@doc """
Read the current clipboard text synchronously.
Returns `{:clipboard, :ok, text}` or `{:clipboard, :empty}`.
"""
@spec get(Mob.Socket.t()) :: {:clipboard, :ok, binary()} | {:clipboard, :empty}
def get(_socket) do
case :mob_nif.clipboard_get() do
{:ok, text} -> {:clipboard, :ok, text}
:empty -> {:clipboard, :empty}
end
end
end