@launchmenu/core
Version:
An environment for visual keyboard controlled applets
81 lines • 8.21 kB
JavaScript
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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
;