UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

81 lines 8.21 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Transition = exports.defaultTransitions = void 0; const react_1 = __importStar(require("react")); const SlideOpenTransition_1 = require("./open/slideOpen/SlideOpenTransition"); const SlideCloseTransition_1 = require("./close/slideClose/SlideCloseTransition"); const uuid_1 = require("uuid"); const SlideChangeTransition_1 = require("./change/slideChange/SlideChangeTransition"); exports.defaultTransitions = { Open: SlideOpenTransition_1.SlideOpenTransition, Change: SlideChangeTransition_1.SlideChangeTransition, Close: SlideCloseTransition_1.SlideCloseTransition, }; exports.Transition = react_1.memo(({ children: child, skipMountAnimation, onOpen, onClose, onChange, hidden, OpenTransitionComp: InputOpenTransitionComp = exports.defaultTransitions.Open, ChangeTransitionComp: InputChangeTransitionComp = exports.defaultTransitions.Change, CloseTransitionComp: InputCloseTransitionComp = exports.defaultTransitions.Close, }) => { var _a; // Track previous children to transition a change from const prevChildren = react_1.useRef([]); // Track the last child to detect child changes const lastChild = react_1.useRef(undefined); // Manage possible changes to transition components (Don't update while they are animating) const inputTransitionComps = react_1.useRef({ Change: InputChangeTransitionComp, Close: InputCloseTransitionComp, }); inputTransitionComps.current.Change = InputChangeTransitionComp; inputTransitionComps.current.Close = InputCloseTransitionComp; const transitionComps = react_1.useRef({ Open: InputOpenTransitionComp, Change: InputChangeTransitionComp, Close: InputCloseTransitionComp, }); if (prevChildren.current.length == 1) { transitionComps.current.Change = InputChangeTransitionComp; transitionComps.current.Close = InputCloseTransitionComp; } // Reset the slide change transition whenever a change finishes (to reduce element count) const [changeID, setChangeID] = react_1.useState("initial"); const _onChange = react_1.useCallback(() => { prevChildren.current = [lastChild.current]; transitionComps.current = { ...transitionComps.current, ...inputTransitionComps.current, }; onChange === null || onChange === void 0 ? void 0 : onChange(); setChangeID(uuid_1.v4()); }, [onChange]); // Detect if the child changed, and if it's not undefined const sameChild = lastChild.current == child || (((_a = lastChild.current) === null || _a === void 0 ? void 0 : _a.key) && (child === null || child === void 0 ? void 0 : child.key) && lastChild.current.key == child.key); if (!sameChild && child) { prevChildren.current.push(child); lastChild.current = child; } // Handle change transitions const changeable = hidden ? undefined : prevChildren.current.length > 1 ? (react_1.default.createElement(transitionComps.current.Change, { key: changeID, onComplete: _onChange }, prevChildren.current)) : (child || lastChild.current); // Handle close changes const closable = (react_1.default.createElement(transitionComps.current.Close, { activate: !child && !!lastChild.current, onComplete: onClose }, changeable)); // Handle opening changes const skipMount = react_1.useRef(skipMountAnimation); return skipMount.current ? (closable) : (react_1.default.createElement(transitionComps.current.Open, { onComplete: onOpen, activate: !!child || !!lastChild.current }, closable)); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbnRleHQvc3RhY2tzL3RyYW5zaXRpb25zL1RyYW5zaXRpb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FRZTtBQUNmLDhFQUF5RTtBQUN6RSxrRkFBNkU7QUFDN0UsK0JBQWdDO0FBQ2hDLHNGQUFpRjtBQUdwRSxRQUFBLGtCQUFrQixHQUFHO0lBQzlCLElBQUksRUFBRSx5Q0FBbUI7SUFDekIsTUFBTSxFQUFFLDZDQUFxQjtJQUM3QixLQUFLLEVBQUUsMkNBQW9CO0NBQzlCLENBQUM7QUFFVyxRQUFBLFVBQVUsR0FBeUIsWUFBSSxDQUNoRCxDQUFDLEVBQ0csUUFBUSxFQUFFLEtBQUssRUFDZixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLE9BQU8sRUFDUCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGtCQUFrQixFQUFFLHVCQUF1QixHQUFHLDBCQUFrQixDQUFDLElBQUksRUFDckUsb0JBQW9CLEVBQUUseUJBQXlCLEdBQUcsMEJBQWtCLENBQUMsTUFBTSxFQUMzRSxtQkFBbUIsRUFBRSx3QkFBd0IsR0FBRywwQkFBa0IsQ0FBQyxLQUFLLEdBQzNFLEVBQUUsRUFBRTs7SUFDRCxzREFBc0Q7SUFDdEQsTUFBTSxZQUFZLEdBQUcsY0FBTSxDQUFDLEVBQWlCLENBQUMsQ0FBQztJQUMvQywrQ0FBK0M7SUFDL0MsTUFBTSxTQUFTLEdBQUcsY0FBTSxDQUFDLFNBQW9DLENBQUMsQ0FBQztJQUUvRCwyRkFBMkY7SUFDM0YsTUFBTSxvQkFBb0IsR0FBRyxjQUFNLENBQUM7UUFDaEMsTUFBTSxFQUFFLHlCQUF5QjtRQUNqQyxLQUFLLEVBQUUsd0JBQXdCO0tBQ2xDLENBQUMsQ0FBQztJQUNILG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcseUJBQXlCLENBQUM7SUFDaEUsb0JB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