UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

55 lines (52 loc) • 1.83 kB
import { Slot } from "@radix-ui/react-slot"; import * as React from "react"; import { resolveHref } from "./href.mjs"; import { useLinkTo } from "./useLinkTo.mjs"; import { jsx } from "react/jsx-runtime"; const Link = React.forwardRef(function Link2({ href, replace, push: _push, id, mask, asChild, rel, target, download, className, style, onPress, disabled, accessibilityLabel, testID, ...rest }, ref) { const resolvedHref = React.useMemo(() => { if (href == null) { throw new Error("Link: href is required"); } return resolveHref(href); }, [href]); const resolvedMask = React.useMemo(() => mask ? resolveHref(mask) : void 0, [mask]); const link = useLinkTo({ href: resolvedHref, replace, mask: resolvedMask }); const flattenedStyle = React.useMemo(() => { const styleValue = style; const styleValues = Array.isArray(styleValue) ? styleValue.flat(Number.POSITIVE_INFINITY) : [styleValue]; return styleValues.reduce((result, value) => value && typeof value === "object" ? Object.assign(result, value) : result, {}); }, [style]); const Element = asChild ? Slot : "a"; const anchorProps = rest; return /* @__PURE__ */ jsx(Element, { ref, ...anchorProps, href: link.href, role: link.role, className, style: flattenedStyle, ...id == null ? null : { id }, ...rel == null ? null : { rel }, ...target == null ? null : { target }, ...download == null ? null : { download }, ...testID == null ? null : { "data-testid": testID }, ...accessibilityLabel == null ? null : { "aria-label": accessibilityLabel }, ...disabled ? { "aria-disabled": true } : null, onClick: (event) => { if (disabled) { event.preventDefault(); return; } onPress?.(event); link.onPress(event); } }); }); Link.resolveHref = resolveHref; export { Link }; //# sourceMappingURL=Link.mjs.map