@xanui/core 1.2.63 → 1.2.65
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/AppRoot/index.cjs +4 -4
- package/AppRoot/index.cjs.map +1 -1
- package/AppRoot/index.d.ts +1 -1
- package/AppRoot/index.js +4 -4
- package/AppRoot/index.js.map +1 -1
- package/Iframe/index.cjs +3 -2
- package/Iframe/index.cjs.map +1 -1
- package/Iframe/index.js +3 -2
- package/Iframe/index.js.map +1 -1
- package/Transition/index.cjs +75 -14
- package/Transition/index.cjs.map +1 -1
- package/Transition/index.d.ts +27 -4
- package/Transition/index.js +76 -15
- package/Transition/index.js.map +1 -1
- package/{hooks/useTransition → Transition}/variants.cjs +60 -20
- package/Transition/variants.cjs.map +1 -0
- package/{hooks/useTransition → Transition}/variants.d.ts +38 -10
- package/{hooks/useTransition → Transition}/variants.js +59 -21
- package/Transition/variants.js.map +1 -0
- package/hooks/useInterface.cjs +6 -1
- package/hooks/useInterface.cjs.map +1 -1
- package/hooks/useInterface.d.ts +2 -2
- package/hooks/useInterface.js +6 -1
- package/hooks/useInterface.js.map +1 -1
- package/index.cjs +9 -13
- package/index.cjs.map +1 -1
- package/index.d.ts +2 -4
- package/index.js +1 -3
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/theme/ThemeDefaultOptions.cjs +0 -7
- package/theme/ThemeDefaultOptions.cjs.map +1 -1
- package/theme/ThemeDefaultOptions.js +1 -7
- package/theme/ThemeDefaultOptions.js.map +1 -1
- package/theme/ThemeProvider.cjs +6 -13
- package/theme/ThemeProvider.cjs.map +1 -1
- package/theme/ThemeProvider.d.ts +3 -2
- package/theme/ThemeProvider.js +7 -14
- package/theme/ThemeProvider.js.map +1 -1
- package/theme/core.cjs +28 -20
- package/theme/core.cjs.map +1 -1
- package/theme/core.d.ts +4 -8
- package/theme/core.js +28 -19
- package/theme/core.js.map +1 -1
- package/theme/index.cjs +7 -3
- package/theme/index.cjs.map +1 -1
- package/theme/index.js +7 -2
- package/theme/index.js.map +1 -1
- package/theme/types.d.ts +1 -0
- 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.map +0 -1
- package/theme/createTheme.cjs +0 -29
- package/theme/createTheme.cjs.map +0 -1
- package/theme/createTheme.d.ts +0 -5
- package/theme/createTheme.js +0 -27
- package/theme/createTheme.js.map +0 -1
package/theme/core.js
CHANGED
|
@@ -1,23 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import React__default, { useContext } from 'react';
|
|
3
|
+
import { breakpoints, alpha } from '../css/index.js';
|
|
4
|
+
import { lightThemeOptions, darkThemeOptions } from './ThemeDefaultOptions.js';
|
|
2
5
|
|
|
3
|
-
const ThemeFactory = new Map();
|
|
4
|
-
const ThemeContex = React__default.createContext({
|
|
5
|
-
theme: "light",
|
|
6
|
-
onChange: () => { }
|
|
7
|
-
});
|
|
8
|
-
const getTheme = (theme) => ThemeFactory.get(theme);
|
|
9
|
-
const useTheme = () => {
|
|
10
|
-
const ctx = useContext(ThemeContex);
|
|
11
|
-
const theme = ThemeFactory.get(ctx === null || ctx === void 0 ? void 0 : ctx.theme);
|
|
12
|
-
if (!theme) {
|
|
13
|
-
console.error("Theme not found, returning light theme as fallback");
|
|
14
|
-
return ThemeFactory.get("light");
|
|
15
|
-
}
|
|
16
|
-
theme.change = (theme) => {
|
|
17
|
-
ctx.onChange(theme);
|
|
18
|
-
};
|
|
19
|
-
return theme;
|
|
20
|
-
};
|
|
21
6
|
const mergeObject = (a, b) => {
|
|
22
7
|
a = Object.assign({}, a);
|
|
23
8
|
b = Object.assign({}, b);
|
|
@@ -32,6 +17,30 @@ const mergeObject = (a, b) => {
|
|
|
32
17
|
}
|
|
33
18
|
return a;
|
|
34
19
|
};
|
|
20
|
+
const createTheme = (name, options, mode = "light") => {
|
|
21
|
+
const defaultOptions = mode === 'light' ? lightThemeOptions : darkThemeOptions;
|
|
22
|
+
let theme = mergeObject(defaultOptions, Object.assign(Object.assign({}, options), { name, breakpoints: breakpoints }));
|
|
23
|
+
// add alpha colors
|
|
24
|
+
for (let color in theme.colors) {
|
|
25
|
+
const c = theme.colors[color];
|
|
26
|
+
const is_common = color === 'divider' || color === 'background' || color === 'text';
|
|
27
|
+
c.soft = {
|
|
28
|
+
primary: is_common ? alpha(c.primary, 0.60) : alpha(c.primary, 0.08),
|
|
29
|
+
secondary: is_common ? alpha(c.primary, 0.90) : alpha(c.primary, 0.12)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return theme;
|
|
33
|
+
};
|
|
34
|
+
const ThemeContex = React__default.createContext({
|
|
35
|
+
theme: createTheme("light", {}),
|
|
36
|
+
onChange(theme) { },
|
|
37
|
+
});
|
|
38
|
+
const useTheme = () => {
|
|
39
|
+
const ctx = useContext(ThemeContex);
|
|
40
|
+
const theme = ctx.theme;
|
|
41
|
+
theme.change = (theme) => ctx.onChange(theme);
|
|
42
|
+
return theme;
|
|
43
|
+
};
|
|
35
44
|
|
|
36
|
-
export { ThemeContex,
|
|
45
|
+
export { ThemeContex, createTheme, mergeObject, useTheme };
|
|
37
46
|
//# sourceMappingURL=core.js.map
|
package/theme/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../../src/theme/core.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../../src/theme/core.ts"],"sourcesContent":["\"use client\"\nimport React, { useContext } from \"react\"\nimport { ObjectType, ThemeOptions, ThemeOptionInput, ThemeOptionsColor } from \"./types\"\nimport { alpha, breakpoints } from \"../css\"\nimport { darkThemeOptions, lightThemeOptions } from \"./ThemeDefaultOptions\"\n\nexport const mergeObject = (a: ObjectType, b: ObjectType) => {\n a = { ...a }\n b = { ...b }\n for (const key in b) {\n const v = (b as any)[key]\n if (typeof v === 'object' && !Array.isArray(v) && !React.isValidElement(v)) {\n a[key] = mergeObject(a[key], b[key])\n } else {\n a[key] = v\n }\n }\n return a\n}\n\n\nexport const createTheme = (name: string, options: ThemeOptionInput, mode: \"light\" | \"dark\" = \"light\"): ThemeOptions => {\n const defaultOptions = mode === 'light' ? lightThemeOptions : darkThemeOptions\n let theme: any = mergeObject(defaultOptions, {\n ...options,\n name,\n breakpoints: breakpoints\n })\n\n // add alpha colors\n for (let color in theme.colors) {\n const c = theme.colors[color] as ThemeOptionsColor\n const is_common = color === 'divider' || color === 'background' || color === 'text'\n c.soft = {\n primary: is_common ? alpha(c.primary, 0.60) : alpha(c.primary, 0.08),\n secondary: is_common ? alpha(c.primary, 0.90) : alpha(c.primary, 0.12)\n }\n }\n\n return theme as ThemeOptions\n}\n\nexport type ThemeCntextProps = {\n theme: ThemeOptions,\n onChange: (theme: ThemeOptions) => void\n}\n\nexport const ThemeContex = React.createContext<ThemeCntextProps>({\n theme: createTheme(\"light\", {}),\n onChange(theme) { },\n})\n\nexport const useTheme = () => {\n const ctx = useContext(ThemeContex)\n const theme = ctx.theme\n theme.change = (theme: ThemeOptions) => ctx.onChange(theme)\n return theme\n}\n\n"],"names":[],"mappings":";;;;;;;;AASG;AACG;;AAEG;;;AAEA;;;AAGN;AACH;AAGO;AACJ;AACA;;AAOA;;AAEG;;;;;;AAOH;AACH;AAOO;AACJ;;AAEF;AAEM;AACJ;AACA;AACA;AACA;AACH;;"}
|
package/theme/index.cjs
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
require('tslib');
|
|
5
|
+
require('react/jsx-runtime');
|
|
6
|
+
require('react');
|
|
7
|
+
require('../Tag/index.cjs');
|
|
4
8
|
var core = require('./core.cjs');
|
|
5
9
|
require('../css/getValue.cjs');
|
|
6
10
|
require('oncss');
|
|
7
|
-
|
|
11
|
+
require('../Document/index.cjs');
|
|
12
|
+
require('../css/CSSCacheProvider.cjs');
|
|
8
13
|
|
|
9
14
|
const themeRootClass = (theme) => `.xui-${theme}-theme-root`;
|
|
10
15
|
|
|
11
|
-
exports.
|
|
16
|
+
exports.createTheme = core.createTheme;
|
|
12
17
|
exports.useTheme = core.useTheme;
|
|
13
|
-
exports.ThemeProvider = ThemeProvider;
|
|
14
18
|
exports.themeRootClass = themeRootClass;
|
|
15
19
|
//# sourceMappingURL=index.cjs.map
|
package/theme/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/theme/index.tsx"],"sourcesContent":["\"use client\"\nimport
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/theme/index.tsx"],"sourcesContent":["\"use client\"\nimport ThemeProvider from './ThemeProvider'\nimport { useTheme, createTheme } from './core'\nimport { lightThemeOptions, darkThemeOptions } from './ThemeDefaultOptions'\nexport type { ThemeProviderProps } from './ThemeProvider'\n\nexport const themeRootClass = (theme: string) => `.xui-${theme}-theme-root`\n\nexport {\n ThemeProvider,\n createTheme,\n useTheme,\n lightThemeOptions,\n darkThemeOptions\n}\n\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMO;;;;"}
|
package/theme/index.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
2
|
+
import 'tslib';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import 'react';
|
|
5
|
+
import '../Tag/index.js';
|
|
6
|
+
export { createTheme, useTheme } from './core.js';
|
|
3
7
|
import '../css/getValue.js';
|
|
4
8
|
import 'oncss';
|
|
5
|
-
|
|
9
|
+
import '../Document/index.js';
|
|
10
|
+
import '../css/CSSCacheProvider.js';
|
|
6
11
|
|
|
7
12
|
const themeRootClass = (theme) => `.xui-${theme}-theme-root`;
|
|
8
13
|
|
package/theme/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/theme/index.tsx"],"sourcesContent":["\"use client\"\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/theme/index.tsx"],"sourcesContent":["\"use client\"\nimport ThemeProvider from './ThemeProvider'\nimport { useTheme, createTheme } from './core'\nimport { lightThemeOptions, darkThemeOptions } from './ThemeDefaultOptions'\nexport type { ThemeProviderProps } from './ThemeProvider'\n\nexport const themeRootClass = (theme: string) => `.xui-${theme}-theme-root`\n\nexport {\n ThemeProvider,\n createTheme,\n useTheme,\n lightThemeOptions,\n darkThemeOptions\n}\n\n"],"names":[],"mappings":";;;;;;;;;;;AAMO;;"}
|
package/theme/types.d.ts
CHANGED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var tslib = require('tslib');
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var useAnimation = require('../useAnimation.cjs');
|
|
7
|
-
var index$1 = require('../../css/index.cjs');
|
|
8
|
-
var oncss = require('oncss');
|
|
9
|
-
var variants = require('./variants.cjs');
|
|
10
|
-
var index = require('../../Document/index.cjs');
|
|
11
|
-
var CSSCacheProvider = require('../../css/CSSCacheProvider.cjs');
|
|
12
|
-
|
|
13
|
-
const style = (obj = {}, cacheId, doc) => {
|
|
14
|
-
return index$1.css(obj, { selector: "#", container: doc, cacheId }).classname;
|
|
15
|
-
};
|
|
16
|
-
const getVariant = (rect, variant) => {
|
|
17
|
-
let fn = typeof variant === 'string' ? variants[variant] : variant;
|
|
18
|
-
if (!fn)
|
|
19
|
-
throw new Error(`Transition variant "${variant}" not found.`);
|
|
20
|
-
return fn(rect);
|
|
21
|
-
};
|
|
22
|
-
const useTransition = (_a) => {
|
|
23
|
-
var { open } = _a, props = tslib.__rest(_a, ["open"]);
|
|
24
|
-
let { disableInitialTransition = false, variant = "fade", duration = 400, delay, ease, easing, exitOnUnmount = false, onOpen, onOpened, onClose, onClosed, onState } = props;
|
|
25
|
-
const doc = index.useDocument();
|
|
26
|
-
const cacheId = CSSCacheProvider.useCSSCacheId();
|
|
27
|
-
let _ease = ease || useAnimation.animationEases[easing] || useAnimation.animationEases.bounce;
|
|
28
|
-
const id = "xui-transition-" + React.useId();
|
|
29
|
-
const [state, setState] = React.useState({
|
|
30
|
-
initial: false,
|
|
31
|
-
classname: style({ visibility: "hidden" }, cacheId, doc === null || doc === void 0 ? void 0 : doc.document),
|
|
32
|
-
variant: variant,
|
|
33
|
-
rect: null,
|
|
34
|
-
stage: open ? "open" : "closed",
|
|
35
|
-
unmounted: false,
|
|
36
|
-
});
|
|
37
|
-
const getEle = () => doc === null || doc === void 0 ? void 0 : doc.document.querySelector(`[data-transition="${id}"]`);
|
|
38
|
-
const getBoundary = () => { var _a; return state.rect || ((_a = getEle()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || new DOMRect(0, 0, 0, 0); };
|
|
39
|
-
React.useEffect(() => {
|
|
40
|
-
if (exitOnUnmount && state.stage === 'closed') {
|
|
41
|
-
if (!open) {
|
|
42
|
-
setState(s => (Object.assign(Object.assign({}, s), { initial: false, classname: "", unmounted: true, variant: variant })));
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
setState(s => (Object.assign(Object.assign({}, s), { variant: variant, classname: style({ visibility: "hidden" }, cacheId, doc === null || doc === void 0 ? void 0 : doc.document), stage: "open" })));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}, [open, state.stage, exitOnUnmount, variant]);
|
|
49
|
-
// initial effect
|
|
50
|
-
React.useLayoutEffect(() => {
|
|
51
|
-
const ele = getEle();
|
|
52
|
-
if (!ele)
|
|
53
|
-
return;
|
|
54
|
-
if (exitOnUnmount && state.stage === 'closed')
|
|
55
|
-
return;
|
|
56
|
-
const rect = getBoundary();
|
|
57
|
-
let { from } = getVariant(rect, state.variant);
|
|
58
|
-
if (open && !state.initial) {
|
|
59
|
-
setState(s => (Object.assign(Object.assign({}, s), { classname: (!disableInitialTransition || state.unmounted) ? style(from, cacheId, doc === null || doc === void 0 ? void 0 : doc.document) : "", initial: true, rect: rect })));
|
|
60
|
-
let stimer = null;
|
|
61
|
-
let etimer = null;
|
|
62
|
-
ele.ontransitionstart = () => {
|
|
63
|
-
clearTimeout(stimer);
|
|
64
|
-
stimer = setTimeout(() => {
|
|
65
|
-
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
66
|
-
(onOpen && isOpen) && onOpen();
|
|
67
|
-
(onClose && !isOpen) && onClose();
|
|
68
|
-
onState && onState(isOpen ? "open" : "close");
|
|
69
|
-
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "open" : "close" })));
|
|
70
|
-
}, 1);
|
|
71
|
-
};
|
|
72
|
-
ele.ontransitionend = () => {
|
|
73
|
-
clearTimeout(etimer);
|
|
74
|
-
etimer = setTimeout(() => {
|
|
75
|
-
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
76
|
-
(onOpened && isOpen) && onOpened();
|
|
77
|
-
(onClosed && !isOpen) && onClosed();
|
|
78
|
-
onState && onState(isOpen ? "opened" : "closed");
|
|
79
|
-
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "opened" : "closed" })));
|
|
80
|
-
}, 1);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
else if (!state.initial) {
|
|
84
|
-
setState(s => (Object.assign(Object.assign({}, s), { classname: style(from, cacheId, doc === null || doc === void 0 ? void 0 : doc.document), rect: rect })));
|
|
85
|
-
}
|
|
86
|
-
}, [open, state.initial, state.stage, exitOnUnmount]);
|
|
87
|
-
React.useEffect(() => {
|
|
88
|
-
if (state.initial) {
|
|
89
|
-
let _variant = state.variant !== variant ? variant : state.variant;
|
|
90
|
-
const { from, to } = getVariant(state.rect, _variant);
|
|
91
|
-
let _css = open ? to : from;
|
|
92
|
-
let trans = ` ${duration}ms ${_ease} ${delay || 0}ms`;
|
|
93
|
-
let _ = Object.assign(Object.assign({}, _css), { transition: Object.keys(_css || {}).map(k => oncss.formatCSSProp(k)).join(trans + ", ") + trans });
|
|
94
|
-
setState(s => (Object.assign(Object.assign({}, s), { classname: style(_, cacheId, doc === null || doc === void 0 ? void 0 : doc.document), variant: _variant })));
|
|
95
|
-
}
|
|
96
|
-
}, [open, state.initial, variant]);
|
|
97
|
-
return {
|
|
98
|
-
exited: exitOnUnmount && state.stage === 'closed',
|
|
99
|
-
props: {
|
|
100
|
-
'id': state.classname,
|
|
101
|
-
'data-transition': id,
|
|
102
|
-
'data-transition-state': open ? 'open' : 'close',
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
module.exports = useTransition;
|
|
108
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/hooks/useTransition/index.ts"],"sourcesContent":["\"use client\";\nimport { useState, useEffect, useId, useLayoutEffect } from 'react';\nimport { animationEases } from '../useAnimation';\nimport { css } from '../../css';\nimport { formatCSSProp } from 'oncss';\nimport { CSSProps } from '../../css/types';\nimport * as variants from './variants'\nimport { useDocument } from '../../Document';\nimport { useCSSCacheId } from '../../css/CSSCacheProvider';\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 style = (obj = {}, cacheId: string, doc?: Document) => {\n return css(obj, { selector: \"#\", container: doc, cacheId }).classname;\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 const doc = useDocument();\n const cacheId = useCSSCacheId()\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: style({ visibility: \"hidden\" }, cacheId, doc?.document),\n variant: variant,\n rect: null as DOMRect | null,\n stage: open ? \"open\" : \"closed\",\n unmounted: false,\n })\n\n const getEle = () => doc?.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: style({ visibility: \"hidden\" }, cacheId, doc?.document),\n stage: \"open\",\n }))\n }\n }\n }, [open, state.stage, exitOnUnmount, variant])\n\n // initial effect\n useLayoutEffect(() => {\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) ? style(from, cacheId, doc?.document) : \"\",\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: style(from, cacheId, doc?.document),\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: style(_, cacheId, doc?.document),\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":";;;;;;;;;;;;AAgCA;AACG;AACH;AAEA;AACG;AACA;AAAS;AACT;AACH;AAEA;AAAuB;AACpB;AAcA;AACA;AACA;AACA;AACA;AACG;AACA;AACA;AACA;;AAEA;AACF;AAED;AACA;;;;;;;AAaS;;;AAQT;;;AAIG;AACA;;AACA;;AAEA;AACA;AACA;;;;AASG;;AAEG;;AAEG;;AAEA;;;AAMN;AAEA;;AAEG;;AAEG;;AAEA;;;AAMN;;AACI;AACJ;;AAMN;;AAIG;AACG;AACA;;;AAGA;AAIA;;;;AASH;AACA;;AAEG;;AAEF;;AAEP;;"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { animationEases } from '../useAnimation.js';
|
|
2
|
-
import { CSSProps } from '../../css/types.js';
|
|
3
|
-
import * as variants from './variants.js';
|
|
4
|
-
|
|
5
|
-
type UseTransitionVariantTypes = keyof typeof variants;
|
|
6
|
-
type UseTransitionState = "open" | "opened" | "close" | "closed";
|
|
7
|
-
type UseTransitionVariant = (rect: DOMRect) => ({
|
|
8
|
-
from: CSSProps;
|
|
9
|
-
to: CSSProps;
|
|
10
|
-
});
|
|
11
|
-
type UseTransitionProps = {
|
|
12
|
-
open: boolean;
|
|
13
|
-
variant: UseTransitionVariant | UseTransitionVariantTypes;
|
|
14
|
-
ease?: string;
|
|
15
|
-
easing?: keyof typeof animationEases;
|
|
16
|
-
duration?: number;
|
|
17
|
-
delay?: number;
|
|
18
|
-
disableInitialTransition?: boolean;
|
|
19
|
-
exitOnUnmount?: boolean;
|
|
20
|
-
onOpen?: () => void;
|
|
21
|
-
onOpened?: () => void;
|
|
22
|
-
onClose?: () => void;
|
|
23
|
-
onClosed?: () => void;
|
|
24
|
-
onState?: (state: UseTransitionState) => void;
|
|
25
|
-
};
|
|
26
|
-
declare const useTransition: ({ open, ...props }: UseTransitionProps) => {
|
|
27
|
-
exited: boolean;
|
|
28
|
-
props: {
|
|
29
|
-
id: string;
|
|
30
|
-
'data-transition': string;
|
|
31
|
-
'data-transition-state': string;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export { useTransition as default };
|
|
36
|
-
export type { UseTransitionProps, UseTransitionState, UseTransitionVariant, UseTransitionVariantTypes };
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { __rest } from 'tslib';
|
|
3
|
-
import { useId, useState, useEffect, useLayoutEffect } from 'react';
|
|
4
|
-
import { animationEases } from '../useAnimation.js';
|
|
5
|
-
import { css } from '../../css/index.js';
|
|
6
|
-
import { formatCSSProp } from 'oncss';
|
|
7
|
-
import * as variants from './variants.js';
|
|
8
|
-
import { useDocument } from '../../Document/index.js';
|
|
9
|
-
import { useCSSCacheId } from '../../css/CSSCacheProvider.js';
|
|
10
|
-
|
|
11
|
-
const style = (obj = {}, cacheId, doc) => {
|
|
12
|
-
return css(obj, { selector: "#", container: doc, cacheId }).classname;
|
|
13
|
-
};
|
|
14
|
-
const getVariant = (rect, variant) => {
|
|
15
|
-
let fn = typeof variant === 'string' ? variants[variant] : variant;
|
|
16
|
-
if (!fn)
|
|
17
|
-
throw new Error(`Transition variant "${variant}" not found.`);
|
|
18
|
-
return fn(rect);
|
|
19
|
-
};
|
|
20
|
-
const useTransition = (_a) => {
|
|
21
|
-
var { open } = _a, props = __rest(_a, ["open"]);
|
|
22
|
-
let { disableInitialTransition = false, variant = "fade", duration = 400, delay, ease, easing, exitOnUnmount = false, onOpen, onOpened, onClose, onClosed, onState } = props;
|
|
23
|
-
const doc = useDocument();
|
|
24
|
-
const cacheId = useCSSCacheId();
|
|
25
|
-
let _ease = ease || animationEases[easing] || animationEases.bounce;
|
|
26
|
-
const id = "xui-transition-" + useId();
|
|
27
|
-
const [state, setState] = useState({
|
|
28
|
-
initial: false,
|
|
29
|
-
classname: style({ visibility: "hidden" }, cacheId, doc === null || doc === void 0 ? void 0 : doc.document),
|
|
30
|
-
variant: variant,
|
|
31
|
-
rect: null,
|
|
32
|
-
stage: open ? "open" : "closed",
|
|
33
|
-
unmounted: false,
|
|
34
|
-
});
|
|
35
|
-
const getEle = () => doc === null || doc === void 0 ? void 0 : doc.document.querySelector(`[data-transition="${id}"]`);
|
|
36
|
-
const getBoundary = () => { var _a; return state.rect || ((_a = getEle()) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || new DOMRect(0, 0, 0, 0); };
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
if (exitOnUnmount && state.stage === 'closed') {
|
|
39
|
-
if (!open) {
|
|
40
|
-
setState(s => (Object.assign(Object.assign({}, s), { initial: false, classname: "", unmounted: true, variant: variant })));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
setState(s => (Object.assign(Object.assign({}, s), { variant: variant, classname: style({ visibility: "hidden" }, cacheId, doc === null || doc === void 0 ? void 0 : doc.document), stage: "open" })));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}, [open, state.stage, exitOnUnmount, variant]);
|
|
47
|
-
// initial effect
|
|
48
|
-
useLayoutEffect(() => {
|
|
49
|
-
const ele = getEle();
|
|
50
|
-
if (!ele)
|
|
51
|
-
return;
|
|
52
|
-
if (exitOnUnmount && state.stage === 'closed')
|
|
53
|
-
return;
|
|
54
|
-
const rect = getBoundary();
|
|
55
|
-
let { from } = getVariant(rect, state.variant);
|
|
56
|
-
if (open && !state.initial) {
|
|
57
|
-
setState(s => (Object.assign(Object.assign({}, s), { classname: (!disableInitialTransition || state.unmounted) ? style(from, cacheId, doc === null || doc === void 0 ? void 0 : doc.document) : "", initial: true, rect: rect })));
|
|
58
|
-
let stimer = null;
|
|
59
|
-
let etimer = null;
|
|
60
|
-
ele.ontransitionstart = () => {
|
|
61
|
-
clearTimeout(stimer);
|
|
62
|
-
stimer = setTimeout(() => {
|
|
63
|
-
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
64
|
-
(onOpen && isOpen) && onOpen();
|
|
65
|
-
(onClose && !isOpen) && onClose();
|
|
66
|
-
onState && onState(isOpen ? "open" : "close");
|
|
67
|
-
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "open" : "close" })));
|
|
68
|
-
}, 1);
|
|
69
|
-
};
|
|
70
|
-
ele.ontransitionend = () => {
|
|
71
|
-
clearTimeout(etimer);
|
|
72
|
-
etimer = setTimeout(() => {
|
|
73
|
-
const isOpen = ele.getAttribute('data-transition-state') === 'open';
|
|
74
|
-
(onOpened && isOpen) && onOpened();
|
|
75
|
-
(onClosed && !isOpen) && onClosed();
|
|
76
|
-
onState && onState(isOpen ? "opened" : "closed");
|
|
77
|
-
setState(s => (Object.assign(Object.assign({}, s), { stage: isOpen ? "opened" : "closed" })));
|
|
78
|
-
}, 1);
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
else if (!state.initial) {
|
|
82
|
-
setState(s => (Object.assign(Object.assign({}, s), { classname: style(from, cacheId, doc === null || doc === void 0 ? void 0 : doc.document), rect: rect })));
|
|
83
|
-
}
|
|
84
|
-
}, [open, state.initial, state.stage, exitOnUnmount]);
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
if (state.initial) {
|
|
87
|
-
let _variant = state.variant !== variant ? variant : state.variant;
|
|
88
|
-
const { from, to } = getVariant(state.rect, _variant);
|
|
89
|
-
let _css = open ? to : from;
|
|
90
|
-
let trans = ` ${duration}ms ${_ease} ${delay || 0}ms`;
|
|
91
|
-
let _ = Object.assign(Object.assign({}, _css), { transition: Object.keys(_css || {}).map(k => formatCSSProp(k)).join(trans + ", ") + trans });
|
|
92
|
-
setState(s => (Object.assign(Object.assign({}, s), { classname: style(_, cacheId, doc === null || doc === void 0 ? void 0 : doc.document), variant: _variant })));
|
|
93
|
-
}
|
|
94
|
-
}, [open, state.initial, variant]);
|
|
95
|
-
return {
|
|
96
|
-
exited: exitOnUnmount && state.stage === 'closed',
|
|
97
|
-
props: {
|
|
98
|
-
'id': state.classname,
|
|
99
|
-
'data-transition': id,
|
|
100
|
-
'data-transition-state': open ? 'open' : 'close',
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export { useTransition as default };
|
|
106
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/hooks/useTransition/index.ts"],"sourcesContent":["\"use client\";\nimport { useState, useEffect, useId, useLayoutEffect } from 'react';\nimport { animationEases } from '../useAnimation';\nimport { css } from '../../css';\nimport { formatCSSProp } from 'oncss';\nimport { CSSProps } from '../../css/types';\nimport * as variants from './variants'\nimport { useDocument } from '../../Document';\nimport { useCSSCacheId } from '../../css/CSSCacheProvider';\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 style = (obj = {}, cacheId: string, doc?: Document) => {\n return css(obj, { selector: \"#\", container: doc, cacheId }).classname;\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 const doc = useDocument();\n const cacheId = useCSSCacheId()\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: style({ visibility: \"hidden\" }, cacheId, doc?.document),\n variant: variant,\n rect: null as DOMRect | null,\n stage: open ? \"open\" : \"closed\",\n unmounted: false,\n })\n\n const getEle = () => doc?.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: style({ visibility: \"hidden\" }, cacheId, doc?.document),\n stage: \"open\",\n }))\n }\n }\n }, [open, state.stage, exitOnUnmount, variant])\n\n // initial effect\n useLayoutEffect(() => {\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) ? style(from, cacheId, doc?.document) : \"\",\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: style(from, cacheId, doc?.document),\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: style(_, cacheId, doc?.document),\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":";;;;;;;;;;AAgCA;AACG;AACH;AAEA;AACG;AACA;AAAS;AACT;AACH;AAEA;AAAuB;AACpB;AAcA;AACA;AACA;AACA;AACA;AACG;AACA;AACA;AACA;;AAEA;AACF;AAED;AACA;;;;;;;AAaS;;;AAQT;;;AAIG;AACA;;AACA;;AAEA;AACA;AACA;;;;AASG;;AAEG;;AAEG;;AAEA;;;AAMN;AAEA;;AAEG;;AAEG;;AAEA;;;AAMN;;AACI;AACJ;;AAMN;;AAIG;AACG;AACA;;;AAGA;AAIA;;;;AASH;AACA;;AAEG;;AAEF;;AAEP;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"variants.cjs","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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"}
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
package/theme/createTheme.cjs
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var core = require('./core.cjs');
|
|
5
|
-
var index = require('../css/index.cjs');
|
|
6
|
-
var ThemeDefaultOptions = require('./ThemeDefaultOptions.cjs');
|
|
7
|
-
|
|
8
|
-
const createTheme = (name, options, mode = "light") => {
|
|
9
|
-
if (core.ThemeFactory.has(name)) {
|
|
10
|
-
console.error(`createTheme: The theme '${name}' is already defined. Please choose a different name for the theme.`);
|
|
11
|
-
return core.ThemeFactory.get(name);
|
|
12
|
-
}
|
|
13
|
-
const defaultOptions = mode === 'light' ? ThemeDefaultOptions.lightThemeOptions : ThemeDefaultOptions.darkThemeOptions;
|
|
14
|
-
let theme = core.mergeObject(defaultOptions, Object.assign(Object.assign({}, options), { name, breakpoints: index.breakpoints }));
|
|
15
|
-
// add alpha colors
|
|
16
|
-
for (let color in theme.colors) {
|
|
17
|
-
const c = theme.colors[color];
|
|
18
|
-
const is_common = color === 'divider' || color === 'background' || color === 'text';
|
|
19
|
-
c.soft = {
|
|
20
|
-
primary: is_common ? index.alpha(c.primary, 0.60) : index.alpha(c.primary, 0.08),
|
|
21
|
-
secondary: is_common ? index.alpha(c.primary, 0.90) : index.alpha(c.primary, 0.12)
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
core.ThemeFactory.set(name, theme);
|
|
25
|
-
return theme;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
exports.createTheme = createTheme;
|
|
29
|
-
//# sourceMappingURL=createTheme.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createTheme.cjs","sources":["../../src/theme/createTheme.ts"],"sourcesContent":["\"use client\"\nimport { ThemeOptions, ThemeOptionInput, ThemeOptionsColor } from \"./types\"\nimport { mergeObject, ThemeFactory } from \"./core\"\nimport { alpha, breakpoints } from \"../css\"\nimport { darkThemeOptions, lightThemeOptions } from \"./ThemeDefaultOptions\"\n\nexport const createTheme = (name: string, options: ThemeOptionInput, mode: \"light\" | \"dark\" = \"light\"): ThemeOptions => {\n if (ThemeFactory.has(name)) {\n console.error(`createTheme: The theme '${name}' is already defined. Please choose a different name for the theme.`)\n return ThemeFactory.get(name) as ThemeOptions\n }\n const defaultOptions = mode === 'light' ? lightThemeOptions : darkThemeOptions\n let theme: any = mergeObject(defaultOptions, {\n ...options,\n name,\n breakpoints: breakpoints\n })\n\n // add alpha colors\n for (let color in theme.colors) {\n const c = theme.colors[color] as ThemeOptionsColor\n const is_common = color === 'divider' || color === 'background' || color === 'text'\n c.soft = {\n primary: is_common ? alpha(c.primary, 0.60) : alpha(c.primary, 0.08),\n secondary: is_common ? alpha(c.primary, 0.90) : alpha(c.primary, 0.12)\n }\n }\n\n ThemeFactory.set(name, theme)\n\n return theme as ThemeOptions\n}\n"],"names":[],"mappings":";;;;;;;AAMO;AACJ;AACG;AACA;;AAEH;AACA;;AAOA;;AAEG;;;;;;AAOH;AAEA;AACH;;"}
|
package/theme/createTheme.d.ts
DELETED
package/theme/createTheme.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { ThemeFactory, mergeObject } from './core.js';
|
|
3
|
-
import { breakpoints, alpha } from '../css/index.js';
|
|
4
|
-
import { lightThemeOptions, darkThemeOptions } from './ThemeDefaultOptions.js';
|
|
5
|
-
|
|
6
|
-
const createTheme = (name, options, mode = "light") => {
|
|
7
|
-
if (ThemeFactory.has(name)) {
|
|
8
|
-
console.error(`createTheme: The theme '${name}' is already defined. Please choose a different name for the theme.`);
|
|
9
|
-
return ThemeFactory.get(name);
|
|
10
|
-
}
|
|
11
|
-
const defaultOptions = mode === 'light' ? lightThemeOptions : darkThemeOptions;
|
|
12
|
-
let theme = mergeObject(defaultOptions, Object.assign(Object.assign({}, options), { name, breakpoints: breakpoints }));
|
|
13
|
-
// add alpha colors
|
|
14
|
-
for (let color in theme.colors) {
|
|
15
|
-
const c = theme.colors[color];
|
|
16
|
-
const is_common = color === 'divider' || color === 'background' || color === 'text';
|
|
17
|
-
c.soft = {
|
|
18
|
-
primary: is_common ? alpha(c.primary, 0.60) : alpha(c.primary, 0.08),
|
|
19
|
-
secondary: is_common ? alpha(c.primary, 0.90) : alpha(c.primary, 0.12)
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
ThemeFactory.set(name, theme);
|
|
23
|
-
return theme;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export { createTheme };
|
|
27
|
-
//# sourceMappingURL=createTheme.js.map
|
package/theme/createTheme.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createTheme.js","sources":["../../src/theme/createTheme.ts"],"sourcesContent":["\"use client\"\nimport { ThemeOptions, ThemeOptionInput, ThemeOptionsColor } from \"./types\"\nimport { mergeObject, ThemeFactory } from \"./core\"\nimport { alpha, breakpoints } from \"../css\"\nimport { darkThemeOptions, lightThemeOptions } from \"./ThemeDefaultOptions\"\n\nexport const createTheme = (name: string, options: ThemeOptionInput, mode: \"light\" | \"dark\" = \"light\"): ThemeOptions => {\n if (ThemeFactory.has(name)) {\n console.error(`createTheme: The theme '${name}' is already defined. Please choose a different name for the theme.`)\n return ThemeFactory.get(name) as ThemeOptions\n }\n const defaultOptions = mode === 'light' ? lightThemeOptions : darkThemeOptions\n let theme: any = mergeObject(defaultOptions, {\n ...options,\n name,\n breakpoints: breakpoints\n })\n\n // add alpha colors\n for (let color in theme.colors) {\n const c = theme.colors[color] as ThemeOptionsColor\n const is_common = color === 'divider' || color === 'background' || color === 'text'\n c.soft = {\n primary: is_common ? alpha(c.primary, 0.60) : alpha(c.primary, 0.08),\n secondary: is_common ? alpha(c.primary, 0.90) : alpha(c.primary, 0.12)\n }\n }\n\n ThemeFactory.set(name, theme)\n\n return theme as ThemeOptions\n}\n"],"names":[],"mappings":";;;;;AAMO;AACJ;AACG;AACA;;AAEH;AACA;;AAOA;;AAEG;;;;;;AAOH;AAEA;AACH;;"}
|