react-native-modalfy
Version:
Modal citizen of React Native
69 lines (65 loc) • 5.76 kB
JavaScript
import { Dimensions, Easing } from 'react-native';
export const vw = percentage => Dimensions.get('window').width * percentage / 100;
export const vh = percentage => Dimensions.get('window').height * percentage / 100;
export const sh = percentage => Dimensions.get('screen').height * percentage / 100;
export const defaultOptions = {
animateInConfig: {
duration: 450,
easing: Easing.inOut(Easing.exp)
},
animateOutConfig: {
duration: 450,
easing: Easing.inOut(Easing.exp)
},
containerStyle: {},
position: 'center',
backBehavior: 'pop',
backdropOpacity: 0.6,
backdropPosition: 'root',
disableFlingGesture: false,
pointerEventsBehavior: 'auto',
backdropAnimationDuration: 300
};
export const queueMacroTask = function (fn) {
let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
if (typeof fn === 'function') {
const timeout = setTimeout(() => {
clearTimeout(timeout);
fn === null || fn === void 0 ? void 0 : fn();
}, delay);
}
};
export function computeUpdatedModalOptions(type, newOptions, oldOptions) {
var _newOptions$backBehav2, _newOptions$backdropC, _newOptions$backdropO, _newOptions$backdropP, _newOptions$stackCont, _newOptions$backdropA;
if (type === 'stackItem') {
var _newOptions$position, _newOptions$animation, _newOptions$animation2, _newOptions$backBehav, _newOptions$container, _newOptions$animateIn, _newOptions$animateOu, _newOptions$transitio, _newOptions$disableFl, _newOptions$pointerEv;
const prevOptions = oldOptions;
return {
position: (_newOptions$position = newOptions.position) !== null && _newOptions$position !== void 0 ? _newOptions$position : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.position,
animationIn: (_newOptions$animation = newOptions.animationIn) !== null && _newOptions$animation !== void 0 ? _newOptions$animation : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.animationIn,
animationOut: (_newOptions$animation2 = newOptions.animationOut) !== null && _newOptions$animation2 !== void 0 ? _newOptions$animation2 : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.animationOut,
backBehavior: (_newOptions$backBehav = newOptions.backBehavior) !== null && _newOptions$backBehav !== void 0 ? _newOptions$backBehav : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.backBehavior,
containerStyle: (_newOptions$container = newOptions.containerStyle) !== null && _newOptions$container !== void 0 ? _newOptions$container : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.containerStyle,
animateInConfig: (_newOptions$animateIn = newOptions.animateInConfig) !== null && _newOptions$animateIn !== void 0 ? _newOptions$animateIn : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.animateInConfig,
animateOutConfig: (_newOptions$animateOu = newOptions.animateOutConfig) !== null && _newOptions$animateOu !== void 0 ? _newOptions$animateOu : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.animateOutConfig,
transitionOptions: (_newOptions$transitio = newOptions.transitionOptions) !== null && _newOptions$transitio !== void 0 ? _newOptions$transitio : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.transitionOptions,
disableFlingGesture: (_newOptions$disableFl = newOptions.disableFlingGesture) !== null && _newOptions$disableFl !== void 0 ? _newOptions$disableFl : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.disableFlingGesture,
pointerEventsBehavior: (_newOptions$pointerEv = newOptions.pointerEventsBehavior) !== null && _newOptions$pointerEv !== void 0 ? _newOptions$pointerEv : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.pointerEventsBehavior
};
}
const prevOptions = oldOptions;
return {
backBehavior: (_newOptions$backBehav2 = newOptions.backBehavior) !== null && _newOptions$backBehav2 !== void 0 ? _newOptions$backBehav2 : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.backBehavior,
backdropColor: (_newOptions$backdropC = newOptions.backdropColor) !== null && _newOptions$backdropC !== void 0 ? _newOptions$backdropC : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.backdropColor,
backdropOpacity: (_newOptions$backdropO = newOptions.backdropOpacity) !== null && _newOptions$backdropO !== void 0 ? _newOptions$backdropO : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.backdropOpacity,
backdropPosition: (_newOptions$backdropP = newOptions.backdropPosition) !== null && _newOptions$backdropP !== void 0 ? _newOptions$backdropP : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.backdropPosition,
stackContainerStyle: (_newOptions$stackCont = newOptions.stackContainerStyle) !== null && _newOptions$stackCont !== void 0 ? _newOptions$stackCont : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.stackContainerStyle,
backdropAnimationDuration: (_newOptions$backdropA = newOptions.backdropAnimationDuration) !== null && _newOptions$backdropA !== void 0 ? _newOptions$backdropA : prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.backdropAnimationDuration
};
}
export { default as invariant } from './invariant';
export { default as getStackItemData } from './getStackItemData';
export { default as validateListener } from './validateListener';
export { default as getStackItemOptions } from './getStackItemOptions';
export { default as validateDefaultOptions, validateStackItemOptions } from './validateOptions';
//# sourceMappingURL=index.js.map