UNPKG

react-dnd-accessible-backend

Version:

An add-on backend for react-dnd that provides support for keyboards and screenreaders by default.

56 lines 2.05 kB
import { getDefaultAnnouncementMessages } from "./util/AnnouncementMessages"; // It's a little annoying to have to statically require this. We _could_ make // it fully external and require consumers to provide it always, but ensuring // that an announcer exists implicitly feels more appropriate. Most consumers // likely won't override this, or will be overriding with the same library // anyway. import * as LiveAnnouncer from "@react-aria/live-announcer"; export default class DragAnnouncer { announcer; externalAnnouncer; getMessages; constructor({ getAnnouncementMessages, announcer } = {}) { this.getMessages = getAnnouncementMessages ?? getDefaultAnnouncementMessages; this.externalAnnouncer = false; if (announcer != null) { this.announcer = announcer; this.externalAnnouncer = true; } else { this.announcer = { announce: LiveAnnouncer.announce, clearAnnouncements: LiveAnnouncer.clearAnnouncer, destroy: LiveAnnouncer.destroyAnnouncer, }; } } announce(message, assertiveness, timeout) { this.announcer.announce(message, assertiveness, timeout); } announceDrag(node, id) { if (node == null) return; this.announce(this.getMessages().pickedUpItem(id, node)); } announceHover(node, id) { if (node == null) return; this.announce(this.getMessages().hoveredTarget(id, node)); } announceDrop(node, id) { this.announce(this.getMessages().droppedItem(id, node)); } announceCancel(node, id) { this.announce(this.getMessages().canceledDrag(id, node)); } clear() { this.announcer.clearAnnouncements(); } destroy() { // don't destroy an external announcer, since it is likely used outside of drag-and-drop if (!this.externalAnnouncer) { this.announcer.destroy?.(); } } } //# sourceMappingURL=DragAnnouncer.js.map