@kanso-labs/react-native-kanso-ui 0.3.1 → 0.5.0
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/autocomplete/index.js +39 -0
- package/dist/autocomplete/index.js.map +1 -0
- package/dist/button/index.d.ts +2 -1
- package/dist/button/index.js +35 -2
- package/dist/button/index.js.map +1 -1
- package/dist/button/pending.js +1 -1
- package/dist/button/slots.d.ts +2 -0
- package/dist/button/slots.js.map +1 -1
- package/dist/chip/index.js +1 -1
- package/dist/components/autocomplete/index.d.ts +49 -0
- package/dist/components/autocomplete/index.js +87 -0
- package/dist/components/autocomplete/index.js.map +1 -0
- package/dist/components/avatar/index.d.ts +1 -1
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/button/index.js +196 -150
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/checkbox/index.js +106 -193
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/chip/index.d.ts +1 -1
- package/dist/components/chip-group/index.d.ts +1 -1
- package/dist/components/chip-group/index.js +1 -1
- package/dist/components/copy-field/index.d.ts +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/currency/index.d.ts +1 -1
- package/dist/components/currency/index.js +1 -1
- package/dist/components/dialog/index.d.ts +3 -2
- package/dist/components/dialog/index.js +105 -242
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/icon-button/index.d.ts +2 -2
- package/dist/components/icon-button/index.js +205 -159
- package/dist/components/icon-button/index.js.map +1 -1
- package/dist/components/link/index.d.ts +1 -1
- package/dist/components/link/index.js +1 -1
- package/dist/components/list/index.d.ts +216 -0
- package/dist/components/list/index.js +1118 -0
- package/dist/components/list/index.js.map +1 -0
- package/dist/components/list-item/index.d.ts +63 -0
- package/dist/components/list-item/index.js +275 -0
- package/dist/components/list-item/index.js.map +1 -0
- package/dist/components/menu/index.d.ts +309 -0
- package/dist/components/menu/index.js +1283 -0
- package/dist/components/menu/index.js.map +1 -0
- package/dist/components/meter/index.d.ts +1 -1
- package/dist/components/meter/index.js +1 -1
- package/dist/components/number-field/index.d.ts +1 -1
- package/dist/components/number-field/index.js +2 -2
- package/dist/components/popover/index.d.ts +140 -0
- package/dist/components/popover/index.js +704 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/product-icon/index.d.ts +1 -1
- package/dist/components/progress-indicator/index.d.ts +1 -1
- package/dist/components/progress-indicator/index.js +1 -1
- package/dist/components/radio-group/index.d.ts +1 -1
- package/dist/components/radio-group/index.js +1 -1
- package/dist/components/search-field/index.d.ts +12 -4
- package/dist/components/search-field/index.js +64 -58
- package/dist/components/search-field/index.js.map +1 -1
- package/dist/components/segmented-button/index.d.ts +1 -1
- package/dist/components/segmented-button/index.js +1 -1
- package/dist/components/separator/index.d.ts +1 -1
- package/dist/components/separator/index.js +1 -1
- package/dist/components/sheet/index.d.ts +137 -0
- package/dist/components/sheet/index.js +1091 -0
- package/dist/components/sheet/index.js.map +1 -0
- package/dist/components/snackbar/index.d.ts +1 -1
- package/dist/components/snackbar/index.js +1 -1
- package/dist/components/stack/index.d.ts +1 -1
- package/dist/components/stack/index.js +1 -1
- package/dist/components/switch/index.d.ts +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/text/index.js +1 -1
- package/dist/components/text-field/index.d.ts +1 -1
- package/dist/components/text-field/index.js +1 -1
- package/dist/control/checkbox-box.js +137 -0
- package/dist/control/checkbox-box.js.map +1 -0
- package/dist/control/index.js +1 -1
- package/dist/field/index.d.ts +1 -1
- package/dist/field/index.js +1 -1
- package/dist/form/index.d.ts +1 -1
- package/dist/glyphs/index.js +21 -2
- package/dist/glyphs/index.js.map +1 -1
- package/dist/i18n/index.js +16 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/messages.js +374 -34
- package/dist/i18n/messages.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +8 -2
- package/dist/indicator/index.d.ts +1 -1
- package/dist/indicator/index.js +2 -2
- package/dist/mark/index.d.ts +1 -1
- package/dist/mark/index.js +1 -1
- package/dist/modal/index.d.ts +16 -0
- package/dist/modal/index.js +277 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/overlay/anchored.d.ts +2 -0
- package/dist/overlay/anchored.js +182 -0
- package/dist/overlay/anchored.js.map +1 -0
- package/dist/overlay/host.d.ts +2 -0
- package/dist/overlay/host.js +1 -1
- package/dist/overlay/index.d.ts +4 -0
- package/dist/overlay/panel.js +215 -0
- package/dist/overlay/panel.js.map +1 -0
- package/dist/overlay/placement.d.ts +8 -0
- package/dist/overlay/placement.js +87 -0
- package/dist/overlay/placement.js.map +1 -0
- package/dist/press/index.js +1 -1
- package/dist/ref/index.js +15 -0
- package/dist/ref/index.js.map +1 -0
- package/dist/router/index.js +1 -1
- package/dist/row/index.js +158 -0
- package/dist/row/index.js.map +1 -0
- package/dist/row/styles.js +51 -0
- package/dist/row/styles.js.map +1 -0
- package/dist/theme/scope.js +1 -1
- package/dist/theme-scope.d.ts +1 -1
- package/dist/theme-scope.js +1 -1
- package/dist/typography/fonts.js +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
import { useTheme } from "../../theme/scope.js";
|
|
2
|
+
import { composeStyles, themedStyles } from "../../theme/styles.js";
|
|
3
|
+
import { useTypeRole } from "../../typography/roles.js";
|
|
4
|
+
import { refsOf } from "../../ref/index.js";
|
|
5
|
+
import { ButtonSlotContext } from "../../button/slots.js";
|
|
6
|
+
import { Overlay } from "../../overlay/host.js";
|
|
7
|
+
import { useAnchoredPlacement } from "../../overlay/anchored.js";
|
|
8
|
+
import { ModalWindow, panelRoleOf } from "../../modal/index.js";
|
|
9
|
+
import { DismissLayer, PANEL_ORIGINS, useBackToClose, useFocusOnPlaced, usePanelMotion, useReturnFocus } from "../../overlay/panel.js";
|
|
10
|
+
import { c } from "react/compiler-runtime";
|
|
11
|
+
import { createContext, use, useEffect, useId, useRef, useState } from "react";
|
|
12
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { ScrollView, StyleSheet, Text } from "react-native";
|
|
14
|
+
import Animated from "react-native-reanimated";
|
|
15
|
+
import { useOverlayTriggerState } from "react-stately/useOverlayTriggerState";
|
|
16
|
+
//#region src/components/popover/index.tsx
|
|
17
|
+
const DEFAULT_HOVER_DELAY = 600;
|
|
18
|
+
const DEFAULT_HOVER_CLOSE_DELAY = 200;
|
|
19
|
+
const WIDTHS = {
|
|
20
|
+
md: 320,
|
|
21
|
+
sm: 240
|
|
22
|
+
};
|
|
23
|
+
const UNSEEN = { opacity: 0 };
|
|
24
|
+
const stylesOf = themedStyles(({ colors, radii, shadows, spacing }) => StyleSheet.create({
|
|
25
|
+
content: {
|
|
26
|
+
paddingBottom: spacing.sm,
|
|
27
|
+
paddingHorizontal: spacing.lg,
|
|
28
|
+
paddingTop: spacing.md
|
|
29
|
+
},
|
|
30
|
+
description: { color: colors.onSurfaceVariant },
|
|
31
|
+
scroll: { flexGrow: 0 },
|
|
32
|
+
surface: {
|
|
33
|
+
backgroundColor: colors.surfaceContainer,
|
|
34
|
+
borderRadius: radii.md,
|
|
35
|
+
boxShadow: shadows.elevation2,
|
|
36
|
+
overflow: "hidden"
|
|
37
|
+
},
|
|
38
|
+
title: { color: colors.onSurfaceVariant }
|
|
39
|
+
}));
|
|
40
|
+
const PopoverContext = createContext(null);
|
|
41
|
+
const TitleContext = createContext(null);
|
|
42
|
+
/**
|
|
43
|
+
* A panel anchored to the control that opened it, as the tooltips spec
|
|
44
|
+
* page's rich tooltip draws one. Pass `isOpen` with `onOpenChange` to hold
|
|
45
|
+
* the open state, or `defaultOpen` to let it keep its own.
|
|
46
|
+
*
|
|
47
|
+
* ```tsx
|
|
48
|
+
* <Popover>
|
|
49
|
+
* <Button variant="outlined">Open</Button>
|
|
50
|
+
* <Popover.Content>
|
|
51
|
+
* <Popover.Title>Headline</Popover.Title>
|
|
52
|
+
* <Popover.Description>Supporting text</Popover.Description>
|
|
53
|
+
* </Popover.Content>
|
|
54
|
+
* </Popover>
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* Non-modal by default, which leaves the screen in reach of a screen reader,
|
|
58
|
+
* and `modal` keeps one inside it. A press outside the panel and a button
|
|
59
|
+
* given `slot="close"` inside it close it, and a press on its trigger
|
|
60
|
+
* toggles it. Composed rather than configured by props, as web's is: a
|
|
61
|
+
* `Button` or `IconButton` placed directly inside `Popover` is its trigger,
|
|
62
|
+
* and the panel is placed beside it.
|
|
63
|
+
*/
|
|
64
|
+
function Popover(t0) {
|
|
65
|
+
const $ = c(23);
|
|
66
|
+
const { children, closeDelay: t1, defaultOpen, delay: t2, isOpen, modal: t3, onOpenChange, size: t4, trigger: t5 } = t0;
|
|
67
|
+
const closeDelay = t1 === void 0 ? DEFAULT_HOVER_CLOSE_DELAY : t1;
|
|
68
|
+
const delay = t2 === void 0 ? DEFAULT_HOVER_DELAY : t2;
|
|
69
|
+
const modal = t3 === void 0 ? false : t3;
|
|
70
|
+
const size = t4 === void 0 ? "md" : t4;
|
|
71
|
+
const trigger = t5 === void 0 ? "press" : t5;
|
|
72
|
+
let t6;
|
|
73
|
+
if ($[0] !== defaultOpen || $[1] !== isOpen || $[2] !== onOpenChange) {
|
|
74
|
+
t6 = {
|
|
75
|
+
defaultOpen,
|
|
76
|
+
isOpen,
|
|
77
|
+
onOpenChange
|
|
78
|
+
};
|
|
79
|
+
$[0] = defaultOpen;
|
|
80
|
+
$[1] = isOpen;
|
|
81
|
+
$[2] = onOpenChange;
|
|
82
|
+
$[3] = t6;
|
|
83
|
+
} else t6 = $[3];
|
|
84
|
+
const state = useOverlayTriggerState(t6);
|
|
85
|
+
const anchor = useRef(null);
|
|
86
|
+
const hover = useHoverTrigger(state, delay, closeDelay);
|
|
87
|
+
const hovering = trigger === "hover";
|
|
88
|
+
let t7;
|
|
89
|
+
if ($[4] !== state) {
|
|
90
|
+
t7 = () => {
|
|
91
|
+
state.close();
|
|
92
|
+
};
|
|
93
|
+
$[4] = state;
|
|
94
|
+
$[5] = t7;
|
|
95
|
+
} else t7 = $[5];
|
|
96
|
+
const close = t7;
|
|
97
|
+
let t8;
|
|
98
|
+
if ($[6] !== delay || $[7] !== hover || $[8] !== hovering || $[9] !== state) {
|
|
99
|
+
t8 = hovering ? {
|
|
100
|
+
default: hover.press,
|
|
101
|
+
trigger: {
|
|
102
|
+
delayLongPress: delay,
|
|
103
|
+
expanded: state.isOpen,
|
|
104
|
+
onHoverIn: hover.enter,
|
|
105
|
+
onHoverOut: hover.leave,
|
|
106
|
+
onLongPress: hover.longPress,
|
|
107
|
+
ref: anchor
|
|
108
|
+
}
|
|
109
|
+
} : {
|
|
110
|
+
default: () => {
|
|
111
|
+
state.toggle();
|
|
112
|
+
},
|
|
113
|
+
trigger: {
|
|
114
|
+
expanded: state.isOpen,
|
|
115
|
+
ref: anchor
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
$[6] = delay;
|
|
119
|
+
$[7] = hover;
|
|
120
|
+
$[8] = hovering;
|
|
121
|
+
$[9] = state;
|
|
122
|
+
$[10] = t8;
|
|
123
|
+
} else t8 = $[10];
|
|
124
|
+
const slots = t8;
|
|
125
|
+
const t9 = modal && !hovering;
|
|
126
|
+
let t10;
|
|
127
|
+
if ($[11] !== close || $[12] !== hover || $[13] !== size || $[14] !== state.isOpen || $[15] !== t9) {
|
|
128
|
+
t10 = {
|
|
129
|
+
anchor,
|
|
130
|
+
close,
|
|
131
|
+
hover,
|
|
132
|
+
isOpen: state.isOpen,
|
|
133
|
+
modal: t9,
|
|
134
|
+
size
|
|
135
|
+
};
|
|
136
|
+
$[11] = close;
|
|
137
|
+
$[12] = hover;
|
|
138
|
+
$[13] = size;
|
|
139
|
+
$[14] = state.isOpen;
|
|
140
|
+
$[15] = t9;
|
|
141
|
+
$[16] = t10;
|
|
142
|
+
} else t10 = $[16];
|
|
143
|
+
const root = t10;
|
|
144
|
+
let t11;
|
|
145
|
+
if ($[17] !== children || $[18] !== slots) {
|
|
146
|
+
t11 = /* @__PURE__ */ jsx(ButtonSlotContext, {
|
|
147
|
+
value: slots,
|
|
148
|
+
children
|
|
149
|
+
});
|
|
150
|
+
$[17] = children;
|
|
151
|
+
$[18] = slots;
|
|
152
|
+
$[19] = t11;
|
|
153
|
+
} else t11 = $[19];
|
|
154
|
+
let t12;
|
|
155
|
+
if ($[20] !== root || $[21] !== t11) {
|
|
156
|
+
t12 = /* @__PURE__ */ jsx(PopoverContext, {
|
|
157
|
+
value: root,
|
|
158
|
+
children: t11
|
|
159
|
+
});
|
|
160
|
+
$[20] = root;
|
|
161
|
+
$[21] = t11;
|
|
162
|
+
$[22] = t12;
|
|
163
|
+
} else t12 = $[22];
|
|
164
|
+
return t12;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The panel itself. Everything the popover shows goes in here; the trigger
|
|
168
|
+
* stays outside it. Its content scrolls when it runs past the room the
|
|
169
|
+
* window leaves on the side it opened on.
|
|
170
|
+
*
|
|
171
|
+
* `style`, `ref` and `testID` land on the panel.
|
|
172
|
+
*/
|
|
173
|
+
function PopoverContent(t0) {
|
|
174
|
+
const $ = c(25);
|
|
175
|
+
let props;
|
|
176
|
+
let triggerRef;
|
|
177
|
+
if ($[0] !== t0) {
|
|
178
|
+
({triggerRef, ...props} = t0);
|
|
179
|
+
$[0] = t0;
|
|
180
|
+
$[1] = props;
|
|
181
|
+
$[2] = triggerRef;
|
|
182
|
+
} else {
|
|
183
|
+
props = $[1];
|
|
184
|
+
triggerRef = $[2];
|
|
185
|
+
}
|
|
186
|
+
const root = use(PopoverContext);
|
|
187
|
+
if (root === null) throw new Error("Popover.Content is drawn inside Popover.");
|
|
188
|
+
const { anchor, close, hover, isOpen, modal, size } = root;
|
|
189
|
+
const [present, setPresent] = useState(isOpen);
|
|
190
|
+
const [title, setTitle] = useState(null);
|
|
191
|
+
const [byPointer, setByPointer] = useState(hover.byPointer);
|
|
192
|
+
const id = useId();
|
|
193
|
+
let t1;
|
|
194
|
+
if ($[3] !== id) {
|
|
195
|
+
t1 = {
|
|
196
|
+
id,
|
|
197
|
+
setTitle
|
|
198
|
+
};
|
|
199
|
+
$[3] = id;
|
|
200
|
+
$[4] = t1;
|
|
201
|
+
} else t1 = $[4];
|
|
202
|
+
const titled = t1;
|
|
203
|
+
if (isOpen && !present) setPresent(true);
|
|
204
|
+
if (isOpen && byPointer !== hover.byPointer) setByPointer(hover.byPointer);
|
|
205
|
+
useReturnFocus(present, byPointer, triggerRef ?? anchor);
|
|
206
|
+
if (!present) return null;
|
|
207
|
+
const labelledBy = title === null ? void 0 : id;
|
|
208
|
+
const t2 = triggerRef ?? anchor;
|
|
209
|
+
const t3 = !modal && !byPointer && isOpen;
|
|
210
|
+
let t4;
|
|
211
|
+
if ($[5] !== byPointer || $[6] !== close || $[7] !== hover || $[8] !== isOpen || $[9] !== labelledBy || $[10] !== modal || $[11] !== props || $[12] !== size || $[13] !== t2 || $[14] !== t3 || $[15] !== title || $[16] !== titled) {
|
|
212
|
+
t4 = /* @__PURE__ */ jsx(PopoverPanel, {
|
|
213
|
+
...props,
|
|
214
|
+
anchor: t2,
|
|
215
|
+
byPointer,
|
|
216
|
+
close,
|
|
217
|
+
dismissable: t3,
|
|
218
|
+
hover,
|
|
219
|
+
isOpen,
|
|
220
|
+
labelledBy,
|
|
221
|
+
modal,
|
|
222
|
+
setPresent,
|
|
223
|
+
size,
|
|
224
|
+
title,
|
|
225
|
+
titled
|
|
226
|
+
});
|
|
227
|
+
$[5] = byPointer;
|
|
228
|
+
$[6] = close;
|
|
229
|
+
$[7] = hover;
|
|
230
|
+
$[8] = isOpen;
|
|
231
|
+
$[9] = labelledBy;
|
|
232
|
+
$[10] = modal;
|
|
233
|
+
$[11] = props;
|
|
234
|
+
$[12] = size;
|
|
235
|
+
$[13] = t2;
|
|
236
|
+
$[14] = t3;
|
|
237
|
+
$[15] = title;
|
|
238
|
+
$[16] = titled;
|
|
239
|
+
$[17] = t4;
|
|
240
|
+
} else t4 = $[17];
|
|
241
|
+
const panel = t4;
|
|
242
|
+
if (!modal) {
|
|
243
|
+
let t5;
|
|
244
|
+
if ($[18] !== panel) {
|
|
245
|
+
t5 = /* @__PURE__ */ jsx(Overlay, { children: panel });
|
|
246
|
+
$[18] = panel;
|
|
247
|
+
$[19] = t5;
|
|
248
|
+
} else t5 = $[19];
|
|
249
|
+
return t5;
|
|
250
|
+
}
|
|
251
|
+
const t5 = isOpen ? close : void 0;
|
|
252
|
+
let t6;
|
|
253
|
+
if ($[20] !== close || $[21] !== labelledBy || $[22] !== panel || $[23] !== t5) {
|
|
254
|
+
t6 = /* @__PURE__ */ jsx(ModalWindow, {
|
|
255
|
+
isKeyboardDismissDisabled: false,
|
|
256
|
+
labelledBy,
|
|
257
|
+
onClose: close,
|
|
258
|
+
onScrimPress: t5,
|
|
259
|
+
scrim: UNSEEN,
|
|
260
|
+
title: null,
|
|
261
|
+
children: panel
|
|
262
|
+
});
|
|
263
|
+
$[20] = close;
|
|
264
|
+
$[21] = labelledBy;
|
|
265
|
+
$[22] = panel;
|
|
266
|
+
$[23] = t5;
|
|
267
|
+
$[24] = t6;
|
|
268
|
+
} else t6 = $[24];
|
|
269
|
+
return t6;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Supporting text under the title, in body medium on on-surface variant.
|
|
273
|
+
* `style`, `ref` and `testID` land on React Native's own Text.
|
|
274
|
+
*/
|
|
275
|
+
function PopoverDescription(t0) {
|
|
276
|
+
const $ = c(7);
|
|
277
|
+
let props;
|
|
278
|
+
let style;
|
|
279
|
+
if ($[0] !== t0) {
|
|
280
|
+
({style, ...props} = t0);
|
|
281
|
+
$[0] = t0;
|
|
282
|
+
$[1] = props;
|
|
283
|
+
$[2] = style;
|
|
284
|
+
} else {
|
|
285
|
+
props = $[1];
|
|
286
|
+
style = $[2];
|
|
287
|
+
}
|
|
288
|
+
const styles = stylesOf(useTheme());
|
|
289
|
+
const role = useTypeRole("bodyMedium");
|
|
290
|
+
const T0 = Text;
|
|
291
|
+
const t1 = composeStyles(role, styles.description, style);
|
|
292
|
+
let t2;
|
|
293
|
+
if ($[3] !== T0 || $[4] !== props || $[5] !== t1) {
|
|
294
|
+
t2 = /* @__PURE__ */ jsx(T0, {
|
|
295
|
+
...props,
|
|
296
|
+
style: t1
|
|
297
|
+
});
|
|
298
|
+
$[3] = T0;
|
|
299
|
+
$[4] = props;
|
|
300
|
+
$[5] = t1;
|
|
301
|
+
$[6] = t2;
|
|
302
|
+
} else t2 = $[6];
|
|
303
|
+
return t2;
|
|
304
|
+
}
|
|
305
|
+
function PopoverPanel(t0) {
|
|
306
|
+
const $ = c(61);
|
|
307
|
+
let align;
|
|
308
|
+
let alignOffset;
|
|
309
|
+
let anchor;
|
|
310
|
+
let byPointer;
|
|
311
|
+
let children;
|
|
312
|
+
let close;
|
|
313
|
+
let dismissable;
|
|
314
|
+
let hover;
|
|
315
|
+
let isOpen;
|
|
316
|
+
let labelledBy;
|
|
317
|
+
let modal;
|
|
318
|
+
let props;
|
|
319
|
+
let ref;
|
|
320
|
+
let setPresent;
|
|
321
|
+
let side;
|
|
322
|
+
let sideOffset;
|
|
323
|
+
let size;
|
|
324
|
+
let style;
|
|
325
|
+
let title;
|
|
326
|
+
let titled;
|
|
327
|
+
if ($[0] !== t0) {
|
|
328
|
+
({align, alignOffset, anchor, byPointer, children, close, dismissable, hover, isOpen, labelledBy, modal, ref, setPresent, side, sideOffset, size, style, title, titled, ...props} = t0);
|
|
329
|
+
$[0] = t0;
|
|
330
|
+
$[1] = align;
|
|
331
|
+
$[2] = alignOffset;
|
|
332
|
+
$[3] = anchor;
|
|
333
|
+
$[4] = byPointer;
|
|
334
|
+
$[5] = children;
|
|
335
|
+
$[6] = close;
|
|
336
|
+
$[7] = dismissable;
|
|
337
|
+
$[8] = hover;
|
|
338
|
+
$[9] = isOpen;
|
|
339
|
+
$[10] = labelledBy;
|
|
340
|
+
$[11] = modal;
|
|
341
|
+
$[12] = props;
|
|
342
|
+
$[13] = ref;
|
|
343
|
+
$[14] = setPresent;
|
|
344
|
+
$[15] = side;
|
|
345
|
+
$[16] = sideOffset;
|
|
346
|
+
$[17] = size;
|
|
347
|
+
$[18] = style;
|
|
348
|
+
$[19] = title;
|
|
349
|
+
$[20] = titled;
|
|
350
|
+
} else {
|
|
351
|
+
align = $[1];
|
|
352
|
+
alignOffset = $[2];
|
|
353
|
+
anchor = $[3];
|
|
354
|
+
byPointer = $[4];
|
|
355
|
+
children = $[5];
|
|
356
|
+
close = $[6];
|
|
357
|
+
dismissable = $[7];
|
|
358
|
+
hover = $[8];
|
|
359
|
+
isOpen = $[9];
|
|
360
|
+
labelledBy = $[10];
|
|
361
|
+
modal = $[11];
|
|
362
|
+
props = $[12];
|
|
363
|
+
ref = $[13];
|
|
364
|
+
setPresent = $[14];
|
|
365
|
+
side = $[15];
|
|
366
|
+
sideOffset = $[16];
|
|
367
|
+
size = $[17];
|
|
368
|
+
style = $[18];
|
|
369
|
+
title = $[19];
|
|
370
|
+
titled = $[20];
|
|
371
|
+
}
|
|
372
|
+
const styles = stylesOf(useTheme());
|
|
373
|
+
let t1;
|
|
374
|
+
if ($[21] !== align || $[22] !== alignOffset || $[23] !== anchor || $[24] !== side || $[25] !== sideOffset) {
|
|
375
|
+
t1 = {
|
|
376
|
+
align,
|
|
377
|
+
alignOffset,
|
|
378
|
+
anchor,
|
|
379
|
+
side,
|
|
380
|
+
sideOffset
|
|
381
|
+
};
|
|
382
|
+
$[21] = align;
|
|
383
|
+
$[22] = alignOffset;
|
|
384
|
+
$[23] = anchor;
|
|
385
|
+
$[24] = side;
|
|
386
|
+
$[25] = sideOffset;
|
|
387
|
+
$[26] = t1;
|
|
388
|
+
} else t1 = $[26];
|
|
389
|
+
const placement = useAnchoredPlacement(t1);
|
|
390
|
+
const [panel, setPanel] = useState(null);
|
|
391
|
+
const motion = usePanelMotion(isOpen, placement.placed, setPresent);
|
|
392
|
+
let t2;
|
|
393
|
+
if ($[27] !== close) {
|
|
394
|
+
t2 = { close };
|
|
395
|
+
$[27] = close;
|
|
396
|
+
$[28] = t2;
|
|
397
|
+
} else t2 = $[28];
|
|
398
|
+
const slots = t2;
|
|
399
|
+
useBackToClose(close, !modal && isOpen);
|
|
400
|
+
useFocusOnPlaced(placement.placed && !byPointer, title ?? panel);
|
|
401
|
+
let t3;
|
|
402
|
+
if ($[29] !== close || $[30] !== dismissable) {
|
|
403
|
+
t3 = dismissable ? /* @__PURE__ */ jsx(DismissLayer, { onPress: close }) : null;
|
|
404
|
+
$[29] = close;
|
|
405
|
+
$[30] = dismissable;
|
|
406
|
+
$[31] = t3;
|
|
407
|
+
} else t3 = $[31];
|
|
408
|
+
const t4 = Animated;
|
|
409
|
+
let t5;
|
|
410
|
+
if ($[32] !== labelledBy || $[33] !== modal) {
|
|
411
|
+
t5 = modal ? panelRoleOf("dialog", labelledBy) : {
|
|
412
|
+
"aria-labelledby": labelledBy,
|
|
413
|
+
role: "dialog"
|
|
414
|
+
};
|
|
415
|
+
$[32] = labelledBy;
|
|
416
|
+
$[33] = modal;
|
|
417
|
+
$[34] = t5;
|
|
418
|
+
} else t5 = $[34];
|
|
419
|
+
const t6 = hover.panelEnter;
|
|
420
|
+
const t7 = hover.panelLeave;
|
|
421
|
+
const t8 = placement.onLayout;
|
|
422
|
+
let t9;
|
|
423
|
+
if ($[35] !== ref) {
|
|
424
|
+
t9 = refsOf(setPanel, ref);
|
|
425
|
+
$[35] = ref;
|
|
426
|
+
$[36] = t9;
|
|
427
|
+
} else t9 = $[36];
|
|
428
|
+
const t10 = composeStyles(styles.surface, { maxWidth: WIDTHS[size] }, placement.style, { transformOrigin: PANEL_ORIGINS[placement.side] }, motion, style);
|
|
429
|
+
let t11;
|
|
430
|
+
if ($[37] !== children || $[38] !== slots) {
|
|
431
|
+
t11 = /* @__PURE__ */ jsx(ButtonSlotContext, {
|
|
432
|
+
value: slots,
|
|
433
|
+
children
|
|
434
|
+
});
|
|
435
|
+
$[37] = children;
|
|
436
|
+
$[38] = slots;
|
|
437
|
+
$[39] = t11;
|
|
438
|
+
} else t11 = $[39];
|
|
439
|
+
let t12;
|
|
440
|
+
if ($[40] !== t11 || $[41] !== titled) {
|
|
441
|
+
t12 = /* @__PURE__ */ jsx(TitleContext, {
|
|
442
|
+
value: titled,
|
|
443
|
+
children: t11
|
|
444
|
+
});
|
|
445
|
+
$[40] = t11;
|
|
446
|
+
$[41] = titled;
|
|
447
|
+
$[42] = t12;
|
|
448
|
+
} else t12 = $[42];
|
|
449
|
+
let t13;
|
|
450
|
+
if ($[43] !== styles.content || $[44] !== styles.scroll || $[45] !== t12) {
|
|
451
|
+
t13 = /* @__PURE__ */ jsx(ScrollView, {
|
|
452
|
+
contentContainerStyle: styles.content,
|
|
453
|
+
style: styles.scroll,
|
|
454
|
+
children: t12
|
|
455
|
+
});
|
|
456
|
+
$[43] = styles.content;
|
|
457
|
+
$[44] = styles.scroll;
|
|
458
|
+
$[45] = t12;
|
|
459
|
+
$[46] = t13;
|
|
460
|
+
} else t13 = $[46];
|
|
461
|
+
let t14;
|
|
462
|
+
if ($[47] !== close || $[48] !== hover.panelEnter || $[49] !== hover.panelLeave || $[50] !== placement.onLayout || $[51] !== props || $[52] !== t10 || $[53] !== t13 || $[54] !== t4.View || $[55] !== t5 || $[56] !== t9) {
|
|
463
|
+
t14 = /* @__PURE__ */ jsx(t4.View, {
|
|
464
|
+
...t5,
|
|
465
|
+
onAccessibilityEscape: close,
|
|
466
|
+
onPointerEnter: t6,
|
|
467
|
+
onPointerLeave: t7,
|
|
468
|
+
...props,
|
|
469
|
+
onLayout: t8,
|
|
470
|
+
ref: t9,
|
|
471
|
+
style: t10,
|
|
472
|
+
children: t13
|
|
473
|
+
});
|
|
474
|
+
$[47] = close;
|
|
475
|
+
$[48] = hover.panelEnter;
|
|
476
|
+
$[49] = hover.panelLeave;
|
|
477
|
+
$[50] = placement.onLayout;
|
|
478
|
+
$[51] = props;
|
|
479
|
+
$[52] = t10;
|
|
480
|
+
$[53] = t13;
|
|
481
|
+
$[54] = t4.View;
|
|
482
|
+
$[55] = t5;
|
|
483
|
+
$[56] = t9;
|
|
484
|
+
$[57] = t14;
|
|
485
|
+
} else t14 = $[57];
|
|
486
|
+
let t15;
|
|
487
|
+
if ($[58] !== t14 || $[59] !== t3) {
|
|
488
|
+
t15 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t3, t14] });
|
|
489
|
+
$[58] = t14;
|
|
490
|
+
$[59] = t3;
|
|
491
|
+
$[60] = t15;
|
|
492
|
+
} else t15 = $[60];
|
|
493
|
+
return t15;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Names the popover: the panel is labelled by it, and a screen reader is
|
|
497
|
+
* sent to it once a pressed popover shows. In title small on on-surface
|
|
498
|
+
* variant, the rich tooltip's subhead. `style`, `ref` and `testID` land on
|
|
499
|
+
* React Native's own Text.
|
|
500
|
+
*/
|
|
501
|
+
function PopoverTitle(t0) {
|
|
502
|
+
const $ = c(13);
|
|
503
|
+
let props;
|
|
504
|
+
let ref;
|
|
505
|
+
let style;
|
|
506
|
+
if ($[0] !== t0) {
|
|
507
|
+
({ref, style, ...props} = t0);
|
|
508
|
+
$[0] = t0;
|
|
509
|
+
$[1] = props;
|
|
510
|
+
$[2] = ref;
|
|
511
|
+
$[3] = style;
|
|
512
|
+
} else {
|
|
513
|
+
props = $[1];
|
|
514
|
+
ref = $[2];
|
|
515
|
+
style = $[3];
|
|
516
|
+
}
|
|
517
|
+
const titled = use(TitleContext);
|
|
518
|
+
const styles = stylesOf(useTheme());
|
|
519
|
+
const role = useTypeRole("titleSmall");
|
|
520
|
+
if (titled === null) throw new Error("Popover.Title is drawn inside Popover.Content.");
|
|
521
|
+
const T0 = Text;
|
|
522
|
+
const t1 = titled.id;
|
|
523
|
+
let t2;
|
|
524
|
+
if ($[4] !== ref || $[5] !== titled.setTitle) {
|
|
525
|
+
t2 = refsOf(titled.setTitle, ref);
|
|
526
|
+
$[4] = ref;
|
|
527
|
+
$[5] = titled.setTitle;
|
|
528
|
+
$[6] = t2;
|
|
529
|
+
} else t2 = $[6];
|
|
530
|
+
const t3 = "heading";
|
|
531
|
+
const t4 = composeStyles(role, styles.title, style);
|
|
532
|
+
let t5;
|
|
533
|
+
if ($[7] !== T0 || $[8] !== props || $[9] !== t2 || $[10] !== t4 || $[11] !== titled.id) {
|
|
534
|
+
t5 = /* @__PURE__ */ jsx(T0, {
|
|
535
|
+
...props,
|
|
536
|
+
nativeID: t1,
|
|
537
|
+
ref: t2,
|
|
538
|
+
role: t3,
|
|
539
|
+
style: t4
|
|
540
|
+
});
|
|
541
|
+
$[7] = T0;
|
|
542
|
+
$[8] = props;
|
|
543
|
+
$[9] = t2;
|
|
544
|
+
$[10] = t4;
|
|
545
|
+
$[11] = titled.id;
|
|
546
|
+
$[12] = t5;
|
|
547
|
+
} else t5 = $[12];
|
|
548
|
+
return t5;
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* How a hovered popover opens and closes. A pointer resting on the trigger
|
|
552
|
+
* for `delay` opens it, and once the pointer has left both the trigger and
|
|
553
|
+
* the panel for `closeDelay` it closes again. A press held for `delay` opens
|
|
554
|
+
* it as well, and a popover opened that way stays open until a press outside
|
|
555
|
+
* it or on the trigger. `byPointer` says whether a pointer opened it, which
|
|
556
|
+
* is forgotten as it closes, however it closed.
|
|
557
|
+
*/
|
|
558
|
+
function useHoverTrigger(state, delay, closeDelay) {
|
|
559
|
+
const $ = c(29);
|
|
560
|
+
const [byPointer, setByPointer] = useState(false);
|
|
561
|
+
const [wasOpen, setWasOpen] = useState(state.isOpen);
|
|
562
|
+
const timer = useRef(void 0);
|
|
563
|
+
let t0;
|
|
564
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
565
|
+
t0 = {
|
|
566
|
+
onPanel: false,
|
|
567
|
+
onTrigger: false
|
|
568
|
+
};
|
|
569
|
+
$[0] = t0;
|
|
570
|
+
} else t0 = $[0];
|
|
571
|
+
const pointer = useRef(t0);
|
|
572
|
+
if (wasOpen !== state.isOpen) {
|
|
573
|
+
setWasOpen(state.isOpen);
|
|
574
|
+
if (!state.isOpen) setByPointer(false);
|
|
575
|
+
}
|
|
576
|
+
let t1;
|
|
577
|
+
let t2;
|
|
578
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
579
|
+
t1 = () => () => {
|
|
580
|
+
clearTimeout(timer.current);
|
|
581
|
+
};
|
|
582
|
+
t2 = [];
|
|
583
|
+
$[1] = t1;
|
|
584
|
+
$[2] = t2;
|
|
585
|
+
} else {
|
|
586
|
+
t1 = $[1];
|
|
587
|
+
t2 = $[2];
|
|
588
|
+
}
|
|
589
|
+
useEffect(t1, t2);
|
|
590
|
+
let t3;
|
|
591
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
592
|
+
t3 = function after(milliseconds, then) {
|
|
593
|
+
clearTimeout(timer.current);
|
|
594
|
+
timer.current = setTimeout(then, milliseconds);
|
|
595
|
+
};
|
|
596
|
+
$[3] = t3;
|
|
597
|
+
} else t3 = $[3];
|
|
598
|
+
const after = t3;
|
|
599
|
+
let t4;
|
|
600
|
+
if ($[4] !== closeDelay || $[5] !== state) {
|
|
601
|
+
t4 = function closeOnceGone() {
|
|
602
|
+
after(closeDelay, () => {
|
|
603
|
+
if (!pointer.current.onPanel && !pointer.current.onTrigger) state.close();
|
|
604
|
+
});
|
|
605
|
+
};
|
|
606
|
+
$[4] = closeDelay;
|
|
607
|
+
$[5] = state;
|
|
608
|
+
$[6] = t4;
|
|
609
|
+
} else t4 = $[6];
|
|
610
|
+
const closeOnceGone = t4;
|
|
611
|
+
let t5;
|
|
612
|
+
if ($[7] !== delay || $[8] !== state) {
|
|
613
|
+
t5 = () => {
|
|
614
|
+
pointer.current.onTrigger = true;
|
|
615
|
+
if (state.isOpen) {
|
|
616
|
+
clearTimeout(timer.current);
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
after(delay, () => {
|
|
620
|
+
setByPointer(true);
|
|
621
|
+
state.open();
|
|
622
|
+
});
|
|
623
|
+
};
|
|
624
|
+
$[7] = delay;
|
|
625
|
+
$[8] = state;
|
|
626
|
+
$[9] = t5;
|
|
627
|
+
} else t5 = $[9];
|
|
628
|
+
let t6;
|
|
629
|
+
if ($[10] !== byPointer || $[11] !== closeOnceGone || $[12] !== state.isOpen) {
|
|
630
|
+
t6 = () => {
|
|
631
|
+
pointer.current.onTrigger = false;
|
|
632
|
+
if (!state.isOpen) clearTimeout(timer.current);
|
|
633
|
+
else if (byPointer) closeOnceGone();
|
|
634
|
+
};
|
|
635
|
+
$[10] = byPointer;
|
|
636
|
+
$[11] = closeOnceGone;
|
|
637
|
+
$[12] = state.isOpen;
|
|
638
|
+
$[13] = t6;
|
|
639
|
+
} else t6 = $[13];
|
|
640
|
+
let t7;
|
|
641
|
+
if ($[14] !== state) {
|
|
642
|
+
t7 = () => {
|
|
643
|
+
clearTimeout(timer.current);
|
|
644
|
+
setByPointer(false);
|
|
645
|
+
state.open();
|
|
646
|
+
};
|
|
647
|
+
$[14] = state;
|
|
648
|
+
$[15] = t7;
|
|
649
|
+
} else t7 = $[15];
|
|
650
|
+
let t8;
|
|
651
|
+
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
|
652
|
+
t8 = () => {
|
|
653
|
+
pointer.current.onPanel = true;
|
|
654
|
+
clearTimeout(timer.current);
|
|
655
|
+
};
|
|
656
|
+
$[16] = t8;
|
|
657
|
+
} else t8 = $[16];
|
|
658
|
+
let t9;
|
|
659
|
+
if ($[17] !== byPointer || $[18] !== closeOnceGone) {
|
|
660
|
+
t9 = () => {
|
|
661
|
+
pointer.current.onPanel = false;
|
|
662
|
+
if (byPointer) closeOnceGone();
|
|
663
|
+
};
|
|
664
|
+
$[17] = byPointer;
|
|
665
|
+
$[18] = closeOnceGone;
|
|
666
|
+
$[19] = t9;
|
|
667
|
+
} else t9 = $[19];
|
|
668
|
+
let t10;
|
|
669
|
+
if ($[20] !== state) {
|
|
670
|
+
t10 = () => {
|
|
671
|
+
clearTimeout(timer.current);
|
|
672
|
+
if (state.isOpen) state.close();
|
|
673
|
+
};
|
|
674
|
+
$[20] = state;
|
|
675
|
+
$[21] = t10;
|
|
676
|
+
} else t10 = $[21];
|
|
677
|
+
let t11;
|
|
678
|
+
if ($[22] !== byPointer || $[23] !== t10 || $[24] !== t5 || $[25] !== t6 || $[26] !== t7 || $[27] !== t9) {
|
|
679
|
+
t11 = {
|
|
680
|
+
byPointer,
|
|
681
|
+
enter: t5,
|
|
682
|
+
leave: t6,
|
|
683
|
+
longPress: t7,
|
|
684
|
+
panelEnter: t8,
|
|
685
|
+
panelLeave: t9,
|
|
686
|
+
press: t10
|
|
687
|
+
};
|
|
688
|
+
$[22] = byPointer;
|
|
689
|
+
$[23] = t10;
|
|
690
|
+
$[24] = t5;
|
|
691
|
+
$[25] = t6;
|
|
692
|
+
$[26] = t7;
|
|
693
|
+
$[27] = t9;
|
|
694
|
+
$[28] = t11;
|
|
695
|
+
} else t11 = $[28];
|
|
696
|
+
return t11;
|
|
697
|
+
}
|
|
698
|
+
Popover.Content = PopoverContent;
|
|
699
|
+
Popover.Description = PopoverDescription;
|
|
700
|
+
Popover.Title = PopoverTitle;
|
|
701
|
+
//#endregion
|
|
702
|
+
export { Popover, PopoverContent, PopoverDescription, PopoverTitle };
|
|
703
|
+
|
|
704
|
+
//# sourceMappingURL=index.js.map
|