@xanui/core 1.2.22 → 1.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Transition/index.d.ts +10 -30
- package/Transition/index.js +7 -92
- package/Transition/index.js.map +1 -1
- package/Transition/index.mjs +7 -92
- package/Transition/index.mjs.map +1 -1
- package/css/getProps.js +3 -1
- package/css/getProps.js.map +1 -1
- package/css/getProps.mjs +3 -1
- package/css/getProps.mjs.map +1 -1
- package/hooks/useAnimation.d.ts +4 -5
- package/hooks/useAnimation.js +15 -8
- package/hooks/useAnimation.js.map +1 -1
- package/hooks/useAnimation.mjs +15 -8
- package/hooks/useAnimation.mjs.map +1 -1
- package/hooks/useTransition/index.d.ts +36 -0
- package/hooks/useTransition/index.js +88 -0
- package/hooks/useTransition/index.js.map +1 -0
- package/hooks/useTransition/index.mjs +88 -0
- package/hooks/useTransition/index.mjs.map +1 -0
- package/{Transition → hooks/useTransition}/variants.d.ts +17 -19
- package/hooks/useTransition/variants.js +158 -0
- package/hooks/useTransition/variants.js.map +1 -0
- package/hooks/useTransition/variants.mjs +158 -0
- package/hooks/useTransition/variants.mjs.map +1 -0
- package/index.d.ts +2 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +3 -3
- package/Transition/variants.js +0 -158
- package/Transition/variants.js.map +0 -1
- package/Transition/variants.mjs +0 -158
- package/Transition/variants.mjs.map +0 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),React=require('react'),useAnimation=require('../useAnimation.js'),index=require('../../css/index.js'),oncss=require('oncss'),variants=require('./variants.js');const getVariant = (rect, variant) => {
|
|
2
|
+
let fn = typeof variant === 'string' ? variants[variant] : variant;
|
|
3
|
+
if (!fn)
|
|
4
|
+
throw new Error(`Transition variant "${variant}" not found.`);
|
|
5
|
+
return fn(rect);
|
|
6
|
+
};
|
|
7
|
+
const useTransition = (_a) => {
|
|
8
|
+
var { open } = _a, props = tslib.__rest(_a, ["open"]);
|
|
9
|
+
let { disableInitialTransition = false, variant = "fade", duration = 400, delay, ease, easing, exitOnUnmount = false, onOpen, onOpened, onClose, onClosed, onState } = props;
|
|
10
|
+
let _ease = ease || useAnimation.animationEases[easing] || useAnimation.animationEases.bounce;
|
|
11
|
+
const id = "xui-transition-" + React.useId();
|
|
12
|
+
const [state, setState] = React.useState({
|
|
13
|
+
initial: false,
|
|
14
|
+
classname: "",
|
|
15
|
+
variant: variant,
|
|
16
|
+
rect: null,
|
|
17
|
+
stage: open ? "open" : "closed",
|
|
18
|
+
unmounted: false,
|
|
19
|
+
});
|
|
20
|
+
const getEle = () => document.querySelector(`[data-transition="${id}"]`);
|
|
21
|
+
const getBoundary = () => { var _a; return state.rect || ((_a = getEle()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || new DOMRect(0, 0, 0, 0); };
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
if (exitOnUnmount && state.stage === 'closed') {
|
|
24
|
+
if (!open) {
|
|
25
|
+
setState(s => (Object.assign(Object.assign({}, s), { initial: false, classname: "", unmounted: true, variant: variant })));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
setState(s => (Object.assign(Object.assign({}, s), { variant: variant, classname: index.css({ visibility: "hidden" }, { selector: "#" }).classname, stage: "open" })));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}, [open, state.stage, exitOnUnmount, variant]);
|
|
32
|
+
// initial effect
|
|
33
|
+
React.useEffect(() => {
|
|
34
|
+
const ele = getEle();
|
|
35
|
+
if (!ele)
|
|
36
|
+
return;
|
|
37
|
+
if (exitOnUnmount && state.stage === 'closed')
|
|
38
|
+
return;
|
|
39
|
+
const rect = getBoundary();
|
|
40
|
+
let { from } = getVariant(rect, state.variant);
|
|
41
|
+
if (open && !state.initial) {
|
|
42
|
+
setState(s => (Object.assign(Object.assign({}, s), { classname: (!disableInitialTransition || state.unmounted) ? index.css(from, { selector: "#" }).classname : "", initial: true, rect: rect })));
|
|
43
|
+
let stimer = null;
|
|
44
|
+
let etimer = null;
|
|
45
|
+
ele.ontransitionstart = () => {
|
|
46
|
+
clearTimeout(stimer);
|
|
47
|
+
stimer = setTimeout(() => {
|
|
48
|
+
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
49
|
+
(onOpen && isOpen) && onOpen();
|
|
50
|
+
(onClose && !isOpen) && onClose();
|
|
51
|
+
onState && onState(isOpen ? "open" : "close");
|
|
52
|
+
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "open" : "close" })));
|
|
53
|
+
}, 1);
|
|
54
|
+
};
|
|
55
|
+
ele.ontransitionend = () => {
|
|
56
|
+
clearTimeout(etimer);
|
|
57
|
+
etimer = setTimeout(() => {
|
|
58
|
+
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
59
|
+
(onOpened && isOpen) && onOpened();
|
|
60
|
+
(onClosed && !isOpen) && onClosed();
|
|
61
|
+
onState && onState(isOpen ? "opened" : "closed");
|
|
62
|
+
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "opened" : "closed" })));
|
|
63
|
+
}, 1);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else if (!state.initial) {
|
|
67
|
+
setState(s => (Object.assign(Object.assign({}, s), { classname: index.css(from, { selector: "#" }).classname, rect: rect })));
|
|
68
|
+
}
|
|
69
|
+
}, [open, state.initial, state.stage, exitOnUnmount]);
|
|
70
|
+
React.useEffect(() => {
|
|
71
|
+
if (state.initial) {
|
|
72
|
+
let _variant = state.variant !== variant ? variant : state.variant;
|
|
73
|
+
const { from, to } = getVariant(state.rect, _variant);
|
|
74
|
+
let _css = open ? to : from;
|
|
75
|
+
let trans = ` ${duration}ms ${_ease} ${delay || 0}ms`;
|
|
76
|
+
let _ = Object.assign(Object.assign({}, _css), { transition: Object.keys(_css || {}).map(k => oncss.formatCSSProp(k)).join(trans + ", ") + trans });
|
|
77
|
+
setState(s => (Object.assign(Object.assign({}, s), { classname: index.css(_, { selector: "#" }).classname, variant: _variant })));
|
|
78
|
+
}
|
|
79
|
+
}, [open, state.initial, variant]);
|
|
80
|
+
return {
|
|
81
|
+
exited: exitOnUnmount && state.stage === 'closed',
|
|
82
|
+
props: {
|
|
83
|
+
'id': state.classname,
|
|
84
|
+
'data-transition': id,
|
|
85
|
+
'data-transition-state': open ? 'open' : 'close',
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
};exports.default=useTransition;//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/hooks/useTransition/index.ts"],"sourcesContent":["import { useState, useEffect, useId } from 'react';\nimport { animationEases } from '../useAnimation';\nimport { css } from '../../css';\nimport { formatCSSProp } from 'oncss';\nimport { CSSProps } from '../../css/types';\nimport * as variants from './variants'\n\nexport type UseTransitionVariantTypes = keyof typeof variants\nexport type UseTransitionState = \"open\" | \"opened\" | \"close\" | \"closed\"\n\nexport type UseTransitionVariant = (rect: DOMRect) => ({ from: CSSProps, to: CSSProps })\n\nexport type UseTransitionProps = {\n open: boolean;\n variant: UseTransitionVariant | UseTransitionVariantTypes;\n ease?: string;\n easing?: keyof typeof animationEases;\n duration?: number;\n delay?: number;\n disableInitialTransition?: boolean;\n exitOnUnmount?: boolean;\n onOpen?: () => void;\n onOpened?: () => void;\n onClose?: () => void;\n onClosed?: () => void;\n onState?: (state: UseTransitionState) => void;\n}\n\n\nconst getVariant = (rect: DOMRect | null, variant: UseTransitionProps['variant']) => {\n let fn = typeof variant === 'string' ? variants[variant] : variant\n if (!fn) throw new Error(`Transition variant \"${variant}\" not found.`)\n return fn(rect as DOMRect);\n}\n\nconst useTransition = ({ open, ...props }: UseTransitionProps) => {\n let {\n disableInitialTransition = false,\n variant = \"fade\",\n duration = 400,\n delay,\n ease,\n easing,\n exitOnUnmount = false,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n onState\n } = props\n let _ease = ease || (animationEases as any)[easing as any] || animationEases.bounce\n const id = \"xui-transition-\" + useId()\n const [state, setState] = useState({\n initial: false,\n classname: \"\",\n variant: variant,\n rect: null as DOMRect | null,\n stage: open ? \"open\" : \"closed\",\n unmounted: false,\n })\n\n const getEle = () => document.querySelector(`[data-transition=\"${id}\"]`) as HTMLElement;\n const getBoundary = () => state.rect || getEle()?.getBoundingClientRect() || new DOMRect(0, 0, 0, 0);\n\n useEffect(() => {\n if (exitOnUnmount && state.stage === 'closed') {\n if (!open) {\n setState(s => ({\n ...s,\n initial: false,\n classname: \"\",\n unmounted: true,\n variant: variant,\n }))\n } else {\n setState(s => ({\n ...s,\n variant: variant,\n classname: css({ visibility: \"hidden\" }, { selector: \"#\" }).classname,\n stage: \"open\",\n }))\n }\n }\n }, [open, state.stage, exitOnUnmount, variant])\n\n // initial effect\n useEffect(() => {\n const ele = getEle()\n if (!ele) return\n if (exitOnUnmount && state.stage === 'closed') return\n\n const rect = getBoundary();\n let { from } = getVariant(rect, state.variant)\n if (open && !state.initial) {\n setState(s => ({\n ...s,\n classname: (!disableInitialTransition || state.unmounted) ? css(from, { selector: \"#\" }).classname : \"\",\n initial: true,\n rect: rect,\n }))\n let stimer: any = null\n let etimer: any = null\n ele.ontransitionstart = () => {\n clearTimeout(stimer)\n stimer = setTimeout(() => {\n const isOpen = ele.getAttribute('data-transition-state') === 'open';\n (onOpen && isOpen) && onOpen();\n (onClose && !isOpen) && onClose()\n onState && onState(isOpen ? \"open\" : \"close\")\n setState(s => ({\n ...s,\n stage: isOpen ? \"open\" : \"close\"\n }))\n }, 1)\n }\n\n ele.ontransitionend = () => {\n clearTimeout(etimer)\n etimer = setTimeout(() => {\n const isOpen = ele.getAttribute('data-transition-state') === 'open';\n (onOpened && isOpen) && onOpened();\n (onClosed && !isOpen) && onClosed();\n onState && onState(isOpen ? \"opened\" : \"closed\")\n setState(s => ({\n ...s,\n stage: isOpen ? \"opened\" : \"closed\"\n }))\n }, 1)\n }\n } else if (!state.initial) {\n setState(s => ({\n ...s,\n classname: css(from, { selector: \"#\" }).classname,\n rect: rect,\n }))\n }\n }, [open, state.initial, state.stage, exitOnUnmount])\n\n\n useEffect(() => {\n if (state.initial) {\n let _variant = state.variant !== variant ? variant : state.variant\n const { from, to } = getVariant(state.rect, _variant)\n let _css: CSSProps = open ? to : from\n let trans = ` ${duration}ms ${_ease} ${delay || 0}ms`\n let _ = {\n ..._css,\n transition: Object.keys(_css || {}).map(k => formatCSSProp(k)).join(trans + \", \") + trans,\n }\n setState(s => ({\n ...s,\n classname: css(_, { selector: \"#\" }).classname,\n variant: _variant\n }))\n }\n }, [open, state.initial, variant])\n\n return {\n exited: exitOnUnmount && state.stage === 'closed',\n props: {\n 'id': state.classname,\n 'data-transition': id,\n 'data-transition-state': open ? 'open' : 'close',\n }\n }\n}\n\n\nexport default useTransition"],"names":["__rest","animationEases","useId","useState","useEffect","css","formatCSSProp"],"mappings":"gQA6BA,MAAM,UAAU,GAAG,CAAC,IAAoB,EAAE,OAAsC,KAAI;AACjF,IAAA,IAAI,EAAE,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO;AAClE,IAAA,IAAI,CAAC,EAAE;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAA,YAAA,CAAc,CAAC;AACtE,IAAA,OAAO,EAAE,CAAC,IAAe,CAAC;AAC7B,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,EAAsC,KAAI;AAA1C,IAAA,IAAA,EAAE,IAAI,EAAA,GAAA,EAAgC,EAA3B,KAAK,GAAAA,YAAA,CAAA,EAAA,EAAhB,QAAkB,CAAF;AACpC,IAAA,IAAI,EACD,wBAAwB,GAAG,KAAK,EAChC,OAAO,GAAG,MAAM,EAChB,QAAQ,GAAG,GAAG,EACd,KAAK,EACL,IAAI,EACJ,MAAM,EACN,aAAa,GAAG,KAAK,EACrB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACT,GAAG,KAAK;AACT,IAAA,IAAI,KAAK,GAAG,IAAI,IAAKC,2BAAsB,CAAC,MAAa,CAAC,IAAIA,2BAAc,CAAC,MAAM;AACnF,IAAA,MAAM,EAAE,GAAG,iBAAiB,GAAGC,WAAK,EAAE;AACtC,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGC,cAAQ,CAAC;AAChC,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,IAAsB;QAC5B,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ;AAC/B,QAAA,SAAS,EAAE,KAAK;AAClB,KAAA,CAAC;AAEF,IAAA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAA,kBAAA,EAAqB,EAAE,CAAA,EAAA,CAAI,CAAgB;AACvF,IAAA,MAAM,WAAW,GAAG,MAAK,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,KAAK,CAAC,IAAI,KAAI,CAAA,EAAA,GAAA,MAAM,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,EAAE,CAAA,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA;IAEpGC,eAAS,CAAC,MAAK;QACZ,IAAI,aAAa,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC5C,IAAI,CAAC,IAAI,EAAE;gBACR,QAAQ,CAAC,CAAC,qCACJ,CAAC,CAAA,EAAA,EACJ,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,OAAO,EAAA,CAAA,CACjB,CAAC;YACN;iBAAO;AACJ,gBAAA,QAAQ,CAAC,CAAC,qCACJ,CAAC,CAAA,EAAA,EACJ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAEC,SAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EACrE,KAAK,EAAE,MAAM,EAAA,CAAA,CACd,CAAC;YACN;QACH;AACH,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;;IAG/CD,eAAS,CAAC,MAAK;AACZ,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE;AACpB,QAAA,IAAI,CAAC,GAAG;YAAE;AACV,QAAA,IAAI,aAAa,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE;AAE/C,QAAA,MAAM,IAAI,GAAG,WAAW,EAAE;AAC1B,QAAA,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;AAC9C,QAAA,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACzB,QAAQ,CAAC,CAAC,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,CAAC,KACJ,SAAS,EAAE,CAAC,CAAC,wBAAwB,IAAI,KAAK,CAAC,SAAS,IAAIC,SAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG,EAAE,EACvG,OAAO,EAAE,IAAI,EACb,IAAI,EAAE,IAAI,EAAA,CAAA,CACX,CAAC;YACH,IAAI,MAAM,GAAQ,IAAI;YACtB,IAAI,MAAM,GAAQ,IAAI;AACtB,YAAA,GAAG,CAAC,iBAAiB,GAAG,MAAK;gBAC1B,YAAY,CAAC,MAAM,CAAC;AACpB,gBAAA,MAAM,GAAG,UAAU,CAAC,MAAK;oBACtB,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,MAAM;AACnE,oBAAA,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE;oBAC9B,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACjC,oBAAA,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;oBAC7C,QAAQ,CAAC,CAAC,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,CAAC,KACJ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAA,CAAA,CACjC,CAAC;gBACN,CAAC,EAAE,CAAC,CAAC;AACR,YAAA,CAAC;AAED,YAAA,GAAG,CAAC,eAAe,GAAG,MAAK;gBACxB,YAAY,CAAC,MAAM,CAAC;AACpB,gBAAA,MAAM,GAAG,UAAU,CAAC,MAAK;oBACtB,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,MAAM;AACnE,oBAAA,CAAC,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;oBAClC,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;oBAChD,QAAQ,CAAC,CAAC,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,CAAC,KACJ,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAA,CAAA,CACpC,CAAC;gBACN,CAAC,EAAE,CAAC,CAAC;AACR,YAAA,CAAC;QACJ;AAAO,aAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACxB,YAAA,QAAQ,CAAC,CAAC,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,CAAC,CAAA,EAAA,EACJ,SAAS,EAAEA,SAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EACjD,IAAI,EAAE,IAAI,EAAA,CAAA,CACX,CAAC;QACN;AACH,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAGrDD,eAAS,CAAC,MAAK;AACZ,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,OAAO;AAClE,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;YACrD,IAAI,IAAI,GAAa,IAAI,GAAG,EAAE,GAAG,IAAI;YACrC,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,EAAI,KAAK,IAAI,CAAC,CAAA,EAAA,CAAI;AACrD,YAAA,IAAI,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACC,IAAI,CAAA,EAAA,EACP,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAIE,mBAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAC3F;AACD,YAAA,QAAQ,CAAC,CAAC,KAAI,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,CAAC,CAAA,EAAA,EACJ,SAAS,EAAED,SAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAC9C,OAAO,EAAE,QAAQ,EAAA,CAAA,CAClB,CAAC;QACN;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAElC,OAAO;AACJ,QAAA,MAAM,EAAE,aAAa,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;AACjD,QAAA,KAAK,EAAE;YACJ,IAAI,EAAE,KAAK,CAAC,SAAS;AACrB,YAAA,iBAAiB,EAAE,EAAE;YACrB,uBAAuB,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO;AAClD;KACH;AACJ"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import {__rest}from'tslib';import {useId,useState,useEffect}from'react';import {animationEases}from'../useAnimation.mjs';import {css}from'../../css/index.mjs';import {formatCSSProp}from'oncss';import*as variants from'./variants.mjs';const getVariant = (rect, variant) => {
|
|
2
|
+
let fn = typeof variant === 'string' ? variants[variant] : variant;
|
|
3
|
+
if (!fn)
|
|
4
|
+
throw new Error(`Transition variant "${variant}" not found.`);
|
|
5
|
+
return fn(rect);
|
|
6
|
+
};
|
|
7
|
+
const useTransition = (_a) => {
|
|
8
|
+
var { open } = _a, props = __rest(_a, ["open"]);
|
|
9
|
+
let { disableInitialTransition = false, variant = "fade", duration = 400, delay, ease, easing, exitOnUnmount = false, onOpen, onOpened, onClose, onClosed, onState } = props;
|
|
10
|
+
let _ease = ease || animationEases[easing] || animationEases.bounce;
|
|
11
|
+
const id = "xui-transition-" + useId();
|
|
12
|
+
const [state, setState] = useState({
|
|
13
|
+
initial: false,
|
|
14
|
+
classname: "",
|
|
15
|
+
variant: variant,
|
|
16
|
+
rect: null,
|
|
17
|
+
stage: open ? "open" : "closed",
|
|
18
|
+
unmounted: false,
|
|
19
|
+
});
|
|
20
|
+
const getEle = () => document.querySelector(`[data-transition="${id}"]`);
|
|
21
|
+
const getBoundary = () => { var _a; return state.rect || ((_a = getEle()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || new DOMRect(0, 0, 0, 0); };
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (exitOnUnmount && state.stage === 'closed') {
|
|
24
|
+
if (!open) {
|
|
25
|
+
setState(s => (Object.assign(Object.assign({}, s), { initial: false, classname: "", unmounted: true, variant: variant })));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
setState(s => (Object.assign(Object.assign({}, s), { variant: variant, classname: css({ visibility: "hidden" }, { selector: "#" }).classname, stage: "open" })));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}, [open, state.stage, exitOnUnmount, variant]);
|
|
32
|
+
// initial effect
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
const ele = getEle();
|
|
35
|
+
if (!ele)
|
|
36
|
+
return;
|
|
37
|
+
if (exitOnUnmount && state.stage === 'closed')
|
|
38
|
+
return;
|
|
39
|
+
const rect = getBoundary();
|
|
40
|
+
let { from } = getVariant(rect, state.variant);
|
|
41
|
+
if (open && !state.initial) {
|
|
42
|
+
setState(s => (Object.assign(Object.assign({}, s), { classname: (!disableInitialTransition || state.unmounted) ? css(from, { selector: "#" }).classname : "", initial: true, rect: rect })));
|
|
43
|
+
let stimer = null;
|
|
44
|
+
let etimer = null;
|
|
45
|
+
ele.ontransitionstart = () => {
|
|
46
|
+
clearTimeout(stimer);
|
|
47
|
+
stimer = setTimeout(() => {
|
|
48
|
+
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
49
|
+
(onOpen && isOpen) && onOpen();
|
|
50
|
+
(onClose && !isOpen) && onClose();
|
|
51
|
+
onState && onState(isOpen ? "open" : "close");
|
|
52
|
+
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "open" : "close" })));
|
|
53
|
+
}, 1);
|
|
54
|
+
};
|
|
55
|
+
ele.ontransitionend = () => {
|
|
56
|
+
clearTimeout(etimer);
|
|
57
|
+
etimer = setTimeout(() => {
|
|
58
|
+
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
59
|
+
(onOpened && isOpen) && onOpened();
|
|
60
|
+
(onClosed && !isOpen) && onClosed();
|
|
61
|
+
onState && onState(isOpen ? "opened" : "closed");
|
|
62
|
+
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "opened" : "closed" })));
|
|
63
|
+
}, 1);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else if (!state.initial) {
|
|
67
|
+
setState(s => (Object.assign(Object.assign({}, s), { classname: css(from, { selector: "#" }).classname, rect: rect })));
|
|
68
|
+
}
|
|
69
|
+
}, [open, state.initial, state.stage, exitOnUnmount]);
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (state.initial) {
|
|
72
|
+
let _variant = state.variant !== variant ? variant : state.variant;
|
|
73
|
+
const { from, to } = getVariant(state.rect, _variant);
|
|
74
|
+
let _css = open ? to : from;
|
|
75
|
+
let trans = ` ${duration}ms ${_ease} ${delay || 0}ms`;
|
|
76
|
+
let _ = Object.assign(Object.assign({}, _css), { transition: Object.keys(_css || {}).map(k => formatCSSProp(k)).join(trans + ", ") + trans });
|
|
77
|
+
setState(s => (Object.assign(Object.assign({}, s), { classname: css(_, { selector: "#" }).classname, variant: _variant })));
|
|
78
|
+
}
|
|
79
|
+
}, [open, state.initial, variant]);
|
|
80
|
+
return {
|
|
81
|
+
exited: exitOnUnmount && state.stage === 'closed',
|
|
82
|
+
props: {
|
|
83
|
+
'id': state.classname,
|
|
84
|
+
'data-transition': id,
|
|
85
|
+
'data-transition-state': open ? 'open' : 'close',
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
};export{useTransition as default};//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/hooks/useTransition/index.ts"],"sourcesContent":["import { useState, useEffect, useId } from 'react';\nimport { animationEases } from '../useAnimation';\nimport { css } from '../../css';\nimport { formatCSSProp } from 'oncss';\nimport { CSSProps } from '../../css/types';\nimport * as variants from './variants'\n\nexport type UseTransitionVariantTypes = keyof typeof variants\nexport type UseTransitionState = \"open\" | \"opened\" | \"close\" | \"closed\"\n\nexport type UseTransitionVariant = (rect: DOMRect) => ({ from: CSSProps, to: CSSProps })\n\nexport type UseTransitionProps = {\n open: boolean;\n variant: UseTransitionVariant | UseTransitionVariantTypes;\n ease?: string;\n easing?: keyof typeof animationEases;\n duration?: number;\n delay?: number;\n disableInitialTransition?: boolean;\n exitOnUnmount?: boolean;\n onOpen?: () => void;\n onOpened?: () => void;\n onClose?: () => void;\n onClosed?: () => void;\n onState?: (state: UseTransitionState) => void;\n}\n\n\nconst getVariant = (rect: DOMRect | null, variant: UseTransitionProps['variant']) => {\n let fn = typeof variant === 'string' ? variants[variant] : variant\n if (!fn) throw new Error(`Transition variant \"${variant}\" not found.`)\n return fn(rect as DOMRect);\n}\n\nconst useTransition = ({ open, ...props }: UseTransitionProps) => {\n let {\n disableInitialTransition = false,\n variant = \"fade\",\n duration = 400,\n delay,\n ease,\n easing,\n exitOnUnmount = false,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n onState\n } = props\n let _ease = ease || (animationEases as any)[easing as any] || animationEases.bounce\n const id = \"xui-transition-\" + useId()\n const [state, setState] = useState({\n initial: false,\n classname: \"\",\n variant: variant,\n rect: null as DOMRect | null,\n stage: open ? \"open\" : \"closed\",\n unmounted: false,\n })\n\n const getEle = () => document.querySelector(`[data-transition=\"${id}\"]`) as HTMLElement;\n const getBoundary = () => state.rect || getEle()?.getBoundingClientRect() || new DOMRect(0, 0, 0, 0);\n\n useEffect(() => {\n if (exitOnUnmount && state.stage === 'closed') {\n if (!open) {\n setState(s => ({\n ...s,\n initial: false,\n classname: \"\",\n unmounted: true,\n variant: variant,\n }))\n } else {\n setState(s => ({\n ...s,\n variant: variant,\n classname: css({ visibility: \"hidden\" }, { selector: \"#\" }).classname,\n stage: \"open\",\n }))\n }\n }\n }, [open, state.stage, exitOnUnmount, variant])\n\n // initial effect\n useEffect(() => {\n const ele = getEle()\n if (!ele) return\n if (exitOnUnmount && state.stage === 'closed') return\n\n const rect = getBoundary();\n let { from } = getVariant(rect, state.variant)\n if (open && !state.initial) {\n setState(s => ({\n ...s,\n classname: (!disableInitialTransition || state.unmounted) ? css(from, { selector: \"#\" }).classname : \"\",\n initial: true,\n rect: rect,\n }))\n let stimer: any = null\n let etimer: any = null\n ele.ontransitionstart = () => {\n clearTimeout(stimer)\n stimer = setTimeout(() => {\n const isOpen = ele.getAttribute('data-transition-state') === 'open';\n (onOpen && isOpen) && onOpen();\n (onClose && !isOpen) && onClose()\n onState && onState(isOpen ? \"open\" : \"close\")\n setState(s => ({\n ...s,\n stage: isOpen ? \"open\" : \"close\"\n }))\n }, 1)\n }\n\n ele.ontransitionend = () => {\n clearTimeout(etimer)\n etimer = setTimeout(() => {\n const isOpen = ele.getAttribute('data-transition-state') === 'open';\n (onOpened && isOpen) && onOpened();\n (onClosed && !isOpen) && onClosed();\n onState && onState(isOpen ? \"opened\" : \"closed\")\n setState(s => ({\n ...s,\n stage: isOpen ? \"opened\" : \"closed\"\n }))\n }, 1)\n }\n } else if (!state.initial) {\n setState(s => ({\n ...s,\n classname: css(from, { selector: \"#\" }).classname,\n rect: rect,\n }))\n }\n }, [open, state.initial, state.stage, exitOnUnmount])\n\n\n useEffect(() => {\n if (state.initial) {\n let _variant = state.variant !== variant ? variant : state.variant\n const { from, to } = getVariant(state.rect, _variant)\n let _css: CSSProps = open ? to : from\n let trans = ` ${duration}ms ${_ease} ${delay || 0}ms`\n let _ = {\n ..._css,\n transition: Object.keys(_css || {}).map(k => formatCSSProp(k)).join(trans + \", \") + trans,\n }\n setState(s => ({\n ...s,\n classname: css(_, { selector: \"#\" }).classname,\n variant: _variant\n }))\n }\n }, [open, state.initial, variant])\n\n return {\n exited: exitOnUnmount && state.stage === 'closed',\n props: {\n 'id': state.classname,\n 'data-transition': id,\n 'data-transition-state': open ? 'open' : 'close',\n }\n }\n}\n\n\nexport default useTransition"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
declare const slideDown: (_arg: TransitionElementProps) => {
|
|
1
|
+
declare const slideDown: (rect: DOMRect) => {
|
|
4
2
|
from: {
|
|
5
3
|
transform: string;
|
|
6
4
|
};
|
|
@@ -8,7 +6,7 @@ declare const slideDown: (_arg: TransitionElementProps) => {
|
|
|
8
6
|
transform: string;
|
|
9
7
|
};
|
|
10
8
|
};
|
|
11
|
-
declare const slideUp: (
|
|
9
|
+
declare const slideUp: (rect: DOMRect) => {
|
|
12
10
|
from: {
|
|
13
11
|
transform: string;
|
|
14
12
|
};
|
|
@@ -16,7 +14,7 @@ declare const slideUp: (_arg: TransitionElementProps) => {
|
|
|
16
14
|
transform: string;
|
|
17
15
|
};
|
|
18
16
|
};
|
|
19
|
-
declare const slideRight: (
|
|
17
|
+
declare const slideRight: (rect: DOMRect) => {
|
|
20
18
|
from: {
|
|
21
19
|
transform: string;
|
|
22
20
|
};
|
|
@@ -24,7 +22,7 @@ declare const slideRight: (_arg: TransitionElementProps) => {
|
|
|
24
22
|
transform: string;
|
|
25
23
|
};
|
|
26
24
|
};
|
|
27
|
-
declare const slideLeft: (
|
|
25
|
+
declare const slideLeft: (rect: DOMRect) => {
|
|
28
26
|
from: {
|
|
29
27
|
transform: string;
|
|
30
28
|
};
|
|
@@ -32,7 +30,7 @@ declare const slideLeft: (_arg: TransitionElementProps) => {
|
|
|
32
30
|
transform: string;
|
|
33
31
|
};
|
|
34
32
|
};
|
|
35
|
-
declare const fade: (
|
|
33
|
+
declare const fade: () => {
|
|
36
34
|
from: {
|
|
37
35
|
opacity: number;
|
|
38
36
|
};
|
|
@@ -40,7 +38,7 @@ declare const fade: (_arg: TransitionElementProps) => {
|
|
|
40
38
|
opacity: number;
|
|
41
39
|
};
|
|
42
40
|
};
|
|
43
|
-
declare const fadeDown: (
|
|
41
|
+
declare const fadeDown: () => {
|
|
44
42
|
from: {
|
|
45
43
|
transform: string;
|
|
46
44
|
opacity: number;
|
|
@@ -50,7 +48,7 @@ declare const fadeDown: (_arg: TransitionElementProps) => {
|
|
|
50
48
|
opacity: number;
|
|
51
49
|
};
|
|
52
50
|
};
|
|
53
|
-
declare const fadeUp: (
|
|
51
|
+
declare const fadeUp: () => {
|
|
54
52
|
from: {
|
|
55
53
|
transform: string;
|
|
56
54
|
opacity: number;
|
|
@@ -60,7 +58,7 @@ declare const fadeUp: (_arg: TransitionElementProps) => {
|
|
|
60
58
|
opacity: number;
|
|
61
59
|
};
|
|
62
60
|
};
|
|
63
|
-
declare const fadeRight: (
|
|
61
|
+
declare const fadeRight: () => {
|
|
64
62
|
from: {
|
|
65
63
|
transform: string;
|
|
66
64
|
opacity: number;
|
|
@@ -70,7 +68,7 @@ declare const fadeRight: (_arg: TransitionElementProps) => {
|
|
|
70
68
|
opacity: number;
|
|
71
69
|
};
|
|
72
70
|
};
|
|
73
|
-
declare const fadeLeft: (
|
|
71
|
+
declare const fadeLeft: () => {
|
|
74
72
|
from: {
|
|
75
73
|
transform: string;
|
|
76
74
|
opacity: number;
|
|
@@ -80,7 +78,7 @@ declare const fadeLeft: (_arg: TransitionElementProps) => {
|
|
|
80
78
|
opacity: number;
|
|
81
79
|
};
|
|
82
80
|
};
|
|
83
|
-
declare const grow: (
|
|
81
|
+
declare const grow: () => {
|
|
84
82
|
from: {
|
|
85
83
|
transform: string;
|
|
86
84
|
opacity: number;
|
|
@@ -90,7 +88,7 @@ declare const grow: (_arg: TransitionElementProps) => {
|
|
|
90
88
|
opacity: number;
|
|
91
89
|
};
|
|
92
90
|
};
|
|
93
|
-
declare const zoom: (
|
|
91
|
+
declare const zoom: () => {
|
|
94
92
|
from: {
|
|
95
93
|
transform: string;
|
|
96
94
|
opacity: number;
|
|
@@ -100,7 +98,7 @@ declare const zoom: (_arg: TransitionElementProps) => {
|
|
|
100
98
|
opacity: number;
|
|
101
99
|
};
|
|
102
100
|
};
|
|
103
|
-
declare const zoomOver: (
|
|
101
|
+
declare const zoomOver: () => {
|
|
104
102
|
from: {
|
|
105
103
|
transform: string;
|
|
106
104
|
opacity: number;
|
|
@@ -110,17 +108,17 @@ declare const zoomOver: (_arg: TransitionElementProps) => {
|
|
|
110
108
|
opacity: number;
|
|
111
109
|
};
|
|
112
110
|
};
|
|
113
|
-
declare const
|
|
111
|
+
declare const collapseVertical: (rect: DOMRect) => {
|
|
114
112
|
from: {
|
|
115
|
-
|
|
113
|
+
maxHeight: string;
|
|
116
114
|
overflow: string;
|
|
117
115
|
};
|
|
118
116
|
to: {
|
|
119
|
-
|
|
117
|
+
maxHeight: number;
|
|
120
118
|
overflow: string;
|
|
121
119
|
};
|
|
122
120
|
};
|
|
123
|
-
declare const
|
|
121
|
+
declare const collapseHorizontal: (rect: DOMRect) => {
|
|
124
122
|
from: {
|
|
125
123
|
width: string;
|
|
126
124
|
overflow: string;
|
|
@@ -131,4 +129,4 @@ declare const collapsHorizental: (_arg: TransitionElementProps) => {
|
|
|
131
129
|
};
|
|
132
130
|
};
|
|
133
131
|
|
|
134
|
-
export {
|
|
132
|
+
export { collapseHorizontal, collapseVertical, fade, fadeDown, fadeLeft, fadeRight, fadeUp, grow, slideDown, slideLeft, slideRight, slideUp, zoom, zoomOver };
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});const slideDown = (rect) => {
|
|
2
|
+
return {
|
|
3
|
+
from: {
|
|
4
|
+
transform: `translateY(-${rect.height}px)`,
|
|
5
|
+
},
|
|
6
|
+
to: {
|
|
7
|
+
transform: `translateY(0)`,
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
const slideUp = (rect) => {
|
|
12
|
+
return {
|
|
13
|
+
from: {
|
|
14
|
+
transform: `translateY(${rect.height}px)`,
|
|
15
|
+
},
|
|
16
|
+
to: {
|
|
17
|
+
transform: `translateY(0)`,
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const slideRight = (rect) => {
|
|
22
|
+
return {
|
|
23
|
+
from: {
|
|
24
|
+
transform: `translateX(-${rect.width}px)`,
|
|
25
|
+
},
|
|
26
|
+
to: {
|
|
27
|
+
transform: `translateX(0)`,
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const slideLeft = (rect) => {
|
|
32
|
+
return {
|
|
33
|
+
from: {
|
|
34
|
+
transform: `translateX(${rect.width}px)`,
|
|
35
|
+
},
|
|
36
|
+
to: {
|
|
37
|
+
transform: `translateX(0)`,
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const fade = () => {
|
|
42
|
+
return {
|
|
43
|
+
from: {
|
|
44
|
+
opacity: 0
|
|
45
|
+
},
|
|
46
|
+
to: {
|
|
47
|
+
opacity: 1
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
const fadeDown = () => {
|
|
52
|
+
return {
|
|
53
|
+
from: {
|
|
54
|
+
transform: `translateY(-30px)`,
|
|
55
|
+
opacity: 0
|
|
56
|
+
},
|
|
57
|
+
to: {
|
|
58
|
+
transform: `translateY(0)`,
|
|
59
|
+
opacity: 1
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
const fadeUp = () => {
|
|
64
|
+
return {
|
|
65
|
+
from: {
|
|
66
|
+
transform: `translateY(30px)`,
|
|
67
|
+
opacity: 0
|
|
68
|
+
},
|
|
69
|
+
to: {
|
|
70
|
+
transform: `translateY(0)`,
|
|
71
|
+
opacity: 1
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
const fadeRight = () => {
|
|
76
|
+
return {
|
|
77
|
+
from: {
|
|
78
|
+
transform: `translateX(-30px)`,
|
|
79
|
+
opacity: 0
|
|
80
|
+
},
|
|
81
|
+
to: {
|
|
82
|
+
transform: `translateX(0)`,
|
|
83
|
+
opacity: 1
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
const fadeLeft = () => {
|
|
88
|
+
return {
|
|
89
|
+
from: {
|
|
90
|
+
transform: `translateX(30px)`,
|
|
91
|
+
opacity: 0
|
|
92
|
+
},
|
|
93
|
+
to: {
|
|
94
|
+
transform: `translateX(0)`,
|
|
95
|
+
opacity: 1
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
const grow = () => {
|
|
100
|
+
return {
|
|
101
|
+
from: {
|
|
102
|
+
transform: "scale(.8, .6)",
|
|
103
|
+
opacity: 0
|
|
104
|
+
},
|
|
105
|
+
to: {
|
|
106
|
+
transform: "scale(1)",
|
|
107
|
+
opacity: 1
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
const zoom = () => {
|
|
112
|
+
return {
|
|
113
|
+
from: {
|
|
114
|
+
transform: "scale(.8)",
|
|
115
|
+
opacity: 0
|
|
116
|
+
},
|
|
117
|
+
to: {
|
|
118
|
+
transform: "scale(1)",
|
|
119
|
+
opacity: 1
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
const zoomOver = () => {
|
|
124
|
+
return {
|
|
125
|
+
from: {
|
|
126
|
+
transform: "scale(1.2)",
|
|
127
|
+
opacity: 0
|
|
128
|
+
},
|
|
129
|
+
to: {
|
|
130
|
+
transform: "scale(1)",
|
|
131
|
+
opacity: 1
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
const collapseVertical = (rect) => {
|
|
136
|
+
return {
|
|
137
|
+
from: {
|
|
138
|
+
maxHeight: 0 + "px",
|
|
139
|
+
overflow: "hidden"
|
|
140
|
+
},
|
|
141
|
+
to: {
|
|
142
|
+
maxHeight: rect.height,
|
|
143
|
+
overflow: "hidden"
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
const collapseHorizontal = (rect) => {
|
|
148
|
+
return {
|
|
149
|
+
from: {
|
|
150
|
+
width: 0 + "px",
|
|
151
|
+
overflow: "hidden"
|
|
152
|
+
},
|
|
153
|
+
to: {
|
|
154
|
+
width: (rect === null || rect === void 0 ? void 0 : rect.width) ? (rect === null || rect === void 0 ? void 0 : rect.width) + "px" : "auto",
|
|
155
|
+
overflow: "hidden"
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
};exports.collapseHorizontal=collapseHorizontal;exports.collapseVertical=collapseVertical;exports.fade=fade;exports.fadeDown=fadeDown;exports.fadeLeft=fadeLeft;exports.fadeRight=fadeRight;exports.fadeUp=fadeUp;exports.grow=grow;exports.slideDown=slideDown;exports.slideLeft=slideLeft;exports.slideRight=slideRight;exports.slideUp=slideUp;exports.zoom=zoom;exports.zoomOver=zoomOver;//# sourceMappingURL=variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.js","sources":["../../../src/hooks/useTransition/variants.ts"],"sourcesContent":["\nexport const slideDown = (rect: DOMRect) => {\n\n return {\n from: {\n transform: `translateY(-${rect.height}px)`,\n },\n to: {\n transform: `translateY(0)`,\n }\n }\n}\n\nexport const slideUp = (rect: DOMRect) => {\n return {\n from: {\n transform: `translateY(${rect.height}px)`,\n },\n to: {\n transform: `translateY(0)`,\n }\n }\n}\n\nexport const slideRight = (rect: DOMRect) => {\n return {\n from: {\n transform: `translateX(-${rect.width}px)`,\n },\n to: {\n transform: `translateX(0)`,\n }\n }\n}\n\nexport const slideLeft = (rect: DOMRect) => {\n return {\n from: {\n transform: `translateX(${rect.width}px)`,\n },\n to: {\n transform: `translateX(0)`,\n }\n }\n}\n\nexport const fade = () => {\n return {\n from: {\n opacity: 0\n },\n to: {\n opacity: 1\n }\n }\n}\n\nexport const fadeDown = () => {\n return {\n from: {\n transform: `translateY(-30px)`,\n opacity: 0\n },\n to: {\n transform: `translateY(0)`,\n opacity: 1\n }\n }\n}\n\nexport const fadeUp = () => {\n return {\n from: {\n transform: `translateY(30px)`,\n opacity: 0\n },\n to: {\n transform: `translateY(0)`,\n opacity: 1\n }\n }\n}\n\nexport const fadeRight = () => {\n return {\n from: {\n transform: `translateX(-30px)`,\n opacity: 0\n },\n to: {\n transform: `translateX(0)`,\n opacity: 1\n }\n }\n}\n\nexport const fadeLeft = () => {\n return {\n from: {\n transform: `translateX(30px)`,\n opacity: 0\n },\n to: {\n transform: `translateX(0)`,\n opacity: 1\n }\n }\n}\n\nexport const grow = () => {\n return {\n from: {\n transform: \"scale(.8, .6)\",\n opacity: 0\n },\n to: {\n transform: \"scale(1)\",\n opacity: 1\n }\n }\n}\n\nexport const zoom = () => {\n return {\n from: {\n transform: \"scale(.8)\",\n opacity: 0\n },\n to: {\n transform: \"scale(1)\",\n opacity: 1\n }\n }\n}\n\nexport const zoomOver = () => {\n return {\n from: {\n transform: \"scale(1.2)\",\n opacity: 0\n },\n to: {\n transform: \"scale(1)\",\n opacity: 1\n }\n }\n}\n\nexport const collapseVertical = (rect: DOMRect) => {\n\n return {\n from: {\n maxHeight: 0 + \"px\",\n overflow: \"hidden\"\n },\n to: {\n maxHeight: rect.height,\n overflow: \"hidden\"\n }\n }\n}\n\n\nexport const collapseHorizontal = (rect: DOMRect) => {\n return {\n from: {\n width: 0 + \"px\",\n overflow: \"hidden\"\n },\n to: {\n width: rect?.width ? rect?.width + \"px\" : \"auto\",\n overflow: \"hidden\"\n }\n }\n}\n\n\n\n\n"],"names":[],"mappings":"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"}
|