@1771technologies/lytenyte-pro 0.0.39
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/LICENSE +15 -0
- package/dist/DialogPortalContext-C2WZTqJ3.js +47 -0
- package/dist/InternalBackdrop-Dm9czgoC.js +6746 -0
- package/dist/MenuRoot-9n64jNWP.js +724 -0
- package/dist/anchor-context-B9sGQdR5.js +35 -0
- package/dist/arrow-down-icon-B-3ldODD.js +27 -0
- package/dist/arrow-svg-evmXDI_J.js +29 -0
- package/dist/column-manager.js +1241 -0
- package/dist/cross-icon-CEMLAlFX.js +20 -0
- package/dist/dialog.js +506 -0
- package/dist/filter-manager.js +1056 -0
- package/dist/getPseudoElementBounds-BSHt6WYm.js +26 -0
- package/dist/grid-container.js +18 -0
- package/dist/icons.js +512 -0
- package/dist/index.js +3730 -0
- package/dist/lytenyte-pro.css +1948 -0
- package/dist/manage-columns-icon-D4CElo5H.js +146 -0
- package/dist/menu.js +1639 -0
- package/dist/pill-C4Jhdf8E.js +985 -0
- package/dist/pill-manager.js +674 -0
- package/dist/plus-icon-ToqW5CC-.js +15 -0
- package/dist/popover.js +770 -0
- package/dist/row-group-icon-BOOju5Vu.js +205 -0
- package/dist/search-icon-CcG1lqsn.js +86 -0
- package/dist/select-C6xOZZLq.js +2231 -0
- package/dist/sort-manager.js +298 -0
- package/dist/tickmark-icon-CoogRMoO.js +51 -0
- package/dist/types/cell-selection/cell-selection-containers.d.ts +3 -0
- package/dist/types/cell-selection/cell-selection-driver.d.ts +1 -0
- package/dist/types/cell-selection/cell-style-row.d.ts +8 -0
- package/dist/types/column-manager/column-manager-drag-box-controls.d.ts +1 -0
- package/dist/types/column-manager/column-manager-drag-box-expander.d.ts +1 -0
- package/dist/types/column-manager/column-manager-drag-box-label.d.ts +5 -0
- package/dist/types/column-manager/column-manager-drag-box.d.ts +13 -0
- package/dist/types/column-manager/column-manager-drag-placeholder.d.ts +5 -0
- package/dist/types/column-manager/column-manager-drop-zone.d.ts +10 -0
- package/dist/types/column-manager/column-manager-impl.d.ts +36 -0
- package/dist/types/column-manager/column-manager-pill.d.ts +4 -0
- package/dist/types/column-manager/column-manager-pivot-mode-toggle.d.ts +1 -0
- package/dist/types/column-manager/column-manager-search.d.ts +1 -0
- package/dist/types/column-manager/column-manager-state.d.ts +8 -0
- package/dist/types/column-manager/column-manager-tree-item.d.ts +6 -0
- package/dist/types/column-manager/column-manager-tree.d.ts +11 -0
- package/dist/types/column-manager/column-manager-types.d.ts +1 -0
- package/dist/types/column-manager/column-manager.d.ts +1 -0
- package/dist/types/column-manager/column-mananger-context.d.ts +12 -0
- package/dist/types/column-manager/utils/all-leafs.d.ts +3 -0
- package/dist/types/column-manager/utils/can-hide-item.d.ts +3 -0
- package/dist/types/column-manager/utils/handle-item-hide.d.ts +3 -0
- package/dist/types/components-internal/button/button.d.ts +9 -0
- package/dist/types/components-internal/grid-frame/grid-frame.d.ts +11 -0
- package/dist/types/components-internal/radio/radio.d.ts +5 -0
- package/dist/types/components-internal/separator/separator.d.ts +8 -0
- package/dist/types/components-internal/toggle/toggle.d.ts +7 -0
- package/dist/types/dialog/dialog-driver.d.ts +1 -0
- package/dist/types/dialog/dialog-impl.d.ts +6 -0
- package/dist/types/dialog/dialog.d.ts +8 -0
- package/dist/types/dialog/use-dialog-class.d.ts +1 -0
- package/dist/types/external.d.ts +2 -0
- package/dist/types/filter-manager/combined-to-flat.d.ts +3 -0
- package/dist/types/filter-manager/components/apply-filter-button.d.ts +1 -0
- package/dist/types/filter-manager/components/clear-filter-button.d.ts +1 -0
- package/dist/types/filter-manager/components/flatten-tree-items.d.ts +4 -0
- package/dist/types/filter-manager/components/get-child-values.d.ts +2 -0
- package/dist/types/filter-manager/components/in-filter-container.d.ts +1 -0
- package/dist/types/filter-manager/components/in-filter-error.d.ts +5 -0
- package/dist/types/filter-manager/components/in-filter-loading.d.ts +1 -0
- package/dist/types/filter-manager/components/in-filter-root.d.ts +11 -0
- package/dist/types/filter-manager/components/in-filter-tree.d.ts +15 -0
- package/dist/types/filter-manager/components/simple-filter-additional-switch.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-operator/date-operator.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-operator/number-operator.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-operator/simple-filter-operator.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-operator/text-operator.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-root.d.ts +9 -0
- package/dist/types/filter-manager/components/simple-filter-value/date-value.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-value/number-value.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-value/simple-filter-value.d.ts +1 -0
- package/dist/types/filter-manager/components/simple-filter-value/text-value.d.ts +1 -0
- package/dist/types/filter-manager/components/use-date-filter-callbacks.d.ts +9 -0
- package/dist/types/filter-manager/components/use-in-filter-item-loader.d.ts +7 -0
- package/dist/types/filter-manager/components/use-number-filter-callbacks.d.ts +8 -0
- package/dist/types/filter-manager/components/use-text-filter-callbacks.d.ts +8 -0
- package/dist/types/filter-manager/filter-manager-impl.d.ts +27 -0
- package/dist/types/filter-manager/filter-manager.d.ts +1 -0
- package/dist/types/filter-manager/filter-state-context.d.ts +16 -0
- package/dist/types/filter-manager/flat-to-combined.d.ts +3 -0
- package/dist/types/filter-manager/flatten-combined-filter.d.ts +3 -0
- package/dist/types/filter-manager/is-filter-complete.d.ts +2 -0
- package/dist/types/filter-manager/types.d.ts +15 -0
- package/dist/types/filter-manager/use-in-filter.d.ts +5 -0
- package/dist/types/filter-manager/use-simple-filters.d.ts +8 -0
- package/dist/types/grid-container/grid-container-impl.d.ts +6 -0
- package/dist/types/grid-container/grid-container.d.ts +2 -0
- package/dist/types/icons.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/license.d.ts +12 -0
- package/dist/types/list-view/list-view-context.d.ts +21 -0
- package/dist/types/list-view/list-view.d.ts +26 -0
- package/dist/types/lytenyte-pro.d.ts +7 -0
- package/dist/types/menu/arrow-svg.d.ts +1 -0
- package/dist/types/menu/column-menu/column-menu-driver.d.ts +4 -0
- package/dist/types/menu/context-menu/context-menu-driver.d.ts +1 -0
- package/dist/types/menu/context-menu/use-context-menu-listener.d.ts +6 -0
- package/dist/types/menu/menu-impl.d.ts +17 -0
- package/dist/types/menu/menu.d.ts +18 -0
- package/dist/types/menu/use-menu-class-name.d.ts +1 -0
- package/dist/types/overlay/load-error-overlay.d.ts +1 -0
- package/dist/types/overlay/loading-overlay.d.ts +1 -0
- package/dist/types/overlay/no-data-overlay.d.ts +1 -0
- package/dist/types/overlay/overlay-driver.d.ts +1 -0
- package/dist/types/pill/pill.d.ts +5 -0
- package/dist/types/pill-manager/pill-manager-agg-menu.d.ts +7 -0
- package/dist/types/pill-manager/pill-manager-controls.d.ts +9 -0
- package/dist/types/pill-manager/pill-manager-drag-placeholder.d.ts +5 -0
- package/dist/types/pill-manager/pill-manager-expander.d.ts +1 -0
- package/dist/types/pill-manager/pill-manager-impl.d.ts +49 -0
- package/dist/types/pill-manager/pill-manager-pill.d.ts +4 -0
- package/dist/types/pill-manager/pill-manager-pills/pill-manager-pills.d.ts +2 -0
- package/dist/types/pill-manager/pill-manager-pills/use-aggregation-source.d.ts +2 -0
- package/dist/types/pill-manager/pill-manager-pills/use-column-pivot-source.d.ts +2 -0
- package/dist/types/pill-manager/pill-manager-pills/use-column-source.d.ts +2 -0
- package/dist/types/pill-manager/pill-manager-pills/use-measures-source.d.ts +2 -0
- package/dist/types/pill-manager/pill-manager-pills/use-row-groups-source.d.ts +2 -0
- package/dist/types/pill-manager/pill-manager-pills/utils.d.ts +3 -0
- package/dist/types/pill-manager/pill-manager-row-label.d.ts +22 -0
- package/dist/types/pill-manager/pill-manager-row.d.ts +12 -0
- package/dist/types/pill-manager/pill-manager-rows.d.ts +1 -0
- package/dist/types/pill-manager/pill-manager-separator.d.ts +1 -0
- package/dist/types/pill-manager/pill-manager-types.d.ts +36 -0
- package/dist/types/pill-manager/pill-manager.d.ts +1 -0
- package/dist/types/popover/anchor-context.d.ts +6 -0
- package/dist/types/popover/popover-driver.d.ts +1 -0
- package/dist/types/popover/popover-impl.d.ts +8 -0
- package/dist/types/popover/popover.d.ts +10 -0
- package/dist/types/popover/use-popover-class.d.ts +1 -0
- package/dist/types/select/select.d.ts +17 -0
- package/dist/types/sort-manager/sort-adder.d.ts +4 -0
- package/dist/types/sort-manager/sort-apply.d.ts +1 -0
- package/dist/types/sort-manager/sort-cancel.d.ts +1 -0
- package/dist/types/sort-manager/sort-clear.d.ts +1 -0
- package/dist/types/sort-manager/sort-column-select.d.ts +5 -0
- package/dist/types/sort-manager/sort-direction-select.d.ts +5 -0
- package/dist/types/sort-manager/sort-items-to-sort-model.d.ts +3 -0
- package/dist/types/sort-manager/sort-manager-container.d.ts +53 -0
- package/dist/types/sort-manager/sort-manager-context.d.ts +4 -0
- package/dist/types/sort-manager/sort-manager-impl.d.ts +30 -0
- package/dist/types/sort-manager/sort-manager.d.ts +1 -0
- package/dist/types/sort-manager/sort-model-to-sort-items.d.ts +4 -0
- package/dist/types/sort-manager/sort-remove.d.ts +4 -0
- package/dist/types/sort-manager/sort-sort-select.d.ts +5 -0
- package/dist/types/sort-manager/use-sort-state.d.ts +8 -0
- package/dist/types/sort-manager/use-sortable-column-items.d.ts +9 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/use-client-data-source.d.ts +6 -0
- package/dist/types/use-edge-scroll.d.ts +7 -0
- package/dist/types/use-grid.d.ts +6 -0
- package/dist/types/use-lytenyte.d.ts +10 -0
- package/dist/types/use-tree-data-source.d.ts +3 -0
- package/dist/types/watermark.d.ts +3 -0
- package/dist/types.js +1 -0
- package/dist/use-grid-DKvzGZWc.js +916 -0
- package/dist/useAnchorPositioning-Cm44rb7y.js +252 -0
- package/dist/useBaseUiId-J66PFGv_.js +48 -0
- package/dist/useButton-Cy7tjZ__.js +183 -0
- package/dist/useCompositeListItem-I14CpQPi.js +51 -0
- package/dist/useScrollLock-D6h5lZYs.js +515 -0
- package/package.json +96 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { a as useLatestRef, s as shift, l as limitShift, b as size, c as arrow, h as hide, g as getSide, d as useFloating, u as useEnhancedEffect, e as autoUpdate, f as getAlignment, o as offset, i as flip } from "./InternalBackdrop-Dm9czgoC.js";
|
|
3
|
+
const DirectionContext = /* @__PURE__ */ React.createContext(void 0);
|
|
4
|
+
if (process.env.NODE_ENV !== "production") {
|
|
5
|
+
DirectionContext.displayName = "DirectionContext";
|
|
6
|
+
}
|
|
7
|
+
function useDirection(optional = true) {
|
|
8
|
+
const context = React.useContext(DirectionContext);
|
|
9
|
+
if (context === void 0 && !optional) {
|
|
10
|
+
throw new Error("Base UI: DirectionContext is missing.");
|
|
11
|
+
}
|
|
12
|
+
return context?.direction ?? "ltr";
|
|
13
|
+
}
|
|
14
|
+
function getLogicalSide(sideParam, renderedSide, isRtl) {
|
|
15
|
+
const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end";
|
|
16
|
+
const logicalRight = isRtl ? "inline-start" : "inline-end";
|
|
17
|
+
const logicalLeft = isRtl ? "inline-end" : "inline-start";
|
|
18
|
+
return {
|
|
19
|
+
top: "top",
|
|
20
|
+
right: isLogicalSideParam ? logicalRight : "right",
|
|
21
|
+
bottom: "bottom",
|
|
22
|
+
left: isLogicalSideParam ? logicalLeft : "left"
|
|
23
|
+
}[renderedSide];
|
|
24
|
+
}
|
|
25
|
+
function useAnchorPositioning(params) {
|
|
26
|
+
const {
|
|
27
|
+
// Public parameters
|
|
28
|
+
anchor,
|
|
29
|
+
positionMethod = "absolute",
|
|
30
|
+
side: sideParam = "bottom",
|
|
31
|
+
sideOffset = 0,
|
|
32
|
+
align = "center",
|
|
33
|
+
alignOffset = 0,
|
|
34
|
+
collisionBoundary,
|
|
35
|
+
collisionPadding = 5,
|
|
36
|
+
sticky = false,
|
|
37
|
+
arrowPadding = 5,
|
|
38
|
+
// Private parameters
|
|
39
|
+
keepMounted = false,
|
|
40
|
+
floatingRootContext,
|
|
41
|
+
mounted,
|
|
42
|
+
trackAnchor = true,
|
|
43
|
+
nodeId
|
|
44
|
+
} = params;
|
|
45
|
+
const direction = useDirection();
|
|
46
|
+
const isRtl = direction === "rtl";
|
|
47
|
+
const side = {
|
|
48
|
+
top: "top",
|
|
49
|
+
right: "right",
|
|
50
|
+
bottom: "bottom",
|
|
51
|
+
left: "left",
|
|
52
|
+
"inline-end": isRtl ? "left" : "right",
|
|
53
|
+
"inline-start": isRtl ? "right" : "left"
|
|
54
|
+
}[sideParam];
|
|
55
|
+
const placement = align === "center" ? side : `${side}-${align}`;
|
|
56
|
+
const commonCollisionProps = {
|
|
57
|
+
boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary,
|
|
58
|
+
padding: collisionPadding
|
|
59
|
+
};
|
|
60
|
+
const arrowRef = React.useRef(null);
|
|
61
|
+
const sideOffsetRef = useLatestRef(sideOffset);
|
|
62
|
+
const alignOffsetRef = useLatestRef(alignOffset);
|
|
63
|
+
const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0;
|
|
64
|
+
const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0;
|
|
65
|
+
const middleware = [offset(({
|
|
66
|
+
rects,
|
|
67
|
+
placement: currentPlacement
|
|
68
|
+
}) => {
|
|
69
|
+
const data = {
|
|
70
|
+
side: getLogicalSide(sideParam, getSide(currentPlacement), isRtl),
|
|
71
|
+
align: getAlignment(currentPlacement) || "center",
|
|
72
|
+
anchor: {
|
|
73
|
+
width: rects.reference.width,
|
|
74
|
+
height: rects.reference.height
|
|
75
|
+
},
|
|
76
|
+
positioner: {
|
|
77
|
+
width: rects.floating.width,
|
|
78
|
+
height: rects.floating.height
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current;
|
|
82
|
+
const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current;
|
|
83
|
+
return {
|
|
84
|
+
mainAxis: sideAxis,
|
|
85
|
+
crossAxis: alignAxis,
|
|
86
|
+
alignmentAxis: alignAxis
|
|
87
|
+
};
|
|
88
|
+
}, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])];
|
|
89
|
+
const flipMiddleware = flip(commonCollisionProps);
|
|
90
|
+
const shiftMiddleware = shift({
|
|
91
|
+
...commonCollisionProps,
|
|
92
|
+
crossAxis: sticky,
|
|
93
|
+
limiter: sticky ? void 0 : limitShift(() => {
|
|
94
|
+
if (!arrowRef.current) {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
const {
|
|
98
|
+
height
|
|
99
|
+
} = arrowRef.current.getBoundingClientRect();
|
|
100
|
+
return {
|
|
101
|
+
offset: height / 2 + (typeof collisionPadding === "number" ? collisionPadding : 0)
|
|
102
|
+
};
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
if (align !== "center") {
|
|
106
|
+
middleware.push(flipMiddleware, shiftMiddleware);
|
|
107
|
+
} else {
|
|
108
|
+
middleware.push(shiftMiddleware, flipMiddleware);
|
|
109
|
+
}
|
|
110
|
+
middleware.push(size({
|
|
111
|
+
...commonCollisionProps,
|
|
112
|
+
apply({
|
|
113
|
+
elements: {
|
|
114
|
+
floating
|
|
115
|
+
},
|
|
116
|
+
rects: {
|
|
117
|
+
reference
|
|
118
|
+
},
|
|
119
|
+
availableWidth,
|
|
120
|
+
availableHeight
|
|
121
|
+
}) {
|
|
122
|
+
Object.entries({
|
|
123
|
+
"--available-width": `${availableWidth}px`,
|
|
124
|
+
"--available-height": `${availableHeight}px`,
|
|
125
|
+
"--anchor-width": `${reference.width}px`,
|
|
126
|
+
"--anchor-height": `${reference.height}px`
|
|
127
|
+
}).forEach(([key, value]) => {
|
|
128
|
+
floating.style.setProperty(key, value);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}), arrow(() => ({
|
|
132
|
+
// `transform-origin` calculations rely on an element existing. If the arrow hasn't been set,
|
|
133
|
+
// we'll create a fake element.
|
|
134
|
+
element: arrowRef.current || document.createElement("div"),
|
|
135
|
+
padding: arrowPadding
|
|
136
|
+
}), [arrowPadding]), hide(), {
|
|
137
|
+
name: "transformOrigin",
|
|
138
|
+
fn({
|
|
139
|
+
elements: elements2,
|
|
140
|
+
middlewareData: middlewareData2,
|
|
141
|
+
placement: renderedPlacement2
|
|
142
|
+
}) {
|
|
143
|
+
const currentRenderedSide = getSide(renderedPlacement2);
|
|
144
|
+
const arrowEl = arrowRef.current;
|
|
145
|
+
const arrowX = middlewareData2.arrow?.x ?? 0;
|
|
146
|
+
const arrowY = middlewareData2.arrow?.y ?? 0;
|
|
147
|
+
const arrowWidth = arrowEl?.clientWidth ?? 0;
|
|
148
|
+
const arrowHeight = arrowEl?.clientHeight ?? 0;
|
|
149
|
+
const transformX = arrowX + arrowWidth / 2;
|
|
150
|
+
const transformY = arrowY + arrowHeight / 2;
|
|
151
|
+
const transformOrigin = {
|
|
152
|
+
top: `${transformX}px calc(100% + ${sideOffset}px)`,
|
|
153
|
+
bottom: `${transformX}px ${-sideOffset}px`,
|
|
154
|
+
left: `calc(100% + ${sideOffset}px) ${transformY}px`,
|
|
155
|
+
right: `${-sideOffset}px ${transformY}px`
|
|
156
|
+
}[currentRenderedSide];
|
|
157
|
+
elements2.floating.style.setProperty("--transform-origin", transformOrigin);
|
|
158
|
+
return {};
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
let rootContext = floatingRootContext;
|
|
162
|
+
if (!mounted && floatingRootContext) {
|
|
163
|
+
rootContext = {
|
|
164
|
+
...floatingRootContext,
|
|
165
|
+
elements: {
|
|
166
|
+
reference: null,
|
|
167
|
+
floating: null,
|
|
168
|
+
domReference: null
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const autoUpdateOptions = React.useMemo(() => ({
|
|
173
|
+
elementResize: trackAnchor && typeof ResizeObserver !== "undefined",
|
|
174
|
+
layoutShift: trackAnchor && typeof IntersectionObserver !== "undefined"
|
|
175
|
+
}), [trackAnchor]);
|
|
176
|
+
const {
|
|
177
|
+
refs,
|
|
178
|
+
elements,
|
|
179
|
+
floatingStyles,
|
|
180
|
+
middlewareData,
|
|
181
|
+
update,
|
|
182
|
+
placement: renderedPlacement,
|
|
183
|
+
context,
|
|
184
|
+
isPositioned
|
|
185
|
+
} = useFloating({
|
|
186
|
+
rootContext,
|
|
187
|
+
placement,
|
|
188
|
+
middleware,
|
|
189
|
+
strategy: positionMethod,
|
|
190
|
+
whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions),
|
|
191
|
+
nodeId
|
|
192
|
+
});
|
|
193
|
+
const registeredPositionReferenceRef = React.useRef(null);
|
|
194
|
+
useEnhancedEffect(() => {
|
|
195
|
+
if (!mounted) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const resolvedAnchor = typeof anchor === "function" ? anchor() : anchor;
|
|
199
|
+
if (resolvedAnchor) {
|
|
200
|
+
const unwrappedElement = isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor;
|
|
201
|
+
refs.setPositionReference(unwrappedElement);
|
|
202
|
+
registeredPositionReferenceRef.current = unwrappedElement;
|
|
203
|
+
}
|
|
204
|
+
}, [mounted, refs, anchor]);
|
|
205
|
+
React.useEffect(() => {
|
|
206
|
+
if (!mounted) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (typeof anchor === "function") {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (isRef(anchor) && anchor.current !== registeredPositionReferenceRef.current) {
|
|
213
|
+
refs.setPositionReference(anchor.current);
|
|
214
|
+
registeredPositionReferenceRef.current = anchor.current;
|
|
215
|
+
}
|
|
216
|
+
}, [mounted, refs, anchor]);
|
|
217
|
+
React.useEffect(() => {
|
|
218
|
+
if (keepMounted && mounted && elements.domReference && elements.floating) {
|
|
219
|
+
return autoUpdate(elements.domReference, elements.floating, update, autoUpdateOptions);
|
|
220
|
+
}
|
|
221
|
+
return void 0;
|
|
222
|
+
}, [keepMounted, mounted, elements, update, autoUpdateOptions]);
|
|
223
|
+
const renderedSide = getSide(renderedPlacement);
|
|
224
|
+
const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl);
|
|
225
|
+
const renderedAlign = getAlignment(renderedPlacement) || "center";
|
|
226
|
+
const anchorHidden = Boolean(middlewareData.hide?.referenceHidden);
|
|
227
|
+
const arrowStyles = React.useMemo(() => ({
|
|
228
|
+
position: "absolute",
|
|
229
|
+
top: middlewareData.arrow?.y,
|
|
230
|
+
left: middlewareData.arrow?.x
|
|
231
|
+
}), [middlewareData.arrow]);
|
|
232
|
+
const arrowUncentered = middlewareData.arrow?.centerOffset !== 0;
|
|
233
|
+
return React.useMemo(() => ({
|
|
234
|
+
positionerStyles: floatingStyles,
|
|
235
|
+
arrowStyles,
|
|
236
|
+
arrowRef,
|
|
237
|
+
arrowUncentered,
|
|
238
|
+
side: logicalRenderedSide,
|
|
239
|
+
align: renderedAlign,
|
|
240
|
+
anchorHidden,
|
|
241
|
+
refs,
|
|
242
|
+
context,
|
|
243
|
+
isPositioned
|
|
244
|
+
}), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, anchorHidden, refs, context, isPositioned]);
|
|
245
|
+
}
|
|
246
|
+
function isRef(param) {
|
|
247
|
+
return param != null && "current" in param;
|
|
248
|
+
}
|
|
249
|
+
export {
|
|
250
|
+
useDirection as a,
|
|
251
|
+
useAnchorPositioning as u
|
|
252
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const STARTING_HOOK = {
|
|
3
|
+
"data-starting-style": ""
|
|
4
|
+
};
|
|
5
|
+
const ENDING_HOOK = {
|
|
6
|
+
"data-ending-style": ""
|
|
7
|
+
};
|
|
8
|
+
const transitionStatusMapping = {
|
|
9
|
+
transitionStatus(value) {
|
|
10
|
+
if (value === "starting") {
|
|
11
|
+
return STARTING_HOOK;
|
|
12
|
+
}
|
|
13
|
+
if (value === "ending") {
|
|
14
|
+
return ENDING_HOOK;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
let globalId = 0;
|
|
20
|
+
function useGlobalId(idOverride, prefix = "mui") {
|
|
21
|
+
const [defaultId, setDefaultId] = React.useState(idOverride);
|
|
22
|
+
const id = idOverride || defaultId;
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
if (defaultId == null) {
|
|
25
|
+
globalId += 1;
|
|
26
|
+
setDefaultId(`${prefix}-${globalId}`);
|
|
27
|
+
}
|
|
28
|
+
}, [defaultId, prefix]);
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
31
|
+
const safeReact = {
|
|
32
|
+
...React
|
|
33
|
+
};
|
|
34
|
+
const maybeReactUseId = safeReact.useId;
|
|
35
|
+
function useId(idOverride, prefix) {
|
|
36
|
+
if (maybeReactUseId !== void 0) {
|
|
37
|
+
const reactId = maybeReactUseId();
|
|
38
|
+
return idOverride ?? `${prefix}-${reactId}`;
|
|
39
|
+
}
|
|
40
|
+
return useGlobalId(idOverride, prefix);
|
|
41
|
+
}
|
|
42
|
+
function useBaseUiId(idOverride) {
|
|
43
|
+
return useId(idOverride, "base-ui");
|
|
44
|
+
}
|
|
45
|
+
export {
|
|
46
|
+
transitionStatusMapping as t,
|
|
47
|
+
useBaseUiId as u
|
|
48
|
+
};
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { u as useEnhancedEffect, j as useEventCallback, k as useForkRef, m as mergeProps, n as makeEventPreventable } from "./InternalBackdrop-Dm9czgoC.js";
|
|
3
|
+
let set;
|
|
4
|
+
if (process.env.NODE_ENV !== "production") {
|
|
5
|
+
set = /* @__PURE__ */ new Set();
|
|
6
|
+
}
|
|
7
|
+
function warn(...messages) {
|
|
8
|
+
if (process.env.NODE_ENV !== "production") {
|
|
9
|
+
const messageKey = messages.join(" ");
|
|
10
|
+
if (!set.has(messageKey)) {
|
|
11
|
+
set.add(messageKey);
|
|
12
|
+
console.warn(`Base UI: ${messageKey}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function useRootElementName(parameters) {
|
|
17
|
+
const {
|
|
18
|
+
rootElementName: rootElementNameProp = ""
|
|
19
|
+
} = parameters;
|
|
20
|
+
const [rootElementName, setRootElementName] = React.useState(rootElementNameProp.toUpperCase());
|
|
21
|
+
if (process.env.NODE_ENV !== "production") {
|
|
22
|
+
useEnhancedEffect(() => {
|
|
23
|
+
if (rootElementNameProp && rootElementName !== rootElementNameProp.toUpperCase()) {
|
|
24
|
+
warn(`useRootElementName expected the '${rootElementNameProp}' element, but a '${rootElementName.toLowerCase()}' was rendered instead`, "This may cause hydration issues in an SSR context, for example in a Next.js app");
|
|
25
|
+
}
|
|
26
|
+
}, [rootElementNameProp, rootElementName]);
|
|
27
|
+
}
|
|
28
|
+
const updateRootElementName = React.useCallback((element) => {
|
|
29
|
+
setRootElementName(element?.tagName ?? "");
|
|
30
|
+
}, []);
|
|
31
|
+
return {
|
|
32
|
+
rootElementName,
|
|
33
|
+
updateRootElementName
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const CompositeRootContext = /* @__PURE__ */ React.createContext(void 0);
|
|
37
|
+
if (process.env.NODE_ENV !== "production") {
|
|
38
|
+
CompositeRootContext.displayName = "CompositeRootContext";
|
|
39
|
+
}
|
|
40
|
+
function useCompositeRootContext(optional = false) {
|
|
41
|
+
const context = React.useContext(CompositeRootContext);
|
|
42
|
+
if (context === void 0 && !optional) {
|
|
43
|
+
throw new Error("Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>.");
|
|
44
|
+
}
|
|
45
|
+
return context;
|
|
46
|
+
}
|
|
47
|
+
function useButton(parameters = {}) {
|
|
48
|
+
const {
|
|
49
|
+
buttonRef: externalRef,
|
|
50
|
+
disabled = false,
|
|
51
|
+
focusableWhenDisabled,
|
|
52
|
+
tabIndex,
|
|
53
|
+
type,
|
|
54
|
+
elementName: elementNameProp
|
|
55
|
+
} = parameters;
|
|
56
|
+
const buttonRef = React.useRef(null);
|
|
57
|
+
const {
|
|
58
|
+
rootElementName: elementName,
|
|
59
|
+
updateRootElementName
|
|
60
|
+
} = useRootElementName({
|
|
61
|
+
rootElementName: elementNameProp
|
|
62
|
+
});
|
|
63
|
+
const isCompositeItem = useCompositeRootContext(true) !== void 0;
|
|
64
|
+
const isNativeButton = useEventCallback(() => {
|
|
65
|
+
const element = buttonRef.current;
|
|
66
|
+
return elementName === "BUTTON" || elementName === "INPUT" && ["button", "submit", "reset"].includes(element?.type);
|
|
67
|
+
});
|
|
68
|
+
const isValidLink = useEventCallback(() => {
|
|
69
|
+
const element = buttonRef.current;
|
|
70
|
+
return Boolean(elementName === "A" && element?.href);
|
|
71
|
+
});
|
|
72
|
+
const mergedRef = useForkRef(updateRootElementName, externalRef, buttonRef);
|
|
73
|
+
const buttonProps = React.useMemo(() => {
|
|
74
|
+
const additionalProps = {};
|
|
75
|
+
if (tabIndex !== void 0 && !isCompositeItem) {
|
|
76
|
+
additionalProps.tabIndex = tabIndex;
|
|
77
|
+
}
|
|
78
|
+
if (elementName === "BUTTON" || elementName === "INPUT") {
|
|
79
|
+
if (focusableWhenDisabled || isCompositeItem) {
|
|
80
|
+
additionalProps["aria-disabled"] = disabled;
|
|
81
|
+
} else if (!isCompositeItem) {
|
|
82
|
+
additionalProps.disabled = disabled;
|
|
83
|
+
}
|
|
84
|
+
} else if (elementName !== "") {
|
|
85
|
+
if (elementName !== "A") {
|
|
86
|
+
additionalProps.role = "button";
|
|
87
|
+
if (!isCompositeItem) {
|
|
88
|
+
additionalProps.tabIndex = tabIndex ?? 0;
|
|
89
|
+
}
|
|
90
|
+
} else if (tabIndex && !isCompositeItem) {
|
|
91
|
+
additionalProps.tabIndex = tabIndex;
|
|
92
|
+
}
|
|
93
|
+
if (disabled) {
|
|
94
|
+
additionalProps["aria-disabled"] = disabled;
|
|
95
|
+
if (!isCompositeItem) {
|
|
96
|
+
additionalProps.tabIndex = focusableWhenDisabled ? tabIndex ?? 0 : -1;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return additionalProps;
|
|
101
|
+
}, [disabled, elementName, focusableWhenDisabled, isCompositeItem, tabIndex]);
|
|
102
|
+
useEnhancedEffect(() => {
|
|
103
|
+
const element = buttonRef.current;
|
|
104
|
+
if (!(element instanceof HTMLButtonElement)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (isCompositeItem && disabled && buttonProps.disabled === void 0 && element.disabled) {
|
|
108
|
+
element.disabled = false;
|
|
109
|
+
}
|
|
110
|
+
}, [disabled, buttonProps.disabled, isCompositeItem]);
|
|
111
|
+
const getButtonProps = React.useCallback((externalProps = {}) => {
|
|
112
|
+
const {
|
|
113
|
+
onClick: externalOnClick,
|
|
114
|
+
onMouseDown: externalOnMouseDown,
|
|
115
|
+
onKeyUp: externalOnKeyUp,
|
|
116
|
+
onKeyDown: externalOnKeyDown,
|
|
117
|
+
onPointerDown: externalOnPointerDown,
|
|
118
|
+
...otherExternalProps
|
|
119
|
+
} = externalProps;
|
|
120
|
+
return mergeProps({
|
|
121
|
+
type,
|
|
122
|
+
onClick(event) {
|
|
123
|
+
if (disabled) {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
externalOnClick?.(event);
|
|
128
|
+
},
|
|
129
|
+
onMouseDown(event) {
|
|
130
|
+
if (!disabled) {
|
|
131
|
+
externalOnMouseDown?.(event);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
onKeyDown(event) {
|
|
135
|
+
if (
|
|
136
|
+
// allow Tabbing away from focusableWhenDisabled buttons
|
|
137
|
+
disabled && focusableWhenDisabled && event.key !== "Tab" || event.target === event.currentTarget && !isNativeButton() && event.key === " "
|
|
138
|
+
) {
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
}
|
|
141
|
+
if (!disabled) {
|
|
142
|
+
makeEventPreventable(event);
|
|
143
|
+
externalOnKeyDown?.(event);
|
|
144
|
+
}
|
|
145
|
+
if (event.baseUIHandlerPrevented) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (event.target === event.currentTarget && !isNativeButton() && !isValidLink() && event.key === "Enter" && !disabled) {
|
|
149
|
+
externalOnClick?.(event);
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
onKeyUp(event) {
|
|
154
|
+
if (!disabled) {
|
|
155
|
+
makeEventPreventable(event);
|
|
156
|
+
externalOnKeyUp?.(event);
|
|
157
|
+
}
|
|
158
|
+
if (event.baseUIHandlerPrevented) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (event.target === event.currentTarget && !isNativeButton() && !disabled && event.key === " ") {
|
|
162
|
+
externalOnClick?.(event);
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
onPointerDown(event) {
|
|
166
|
+
if (disabled) {
|
|
167
|
+
event.preventDefault();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
externalOnPointerDown?.(event);
|
|
171
|
+
},
|
|
172
|
+
ref: mergedRef
|
|
173
|
+
}, buttonProps, otherExternalProps);
|
|
174
|
+
}, [buttonProps, disabled, focusableWhenDisabled, isNativeButton, isValidLink, mergedRef, type]);
|
|
175
|
+
return {
|
|
176
|
+
getButtonProps,
|
|
177
|
+
buttonRef: mergedRef
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export {
|
|
181
|
+
useButton as u,
|
|
182
|
+
warn as w
|
|
183
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { u as useEnhancedEffect } from "./InternalBackdrop-Dm9czgoC.js";
|
|
3
|
+
import { u as useCompositeListContext } from "./useScrollLock-D6h5lZYs.js";
|
|
4
|
+
function useCompositeListItem(params = {}) {
|
|
5
|
+
const {
|
|
6
|
+
label,
|
|
7
|
+
metadata
|
|
8
|
+
} = params;
|
|
9
|
+
const {
|
|
10
|
+
register,
|
|
11
|
+
unregister,
|
|
12
|
+
map,
|
|
13
|
+
elementsRef,
|
|
14
|
+
labelsRef
|
|
15
|
+
} = useCompositeListContext();
|
|
16
|
+
const [index, setIndex] = React.useState(null);
|
|
17
|
+
const componentRef = React.useRef(null);
|
|
18
|
+
const ref = React.useCallback((node) => {
|
|
19
|
+
componentRef.current = node;
|
|
20
|
+
if (index !== null) {
|
|
21
|
+
elementsRef.current[index] = node;
|
|
22
|
+
if (labelsRef) {
|
|
23
|
+
const isLabelDefined = label !== void 0;
|
|
24
|
+
labelsRef.current[index] = isLabelDefined ? label : node?.textContent ?? null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}, [index, elementsRef, labelsRef, label]);
|
|
28
|
+
useEnhancedEffect(() => {
|
|
29
|
+
const node = componentRef.current;
|
|
30
|
+
if (node) {
|
|
31
|
+
register(node, metadata);
|
|
32
|
+
return () => {
|
|
33
|
+
unregister(node);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return void 0;
|
|
37
|
+
}, [register, unregister, metadata]);
|
|
38
|
+
useEnhancedEffect(() => {
|
|
39
|
+
const i = componentRef.current ? map.get(componentRef.current)?.index : null;
|
|
40
|
+
if (i != null) {
|
|
41
|
+
setIndex(i);
|
|
42
|
+
}
|
|
43
|
+
}, [map]);
|
|
44
|
+
return React.useMemo(() => ({
|
|
45
|
+
ref,
|
|
46
|
+
index: index == null ? -1 : index
|
|
47
|
+
}), [index, ref]);
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
useCompositeListItem as u
|
|
51
|
+
};
|