@xanui/core 1.2.64 → 1.2.66
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.cjs +121 -14
- package/Transition/index.cjs.map +1 -1
- package/Transition/index.d.ts +27 -4
- package/Transition/index.js +122 -15
- package/Transition/index.js.map +1 -1
- package/{hooks/useTransition → Transition}/variants.cjs +78 -28
- package/Transition/variants.cjs.map +1 -0
- package/{hooks/useTransition → Transition}/variants.d.ts +48 -10
- package/Transition/variants.js +209 -0
- package/Transition/variants.js.map +1 -0
- package/index.cjs +8 -10
- package/index.cjs.map +1 -1
- package/index.d.ts +1 -2
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/hooks/useTransition/index.cjs +0 -108
- package/hooks/useTransition/index.cjs.map +0 -1
- package/hooks/useTransition/index.d.ts +0 -36
- package/hooks/useTransition/index.js +0 -106
- package/hooks/useTransition/index.js.map +0 -1
- package/hooks/useTransition/variants.cjs.map +0 -1
- package/hooks/useTransition/variants.js +0 -161
- package/hooks/useTransition/variants.js.map +0 -1
package/Transition/index.cjs
CHANGED
|
@@ -2,27 +2,134 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var tslib = require('tslib');
|
|
5
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
6
5
|
var React = require('react');
|
|
7
|
-
var
|
|
6
|
+
var variants = require('./variants.cjs');
|
|
7
|
+
var index$1 = require('../css/index.cjs');
|
|
8
|
+
var index = require('../Document/index.cjs');
|
|
9
|
+
var CSSCacheProvider = require('../css/CSSCacheProvider.cjs');
|
|
10
|
+
var useAnimation = require('../hooks/useAnimation.cjs');
|
|
11
|
+
var oncss = require('oncss');
|
|
8
12
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const clone = React.Children.only(children);
|
|
15
|
-
return React.cloneElement(clone, props);
|
|
13
|
+
const getVariant = (rect, variant) => {
|
|
14
|
+
let fn = typeof variant === 'string' ? variants[variant] : variant;
|
|
15
|
+
if (!fn)
|
|
16
|
+
throw new Error(`Transition variant "${variant}" not found.`);
|
|
17
|
+
return fn(rect);
|
|
16
18
|
};
|
|
17
19
|
function Transition(_a) {
|
|
18
20
|
var { children } = _a, options = tslib.__rest(_a, ["children"]);
|
|
19
|
-
|
|
21
|
+
let { disableInitialTransition = false, variant = "fade", duration = 400, delay, ease, easing, open, onOpen, onOpened, onClose, onClosed, onState } = options;
|
|
22
|
+
const endTimer = React.useRef(null);
|
|
23
|
+
const animId = React.useRef(0);
|
|
24
|
+
const [rect, setRect] = React.useState();
|
|
25
|
+
const [isDisableInitial, setIsDisableInitial] = React.useState(disableInitialTransition);
|
|
26
|
+
const ref = React.useRef(null);
|
|
27
|
+
const doc = index.useDocument();
|
|
28
|
+
const cacheId = CSSCacheProvider.useCSSCacheId();
|
|
29
|
+
let _ease = ease || useAnimation.animationEases[easing] || useAnimation.animationEases.bounce;
|
|
30
|
+
const style = (obj = {}) => {
|
|
31
|
+
return index$1.css(obj, { container: doc === null || doc === void 0 ? void 0 : doc.document, cacheId }).classname;
|
|
32
|
+
};
|
|
33
|
+
let [cls, setCls] = React.useState(() => {
|
|
34
|
+
let props = {};
|
|
35
|
+
if (!isDisableInitial || (isDisableInitial && !open)) {
|
|
36
|
+
props.opacity = 0;
|
|
37
|
+
props.pointerEvents = 'none';
|
|
38
|
+
}
|
|
39
|
+
return style(props);
|
|
40
|
+
});
|
|
41
|
+
// useEffect(() => {
|
|
42
|
+
// const node = ref.current
|
|
43
|
+
// if (!node) return
|
|
44
|
+
// const observer = new ResizeObserver(() => {
|
|
45
|
+
// const rect = node.getBoundingClientRect()
|
|
46
|
+
// setRect(rect)
|
|
47
|
+
// })
|
|
48
|
+
// observer.observe(node)
|
|
49
|
+
// return () => observer.disconnect()
|
|
50
|
+
// }, [])
|
|
20
51
|
React.useEffect(() => {
|
|
21
|
-
|
|
52
|
+
let frame;
|
|
53
|
+
const measure = () => {
|
|
54
|
+
const node = ref.current;
|
|
55
|
+
if (!node) {
|
|
56
|
+
frame = requestAnimationFrame(measure); // ⬅️ retry next frame
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const rect = node.getBoundingClientRect();
|
|
60
|
+
const v = getVariant(rect, variant);
|
|
61
|
+
if (isDisableInitial) {
|
|
62
|
+
setCls(style(open ? v.to : v.from));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
setCls(style(open ? v.from : v.to));
|
|
66
|
+
}
|
|
67
|
+
setRect(rect);
|
|
68
|
+
};
|
|
69
|
+
frame = requestAnimationFrame(measure);
|
|
70
|
+
return () => {
|
|
71
|
+
if (endTimer.current) {
|
|
72
|
+
clearTimeout(endTimer.current);
|
|
73
|
+
}
|
|
74
|
+
cancelAnimationFrame(frame);
|
|
75
|
+
};
|
|
22
76
|
}, []);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
77
|
+
React.useEffect(() => {
|
|
78
|
+
if (rect) {
|
|
79
|
+
let _duration = isDisableInitial ? 0 : duration;
|
|
80
|
+
let _delay = isDisableInitial ? 0 : (delay || 0);
|
|
81
|
+
if (isDisableInitial) {
|
|
82
|
+
setIsDisableInitial(false);
|
|
83
|
+
}
|
|
84
|
+
const v = getVariant(rect, variant);
|
|
85
|
+
let _css = open ? v.to : v.from;
|
|
86
|
+
let _ = Object.assign(Object.assign({}, _css), { transition: Object.keys(_css || {})
|
|
87
|
+
.map(k => `${oncss.formatCSSProp(k)} ${_duration}ms ${_ease} ${_delay}ms`)
|
|
88
|
+
.join(", "), willChange: Object.keys(_css || {})
|
|
89
|
+
.map(oncss.formatCSSProp)
|
|
90
|
+
.join(", ") });
|
|
91
|
+
if (open) {
|
|
92
|
+
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
93
|
+
onState === null || onState === void 0 ? void 0 : onState("open");
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
97
|
+
onState === null || onState === void 0 ? void 0 : onState("close");
|
|
98
|
+
}
|
|
99
|
+
setCls(style(_));
|
|
100
|
+
if (endTimer.current) {
|
|
101
|
+
clearTimeout(endTimer.current);
|
|
102
|
+
}
|
|
103
|
+
animId.current++;
|
|
104
|
+
const id = animId.current;
|
|
105
|
+
endTimer.current = setTimeout(() => {
|
|
106
|
+
if (id !== animId.current)
|
|
107
|
+
return;
|
|
108
|
+
if (open) {
|
|
109
|
+
onOpened === null || onOpened === void 0 ? void 0 : onOpened();
|
|
110
|
+
onState === null || onState === void 0 ? void 0 : onState("opened");
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
onClosed === null || onClosed === void 0 ? void 0 : onClosed();
|
|
114
|
+
onState === null || onState === void 0 ? void 0 : onState("closed");
|
|
115
|
+
}
|
|
116
|
+
}, _duration + _delay);
|
|
117
|
+
}
|
|
118
|
+
}, [rect, open, variant]);
|
|
119
|
+
const clone = React.Children.only(children);
|
|
120
|
+
return React.cloneElement(clone, {
|
|
121
|
+
className: cls,
|
|
122
|
+
ref: (node) => {
|
|
123
|
+
ref.current = node;
|
|
124
|
+
const childRef = clone.ref;
|
|
125
|
+
if (typeof childRef === "function") {
|
|
126
|
+
childRef(node);
|
|
127
|
+
}
|
|
128
|
+
else if (childRef) {
|
|
129
|
+
childRef.current = node;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
26
133
|
}
|
|
27
134
|
|
|
28
135
|
module.exports = Transition;
|
package/Transition/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/Transition/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { cloneElement, Children, useEffect,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/Transition/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { cloneElement, Children, useState, useEffect, useRef } from 'react';\nimport * as variants from './variants'\nimport { css } from '../css';\nimport { useDocument } from '../Document';\nimport { useCSSCacheId } from '../css/CSSCacheProvider';\nimport { animationEases } from '../hooks/useAnimation';\nimport { formatCSSProp } from 'oncss';\nimport { CSSProps } from '../css/types';\n\nexport type TransitionVariantTypes = keyof typeof variants\nexport type TransitionVariant = TransitionVariantTypes | ((rect: DOMRect) => ({ from: CSSProps, to: CSSProps }))\nexport type TransitionState = \"open\" | \"opened\" | \"close\" | \"closed\"\n\nexport type TransitionProps = {\n children: React.ReactElement;\n open: boolean;\n variant: TransitionVariant\n ease?: string;\n easing?: keyof typeof animationEases;\n duration?: number;\n delay?: number;\n disableInitialTransition?: boolean;\n onOpen?: () => void;\n onOpened?: () => void;\n onClose?: () => void;\n onClosed?: () => void;\n onState?: (state: TransitionState) => void;\n}\n\nconst getVariant = (rect: DOMRect, variant: TransitionVariant) => {\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\nfunction Transition({ children, ...options }: TransitionProps) {\n let {\n disableInitialTransition = false,\n variant = \"fade\",\n duration = 400,\n delay,\n ease,\n easing,\n open,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n onState\n } = options\n\n const endTimer = useRef<any>(null)\n const animId = useRef(0)\n const [rect, setRect] = useState<DOMRect>()\n const [isDisableInitial, setIsDisableInitial] = useState(disableInitialTransition)\n const ref = useRef<HTMLElement>(null)\n const doc = useDocument();\n const cacheId = useCSSCacheId()\n let _ease = ease || (animationEases as any)[easing as any] || animationEases.bounce\n\n const style = (obj = {}) => {\n return css(obj, { container: doc?.document, cacheId }).classname;\n }\n\n let [cls, setCls] = useState(() => {\n let props: any = {}\n if (!isDisableInitial || (isDisableInitial && !open)) {\n props.opacity = 0\n props.pointerEvents = 'none'\n }\n return style(props)\n })\n\n // useEffect(() => {\n // const node = ref.current\n // if (!node) return\n // const observer = new ResizeObserver(() => {\n // const rect = node.getBoundingClientRect()\n // setRect(rect)\n // })\n // observer.observe(node)\n // return () => observer.disconnect()\n // }, [])\n\n useEffect(() => {\n let frame: any\n\n const measure = () => {\n const node = ref.current\n if (!node) {\n frame = requestAnimationFrame(measure) // ⬅️ retry next frame\n return\n }\n\n const rect = node.getBoundingClientRect()\n const v = getVariant(rect, variant)\n\n if (isDisableInitial) {\n setCls(style(open ? v.to : v.from))\n } else {\n setCls(style(open ? v.from : v.to))\n }\n\n setRect(rect)\n }\n\n frame = requestAnimationFrame(measure)\n\n return () => {\n if (endTimer.current) {\n clearTimeout(endTimer.current)\n }\n cancelAnimationFrame(frame)\n }\n\n }, [])\n\n useEffect(() => {\n if (rect) {\n let _duration = isDisableInitial ? 0 : duration\n let _delay = isDisableInitial ? 0 : (delay || 0)\n\n if (isDisableInitial) {\n setIsDisableInitial(false)\n }\n const v = getVariant(rect, variant)\n let _css: any = open ? v.to : v.from\n\n let _ = {\n ..._css,\n transition: Object.keys(_css || {})\n .map(k => `${formatCSSProp(k)} ${_duration}ms ${_ease} ${_delay}ms`)\n .join(\", \"),\n willChange: Object.keys(_css || {})\n .map(formatCSSProp)\n .join(\", \"),\n }\n\n if (open) {\n onOpen?.();\n onState?.(\"open\");\n } else {\n onClose?.();\n onState?.(\"close\");\n }\n\n setCls(style(_))\n if (endTimer.current) {\n clearTimeout(endTimer.current)\n }\n animId.current++\n const id = animId.current\n endTimer.current = setTimeout(() => {\n if (id !== animId.current) return\n if (open) {\n onOpened?.();\n onState?.(\"opened\");\n } else {\n onClosed?.();\n onState?.(\"closed\");\n }\n }, _duration + _delay)\n }\n }, [rect, open, variant])\n\n const clone: any = Children.only(children);\n\n return cloneElement(clone, {\n className: cls,\n ref: (node: HTMLElement) => {\n ref.current = node;\n\n const childRef = (clone as any).ref;\n if (typeof childRef === \"function\") {\n childRef(node);\n } else if (childRef) {\n childRef.current = node;\n }\n }\n });\n}\n\nexport default Transition"],"names":[],"mappings":";;;;;;;;;;;;AA8BA;AACI;AACA;AAAS;AACT;AACJ;AAEA;AAAoB;AAChB;AAeA;AACA;;;AAGA;AACA;AACA;AACA;AAEA;;AAEA;;;;AAKQ;AACA;;AAEJ;AACJ;;;;;;;;;;;;AAcI;;AAGI;;AAEI;;;AAIJ;;;AAII;;;AAEA;;;AAIR;AAEA;AAEA;AACI;AACI;;;AAGR;;;;;AAOI;;;;;AAMA;AAEA;AAGS;AACA;;AAGA;;AAIL;AACA;;;AAEA;AACA;;AAGJ;AACA;AACI;;;AAGJ;AACA;AACI;;;AAEI;AACA;;;AAEA;AACA;;AAER;;;;;AAOJ;AACA;AACI;AAEA;AACA;;;;AAGI;;;AAGX;AACL;;"}
|
package/Transition/index.d.ts
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import
|
|
2
|
+
import * as variants from './variants.js';
|
|
3
|
+
import { animationEases } from '../hooks/useAnimation.js';
|
|
4
|
+
import { CSSProps } from '../css/types.js';
|
|
3
5
|
|
|
4
|
-
type
|
|
6
|
+
type TransitionVariantTypes = keyof typeof variants;
|
|
7
|
+
type TransitionVariant = TransitionVariantTypes | ((rect: DOMRect) => ({
|
|
8
|
+
from: CSSProps;
|
|
9
|
+
to: CSSProps;
|
|
10
|
+
}));
|
|
11
|
+
type TransitionState = "open" | "opened" | "close" | "closed";
|
|
12
|
+
type TransitionProps = {
|
|
5
13
|
children: React__default.ReactElement;
|
|
14
|
+
open: boolean;
|
|
15
|
+
variant: TransitionVariant;
|
|
16
|
+
ease?: string;
|
|
17
|
+
easing?: keyof typeof animationEases;
|
|
18
|
+
duration?: number;
|
|
19
|
+
delay?: number;
|
|
20
|
+
disableInitialTransition?: boolean;
|
|
21
|
+
onOpen?: () => void;
|
|
22
|
+
onOpened?: () => void;
|
|
23
|
+
onClose?: () => void;
|
|
24
|
+
onClosed?: () => void;
|
|
25
|
+
onState?: (state: TransitionState) => void;
|
|
6
26
|
};
|
|
7
|
-
declare function Transition({ children, ...options }: TransitionProps): React__default.
|
|
27
|
+
declare function Transition({ children, ...options }: TransitionProps): React__default.DetailedReactHTMLElement<{
|
|
28
|
+
className: string;
|
|
29
|
+
ref: (node: HTMLElement) => void;
|
|
30
|
+
}, HTMLElement>;
|
|
8
31
|
|
|
9
32
|
export { Transition as default };
|
|
10
|
-
export type { TransitionProps };
|
|
33
|
+
export type { TransitionProps, TransitionState, TransitionVariant, TransitionVariantTypes };
|
package/Transition/index.js
CHANGED
|
@@ -1,26 +1,133 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { __rest } from 'tslib';
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { useRef, useState, useEffect, Children, cloneElement } from 'react';
|
|
4
|
+
import * as variants from './variants.js';
|
|
5
|
+
import { css } from '../css/index.js';
|
|
6
|
+
import { useDocument } from '../Document/index.js';
|
|
7
|
+
import { useCSSCacheId } from '../css/CSSCacheProvider.js';
|
|
8
|
+
import { animationEases } from '../hooks/useAnimation.js';
|
|
9
|
+
import { formatCSSProp } from 'oncss';
|
|
6
10
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const clone = Children.only(children);
|
|
13
|
-
return cloneElement(clone, props);
|
|
11
|
+
const getVariant = (rect, variant) => {
|
|
12
|
+
let fn = typeof variant === 'string' ? variants[variant] : variant;
|
|
13
|
+
if (!fn)
|
|
14
|
+
throw new Error(`Transition variant "${variant}" not found.`);
|
|
15
|
+
return fn(rect);
|
|
14
16
|
};
|
|
15
17
|
function Transition(_a) {
|
|
16
18
|
var { children } = _a, options = __rest(_a, ["children"]);
|
|
17
|
-
|
|
19
|
+
let { disableInitialTransition = false, variant = "fade", duration = 400, delay, ease, easing, open, onOpen, onOpened, onClose, onClosed, onState } = options;
|
|
20
|
+
const endTimer = useRef(null);
|
|
21
|
+
const animId = useRef(0);
|
|
22
|
+
const [rect, setRect] = useState();
|
|
23
|
+
const [isDisableInitial, setIsDisableInitial] = useState(disableInitialTransition);
|
|
24
|
+
const ref = useRef(null);
|
|
25
|
+
const doc = useDocument();
|
|
26
|
+
const cacheId = useCSSCacheId();
|
|
27
|
+
let _ease = ease || animationEases[easing] || animationEases.bounce;
|
|
28
|
+
const style = (obj = {}) => {
|
|
29
|
+
return css(obj, { container: doc === null || doc === void 0 ? void 0 : doc.document, cacheId }).classname;
|
|
30
|
+
};
|
|
31
|
+
let [cls, setCls] = useState(() => {
|
|
32
|
+
let props = {};
|
|
33
|
+
if (!isDisableInitial || (isDisableInitial && !open)) {
|
|
34
|
+
props.opacity = 0;
|
|
35
|
+
props.pointerEvents = 'none';
|
|
36
|
+
}
|
|
37
|
+
return style(props);
|
|
38
|
+
});
|
|
39
|
+
// useEffect(() => {
|
|
40
|
+
// const node = ref.current
|
|
41
|
+
// if (!node) return
|
|
42
|
+
// const observer = new ResizeObserver(() => {
|
|
43
|
+
// const rect = node.getBoundingClientRect()
|
|
44
|
+
// setRect(rect)
|
|
45
|
+
// })
|
|
46
|
+
// observer.observe(node)
|
|
47
|
+
// return () => observer.disconnect()
|
|
48
|
+
// }, [])
|
|
18
49
|
useEffect(() => {
|
|
19
|
-
|
|
50
|
+
let frame;
|
|
51
|
+
const measure = () => {
|
|
52
|
+
const node = ref.current;
|
|
53
|
+
if (!node) {
|
|
54
|
+
frame = requestAnimationFrame(measure); // ⬅️ retry next frame
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const rect = node.getBoundingClientRect();
|
|
58
|
+
const v = getVariant(rect, variant);
|
|
59
|
+
if (isDisableInitial) {
|
|
60
|
+
setCls(style(open ? v.to : v.from));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
setCls(style(open ? v.from : v.to));
|
|
64
|
+
}
|
|
65
|
+
setRect(rect);
|
|
66
|
+
};
|
|
67
|
+
frame = requestAnimationFrame(measure);
|
|
68
|
+
return () => {
|
|
69
|
+
if (endTimer.current) {
|
|
70
|
+
clearTimeout(endTimer.current);
|
|
71
|
+
}
|
|
72
|
+
cancelAnimationFrame(frame);
|
|
73
|
+
};
|
|
20
74
|
}, []);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (rect) {
|
|
77
|
+
let _duration = isDisableInitial ? 0 : duration;
|
|
78
|
+
let _delay = isDisableInitial ? 0 : (delay || 0);
|
|
79
|
+
if (isDisableInitial) {
|
|
80
|
+
setIsDisableInitial(false);
|
|
81
|
+
}
|
|
82
|
+
const v = getVariant(rect, variant);
|
|
83
|
+
let _css = open ? v.to : v.from;
|
|
84
|
+
let _ = Object.assign(Object.assign({}, _css), { transition: Object.keys(_css || {})
|
|
85
|
+
.map(k => `${formatCSSProp(k)} ${_duration}ms ${_ease} ${_delay}ms`)
|
|
86
|
+
.join(", "), willChange: Object.keys(_css || {})
|
|
87
|
+
.map(formatCSSProp)
|
|
88
|
+
.join(", ") });
|
|
89
|
+
if (open) {
|
|
90
|
+
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
91
|
+
onState === null || onState === void 0 ? void 0 : onState("open");
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
95
|
+
onState === null || onState === void 0 ? void 0 : onState("close");
|
|
96
|
+
}
|
|
97
|
+
setCls(style(_));
|
|
98
|
+
if (endTimer.current) {
|
|
99
|
+
clearTimeout(endTimer.current);
|
|
100
|
+
}
|
|
101
|
+
animId.current++;
|
|
102
|
+
const id = animId.current;
|
|
103
|
+
endTimer.current = setTimeout(() => {
|
|
104
|
+
if (id !== animId.current)
|
|
105
|
+
return;
|
|
106
|
+
if (open) {
|
|
107
|
+
onOpened === null || onOpened === void 0 ? void 0 : onOpened();
|
|
108
|
+
onState === null || onState === void 0 ? void 0 : onState("opened");
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
onClosed === null || onClosed === void 0 ? void 0 : onClosed();
|
|
112
|
+
onState === null || onState === void 0 ? void 0 : onState("closed");
|
|
113
|
+
}
|
|
114
|
+
}, _duration + _delay);
|
|
115
|
+
}
|
|
116
|
+
}, [rect, open, variant]);
|
|
117
|
+
const clone = Children.only(children);
|
|
118
|
+
return cloneElement(clone, {
|
|
119
|
+
className: cls,
|
|
120
|
+
ref: (node) => {
|
|
121
|
+
ref.current = node;
|
|
122
|
+
const childRef = clone.ref;
|
|
123
|
+
if (typeof childRef === "function") {
|
|
124
|
+
childRef(node);
|
|
125
|
+
}
|
|
126
|
+
else if (childRef) {
|
|
127
|
+
childRef.current = node;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
24
131
|
}
|
|
25
132
|
|
|
26
133
|
export { Transition as default };
|
package/Transition/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/Transition/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { cloneElement, Children, useEffect,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/Transition/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { cloneElement, Children, useState, useEffect, useRef } from 'react';\nimport * as variants from './variants'\nimport { css } from '../css';\nimport { useDocument } from '../Document';\nimport { useCSSCacheId } from '../css/CSSCacheProvider';\nimport { animationEases } from '../hooks/useAnimation';\nimport { formatCSSProp } from 'oncss';\nimport { CSSProps } from '../css/types';\n\nexport type TransitionVariantTypes = keyof typeof variants\nexport type TransitionVariant = TransitionVariantTypes | ((rect: DOMRect) => ({ from: CSSProps, to: CSSProps }))\nexport type TransitionState = \"open\" | \"opened\" | \"close\" | \"closed\"\n\nexport type TransitionProps = {\n children: React.ReactElement;\n open: boolean;\n variant: TransitionVariant\n ease?: string;\n easing?: keyof typeof animationEases;\n duration?: number;\n delay?: number;\n disableInitialTransition?: boolean;\n onOpen?: () => void;\n onOpened?: () => void;\n onClose?: () => void;\n onClosed?: () => void;\n onState?: (state: TransitionState) => void;\n}\n\nconst getVariant = (rect: DOMRect, variant: TransitionVariant) => {\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\nfunction Transition({ children, ...options }: TransitionProps) {\n let {\n disableInitialTransition = false,\n variant = \"fade\",\n duration = 400,\n delay,\n ease,\n easing,\n open,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n onState\n } = options\n\n const endTimer = useRef<any>(null)\n const animId = useRef(0)\n const [rect, setRect] = useState<DOMRect>()\n const [isDisableInitial, setIsDisableInitial] = useState(disableInitialTransition)\n const ref = useRef<HTMLElement>(null)\n const doc = useDocument();\n const cacheId = useCSSCacheId()\n let _ease = ease || (animationEases as any)[easing as any] || animationEases.bounce\n\n const style = (obj = {}) => {\n return css(obj, { container: doc?.document, cacheId }).classname;\n }\n\n let [cls, setCls] = useState(() => {\n let props: any = {}\n if (!isDisableInitial || (isDisableInitial && !open)) {\n props.opacity = 0\n props.pointerEvents = 'none'\n }\n return style(props)\n })\n\n // useEffect(() => {\n // const node = ref.current\n // if (!node) return\n // const observer = new ResizeObserver(() => {\n // const rect = node.getBoundingClientRect()\n // setRect(rect)\n // })\n // observer.observe(node)\n // return () => observer.disconnect()\n // }, [])\n\n useEffect(() => {\n let frame: any\n\n const measure = () => {\n const node = ref.current\n if (!node) {\n frame = requestAnimationFrame(measure) // ⬅️ retry next frame\n return\n }\n\n const rect = node.getBoundingClientRect()\n const v = getVariant(rect, variant)\n\n if (isDisableInitial) {\n setCls(style(open ? v.to : v.from))\n } else {\n setCls(style(open ? v.from : v.to))\n }\n\n setRect(rect)\n }\n\n frame = requestAnimationFrame(measure)\n\n return () => {\n if (endTimer.current) {\n clearTimeout(endTimer.current)\n }\n cancelAnimationFrame(frame)\n }\n\n }, [])\n\n useEffect(() => {\n if (rect) {\n let _duration = isDisableInitial ? 0 : duration\n let _delay = isDisableInitial ? 0 : (delay || 0)\n\n if (isDisableInitial) {\n setIsDisableInitial(false)\n }\n const v = getVariant(rect, variant)\n let _css: any = open ? v.to : v.from\n\n let _ = {\n ..._css,\n transition: Object.keys(_css || {})\n .map(k => `${formatCSSProp(k)} ${_duration}ms ${_ease} ${_delay}ms`)\n .join(\", \"),\n willChange: Object.keys(_css || {})\n .map(formatCSSProp)\n .join(\", \"),\n }\n\n if (open) {\n onOpen?.();\n onState?.(\"open\");\n } else {\n onClose?.();\n onState?.(\"close\");\n }\n\n setCls(style(_))\n if (endTimer.current) {\n clearTimeout(endTimer.current)\n }\n animId.current++\n const id = animId.current\n endTimer.current = setTimeout(() => {\n if (id !== animId.current) return\n if (open) {\n onOpened?.();\n onState?.(\"opened\");\n } else {\n onClosed?.();\n onState?.(\"closed\");\n }\n }, _duration + _delay)\n }\n }, [rect, open, variant])\n\n const clone: any = Children.only(children);\n\n return cloneElement(clone, {\n className: cls,\n ref: (node: HTMLElement) => {\n ref.current = node;\n\n const childRef = (clone as any).ref;\n if (typeof childRef === \"function\") {\n childRef(node);\n } else if (childRef) {\n childRef.current = node;\n }\n }\n });\n}\n\nexport default Transition"],"names":[],"mappings":";;;;;;;;;;AA8BA;AACI;AACA;AAAS;AACT;AACJ;AAEA;AAAoB;AAChB;AAeA;AACA;;;AAGA;AACA;AACA;AACA;AAEA;;AAEA;;;;AAKQ;AACA;;AAEJ;AACJ;;;;;;;;;;;;AAcI;;AAGI;;AAEI;;;AAIJ;;;AAII;;;AAEA;;;AAIR;AAEA;AAEA;AACI;AACI;;;AAGR;;;;;AAOI;;;;;AAMA;AAEA;AAGS;AACA;;AAGA;;AAIL;AACA;;;AAEA;AACA;;AAGJ;AACA;AACI;;;AAGJ;AACA;AACI;;;AAEI;AACA;;;AAEA;AACA;;AAER;;;;;AAOJ;AACA;AACI;AAEA;AACA;;;;AAGI;;;AAGX;AACL;;"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
const getY = (rect) => rect ? Math.min(rect.height / 2, 40) : 20;
|
|
4
|
+
const getX = (rect) => rect ? Math.min(rect.width / 2, 40) : 20;
|
|
3
5
|
const slideDown = (rect) => {
|
|
6
|
+
const y = getY(rect);
|
|
4
7
|
return {
|
|
5
8
|
from: {
|
|
6
|
-
transform: `translateY(-${
|
|
9
|
+
transform: `translateY(-${y}px)`,
|
|
7
10
|
},
|
|
8
11
|
to: {
|
|
9
12
|
transform: `translateY(0)`,
|
|
@@ -11,9 +14,10 @@ const slideDown = (rect) => {
|
|
|
11
14
|
};
|
|
12
15
|
};
|
|
13
16
|
const slideUp = (rect) => {
|
|
17
|
+
const y = getY(rect);
|
|
14
18
|
return {
|
|
15
19
|
from: {
|
|
16
|
-
transform: `translateY(${
|
|
20
|
+
transform: `translateY(${y}px)`,
|
|
17
21
|
},
|
|
18
22
|
to: {
|
|
19
23
|
transform: `translateY(0)`,
|
|
@@ -21,9 +25,10 @@ const slideUp = (rect) => {
|
|
|
21
25
|
};
|
|
22
26
|
};
|
|
23
27
|
const slideRight = (rect) => {
|
|
28
|
+
const x = getX(rect);
|
|
24
29
|
return {
|
|
25
30
|
from: {
|
|
26
|
-
transform: `translateX(-${
|
|
31
|
+
transform: `translateX(-${x}px)`,
|
|
27
32
|
},
|
|
28
33
|
to: {
|
|
29
34
|
transform: `translateX(0)`,
|
|
@@ -31,69 +36,105 @@ const slideRight = (rect) => {
|
|
|
31
36
|
};
|
|
32
37
|
};
|
|
33
38
|
const slideLeft = (rect) => {
|
|
39
|
+
const x = getX(rect);
|
|
34
40
|
return {
|
|
35
41
|
from: {
|
|
36
|
-
transform: `translateX(${
|
|
42
|
+
transform: `translateX(${x}px)`,
|
|
37
43
|
},
|
|
38
44
|
to: {
|
|
39
45
|
transform: `translateX(0)`,
|
|
40
46
|
}
|
|
41
47
|
};
|
|
42
48
|
};
|
|
49
|
+
const scaleYDown = () => ({
|
|
50
|
+
from: {
|
|
51
|
+
transform: "scaleY(0.8)",
|
|
52
|
+
opacity: 0,
|
|
53
|
+
pointerEvents: 'none',
|
|
54
|
+
transformOrigin: "top"
|
|
55
|
+
},
|
|
56
|
+
to: {
|
|
57
|
+
transform: "scaleY(1)",
|
|
58
|
+
opacity: 1,
|
|
59
|
+
transformOrigin: "top"
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const scaleYUp = () => ({
|
|
63
|
+
from: {
|
|
64
|
+
transform: "scaleY(0.8)",
|
|
65
|
+
transformOrigin: "bottom",
|
|
66
|
+
opacity: 0,
|
|
67
|
+
pointerEvents: 'none'
|
|
68
|
+
},
|
|
69
|
+
to: {
|
|
70
|
+
transform: "scaleY(1)",
|
|
71
|
+
transformOrigin: "bottom",
|
|
72
|
+
opacity: 1
|
|
73
|
+
}
|
|
74
|
+
});
|
|
43
75
|
const fade = () => {
|
|
44
76
|
return {
|
|
45
77
|
from: {
|
|
46
|
-
opacity: 0
|
|
78
|
+
opacity: 0,
|
|
79
|
+
pointerEvents: 'none'
|
|
47
80
|
},
|
|
48
81
|
to: {
|
|
49
82
|
opacity: 1
|
|
50
83
|
}
|
|
51
84
|
};
|
|
52
85
|
};
|
|
53
|
-
const fadeDown = () => {
|
|
86
|
+
const fadeDown = (rect) => {
|
|
87
|
+
const y = getY(rect);
|
|
54
88
|
return {
|
|
55
89
|
from: {
|
|
56
|
-
transform: `translateY(
|
|
57
|
-
opacity: 0
|
|
90
|
+
transform: `translateY(-${y}px) scale(0.98)`,
|
|
91
|
+
opacity: 0,
|
|
92
|
+
pointerEvents: 'none'
|
|
58
93
|
},
|
|
59
94
|
to: {
|
|
60
|
-
transform: `translateY(0)`,
|
|
95
|
+
transform: `translateY(0) scale(1)`,
|
|
61
96
|
opacity: 1
|
|
62
97
|
}
|
|
63
98
|
};
|
|
64
99
|
};
|
|
65
|
-
const fadeUp = () => {
|
|
100
|
+
const fadeUp = (rect) => {
|
|
101
|
+
const y = getY(rect);
|
|
66
102
|
return {
|
|
67
103
|
from: {
|
|
68
|
-
transform: `translateY(
|
|
69
|
-
opacity: 0
|
|
104
|
+
transform: `translateY(${y}px) scale(0.98)`,
|
|
105
|
+
opacity: 0,
|
|
106
|
+
pointerEvents: 'none'
|
|
70
107
|
},
|
|
71
108
|
to: {
|
|
72
|
-
transform: `translateY(0)`,
|
|
109
|
+
transform: `translateY(0) scale(1)`,
|
|
73
110
|
opacity: 1
|
|
74
111
|
}
|
|
75
112
|
};
|
|
76
113
|
};
|
|
77
|
-
const fadeRight = () => {
|
|
114
|
+
const fadeRight = (rect) => {
|
|
115
|
+
const x = getX(rect);
|
|
78
116
|
return {
|
|
79
117
|
from: {
|
|
80
|
-
transform: `translateX(
|
|
81
|
-
opacity: 0
|
|
118
|
+
transform: `translateX(-${x}px) scale(0.98)`,
|
|
119
|
+
opacity: 0,
|
|
120
|
+
pointerEvents: 'none'
|
|
82
121
|
},
|
|
83
122
|
to: {
|
|
84
|
-
transform: `translateX(0)`,
|
|
123
|
+
transform: `translateX(0) scale(1)`,
|
|
85
124
|
opacity: 1
|
|
86
125
|
}
|
|
87
126
|
};
|
|
88
127
|
};
|
|
89
|
-
const fadeLeft = () => {
|
|
128
|
+
const fadeLeft = (rect) => {
|
|
129
|
+
const x = getX(rect);
|
|
90
130
|
return {
|
|
91
131
|
from: {
|
|
92
|
-
transform: `translateX(
|
|
93
|
-
opacity: 0
|
|
132
|
+
transform: `translateX(${x}px) scale(0.98)`,
|
|
133
|
+
opacity: 0,
|
|
134
|
+
pointerEvents: 'none'
|
|
94
135
|
},
|
|
95
136
|
to: {
|
|
96
|
-
transform: `translateX(0)`,
|
|
137
|
+
transform: `translateX(0) scale(1)`,
|
|
97
138
|
opacity: 1
|
|
98
139
|
}
|
|
99
140
|
};
|
|
@@ -102,7 +143,8 @@ const grow = () => {
|
|
|
102
143
|
return {
|
|
103
144
|
from: {
|
|
104
145
|
transform: "scale(.8, .6)",
|
|
105
|
-
opacity: 0
|
|
146
|
+
opacity: 0,
|
|
147
|
+
pointerEvents: 'none'
|
|
106
148
|
},
|
|
107
149
|
to: {
|
|
108
150
|
transform: "scale(1)",
|
|
@@ -114,10 +156,13 @@ const zoom = () => {
|
|
|
114
156
|
return {
|
|
115
157
|
from: {
|
|
116
158
|
transform: "scale(.8)",
|
|
117
|
-
|
|
159
|
+
transformOrigin: "center",
|
|
160
|
+
opacity: 0,
|
|
161
|
+
pointerEvents: 'none'
|
|
118
162
|
},
|
|
119
163
|
to: {
|
|
120
164
|
transform: "scale(1)",
|
|
165
|
+
transformOrigin: "center",
|
|
121
166
|
opacity: 1
|
|
122
167
|
}
|
|
123
168
|
};
|
|
@@ -126,10 +171,13 @@ const zoomOver = () => {
|
|
|
126
171
|
return {
|
|
127
172
|
from: {
|
|
128
173
|
transform: "scale(1.2)",
|
|
129
|
-
|
|
174
|
+
transformOrigin: "center",
|
|
175
|
+
opacity: 0,
|
|
176
|
+
pointerEvents: 'none'
|
|
130
177
|
},
|
|
131
178
|
to: {
|
|
132
179
|
transform: "scale(1)",
|
|
180
|
+
transformOrigin: "center",
|
|
133
181
|
opacity: 1
|
|
134
182
|
}
|
|
135
183
|
};
|
|
@@ -137,11 +185,11 @@ const zoomOver = () => {
|
|
|
137
185
|
const collapseVertical = (rect) => {
|
|
138
186
|
return {
|
|
139
187
|
from: {
|
|
140
|
-
maxHeight:
|
|
188
|
+
maxHeight: "0px",
|
|
141
189
|
overflow: "hidden"
|
|
142
190
|
},
|
|
143
191
|
to: {
|
|
144
|
-
maxHeight: rect.height,
|
|
192
|
+
maxHeight: rect.height + "px",
|
|
145
193
|
overflow: "hidden"
|
|
146
194
|
}
|
|
147
195
|
};
|
|
@@ -149,11 +197,11 @@ const collapseVertical = (rect) => {
|
|
|
149
197
|
const collapseHorizontal = (rect) => {
|
|
150
198
|
return {
|
|
151
199
|
from: {
|
|
152
|
-
width:
|
|
200
|
+
width: "0px",
|
|
153
201
|
overflow: "hidden"
|
|
154
202
|
},
|
|
155
203
|
to: {
|
|
156
|
-
width:
|
|
204
|
+
width: rect.width + "px",
|
|
157
205
|
overflow: "hidden"
|
|
158
206
|
}
|
|
159
207
|
};
|
|
@@ -167,6 +215,8 @@ exports.fadeLeft = fadeLeft;
|
|
|
167
215
|
exports.fadeRight = fadeRight;
|
|
168
216
|
exports.fadeUp = fadeUp;
|
|
169
217
|
exports.grow = grow;
|
|
218
|
+
exports.scaleYDown = scaleYDown;
|
|
219
|
+
exports.scaleYUp = scaleYUp;
|
|
170
220
|
exports.slideDown = slideDown;
|
|
171
221
|
exports.slideLeft = slideLeft;
|
|
172
222
|
exports.slideRight = slideRight;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.cjs","sources":["../../src/Transition/variants.ts"],"sourcesContent":["\nconst getY = (rect?: DOMRect) =>\n rect ? Math.min(rect.height / 2, 40) : 20\n\nconst getX = (rect?: DOMRect) =>\n rect ? Math.min(rect.width / 2, 40) : 20\n\n\n\nexport const slideDown = (rect?: DOMRect) => {\n const y = getY(rect)\n\n return {\n from: {\n transform: `translateY(-${y}px)`,\n },\n to: {\n transform: `translateY(0)`,\n }\n }\n}\n\nexport const slideUp = (rect?: DOMRect) => {\n const y = getY(rect)\n\n return {\n from: {\n transform: `translateY(${y}px)`,\n },\n to: {\n transform: `translateY(0)`,\n }\n }\n}\n\nexport const slideRight = (rect?: DOMRect) => {\n const x = getX(rect)\n\n return {\n from: {\n transform: `translateX(-${x}px)`,\n },\n to: {\n transform: `translateX(0)`,\n }\n }\n}\n\nexport const slideLeft = (rect?: DOMRect) => {\n const x = getX(rect)\n\n return {\n from: {\n transform: `translateX(${x}px)`,\n },\n to: {\n transform: `translateX(0)`,\n }\n }\n}\n\nexport const scaleYDown = () => ({\n from: {\n transform: \"scaleY(0.8)\",\n opacity: 0,\n pointerEvents: 'none',\n transformOrigin: \"top\"\n },\n to: {\n transform: \"scaleY(1)\",\n opacity: 1,\n transformOrigin: \"top\"\n }\n})\n\nexport const scaleYUp = () => ({\n from: {\n transform: \"scaleY(0.8)\",\n transformOrigin: \"bottom\",\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: \"scaleY(1)\",\n transformOrigin: \"bottom\",\n opacity: 1\n }\n})\n\nexport const fade = () => {\n return {\n from: {\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n opacity: 1\n }\n }\n}\n\n\nexport const fadeDown = (rect?: DOMRect) => {\n const y = getY(rect)\n\n return {\n from: {\n transform: `translateY(-${y}px) scale(0.98)`,\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: `translateY(0) scale(1)`,\n opacity: 1\n }\n }\n}\n\nexport const fadeUp = (rect?: DOMRect) => {\n const y = getY(rect)\n\n return {\n from: {\n transform: `translateY(${y}px) scale(0.98)`,\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: `translateY(0) scale(1)`,\n opacity: 1\n }\n }\n}\n\nexport const fadeRight = (rect?: DOMRect) => {\n const x = getX(rect)\n\n return {\n from: {\n transform: `translateX(-${x}px) scale(0.98)`,\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: `translateX(0) scale(1)`,\n opacity: 1\n }\n }\n}\n\nexport const fadeLeft = (rect?: DOMRect) => {\n const x = getX(rect)\n\n return {\n from: {\n transform: `translateX(${x}px) scale(0.98)`,\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: `translateX(0) scale(1)`,\n opacity: 1\n }\n }\n}\n\nexport const grow = () => {\n return {\n from: {\n transform: \"scale(.8, .6)\",\n opacity: 0,\n pointerEvents: 'none'\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 transformOrigin: \"center\",\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: \"scale(1)\",\n transformOrigin: \"center\",\n opacity: 1\n }\n }\n}\n\nexport const zoomOver = () => {\n return {\n from: {\n transform: \"scale(1.2)\",\n transformOrigin: \"center\",\n opacity: 0,\n pointerEvents: 'none'\n },\n to: {\n transform: \"scale(1)\",\n transformOrigin: \"center\",\n opacity: 1\n }\n }\n}\n\nexport const collapseVertical = (rect: DOMRect) => {\n return {\n from: {\n maxHeight: \"0px\",\n overflow: \"hidden\"\n },\n to: {\n maxHeight: rect.height + \"px\",\n overflow: \"hidden\"\n }\n }\n}\n\n\nexport const collapseHorizontal = (rect: DOMRect) => {\n return {\n from: {\n width: \"0px\",\n overflow: \"hidden\"\n },\n to: {\n width: rect.width + \"px\",\n overflow: \"hidden\"\n }\n }\n}\n\n\n\n\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,CAAC,IAAc,KACxB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE;AAE7C,MAAM,IAAI,GAAG,CAAC,IAAc,KACxB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE;AAIrC,MAAM,SAAS,GAAG,CAAC,IAAc,KAAI;AACxC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,GAAA,CAAK;AACnC,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,aAAA,CAAe;AAC7B;KACJ;AACL;AAEO,MAAM,OAAO,GAAG,CAAC,IAAc,KAAI;AACtC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,WAAA,EAAc,CAAC,CAAA,GAAA,CAAK;AAClC,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,aAAA,CAAe;AAC7B;KACJ;AACL;AAEO,MAAM,UAAU,GAAG,CAAC,IAAc,KAAI;AACzC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,GAAA,CAAK;AACnC,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,aAAA,CAAe;AAC7B;KACJ;AACL;AAEO,MAAM,SAAS,GAAG,CAAC,IAAc,KAAI;AACxC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,WAAA,EAAc,CAAC,CAAA,GAAA,CAAK;AAClC,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,aAAA,CAAe;AAC7B;KACJ;AACL;AAEO,MAAM,UAAU,GAAG,OAAO;AAC7B,IAAA,IAAI,EAAE;AACF,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,aAAa,EAAE,MAAM;AACrB,QAAA,eAAe,EAAE;AACpB,KAAA;AACD,IAAA,EAAE,EAAE;AACA,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,eAAe,EAAE;AACpB;AACJ,CAAA;AAEM,MAAM,QAAQ,GAAG,OAAO;AAC3B,IAAA,IAAI,EAAE;AACF,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,eAAe,EAAE,QAAQ;AACzB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,aAAa,EAAE;AAClB,KAAA;AACD,IAAA,EAAE,EAAE;AACA,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,eAAe,EAAE,QAAQ;AACzB,QAAA,OAAO,EAAE;AACZ;AACJ,CAAA;AAEM,MAAM,IAAI,GAAG,MAAK;IACrB,OAAO;AACH,QAAA,IAAI,EAAE;AACF,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAGO,MAAM,QAAQ,GAAG,CAAC,IAAc,KAAI;AACvC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,eAAA,CAAiB;AAC5C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,sBAAA,CAAwB;AACnC,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,MAAM,GAAG,CAAC,IAAc,KAAI;AACrC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,WAAA,EAAc,CAAC,CAAA,eAAA,CAAiB;AAC3C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,sBAAA,CAAwB;AACnC,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,SAAS,GAAG,CAAC,IAAc,KAAI;AACxC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,eAAA,CAAiB;AAC5C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,sBAAA,CAAwB;AACnC,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,QAAQ,GAAG,CAAC,IAAc,KAAI;AACvC,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpB,OAAO;AACH,QAAA,IAAI,EAAE;YACF,SAAS,EAAE,CAAA,WAAA,EAAc,CAAC,CAAA,eAAA,CAAiB;AAC3C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,CAAA,sBAAA,CAAwB;AACnC,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,IAAI,GAAG,MAAK;IACrB,OAAO;AACH,QAAA,IAAI,EAAE;AACF,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,IAAI,GAAG,MAAK;IACrB,OAAO;AACH,QAAA,IAAI,EAAE;AACF,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,eAAe,EAAE,QAAQ;AACzB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,eAAe,EAAE,QAAQ;AACzB,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,QAAQ,GAAG,MAAK;IACzB,OAAO;AACH,QAAA,IAAI,EAAE;AACF,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,eAAe,EAAE,QAAQ;AACzB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,aAAa,EAAE;AAClB,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,eAAe,EAAE,QAAQ;AACzB,YAAA,OAAO,EAAE;AACZ;KACJ;AACL;AAEO,MAAM,gBAAgB,GAAG,CAAC,IAAa,KAAI;IAC9C,OAAO;AACH,QAAA,IAAI,EAAE;AACF,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,QAAQ,EAAE;AACb,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI;AAC7B,YAAA,QAAQ,EAAE;AACb;KACJ;AACL;AAGO,MAAM,kBAAkB,GAAG,CAAC,IAAa,KAAI;IAChD,OAAO;AACH,QAAA,IAAI,EAAE;AACF,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE;AACb,SAAA;AACD,QAAA,EAAE,EAAE;AACA,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;AACxB,YAAA,QAAQ,EAAE;AACb;KACJ;AACL;;;;;;;;;;;;;;;;;;;"}
|