@floegence/floe-webapp-core 0.52.7 → 0.52.8
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/dist/components/icons/index.d.ts +1 -0
- package/dist/components/icons/index.js +417 -406
- package/dist/components/ui/SurfaceFloatingPanel.d.ts +13 -0
- package/dist/components/ui/SurfaceFloatingPanel.js +102 -82
- package/dist/components/ui/index.d.ts +2 -1
- package/dist/components/ui/surfaceFloatingPanelGeometry.d.ts +39 -0
- package/dist/components/ui/surfaceFloatingPanelGeometry.js +78 -0
- package/dist/full.js +707 -706
- package/dist/icons.js +100 -99
- package/package.json +1 -1
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
2
|
import { type SurfaceFloatingLayerProps } from './SurfaceFloatingLayer';
|
|
3
|
+
import { type SurfaceFloatingPanelBoundaryInsets, type SurfaceFloatingPanelPosition } from './surfaceFloatingPanelGeometry';
|
|
3
4
|
export type SurfaceFloatingPanelHandleProps = Pick<JSX.ButtonHTMLAttributes<HTMLButtonElement>, 'onPointerDown' | 'onKeyDown' | 'style'> & {
|
|
4
5
|
'oncapture:click': JSX.EventHandler<HTMLButtonElement, MouseEvent>;
|
|
5
6
|
};
|
|
6
7
|
export interface SurfaceFloatingPanelProps extends Omit<SurfaceFloatingLayerProps, 'position' | 'estimatedSize' | 'clamp' | 'children' | 'layerRef'> {
|
|
7
8
|
/** Spread these props on a dedicated grip or collapsed launcher button. */
|
|
8
9
|
children: (handle: SurfaceFloatingPanelHandleProps) => JSX.Element;
|
|
10
|
+
/** Non-interactive client/CSS viewport pixel insets, such as app chrome or a composer. */
|
|
11
|
+
boundaryInsets?: SurfaceFloatingPanelBoundaryInsets;
|
|
12
|
+
/** Snap the panel to the nearest safe boundary edge after a committed pointer drag. */
|
|
13
|
+
snapToEdge?: boolean;
|
|
14
|
+
/** Maximum client/CSS viewport pixel distance that enables snapping. Defaults to Infinity. */
|
|
15
|
+
snapThreshold?: number;
|
|
16
|
+
/** Client/CSS viewport pixel gap between the panel and its safe boundary. Defaults to 8px. */
|
|
17
|
+
snapInset?: number;
|
|
18
|
+
/** Called with client/CSS viewport coordinates after a committed position change. */
|
|
19
|
+
onPositionChange?: (position: SurfaceFloatingPanelPosition) => void;
|
|
9
20
|
}
|
|
10
21
|
/** A draggable, bottom-end anchored panel using the shared surface portal boundary.
|
|
11
22
|
* Content owns its dimensions and collapsed presentation; the panel preserves its
|
|
12
23
|
* relative placement as either changes. Drag handles never intercept content input.
|
|
24
|
+
* Geometry stays in client/CSS viewport coordinates; projected surfaces are converted
|
|
25
|
+
* only when the shared floating layer renders.
|
|
13
26
|
*/
|
|
14
27
|
export declare function SurfaceFloatingPanel(props: SurfaceFloatingPanelProps): JSX.Element;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { memo as
|
|
2
|
-
import { splitProps as
|
|
3
|
-
import { SurfaceFloatingLayer as
|
|
4
|
-
import { readSurfaceSafeArea as
|
|
5
|
-
import { startPointerSession as
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { memo as X, createComponent as K, mergeProps as L, template as j, use as q } from "solid-js/web";
|
|
2
|
+
import { splitProps as N, createSignal as b, createMemo as Y, onMount as O, onCleanup as U } from "solid-js";
|
|
3
|
+
import { SurfaceFloatingLayer as V } from "./SurfaceFloatingLayer.js";
|
|
4
|
+
import { readSurfaceSafeArea as z, resolveFloatingBoundary as J } from "./surfaceFloatingBoundary.js";
|
|
5
|
+
import { startPointerSession as Q } from "./pointerSession.js";
|
|
6
|
+
import { resolveSurfaceFloatingPanelBounds as Z, resolveSurfaceFloatingPanelPosition as ee, resolveSurfaceFloatingPanelInset as te, insetSurfaceFloatingPanelGeometry as ne, resolveSurfaceFloatingPanelSnap as oe, resolveSurfaceFloatingPanelSnapThreshold as re } from "./surfaceFloatingPanelGeometry.js";
|
|
7
|
+
import { resolveSurfacePortalHost as ae, resolveSurfacePortalScale as ie } from "./dialogSurfaceScope.js";
|
|
8
|
+
var se = /* @__PURE__ */ j("<span hidden>");
|
|
9
|
+
function he($) {
|
|
10
|
+
const [a, E] = N($, ["children", "owner", "boundary", "style", "snapToEdge", "boundaryInsets", "snapThreshold", "snapInset", "onPositionChange"]);
|
|
11
|
+
let P, r, f, h = !1, p, c = null;
|
|
12
|
+
const B = z(), [G, R] = b(!1), [A, F] = b({
|
|
12
13
|
x: 1,
|
|
13
14
|
y: 1
|
|
14
|
-
}), [
|
|
15
|
+
}), [u, W] = b({
|
|
15
16
|
left: 0,
|
|
16
17
|
top: 0,
|
|
17
18
|
width: 0,
|
|
@@ -20,117 +21,136 @@ function Z(X) {
|
|
|
20
21
|
panelHeight: 0,
|
|
21
22
|
scaleX: 1,
|
|
22
23
|
scaleY: 1
|
|
23
|
-
}),
|
|
24
|
-
if (!
|
|
25
|
-
const
|
|
26
|
-
owner:
|
|
27
|
-
}),
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
}), x = () => a.owner ?? P, v = () => te(a.snapInset), S = Y(() => Z(u(), v())), k = () => x()?.ownerDocument.defaultView?.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? 0 : 180, T = () => {
|
|
25
|
+
if (!r) return;
|
|
26
|
+
const e = ae({
|
|
27
|
+
owner: x()
|
|
28
|
+
}), t = J(e, a.boundary, B), n = ie(e), i = r.getBoundingClientRect(), o = {
|
|
29
|
+
...ne({
|
|
30
|
+
left: t?.left ?? 0,
|
|
31
|
+
top: t?.top ?? 0,
|
|
32
|
+
width: t?.width ?? 0,
|
|
33
|
+
height: t?.height ?? 0,
|
|
34
|
+
panelWidth: i.width,
|
|
35
|
+
panelHeight: i.height
|
|
36
|
+
}, a.boundaryInsets),
|
|
37
|
+
scaleX: n.x,
|
|
38
|
+
scaleY: n.y
|
|
36
39
|
};
|
|
37
|
-
|
|
38
|
-
},
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
x:
|
|
42
|
-
y: t
|
|
43
|
-
};
|
|
44
|
-
}), M = (t, e) => {
|
|
45
|
-
const o = a(), n = (i, r) => r > 0 ? Math.max(0, Math.min(1, i / r)) : 0;
|
|
46
|
-
x({
|
|
47
|
-
x: n(t - o.left - 8, o.width - o.panelWidth - 16),
|
|
48
|
-
y: n(e - o.top - 8, o.height - o.panelHeight - 16)
|
|
40
|
+
W((m) => Object.keys(o).every((s) => o[s] === m[s]) ? m : o);
|
|
41
|
+
}, l = Y(() => ee(S(), A())), y = (e, t) => {
|
|
42
|
+
const n = S(), i = (g, o) => o.room > 0 ? Math.max(0, Math.min(1, g / o.room)) : 0;
|
|
43
|
+
F({
|
|
44
|
+
x: i(e - n.x.min, n.x),
|
|
45
|
+
y: i(t - n.y.min, n.y)
|
|
49
46
|
});
|
|
50
|
-
},
|
|
47
|
+
}, d = (e = l()) => {
|
|
48
|
+
a.onPositionChange?.(e);
|
|
49
|
+
}, M = () => {
|
|
50
|
+
p !== void 0 && (clearTimeout(p), p = void 0), r && c !== null && (r.style.transition = c, c = null);
|
|
51
|
+
}, C = () => {
|
|
52
|
+
const e = p !== void 0 ? r?.getBoundingClientRect() : void 0;
|
|
53
|
+
M(), T(), e && y(e.left, e.top);
|
|
54
|
+
}, H = () => {
|
|
55
|
+
const e = oe(l(), S(), re(a.snapThreshold));
|
|
56
|
+
if (!e) {
|
|
57
|
+
d(l());
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const t = l();
|
|
61
|
+
if (t.x === e.position.x && t.y === e.position.y) {
|
|
62
|
+
d(t);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
M();
|
|
66
|
+
const n = k();
|
|
67
|
+
r && (c = r.style.transition, r.style.transition = n ? `left ${n}ms ease-out, top ${n}ms ease-out` : "none"), y(e.position.x, e.position.y), d(e.position), p = setTimeout(() => {
|
|
68
|
+
r && c !== null && (r.style.transition = c), c = null, p = void 0;
|
|
69
|
+
}, n);
|
|
70
|
+
}, _ = {
|
|
51
71
|
style: {
|
|
52
72
|
"touch-action": "none",
|
|
53
73
|
"user-select": "none"
|
|
54
74
|
},
|
|
55
|
-
onPointerDown: (
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
const
|
|
75
|
+
onPointerDown: (e) => {
|
|
76
|
+
if (e.button !== 0 || f) return;
|
|
77
|
+
e.stopPropagation(), C();
|
|
78
|
+
const t = A(), n = l(), i = e.clientX, g = e.clientY;
|
|
59
79
|
h = !1;
|
|
60
|
-
let
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
80
|
+
let o = !1;
|
|
81
|
+
const m = (s, w) => {
|
|
82
|
+
const D = s - i, I = w - g;
|
|
83
|
+
o ||= Math.hypot(D, I) >= 4, o && y(n.x + D, n.y + I);
|
|
64
84
|
};
|
|
65
|
-
|
|
66
|
-
pointerEvent:
|
|
67
|
-
captureEl:
|
|
85
|
+
f = Q({
|
|
86
|
+
pointerEvent: e,
|
|
87
|
+
captureEl: e.currentTarget,
|
|
68
88
|
onMove: (s) => {
|
|
69
|
-
s.preventDefault(),
|
|
89
|
+
s.preventDefault(), m(s.clientX, s.clientY);
|
|
70
90
|
},
|
|
71
91
|
onEnd: ({
|
|
72
92
|
commit: s,
|
|
73
|
-
snapshot:
|
|
93
|
+
snapshot: w
|
|
74
94
|
}) => {
|
|
75
|
-
s ?
|
|
95
|
+
s ? (m(w.latestClientX, w.latestClientY), o && a.snapToEdge ? H() : o && d(l())) : F(t), h = o, f = void 0;
|
|
76
96
|
}
|
|
77
97
|
});
|
|
78
98
|
},
|
|
79
|
-
"oncapture:click": (
|
|
80
|
-
h &&
|
|
99
|
+
"oncapture:click": (e) => {
|
|
100
|
+
h && e.detail !== 0 && (e.preventDefault(), e.stopImmediatePropagation()), h = !1;
|
|
81
101
|
},
|
|
82
|
-
onKeyDown: (
|
|
83
|
-
const
|
|
102
|
+
onKeyDown: (e) => {
|
|
103
|
+
const t = {
|
|
84
104
|
ArrowLeft: [-1, 0],
|
|
85
105
|
ArrowRight: [1, 0],
|
|
86
106
|
ArrowUp: [0, -1],
|
|
87
107
|
ArrowDown: [0, 1]
|
|
88
|
-
}[
|
|
89
|
-
if (!
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
108
|
+
}[e.key];
|
|
109
|
+
if (!t) return;
|
|
110
|
+
e.preventDefault(), e.stopPropagation(), C();
|
|
111
|
+
const n = l(), i = e.shiftKey ? 40 : 10;
|
|
112
|
+
y(n.x + t[0] * i, n.y + t[1] * i), d(l());
|
|
93
113
|
}
|
|
94
114
|
};
|
|
95
|
-
return
|
|
96
|
-
|
|
97
|
-
let
|
|
98
|
-
const
|
|
99
|
-
|
|
115
|
+
return O(() => {
|
|
116
|
+
R(!0);
|
|
117
|
+
let e = 0;
|
|
118
|
+
const t = () => {
|
|
119
|
+
T(), e = requestAnimationFrame(t);
|
|
100
120
|
};
|
|
101
|
-
|
|
102
|
-
cancelAnimationFrame(
|
|
121
|
+
t(), U(() => {
|
|
122
|
+
cancelAnimationFrame(e), M(), f?.stop();
|
|
103
123
|
});
|
|
104
124
|
}), [(() => {
|
|
105
|
-
var
|
|
106
|
-
return typeof
|
|
107
|
-
})(),
|
|
125
|
+
var e = se(), t = P;
|
|
126
|
+
return typeof t == "function" ? q(t, e) : P = e, e;
|
|
127
|
+
})(), X(() => X(() => !!G())() && K(V, L(E, {
|
|
108
128
|
get owner() {
|
|
109
|
-
return
|
|
129
|
+
return x();
|
|
110
130
|
},
|
|
111
131
|
get boundary() {
|
|
112
|
-
return
|
|
132
|
+
return a.boundary;
|
|
113
133
|
},
|
|
114
134
|
get position() {
|
|
115
|
-
return
|
|
135
|
+
return l();
|
|
116
136
|
},
|
|
117
137
|
clamp: !1,
|
|
118
|
-
layerRef: (
|
|
119
|
-
|
|
138
|
+
layerRef: (e) => {
|
|
139
|
+
r = e;
|
|
120
140
|
},
|
|
121
141
|
get style() {
|
|
122
142
|
return {
|
|
123
|
-
...
|
|
124
|
-
"max-width": `${Math.max(0,
|
|
125
|
-
"max-height": `${Math.max(0,
|
|
126
|
-
visibility:
|
|
143
|
+
...a.style,
|
|
144
|
+
"max-width": `${Math.max(0, u().width - v() * 2) / Math.max(0.01, u().scaleX)}px`,
|
|
145
|
+
"max-height": `${Math.max(0, u().height - v() * 2) / Math.max(0.01, u().scaleY)}px`,
|
|
146
|
+
visibility: u().width <= 16 || u().height <= 16 ? "hidden" : void 0
|
|
127
147
|
};
|
|
128
148
|
},
|
|
129
149
|
get children() {
|
|
130
|
-
return
|
|
150
|
+
return a.children(_);
|
|
131
151
|
}
|
|
132
152
|
})))];
|
|
133
153
|
}
|
|
134
154
|
export {
|
|
135
|
-
|
|
155
|
+
he as SurfaceFloatingPanel
|
|
136
156
|
};
|
|
@@ -5,7 +5,8 @@ export { Input, Textarea, NumberInput, AffixInput, type InputProps, type InputSi
|
|
|
5
5
|
export { Dialog, ConfirmDialog, type DialogProps, type ConfirmDialogProps } from './Dialog';
|
|
6
6
|
export { DialogPlacementProvider, type DialogPlacementMode, type DialogPlacementProviderProps, } from './DialogPlacementContext';
|
|
7
7
|
export { FloatingWindow, type FloatingWindowProps } from './FloatingWindow';
|
|
8
|
-
export { SurfaceFloatingPanel, type SurfaceFloatingPanelProps, type SurfaceFloatingPanelHandleProps } from './SurfaceFloatingPanel';
|
|
8
|
+
export { SurfaceFloatingPanel, type SurfaceFloatingPanelProps, type SurfaceFloatingPanelHandleProps, } from './SurfaceFloatingPanel';
|
|
9
|
+
export type { SurfaceFloatingPanelBoundaryInsets, SurfaceFloatingPanelPosition, } from './surfaceFloatingPanelGeometry';
|
|
9
10
|
export { createFloatingPresence, type FloatingPresence, type FloatingPresenceOptions, type FloatingPresenceState, } from './floatingPresence';
|
|
10
11
|
export { MENU_ITEM_SELECTOR, focusMenuItem, getMenuItems, handleMenuKeyboardNavigation, moveMenuFocus, type MenuDismissReason, type MenuFocusMode, type MenuItemNavigationOptions, type MenuKeyboardNavigationOptions, } from './menuUtils';
|
|
11
12
|
export { resolveFloatingWindowViewport, type FloatingWindowRect, type FloatingWindowViewport, type FloatingWindowViewportInsets, } from './floatingWindowGeometry';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type SurfaceFloatingPanelPosition = Readonly<{
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}>;
|
|
5
|
+
export type SurfaceFloatingPanelGeometry = Readonly<{
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
panelWidth: number;
|
|
11
|
+
panelHeight: number;
|
|
12
|
+
}>;
|
|
13
|
+
export type SurfaceFloatingPanelBoundaryInsets = Readonly<{
|
|
14
|
+
top?: number;
|
|
15
|
+
right?: number;
|
|
16
|
+
bottom?: number;
|
|
17
|
+
left?: number;
|
|
18
|
+
}>;
|
|
19
|
+
export type SurfaceFloatingPanelAxis = Readonly<{
|
|
20
|
+
min: number;
|
|
21
|
+
max: number;
|
|
22
|
+
room: number;
|
|
23
|
+
}>;
|
|
24
|
+
export type SurfaceFloatingPanelBounds = Readonly<{
|
|
25
|
+
x: SurfaceFloatingPanelAxis;
|
|
26
|
+
y: SurfaceFloatingPanelAxis;
|
|
27
|
+
}>;
|
|
28
|
+
export type SurfaceFloatingPanelSnapEdge = 'left' | 'right' | 'top' | 'bottom';
|
|
29
|
+
export type SurfaceFloatingPanelSnap = Readonly<{
|
|
30
|
+
edge: SurfaceFloatingPanelSnapEdge;
|
|
31
|
+
position: SurfaceFloatingPanelPosition;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const DEFAULT_SURFACE_FLOATING_PANEL_INSET = 8;
|
|
34
|
+
export declare function insetSurfaceFloatingPanelGeometry(geometry: SurfaceFloatingPanelGeometry, insets?: SurfaceFloatingPanelBoundaryInsets): SurfaceFloatingPanelGeometry;
|
|
35
|
+
export declare function resolveSurfaceFloatingPanelInset(value: unknown): number;
|
|
36
|
+
export declare function resolveSurfaceFloatingPanelSnapThreshold(value: unknown): number;
|
|
37
|
+
export declare function resolveSurfaceFloatingPanelBounds(geometry: SurfaceFloatingPanelGeometry, inset?: number): SurfaceFloatingPanelBounds;
|
|
38
|
+
export declare function resolveSurfaceFloatingPanelPosition(bounds: SurfaceFloatingPanelBounds, placement: SurfaceFloatingPanelPosition): SurfaceFloatingPanelPosition;
|
|
39
|
+
export declare function resolveSurfaceFloatingPanelSnap(position: SurfaceFloatingPanelPosition, bounds: SurfaceFloatingPanelBounds, threshold?: number): SurfaceFloatingPanelSnap | null;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
const u = 8;
|
|
2
|
+
function h(t, n) {
|
|
3
|
+
const e = Number(t);
|
|
4
|
+
return Number.isFinite(e) && e >= 0 ? e : n;
|
|
5
|
+
}
|
|
6
|
+
function M(t, n = {}) {
|
|
7
|
+
const e = Math.max(0, t.width), o = Math.max(0, t.height), i = Math.min(h(n.left, 0), e), a = Math.min(h(n.top, 0), o), c = Math.min(h(n.right, 0), Math.max(0, e - i)), r = Math.min(h(n.bottom, 0), Math.max(0, o - a));
|
|
8
|
+
return {
|
|
9
|
+
...t,
|
|
10
|
+
left: t.left + i,
|
|
11
|
+
top: t.top + a,
|
|
12
|
+
width: Math.max(0, e - i - c),
|
|
13
|
+
height: Math.max(0, o - a - r)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function s(t) {
|
|
17
|
+
return h(t, 8);
|
|
18
|
+
}
|
|
19
|
+
function f(t) {
|
|
20
|
+
const n = Number(t);
|
|
21
|
+
return Number.isFinite(n) && n >= 0 ? n : 1 / 0;
|
|
22
|
+
}
|
|
23
|
+
function l(t, n, e, o) {
|
|
24
|
+
const i = Math.max(0, Number.isFinite(n) ? n : 0), a = Math.max(0, Number.isFinite(e) ? e : 0), c = Math.min(o, i / 2), r = t + c, m = Math.max(r, t + i - a - c);
|
|
25
|
+
return { min: r, max: m, room: Math.max(0, m - r) };
|
|
26
|
+
}
|
|
27
|
+
function F(t, n = 8) {
|
|
28
|
+
const e = s(n);
|
|
29
|
+
return {
|
|
30
|
+
x: l(t.left, t.width, t.panelWidth, e),
|
|
31
|
+
y: l(t.top, t.height, t.panelHeight, e)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function N(t, n) {
|
|
35
|
+
return {
|
|
36
|
+
x: t.x.min + n.x * t.x.room,
|
|
37
|
+
y: t.y.min + n.y * t.y.room
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function x(t, n) {
|
|
41
|
+
return Math.max(n.min, Math.min(n.max, t));
|
|
42
|
+
}
|
|
43
|
+
function S(t, n, e = 1 / 0) {
|
|
44
|
+
const o = f(e), i = [
|
|
45
|
+
{
|
|
46
|
+
edge: "left",
|
|
47
|
+
distance: Math.max(0, t.x - n.x.min),
|
|
48
|
+
position: { x: n.x.min, y: x(t.y, n.y) }
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
edge: "right",
|
|
52
|
+
distance: Math.max(0, n.x.max - t.x),
|
|
53
|
+
position: { x: n.x.max, y: x(t.y, n.y) }
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
edge: "top",
|
|
57
|
+
distance: Math.max(0, t.y - n.y.min),
|
|
58
|
+
position: { x: x(t.x, n.x), y: n.y.min }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
edge: "bottom",
|
|
62
|
+
distance: Math.max(0, n.y.max - t.y),
|
|
63
|
+
position: { x: x(t.x, n.x), y: n.y.max }
|
|
64
|
+
}
|
|
65
|
+
];
|
|
66
|
+
i.sort((c, r) => c.distance - r.distance);
|
|
67
|
+
const a = i[0];
|
|
68
|
+
return !a || a.distance > o ? null : { edge: a.edge, position: a.position };
|
|
69
|
+
}
|
|
70
|
+
export {
|
|
71
|
+
u as DEFAULT_SURFACE_FLOATING_PANEL_INSET,
|
|
72
|
+
M as insetSurfaceFloatingPanelGeometry,
|
|
73
|
+
F as resolveSurfaceFloatingPanelBounds,
|
|
74
|
+
s as resolveSurfaceFloatingPanelInset,
|
|
75
|
+
N as resolveSurfaceFloatingPanelPosition,
|
|
76
|
+
S as resolveSurfaceFloatingPanelSnap,
|
|
77
|
+
f as resolveSurfaceFloatingPanelSnapThreshold
|
|
78
|
+
};
|