UNPKG

react-flipping-content

Version:

A library to handle card flips in React

59 lines (58 loc) 3.04 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FlipCard = void 0; var react_1 = __importDefault(require("react")); var getStyles = function (direction) { var isVertical = direction === 'vertical'; return { root: { perspective: 1000 }, innerRoot: __assign({ position: 'relative', width: '100%', height: '100%', transition: 'transform .5s', transformStyle: 'preserve-3d' }, (isVertical && { transformOrigin: '100% center' })), innerRootFlipped: { transform: isVertical ? 'rotateX(180deg)' : 'rotateY(180deg)' }, cardSide: { position: 'absolute', width: '100%', height: '100%', backfaceVisibility: 'hidden' }, backSide: { transform: isVertical ? 'rotateX(180deg)' : 'rotateY(180deg)' } }; }; var FlipCard = function (_a) { var flipped = _a.flipped, backSide = _a.backSide, frontSide = _a.frontSide, _b = _a.direction, direction = _b === void 0 ? 'horizontal' : _b, _c = _a.styles, overrideStyles = _c === void 0 ? {} : _c; var _d = react_1.default.useState(0), rootHeight = _d[0], setRootHeight = _d[1]; var styles = getStyles(direction); var measuredInnerRootRef = react_1.default.useCallback(function (node) { if (node) { setRootHeight(node.clientHeight); } }, []); return (react_1.default.createElement("div", { style: __assign(__assign(__assign({}, styles.root), { height: rootHeight }), overrideStyles === null || overrideStyles === void 0 ? void 0 : overrideStyles.root) }, react_1.default.createElement("div", { style: __assign(__assign(__assign({}, styles.innerRoot), (flipped && styles.innerRootFlipped)), overrideStyles === null || overrideStyles === void 0 ? void 0 : overrideStyles.innerRoot) }, react_1.default.createElement("div", { style: __assign({}, styles.cardSide) }, react_1.default.createElement("div", { ref: measuredInnerRootRef, style: __assign({}, overrideStyles === null || overrideStyles === void 0 ? void 0 : overrideStyles.cardSide) }, frontSide)), react_1.default.createElement("div", { style: __assign(__assign({}, styles.backSide), styles.cardSide) }, react_1.default.createElement("div", { style: __assign({}, overrideStyles === null || overrideStyles === void 0 ? void 0 : overrideStyles.cardSide) }, backSide))))); }; exports.FlipCard = FlipCard;