@hjmds/react-native 1.46.1 → 1.48.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/calendar.d.ts.map +1 -1
- package/dist/calendar.js +26 -9
- package/dist/calendar.js.map +1 -1
- package/dist/carousel.d.ts +3 -1
- package/dist/carousel.d.ts.map +1 -1
- package/dist/carousel.js +2 -2
- package/dist/carousel.js.map +1 -1
- package/dist/color-picker.d.ts +51 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +140 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/communication.d.ts +6 -1
- package/dist/communication.d.ts.map +1 -1
- package/dist/communication.js +2 -2
- package/dist/communication.js.map +1 -1
- package/dist/conversation-row.d.ts +7 -1
- package/dist/conversation-row.d.ts.map +1 -1
- package/dist/conversation-row.js +4 -2
- package/dist/conversation-row.js.map +1 -1
- package/dist/data-display.d.ts +24 -4
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +25 -21
- package/dist/data-display.js.map +1 -1
- package/dist/date-range.d.ts +24 -3
- package/dist/date-range.d.ts.map +1 -1
- package/dist/date-range.js +45 -33
- package/dist/date-range.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +16 -17
- package/dist/feedback.js.map +1 -1
- package/dist/follow-list.d.ts +55 -0
- package/dist/follow-list.d.ts.map +1 -0
- package/dist/follow-list.js +26 -0
- package/dist/follow-list.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/calendar-paint.d.ts +3 -0
- package/dist/internal/calendar-paint.d.ts.map +1 -0
- package/dist/internal/calendar-paint.js +6 -0
- package/dist/internal/calendar-paint.js.map +1 -0
- package/dist/internal/identity-action.d.ts +12 -0
- package/dist/internal/identity-action.d.ts.map +1 -0
- package/dist/internal/identity-action.js +11 -0
- package/dist/internal/identity-action.js.map +1 -0
- package/dist/internal/message-reactions.d.ts +1 -1
- package/dist/internal/message-reactions.d.ts.map +1 -1
- package/dist/internal/message-reactions.js +5 -3
- package/dist/internal/message-reactions.js.map +1 -1
- package/dist/navigation.d.ts +4 -1
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +8 -7
- package/dist/navigation.js.map +1 -1
- package/dist/public-exports.generated.d.ts +5 -0
- package/dist/public-exports.generated.d.ts.map +1 -1
- package/dist/public-exports.generated.js +15 -0
- package/dist/public-exports.generated.js.map +1 -1
- package/dist/screen-flows.d.ts +33 -4
- package/dist/screen-flows.d.ts.map +1 -1
- package/dist/screen-flows.js +33 -13
- package/dist/screen-flows.js.map +1 -1
- package/dist/screens.d.ts +37 -6
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js +28 -14
- package/dist/screens.js.map +1 -1
- package/dist/share-sheet.d.ts +65 -0
- package/dist/share-sheet.d.ts.map +1 -0
- package/dist/share-sheet.js +145 -0
- package/dist/share-sheet.js.map +1 -0
- package/dist/sheet-panel.d.ts +7 -1
- package/dist/sheet-panel.d.ts.map +1 -1
- package/dist/sheet-panel.js +5 -3
- package/dist/sheet-panel.js.map +1 -1
- package/dist/slider.d.ts +15 -1
- package/dist/slider.d.ts.map +1 -1
- package/dist/slider.js +75 -48
- package/dist/slider.js.map +1 -1
- package/dist/social-compositions.d.ts +10 -0
- package/dist/social-compositions.d.ts.map +1 -1
- package/dist/social-compositions.js +3 -2
- package/dist/social-compositions.js.map +1 -1
- package/dist/table-family.js +2 -2
- package/dist/table-family.js.map +1 -1
- package/package.json +21 -3
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { SheetOpenChangeDetails } from "@hjmds/design-contracts/components/sheet";
|
|
3
|
+
import { type ShareSheetLabels, type ShareSheetRecipientDescriptor, type ShareSheetRecipientLabels, type ShareSheetRecipientStatus, type ShareSheetSendResult, type ShareSheetShareContent, type ShareSheetSystemShareOutcome } from "@hjmds/design-contracts/share-sheet";
|
|
4
|
+
export type { ShareSheetLabels, ShareSheetRecipientLabels, ShareSheetRecipientStatus, ShareSheetSendResult, ShareSheetShareContent, ShareSheetSystemShareOutcome, } from "@hjmds/design-contracts/share-sheet";
|
|
5
|
+
export type ShareSheetRecipient = ShareSheetRecipientDescriptor & Readonly<{
|
|
6
|
+
image: ReactNode;
|
|
7
|
+
}>;
|
|
8
|
+
export type ShareSheetRecipientSearch = Readonly<{
|
|
9
|
+
/** Controlled query. With `onQueryChange` the product owns the query and `items` is already its result. */
|
|
10
|
+
query?: string;
|
|
11
|
+
onQueryChange?: (query: string) => void;
|
|
12
|
+
/** A server search is running. */
|
|
13
|
+
searching?: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
export type ShareSheetRecipients = Readonly<{
|
|
16
|
+
items: readonly ShareSheetRecipient[];
|
|
17
|
+
labels: ShareSheetRecipientLabels;
|
|
18
|
+
/** Default `ready`. */
|
|
19
|
+
status?: ShareSheetRecipientStatus;
|
|
20
|
+
/** Shown with the `error` state. */
|
|
21
|
+
onRetry?: () => void;
|
|
22
|
+
retrying?: boolean;
|
|
23
|
+
/** Omit to filter `items` by label here; pass `onQueryChange` to search on the server. */
|
|
24
|
+
search?: ShareSheetRecipientSearch;
|
|
25
|
+
/** Recipients that already received this link (before the sheet opened). They stay checked and locked. */
|
|
26
|
+
sentIds?: readonly string[];
|
|
27
|
+
/** Sends the link to the selected ids. Delivered ids lock as sent; the rest stay selected for a retry. */
|
|
28
|
+
onSend: (ids: readonly string[]) => Promise<ShareSheetSendResult>;
|
|
29
|
+
}>;
|
|
30
|
+
export type ShareSheetProps = Readonly<{
|
|
31
|
+
open: boolean;
|
|
32
|
+
onOpenChange: (open: boolean, detail: SheetOpenChangeDetails) => void;
|
|
33
|
+
title: string;
|
|
34
|
+
labels: ShareSheetLabels;
|
|
35
|
+
/** The URL that is copied and shared. */
|
|
36
|
+
link: string;
|
|
37
|
+
/** Title and text handed to the OS share sheet with the link. */
|
|
38
|
+
shareTitle?: string;
|
|
39
|
+
shareText?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Writes the link to the clipboard (e.g. `expo-clipboard`), or `null` to hide the action. React Native core has no
|
|
42
|
+
* clipboard and HJM installs no native clipboard module, so the product supplies it.
|
|
43
|
+
*/
|
|
44
|
+
copyLink: ((link: string) => Promise<void>) | null;
|
|
45
|
+
/** Replaces React Native `Share.share` (e.g. an iOS module with a rich preview); `false` hides the action. */
|
|
46
|
+
systemShare?: ((content: ShareSheetShareContent) => Promise<ShareSheetSystemShareOutcome>) | false;
|
|
47
|
+
onLinkCopied?: () => void;
|
|
48
|
+
/** The OS share sheet closed. `completed` is not a delivery receipt. */
|
|
49
|
+
onSystemShare?: (outcome: ShareSheetSystemShareOutcome) => void;
|
|
50
|
+
/** Product artwork for the two actions; Native core draws no copy/share glyphs of its own. */
|
|
51
|
+
icons: Readonly<{
|
|
52
|
+
copyLink: ReactNode;
|
|
53
|
+
systemShare: ReactNode;
|
|
54
|
+
}>;
|
|
55
|
+
/** In-app recipients (group chats, followers). Omit for external sharing only. */
|
|
56
|
+
recipients?: ShareSheetRecipients;
|
|
57
|
+
/** Product feedback above the body, such as a reward earned by sending. */
|
|
58
|
+
notice?: ReactNode;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* One Sheet for sharing a link (2026-10-26, generalized from BurnTok's share sheets): optional in-app recipients with a
|
|
62
|
+
* batch send, then copy link and the OS share sheet as two round actions in the footer.
|
|
63
|
+
*/
|
|
64
|
+
export declare function ShareSheet({ open, onOpenChange, title, labels, link, shareTitle, shareText, copyLink, systemShare, onLinkCopied, onSystemShare, icons, recipients, notice, }: ShareSheetProps): import("react").JSX.Element;
|
|
65
|
+
//# sourceMappingURL=share-sheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-sheet.d.ts","sourceRoot":"","sources":["../src/share-sheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { Platform, Share } from "react-native";
|
|
4
|
+
import { glyph } from "@hjmds/design-contracts/foundations";
|
|
5
|
+
import { iconButtonRecipe } from "@hjmds/design-contracts/recipes";
|
|
6
|
+
import { filterShareSheetRecipients, resolveShareSheetPickerValue, resolveShareSheetSendOutcome, shareSheetRecipe, validateShareSheet, validateShareSheetRecipients, } from "@hjmds/design-contracts/share-sheet";
|
|
7
|
+
import { Button, IconButton } from "./actions.js";
|
|
8
|
+
import { EmptyState, Notice } from "./feedback.js";
|
|
9
|
+
import { ImageChoiceGroup } from "./image-choice.js";
|
|
10
|
+
import { SearchField } from "./inputs.js";
|
|
11
|
+
import { DrawnRefresh } from "./internal/drawn-glyphs.js";
|
|
12
|
+
import { Spinner } from "./internal/spinner.js";
|
|
13
|
+
import { Sheet } from "./overlays.js";
|
|
14
|
+
import { Stack, Text } from "./primitives.js";
|
|
15
|
+
import { useHjmNativeTheme } from "./provider.js";
|
|
16
|
+
/**
|
|
17
|
+
* React Native's own share sheet. Android drops `url`, so the link joins the message there; iOS keeps the link as the
|
|
18
|
+
* shared URL (its preview) and the title or text as the message. `dialogTitle` names the Android chooser.
|
|
19
|
+
*/
|
|
20
|
+
async function shareWithReactNative(content, dialogTitle) {
|
|
21
|
+
const message = content.text ?? content.title;
|
|
22
|
+
const result = Platform.OS === "ios"
|
|
23
|
+
? await Share.share({ url: content.url, ...(message ? { message } : {}), ...(content.title ? { title: content.title } : {}) }, { subject: content.title ?? dialogTitle })
|
|
24
|
+
: await Share.share({ message: [message, content.url].filter(Boolean).join("\n"), ...(content.title ? { title: content.title } : {}) }, { dialogTitle });
|
|
25
|
+
return result.action === Share.dismissedAction ? "dismissed" : "completed";
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One Sheet for sharing a link (2026-10-26, generalized from BurnTok's share sheets): optional in-app recipients with a
|
|
29
|
+
* batch send, then copy link and the OS share sheet as two round actions in the footer.
|
|
30
|
+
*/
|
|
31
|
+
export function ShareSheet({ open, onOpenChange, title, labels, link, shareTitle, shareText, copyLink, systemShare, onLinkCopied, onSystemShare, icons, recipients, notice, }) {
|
|
32
|
+
validateShareSheet({ title, link, labels });
|
|
33
|
+
if (recipients)
|
|
34
|
+
validateShareSheetRecipients(recipients.items);
|
|
35
|
+
const { colors } = useHjmNativeTheme();
|
|
36
|
+
const share = systemShare === false ? null : systemShare ?? ((content) => shareWithReactNative(content, title));
|
|
37
|
+
const [externalAction, setExternalAction] = useState(null);
|
|
38
|
+
const [feedback, setFeedback] = useState(null);
|
|
39
|
+
const [selected, setSelected] = useState([]);
|
|
40
|
+
const [sentHere, setSentHere] = useState(() => new Set());
|
|
41
|
+
const [sending, setSending] = useState(false);
|
|
42
|
+
const [sendError, setSendError] = useState("");
|
|
43
|
+
const [localQuery, setLocalQuery] = useState("");
|
|
44
|
+
// Refs close the gap before React re-renders the busy state, so a double tap cannot start a second request.
|
|
45
|
+
const externalInFlight = useRef(false);
|
|
46
|
+
const batchInFlight = useRef(false);
|
|
47
|
+
// Bumped on every close: results of requests started in an earlier visit must not report into the next one.
|
|
48
|
+
const visit = useRef(0);
|
|
49
|
+
const mounted = useRef(false);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
mounted.current = true;
|
|
52
|
+
return () => { mounted.current = false; visit.current += 1; };
|
|
53
|
+
}, []);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
if (open)
|
|
56
|
+
return;
|
|
57
|
+
visit.current += 1;
|
|
58
|
+
setFeedback(null);
|
|
59
|
+
setSelected([]);
|
|
60
|
+
setSentHere(new Set());
|
|
61
|
+
setSendError("");
|
|
62
|
+
setLocalQuery("");
|
|
63
|
+
}, [open]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
// A different link makes a "copied" claim about the old one false.
|
|
66
|
+
setFeedback(null);
|
|
67
|
+
}, [link]);
|
|
68
|
+
async function runExternal(action) {
|
|
69
|
+
if (externalInFlight.current)
|
|
70
|
+
return;
|
|
71
|
+
if (action === "copy" ? !copyLink : !share)
|
|
72
|
+
return;
|
|
73
|
+
externalInFlight.current = true;
|
|
74
|
+
const current = visit.current;
|
|
75
|
+
setExternalAction(action);
|
|
76
|
+
setFeedback(null);
|
|
77
|
+
try {
|
|
78
|
+
if (action === "copy") {
|
|
79
|
+
await copyLink(link);
|
|
80
|
+
if (current !== visit.current)
|
|
81
|
+
return;
|
|
82
|
+
setFeedback("copied");
|
|
83
|
+
onLinkCopied?.();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const outcome = await share({ url: link, ...(shareTitle ? { title: shareTitle } : {}), ...(shareText ? { text: shareText } : {}) });
|
|
87
|
+
// The OS sheet only reports that it closed; never announce delivery.
|
|
88
|
+
if (current === visit.current)
|
|
89
|
+
onSystemShare?.(outcome);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
if (current === visit.current)
|
|
94
|
+
setFeedback("failed");
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
externalInFlight.current = false;
|
|
98
|
+
if (mounted.current)
|
|
99
|
+
setExternalAction(null);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const sent = new Set([...(recipients?.sentIds ?? []), ...sentHere]);
|
|
103
|
+
const pending = selected.filter(id => !sent.has(id));
|
|
104
|
+
async function sendSelected() {
|
|
105
|
+
if (!recipients || batchInFlight.current || pending.length === 0)
|
|
106
|
+
return;
|
|
107
|
+
batchInFlight.current = true;
|
|
108
|
+
const current = visit.current, requested = pending;
|
|
109
|
+
setSending(true);
|
|
110
|
+
setSendError("");
|
|
111
|
+
try {
|
|
112
|
+
const result = await recipients.onSend(requested);
|
|
113
|
+
if (current !== visit.current)
|
|
114
|
+
return;
|
|
115
|
+
const outcome = resolveShareSheetSendOutcome(requested, result);
|
|
116
|
+
const delivered = new Set(outcome.sent);
|
|
117
|
+
setSentHere(previous => new Set([...previous, ...outcome.sent]));
|
|
118
|
+
// Failed recipients stay selected, so the next press retries only them.
|
|
119
|
+
setSelected(previous => previous.filter(id => !delivered.has(id)));
|
|
120
|
+
if (outcome.failed.length)
|
|
121
|
+
setSendError(result.error ?? recipients.labels.sendFailed);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
if (current === visit.current)
|
|
125
|
+
setSendError(recipients.labels.sendFailed);
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
batchInFlight.current = false;
|
|
129
|
+
if (mounted.current)
|
|
130
|
+
setSending(false);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const remoteSearch = recipients?.search?.onQueryChange !== undefined;
|
|
134
|
+
const query = remoteSearch ? recipients?.search?.query ?? "" : localQuery;
|
|
135
|
+
const visible = recipients ? (remoteSearch ? recipients.items : filterShareSheetRecipients(recipients.items, query)) : [];
|
|
136
|
+
const status = recipients?.status ?? "ready";
|
|
137
|
+
const actionButton = (action, label, icon) => _jsxs(Stack, { align: "center", gap: shareSheetRecipe.actionCaptionGap, children: [_jsx(IconButton, { label: label, tone: shareSheetRecipe.actionButton.tone, size: shareSheetRecipe.actionButton.size, loading: externalAction === action, disabled: externalAction !== null, onPress: () => void runExternal(action), children: icon }), _jsx(Text, { variant: shareSheetRecipe.actionCaptionVariant, accessible: false, importantForAccessibility: "no", children: label })] });
|
|
138
|
+
const actions = copyLink || share ? _jsxs(Stack, { axis: "inline", justify: "center", gap: shareSheetRecipe.actionGap, children: [copyLink ? actionButton("copy", labels.copyLink, icons.copyLink) : null, share ? actionButton("share", labels.systemShare, icons.systemShare) : null] }) : null;
|
|
139
|
+
const footer = pending.length > 0 || actions ? _jsxs(Stack, { gap: shareSheetRecipe.footerGap, children: [recipients && pending.length > 0 ? _jsx(Button, { tone: shareSheetRecipe.sendButton.tone, size: shareSheetRecipe.sendButton.size, loading: sending, onPress: () => void sendSelected(), children: recipients.labels.send(pending.length) }) : null, actions] }) : undefined;
|
|
140
|
+
return _jsx(Sheet, { open: open, onOpenChange: onOpenChange, title: title, closeLabel: labels.close, busy: sending, size: recipients ? shareSheetRecipe.size.recipients : shareSheetRecipe.size.externalOnly, scrollable: recipients !== undefined, footer: footer, children: _jsxs(Stack, { gap: shareSheetRecipe.bodyGap, children: [notice, sendError ? _jsx(Notice, { tone: "danger", announcement: "assertive", title: sendError }) : null, feedback === "copied" ? _jsx(Notice, { tone: "success", appearance: "status", announcement: "polite", title: labels.linkCopied }) : null, feedback === "failed" ? _jsx(Notice, { tone: "danger", announcement: "assertive", title: labels.actionFailed }) : null, recipients ? _jsxs(_Fragment, { children: [_jsx(SearchField, { accessibilityLabel: recipients.labels.search, placeholder: recipients.labels.search, clearLabel: recipients.labels.clearSearch, busyLabel: recipients.labels.loading, busy: recipients.search?.searching === true, value: query, onValueChange: remoteSearch ? recipients.search.onQueryChange : setLocalQuery }), status === "error" ? _jsx(Notice, { tone: "danger", announcement: "polite", title: recipients.labels.loadFailed, ...(recipients.onRetry ? { action: _jsx(IconButton, { label: recipients.labels.retry, tone: "secondary", size: "small", loading: recipients.retrying === true, onPress: recipients.onRetry, children: _jsx(DrawnRefresh, { size: glyph[iconButtonRecipe.sizes.small.glyph], color: colors.text }) }) } : {}) })
|
|
141
|
+
: status === "loading" ? _jsx(Spinner, { label: recipients.labels.loading })
|
|
142
|
+
: visible.length === 0 ? _jsx(EmptyState, { density: "compact", title: query.trim() ? recipients.labels.noResults : recipients.labels.empty })
|
|
143
|
+
: _jsx(ImageChoiceGroup, { label: recipients.labels.group, selectionMode: "multiple", showItemLabels: shareSheetRecipe.picker.showItemLabels, itemLabelLines: shareSheetRecipe.picker.itemLabelLines, disabled: sending, value: resolveShareSheetPickerValue(selected, sent, visible.map(item => item.id)), onValueChange: next => setSelected(next.filter(id => !sent.has(id))), items: visible.map(item => sent.has(item.id) ? { ...item, description: recipients.labels.sent, disabled: true } : item) })] }) : null] }) });
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=share-sheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-sheet.js","sourceRoot":"","sources":["../src/share-sheet.tsx"],"names":[],"mappings":"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"}
|
package/dist/sheet-panel.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ export type SheetPanelProps = Readonly<{
|
|
|
11
11
|
height?: number;
|
|
12
12
|
onHeightChange?: (height: number) => void;
|
|
13
13
|
layoutStyle?: HjmCompositionStyleProp;
|
|
14
|
+
/**
|
|
15
|
+
* Space at the bottom that something else covers, such as a raised bottom-navigation item overlapping the sheet. The
|
|
16
|
+
* surface still reaches the bottom edge (no map strip under it); the body and the folded handle stay above the
|
|
17
|
+
* covered space (2026-10-25 Diairy map sheet joined to its tab bar).
|
|
18
|
+
*/
|
|
19
|
+
safeAreaBottom?: number;
|
|
14
20
|
/** Product artwork above the scrolling body; it must not replace the handle. */
|
|
15
21
|
overlay?: ReactNode;
|
|
16
22
|
/** Domain navigation, such as horizontal letter paging; vertical ownership remains here. */
|
|
@@ -20,5 +26,5 @@ export type SheetPanelProps = Readonly<{
|
|
|
20
26
|
testID?: string;
|
|
21
27
|
}>;
|
|
22
28
|
/** A nonmodal, bottom-anchored sheet. The map behind it keeps pointer and accessibility access. */
|
|
23
|
-
export declare function SheetPanel({ children, handleLabel, maximumHeight, height, onHeightChange, layoutStyle, overlay, contentGesture, handleActions, onHandleAction, testID }: SheetPanelProps): import("react").JSX.Element;
|
|
29
|
+
export declare function SheetPanel({ children, handleLabel, maximumHeight, height, onHeightChange, layoutStyle, safeAreaBottom, overlay, contentGesture, handleActions, onHandleAction, testID }: SheetPanelProps): import("react").JSX.Element;
|
|
24
30
|
//# sourceMappingURL=sheet-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-panel.d.ts","sourceRoot":"","sources":["../src/sheet-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAmB,MAAM,8BAA8B,CAAC;AASxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,gFAAgF;IAChF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EACvF,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,eAAe,+
|
|
1
|
+
{"version":3,"file":"sheet-panel.d.ts","sourceRoot":"","sources":["../src/sheet-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAmB,MAAM,8BAA8B,CAAC;AASxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EACvF,WAAW,EAAE,cAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,eAAe,+BA4FnH"}
|
package/dist/sheet-panel.js
CHANGED
|
@@ -11,7 +11,7 @@ import { resolveColorReference } from "@hjmds/design-contracts/color-references"
|
|
|
11
11
|
import { useHjmNativeTheme } from "./provider.js";
|
|
12
12
|
import { resolveNativeShadowElevation } from "./internal/styles.js";
|
|
13
13
|
/** A nonmodal, bottom-anchored sheet. The map behind it keeps pointer and accessibility access. */
|
|
14
|
-
export function SheetPanel({ children, handleLabel, maximumHeight, height, onHeightChange, layoutStyle, overlay, contentGesture, handleActions, onHandleAction, testID }) {
|
|
14
|
+
export function SheetPanel({ children, handleLabel, maximumHeight, height, onHeightChange, layoutStyle, safeAreaBottom = 0, overlay, contentGesture, handleActions, onHandleAction, testID }) {
|
|
15
15
|
const theme = useHjmNativeTheme();
|
|
16
16
|
const { tokens, palette, designProfile, environment } = theme;
|
|
17
17
|
const reduced = environment.reducedMotion;
|
|
@@ -26,6 +26,8 @@ export function SheetPanel({ children, handleLabel, maximumHeight, height, onHei
|
|
|
26
26
|
if (!handleLabel.trim() || [maximumHeight, height].some(value => value !== undefined && (!Number.isFinite(value) || value <= 0))) {
|
|
27
27
|
throw new TypeError("SheetPanel requires a handle label and positive finite heights");
|
|
28
28
|
}
|
|
29
|
+
if (!Number.isFinite(safeAreaBottom) || safeAreaBottom < 0)
|
|
30
|
+
throw new RangeError("SheetPanel safeAreaBottom must be non-negative");
|
|
29
31
|
const settle = (velocityY, success) => {
|
|
30
32
|
"worklet";
|
|
31
33
|
const collapse = velocityY > sheetPanelBehavior.collapseVelocity ||
|
|
@@ -96,7 +98,7 @@ export function SheetPanel({ children, handleLabel, maximumHeight, height, onHei
|
|
|
96
98
|
const measuredHeight = event.nativeEvent.layout.height;
|
|
97
99
|
const previous = collapsedBy.get();
|
|
98
100
|
const wasCollapsed = previous > 0 && translateY.get() > previous / 2;
|
|
99
|
-
const next = Math.max(0, measuredHeight - control.minTouchTarget);
|
|
101
|
+
const next = Math.max(0, measuredHeight - control.minTouchTarget - safeAreaBottom);
|
|
100
102
|
cancelAnimation(translateY);
|
|
101
103
|
collapsedBy.set(next);
|
|
102
104
|
translateY.set(wasCollapsed ? next : 0);
|
|
@@ -106,6 +108,6 @@ export function SheetPanel({ children, handleLabel, maximumHeight, height, onHei
|
|
|
106
108
|
toggle();
|
|
107
109
|
else
|
|
108
110
|
onHandleAction?.(event); }, onPress: toggle, style: { height: control.minTouchTarget, alignSelf: "stretch", alignItems: "center", justifyContent: "center" }, children: _jsx(View, { accessibilityElementsHidden: true, importantForAccessibility: "no", style: { width: sheetRecipe.handle.width, height: sheetRecipe.handle.height,
|
|
109
|
-
borderRadius: tokens.radius[sheetRecipe.handle.radius], backgroundColor: resolveColorReference(sheetRecipe.handle.color, palette) } }) }) }), overlay ? _jsx(View, { pointerEvents: expanded ? "box-none" : "none", style: [StyleSheet.absoluteFill, { opacity: expanded ? 1 : 0 }], accessibilityElementsHidden: !expanded, importantForAccessibility: expanded ? "auto" : "no-hide-descendants", children: overlay }) : null, _jsx(GestureDetector, { gesture: bodyGesture, children: _jsx(Animated.ScrollView, { testID: testID ? `${testID}-scroll` : undefined, accessibilityElementsHidden: !expanded, importantForAccessibility: expanded ? "auto" : "no-hide-descendants", style: { flexGrow: height === undefined ? 0 : 1, flexShrink: 1, overflow: "hidden" }, contentContainerStyle: { flexGrow: 1, paddingHorizontal: sheetRecipe.content.paddingHorizontal, paddingBottom: sheetRecipe.content.paddingBottom }, onScroll: onScroll, scrollEventThrottle: 16, showsVerticalScrollIndicator: true, bounces: false, overScrollMode: "never", contentInsetAdjustmentBehavior: "never", children: children }) })] });
|
|
111
|
+
borderRadius: tokens.radius[sheetRecipe.handle.radius], backgroundColor: resolveColorReference(sheetRecipe.handle.color, palette) } }) }) }), overlay ? _jsx(View, { pointerEvents: expanded ? "box-none" : "none", style: [StyleSheet.absoluteFill, { opacity: expanded ? 1 : 0 }], accessibilityElementsHidden: !expanded, importantForAccessibility: expanded ? "auto" : "no-hide-descendants", children: overlay }) : null, _jsx(GestureDetector, { gesture: bodyGesture, children: _jsx(Animated.ScrollView, { testID: testID ? `${testID}-scroll` : undefined, accessibilityElementsHidden: !expanded, importantForAccessibility: expanded ? "auto" : "no-hide-descendants", style: { flexGrow: height === undefined ? 0 : 1, flexShrink: 1, overflow: "hidden" }, contentContainerStyle: { flexGrow: 1, paddingHorizontal: sheetRecipe.content.paddingHorizontal, paddingBottom: sheetRecipe.content.paddingBottom + safeAreaBottom }, onScroll: onScroll, scrollEventThrottle: 16, showsVerticalScrollIndicator: true, bounces: false, overScrollMode: "never", contentInsetAdjustmentBehavior: "never", children: children }) })] });
|
|
110
112
|
}
|
|
111
113
|
//# sourceMappingURL=sheet-panel.js.map
|
package/dist/sheet-panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-panel.js","sourceRoot":"","sources":["../src/sheet-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,QAAQ,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC/J,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sheet-panel.js","sourceRoot":"","sources":["../src/sheet-panel.tsx"],"names":[],"mappings":"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"}
|
package/dist/slider.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ComponentRef } from "react";
|
|
2
|
-
import { forwardRef } from "react";
|
|
2
|
+
import { forwardRef, type ReactNode } from "react";
|
|
3
3
|
import { View, type LayoutChangeEvent, type ViewProps } from "react-native";
|
|
4
4
|
import type { HjmCompositionStyleProp } from "./composition-style.js";
|
|
5
5
|
type NativeSliderViewProps = Omit<ViewProps, "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityValue" | "accessible" | "children" | "onAccessibilityAction" | "onLayout" | "style">;
|
|
@@ -23,6 +23,20 @@ export type SliderProps = NativeSliderViewProps & Readonly<{
|
|
|
23
23
|
/** Canonical layout-only placement for the complete slider. Controlled visual keys are excluded. */
|
|
24
24
|
layoutStyle?: HjmCompositionStyleProp;
|
|
25
25
|
}>;
|
|
26
|
+
/**
|
|
27
|
+
* HJM-internal: ColorPicker's hue and opacity bars reuse this gesture and accessibility logic with a painted track.
|
|
28
|
+
* The visible header is dropped (the bar itself shows the value) and the thumb shows the colour under it.
|
|
29
|
+
*/
|
|
30
|
+
export type SliderPrivateProps = Readonly<{
|
|
31
|
+
hjmColorTrack?: Readonly<{
|
|
32
|
+
fill: ReactNode;
|
|
33
|
+
thumbFill: ReactNode;
|
|
34
|
+
height: number;
|
|
35
|
+
thumbDiameter: number;
|
|
36
|
+
thumbBorder: number;
|
|
37
|
+
direction: "ltr" | "rtl";
|
|
38
|
+
}>;
|
|
39
|
+
}>;
|
|
26
40
|
/** Dependency-free horizontal Slider using the Native responder system. */
|
|
27
41
|
export declare const Slider: ReturnType<typeof forwardRef<ComponentRef<typeof View>, SliderProps>>;
|
|
28
42
|
export {};
|
package/dist/slider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../src/slider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS1C,OAAO,EACL,UAAU,
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../src/slider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS1C,OAAO,EACL,UAAU,EACV,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,IAAI,EACJ,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAKtE,KAAK,qBAAqB,GAAG,IAAI,CAC/B,SAAS,EACP,sBAAsB,GACtB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,YAAY,GACZ,UAAU,GACV,uBAAuB,GACvB,UAAU,GACV,OAAO,CACV,CAAC;AAKF,MAAM,MAAM,WAAW,GAAG,qBAAqB,GAC7C,QAAQ,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,oGAAoG;IACpG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,aAAa,CAAC,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,KAAK,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAEzM,2EAA2E;AAC3E,eAAO,MAAM,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,EAAE,WAAW,CAAC,CA6WvF,CAAC"}
|
package/dist/slider.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { assertNoRemovedStyleProps } from "./internal/diagnostics.js";
|
|
3
3
|
import { getSliderStepTarget, resolveSliderDescriptor, resolveSliderFillFraction, resolveSliderValueFromOffset, sliderRecipe, } from "@hjmds/design-contracts/components/slider";
|
|
4
4
|
import { forwardRef, useEffect, useMemo, useRef, useState, } from "react";
|
|
@@ -9,9 +9,12 @@ import { useHjmNativeTheme } from "./provider.js";
|
|
|
9
9
|
/** Points of travel before a drag counts as horizontal or vertical intent. */
|
|
10
10
|
const sliderIntentSlop = 6;
|
|
11
11
|
/** Dependency-free horizontal Slider using the Native responder system. */
|
|
12
|
-
export const Slider = forwardRef(function Slider({ label, min, max, step, value, defaultValue, onValueChange, onValueChangeEnd, decrementLabel, incrementLabel, getValueText, disabled = false, onFocus, onBlur, onLayout, layoutStyle, ...viewProps }, forwardedRef) {
|
|
12
|
+
export const Slider = forwardRef(function Slider({ label, min, max, step, value, defaultValue, onValueChange, onValueChangeEnd, decrementLabel, incrementLabel, getValueText, disabled = false, onFocus, onBlur, onLayout, layoutStyle, hjmColorTrack, ...viewProps }, forwardedRef) {
|
|
13
13
|
assertNoRemovedStyleProps("Slider", viewProps, ["containerStyle", "controlStyle"]);
|
|
14
14
|
const { colors, environment, textScaling, tokens } = useHjmNativeTheme();
|
|
15
|
+
// Painted colour tracks define a physical colour axis independently of the
|
|
16
|
+
// surrounding labels' reading order; gestures and thumb geometry share it.
|
|
17
|
+
const trackDirection = hjmColorTrack?.direction ?? environment.direction;
|
|
15
18
|
const [currentValue, setCurrentValue] = useControllableState({
|
|
16
19
|
...(value === undefined ? {} : { value }),
|
|
17
20
|
defaultValue: defaultValue ?? min,
|
|
@@ -27,6 +30,7 @@ export const Slider = forwardRef(function Slider({ label, min, max, step, value,
|
|
|
27
30
|
...(valueText === undefined ? {} : { valueText }),
|
|
28
31
|
});
|
|
29
32
|
const recipe = sliderRecipe.sizes.medium;
|
|
33
|
+
const thumbDiameter = hjmColorTrack?.thumbDiameter ?? recipe.thumbDiameter;
|
|
30
34
|
const [layoutWidth, setLayoutWidth] = useState(0);
|
|
31
35
|
const [dragging, setDragging] = useState(false);
|
|
32
36
|
const [focused, setFocused] = useState(false);
|
|
@@ -58,11 +62,11 @@ export const Slider = forwardRef(function Slider({ label, min, max, step, value,
|
|
|
58
62
|
const updateFromLocation = (locationX) => {
|
|
59
63
|
if (disabled)
|
|
60
64
|
return;
|
|
61
|
-
const extent = layoutWidth -
|
|
65
|
+
const extent = layoutWidth - thumbDiameter;
|
|
62
66
|
if (extent <= 0)
|
|
63
67
|
return;
|
|
64
|
-
const offset = locationX -
|
|
65
|
-
publish(resolveSliderValueFromOffset(descriptor, offset, extent,
|
|
68
|
+
const offset = locationX - thumbDiameter / 2;
|
|
69
|
+
publish(resolveSliderValueFromOffset(descriptor, offset, extent, trackDirection));
|
|
66
70
|
};
|
|
67
71
|
const performAction = (intent) => {
|
|
68
72
|
if (disabled)
|
|
@@ -144,8 +148,8 @@ export const Slider = forwardRef(function Slider({ label, min, max, step, value,
|
|
|
144
148
|
finishRef.current();
|
|
145
149
|
}, [disabled]);
|
|
146
150
|
const fraction = resolveSliderFillFraction(descriptor);
|
|
147
|
-
const travel = Math.max(0, layoutWidth -
|
|
148
|
-
const visualFraction =
|
|
151
|
+
const travel = Math.max(0, layoutWidth - thumbDiameter);
|
|
152
|
+
const visualFraction = trackDirection === "rtl" ? 1 - fraction : fraction;
|
|
149
153
|
const thumbLeft = travel * visualFraction;
|
|
150
154
|
const visibleValue = valueText ?? String(currentValue);
|
|
151
155
|
const actionProps = disabled
|
|
@@ -182,13 +186,13 @@ export const Slider = forwardRef(function Slider({ label, min, max, step, value,
|
|
|
182
186
|
opacity: disabled ? sliderRecipe.states.disabledOpacity : 1,
|
|
183
187
|
},
|
|
184
188
|
layoutStyle,
|
|
185
|
-
], children: [_jsxs(View, { accessible: false, accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: {
|
|
189
|
+
], children: [hjmColorTrack ? null : (_jsxs(View, { accessible: false, accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: {
|
|
186
190
|
alignItems: "baseline",
|
|
187
191
|
direction: environment.direction,
|
|
188
192
|
flexDirection: "row",
|
|
189
193
|
gap: sliderRecipe.header.gap,
|
|
190
194
|
justifyContent: "space-between",
|
|
191
|
-
}, children: [_jsx(NativeText, { ...labelTextScaleProps, children: label }), _jsx(NativeText, { ...valueTextScaleProps, children: visibleValue })] }),
|
|
195
|
+
}, children: [_jsx(NativeText, { ...labelTextScaleProps, children: label }), _jsx(NativeText, { ...valueTextScaleProps, children: visibleValue })] })), _jsx(View, { ...viewProps, ...panResponder.panHandlers, ...actionProps, ref: forwardedRef, accessible: true, accessibilityLabel: label, accessibilityRole: "adjustable", accessibilityState: { disabled }, accessibilityValue: {
|
|
192
196
|
min,
|
|
193
197
|
max,
|
|
194
198
|
now: currentValue,
|
|
@@ -207,45 +211,68 @@ export const Slider = forwardRef(function Slider({ label, min, max, step, value,
|
|
|
207
211
|
justifyContent: "center",
|
|
208
212
|
minHeight: recipe.hitTarget,
|
|
209
213
|
minWidth: recipe.hitTarget,
|
|
214
|
+
direction: trackDirection,
|
|
210
215
|
},
|
|
211
|
-
], children: [_jsx(View, { pointerEvents: "none", style: {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
:
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
216
|
+
], children: hjmColorTrack ? (_jsxs(_Fragment, { children: [_jsx(View, { pointerEvents: "none", style: {
|
|
217
|
+
borderRadius: tokens.radius.full,
|
|
218
|
+
height: hjmColorTrack.height,
|
|
219
|
+
left: 0,
|
|
220
|
+
overflow: "hidden",
|
|
221
|
+
position: "absolute",
|
|
222
|
+
right: 0,
|
|
223
|
+
}, children: hjmColorTrack.fill }), _jsx(View, { pointerEvents: "none", style: {
|
|
224
|
+
borderColor: focused ? colors.contentBrand : "#ffffff",
|
|
225
|
+
borderRadius: tokens.radius.full,
|
|
226
|
+
borderWidth: hjmColorTrack.thumbBorder,
|
|
227
|
+
elevation: 2,
|
|
228
|
+
height: thumbDiameter,
|
|
229
|
+
left: thumbLeft,
|
|
230
|
+
overflow: "hidden",
|
|
231
|
+
position: "absolute",
|
|
232
|
+
shadowColor: "#000000",
|
|
233
|
+
shadowOffset: { width: 0, height: 1 },
|
|
234
|
+
shadowOpacity: 0.3,
|
|
235
|
+
shadowRadius: 2,
|
|
236
|
+
width: thumbDiameter,
|
|
237
|
+
zIndex: 2,
|
|
238
|
+
}, children: hjmColorTrack.thumbFill })] })) : (_jsxs(_Fragment, { children: [_jsx(View, { pointerEvents: "none", style: {
|
|
239
|
+
backgroundColor: colors.surfaceAlt,
|
|
240
|
+
borderColor: colors.textMuted,
|
|
241
|
+
borderRadius: tokens.radius.full,
|
|
242
|
+
borderWidth: 1,
|
|
243
|
+
height: recipe.trackHeight,
|
|
244
|
+
left: thumbDiameter / 2,
|
|
245
|
+
position: "absolute",
|
|
246
|
+
right: thumbDiameter / 2,
|
|
247
|
+
} }), _jsx(View, { pointerEvents: "none", style: {
|
|
248
|
+
backgroundColor: colors.contentBrand,
|
|
249
|
+
borderRadius: tokens.radius.full,
|
|
250
|
+
height: recipe.trackHeight,
|
|
251
|
+
...(environment.direction === "rtl"
|
|
252
|
+
? { right: thumbDiameter / 2 }
|
|
253
|
+
: { left: thumbDiameter / 2 }),
|
|
254
|
+
position: "absolute",
|
|
255
|
+
width: travel * fraction,
|
|
256
|
+
} }), focused ? (_jsx(View, { pointerEvents: "none", style: {
|
|
257
|
+
borderColor: colors.contentBrand,
|
|
258
|
+
borderRadius: tokens.radius[sliderRecipe.radius],
|
|
259
|
+
borderWidth: sliderRecipe.states.focus.width,
|
|
260
|
+
height: thumbDiameter + sliderRecipe.states.focus.offset * 2,
|
|
261
|
+
left: thumbLeft - sliderRecipe.states.focus.offset,
|
|
262
|
+
position: "absolute",
|
|
263
|
+
width: thumbDiameter + sliderRecipe.states.focus.offset * 2,
|
|
264
|
+
zIndex: 1,
|
|
265
|
+
} })) : null, _jsx(View, { pointerEvents: "none", style: {
|
|
266
|
+
backgroundColor: colors.bg,
|
|
267
|
+
borderColor: colors.contentBrand,
|
|
268
|
+
borderRadius: tokens.radius.full,
|
|
269
|
+
borderWidth: 2,
|
|
270
|
+
height: thumbDiameter,
|
|
271
|
+
left: thumbLeft,
|
|
272
|
+
opacity: dragging ? sliderRecipe.states.draggedOpacity : 1,
|
|
273
|
+
position: "absolute",
|
|
274
|
+
width: thumbDiameter,
|
|
275
|
+
zIndex: 2,
|
|
276
|
+
} })] })) })] }));
|
|
250
277
|
});
|
|
251
278
|
//# sourceMappingURL=slider.js.map
|