You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.6 KiB
1.6 KiB
clipboard
arts/clipboard contiene ActiveClipboard, un servicio pequeño para escribir
texto en el portapapeles sin que los componentes lean navigator.clipboard
directamente.
Ownership
ActiveApppuede declararlo condefineActiveClipboard(...).ActiveUixstandalone lo crea por defecto y permite desactivarlo conclipboard:false.ActiveUixattach no crea sustitutos: si una capa pideuix.clipboardyapp.clipboardno existe, falla con un error explicito.ActiveDomno es el dueño de esta capacidad. El portapapeles es una capability del entorno, no una mutacion visual de nodos DOM.
Uso directo
import { createActiveClipboard } from '$clipboard';
const clipboard = createActiveClipboard();
await clipboard.writeText('Copied text');
clipboard.dispose();
Inyeccion
Tests, SSR shells y apps con permisos propios pueden inyectar un writer:
const clipboard = createActiveClipboard({
writer: {
async writeText(text) {
await customClipboardApi.write(text);
}
}
});
Si no hay writer ni navigator.clipboard.writeText, writeText(...) lanza
ActiveClipboardUnavailableError.
ActiveApp
import { createActiveApp } from '$active-app';
import { defineActiveClipboard } from '$active-app/services';
const App = createActiveApp({
services: {
clipboard: defineActiveClipboard()
}
});
await App.clipboard.writeText('Copied text');
UIX / Soma
Los componentes Soma que necesitan escribir al portapapeles consumen
uix.clipboard a traves de su scope de capa. No importan $clipboard ni leen
navigator directamente.