@underverse-ui/underverse 1.0.33 → 1.0.34
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/AGENTS.md +7 -3
- package/CHANGELOG.md +57 -0
- package/README.md +24 -2
- package/agent-recipes.json +5 -0
- package/api-reference.json +1 -1
- package/dist/index.cjs +133 -87
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +135 -89
- package/dist/index.js.map +1 -1
- package/llms.txt +7 -2
- package/package.json +3 -1
package/dist/index.d.cts
CHANGED
|
@@ -2316,8 +2316,10 @@ interface OverlayScrollbarProviderProps {
|
|
|
2316
2316
|
autoHideDelay?: number;
|
|
2317
2317
|
dragScroll?: boolean;
|
|
2318
2318
|
clickScroll?: boolean;
|
|
2319
|
+
selector?: string;
|
|
2320
|
+
exclude?: string;
|
|
2319
2321
|
}
|
|
2320
|
-
declare function OverlayScrollbarProvider({ enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, }?: OverlayScrollbarProviderProps): null;
|
|
2322
|
+
declare function OverlayScrollbarProvider({ enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, selector, exclude, }?: OverlayScrollbarProviderProps): null;
|
|
2321
2323
|
|
|
2322
2324
|
type FilterType = "text" | "select" | "date";
|
|
2323
2325
|
type DataTableSize = "sm" | "md" | "lg";
|
package/dist/index.d.ts
CHANGED
|
@@ -2316,8 +2316,10 @@ interface OverlayScrollbarProviderProps {
|
|
|
2316
2316
|
autoHideDelay?: number;
|
|
2317
2317
|
dragScroll?: boolean;
|
|
2318
2318
|
clickScroll?: boolean;
|
|
2319
|
+
selector?: string;
|
|
2320
|
+
exclude?: string;
|
|
2319
2321
|
}
|
|
2320
|
-
declare function OverlayScrollbarProvider({ enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, }?: OverlayScrollbarProviderProps): null;
|
|
2322
|
+
declare function OverlayScrollbarProvider({ enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, selector, exclude, }?: OverlayScrollbarProviderProps): null;
|
|
2321
2323
|
|
|
2322
2324
|
type FilterType = "text" | "select" | "date";
|
|
2323
2325
|
type DataTableSize = "sm" | "md" | "lg";
|
package/dist/index.js
CHANGED
|
@@ -3822,7 +3822,6 @@ var Popover = ({
|
|
|
3822
3822
|
"div",
|
|
3823
3823
|
{
|
|
3824
3824
|
...contentProps,
|
|
3825
|
-
"data-os-scrollbar": contentScrollable ? true : void 0,
|
|
3826
3825
|
className: cn(
|
|
3827
3826
|
"rounded-2xl md:rounded-3xl border bg-popover text-popover-foreground shadow-md",
|
|
3828
3827
|
"backdrop-blur-sm bg-popover/95 border-border/60 p-4",
|
|
@@ -4042,7 +4041,6 @@ var Sheet = ({
|
|
|
4042
4041
|
/* @__PURE__ */ jsx19(
|
|
4043
4042
|
"div",
|
|
4044
4043
|
{
|
|
4045
|
-
"data-os-scrollbar": true,
|
|
4046
4044
|
className: "flex-1 overflow-auto p-4",
|
|
4047
4045
|
style: {
|
|
4048
4046
|
opacity: open && !isAnimating ? 1 : 0,
|
|
@@ -4506,7 +4504,7 @@ var Tabs = ({
|
|
|
4506
4504
|
);
|
|
4507
4505
|
const activeTab = tabs.find((tab) => tab.value === active);
|
|
4508
4506
|
return /* @__PURE__ */ jsxs20("div", { className: cn("w-full", orientation === "vertical" && "flex gap-6"), children: [
|
|
4509
|
-
/* @__PURE__ */ jsxs20("div", { className: containerClasses, role: "tablist", "aria-orientation": orientation,
|
|
4507
|
+
/* @__PURE__ */ jsxs20("div", { className: containerClasses, role: "tablist", "aria-orientation": orientation, children: [
|
|
4510
4508
|
tabs.map((tab, index) => {
|
|
4511
4509
|
const isActive = active === tab.value;
|
|
4512
4510
|
const Icon = tab.icon;
|
|
@@ -5056,7 +5054,7 @@ var Combobox = ({
|
|
|
5056
5054
|
}
|
|
5057
5055
|
)
|
|
5058
5056
|
] }) }),
|
|
5059
|
-
/* @__PURE__ */ jsx25("div", {
|
|
5057
|
+
/* @__PURE__ */ jsx25("div", { className: "overflow-y-auto overscroll-contain", style: { maxHeight }, children: /* @__PURE__ */ jsx25("div", { className: cn(size === "sm" ? "p-1" : size === "lg" ? "p-2" : "p-1.5"), children: loading2 ? /* @__PURE__ */ jsx25("div", { className: "px-3 py-10 text-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-3 animate-in fade-in-0 zoom-in-95 duration-300", children: [
|
|
5060
5058
|
/* @__PURE__ */ jsx25("div", { className: "relative", children: /* @__PURE__ */ jsx25("div", { className: "w-10 h-10 rounded-full border-2 border-primary/20 border-t-primary animate-spin" }) }),
|
|
5061
5059
|
/* @__PURE__ */ jsx25("span", { className: "text-sm text-muted-foreground", children: loadingText })
|
|
5062
5060
|
] }) }) : filteredOptions.length > 0 ? groupedOptions ? (
|
|
@@ -5649,7 +5647,7 @@ var ScrollArea = forwardRef7(
|
|
|
5649
5647
|
className
|
|
5650
5648
|
),
|
|
5651
5649
|
...props,
|
|
5652
|
-
children: /* @__PURE__ */ jsx28("div", { className: cn("h-full w-full overflow-y-auto scroll-area-viewport custom-scrollbar", contentClassName),
|
|
5650
|
+
children: /* @__PURE__ */ jsx28("div", { className: cn("h-full w-full overflow-y-auto scroll-area-viewport custom-scrollbar", contentClassName), children })
|
|
5653
5651
|
}
|
|
5654
5652
|
);
|
|
5655
5653
|
}
|
|
@@ -6112,7 +6110,6 @@ var DatePicker = ({
|
|
|
6112
6110
|
sizeStyles8[size].contentPadding,
|
|
6113
6111
|
"animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-300"
|
|
6114
6112
|
),
|
|
6115
|
-
contentScrollable: true,
|
|
6116
6113
|
trigger: /* @__PURE__ */ jsxs24(
|
|
6117
6114
|
"button",
|
|
6118
6115
|
{
|
|
@@ -6468,7 +6465,6 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
|
|
|
6468
6465
|
size === "sm" ? "p-3" : "p-5",
|
|
6469
6466
|
"animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-300"
|
|
6470
6467
|
),
|
|
6471
|
-
contentScrollable: true,
|
|
6472
6468
|
trigger: /* @__PURE__ */ jsxs24(
|
|
6473
6469
|
"button",
|
|
6474
6470
|
{
|
|
@@ -6919,7 +6915,6 @@ function WheelColumn({
|
|
|
6919
6915
|
"div",
|
|
6920
6916
|
{
|
|
6921
6917
|
ref: scrollRef,
|
|
6922
|
-
"data-os-scrollbar": true,
|
|
6923
6918
|
className: cn(
|
|
6924
6919
|
"h-full overflow-y-auto overscroll-contain snap-y snap-mandatory",
|
|
6925
6920
|
"select-none cursor-grab active:cursor-grabbing",
|
|
@@ -8343,7 +8338,6 @@ function WheelColumn2({
|
|
|
8343
8338
|
"div",
|
|
8344
8339
|
{
|
|
8345
8340
|
ref: scrollRef,
|
|
8346
|
-
"data-os-scrollbar": true,
|
|
8347
8341
|
className: cn(
|
|
8348
8342
|
"h-full overflow-y-auto overscroll-contain snap-y snap-mandatory",
|
|
8349
8343
|
"select-none cursor-grab active:cursor-grabbing",
|
|
@@ -9291,7 +9285,6 @@ var DateTimePicker = ({
|
|
|
9291
9285
|
// Keep the popover usable on small viewports
|
|
9292
9286
|
"max-w-[calc(100vw-1rem)] max-h-[calc(100vh-6rem)] overflow-auto"
|
|
9293
9287
|
),
|
|
9294
|
-
contentScrollable: true,
|
|
9295
9288
|
placement: "bottom-end",
|
|
9296
9289
|
children: [
|
|
9297
9290
|
/* @__PURE__ */ jsxs28("div", { className: "flex flex-col lg:flex-row divide-y lg:divide-y-0 lg:divide-x divide-border", children: [
|
|
@@ -9963,7 +9956,7 @@ function CalendarTimelineHeader(props) {
|
|
|
9963
9956
|
contentClassName: cn(
|
|
9964
9957
|
"w-auto p-0 rounded-2xl md:rounded-3xl overflow-hidden"
|
|
9965
9958
|
),
|
|
9966
|
-
children: /* @__PURE__ */ jsxs30("div", {
|
|
9959
|
+
children: /* @__PURE__ */ jsxs30("div", { className: "max-w-[calc(100vw-1rem)] max-h-[calc(100vh-6rem)] overflow-auto", children: [
|
|
9967
9960
|
/* @__PURE__ */ jsxs30("div", { className: "flex flex-col lg:flex-row divide-y lg:divide-y-0 lg:divide-x divide-border", children: [
|
|
9968
9961
|
/* @__PURE__ */ jsx35("div", { className: "p-2", children: /* @__PURE__ */ jsx35(
|
|
9969
9962
|
Calendar3,
|
|
@@ -10107,7 +10100,7 @@ function CalendarTimelineHeader(props) {
|
|
|
10107
10100
|
]
|
|
10108
10101
|
}
|
|
10109
10102
|
) : null,
|
|
10110
|
-
/* @__PURE__ */ jsx35("div", { ref: headerRef,
|
|
10103
|
+
/* @__PURE__ */ jsx35("div", { ref: headerRef, className: "flex-1 min-w-0 overflow-x-auto overflow-y-hidden", children: slotHeaderNodes })
|
|
10111
10104
|
] })
|
|
10112
10105
|
] });
|
|
10113
10106
|
}
|
|
@@ -11698,7 +11691,6 @@ function CalendarTimeline({
|
|
|
11698
11691
|
"div",
|
|
11699
11692
|
{
|
|
11700
11693
|
ref: leftRef,
|
|
11701
|
-
"data-os-scrollbar": true,
|
|
11702
11694
|
className: "shrink-0 overflow-y-auto overflow-x-hidden",
|
|
11703
11695
|
style: { width: effectiveResourceColumnWidth, minWidth: effectiveResourceColumnWidth },
|
|
11704
11696
|
children: [
|
|
@@ -11730,7 +11722,6 @@ function CalendarTimeline({
|
|
|
11730
11722
|
{
|
|
11731
11723
|
ref: bodyRef,
|
|
11732
11724
|
className: "relative flex-1 overflow-auto custom-scrollbar",
|
|
11733
|
-
"data-os-scrollbar": true,
|
|
11734
11725
|
onPointerMove,
|
|
11735
11726
|
onPointerUp,
|
|
11736
11727
|
onPointerLeave: () => setHoverCell(null),
|
|
@@ -12324,7 +12315,6 @@ var MultiCombobox = ({
|
|
|
12324
12315
|
id: listboxId,
|
|
12325
12316
|
role: "listbox",
|
|
12326
12317
|
"aria-multiselectable": "true",
|
|
12327
|
-
"data-os-scrollbar": true,
|
|
12328
12318
|
style: { maxHeight },
|
|
12329
12319
|
className: cn("overflow-y-auto p-1.5", size === "lg" ? "text-base" : size === "sm" ? "text-xs" : "text-sm"),
|
|
12330
12320
|
children: loading2 ? /* @__PURE__ */ jsx40("li", { className: "px-3 py-8 text-center", children: /* @__PURE__ */ jsxs35("div", { className: "flex flex-col items-center gap-3 animate-in fade-in-0 zoom-in-95 duration-300", children: [
|
|
@@ -13950,7 +13940,6 @@ function CategoryTreeSelect(props) {
|
|
|
13950
13940
|
"p-2",
|
|
13951
13941
|
"animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-300"
|
|
13952
13942
|
),
|
|
13953
|
-
"data-os-scrollbar": true,
|
|
13954
13943
|
children: [
|
|
13955
13944
|
renderSearch(),
|
|
13956
13945
|
renderTreeContent()
|
|
@@ -14977,7 +14966,6 @@ function Carousel({
|
|
|
14977
14966
|
showThumbnails && totalSlides > slidesToShow && /* @__PURE__ */ jsx47(
|
|
14978
14967
|
"div",
|
|
14979
14968
|
{
|
|
14980
|
-
"data-os-scrollbar": true,
|
|
14981
14969
|
className: cn(
|
|
14982
14970
|
"absolute bottom-0 left-0 right-0 flex gap-2 p-4 bg-linear-to-t from-black/50 to-transparent overflow-x-auto",
|
|
14983
14971
|
isHorizontal ? "flex-row" : "flex-col"
|
|
@@ -15869,7 +15857,6 @@ var TimelineRoot = React43.forwardRef(
|
|
|
15869
15857
|
"div",
|
|
15870
15858
|
{
|
|
15871
15859
|
ref,
|
|
15872
|
-
"data-os-scrollbar": mode === "horizontal" ? true : void 0,
|
|
15873
15860
|
className: cn("relative", mode === "horizontal" && "flex gap-4 overflow-x-auto", mode === "vertical" && "space-y-0", className),
|
|
15874
15861
|
...rest,
|
|
15875
15862
|
children: mode === "vertical" ? /* @__PURE__ */ jsx51("div", { className: "space-y-0", children: content }) : content
|
|
@@ -16865,7 +16852,7 @@ var MusicPlayer = ({
|
|
|
16865
16852
|
}
|
|
16866
16853
|
) })
|
|
16867
16854
|
] }),
|
|
16868
|
-
showPlaylist && /* @__PURE__ */ jsx53("div", {
|
|
16855
|
+
showPlaylist && /* @__PURE__ */ jsx53("div", { className: "bg-muted/50 backdrop-blur-sm max-h-96 overflow-y-auto border-t border-border", children: /* @__PURE__ */ jsxs48("div", { className: "p-4", children: [
|
|
16869
16856
|
/* @__PURE__ */ jsxs48("h3", { className: "text-lg font-semibold text-foreground mb-3", children: [
|
|
16870
16857
|
"Playlist (",
|
|
16871
16858
|
playlist.length,
|
|
@@ -18864,21 +18851,127 @@ var LoadingBar = ({
|
|
|
18864
18851
|
// ../../components/ui/OverlayScrollbarProvider.tsx
|
|
18865
18852
|
import { useEffect as useEffect28 } from "react";
|
|
18866
18853
|
import { OverlayScrollbars } from "overlayscrollbars";
|
|
18867
|
-
|
|
18868
|
-
|
|
18854
|
+
|
|
18855
|
+
// ../../components/ui/overlay-scrollbar-controller.ts
|
|
18856
|
+
var DEFAULT_OVERLAY_SCROLLBAR_SELECTOR = [
|
|
18857
|
+
".overflow-auto",
|
|
18858
|
+
".overflow-y-auto",
|
|
18859
|
+
".overflow-x-auto",
|
|
18860
|
+
".overflow-scroll",
|
|
18861
|
+
".overflow-y-scroll",
|
|
18862
|
+
".overflow-x-scroll",
|
|
18863
|
+
"textarea",
|
|
18864
|
+
"[data-os-scrollbar]"
|
|
18865
|
+
].join(", ");
|
|
18866
|
+
var DEFAULT_OVERLAY_SCROLLBAR_EXCLUDE = [
|
|
18867
|
+
"html",
|
|
18868
|
+
"body",
|
|
18869
|
+
"[data-os-ignore]",
|
|
18869
18870
|
"[data-radix-portal]",
|
|
18870
18871
|
"[role='dialog']",
|
|
18871
18872
|
"[aria-modal='true']",
|
|
18872
18873
|
"[data-sonner-toaster]"
|
|
18873
18874
|
].join(", ");
|
|
18874
|
-
function
|
|
18875
|
-
|
|
18875
|
+
function splitSelectorList(selectorList) {
|
|
18876
|
+
return selectorList.split(",").map((part) => part.trim()).filter(Boolean);
|
|
18877
|
+
}
|
|
18878
|
+
function safeMatches(element, selector) {
|
|
18879
|
+
try {
|
|
18880
|
+
return element.matches(selector);
|
|
18881
|
+
} catch {
|
|
18882
|
+
return false;
|
|
18883
|
+
}
|
|
18884
|
+
}
|
|
18885
|
+
function safeClosest(element, selector) {
|
|
18886
|
+
try {
|
|
18887
|
+
return element.closest(selector);
|
|
18888
|
+
} catch {
|
|
18889
|
+
return null;
|
|
18890
|
+
}
|
|
18891
|
+
}
|
|
18892
|
+
function shouldSkipElement(element, excludeSelectors, ancestorExcludeSelectors) {
|
|
18893
|
+
const tagName = element.tagName?.toLowerCase?.() ?? "";
|
|
18894
|
+
if (tagName === "body" || tagName === "html") return true;
|
|
18876
18895
|
if (element.classList.contains("scrollbar-none")) return true;
|
|
18877
|
-
if (element.hasAttribute("data-os-ignore")) return true;
|
|
18878
18896
|
if (element.hasAttribute("data-overlayscrollbars")) return true;
|
|
18879
|
-
if (
|
|
18897
|
+
if (excludeSelectors.some((selector) => safeMatches(element, selector))) return true;
|
|
18898
|
+
if (ancestorExcludeSelectors.some((selector) => safeClosest(element, selector))) return true;
|
|
18880
18899
|
return false;
|
|
18881
18900
|
}
|
|
18901
|
+
function createOverlayScrollbarController({
|
|
18902
|
+
selector,
|
|
18903
|
+
exclude,
|
|
18904
|
+
options,
|
|
18905
|
+
createInstance,
|
|
18906
|
+
root = document.body,
|
|
18907
|
+
createObserver,
|
|
18908
|
+
requestAnimationFrameImpl = requestAnimationFrame,
|
|
18909
|
+
cancelAnimationFrameImpl = cancelAnimationFrame
|
|
18910
|
+
}) {
|
|
18911
|
+
const instances = /* @__PURE__ */ new Map();
|
|
18912
|
+
const excludeSelectors = splitSelectorList(exclude);
|
|
18913
|
+
const ancestorExcludeSelectors = excludeSelectors.filter((item) => item !== "html" && item !== "body");
|
|
18914
|
+
let rafId = 0;
|
|
18915
|
+
const init = (element) => {
|
|
18916
|
+
if (shouldSkipElement(element, excludeSelectors, ancestorExcludeSelectors)) return;
|
|
18917
|
+
if (instances.has(element)) return;
|
|
18918
|
+
instances.set(element, createInstance(element, options));
|
|
18919
|
+
};
|
|
18920
|
+
const scan = (root2) => {
|
|
18921
|
+
if (root2 instanceof HTMLElement && safeMatches(root2, selector)) {
|
|
18922
|
+
init(root2);
|
|
18923
|
+
}
|
|
18924
|
+
if (!("querySelectorAll" in root2)) return;
|
|
18925
|
+
try {
|
|
18926
|
+
root2.querySelectorAll(selector).forEach(init);
|
|
18927
|
+
} catch {
|
|
18928
|
+
}
|
|
18929
|
+
};
|
|
18930
|
+
const cleanup = () => {
|
|
18931
|
+
instances.forEach((instance, element) => {
|
|
18932
|
+
if (!element.isConnected) {
|
|
18933
|
+
instance.destroy();
|
|
18934
|
+
instances.delete(element);
|
|
18935
|
+
}
|
|
18936
|
+
});
|
|
18937
|
+
};
|
|
18938
|
+
scan(root);
|
|
18939
|
+
const onMutations = (mutations) => {
|
|
18940
|
+
if (rafId) return;
|
|
18941
|
+
rafId = requestAnimationFrameImpl(() => {
|
|
18942
|
+
rafId = 0;
|
|
18943
|
+
const roots = /* @__PURE__ */ new Set();
|
|
18944
|
+
mutations.forEach((mutation) => {
|
|
18945
|
+
if (mutation.target && (typeof mutation.target.querySelectorAll === "function" || mutation.target instanceof HTMLElement)) {
|
|
18946
|
+
roots.add(mutation.target);
|
|
18947
|
+
}
|
|
18948
|
+
Array.from(mutation.addedNodes).forEach((node) => {
|
|
18949
|
+
if (node instanceof HTMLElement) {
|
|
18950
|
+
roots.add(node);
|
|
18951
|
+
}
|
|
18952
|
+
});
|
|
18953
|
+
});
|
|
18954
|
+
roots.forEach(scan);
|
|
18955
|
+
cleanup();
|
|
18956
|
+
});
|
|
18957
|
+
};
|
|
18958
|
+
const observer = createObserver ? createObserver(onMutations) : new MutationObserver(onMutations);
|
|
18959
|
+
observer.observe(root, { childList: true, subtree: true, attributes: true });
|
|
18960
|
+
const destroy = () => {
|
|
18961
|
+
if (rafId) cancelAnimationFrameImpl(rafId);
|
|
18962
|
+
observer.disconnect();
|
|
18963
|
+
instances.forEach((instance) => instance.destroy());
|
|
18964
|
+
instances.clear();
|
|
18965
|
+
};
|
|
18966
|
+
return {
|
|
18967
|
+
destroy,
|
|
18968
|
+
scan,
|
|
18969
|
+
cleanup,
|
|
18970
|
+
getInstanceCount: () => instances.size
|
|
18971
|
+
};
|
|
18972
|
+
}
|
|
18973
|
+
|
|
18974
|
+
// ../../components/ui/OverlayScrollbarProvider.tsx
|
|
18882
18975
|
function OverlayScrollbarProvider({
|
|
18883
18976
|
enabled = true,
|
|
18884
18977
|
theme = "os-theme-underverse",
|
|
@@ -18886,7 +18979,9 @@ function OverlayScrollbarProvider({
|
|
|
18886
18979
|
autoHide = "leave",
|
|
18887
18980
|
autoHideDelay = 600,
|
|
18888
18981
|
dragScroll = true,
|
|
18889
|
-
clickScroll = false
|
|
18982
|
+
clickScroll = false,
|
|
18983
|
+
selector = DEFAULT_OVERLAY_SCROLLBAR_SELECTOR,
|
|
18984
|
+
exclude = DEFAULT_OVERLAY_SCROLLBAR_EXCLUDE
|
|
18890
18985
|
} = {}) {
|
|
18891
18986
|
useEffect28(() => {
|
|
18892
18987
|
if (typeof window === "undefined") return;
|
|
@@ -18901,56 +18996,16 @@ function OverlayScrollbarProvider({
|
|
|
18901
18996
|
clickScroll
|
|
18902
18997
|
}
|
|
18903
18998
|
};
|
|
18904
|
-
const
|
|
18905
|
-
|
|
18906
|
-
|
|
18907
|
-
|
|
18908
|
-
|
|
18909
|
-
instances.set(element, OverlayScrollbars(element, options));
|
|
18910
|
-
};
|
|
18911
|
-
const scan = (root) => {
|
|
18912
|
-
if (root instanceof HTMLElement && root.matches(SCROLLABLE_SELECTOR)) {
|
|
18913
|
-
init(root);
|
|
18914
|
-
}
|
|
18915
|
-
if (!("querySelectorAll" in root)) return;
|
|
18916
|
-
root.querySelectorAll(SCROLLABLE_SELECTOR).forEach(init);
|
|
18917
|
-
};
|
|
18918
|
-
const cleanup = () => {
|
|
18919
|
-
instances.forEach((instance, element) => {
|
|
18920
|
-
if (!element.isConnected) {
|
|
18921
|
-
instance.destroy();
|
|
18922
|
-
instances.delete(element);
|
|
18923
|
-
}
|
|
18924
|
-
});
|
|
18925
|
-
};
|
|
18926
|
-
scan(document.body);
|
|
18927
|
-
const observer = new MutationObserver((mutations) => {
|
|
18928
|
-
if (rafId) return;
|
|
18929
|
-
rafId = requestAnimationFrame(() => {
|
|
18930
|
-
rafId = 0;
|
|
18931
|
-
const scanRoots = /* @__PURE__ */ new Set();
|
|
18932
|
-
mutations.forEach((mutation) => {
|
|
18933
|
-
if (mutation.target instanceof HTMLElement || mutation.target instanceof Document || mutation.target instanceof DocumentFragment) {
|
|
18934
|
-
scanRoots.add(mutation.target);
|
|
18935
|
-
}
|
|
18936
|
-
mutation.addedNodes.forEach((node) => {
|
|
18937
|
-
if (node instanceof HTMLElement) {
|
|
18938
|
-
scanRoots.add(node);
|
|
18939
|
-
}
|
|
18940
|
-
});
|
|
18941
|
-
});
|
|
18942
|
-
scanRoots.forEach(scan);
|
|
18943
|
-
cleanup();
|
|
18944
|
-
});
|
|
18999
|
+
const controller = createOverlayScrollbarController({
|
|
19000
|
+
selector,
|
|
19001
|
+
exclude,
|
|
19002
|
+
options,
|
|
19003
|
+
createInstance: (element, instanceOptions) => OverlayScrollbars(element, instanceOptions)
|
|
18945
19004
|
});
|
|
18946
|
-
observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ["class"] });
|
|
18947
19005
|
return () => {
|
|
18948
|
-
|
|
18949
|
-
observer.disconnect();
|
|
18950
|
-
instances.forEach((instance) => instance.destroy());
|
|
18951
|
-
instances.clear();
|
|
19006
|
+
controller.destroy();
|
|
18952
19007
|
};
|
|
18953
|
-
}, [enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll]);
|
|
19008
|
+
}, [enabled, theme, visibility, autoHide, autoHideDelay, dragScroll, clickScroll, selector, exclude]);
|
|
18954
19009
|
return null;
|
|
18955
19010
|
}
|
|
18956
19011
|
var OverlayScrollbarProvider_default = OverlayScrollbarProvider;
|
|
@@ -18972,7 +19027,6 @@ var Table = React55.forwardRef(({ className, containerClassName, disableContaine
|
|
|
18972
19027
|
"backdrop-blur-sm transition-all duration-300",
|
|
18973
19028
|
containerClassName
|
|
18974
19029
|
),
|
|
18975
|
-
"data-os-scrollbar": true,
|
|
18976
19030
|
children: /* @__PURE__ */ jsx65("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props })
|
|
18977
19031
|
}
|
|
18978
19032
|
);
|
|
@@ -19904,13 +19958,8 @@ function DataTable({
|
|
|
19904
19958
|
children: /* @__PURE__ */ jsx68(
|
|
19905
19959
|
"div",
|
|
19906
19960
|
{
|
|
19907
|
-
className: "
|
|
19908
|
-
"
|
|
19909
|
-
style: stickyHeader ? {
|
|
19910
|
-
maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight,
|
|
19911
|
-
overflowY: "auto",
|
|
19912
|
-
overflowX: "auto"
|
|
19913
|
-
} : { overflowX: "auto" },
|
|
19961
|
+
className: cn("w-full overflow-x-auto", stickyHeader && "overflow-y-auto"),
|
|
19962
|
+
style: stickyHeader ? { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
|
|
19914
19963
|
children: /* @__PURE__ */ jsxs62(
|
|
19915
19964
|
Table,
|
|
19916
19965
|
{
|
|
@@ -21428,7 +21477,7 @@ import { useTranslations as useTranslations7 } from "next-intl";
|
|
|
21428
21477
|
import { useEditor, EditorContent } from "@tiptap/react";
|
|
21429
21478
|
|
|
21430
21479
|
// ../../components/ui/UEditor/extensions.ts
|
|
21431
|
-
import
|
|
21480
|
+
import Document from "@tiptap/extension-document";
|
|
21432
21481
|
import Paragraph from "@tiptap/extension-paragraph";
|
|
21433
21482
|
import Text from "@tiptap/extension-text";
|
|
21434
21483
|
import Bold from "@tiptap/extension-bold";
|
|
@@ -21515,7 +21564,7 @@ var CommandList = forwardRef13((props, ref) => {
|
|
|
21515
21564
|
if (props.items.length === 0) {
|
|
21516
21565
|
return /* @__PURE__ */ jsx77("div", { className: "w-72 p-4 text-center text-sm text-muted-foreground", children: "No results" });
|
|
21517
21566
|
}
|
|
21518
|
-
return /* @__PURE__ */ jsxs69("div", { ref: listRef,
|
|
21567
|
+
return /* @__PURE__ */ jsxs69("div", { ref: listRef, className: "w-72 max-h-80 overflow-y-auto bg-card border border-border rounded-2xl shadow-lg", children: [
|
|
21519
21568
|
/* @__PURE__ */ jsx77("div", { className: "px-3 py-2 border-b", children: /* @__PURE__ */ jsx77("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: "Basic Blocks" }) }),
|
|
21520
21569
|
/* @__PURE__ */ jsx77("div", { className: "p-1", children: props.items.map((item, index) => /* @__PURE__ */ jsxs69(
|
|
21521
21570
|
"button",
|
|
@@ -22608,7 +22657,7 @@ var EmojiList = forwardRef14((props, ref) => {
|
|
|
22608
22657
|
if (props.items.length === 0) {
|
|
22609
22658
|
return /* @__PURE__ */ jsx78("div", { className: "w-80 p-4 text-center text-sm text-muted-foreground bg-card border border-border rounded-2xl shadow-lg", children: "No emoji found" });
|
|
22610
22659
|
}
|
|
22611
|
-
return /* @__PURE__ */ jsxs70("div", {
|
|
22660
|
+
return /* @__PURE__ */ jsxs70("div", { className: "w-80 max-h-80 overflow-y-auto bg-card border border-border rounded-2xl shadow-lg", children: [
|
|
22612
22661
|
/* @__PURE__ */ jsx78("div", { className: "px-3 py-2 border-b bg-muted/30", children: /* @__PURE__ */ jsxs70("div", { className: "flex items-center gap-2", children: [
|
|
22613
22662
|
/* @__PURE__ */ jsx78(Smile, { className: "w-4 h-4 text-primary" }),
|
|
22614
22663
|
/* @__PURE__ */ jsx78("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: "Emoji" })
|
|
@@ -22933,7 +22982,7 @@ function buildUEditorExtensions({
|
|
|
22933
22982
|
editable = true
|
|
22934
22983
|
}) {
|
|
22935
22984
|
return [
|
|
22936
|
-
|
|
22985
|
+
Document,
|
|
22937
22986
|
Paragraph,
|
|
22938
22987
|
Text,
|
|
22939
22988
|
Bold,
|
|
@@ -22977,7 +23026,6 @@ function buildUEditorExtensions({
|
|
|
22977
23026
|
CodeBlockLowlight.configure({
|
|
22978
23027
|
lowlight,
|
|
22979
23028
|
HTMLAttributes: {
|
|
22980
|
-
"data-os-scrollbar": "true",
|
|
22981
23029
|
class: "rounded-lg bg-[#1e1e1e] p-4 font-mono text-sm overflow-x-auto"
|
|
22982
23030
|
}
|
|
22983
23031
|
}),
|
|
@@ -23342,7 +23390,6 @@ var EmojiPicker = ({ onSelect, onClose }) => {
|
|
|
23342
23390
|
"div",
|
|
23343
23391
|
{
|
|
23344
23392
|
ref: scrollContainerRef,
|
|
23345
|
-
"data-os-scrollbar": true,
|
|
23346
23393
|
className: "overflow-y-auto px-3 py-2 shrink",
|
|
23347
23394
|
style: { height: "20rem" },
|
|
23348
23395
|
children: search ? (
|
|
@@ -24064,7 +24111,7 @@ var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
|
24064
24111
|
if (commands.length === 0) {
|
|
24065
24112
|
return /* @__PURE__ */ jsx84("div", { className: "w-72 p-4 text-center text-muted-foreground text-sm", children: t("slashCommand.noResults") });
|
|
24066
24113
|
}
|
|
24067
|
-
return /* @__PURE__ */ jsxs76("div", { ref: menuRef,
|
|
24114
|
+
return /* @__PURE__ */ jsxs76("div", { ref: menuRef, className: "w-72 max-h-80 overflow-y-auto", children: [
|
|
24068
24115
|
/* @__PURE__ */ jsx84("div", { className: "px-3 py-2 border-b", children: /* @__PURE__ */ jsx84("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: t("slashCommand.basicBlocks") }) }),
|
|
24069
24116
|
/* @__PURE__ */ jsx84("div", { className: "p-1", children: commands.map((cmd, index) => /* @__PURE__ */ jsxs76(
|
|
24070
24117
|
"button",
|
|
@@ -24826,7 +24873,6 @@ var UEditor = React72.forwardRef(({
|
|
|
24826
24873
|
EditorContent,
|
|
24827
24874
|
{
|
|
24828
24875
|
editor,
|
|
24829
|
-
"data-os-scrollbar": true,
|
|
24830
24876
|
className: "flex-1 overflow-y-auto",
|
|
24831
24877
|
style: {
|
|
24832
24878
|
minHeight,
|