create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
84 lines (73 loc) • 2.34 kB
Flow
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';
declare function isScreenReaderEnabled(): Promise<*>;
const prefersReducedMotionMedia = canUseDOM && typeof window.matchMedia === 'function' ? window.matchMedia('(prefers-reduced-motion: reduce)') : null;
declare function isReduceMotionEnabled(): Promise<*>;
declare function addChangeListener(fn: any): any;
declare function removeChangeListener(fn: any): any;
const handlers = {};
const AccessibilityInfo = {
/**
* Query whether a screen reader is currently enabled.
*
* Returns a promise which resolves to a boolean.
* The result is `true` when a screen reader is enabled and `false` otherwise.
*/
isScreenReaderEnabled,
/**
* Query whether the user prefers reduced motion.
*
* Returns a promise which resolves to a boolean.
* The result is `true` when a screen reader is enabled and `false` otherwise.
*/
isReduceMotionEnabled,
/**
* Deprecated
*/
fetch: isScreenReaderEnabled,
/**
* Add an event handler. Supported events: reduceMotionChanged
*/
addEventListener: function (eventName: string, handler: Function): Object {
if (eventName === 'reduceMotionChanged') {
if (!prefersReducedMotionMedia) {
return;
}
declare var listener: (event: any) => any;
addChangeListener(listener);
handlers[handler] = listener;
}
return {
remove: () => AccessibilityInfo.removeEventListener(eventName, handler)
};
},
/**
* Set accessibility focus to a react component.
*/
setAccessibilityFocus: function (reactTag: number): void {},
/**
* Post a string to be announced by the screen reader.
*/
announceForAccessibility: function (announcement: string): void {},
/**
* Remove an event handler.
*/
removeEventListener: function (eventName: string, handler: Function): void {
if (eventName === 'reduceMotionChanged') {
const listener = handlers[handler];
if (!listener || !prefersReducedMotionMedia) {
return;
}
removeChangeListener(listener);
}
return;
}
};
export default AccessibilityInfo;