@ioca/react 1.5.3 → 1.5.5
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/lib/cjs/components/editor/controls.js +31 -40
- package/lib/cjs/components/editor/controls.js.map +1 -1
- package/lib/cjs/components/editor/editor.js +204 -41
- package/lib/cjs/components/editor/editor.js.map +1 -1
- package/lib/cjs/components/editor/memtion.js +171 -0
- package/lib/cjs/components/editor/memtion.js.map +1 -0
- package/lib/cjs/components/image/image.js +46 -30
- package/lib/cjs/components/image/image.js.map +1 -1
- package/lib/cjs/components/input/textarea.js +12 -5
- package/lib/cjs/components/input/textarea.js.map +1 -1
- package/lib/cjs/components/modal/hookModal.js +1 -1
- package/lib/cjs/components/modal/hookModal.js.map +1 -1
- package/lib/cjs/components/picker/colors/footer.js +1 -1
- package/lib/cjs/components/picker/colors/footer.js.map +1 -1
- package/lib/cjs/components/popconfirm/popconfirm.js +3 -3
- package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/cjs/components/tabs/tabs.js +95 -37
- package/lib/cjs/components/tabs/tabs.js.map +1 -1
- package/lib/cjs/js/hooks.js +60 -40
- package/lib/cjs/js/hooks.js.map +1 -1
- package/lib/css/colors.css +13 -8
- package/lib/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/css/input.css +12 -6
- package/lib/css/reset.css +2 -5
- package/lib/css/utilities.css +9 -10
- package/lib/es/components/editor/controls.js +32 -37
- package/lib/es/components/editor/controls.js.map +1 -1
- package/lib/es/components/editor/editor.js +205 -42
- package/lib/es/components/editor/editor.js.map +1 -1
- package/lib/es/components/editor/memtion.js +160 -0
- package/lib/es/components/editor/memtion.js.map +1 -0
- package/lib/es/components/image/image.js +47 -31
- package/lib/es/components/image/image.js.map +1 -1
- package/lib/es/components/image/index.js +2 -2
- package/lib/es/components/image/list.js +2 -2
- package/lib/es/components/image/list.js.map +1 -1
- package/lib/es/components/input/textarea.js +12 -5
- package/lib/es/components/input/textarea.js.map +1 -1
- package/lib/es/components/modal/hookModal.js +1 -1
- package/lib/es/components/modal/hookModal.js.map +1 -1
- package/lib/es/components/picker/colors/footer.js +1 -1
- package/lib/es/components/picker/colors/footer.js.map +1 -1
- package/lib/es/components/popconfirm/popconfirm.js +3 -3
- package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
- package/lib/es/components/tabs/tabs.js +95 -37
- package/lib/es/components/tabs/tabs.js.map +1 -1
- package/lib/es/components/upload/renderFile.js +2 -2
- package/lib/es/components/upload/renderFile.js.map +1 -1
- package/lib/es/js/hooks.js +61 -41
- package/lib/es/js/hooks.js.map +1 -1
- package/lib/index.js +608 -195
- package/lib/types/components/editor/type.d.ts +25 -12
- package/lib/types/components/image/image.d.ts +2 -2
- package/lib/types/components/image/index.d.ts +2 -2
- package/lib/types/components/input/type.d.ts +1 -0
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
|
|
|
18
18
|
var classNames__default = /*#__PURE__*/_interopDefaultCompat(classNames);
|
|
19
19
|
|
|
20
20
|
const Tabs = ((props) => {
|
|
21
|
-
const { ref, active, tabs: items, type = "default", prepend, append, children, className, vertical, toggable, navsJustify = "start", bar = true, hideMore, barClass, renderMore = () => (jsxRuntime.jsx(button.default, { flat: true, square: true, size:
|
|
21
|
+
const { ref, active, tabs: items, type = "default", prepend, append, children, className, vertical, toggable, navsJustify = "start", bar = true, hideMore, barClass, renderMore = () => (jsxRuntime.jsx(button.default, { flat: true, square: true, size: "small", children: jsxRuntime.jsx(icon.default, { icon: jsxRuntime.jsx(material.MoreHorizRound, {}) }) })), onTabChange, ...rest } = props;
|
|
22
22
|
const navRefs = react.useRef([]);
|
|
23
23
|
const barRef = react.useRef(null);
|
|
24
24
|
const navsRef = react.useRef(null);
|
|
@@ -28,10 +28,15 @@ const Tabs = ((props) => {
|
|
|
28
28
|
const [barStyle, setBarStyle] = react.useState({});
|
|
29
29
|
const [cachedTabs, setCachedTabs] = react.useState([]);
|
|
30
30
|
const [overflow, setOverflow] = react.useState(false);
|
|
31
|
-
const [moreTabs, setMoreTabs] = react.useState([]);
|
|
32
31
|
const [tabs, setTabs] = react.useState([]);
|
|
33
32
|
const { observe, unobserve } = hooks.useIntersectionObserver();
|
|
34
33
|
const size = hooks.useSize(navsRef);
|
|
34
|
+
const tabsRef = react.useRef(tabs);
|
|
35
|
+
tabsRef.current = tabs;
|
|
36
|
+
const activeKeyRef = react.useRef(activeKey);
|
|
37
|
+
activeKeyRef.current = activeKey;
|
|
38
|
+
const prevActiveKeyRef = react.useRef(prevActiveKey);
|
|
39
|
+
prevActiveKeyRef.current = prevActiveKey;
|
|
35
40
|
react.useEffect(() => {
|
|
36
41
|
contentsRef.current.clear();
|
|
37
42
|
if (!items) {
|
|
@@ -68,10 +73,11 @@ const Tabs = ((props) => {
|
|
|
68
73
|
}));
|
|
69
74
|
}, [children, items]);
|
|
70
75
|
const add = (tab) => {
|
|
71
|
-
const
|
|
72
|
-
const
|
|
76
|
+
const currentTabs = tabsRef.current;
|
|
77
|
+
const tkey = String(tab.key ?? currentTabs.length);
|
|
78
|
+
const i = currentTabs.findIndex((t) => t.key === tkey);
|
|
73
79
|
if (i > -1) {
|
|
74
|
-
open(
|
|
80
|
+
open(currentTabs[i].key ?? `${i}`);
|
|
75
81
|
return;
|
|
76
82
|
}
|
|
77
83
|
contentsRef.current.set(tkey, tab.content);
|
|
@@ -80,20 +86,34 @@ const Tabs = ((props) => {
|
|
|
80
86
|
open(tkey);
|
|
81
87
|
};
|
|
82
88
|
const close = (key) => {
|
|
83
|
-
const
|
|
89
|
+
const currentTabs = tabsRef.current;
|
|
90
|
+
const i = currentTabs.findIndex((t) => t.key === key);
|
|
84
91
|
if (i < 0)
|
|
85
92
|
return;
|
|
86
93
|
contentsRef.current.delete(key);
|
|
87
|
-
const nextTabs = [...
|
|
94
|
+
const nextTabs = [...currentTabs];
|
|
88
95
|
nextTabs.splice(i, 1);
|
|
89
96
|
setTabs(nextTabs);
|
|
90
|
-
if (
|
|
97
|
+
if (activeKeyRef.current !== key)
|
|
91
98
|
return;
|
|
92
99
|
const next = nextTabs[i] || nextTabs[i - 1];
|
|
93
|
-
|
|
100
|
+
const prev = prevActiveKeyRef.current;
|
|
101
|
+
const nextKey = prev && nextTabs.some((t) => t.key === prev) ? prev : next?.key;
|
|
102
|
+
open(nextKey ?? "");
|
|
94
103
|
};
|
|
95
104
|
const open = (key) => {
|
|
96
|
-
|
|
105
|
+
const nextKey = key || undefined;
|
|
106
|
+
if (nextKey === undefined) {
|
|
107
|
+
onTabChange?.(undefined, activeKey);
|
|
108
|
+
setPrevActiveKey(activeKey);
|
|
109
|
+
setActiveKey(undefined);
|
|
110
|
+
setBarStyle({
|
|
111
|
+
height: 0,
|
|
112
|
+
width: 0,
|
|
113
|
+
});
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (nextKey === activeKey) {
|
|
97
117
|
if (!toggable)
|
|
98
118
|
return;
|
|
99
119
|
onTabChange?.(undefined, key);
|
|
@@ -105,38 +125,75 @@ const Tabs = ((props) => {
|
|
|
105
125
|
return;
|
|
106
126
|
}
|
|
107
127
|
setPrevActiveKey(activeKey);
|
|
108
|
-
onTabChange?.(
|
|
109
|
-
setActiveKey(
|
|
128
|
+
onTabChange?.(nextKey, activeKey);
|
|
129
|
+
setActiveKey(nextKey);
|
|
130
|
+
};
|
|
131
|
+
const handleKeyAction = (e, action) => {
|
|
132
|
+
if (!["Enter", " "].includes(e.key))
|
|
133
|
+
return;
|
|
134
|
+
e.preventDefault();
|
|
135
|
+
action();
|
|
136
|
+
};
|
|
137
|
+
const scrollToTab = (key) => {
|
|
138
|
+
const index = tabsRef.current.findIndex((tab) => tab.key === key);
|
|
139
|
+
const nav = navRefs.current[index];
|
|
140
|
+
nav?.scrollIntoView({
|
|
141
|
+
behavior: "smooth",
|
|
142
|
+
block: "nearest",
|
|
143
|
+
inline: "nearest",
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
const handleMoreTabClick = (key) => {
|
|
147
|
+
open(key);
|
|
148
|
+
scrollToTab(key);
|
|
110
149
|
};
|
|
111
150
|
react.useEffect(() => {
|
|
112
|
-
if (!size || hideMore || !observe)
|
|
151
|
+
if (!size || hideMore || !observe || !unobserve)
|
|
113
152
|
return;
|
|
114
153
|
const { scrollHeight, scrollWidth } = navsRef.current;
|
|
115
154
|
const { width, height } = size;
|
|
116
155
|
const nextOverflow = scrollHeight > height || scrollWidth > width;
|
|
117
|
-
setOverflow(nextOverflow);
|
|
118
|
-
if (!nextOverflow)
|
|
156
|
+
setOverflow((v) => (v === nextOverflow ? v : nextOverflow));
|
|
157
|
+
if (!nextOverflow) {
|
|
158
|
+
setTabs((ts) => {
|
|
159
|
+
let changed = false;
|
|
160
|
+
const next = ts.map((t) => {
|
|
161
|
+
if (t.intersecting === undefined ||
|
|
162
|
+
t.intersecting === true) {
|
|
163
|
+
return t;
|
|
164
|
+
}
|
|
165
|
+
changed = true;
|
|
166
|
+
return { ...t, intersecting: true };
|
|
167
|
+
});
|
|
168
|
+
return changed ? next : ts;
|
|
169
|
+
});
|
|
119
170
|
return;
|
|
171
|
+
}
|
|
172
|
+
const observed = [];
|
|
120
173
|
navRefs.current.map((nav, i) => {
|
|
121
174
|
if (!nav)
|
|
122
175
|
return;
|
|
123
|
-
|
|
176
|
+
observed.push(nav);
|
|
177
|
+
observe(nav, (_tar, visible) => {
|
|
124
178
|
setTabs((ts) => {
|
|
125
179
|
if (!ts[i])
|
|
126
180
|
return ts;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return
|
|
181
|
+
if (ts[i]?.intersecting === visible)
|
|
182
|
+
return ts;
|
|
183
|
+
return ts.map((t, idx) => idx === i ? { ...t, intersecting: visible } : t);
|
|
130
184
|
});
|
|
131
185
|
});
|
|
132
186
|
});
|
|
133
|
-
|
|
187
|
+
return () => {
|
|
188
|
+
observed.map((el) => unobserve(el));
|
|
189
|
+
};
|
|
190
|
+
}, [size, hideMore, tabs.length, observe, unobserve]);
|
|
134
191
|
react.useEffect(() => {
|
|
135
192
|
if (!bar || type === "pane" || activeKey === undefined) {
|
|
136
193
|
return;
|
|
137
194
|
}
|
|
138
195
|
const index = tabs.findIndex((tab) => tab.key === activeKey);
|
|
139
|
-
setTimeout(() => {
|
|
196
|
+
const timer = window.setTimeout(() => {
|
|
140
197
|
const nav = navRefs.current[index];
|
|
141
198
|
if (!nav)
|
|
142
199
|
return;
|
|
@@ -155,19 +212,15 @@ const Tabs = ((props) => {
|
|
|
155
212
|
transform: `translate(${offsetLeft}px, ${offsetTop}px)`,
|
|
156
213
|
});
|
|
157
214
|
}, 16);
|
|
215
|
+
return () => {
|
|
216
|
+
window.clearTimeout(timer);
|
|
217
|
+
};
|
|
158
218
|
}, [activeKey, bar, size, tabs, type, vertical]);
|
|
159
219
|
react.useEffect(() => {
|
|
160
220
|
if (active === undefined || activeKey === active)
|
|
161
221
|
return;
|
|
162
222
|
open(active);
|
|
163
223
|
}, [active]);
|
|
164
|
-
react.useEffect(() => {
|
|
165
|
-
if (hideMore || !unobserve)
|
|
166
|
-
return;
|
|
167
|
-
return () => {
|
|
168
|
-
navRefs.current?.map(unobserve);
|
|
169
|
-
};
|
|
170
|
-
}, [tabs.length, hideMore, unobserve]);
|
|
171
224
|
react.useEffect(() => {
|
|
172
225
|
if (!navsRef.current || vertical)
|
|
173
226
|
return;
|
|
@@ -188,30 +241,35 @@ const Tabs = ((props) => {
|
|
|
188
241
|
return;
|
|
189
242
|
navsRef.current.removeEventListener("wheel", handleMouseWheel);
|
|
190
243
|
};
|
|
191
|
-
}, [
|
|
244
|
+
}, [vertical]);
|
|
192
245
|
react.useImperativeHandle(ref, () => ({
|
|
193
246
|
open,
|
|
194
247
|
close,
|
|
195
248
|
add,
|
|
196
249
|
navs: navsRef,
|
|
197
250
|
}));
|
|
251
|
+
const moreTabs = !hideMore && overflow
|
|
252
|
+
? tabs.filter((tab) => tab.intersecting === false)
|
|
253
|
+
: [];
|
|
198
254
|
return (jsxRuntime.jsxs("div", { className: classNames__default("i-tabs", { flex: vertical, [`i-tabs-${type}`]: type !== "default" }, className), ...rest, children: [jsxRuntime.jsxs("div", { className: classNames__default("i-tab-navs-container", {
|
|
199
255
|
"i-tab-navs-vertical": vertical,
|
|
200
|
-
}), children: [prepend, jsxRuntime.jsxs("div", { ref: navsRef, className: classNames__default("i-tab-navs", `justify-${navsJustify}`), children: [tabs.map((tab, i) => {
|
|
256
|
+
}), children: [prepend, jsxRuntime.jsxs("div", { ref: navsRef, className: classNames__default("i-tab-navs", `justify-${navsJustify}`), role: "tablist", "aria-orientation": vertical ? "vertical" : "horizontal", children: [tabs.map((tab, i) => {
|
|
201
257
|
const { title, key = `${i}`, closable } = tab;
|
|
258
|
+
const isActive = activeKey === key;
|
|
202
259
|
return (jsxRuntime.jsxs("a", { ref: (ref) => (navRefs.current[i] = ref), className: classNames__default("i-tab-nav", {
|
|
203
|
-
"i-tab-active":
|
|
204
|
-
}), onClick: () => open(key), children: [title, closable && (jsxRuntime.jsx(helpericon.default, { as:
|
|
260
|
+
"i-tab-active": isActive,
|
|
261
|
+
}), role: "tab", tabIndex: isActive ? 0 : -1, "aria-selected": isActive, onClick: () => open(key), onKeyDown: (e) => handleKeyAction(e, () => open(key)), children: [title, closable && (jsxRuntime.jsx(helpericon.default, { as: "i", active: true, className: "i-tab-nav-close", role: "button", tabIndex: 0, "aria-label": "\u5173\u95ED\u6807\u7B7E\u9875", onClick: (e) => {
|
|
262
|
+
e.preventDefault();
|
|
205
263
|
e.stopPropagation();
|
|
206
264
|
close(key);
|
|
207
|
-
} }))] }, key));
|
|
208
|
-
}), bar && (jsxRuntime.jsx("span", { ref: barRef, className: classNames__default("i-tab-navs-bar", barClass), style: barStyle }))] }), !hideMore && overflow && moreTabs.length > 0 && (jsxRuntime.jsx(popup.default, { arrow: false, position: vertical ? "right" : "bottom", align:
|
|
265
|
+
}, onKeyDown: (e) => handleKeyAction(e, () => close(key)) }))] }, key));
|
|
266
|
+
}), bar && (jsxRuntime.jsx("span", { ref: barRef, className: classNames__default("i-tab-navs-bar", barClass), style: barStyle }))] }), !hideMore && overflow && moreTabs.length > 0 && (jsxRuntime.jsx(popup.default, { arrow: false, position: vertical ? "right" : "bottom", align: "end", touchable: true, hideDelay: 500, content: jsxRuntime.jsx("div", { className: "i-tabs-morelist pd-4", children: moreTabs.map((tab, i) => {
|
|
209
267
|
const { key = `${i}`, title } = tab;
|
|
210
268
|
const isActive = activeKey === key;
|
|
211
269
|
return (jsxRuntime.jsx("a", { className: classNames__default("i-tab-nav", {
|
|
212
270
|
"i-tab-active": isActive,
|
|
213
|
-
}), onClick: () =>
|
|
214
|
-
}) }), children: renderMore(moreTabs) })), append] }), jsxRuntime.jsx("div", { className:
|
|
271
|
+
}), role: "button", tabIndex: 0, onClick: () => handleMoreTabClick(key), onKeyDown: (e) => handleKeyAction(e, () => handleMoreTabClick(key)), children: title }, key));
|
|
272
|
+
}) }), children: renderMore(moreTabs) })), append] }), jsxRuntime.jsx("div", { className: "i-tab-contents", children: tabs.map((tab, i) => {
|
|
215
273
|
const key = tab.key ?? `${i}`;
|
|
216
274
|
const content = contentsRef.current.get(key);
|
|
217
275
|
const isActive = activeKey === key;
|
|
@@ -219,7 +277,7 @@ const Tabs = ((props) => {
|
|
|
219
277
|
(key !== undefined && cachedTabs.includes(key));
|
|
220
278
|
return (show && (jsxRuntime.jsx("div", { className: classNames__default("i-tab-content", {
|
|
221
279
|
"i-tab-active": isActive,
|
|
222
|
-
}), children: content }, key)));
|
|
280
|
+
}), role: "tabpanel", "aria-hidden": !isActive, children: content }, key)));
|
|
223
281
|
}) })] }));
|
|
224
282
|
});
|
|
225
283
|
Tabs.Item = item.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sources":["../../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import { MoreHorizRound } from \"@ricons/material\";\r\nimport classNames from \"classnames\";\r\nimport {\r\n\tCSSProperties,\r\n\tChildren,\r\n\tReactNode,\r\n\tuseEffect,\r\n\tuseImperativeHandle,\r\n\tuseRef,\r\n\tuseState,\r\n} from \"react\";\r\nimport { useIntersectionObserver, useSize } from \"../../js/hooks\";\r\nimport Button from \"../button\";\r\nimport Icon from \"../icon\";\r\nimport Popup from \"../popup\";\r\nimport Helpericon from \"../utils/helpericon\";\r\nimport \"./index.css\";\r\nimport TabItem from \"./item\";\r\nimport { CompositionTabs, ITabItem, ITabs } from \"./type\";\r\n\r\nconst Tabs = ((props: ITabs) => {\r\n\tconst {\r\n\t\tref,\r\n\t\tactive,\r\n\t\ttabs: items,\r\n\t\ttype = \"default\",\r\n\t\tprepend,\r\n\t\tappend,\r\n\t\tchildren,\r\n\t\tclassName,\r\n\t\tvertical,\r\n\t\ttoggable,\r\n\t\tnavsJustify = \"start\",\r\n\t\tbar = true,\r\n\t\thideMore,\r\n\t\tbarClass,\r\n\t\trenderMore = () => (\r\n\t\t\t<Button flat square size='small'>\r\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\r\n\t\t\t</Button>\r\n\t\t),\r\n\t\tonTabChange,\r\n\t\t...rest\r\n\t} = props;\r\n\r\n\tconst navRefs = useRef<HTMLElement[]>([]);\r\n\tconst barRef = useRef<HTMLSpanElement>(null);\r\n\tconst navsRef = useRef<HTMLDivElement>(null);\r\n\tconst contentsRef = useRef<Map<string, ReactNode>>(new Map());\r\n\tconst [activeKey, setActiveKey] = useState<string | undefined>(active);\r\n\tconst [prevActiveKey, setPrevActiveKey] = useState<string | undefined>(\r\n\t\tundefined,\r\n\t);\r\n\tconst [barStyle, setBarStyle] = useState<CSSProperties>({});\r\n\tconst [cachedTabs, setCachedTabs] = useState<string[]>([]);\r\n\tconst [overflow, setOverflow] = useState(false);\r\n\tconst [moreTabs, setMoreTabs] = useState<ITabItem[]>([]);\r\n\tconst [tabs, setTabs] = useState<ITabItem[]>([]);\r\n\tconst { observe, unobserve } = useIntersectionObserver();\r\n\tconst size = useSize(navsRef);\r\n\r\n\tuseEffect(() => {\r\n\t\tcontentsRef.current.clear();\r\n\r\n\t\tif (!items) {\r\n\t\t\tif (!children) {\r\n\t\t\t\tsetTabs([]);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsetTabs(\r\n\t\t\t\t(Children.map(children, (node, i) => {\r\n\t\t\t\t\tconst { key, props: nodeProps } = node as {\r\n\t\t\t\t\t\tkey?: string;\r\n\t\t\t\t\t\tprops?: any;\r\n\t\t\t\t\t};\r\n\t\t\t\t\tconst {\r\n\t\t\t\t\t\ttitle,\r\n\t\t\t\t\t\tchildren: tabChildren,\r\n\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\tkeepDOM,\r\n\t\t\t\t\t\tclosable,\r\n\t\t\t\t\t} = nodeProps;\r\n\t\t\t\t\tconst tabKey = String(key ?? i);\r\n\t\t\t\t\tcontentsRef.current.set(tabKey, tabChildren ?? content);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tkey: tabKey,\r\n\t\t\t\t\t\ttitle,\r\n\t\t\t\t\t\tkeepDOM,\r\n\t\t\t\t\t\tclosable,\r\n\t\t\t\t\t};\r\n\t\t\t\t}) as ITabItem[]) ?? [],\r\n\t\t\t);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTabs(\r\n\t\t\titems.map((item, i) => {\r\n\t\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\r\n\t\t\t\t\tconst key = String(item);\r\n\t\t\t\t\treturn { key, title: item };\r\n\t\t\t\t}\r\n\t\t\t\tconst key = String(item.key ?? i);\r\n\t\t\t\tcontentsRef.current.set(key, item.content);\r\n\t\t\t\tconst { content, ...rest } = item;\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...rest,\r\n\t\t\t\t\tkey,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t);\r\n\t}, [children, items]);\r\n\r\n\tconst add = (tab: ITabItem) => {\r\n\t\tconst tkey = String(tab.key ?? tabs.length);\r\n\t\tconst i = tabs.findIndex((t) => t.key === tkey);\r\n\r\n\t\tif (i > -1) {\r\n\t\t\topen(tabs[i].key ?? `${i}`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcontentsRef.current.set(tkey, tab.content);\r\n\t\tconst { content, ...rest } = tab;\r\n\t\tsetTabs((ts) => [...ts, { ...rest, key: tkey }]);\r\n\t\topen(tkey);\r\n\t};\r\n\r\n\tconst close = (key: string) => {\r\n\t\tconst i = tabs.findIndex((t) => t.key === key);\r\n\r\n\t\tif (i < 0) return;\r\n\r\n\t\tcontentsRef.current.delete(key);\r\n\t\tconst nextTabs = [...tabs];\r\n\t\tnextTabs.splice(i, 1);\r\n\t\tsetTabs(nextTabs);\r\n\r\n\t\tif (activeKey !== key) return;\r\n\r\n\t\tconst next = nextTabs[i] || nextTabs[i - 1];\r\n\t\topen(prevActiveKey ?? next?.key ?? \"\");\r\n\t};\r\n\r\n\tconst open = (key: string) => {\r\n\t\tif (key === activeKey) {\r\n\t\t\tif (!toggable) return;\r\n\r\n\t\t\tonTabChange?.(undefined, key);\r\n\t\t\tsetActiveKey(undefined);\r\n\r\n\t\t\tsetBarStyle({\r\n\t\t\t\theight: 0,\r\n\t\t\t\twidth: 0,\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetPrevActiveKey(activeKey);\r\n\t\tonTabChange?.(key, activeKey);\r\n\t\tsetActiveKey(key);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!size || hideMore || !observe) return;\r\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\r\n\t\tconst { width, height } = size;\r\n\r\n\t\tconst nextOverflow = scrollHeight > height || scrollWidth > width;\r\n\t\tsetOverflow(nextOverflow);\r\n\r\n\t\tif (!nextOverflow) return;\r\n\r\n\t\tnavRefs.current.map((nav, i) => {\r\n\t\t\tif (!nav) return;\r\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\r\n\t\t\t\tsetTabs((ts) => {\r\n\t\t\t\t\tif (!ts[i]) return ts;\r\n\t\t\t\t\tconst nextTabs = ts.map((t, idx) =>\r\n\t\t\t\t\t\tidx === i ? { ...t, intersecting: visible } : t,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tsetMoreTabs(nextTabs.filter((tab) => !tab.intersecting));\r\n\t\t\t\t\treturn nextTabs;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}, [size, hideMore, tabs.length, observe]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!bar || type === \"pane\" || activeKey === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst index = tabs.findIndex((tab) => tab.key === activeKey);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst nav = navRefs.current[index];\r\n\r\n\t\t\tif (!nav) return;\r\n\r\n\t\t\tif (tabs[index]?.keepDOM && activeKey) {\r\n\t\t\t\tsetCachedTabs((keys) => {\r\n\t\t\t\t\tif (keys.includes(activeKey)) return keys;\r\n\t\t\t\t\treturn [activeKey, ...keys];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\r\n\t\t\tconst isLine = type === \"line\";\r\n\r\n\t\t\tsetBarStyle({\r\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\r\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\r\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\r\n\t\t\t});\r\n\t\t}, 16);\r\n\t}, [activeKey, bar, size, tabs, type, vertical]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (active === undefined || activeKey === active) return;\r\n\r\n\t\topen(active);\r\n\t}, [active]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (hideMore || !unobserve) return;\r\n\r\n\t\treturn () => {\r\n\t\t\tnavRefs.current?.map(unobserve);\r\n\t\t};\r\n\t}, [tabs.length, hideMore, unobserve]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!navsRef.current || vertical) return;\r\n\r\n\t\tconst handleMouseWheel = (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif (vertical) return;\r\n\r\n\t\t\tnavsRef.current?.scrollBy({\r\n\t\t\t\tleft: e.deltaY + e.deltaX,\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\r\n\t\t\tpassive: false,\r\n\t\t});\r\n\r\n\t\treturn () => {\r\n\t\t\tif (!navsRef.current) return;\r\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\r\n\t\t};\r\n\t}, [navsRef.current]);\r\n\r\n\tuseImperativeHandle(ref, () => ({\r\n\t\topen,\r\n\t\tclose,\r\n\t\tadd,\r\n\t\tnavs: navsRef,\r\n\t}));\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={classNames(\r\n\t\t\t\t\"i-tabs\",\r\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\r\n\t\t\t\tclassName,\r\n\t\t\t)}\r\n\t\t\t{...rest}\r\n\t\t>\r\n\t\t\t<div\r\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\r\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\r\n\t\t\t\t})}\r\n\t\t\t>\r\n\t\t\t\t{prepend}\r\n\r\n\t\t\t\t<div\r\n\t\t\t\t\tref={navsRef}\r\n\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\"i-tab-navs\",\r\n\t\t\t\t\t\t`justify-${navsJustify}`,\r\n\t\t\t\t\t)}\r\n\t\t\t\t>\r\n\t\t\t\t\t{tabs.map((tab, i) => {\r\n\t\t\t\t\t\tconst { title, key = `${i}`, closable } = tab;\r\n\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\r\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\r\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": activeKey === key,\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{title}\r\n\r\n\t\t\t\t\t\t\t\t{closable && (\r\n\t\t\t\t\t\t\t\t\t<Helpericon\r\n\t\t\t\t\t\t\t\t\t\tas='i'\r\n\t\t\t\t\t\t\t\t\t\tactive\r\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\r\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\r\n\t\t\t\t\t{bar && (\r\n\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\tref={barRef}\r\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\r\n\t\t\t\t\t\t\tstyle={barStyle}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t{!hideMore && overflow && moreTabs.length > 0 && (\r\n\t\t\t\t\t<Popup\r\n\t\t\t\t\t\tarrow={false}\r\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\r\n\t\t\t\t\t\talign='end'\r\n\t\t\t\t\t\ttouchable\r\n\t\t\t\t\t\thideDelay={500}\r\n\t\t\t\t\t\tcontent={\r\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\r\n\t\t\t\t\t\t\t\t{moreTabs.map((tab, i) => {\r\n\t\t\t\t\t\t\t\t\tconst { key = `${i}`, title } = tab;\r\n\t\t\t\t\t\t\t\t\tconst isActive = activeKey === key;\r\n\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{renderMore(moreTabs)}\r\n\t\t\t\t\t</Popup>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{append}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div className='i-tab-contents'>\r\n\t\t\t\t{tabs.map((tab, i) => {\r\n\t\t\t\t\tconst key = tab.key ?? `${i}`;\r\n\t\t\t\t\tconst content = contentsRef.current.get(key);\r\n\t\t\t\t\tconst isActive = activeKey === key;\r\n\t\t\t\t\tconst show =\r\n\t\t\t\t\t\tisActive ||\r\n\t\t\t\t\t\t(key !== undefined && cachedTabs.includes(key));\r\n\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\tshow && (\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\r\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{content}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n}) as CompositionTabs;\r\n\r\nTabs.Item = TabItem;\r\n\r\nexport default Tabs;\r\n"],"names":["_jsx","Button","Icon","MoreHorizRound","useRef","useState","useIntersectionObserver","useSize","useEffect","Children","useImperativeHandle","_jsxs","classNames","Helpericon","Popup","TabItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.js","sources":["../../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import { MoreHorizRound } from \"@ricons/material\";\r\nimport classNames from \"classnames\";\r\nimport {\r\n CSSProperties,\r\n Children,\r\n KeyboardEvent,\r\n ReactNode,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport { useIntersectionObserver, useSize } from \"../../js/hooks\";\r\nimport Button from \"../button\";\r\nimport Icon from \"../icon\";\r\nimport Popup from \"../popup\";\r\nimport Helpericon from \"../utils/helpericon\";\r\nimport \"./index.css\";\r\nimport TabItem from \"./item\";\r\nimport { CompositionTabs, ITabItem, ITabs } from \"./type\";\r\n\r\nconst Tabs = ((props: ITabs) => {\r\n const {\r\n ref,\r\n active,\r\n tabs: items,\r\n type = \"default\",\r\n prepend,\r\n append,\r\n children,\r\n className,\r\n vertical,\r\n toggable,\r\n navsJustify = \"start\",\r\n bar = true,\r\n hideMore,\r\n barClass,\r\n renderMore = () => (\r\n <Button flat square size=\"small\">\r\n <Icon icon={<MoreHorizRound />} />\r\n </Button>\r\n ),\r\n onTabChange,\r\n ...rest\r\n } = props;\r\n\r\n const navRefs = useRef<HTMLElement[]>([]);\r\n const barRef = useRef<HTMLSpanElement>(null);\r\n const navsRef = useRef<HTMLDivElement>(null);\r\n const contentsRef = useRef<Map<string, ReactNode>>(new Map());\r\n const [activeKey, setActiveKey] = useState<string | undefined>(active);\r\n const [prevActiveKey, setPrevActiveKey] = useState<string | undefined>(\r\n undefined,\r\n );\r\n const [barStyle, setBarStyle] = useState<CSSProperties>({});\r\n const [cachedTabs, setCachedTabs] = useState<string[]>([]);\r\n const [overflow, setOverflow] = useState(false);\r\n const [tabs, setTabs] = useState<ITabItem[]>([]);\r\n const { observe, unobserve } = useIntersectionObserver();\r\n const size = useSize(navsRef);\r\n\r\n const tabsRef = useRef<ITabItem[]>(tabs);\r\n tabsRef.current = tabs;\r\n const activeKeyRef = useRef<string | undefined>(activeKey);\r\n activeKeyRef.current = activeKey;\r\n const prevActiveKeyRef = useRef<string | undefined>(prevActiveKey);\r\n prevActiveKeyRef.current = prevActiveKey;\r\n\r\n useEffect(() => {\r\n contentsRef.current.clear();\r\n\r\n if (!items) {\r\n if (!children) {\r\n setTabs([]);\r\n return;\r\n }\r\n\r\n setTabs(\r\n (Children.map(children, (node, i) => {\r\n const { key, props: nodeProps } = node as {\r\n key?: string;\r\n props?: any;\r\n };\r\n const {\r\n title,\r\n children: tabChildren,\r\n content,\r\n keepDOM,\r\n closable,\r\n } = nodeProps;\r\n const tabKey = String(key ?? i);\r\n contentsRef.current.set(tabKey, tabChildren ?? content);\r\n\r\n return {\r\n key: tabKey,\r\n title,\r\n keepDOM,\r\n closable,\r\n };\r\n }) as ITabItem[]) ?? [],\r\n );\r\n\r\n return;\r\n }\r\n\r\n setTabs(\r\n items.map((item, i) => {\r\n if ([\"string\", \"number\"].includes(typeof item)) {\r\n const key = String(item);\r\n return { key, title: item };\r\n }\r\n const key = String(item.key ?? i);\r\n contentsRef.current.set(key, item.content);\r\n const { content, ...rest } = item;\r\n return {\r\n ...rest,\r\n key,\r\n };\r\n }),\r\n );\r\n }, [children, items]);\r\n\r\n const add = (tab: ITabItem) => {\r\n const currentTabs = tabsRef.current;\r\n const tkey = String(tab.key ?? currentTabs.length);\r\n const i = currentTabs.findIndex((t) => t.key === tkey);\r\n\r\n if (i > -1) {\r\n open(currentTabs[i].key ?? `${i}`);\r\n return;\r\n }\r\n\r\n contentsRef.current.set(tkey, tab.content);\r\n const { content, ...rest } = tab;\r\n setTabs((ts) => [...ts, { ...rest, key: tkey }]);\r\n open(tkey);\r\n };\r\n\r\n const close = (key: string) => {\r\n const currentTabs = tabsRef.current;\r\n const i = currentTabs.findIndex((t) => t.key === key);\r\n\r\n if (i < 0) return;\r\n\r\n contentsRef.current.delete(key);\r\n const nextTabs = [...currentTabs];\r\n nextTabs.splice(i, 1);\r\n setTabs(nextTabs);\r\n\r\n if (activeKeyRef.current !== key) return;\r\n\r\n const next = nextTabs[i] || nextTabs[i - 1];\r\n const prev = prevActiveKeyRef.current;\r\n const nextKey =\r\n prev && nextTabs.some((t) => t.key === prev) ? prev : next?.key;\r\n open(nextKey ?? \"\");\r\n };\r\n\r\n const open = (key: string) => {\r\n const nextKey = key || undefined;\r\n\r\n if (nextKey === undefined) {\r\n onTabChange?.(undefined, activeKey);\r\n setPrevActiveKey(activeKey);\r\n setActiveKey(undefined);\r\n setBarStyle({\r\n height: 0,\r\n width: 0,\r\n });\r\n return;\r\n }\r\n\r\n if (nextKey === activeKey) {\r\n if (!toggable) return;\r\n\r\n onTabChange?.(undefined, key);\r\n setActiveKey(undefined);\r\n\r\n setBarStyle({\r\n height: 0,\r\n width: 0,\r\n });\r\n return;\r\n }\r\n\r\n setPrevActiveKey(activeKey);\r\n onTabChange?.(nextKey, activeKey);\r\n setActiveKey(nextKey);\r\n };\r\n\r\n const handleKeyAction = (e: KeyboardEvent<Element>, action: () => void) => {\r\n if (![\"Enter\", \" \"].includes(e.key)) return;\r\n e.preventDefault();\r\n action();\r\n };\r\n\r\n const scrollToTab = (key: string) => {\r\n const index = tabsRef.current.findIndex((tab) => tab.key === key);\r\n const nav = navRefs.current[index];\r\n\r\n nav?.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"nearest\",\r\n inline: \"nearest\",\r\n });\r\n };\r\n\r\n const handleMoreTabClick = (key: string) => {\r\n open(key);\r\n scrollToTab(key);\r\n };\r\n\r\n useEffect(() => {\r\n if (!size || hideMore || !observe || !unobserve) return;\r\n const { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\r\n const { width, height } = size;\r\n\r\n const nextOverflow = scrollHeight > height || scrollWidth > width;\r\n setOverflow((v) => (v === nextOverflow ? v : nextOverflow));\r\n\r\n if (!nextOverflow) {\r\n setTabs((ts) => {\r\n let changed = false;\r\n const next = ts.map((t) => {\r\n if (\r\n t.intersecting === undefined ||\r\n t.intersecting === true\r\n ) {\r\n return t;\r\n }\r\n changed = true;\r\n return { ...t, intersecting: true };\r\n });\r\n return changed ? next : ts;\r\n });\r\n return;\r\n }\r\n\r\n const observed: HTMLElement[] = [];\r\n\r\n navRefs.current.map((nav, i) => {\r\n if (!nav) return;\r\n observed.push(nav);\r\n observe(nav, (_tar: HTMLElement, visible: boolean) => {\r\n setTabs((ts) => {\r\n if (!ts[i]) return ts;\r\n if (ts[i]?.intersecting === visible) return ts;\r\n return ts.map((t, idx) =>\r\n idx === i ? { ...t, intersecting: visible } : t,\r\n );\r\n });\r\n });\r\n });\r\n\r\n return () => {\r\n observed.map((el) => unobserve(el));\r\n };\r\n }, [size, hideMore, tabs.length, observe, unobserve]);\r\n\r\n useEffect(() => {\r\n if (!bar || type === \"pane\" || activeKey === undefined) {\r\n return;\r\n }\r\n\r\n const index = tabs.findIndex((tab) => tab.key === activeKey);\r\n\r\n const timer = window.setTimeout(() => {\r\n const nav = navRefs.current[index];\r\n\r\n if (!nav) return;\r\n\r\n if (tabs[index]?.keepDOM && activeKey) {\r\n setCachedTabs((keys) => {\r\n if (keys.includes(activeKey)) return keys;\r\n return [activeKey, ...keys];\r\n });\r\n }\r\n\r\n const { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\r\n const isLine = type === \"line\";\r\n\r\n setBarStyle({\r\n height: !vertical && isLine ? \".25em\" : offsetHeight,\r\n width: vertical && isLine ? \".25em\" : offsetWidth,\r\n transform: `translate(${offsetLeft}px, ${offsetTop}px)`,\r\n });\r\n }, 16);\r\n\r\n return () => {\r\n window.clearTimeout(timer);\r\n };\r\n }, [activeKey, bar, size, tabs, type, vertical]);\r\n\r\n useEffect(() => {\r\n if (active === undefined || activeKey === active) return;\r\n\r\n open(active);\r\n }, [active]);\r\n\r\n useEffect(() => {\r\n if (!navsRef.current || vertical) return;\r\n\r\n const handleMouseWheel = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (vertical) return;\r\n\r\n navsRef.current?.scrollBy({\r\n left: e.deltaY + e.deltaX,\r\n });\r\n };\r\n\r\n navsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\r\n passive: false,\r\n });\r\n\r\n return () => {\r\n if (!navsRef.current) return;\r\n navsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\r\n };\r\n }, [vertical]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n open,\r\n close,\r\n add,\r\n navs: navsRef,\r\n }));\r\n\r\n const moreTabs =\r\n !hideMore && overflow\r\n ? tabs.filter((tab) => tab.intersecting === false)\r\n : [];\r\n\r\n return (\r\n <div\r\n className={classNames(\r\n \"i-tabs\",\r\n { flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\r\n className,\r\n )}\r\n {...rest}\r\n >\r\n <div\r\n className={classNames(\"i-tab-navs-container\", {\r\n \"i-tab-navs-vertical\": vertical,\r\n })}\r\n >\r\n {prepend}\r\n\r\n <div\r\n ref={navsRef}\r\n className={classNames(\r\n \"i-tab-navs\",\r\n `justify-${navsJustify}`,\r\n )}\r\n role=\"tablist\"\r\n aria-orientation={vertical ? \"vertical\" : \"horizontal\"}\r\n >\r\n {tabs.map((tab, i) => {\r\n const { title, key = `${i}`, closable } = tab;\r\n const isActive = activeKey === key;\r\n\r\n return (\r\n <a\r\n key={key}\r\n ref={(ref) => (navRefs.current[i] = ref as any)}\r\n className={classNames(\"i-tab-nav\", {\r\n \"i-tab-active\": isActive,\r\n })}\r\n role=\"tab\"\r\n tabIndex={isActive ? 0 : -1}\r\n aria-selected={isActive}\r\n onClick={() => open(key)}\r\n onKeyDown={(e) =>\r\n handleKeyAction(e, () => open(key))\r\n }\r\n >\r\n {title}\r\n\r\n {closable && (\r\n <Helpericon\r\n as=\"i\"\r\n active\r\n className=\"i-tab-nav-close\"\r\n role=\"button\"\r\n tabIndex={0}\r\n aria-label=\"关闭标签页\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n close(key);\r\n }}\r\n onKeyDown={(e) =>\r\n handleKeyAction(e, () => close(key))\r\n }\r\n />\r\n )}\r\n </a>\r\n );\r\n })}\r\n\r\n {bar && (\r\n <span\r\n ref={barRef}\r\n className={classNames(\"i-tab-navs-bar\", barClass)}\r\n style={barStyle}\r\n />\r\n )}\r\n </div>\r\n\r\n {!hideMore && overflow && moreTabs.length > 0 && (\r\n <Popup\r\n arrow={false}\r\n position={vertical ? \"right\" : \"bottom\"}\r\n align=\"end\"\r\n touchable\r\n hideDelay={500}\r\n content={\r\n <div className=\"i-tabs-morelist pd-4\">\r\n {moreTabs.map((tab, i) => {\r\n const { key = `${i}`, title } = tab;\r\n const isActive = activeKey === key;\r\n\r\n return (\r\n <a\r\n key={key}\r\n className={classNames(\"i-tab-nav\", {\r\n \"i-tab-active\": isActive,\r\n })}\r\n role=\"button\"\r\n tabIndex={0}\r\n onClick={() =>\r\n handleMoreTabClick(key)\r\n }\r\n onKeyDown={(e) =>\r\n handleKeyAction(e, () =>\r\n handleMoreTabClick(key),\r\n )\r\n }\r\n >\r\n {title}\r\n </a>\r\n );\r\n })}\r\n </div>\r\n }\r\n >\r\n {renderMore(moreTabs)}\r\n </Popup>\r\n )}\r\n\r\n {append}\r\n </div>\r\n\r\n <div className=\"i-tab-contents\">\r\n {tabs.map((tab, i) => {\r\n const key = tab.key ?? `${i}`;\r\n const content = contentsRef.current.get(key);\r\n const isActive = activeKey === key;\r\n const show =\r\n isActive ||\r\n (key !== undefined && cachedTabs.includes(key));\r\n\r\n return (\r\n show && (\r\n <div\r\n key={key}\r\n className={classNames(\"i-tab-content\", {\r\n \"i-tab-active\": isActive,\r\n })}\r\n role=\"tabpanel\"\r\n aria-hidden={!isActive}\r\n >\r\n {content}\r\n </div>\r\n )\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}) as CompositionTabs;\r\n\r\nTabs.Item = TabItem;\r\n\r\nexport default Tabs;\r\n"],"names":["_jsx","Button","Icon","MoreHorizRound","useRef","useState","useIntersectionObserver","useSize","useEffect","Children","useImperativeHandle","_jsxs","classNames","Helpericon","Popup","TabItem"],"mappings":"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"}
|
package/lib/cjs/js/hooks.js
CHANGED
|
@@ -166,31 +166,41 @@ const defaultObserver = {
|
|
|
166
166
|
disconnect: undefined,
|
|
167
167
|
};
|
|
168
168
|
function useIntersectionObserver(configs) {
|
|
169
|
+
const wmRef = react.useRef(new WeakMap());
|
|
170
|
+
const ioRef = react.useRef(undefined);
|
|
171
|
+
if (typeof window !== "undefined" && !ioRef.current) {
|
|
172
|
+
ioRef.current = new IntersectionObserver((entries) => {
|
|
173
|
+
entries.map((entry) => {
|
|
174
|
+
const callback = wmRef.current.get(entry.target);
|
|
175
|
+
callback?.(entry.target, entry.isIntersecting);
|
|
176
|
+
});
|
|
177
|
+
}, configs);
|
|
178
|
+
}
|
|
179
|
+
const observe = react.useCallback((target, callback) => {
|
|
180
|
+
if (!target || !ioRef.current || wmRef.current.get(target))
|
|
181
|
+
return;
|
|
182
|
+
wmRef.current.set(target, callback);
|
|
183
|
+
ioRef.current.observe(target);
|
|
184
|
+
}, []);
|
|
185
|
+
const unobserve = react.useCallback((target) => {
|
|
186
|
+
if (!target || !ioRef.current)
|
|
187
|
+
return;
|
|
188
|
+
ioRef.current.unobserve(target);
|
|
189
|
+
wmRef.current.delete(target);
|
|
190
|
+
}, []);
|
|
191
|
+
const disconnect = react.useCallback(() => {
|
|
192
|
+
ioRef.current?.disconnect();
|
|
193
|
+
}, []);
|
|
194
|
+
react.useEffect(() => {
|
|
195
|
+
return () => {
|
|
196
|
+
ioRef.current?.disconnect();
|
|
197
|
+
};
|
|
198
|
+
}, []);
|
|
169
199
|
if (typeof window === "undefined") {
|
|
170
200
|
return {
|
|
171
201
|
...defaultObserver,
|
|
172
202
|
};
|
|
173
203
|
}
|
|
174
|
-
const WM = new WeakMap();
|
|
175
|
-
const IO = new IntersectionObserver((entries) => {
|
|
176
|
-
entries.map((entry) => {
|
|
177
|
-
const callback = WM.get(entry.target);
|
|
178
|
-
callback?.(entry.target, entry.isIntersecting);
|
|
179
|
-
});
|
|
180
|
-
}, configs);
|
|
181
|
-
function observe(target, callback) {
|
|
182
|
-
if (WM.get(target))
|
|
183
|
-
return;
|
|
184
|
-
WM.set(target, callback);
|
|
185
|
-
target && IO.observe(target);
|
|
186
|
-
}
|
|
187
|
-
function unobserve(target) {
|
|
188
|
-
target && IO.unobserve(target);
|
|
189
|
-
WM.delete(target);
|
|
190
|
-
}
|
|
191
|
-
function disconnect() {
|
|
192
|
-
IO.disconnect();
|
|
193
|
-
}
|
|
194
204
|
return {
|
|
195
205
|
observe,
|
|
196
206
|
unobserve,
|
|
@@ -198,31 +208,41 @@ function useIntersectionObserver(configs) {
|
|
|
198
208
|
};
|
|
199
209
|
}
|
|
200
210
|
function useResizeObserver() {
|
|
211
|
+
const wmRef = react.useRef(new WeakMap());
|
|
212
|
+
const ioRef = react.useRef(undefined);
|
|
213
|
+
if (typeof window !== "undefined" && !ioRef.current) {
|
|
214
|
+
ioRef.current = new ResizeObserver((entries) => {
|
|
215
|
+
entries.map((entry) => {
|
|
216
|
+
const callback = wmRef.current.get(entry.target);
|
|
217
|
+
callback?.(entry.target);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
const observe = react.useCallback((target, callback) => {
|
|
222
|
+
if (!target || !ioRef.current || wmRef.current.get(target))
|
|
223
|
+
return;
|
|
224
|
+
ioRef.current.observe(target);
|
|
225
|
+
wmRef.current.set(target, callback);
|
|
226
|
+
}, []);
|
|
227
|
+
const unobserve = react.useCallback((target) => {
|
|
228
|
+
if (!target || !ioRef.current)
|
|
229
|
+
return;
|
|
230
|
+
ioRef.current.unobserve(target);
|
|
231
|
+
wmRef.current.delete(target);
|
|
232
|
+
}, []);
|
|
233
|
+
const disconnect = react.useCallback(() => {
|
|
234
|
+
ioRef.current?.disconnect();
|
|
235
|
+
}, []);
|
|
236
|
+
react.useEffect(() => {
|
|
237
|
+
return () => {
|
|
238
|
+
ioRef.current?.disconnect();
|
|
239
|
+
};
|
|
240
|
+
}, []);
|
|
201
241
|
if (typeof window === "undefined") {
|
|
202
242
|
return {
|
|
203
243
|
...defaultObserver,
|
|
204
244
|
};
|
|
205
245
|
}
|
|
206
|
-
const WM = new WeakMap();
|
|
207
|
-
const IO = new ResizeObserver((entries) => {
|
|
208
|
-
entries.map((entry) => {
|
|
209
|
-
const callback = WM.get(entry.target);
|
|
210
|
-
callback?.(entry.target);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
function observe(target, callback) {
|
|
214
|
-
if (WM.get(target))
|
|
215
|
-
return;
|
|
216
|
-
target && IO.observe(target);
|
|
217
|
-
WM.set(target, callback);
|
|
218
|
-
}
|
|
219
|
-
function unobserve(target) {
|
|
220
|
-
target && IO.unobserve(target);
|
|
221
|
-
WM.delete(target);
|
|
222
|
-
}
|
|
223
|
-
function disconnect() {
|
|
224
|
-
IO.disconnect();
|
|
225
|
-
}
|
|
226
246
|
return {
|
|
227
247
|
observe,
|
|
228
248
|
unobserve,
|
package/lib/cjs/js/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../packages/js/hooks.ts"],"sourcesContent":["import { DependencyList, useEffect, useMemo, useRef, useState } from \"react\";\r\n\r\ntype TMouseEvent = (e: MouseEvent) => void;\r\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\r\ntype TEventOption = {\r\n\tdisabled?: boolean;\r\n};\r\n\r\nconst MouseMoveEvents = new Set<TMouseEvent>();\r\nconst MouseUpEvents = new Set<TMouseEvent>();\r\nconst KeydownEvents = new Set<TKeyboardEvent>();\r\n\r\nlet initialized = false;\r\n\r\nconst initEvents = () => {\r\n\tif (typeof document === \"undefined\" || initialized) return;\r\n\tinitialized = true;\r\n\r\n\tconst touchable = \"ontouchend\" in document;\r\n\tconst EVENTS: Record<string, any> = {\r\n\t\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\r\n\t\tUP: touchable ? \"touchend\" : \"mouseup\",\r\n\t\tKEYDOWN: \"keydown\",\r\n\t};\r\n\r\n\tdocument.addEventListener(\r\n\t\tEVENTS.MOVE,\r\n\t\t(e) => {\r\n\t\t\tfor (const listener of MouseMoveEvents.values()) {\r\n\t\t\t\tlistener(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t{ passive: false },\r\n\t);\r\n\r\n\tdocument.addEventListener(EVENTS.UP, (e) => {\r\n\t\tfor (const listener of MouseUpEvents.values()) {\r\n\t\t\tlistener(e);\r\n\t\t}\r\n\t});\r\n\r\n\tdocument.addEventListener(EVENTS.KEYDOWN, (e) => {\r\n\t\tfor (const listener of KeydownEvents.values()) {\r\n\t\t\tlistener(e);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nfunction initEventsOnce() {\r\n\tuseEffect(initEvents, []);\r\n}\r\n\r\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\r\n\tinitEventsOnce();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options?.disabled) return;\r\n\r\n\t\tMouseMoveEvents.add(listener);\r\n\t\treturn () => {\r\n\t\t\tMouseMoveEvents.delete(listener);\r\n\t\t};\r\n\t}, []);\r\n}\r\n\r\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\r\n\tinitEventsOnce();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options?.disabled) return;\r\n\r\n\t\tMouseUpEvents.add(listener);\r\n\t\treturn () => {\r\n\t\t\tMouseUpEvents.delete(listener);\r\n\t\t};\r\n\t}, []);\r\n}\r\n\r\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\r\n\tinitEventsOnce();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options?.disabled) return;\r\n\r\n\t\tKeydownEvents.add(listener);\r\n\t\treturn () => {\r\n\t\t\tKeydownEvents.delete(listener);\r\n\t\t};\r\n\t}, []);\r\n}\r\n\r\nexport function useCreation<T>(factory: () => T, deps: DependencyList) {\r\n\treturn useMemo(factory, deps);\r\n}\r\n\r\nexport function useReactive<T extends object>(initialState: T): T {\r\n\tconst [, setFlag] = useState(0);\r\n\tconst scheduledRef = useRef(false);\r\n\tconst proxyCacheRef = useRef(new WeakMap<object, any>());\r\n\tconst rootRef = useRef<T | null>(null);\r\n\tconst proxyRef = useRef<T | null>(null);\r\n\r\n\tconst notify = () => {\r\n\t\tif (scheduledRef.current) return;\r\n\t\tscheduledRef.current = true;\r\n\r\n\t\tconst flush = () => {\r\n\t\t\tscheduledRef.current = false;\r\n\t\t\tsetFlag((n) => n + 1);\r\n\t\t};\r\n\r\n\t\tif (typeof queueMicrotask !== \"undefined\") {\r\n\t\t\tqueueMicrotask(flush);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tPromise.resolve().then(flush);\r\n\t};\r\n\r\n\tconst createProxy = (target: any): any => {\r\n\t\tif (!target || typeof target !== \"object\") return target;\r\n\r\n\t\tif (!Array.isArray(target)) {\r\n\t\t\tconst proto = Object.getPrototypeOf(target);\r\n\t\t\tconst isPlainObject = proto === Object.prototype || proto === null;\r\n\t\t\tif (!isPlainObject) return target;\r\n\t\t}\r\n\r\n\t\tconst cached = proxyCacheRef.current.get(target);\r\n\t\tif (cached) return cached;\r\n\r\n\t\tconst proxy = new Proxy(target, {\r\n\t\t\tget(t, p, r) {\r\n\t\t\t\treturn createProxy(Reflect.get(t, p, r));\r\n\t\t\t},\r\n\t\t\tset(t, p, v, r) {\r\n\t\t\t\tconst prev = Reflect.get(t, p, r);\r\n\t\t\t\tconst ok = Reflect.set(t, p, v, r);\r\n\t\t\t\tif (prev !== v) notify();\r\n\t\t\t\treturn ok;\r\n\t\t\t},\r\n\t\t\tdeleteProperty(t, p) {\r\n\t\t\t\tconst had = Object.prototype.hasOwnProperty.call(t, p);\r\n\t\t\t\tconst ok = Reflect.deleteProperty(t, p);\r\n\t\t\t\tif (had) notify();\r\n\t\t\t\treturn ok;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tproxyCacheRef.current.set(target, proxy);\r\n\t\treturn proxy;\r\n\t};\r\n\r\n\tif (!proxyRef.current) {\r\n\t\trootRef.current = initialState;\r\n\t\tproxyRef.current = createProxy(rootRef.current);\r\n\t}\r\n\r\n\treturn proxyRef.current as T;\r\n}\r\n\r\ntype TSetState<T> = (\r\n\tvalue: T | undefined | ((prev: T | undefined) => T),\r\n) => void;\r\n\r\ntype TLocalStorageOptions<T> = {\r\n\tdefaultValue?: T | (() => T);\r\n\tlistenStorageChange?: boolean;\r\n};\r\n\r\nexport function useLocalStorageState<T>(\r\n\tkey: string,\r\n\toptions?: TLocalStorageOptions<T>,\r\n): [T | undefined, TSetState<T>] {\r\n\tconst { defaultValue, listenStorageChange } = options ?? {};\r\n\r\n\tconst getDefault = () => {\r\n\t\treturn typeof defaultValue === \"function\"\r\n\t\t\t? (defaultValue as () => T)()\r\n\t\t\t: defaultValue;\r\n\t};\r\n\r\n\tconst read = (): T | undefined => {\r\n\t\tif (typeof window === \"undefined\") return getDefault();\r\n\r\n\t\tconst raw = window.localStorage.getItem(key);\r\n\t\tif (raw === null) return getDefault();\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(raw) as T;\r\n\t\t} catch (e) {\r\n\t\t\treturn raw as unknown as T;\r\n\t\t}\r\n\t};\r\n\r\n\tconst [state, setState] = useState<T | undefined>(() => read());\r\n\r\n\tconst set: TSetState<T> = (value) => {\r\n\t\tsetState((prev) => {\r\n\t\t\tconst next =\r\n\t\t\t\ttypeof value === \"function\"\r\n\t\t\t\t\t? (value as (prev: T | undefined) => T)(prev)\r\n\t\t\t\t\t: value;\r\n\r\n\t\t\tif (typeof window !== \"undefined\") {\r\n\t\t\t\tif (next === undefined) {\r\n\t\t\t\t\twindow.localStorage.removeItem(key);\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.localStorage.setItem(key, JSON.stringify(next));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn next;\r\n\t\t});\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!listenStorageChange) return;\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\tconst onStorage = (e: StorageEvent) => {\r\n\t\t\tif (e.key !== key) return;\r\n\r\n\t\t\tif (e.newValue === null) {\r\n\t\t\t\tsetState(getDefault());\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tsetState(JSON.parse(e.newValue) as T);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tsetState(e.newValue as unknown as T);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener(\"storage\", onStorage);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"storage\", onStorage);\r\n\t\t};\r\n\t}, [key, listenStorageChange]);\r\n\r\n\treturn [state, set];\r\n}\r\n\r\ntype TResponsiveConfig = Record<string, number>;\r\n\r\nlet responsiveConfig: TResponsiveConfig = {};\r\n\r\nexport function configResponsive(config: TResponsiveConfig) {\r\n\tresponsiveConfig = config;\r\n}\r\n\r\nexport function useResponsive() {\r\n\tconst compute = () => {\r\n\t\tif (typeof window === \"undefined\") return {};\r\n\t\tconst w = window.innerWidth;\r\n\t\tconst result: Record<string, boolean> = {};\r\n\r\n\t\tfor (const key in responsiveConfig) {\r\n\t\t\tresult[key] = w >= responsiveConfig[key];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\tconst [state, setState] = useState<Record<string, boolean>>(() =>\r\n\t\tcompute(),\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\tconst onResize = () => {\r\n\t\t\tconst next = compute();\r\n\t\t\tsetState((prev) => {\r\n\t\t\t\tconst prevKeys = Object.keys(prev);\r\n\t\t\t\tconst nextKeys = Object.keys(next);\r\n\t\t\t\tif (prevKeys.length !== nextKeys.length) return next;\r\n\r\n\t\t\t\tfor (const k of nextKeys) {\r\n\t\t\t\t\tif (prev[k] !== next[k]) return next;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn prev;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tonResize();\r\n\t\twindow.addEventListener(\"resize\", onResize);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", onResize);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn state;\r\n}\r\n\r\ntype TSize = { width: number; height: number };\r\n\r\nexport function useSize(target: any): TSize | undefined {\r\n\tconst [size, setSize] = useState<TSize>();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\tconst resolveTarget = () => {\r\n\t\t\tif (!target) return null;\r\n\t\t\tif (typeof target === \"function\") return target();\r\n\t\t\tif (typeof target === \"object\" && \"current\" in target) {\r\n\t\t\t\treturn target.current;\r\n\t\t\t}\r\n\t\t\treturn target;\r\n\t\t};\r\n\r\n\t\tconst el = resolveTarget() as HTMLElement | null;\r\n\t\tif (!el) return;\r\n\r\n\t\tconst update = () => {\r\n\t\t\tconst rect = el.getBoundingClientRect();\r\n\t\t\tsetSize({ width: rect.width, height: rect.height });\r\n\t\t};\r\n\r\n\t\tupdate();\r\n\r\n\t\tlet ro: ResizeObserver | undefined;\r\n\t\tif (typeof ResizeObserver !== \"undefined\") {\r\n\t\t\tro = new ResizeObserver(update);\r\n\t\t\tro.observe(el);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener(\"resize\", update);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", update);\r\n\t\t\tro?.disconnect();\r\n\t\t};\r\n\t}, [target]);\r\n\r\n\treturn size;\r\n}\r\n\r\nconst defaultObserver = {\r\n\tobserve: undefined,\r\n\tunobserve: undefined,\r\n\tdisconnect: undefined,\r\n};\r\n\r\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\r\n\tif (typeof window === \"undefined\") {\r\n\t\treturn {\r\n\t\t\t...defaultObserver,\r\n\t\t};\r\n\t}\r\n\r\n\tconst WM = new WeakMap();\r\n\tconst IO = new IntersectionObserver((entries) => {\r\n\t\tentries.map((entry) => {\r\n\t\t\tconst callback = WM.get(entry.target);\r\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\r\n\t\t});\r\n\t}, configs);\r\n\r\n\tfunction observe(target: HTMLElement, callback: Function) {\r\n\t\tif (WM.get(target)) return;\r\n\t\tWM.set(target, callback);\r\n\t\ttarget && IO.observe(target);\r\n\t}\r\n\r\n\tfunction unobserve(target: HTMLElement) {\r\n\t\ttarget && IO.unobserve(target);\r\n\t\tWM.delete(target);\r\n\t}\r\n\r\n\tfunction disconnect() {\r\n\t\tIO.disconnect();\r\n\t}\r\n\r\n\treturn {\r\n\t\tobserve,\r\n\t\tunobserve,\r\n\t\tdisconnect,\r\n\t};\r\n}\r\n\r\nexport function useResizeObserver() {\r\n\tif (typeof window === \"undefined\") {\r\n\t\treturn {\r\n\t\t\t...defaultObserver,\r\n\t\t};\r\n\t}\r\n\r\n\tconst WM = new WeakMap();\r\n\tconst IO = new ResizeObserver((entries) => {\r\n\t\tentries.map((entry) => {\r\n\t\t\tconst callback = WM.get(entry.target);\r\n\t\t\tcallback?.(entry.target);\r\n\t\t});\r\n\t});\r\n\r\n\tfunction observe(target: HTMLElement, callback: Function) {\r\n\t\tif (WM.get(target)) return;\r\n\t\ttarget && IO.observe(target);\r\n\t\tWM.set(target, callback);\r\n\t}\r\n\r\n\tfunction unobserve(target: HTMLElement) {\r\n\t\ttarget && IO.unobserve(target);\r\n\t\tWM.delete(target);\r\n\t}\r\n\r\n\tfunction disconnect() {\r\n\t\tIO.disconnect();\r\n\t}\r\n\r\n\treturn {\r\n\t\tobserve,\r\n\t\tunobserve,\r\n\t\tdisconnect,\r\n\t};\r\n}\r\n"],"names":["useEffect","useState","useRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../packages/js/hooks.ts"],"sourcesContent":["import {\r\n DependencyList,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\n\r\ntype TMouseEvent = (e: MouseEvent) => void;\r\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\r\ntype TEventOption = {\r\n disabled?: boolean;\r\n};\r\n\r\nconst MouseMoveEvents = new Set<TMouseEvent>();\r\nconst MouseUpEvents = new Set<TMouseEvent>();\r\nconst KeydownEvents = new Set<TKeyboardEvent>();\r\n\r\nlet initialized = false;\r\n\r\nconst initEvents = () => {\r\n if (typeof document === \"undefined\" || initialized) return;\r\n initialized = true;\r\n\r\n const touchable = \"ontouchend\" in document;\r\n const EVENTS: Record<string, any> = {\r\n MOVE: touchable ? \"touchmove\" : \"mousemove\",\r\n UP: touchable ? \"touchend\" : \"mouseup\",\r\n KEYDOWN: \"keydown\",\r\n };\r\n\r\n document.addEventListener(\r\n EVENTS.MOVE,\r\n (e) => {\r\n for (const listener of MouseMoveEvents.values()) {\r\n listener(e);\r\n }\r\n },\r\n { passive: false },\r\n );\r\n\r\n document.addEventListener(EVENTS.UP, (e) => {\r\n for (const listener of MouseUpEvents.values()) {\r\n listener(e);\r\n }\r\n });\r\n\r\n document.addEventListener(EVENTS.KEYDOWN, (e) => {\r\n for (const listener of KeydownEvents.values()) {\r\n listener(e);\r\n }\r\n });\r\n};\r\n\r\nfunction initEventsOnce() {\r\n useEffect(initEvents, []);\r\n}\r\n\r\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n MouseMoveEvents.add(listener);\r\n return () => {\r\n MouseMoveEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n MouseUpEvents.add(listener);\r\n return () => {\r\n MouseUpEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n KeydownEvents.add(listener);\r\n return () => {\r\n KeydownEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useCreation<T>(factory: () => T, deps: DependencyList) {\r\n return useMemo(factory, deps);\r\n}\r\n\r\nexport function useReactive<T extends object>(initialState: T): T {\r\n const [, setFlag] = useState(0);\r\n const scheduledRef = useRef(false);\r\n const proxyCacheRef = useRef(new WeakMap<object, any>());\r\n const rootRef = useRef<T | null>(null);\r\n const proxyRef = useRef<T | null>(null);\r\n\r\n const notify = () => {\r\n if (scheduledRef.current) return;\r\n scheduledRef.current = true;\r\n\r\n const flush = () => {\r\n scheduledRef.current = false;\r\n setFlag((n) => n + 1);\r\n };\r\n\r\n if (typeof queueMicrotask !== \"undefined\") {\r\n queueMicrotask(flush);\r\n return;\r\n }\r\n\r\n Promise.resolve().then(flush);\r\n };\r\n\r\n const createProxy = (target: any): any => {\r\n if (!target || typeof target !== \"object\") return target;\r\n\r\n if (!Array.isArray(target)) {\r\n const proto = Object.getPrototypeOf(target);\r\n const isPlainObject = proto === Object.prototype || proto === null;\r\n if (!isPlainObject) return target;\r\n }\r\n\r\n const cached = proxyCacheRef.current.get(target);\r\n if (cached) return cached;\r\n\r\n const proxy = new Proxy(target, {\r\n get(t, p, r) {\r\n return createProxy(Reflect.get(t, p, r));\r\n },\r\n set(t, p, v, r) {\r\n const prev = Reflect.get(t, p, r);\r\n const ok = Reflect.set(t, p, v, r);\r\n if (prev !== v) notify();\r\n return ok;\r\n },\r\n deleteProperty(t, p) {\r\n const had = Object.prototype.hasOwnProperty.call(t, p);\r\n const ok = Reflect.deleteProperty(t, p);\r\n if (had) notify();\r\n return ok;\r\n },\r\n });\r\n\r\n proxyCacheRef.current.set(target, proxy);\r\n return proxy;\r\n };\r\n\r\n if (!proxyRef.current) {\r\n rootRef.current = initialState;\r\n proxyRef.current = createProxy(rootRef.current);\r\n }\r\n\r\n return proxyRef.current as T;\r\n}\r\n\r\ntype TSetState<T> = (\r\n value: T | undefined | ((prev: T | undefined) => T),\r\n) => void;\r\n\r\ntype TLocalStorageOptions<T> = {\r\n defaultValue?: T | (() => T);\r\n listenStorageChange?: boolean;\r\n};\r\n\r\nexport function useLocalStorageState<T>(\r\n key: string,\r\n options?: TLocalStorageOptions<T>,\r\n): [T | undefined, TSetState<T>] {\r\n const { defaultValue, listenStorageChange } = options ?? {};\r\n\r\n const getDefault = () => {\r\n return typeof defaultValue === \"function\"\r\n ? (defaultValue as () => T)()\r\n : defaultValue;\r\n };\r\n\r\n const read = (): T | undefined => {\r\n if (typeof window === \"undefined\") return getDefault();\r\n\r\n const raw = window.localStorage.getItem(key);\r\n if (raw === null) return getDefault();\r\n\r\n try {\r\n return JSON.parse(raw) as T;\r\n } catch (e) {\r\n return raw as unknown as T;\r\n }\r\n };\r\n\r\n const [state, setState] = useState<T | undefined>(() => read());\r\n\r\n const set: TSetState<T> = (value) => {\r\n setState((prev) => {\r\n const next =\r\n typeof value === \"function\"\r\n ? (value as (prev: T | undefined) => T)(prev)\r\n : value;\r\n\r\n if (typeof window !== \"undefined\") {\r\n if (next === undefined) {\r\n window.localStorage.removeItem(key);\r\n } else {\r\n window.localStorage.setItem(key, JSON.stringify(next));\r\n }\r\n }\r\n\r\n return next;\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (!listenStorageChange) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const onStorage = (e: StorageEvent) => {\r\n if (e.key !== key) return;\r\n\r\n if (e.newValue === null) {\r\n setState(getDefault());\r\n return;\r\n }\r\n\r\n try {\r\n setState(JSON.parse(e.newValue) as T);\r\n } catch (err) {\r\n setState(e.newValue as unknown as T);\r\n }\r\n };\r\n\r\n window.addEventListener(\"storage\", onStorage);\r\n return () => {\r\n window.removeEventListener(\"storage\", onStorage);\r\n };\r\n }, [key, listenStorageChange]);\r\n\r\n return [state, set];\r\n}\r\n\r\ntype TResponsiveConfig = Record<string, number>;\r\n\r\nlet responsiveConfig: TResponsiveConfig = {};\r\n\r\nexport function configResponsive(config: TResponsiveConfig) {\r\n responsiveConfig = config;\r\n}\r\n\r\nexport function useResponsive() {\r\n const compute = () => {\r\n if (typeof window === \"undefined\") return {};\r\n const w = window.innerWidth;\r\n const result: Record<string, boolean> = {};\r\n\r\n for (const key in responsiveConfig) {\r\n result[key] = w >= responsiveConfig[key];\r\n }\r\n\r\n return result;\r\n };\r\n\r\n const [state, setState] = useState<Record<string, boolean>>(() =>\r\n compute(),\r\n );\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const onResize = () => {\r\n const next = compute();\r\n setState((prev) => {\r\n const prevKeys = Object.keys(prev);\r\n const nextKeys = Object.keys(next);\r\n if (prevKeys.length !== nextKeys.length) return next;\r\n\r\n for (const k of nextKeys) {\r\n if (prev[k] !== next[k]) return next;\r\n }\r\n\r\n return prev;\r\n });\r\n };\r\n\r\n onResize();\r\n window.addEventListener(\"resize\", onResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", onResize);\r\n };\r\n }, []);\r\n\r\n return state;\r\n}\r\n\r\ntype TSize = { width: number; height: number };\r\n\r\nexport function useSize(target: any): TSize | undefined {\r\n const [size, setSize] = useState<TSize>();\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const resolveTarget = () => {\r\n if (!target) return null;\r\n if (typeof target === \"function\") return target();\r\n if (typeof target === \"object\" && \"current\" in target) {\r\n return target.current;\r\n }\r\n return target;\r\n };\r\n\r\n const el = resolveTarget() as HTMLElement | null;\r\n if (!el) return;\r\n\r\n const update = () => {\r\n const rect = el.getBoundingClientRect();\r\n setSize({ width: rect.width, height: rect.height });\r\n };\r\n\r\n update();\r\n\r\n let ro: ResizeObserver | undefined;\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n ro = new ResizeObserver(update);\r\n ro.observe(el);\r\n }\r\n\r\n window.addEventListener(\"resize\", update);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n ro?.disconnect();\r\n };\r\n }, [target]);\r\n\r\n return size;\r\n}\r\n\r\nconst defaultObserver = {\r\n observe: undefined,\r\n unobserve: undefined,\r\n disconnect: undefined,\r\n};\r\n\r\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\r\n const wmRef = useRef(new WeakMap());\r\n const ioRef = useRef<IntersectionObserver | undefined>(undefined);\r\n\r\n if (typeof window !== \"undefined\" && !ioRef.current) {\r\n ioRef.current = new IntersectionObserver((entries) => {\r\n entries.map((entry) => {\r\n const callback = wmRef.current.get(entry.target);\r\n callback?.(entry.target, entry.isIntersecting);\r\n });\r\n }, configs);\r\n }\r\n\r\n const observe = useCallback((target: HTMLElement, callback: Function) => {\r\n if (!target || !ioRef.current || wmRef.current.get(target)) return;\r\n wmRef.current.set(target, callback);\r\n ioRef.current.observe(target);\r\n }, []);\r\n\r\n const unobserve = useCallback((target: HTMLElement) => {\r\n if (!target || !ioRef.current) return;\r\n ioRef.current.unobserve(target);\r\n wmRef.current.delete(target);\r\n }, []);\r\n\r\n const disconnect = useCallback(() => {\r\n ioRef.current?.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n ioRef.current?.disconnect();\r\n };\r\n }, []);\r\n\r\n if (typeof window === \"undefined\") {\r\n return {\r\n ...defaultObserver,\r\n };\r\n }\r\n\r\n return {\r\n observe,\r\n unobserve,\r\n disconnect,\r\n };\r\n}\r\n\r\nexport function useResizeObserver() {\r\n const wmRef = useRef(new WeakMap());\r\n const ioRef = useRef<ResizeObserver | undefined>(undefined);\r\n\r\n if (typeof window !== \"undefined\" && !ioRef.current) {\r\n ioRef.current = new ResizeObserver((entries) => {\r\n entries.map((entry) => {\r\n const callback = wmRef.current.get(entry.target);\r\n callback?.(entry.target);\r\n });\r\n });\r\n }\r\n\r\n const observe = useCallback((target: HTMLElement, callback: Function) => {\r\n if (!target || !ioRef.current || wmRef.current.get(target)) return;\r\n ioRef.current.observe(target);\r\n wmRef.current.set(target, callback);\r\n }, []);\r\n\r\n const unobserve = useCallback((target: HTMLElement) => {\r\n if (!target || !ioRef.current) return;\r\n ioRef.current.unobserve(target);\r\n wmRef.current.delete(target);\r\n }, []);\r\n\r\n const disconnect = useCallback(() => {\r\n ioRef.current?.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n ioRef.current?.disconnect();\r\n };\r\n }, []);\r\n\r\n if (typeof window === \"undefined\") {\r\n return {\r\n ...defaultObserver,\r\n };\r\n }\r\n\r\n return {\r\n observe,\r\n unobserve,\r\n disconnect,\r\n };\r\n}\r\n"],"names":["useEffect","useState","useRef","useCallback"],"mappings":"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"}
|
package/lib/css/colors.css
CHANGED
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
--background-opacity: rgba(255, 255, 255, 0.4);
|
|
62
62
|
--background-opacity-1: rgba(211, 211, 211, 0.4);
|
|
63
63
|
--background-opacity-2: rgba(188, 188, 188, 0.15);
|
|
64
|
+
--color-backdrop: rgba(255, 255, 255, 0.4);
|
|
64
65
|
|
|
65
66
|
--color: var(--color-2);
|
|
66
67
|
--color-main: var(--color-2);
|
|
@@ -709,12 +710,14 @@
|
|
|
709
710
|
--background-hover: transparent;
|
|
710
711
|
--background-opacity: #1a1a1a66;
|
|
711
712
|
--background-opacity-1: rgba(0, 0, 0, 0.4);
|
|
713
|
+
--background-opacity-2: rgba(33, 33, 33, 0.4);
|
|
714
|
+
--color-backdrop: rgba(0, 0, 0, 0.4);
|
|
712
715
|
|
|
713
716
|
--color: var(--color-0);
|
|
714
|
-
--color-main: #
|
|
715
|
-
--color-main-1: #
|
|
716
|
-
--color-main-0: #
|
|
717
|
-
--color-main-reverse: var(--
|
|
717
|
+
--color-main: #26f8dd;
|
|
718
|
+
--color-main-1: #0eddc3;
|
|
719
|
+
--color-main-0: #0065581f;
|
|
720
|
+
--color-main-reverse: var(--black);
|
|
718
721
|
|
|
719
722
|
--black-0: #00000040;
|
|
720
723
|
--white-0: #ffffff40;
|
|
@@ -753,12 +756,14 @@
|
|
|
753
756
|
--background-hover: transparent;
|
|
754
757
|
--background-opacity: #1a1a1a66;
|
|
755
758
|
--background-opacity-1: rgba(0, 0, 0, 0.4);
|
|
759
|
+
--background-opacity-2: rgba(33, 33, 33, 0.4);
|
|
760
|
+
--color-backdrop: rgba(0, 0, 0, 0.4);
|
|
756
761
|
|
|
757
762
|
--color: var(--color-0);
|
|
758
|
-
--color-main: #
|
|
759
|
-
--color-main-1: #
|
|
760
|
-
--color-main-0: #
|
|
761
|
-
--color-main-reverse: var(--
|
|
763
|
+
--color-main: #26f8dd;
|
|
764
|
+
--color-main-1: #0eddc3;
|
|
765
|
+
--color-main-0: #0065581f;
|
|
766
|
+
--color-main-reverse: var(--black);
|
|
762
767
|
|
|
763
768
|
--black-0: #00000040;
|
|
764
769
|
--white-0: #ffffff40;
|