diff --git a/example/metro.config.js b/example/metro.config.js index 9439309..1feeb9e 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -12,7 +12,7 @@ const modules = Object.keys({ const defaultConfig = getDefaultConfig(__dirname); -module.exports = { +const config = { ...defaultConfig, projectRoot: __dirname, @@ -22,6 +22,28 @@ module.exports = { // So we block them at the root, and alias them to the versions in example's node_modules resolver: { ...defaultConfig.resolver, + // "exports": { + // ".": { + // "require": { + // "default": "./lib/commonjs/index.js" + // }, + // "import": { + // "default": "./lib/module/index.js" + // }, + // "react-native": "./src/index.ts" + // }, + // "./menu": { + // "require": { + // "default": "./lib/commonjs/overflowMenu/vendor/index.js" + // }, + // "import": { + // "default": "./lib/module/overflowMenu/vendor/index.js", + // "types": "./lib/typescript/overflowMenu/vendor/index.d.ts" + // }, + // "react-native": "./src/index/menu/index.ts" + // } + // }, + // unstable_enablePackageExports: true, blockList: exclusionList( modules.map( @@ -36,3 +58,5 @@ module.exports = { }, {}), }, }; +console.log({ config }); +module.exports = config; diff --git a/example/package.json b/example/package.json index b0c8e5e..fc5c306 100644 --- a/example/package.json +++ b/example/package.json @@ -2,7 +2,7 @@ "name": "example", "version": "1.0.0", "scripts": { - "start": "expo start --dev-client", + "start": "expo start --dev-client -c", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", @@ -15,12 +15,12 @@ "@react-navigation/native": "^6.1.6", "@react-navigation/native-stack": "^6.9.12", "@react-navigation/stack": "^6.3.16", - "expo": "~50.0.6", + "expo": "~50.0.15", "expo-splash-screen": "~0.26.4", "expo-status-bar": "~1.11.1", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.73.4", + "react-native": "0.73.6", "react-native-gesture-handler": "~2.14.0", "react-native-safe-area-context": "4.8.2", "react-native-screens": "~3.29.0", diff --git a/example/src/screens/TabScreenWithButtons.tsx b/example/src/screens/TabScreenWithButtons.tsx index e52467e..61055d5 100644 --- a/example/src/screens/TabScreenWithButtons.tsx +++ b/example/src/screens/TabScreenWithButtons.tsx @@ -1,11 +1,11 @@ import React from 'react'; import { - Divider, HeaderButtons, HiddenItem, Item, OverflowMenu, } from 'react-navigation-header-buttons'; +import { Divider } from 'react-navigation-header-buttons/menu'; import { MaterialHeaderButton } from '../components/MaterialHeaderButton'; import { ScreenBody } from '../components/ScreenBody'; import { Text } from 'react-native'; diff --git a/example/src/screens/UsageDifferentFontFamilies.tsx b/example/src/screens/UsageDifferentFontFamilies.tsx index f7d7155..41b0869 100644 --- a/example/src/screens/UsageDifferentFontFamilies.tsx +++ b/example/src/screens/UsageDifferentFontFamilies.tsx @@ -23,7 +23,7 @@ export function UsageDifferentFontFamilies({ alert('ionicons settings')} /> ) => { return ; diff --git a/example/src/screens/UsageWithOverflowComplex.tsx b/example/src/screens/UsageWithOverflowComplex.tsx index f4ca1dd..4517e9d 100644 --- a/example/src/screens/UsageWithOverflowComplex.tsx +++ b/example/src/screens/UsageWithOverflowComplex.tsx @@ -4,7 +4,6 @@ import { View, Text } from 'react-native'; import { HiddenItem, OverflowMenu, - Divider, overflowMenuPressHandlerActionSheet, overflowMenuPressHandlerPopupMenu, overflowMenuPressHandlerDropdownMenu, @@ -15,6 +14,7 @@ import { import type { ScreenProps } from '../NavTypes'; import { Button } from '../components/PaddedButton'; import { ScreenBody } from '../components/ScreenBody'; +import { Divider } from 'react-navigation-header-buttons/menu'; const ReusableItem = ({ title, disabled = false }: HiddenItemProps) => { return ( diff --git a/example/yarn.lock b/example/yarn.lock index 15f3a09..7786ba3 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -1412,17 +1412,17 @@ mv "~2" safe-json-stringify "~1" -"@expo/cli@0.17.5": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.17.5.tgz#b409d0ea330b3c1283b9d239bb747de9284d119e" - integrity sha512-9cMquL/5bBfV73CbZcWipk3KZSo8mBqdgvkoWCtEtnnlm/879ayxzMWjVIgT5yV4w+X7+N6KkBSUIIj4t9Xqew== +"@expo/cli@0.17.8": + version "0.17.8" + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.17.8.tgz#4abe0d8c604b73a6e1d0a10f34e993cbf1cbad42" + integrity sha512-yfkoghCltbGPDbRI71Qu3puInjXx4wO82+uhW82qbWLvosfIN7ep5Gr0Lq54liJpvlUG6M0IXM1GiGqcCyP12w== dependencies: "@babel/runtime" "^7.20.0" "@expo/code-signing-certificates" "0.0.5" "@expo/config" "~8.5.0" "@expo/config-plugins" "~7.8.0" "@expo/devcert" "^1.0.0" - "@expo/env" "~0.2.0" + "@expo/env" "~0.2.2" "@expo/image-utils" "^0.4.0" "@expo/json-file" "^8.2.37" "@expo/metro-config" "~0.17.0" @@ -1577,6 +1577,17 @@ dotenv-expand "~10.0.0" getenv "^1.0.0" +"@expo/env@~0.2.2": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@expo/env/-/env-0.2.3.tgz#59ffe29ffe58f8ee9ee99581a6cb6e003831d469" + integrity sha512-a+uJ/e6MAVxPVVN/HbXU5qxzdqrqDwNQYxCfxtAufgmd5VZj54e5f3TJA3LEEUW3pTSZR8xK0H0EtVN297AZnw== + dependencies: + chalk "^4.0.0" + debug "^4.3.4" + dotenv "~16.4.5" + dotenv-expand "~11.0.6" + getenv "^1.0.0" + "@expo/fingerprint@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.6.0.tgz#77366934673d4ecea37284109b4dd67f9e6a7487" @@ -1641,7 +1652,33 @@ json5 "^2.2.2" write-file-atomic "^2.3.0" -"@expo/metro-config@0.17.4", "@expo/metro-config@~0.17.0": +"@expo/metro-config@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.6.tgz#f1f4ef056aa357c1dba3841de465f5d319f17216" + integrity sha512-WaC1C+sLX/Wa7irwUigLhng3ckmXIEQefZczB8DfYmleV6uhfWWo2kz/HijFBpV7FKs2cW6u8J/aBQpFkxlcqg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.5" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + "@expo/config" "~8.5.0" + "@expo/env" "~0.2.2" + "@expo/json-file" "~8.3.0" + "@expo/spawn-async" "^1.7.2" + babel-preset-fbjs "^3.4.0" + chalk "^4.1.0" + debug "^4.3.2" + find-yarn-workspace-root "~2.0.0" + fs-extra "^9.1.0" + getenv "^1.0.0" + glob "^7.2.3" + jsc-safe-url "^0.2.4" + lightningcss "~1.19.0" + postcss "~8.4.32" + resolve-from "^5.0.0" + sucrase "3.34.0" + +"@expo/metro-config@~0.17.0": version "0.17.4" resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.4.tgz#3896d65f779963a8ce7069a4bae4546b6541219c" integrity sha512-PxqDMuVjXQeboa6Aj8kNj4iTxIpwpfoYlF803qOjf1LE1ePlREnWNwqy65ESCBnCmekYIO5hhm1Nksa+xCvuyg== @@ -1975,50 +2012,49 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@react-native-community/cli-clean@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz#d4f1730c3d22d816b4d513d330d5f3896a3f5921" - integrity sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A== +"@react-native-community/cli-clean@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz#e8a7910bebc97266fd5068649013a03958021fc4" + integrity sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig== dependencies: - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-tools" "12.3.6" chalk "^4.1.2" execa "^5.0.0" -"@react-native-community/cli-config@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.2.tgz#1a5de302de4d597ff2fc9932a032134b6ec4325f" - integrity sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ== +"@react-native-community/cli-config@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.6.tgz#5f0be68270217908a739c32e3155a0e354773251" + integrity sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew== dependencies: - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-tools" "12.3.6" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz#b2743876b03e560fbf5ef516e95387fcb6d91630" - integrity sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q== +"@react-native-community/cli-debugger-ui@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz#418027a1ae76850079684d309a732eb378c7f690" + integrity sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz#9e82b49f04ee03872b2975f26c8799cecac021ce" - integrity sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg== +"@react-native-community/cli-doctor@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz#f68b51bbc6554ff4837269d98e9e405044e6f1b9" + integrity sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ== dependencies: - "@react-native-community/cli-config" "12.3.2" - "@react-native-community/cli-platform-android" "12.3.2" - "@react-native-community/cli-platform-ios" "12.3.2" - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" envinfo "^7.10.0" execa "^5.0.0" hermes-profile-transformer "^0.0.6" - ip "^1.1.5" node-stream-zip "^1.9.1" ora "^5.4.1" semver "^7.5.2" @@ -2026,53 +2062,52 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz#5f266985fe32a37e9020e881460e9017870be2e5" - integrity sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA== +"@react-native-community/cli-hermes@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz#5ac2c9ee26c69e1ce6b5047ba0f399984a6dea16" + integrity sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ== dependencies: - "@react-native-community/cli-platform-android" "12.3.2" - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" - ip "^1.1.5" -"@react-native-community/cli-platform-android@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz#de54d89712f8ea95046d798ec274fd6caea70c34" - integrity sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg== +"@react-native-community/cli-platform-android@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz#e1103692c659ff0b72ee6f00b7c72578db7376ec" + integrity sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g== dependencies: - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-tools" "12.3.6" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.2.4" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz#07e298f69761424da85909790a43ec60ebfe6097" - integrity sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg== +"@react-native-community/cli-platform-ios@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz#e7decb5ee764f5fdc7a6ad1ba5e15de8929d54a5" + integrity sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg== dependencies: - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-tools" "12.3.6" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.0.12" glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz#7db7dc8939b821b9aeebdd5ee3293f3a0201a2ea" - integrity sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g== +"@react-native-community/cli-plugin-metro@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz#ae62de18e998478db60a3fe10dc746162c272dbd" + integrity sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg== -"@react-native-community/cli-server-api@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz#11df4e20ed72d59cf22adf77bd30aff3d6e70dc9" - integrity sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q== +"@react-native-community/cli-server-api@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz#cd78122954a02d22c7821c365938635b51ddd1bd" + integrity sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ== dependencies: - "@react-native-community/cli-debugger-ui" "12.3.2" - "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -2081,10 +2116,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz#d3362b04fba3f73ec82c5a493696b575acfb420c" - integrity sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ== +"@react-native-community/cli-tools@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz#c39965982347635dfaf1daa7b3c0133b3bd45e64" + integrity sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2097,27 +2132,27 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-types@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.2.tgz#0551c553c87701faae580097d7786dfff8ec2ef4" - integrity sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog== +"@react-native-community/cli-types@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.6.tgz#239de348800fe1ffba3eb1fe0edbeb9306981e57" + integrity sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.3.2": - version "12.3.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.2.tgz#002ae3683b9fe6b0a83a837f41d9db541ea7667f" - integrity sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ== - dependencies: - "@react-native-community/cli-clean" "12.3.2" - "@react-native-community/cli-config" "12.3.2" - "@react-native-community/cli-debugger-ui" "12.3.2" - "@react-native-community/cli-doctor" "12.3.2" - "@react-native-community/cli-hermes" "12.3.2" - "@react-native-community/cli-plugin-metro" "12.3.2" - "@react-native-community/cli-server-api" "12.3.2" - "@react-native-community/cli-tools" "12.3.2" - "@react-native-community/cli-types" "12.3.2" +"@react-native-community/cli@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.6.tgz#7a323b78725b959bb8a31cca1145918263ff3c8d" + integrity sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw== + dependencies: + "@react-native-community/cli-clean" "12.3.6" + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-doctor" "12.3.6" + "@react-native-community/cli-hermes" "12.3.6" + "@react-native-community/cli-plugin-metro" "12.3.6" + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-types" "12.3.6" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -2206,14 +2241,14 @@ mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/community-cli-plugin@0.73.16": - version "0.73.16" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.16.tgz#29dca91aa3e24c8cd534dbf3db5766509da92ea3" - integrity sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ== +"@react-native/community-cli-plugin@0.73.17": + version "0.73.17" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz#37b381a8b503a3296eaa6727e0c52ea8835add28" + integrity sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ== dependencies: - "@react-native-community/cli-server-api" "12.3.2" - "@react-native-community/cli-tools" "12.3.2" - "@react-native/dev-middleware" "0.73.7" + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native/dev-middleware" "0.73.8" "@react-native/metro-babel-transformer" "0.73.15" chalk "^4.0.0" execa "^5.1.1" @@ -2228,7 +2263,24 @@ resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== -"@react-native/dev-middleware@0.73.7", "@react-native/dev-middleware@^0.73.6": +"@react-native/dev-middleware@0.73.8": + version "0.73.8" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz#2e43722a00c7b8db753f747f40267cbad6caba4d" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/dev-middleware@^0.73.6": version "0.73.7" resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz#61d2bf08973d9a537fa3f2a42deeb13530d721ae" integrity sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg== @@ -4194,6 +4246,18 @@ dotenv-expand@~10.0.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== +dotenv-expand@~11.0.6: + version "11.0.6" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.6.tgz#f2c840fd924d7c77a94eff98f153331d876882d3" + integrity sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g== + dependencies: + dotenv "^16.4.4" + +dotenv@^16.4.4, dotenv@~16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + dotenv@~16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" @@ -4423,15 +4487,20 @@ expo-constants@~15.4.0: dependencies: "@expo/config" "~8.5.0" -expo-file-system@~16.0.0, expo-file-system@~16.0.6: +expo-file-system@~16.0.0: version "16.0.6" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.6.tgz#07a140a7bcb44b42bd3f0b465e7583cc7f7d7078" integrity sha512-ATCHL7nEg2WwKeamW/SDTR9jBEqM5wncFq594ftKS5QFmhKIrX48d9jyPFGnNq+6h8AGPg4QKh2KCA4OY49L4g== -expo-font@~11.10.2: - version "11.10.2" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.2.tgz#233195c4fa0321763bd89bd7919bf7271a439c3f" - integrity sha512-AE0Q0LiWiVosQ/jlKUPoWoob7p3GwYM2xmLoUkuopO9RYh9NL1hZKHiMKcWBZyDG8Gww1GtBQwh7ZREST8+jjQ== +expo-file-system@~16.0.8: + version "16.0.8" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.8.tgz#13c79a8e06e42a8e76e9297df6920597a011d989" + integrity sha512-yDbVT0TUKd7ewQjaY5THum2VRFx2n/biskGhkUmLh3ai21xjIVtaeIzHXyv9ir537eVgt4ReqDNWi7jcXjdUcA== + +expo-font@~11.10.3: + version "11.10.3" + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.3.tgz#a3115ebda8e09bd7cb8052619a4bbe606f0c17f4" + integrity sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ== dependencies: fontfaceobserver "^2.1.0" @@ -4452,10 +4521,10 @@ expo-modules-autolinking@1.10.3: find-up "^5.0.0" fs-extra "^9.1.0" -expo-modules-core@1.11.8: - version "1.11.8" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.8.tgz#b0bdb31e70e1e570b70a9613f4b6392306c99a80" - integrity sha512-rlctE3nCNLCGv3LosGQNaTuwGrr2SyQA+hOgci/0l+VRc0gFNtvl0gskph9C0tnN1jzBeb8rRZQYVj5ih1yxcA== +expo-modules-core@1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.13.tgz#a8e63ad844e966dce78dea40b50839af6c3bc518" + integrity sha512-2H5qrGUvmLzmJNPDOnovH1Pfk5H/S/V0BifBmOQyDc9aUh9LaDwkqnChZGIXv8ZHDW8JRlUW0QqyWxTggkbw1A== dependencies: invariant "^2.2.4" @@ -4481,24 +4550,24 @@ expo-status-bar@~1.11.1: resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.11.1.tgz#a11318741d361048c11db2b16c4364a79a74af30" integrity sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg== -expo@~50.0.6: - version "50.0.6" - resolved "https://registry.yarnpkg.com/expo/-/expo-50.0.6.tgz#36135b59e51a40a166d47de845da313fc0184da5" - integrity sha512-CVg0h9bmYeTWtw4EOL0HKNL+zu84YZl5nLWRPKrcpt8jox1VQQAYmvJGMdM5gSRxq5CFNLlWGxq9O8Zvfi1SOQ== +expo@~50.0.15: + version "50.0.15" + resolved "https://registry.yarnpkg.com/expo/-/expo-50.0.15.tgz#18c5c3ee0125fd42fe828b6791410eed68f7e74a" + integrity sha512-tsyRmMHjA8lPlM7AsqH1smSH8hzmn1+x/vsP+xgbKYJTGtYccdY/wsm6P84VJWeK5peWSVqrWNos+YuPqXKLSQ== dependencies: "@babel/runtime" "^7.20.0" - "@expo/cli" "0.17.5" + "@expo/cli" "0.17.8" "@expo/config" "8.5.4" "@expo/config-plugins" "7.8.4" - "@expo/metro-config" "0.17.4" + "@expo/metro-config" "0.17.6" "@expo/vector-icons" "^14.0.0" babel-preset-expo "~10.0.1" expo-asset "~9.0.2" - expo-file-system "~16.0.6" - expo-font "~11.10.2" + expo-file-system "~16.0.8" + expo-font "~11.10.3" expo-keep-awake "~12.8.2" expo-modules-autolinking "1.10.3" - expo-modules-core "1.11.8" + expo-modules-core "1.11.13" fbemitter "^3.0.0" whatwg-url-without-unicode "8.0.0-3" @@ -5296,11 +5365,6 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -7389,18 +7453,18 @@ react-native-web@~0.19.6: postcss-value-parser "^4.2.0" styleq "^0.1.3" -react-native@0.73.4: - version "0.73.4" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.4.tgz#81e07d4e7b6308c4649d5fa24038c0e87b17f2e1" - integrity sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg== +react-native@0.73.6: + version "0.73.6" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.6.tgz#ed4c675e205a34bd62c4ce8b9bd1ca5c85126d5b" + integrity sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA== dependencies: "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "12.3.2" - "@react-native-community/cli-platform-android" "12.3.2" - "@react-native-community/cli-platform-ios" "12.3.2" + "@react-native-community/cli" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" "@react-native/assets-registry" "0.73.1" "@react-native/codegen" "0.73.3" - "@react-native/community-cli-plugin" "0.73.16" + "@react-native/community-cli-plugin" "0.73.17" "@react-native/gradle-plugin" "0.73.4" "@react-native/js-polyfills" "0.73.1" "@react-native/normalize-colors" "0.73.2" diff --git a/package.json b/package.json index 0f3c362..3df9cca 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-navigation-header-buttons", "version": "11.2.1", - "description": "test", + "description": "Easily render header buttons for react-navigation", "main": "lib/commonjs/index", "module": "lib/module/index", "types": "lib/typescript/index.d.ts", @@ -31,7 +31,7 @@ "typecheck": "tsc --noEmit", "lint": "eslint \"**/*.{js,ts,tsx}\"", "prepack": "bob build", - "release": "release-it", + "release": "yarn prepack && release-it", "example": "yarn --cwd example", "bootstrap": "yarn example && yarn install" }, diff --git a/src/HeaderItems.tsx b/src/HeaderItems.tsx index 81f5d14..59dc258 100644 --- a/src/HeaderItems.tsx +++ b/src/HeaderItems.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; -import type { Props as MenuItemProps } from './overflowMenu/vendor/MenuItem'; +import type { Props as MenuItemProps } from './menu/MenuItem'; import { HeaderButtonComponentContext } from './HeaderButtonComponentContext'; import { useOverflowMenu } from './overflowMenu/OverflowMenuContext'; -import { MenuItem } from './overflowMenu/vendor/MenuItem'; +import { MenuItem } from './menu/MenuItem'; import { defaultRenderVisibleButton, type ItemProps } from './HeaderButton'; export type HiddenItemProps = MenuItemProps & { diff --git a/src/index.tsx b/src/index.ts similarity index 84% rename from src/index.tsx rename to src/index.ts index eac8870..0f0f81c 100644 --- a/src/index.tsx +++ b/src/index.ts @@ -23,7 +23,4 @@ export { } from './overflowMenu/OverflowMenuContext'; export { OverflowMenu } from './overflowMenu/OverflowMenu'; -export { Divider } from './overflowMenu/vendor/Divider'; -// TODO v5 - no need to export MenuItem probably -export { MenuItem } from './overflowMenu/vendor/MenuItem'; export { getHeaderMargin } from './ButtonsWrapper'; diff --git a/src/index/menu.ts b/src/index/menu.ts new file mode 100644 index 0000000..19411dc --- /dev/null +++ b/src/index/menu.ts @@ -0,0 +1,3 @@ +export { Divider } from '../menu/Divider'; +export { MenuItem } from '../menu/MenuItem'; +export { Menu } from '../menu/Menu'; diff --git a/src/overflowMenu/vendor/Divider.tsx b/src/menu/Divider.tsx similarity index 100% rename from src/overflowMenu/vendor/Divider.tsx rename to src/menu/Divider.tsx diff --git a/src/overflowMenu/vendor/Menu.tsx b/src/menu/Menu.tsx similarity index 99% rename from src/overflowMenu/vendor/Menu.tsx rename to src/menu/Menu.tsx index 0244836..44693bf 100644 --- a/src/overflowMenu/vendor/Menu.tsx +++ b/src/menu/Menu.tsx @@ -1,5 +1,3 @@ -// menu has a bunch of errors so typecheck is ignored but we want to keep flow syntax in here - import * as React from 'react'; import { Platform, diff --git a/src/overflowMenu/vendor/MenuItem.tsx b/src/menu/MenuItem.tsx similarity index 100% rename from src/overflowMenu/vendor/MenuItem.tsx rename to src/menu/MenuItem.tsx diff --git a/src/overflowMenu/OverflowMenuContext.tsx b/src/overflowMenu/OverflowMenuContext.tsx index dac3106..e015a81 100644 --- a/src/overflowMenu/OverflowMenuContext.tsx +++ b/src/overflowMenu/OverflowMenuContext.tsx @@ -1,6 +1,5 @@ -import { Dimensions } from 'react-native'; +import { Dimensions, type ViewProps } from 'react-native'; import { getDefaultSpaceAboveMenu } from './statusBarUtils'; -import { Menu } from './vendor/Menu'; import { useTheme } from '@react-navigation/native'; import { createContext, @@ -46,12 +45,20 @@ type Props = { children: ReactElement; stackType: 'native' | 'js'; spaceAboveMenu?: number; + OverflowMenu?: React.ComponentType<{ + visible: boolean; + onDismiss: () => void; + anchor: { x: number; y: number }; + children: ReactNode; + contentStyle?: ViewProps['style']; + }>; }; export const HeaderButtonsProvider = ({ children, spaceAboveMenu, stackType, + OverflowMenu, }: Props) => { const [menuState, setMenuState] = useState({ visible: false, @@ -75,6 +82,12 @@ export const HeaderButtonsProvider = ({ const presentMenu = useCallback( (params?: PresentMenuParam) => { + if (!OverflowMenu) { + console.warn( + 'You tried to open the overflow menu, but it is not set up. Pass ``OverflowMenu`` prop to ``HeaderButtonsProvider``.' + ); + return; + } const extraDelta = spaceAboveMenu ?? getDefaultSpaceAboveMenu(); setMenuState((prevState) => { @@ -94,7 +107,6 @@ export const HeaderButtonsProvider = ({ [spaceAboveMenu] ); - const { visible, position, elements } = menuState; const value = useMemo( () => ({ presentMenu, closeMenu }), [presentMenu, closeMenu] @@ -102,18 +114,22 @@ export const HeaderButtonsProvider = ({ const extraMarginValue = stackType === 'native' ? 'alreadyHandled' : 'toBeHandled'; + const { visible, position, elements } = menuState; + return ( {React.Children.only(children)} - - {elements} - + {OverflowMenu && ( + + {elements} + + )} ); diff --git a/tsconfig.json b/tsconfig.json index d239deb..3df4035 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "build", "paths": { - "react-navigation-header-buttons": ["./src/index"] + "react-navigation-header-buttons": ["./src/index"], + "react-navigation-header-buttons/menu": ["./src/index/menu"] }, "allowJs": true, "allowUnreachableCode": false, @@ -16,7 +17,7 @@ "dom" ], "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, "noImplicitUseStrict": false,