UNPKG

one

Version:

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

101 lines (98 loc) • 4.6 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var tamagui_native_exports = {}; __export(tamagui_native_exports, { setupTamaguiNativeSheet: () => setupTamaguiNativeSheet }); module.exports = __toCommonJS(tamagui_native_exports); var import_jsx_runtime = require("react/jsx-runtime"); var import_sheet = require("@tamagui/sheet"); var import_internal_runtime = require("@tamagui/web/internal-runtime"); var import_react = require("react"); var import_react_native = require("react-native"); var import_Sheet = require("./platform/Sheet.native.js"); function TamaguiNativeSheetRenderer(param) { var { open, onOpenChange, snapPoints, position, onPositionChange, onDismiss, children, ref, modal = false, disableDrag = false, dismissOnOverlayPress = true, containerComponent: ContentContainer = import_react.Fragment, portalProps, zIndex } = param; var [, themeState] = (0, import_internal_runtime.useThemeWithState)({ needsUpdate: function needsUpdate() { return true; } }); var colorScheme = (themeState === null || themeState === void 0 ? void 0 : themeState.scheme) === "light" || (themeState === null || themeState === void 0 ? void 0 : themeState.scheme) === "dark" ? themeState.scheme : void 0; var fitToContents = snapPoints.length === 1 && snapPoints[0].type === "fit"; var detents = (0, import_react.useMemo)(function() { if (fitToContents) return void 0; return snapPoints.map(function(point) { if (point.type === "fit") { throw new Error("One native Sheet does not yet support fit combined with other snap points"); } if (point.value <= 0) { throw new Error("One native Sheet requires positive authored snap points"); } return point.type === "percent" ? { fraction: point.value / 100 } : { height: point.value }; }); }, [snapPoints, fitToContents]); if (disableDrag === dismissOnOverlayPress) { throw new Error("One native Sheet cannot control drag and backdrop dismissal independently"); } if (portalProps) { throw new Error("One native Sheet uses the system presentation host, so portalProps are unavailable"); } var selectedDetent = detents === null || detents === void 0 ? void 0 : detents[open ? position : 0]; var presentationDetents = (0, import_react.useMemo)(function() { return disableDrag && selectedDetent ? [selectedDetent] : detents; }, [ disableDrag, selectedDetent, detents ]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, { ref, style: { position: "absolute", width: 0, height: 0, zIndex }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Sheet.SheetAppearanceContext.Provider, { value: colorScheme, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Sheet.Sheet, { isPresented: open, onIsPresentedChange: onOpenChange, onDidDismiss: onDismiss, fitToContents, presentationDetents, selectedDetent: disableDrag ? void 0 : selectedDetent, onSelectedDetentChange: detents && !disableDrag ? function(detent) { var index = detents.findIndex(function(point) { return typeof point === "object" && typeof detent === "object" && ("fraction" in point && "fraction" in detent && point.fraction === detent.fraction || "height" in point && "height" in detent && point.height === detent.height); }); if (index < 0) throw new Error("One native Sheet selected an unauthored snap point"); onPositionChange(index); } : void 0, interactiveDismissDisabled: disableDrag, presentationBackgroundInteraction: modal ? "disabled" : "enabled", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentContainer, { children }) }) }) }); } function setupTamaguiNativeSheet() { if (import_react_native.Platform.OS === "ios") (0, import_sheet.setupNativeSheet)("ios", TamaguiNativeSheetRenderer); } //# sourceMappingURL=tamagui.native.js.map