@peersahab/side-island 0.1.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/LICENSE +23 -0
- package/README.md +403 -0
- package/dist/index.d.mts +146 -0
- package/dist/index.d.ts +146 -0
- package/dist/index.js +536 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +527 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/provider/side-island-provider.tsx","../src/side-island.tsx","../src/hooks/use-side-island.ts"],"names":["_a","React","useState","_b","useMemo","SkPathNode","height","useCallback"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { SideIslandConfig, SideIslandProviderProps } from \"../types/island\";\n\ntype ProviderValue = {\n expanded: boolean;\n setExpanded: (next: boolean) => void;\n config: SideIslandConfig;\n};\n\nexport const SideIslandContext = createContext<ProviderValue | null>(null);\n\nexport function SideIslandProvider({\n children,\n defaultExpanded = false,\n onExpandedChange,\n config,\n value,\n}: SideIslandProviderProps) {\n const [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\n const expanded = value?.expanded ?? internalExpanded;\n\n const setExpanded = useCallback(\n (next: boolean) => {\n if (value?.setExpanded) {\n value.setExpanded(next);\n } else {\n setInternalExpanded(next);\n }\n onExpandedChange?.(next);\n },\n [onExpandedChange, value]\n );\n\n const mergedConfig = useMemo(() => {\n return {\n ...(config ?? {}),\n ...(value?.config ?? {}),\n };\n }, [config, value?.config]);\n\n const ctxValue = useMemo<ProviderValue>(() => {\n return { expanded, setExpanded, config: mergedConfig };\n }, [expanded, mergedConfig, setExpanded]);\n\n return <SideIslandContext.Provider value={ctxValue}>{children}</SideIslandContext.Provider>;\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { FlatList, PanResponder, Pressable, StyleSheet, useColorScheme, useWindowDimensions, View } from \"react-native\";\nimport Animated, { Easing, Extrapolation, interpolate, useAnimatedStyle, useSharedValue, withTiming } from \"react-native-reanimated\";\nimport { Canvas, Group, Path as SkPathNode, Skia } from \"@shopify/react-native-skia\";\n\nimport { SideIslandContext } from \"./provider/side-island-provider\";\nimport type { SideIslandPosition, SideIslandProps } from \"./types/island\";\n\nfunction clamp(n: number, min: number, max: number) {\n \"worklet\";\n return Math.max(min, Math.min(max, n));\n}\n\nfunction buildWaveIslandPath(\n w: number,\n h: number,\n position: SideIslandPosition,\n amp: number = 34,\n y1: number = 0.28,\n y2: number = 0.72\n) {\n const p = Skia.Path.Make();\n\n const pinnedRight = position === \"right\";\n const xPinned = pinnedRight ? w : 0;\n const xBulge = pinnedRight ? 0 : w;\n\n // Keep y1/y2 meaningful even when h is small.\n // Ensure y1 < y2 and they’re not too close.\n const minGap = 0.22; // 22% of height between peaks\n const Y1 = h * clamp(y1, 0.05, 0.45);\n const Y2 = h * clamp(y2, 0.55, 0.95);\n const gap = Y2 - Y1;\n const fixGap = gap < h * minGap;\n const Y1Fixed = fixGap ? h * 0.5 - (h * minGap) / 2 : Y1;\n const Y2Fixed = fixGap ? h * 0.5 + (h * minGap) / 2 : Y2;\n\n /**\n * Controls the \"roundness\" of the shoulders.\n * Clamp it by available vertical space and width so we don't overshoot.\n */\n const curveSize = Math.max(1, Math.min(Y1Fixed, h - Y2Fixed, w * 0.8));\n\n // Start at the pinned top corner, go clockwise\n p.moveTo(xPinned, 0);\n\n // Pinned edge straight down\n p.lineTo(xPinned, h);\n\n // Bottom convex S-curve (turn out, then into the bulge wall)\n p.cubicTo(\n xPinned,\n h - curveSize * 0.75,\n xBulge,\n Y2Fixed + curveSize * 0.75,\n xBulge,\n Y2Fixed\n );\n\n // Bulge edge (flat face where content sits)\n p.lineTo(xBulge, Y1Fixed);\n\n // Top convex S-curve (turn back into the pinned wall)\n p.cubicTo(xBulge, Y1Fixed - curveSize * 0.5, xPinned, curveSize * 0.5, xPinned, 0);\n\n p.close();\n return p;\n}\n\nfunction DefaultSeparator({ height = 12 }: { height?: number }) {\n return <View style={{ height }} />;\n}\n\nfunction ScaledItem({\n index,\n scrollY,\n itemHeight,\n viewportHeight,\n separatorHeight,\n children,\n}: {\n index: number;\n scrollY: Animated.SharedValue<number>;\n itemHeight: Animated.SharedValue<number>;\n viewportHeight: number;\n separatorHeight: number;\n children: React.ReactNode;\n}) {\n const animatedStyle = useAnimatedStyle(() => {\n const h = itemHeight.value;\n if (h <= 0) return {};\n\n const stride = h + separatorHeight;\n const inset = Math.max(0, viewportHeight / 2 - h / 2);\n\n const itemCenterY = inset + index * stride + h / 2;\n const viewportCenterY = scrollY.value + viewportHeight / 2;\n const dist = Math.abs(itemCenterY - viewportCenterY);\n\n // Scale items based on distance from center:\n // - centered => 1.0\n // - 1 item away => 0.8\n // - 2 items away => 0.5\n // - 3+ items away => 0\n const scale = interpolate(dist, [0, stride, stride * 2, stride * 3], [1, 0.8, 0.5, 0], Extrapolation.CLAMP);\n return { transform: [{ scale }] };\n }, [index, separatorHeight, viewportHeight]);\n\n return (\n <Animated.View style={[{ alignItems: \"center\", justifyContent: \"center\" }, animatedStyle]}>\n {children}\n </Animated.View>\n );\n}\n\nexport function SideIsland<ItemT>({\n items,\n renderItem,\n keyExtractor,\n listProps,\n onFocusedItemChange,\n\n position,\n width,\n height,\n waveAmplitude,\n waveY1,\n waveY2,\n backgroundColor,\n handleWidth,\n topOffset,\n haptics,\n\n style,\n\n expanded,\n onToggleExpanded,\n defaultExpanded = false,\n\n onPress,\n\n backdropComponent,\n renderFocusedItemDetail,\n focusedItemDetailGap = 16,\n}: SideIslandProps<ItemT>) {\n const { height: screenHeight, width: screenWidth } = useWindowDimensions();\n const colorScheme = useColorScheme();\n const ctx = React.useContext(SideIslandContext);\n\n const resolvedPosition: SideIslandPosition = position ?? ctx?.config.position ?? \"right\";\n\n const resolvedWidth = width ?? ctx?.config.width ?? 40;\n const resolvedHeight = height ?? ctx?.config.height ?? 250;\n const resolvedWaveAmplitude = waveAmplitude ?? ctx?.config.waveAmplitude ?? 18;\n const resolvedWaveY1 = waveY1 ?? ctx?.config.waveY1 ?? 0.1;\n const resolvedWaveY2 = waveY2 ?? ctx?.config.waveY2 ?? 0.9;\n const resolvedHandleWidth = handleWidth ?? ctx?.config.handleWidth ?? 16;\n const resolvedTopOffset = topOffset ?? ctx?.config.topOffset ?? 0;\n const resolvedHaptics = haptics ?? ctx?.config.haptics;\n\n // Default island background should be pure black (app can override via prop/provider).\n const defaultBg = \"#000000\";\n const resolvedBackgroundColor = backgroundColor ?? ctx?.config.backgroundColor ?? defaultBg;\n\n const [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\n const isControlled = typeof expanded === \"boolean\";\n const isUsingProvider = !!ctx && !isControlled;\n\n const effectiveExpanded = isControlled ? expanded : isUsingProvider ? ctx.expanded : internalExpanded;\n\n const prevExpandedRef = useRef<boolean>(effectiveExpanded);\n useEffect(() => {\n const prev = prevExpandedRef.current;\n if (prev === effectiveExpanded) return;\n prevExpandedRef.current = effectiveExpanded;\n\n if (!resolvedHaptics) return;\n\n if (effectiveExpanded) {\n try {\n void resolvedHaptics.onOpen?.();\n } catch (e) {\n // Silently handle haptics errors\n }\n } else {\n try {\n void resolvedHaptics.onClose?.();\n } catch (e) {\n // Silently handle haptics errors\n }\n }\n }, [effectiveExpanded, resolvedHaptics]);\n\n const setExpanded = (next: boolean) => {\n if (isControlled) {\n onToggleExpanded?.(next);\n return;\n }\n if (isUsingProvider) {\n ctx.setExpanded(next);\n return;\n }\n setInternalExpanded(next);\n };\n\n const toggleExpanded = () => setExpanded(!effectiveExpanded);\n\n // Position island vertically centered and pinned to a screen edge\n const topPosition = Math.round((screenHeight - resolvedHeight) / 2) + resolvedTopOffset;\n\n // When collapsed, keep a small handle visible.\n const collapsedMagnitude = Math.max(0, resolvedWidth - resolvedHandleWidth);\n const collapsedTranslateX = resolvedPosition === \"right\" ? collapsedMagnitude : -collapsedMagnitude;\n\n // Animated translateX value - controls horizontal position\n const translateXAnim = useSharedValue(collapsedTranslateX);\n const backdropOpacity = useSharedValue(effectiveExpanded ? 1 : 0);\n\n useEffect(() => {\n translateXAnim.value = withTiming(effectiveExpanded ? 0 : collapsedTranslateX, {\n duration: 300,\n easing: Easing.out(Easing.ease),\n });\n backdropOpacity.value = withTiming(effectiveExpanded ? 1 : 0, {\n duration: 300,\n easing: Easing.out(Easing.ease),\n });\n }, [collapsedTranslateX, effectiveExpanded, translateXAnim, backdropOpacity]);\n\n const path = useMemo(() => {\n return buildWaveIslandPath(resolvedWidth, resolvedHeight, resolvedPosition, resolvedWaveAmplitude, resolvedWaveY1, resolvedWaveY2);\n }, [resolvedHeight, resolvedPosition, resolvedWaveAmplitude, resolvedWaveY1, resolvedWaveY2, resolvedWidth]);\n\n const animatedContainerStyle = useAnimatedStyle(() => {\n return { transform: [{ translateX: translateXAnim.value }] };\n });\n\n const animatedBackdropStyle = useAnimatedStyle(() => {\n return { opacity: backdropOpacity.value };\n });\n\n const resolvedKeyExtractor = useMemo(() => {\n return keyExtractor ?? ((_: ItemT, index: number) => String(index));\n }, [keyExtractor]);\n\n const separator = listProps?.ItemSeparatorComponent ?? (() => <DefaultSeparator />);\n\n // Keep these in sync with the wrapper View around the FlatList (the one using StyleSheet.absoluteFill).\n // They shrink the *actual* visible list viewport inside the island.\n const listViewportPaddingTop = 24;\n const listViewportPaddingBottom = 24;\n\n const lastFocusedKeyRef = useRef<string | null>(null);\n const lastFocusedIndexRef = useRef<number | null>(null);\n const hasOpenedOnceRef = useRef(false);\n const suppressFocusRef = useRef(false);\n const listRef = useRef<FlatList<ItemT> | null>(null);\n const scrollYRef = useRef(0);\n const rafScheduledRef = useRef(false);\n const [measuredItemHeight, setMeasuredItemHeight] = useState<number | null>(null);\n const scrollYAnim = useSharedValue(0);\n const itemHeightAnim = useSharedValue(0);\n\n // Track focused item for the detail component\n const [focusedItemInfo, setFocusedItemInfo] = useState<{ item: ItemT; index: number } | null>(null);\n\n useEffect(() => {\n if (measuredItemHeight != null && measuredItemHeight > 0 && itemHeightAnim.value <= 0) {\n itemHeightAnim.value = measuredItemHeight;\n }\n }, [measuredItemHeight, itemHeightAnim]);\n\n // Add extra inset so the first/last items can be positioned in the *center* of the viewport.\n // IMPORTANT: don't add extra fixed padding on top of this, otherwise index 0 can never reach the center.\n const contentEdgeInset = useMemo(() => {\n const viewportHeight = Math.max(0, resolvedHeight - listViewportPaddingTop - listViewportPaddingBottom);\n const approxItemHalfHeight = measuredItemHeight ? measuredItemHeight / 2 : 20;\n return Math.max(0, Math.round(viewportHeight / 2 - approxItemHalfHeight));\n }, [measuredItemHeight, resolvedHeight]);\n const defaultViewabilityConfig = useMemo(() => {\n return {\n // Lower threshold so focus transitions don't require \"half an item\" to leave the viewport.\n itemVisiblePercentThreshold: 10,\n minimumViewTime: 0,\n waitForInteraction: false,\n };\n }, []);\n\n const emitFocus = (index: number) => {\n if (items.length === 0) return;\n const maxIndex = Math.max(0, items.length - 1);\n const clampedIndex = clamp(index, 0, maxIndex);\n const focusedKey = String(clampedIndex);\n\n if (focusedKey === lastFocusedKeyRef.current) return;\n\n lastFocusedKeyRef.current = focusedKey;\n lastFocusedIndexRef.current = clampedIndex;\n\n const focusInfo = { item: items[clampedIndex] as ItemT, index: clampedIndex };\n\n setFocusedItemInfo(focusInfo);\n onFocusedItemChange?.(focusInfo);\n\n if (effectiveExpanded) {\n try {\n void resolvedHaptics?.onFocusChange?.({ index: clampedIndex });\n } catch (e) {\n // Silently handle haptics errors\n }\n }\n };\n\n const recomputeFocus = () => {\n if (suppressFocusRef.current) return;\n if (items.length === 0) return;\n\n const itemH = measuredItemHeight ?? 0;\n if (itemH <= 0) return;\n\n // DefaultSeparator height is 12; if user provides a custom separator, stride becomes unknown,\n // so we conservatively treat separator height as 0.\n const separatorEstimate = listProps?.ItemSeparatorComponent ? 0 : 12;\n const stride = itemH + separatorEstimate;\n\n const viewportHeight = Math.max(0, resolvedHeight - listViewportPaddingTop - listViewportPaddingBottom);\n const centerY = scrollYRef.current + viewportHeight / 2;\n\n // First row's center is at: paddingTop + itemH/2\n const firstCenterY = contentEdgeInset + itemH / 2;\n const raw = (centerY - firstCenterY) / stride;\n const idx = Math.round(raw);\n emitFocus(idx);\n };\n\n const handleViewableItemsChanged = useMemo(() => {\n return (info: { viewableItems: Array<{ item: ItemT; index: number | null; key?: string }>; changed: any[] }) => {\n const viewable = (info?.viewableItems ?? []).filter((v) => v && v.index != null) as Array<{\n item: ItemT;\n index: number;\n key?: string;\n }>;\n\n // Preserve any caller-provided handler.\n (listProps as any)?.onViewableItemsChanged?.(info);\n\n const shouldReportFocus = !!onFocusedItemChange || !!resolvedHaptics?.onFocusChange;\n if (!shouldReportFocus) return;\n if (suppressFocusRef.current) return;\n\n // Viewability callbacks can temporarily report 0 items during fast scroll / mount.\n // Focus is driven by measured layouts + scroll position, so just request a recompute.\n if (viewable.length > 0) {\n recomputeFocus();\n }\n };\n }, [effectiveExpanded, listProps, onFocusedItemChange, resolvedHaptics]); // recomputeFocus uses refs\n\n const scrollToIndexCentered = (index: number, animated: boolean) => {\n const maxIndex = Math.max(0, items.length - 1);\n const clamped = clamp(index, 0, maxIndex);\n listRef.current?.scrollToIndex({ index: clamped, animated, viewPosition: 0.5 });\n };\n\n useEffect(() => {\n if (!effectiveExpanded) return;\n if (items.length === 0) return;\n\n // On first open, center on the first item (index 0) and focus it.\n // On subsequent opens, center on the last focused item.\n const target =\n hasOpenedOnceRef.current && lastFocusedIndexRef.current != null\n ? lastFocusedIndexRef.current\n : 0;\n\n suppressFocusRef.current = true;\n const t0 = setTimeout(() => {\n scrollToIndexCentered(target, false);\n // Ensure focus starts at the intended target after the programmatic scroll.\n emitFocus(target);\n const t1 = setTimeout(() => {\n suppressFocusRef.current = false;\n }, 50);\n return () => clearTimeout(t1);\n }, 0);\n\n hasOpenedOnceRef.current = true;\n return () => clearTimeout(t0);\n }, [effectiveExpanded, items.length]);\n\n // Swipe toward the pinned edge on the backdrop to close (uses PanResponder to avoid requiring RNGH).\n // If no backdrop is provided, we fall back to attaching the gesture to the island itself.\n const panResponder = useMemo(() => {\n return PanResponder.create({\n onMoveShouldSetPanResponder: (_evt, gestureState) => {\n if (!effectiveExpanded) return false;\n const dx = gestureState.dx;\n const dy = gestureState.dy;\n const should =\n resolvedPosition === \"right\"\n ? dx > 10 && Math.abs(dx) > Math.abs(dy)\n : dx < -10 && Math.abs(dx) > Math.abs(dy);\n return should;\n },\n onPanResponderRelease: (_evt, gestureState) => {\n if (!effectiveExpanded) return;\n const dx = gestureState.dx;\n const vx = gestureState.vx;\n const shouldClose = resolvedPosition === \"right\" ? dx > 60 && vx > 0 : dx < -60 && vx < 0;\n if (shouldClose) {\n setExpanded(false);\n }\n },\n onPanResponderTerminate: () => {\n // no-op\n },\n });\n }, [effectiveExpanded, setExpanded, resolvedPosition]);\n\n const panHandlers = backdropComponent ? undefined : panResponder.panHandlers;\n\n const islandContent = (\n <Animated.View\n {...panHandlers}\n style={[\n styles.container,\n {\n width: resolvedWidth,\n height: resolvedHeight,\n top: topPosition,\n ...(resolvedPosition === \"right\" ? { right: 0 } : { left: 0 }),\n },\n animatedContainerStyle,\n style,\n ]}\n >\n <View style={StyleSheet.absoluteFill}>\n <Canvas style={StyleSheet.absoluteFill} pointerEvents=\"none\">\n <Group clip={path}>\n <SkPathNode path={path} color={resolvedBackgroundColor} />\n </Group>\n </Canvas>\n\n <View\n style={[\n StyleSheet.absoluteFill,\n resolvedPosition === \"right\"\n ? { paddingTop: listViewportPaddingTop, paddingBottom: listViewportPaddingBottom, paddingLeft: 6, paddingRight: 0, borderRadius: 50 }\n : { paddingTop: listViewportPaddingTop, paddingBottom: listViewportPaddingBottom, paddingLeft: 0, paddingRight: 6, borderRadius: 50 },\n ]}\n pointerEvents=\"box-none\"\n >\n <FlatList\n {...listProps}\n ref={(r) => {\n listRef.current = r;\n }}\n data={items as unknown as ItemT[]}\n renderItem={({ item, index }: { item: ItemT; index: number }) => {\n const viewportHeight = Math.max(0, resolvedHeight - listViewportPaddingTop - listViewportPaddingBottom);\n const separatorHeight = listProps?.ItemSeparatorComponent ? 0 : 12;\n return (\n <ScaledItem\n index={index}\n scrollY={scrollYAnim}\n itemHeight={itemHeightAnim}\n viewportHeight={viewportHeight}\n separatorHeight={separatorHeight}\n >\n <View\n onLayout={(e) => {\n const { height } = e.nativeEvent.layout;\n if (height > 0 && itemHeightAnim.value <= 0) {\n itemHeightAnim.value = height;\n }\n if (measuredItemHeight == null && height > 0) {\n setMeasuredItemHeight(height);\n }\n }}\n >\n {renderItem({ item, index })}\n </View>\n </ScaledItem>\n );\n }}\n keyExtractor={resolvedKeyExtractor}\n showsVerticalScrollIndicator={listProps?.showsVerticalScrollIndicator ?? false}\n ItemSeparatorComponent={separator}\n viewabilityConfig={listProps?.viewabilityConfig ?? defaultViewabilityConfig}\n onViewableItemsChanged={handleViewableItemsChanged as any}\n onScroll={(e) => {\n scrollYRef.current = e.nativeEvent.contentOffset.y;\n scrollYAnim.value = e.nativeEvent.contentOffset.y;\n (listProps as any)?.onScroll?.(e);\n if (!rafScheduledRef.current) {\n rafScheduledRef.current = true;\n requestAnimationFrame(() => {\n rafScheduledRef.current = false;\n recomputeFocus();\n });\n }\n }}\n scrollEventThrottle={listProps?.scrollEventThrottle ?? 16}\n onScrollToIndexFailed={(info) => {\n (listProps as any)?.onScrollToIndexFailed?.(info);\n setTimeout(() => {\n scrollToIndexCentered(info.index, false);\n }, 50);\n }}\n contentContainerStyle={[\n { alignItems: \"center\", paddingTop: contentEdgeInset, paddingBottom: contentEdgeInset },\n listProps?.contentContainerStyle as any,\n ]}\n />\n </View>\n\n {resolvedHandleWidth > 0 && (\n <Pressable\n onPress={() => {\n onPress?.();\n toggleExpanded();\n }}\n style={[\n styles.handle,\n { width: resolvedHandleWidth },\n resolvedPosition === \"right\" ? styles.handleRight : styles.handleLeft,\n ]}\n hitSlop={10}\n />\n )}\n </View>\n </Animated.View>\n );\n\n // Render the focused item detail component\n const focusedItemDetailContent = useMemo(() => {\n if (!renderFocusedItemDetail || !focusedItemInfo) return null;\n return renderFocusedItemDetail({\n item: focusedItemInfo.item,\n index: focusedItemInfo.index,\n expanded: effectiveExpanded,\n setExpanded,\n });\n }, [renderFocusedItemDetail, focusedItemInfo, effectiveExpanded, setExpanded]);\n\n return (\n <>\n {backdropComponent && (\n <Animated.View\n style={[\n styles.backdrop,\n {\n width: screenWidth,\n height: screenHeight,\n },\n animatedBackdropStyle,\n ]}\n pointerEvents={effectiveExpanded ? \"auto\" : \"none\"}\n {...panResponder.panHandlers}\n >\n {backdropComponent}\n </Animated.View>\n )}\n {focusedItemDetailContent && (\n <Animated.View\n style={[\n styles.focusedItemDetail,\n {\n ...(resolvedPosition === \"right\"\n ? { right: resolvedWidth + focusedItemDetailGap }\n : { left: resolvedWidth + focusedItemDetailGap }),\n top: topPosition,\n height: resolvedHeight,\n },\n animatedBackdropStyle,\n ]}\n pointerEvents={effectiveExpanded ? \"auto\" : \"none\"}\n >\n {focusedItemDetailContent}\n </Animated.View>\n )}\n {islandContent}\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n position: \"absolute\",\n top: 0,\n left: 0,\n zIndex: 9998,\n },\n container: {\n position: \"absolute\",\n zIndex: 9999,\n },\n handle: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n backgroundColor: \"transparent\",\n },\n handleRight: {\n right: 0,\n },\n handleLeft: {\n left: 0,\n },\n focusedItemDetail: {\n position: \"absolute\",\n zIndex: 9999,\n justifyContent: \"center\",\n },\n});\n","import { useCallback, useContext, useMemo } from \"react\";\nimport type { SideIslandController } from \"../types/island\";\nimport { SideIslandContext } from \"../provider/side-island-provider\";\n\nexport function useSideIsland(): SideIslandController {\n const ctx = useContext(SideIslandContext);\n if (!ctx) {\n throw new Error(\"useSideIsland must be used within a SideIslandProvider\");\n }\n\n const open = useCallback(() => ctx.setExpanded(true), [ctx]);\n const close = useCallback(() => ctx.setExpanded(false), [ctx]);\n const toggle = useCallback(() => ctx.setExpanded(!ctx.expanded), [ctx]);\n\n return useMemo(\n () => ({\n expanded: ctx.expanded,\n setExpanded: ctx.setExpanded,\n open,\n close,\n toggle,\n config: ctx.config,\n }),\n [close, ctx.config, ctx.expanded, ctx.setExpanded, open, toggle]\n );\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@peersahab/side-island",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A Skia-powered side island overlay for React Native with built-in virtualized content.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"react-native",
|
|
8
|
+
"skia",
|
|
9
|
+
"ui",
|
|
10
|
+
"overlay",
|
|
11
|
+
"island",
|
|
12
|
+
"side-island"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/peersahab/side-island.git"
|
|
17
|
+
},
|
|
18
|
+
"author": "peersahab",
|
|
19
|
+
"homepage": "https://github.com/peersahab/side-island#readme",
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/peersahab/side-island/issues"
|
|
22
|
+
},
|
|
23
|
+
"main": "dist/index.js",
|
|
24
|
+
"module": "dist/index.mjs",
|
|
25
|
+
"types": "dist/index.d.ts",
|
|
26
|
+
"react-native": "dist/index.mjs",
|
|
27
|
+
"source": "src/index.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.mjs",
|
|
32
|
+
"require": "./dist/index.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE"
|
|
39
|
+
],
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@shopify/react-native-skia": ">=0.1.0",
|
|
42
|
+
"react": ">=18",
|
|
43
|
+
"react-native": ">=0.72",
|
|
44
|
+
"react-native-reanimated": ">=3"
|
|
45
|
+
},
|
|
46
|
+
"peerDependenciesMeta": {
|
|
47
|
+
"@shopify/react-native-skia": {
|
|
48
|
+
"optional": true
|
|
49
|
+
},
|
|
50
|
+
"react-native-reanimated": {
|
|
51
|
+
"optional": true
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/react": "^19.0.0",
|
|
56
|
+
"@types/react-native": "^0.72.0",
|
|
57
|
+
"@shopify/react-native-skia": "^2.4.14",
|
|
58
|
+
"rimraf": "^6.0.1",
|
|
59
|
+
"react-native": "^0.83.1",
|
|
60
|
+
"react-native-reanimated": "^3.17.5",
|
|
61
|
+
"tsup": "^8.3.5",
|
|
62
|
+
"typescript": "^5.7.2"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"clean": "rimraf dist",
|
|
66
|
+
"build": "tsup",
|
|
67
|
+
"prepublishOnly": "npm run build",
|
|
68
|
+
"pack:inspect": "npm pack --dry-run"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|