diff --git a/example/app.json b/example/app.json
index e8da504..5c11696 100644
--- a/example/app.json
+++ b/example/app.json
@@ -49,7 +49,8 @@
"android": {
"extraMavenRepos": [
"https://repository.map.naver.com/archive/maven",
- "https://devrepo.kakao.com/nexus/content/groups/public/"
+ "https://devrepo.kakao.com/nexus/content/groups/public/",
+ "https://devrepo.kakao.com/nexus/repository/kakaomap-releases/"
],
"minSdkVerson": 26,
"newArchEnabled": true
diff --git a/example/package.json b/example/package.json
index 62e78d5..78ee016 100644
--- a/example/package.json
+++ b/example/package.json
@@ -30,7 +30,7 @@
"expo-router": "3.5.4",
"expo-status-bar": "1.12.1",
"react": "18.2.0",
- "react-native": "0.74.1-rc.0",
+ "react-native": "0.74.1",
"react-native-flash-message": "^0.4.2",
"react-native-safe-area-context": "^4.10.1",
"react-native-screens": "^3.31.1",
@@ -40,9 +40,9 @@
"@babel/core": "^7.20.4",
"@babel/preset-env": "^7.20.4",
"@babel/runtime": "^7.24.4",
- "@react-native/babel-preset": "^0.74.81",
- "@react-native/metro-config": "^0.74.81",
- "@react-native/typescript-config": "^0.74.81",
+ "@react-native/babel-preset": "0.74.83",
+ "@react-native/metro-config": "0.74.83",
+ "@react-native/typescript-config": "0.74.83",
"babel-plugin-module-resolver": "^5.0.0",
"expo-build-properties": "~0.12.0"
},
diff --git a/example/src/app/_layout.tsx b/example/src/app/_layout.tsx
index e8d1963..87ef294 100644
--- a/example/src/app/_layout.tsx
+++ b/example/src/app/_layout.tsx
@@ -3,6 +3,7 @@ import FlashMessage from 'react-native-flash-message';
import { capitalize } from '@mj-studio/js-util';
import { useMount } from '@mj-studio/react-util';
import Core from '@react-native-kakao/core';
+import { KakaoMap } from '@react-native-kakao/map';
import { issueAccessTokenWithCodeWeb, setAccessTokenWeb } from '@react-native-kakao/user';
import { StyledSystemProvider } from '@react-native-styled-system/core';
import { Stack, useGlobalSearchParams } from 'expo-router';
@@ -39,6 +40,7 @@ export default function RootLayout() {
restApiKey: '8b32d258f3f3fb553d86cfaa20964077',
},
});
+ KakaoMap.initializeKakaoMapSDK('fb975c77483d1edbe69467fca6bb2a6e').then(console.log);
});
return (
diff --git a/example/src/app/index.tsx b/example/src/app/index.tsx
index ab0c199..cb7602f 100644
--- a/example/src/app/index.tsx
+++ b/example/src/app/index.tsx
@@ -90,6 +90,11 @@ export default function Page() {
);
}}
/>
+
+
+ {'@react-native-kakao/map'}
+
+
{'@react-native-kakao/user'}
diff --git a/example/src/app/map.tsx b/example/src/app/map.tsx
new file mode 100644
index 0000000..47c5d6b
--- /dev/null
+++ b/example/src/app/map.tsx
@@ -0,0 +1,47 @@
+import { useState } from 'react';
+import KakaoMapView from '@react-native-kakao/map';
+import type { Camera } from '@react-native-kakao/map/src/type/type';
+
+import { Box } from '../component/Box';
+import { Btn } from '../component/Btn';
+import { px } from '../util/px';
+
+const Cameras = {
+ Seolleung: {
+ lat: 37.50497126,
+ lng: 127.04905021,
+ zoomLevel: 14,
+ },
+ Gangnam: {
+ lat: 37.498040483,
+ lng: 127.02758183,
+ zoomLevel: 14,
+ },
+ Jeju: {
+ lat: 33.39530773,
+ lng: 126.54656715029,
+ zoomLevel: 8,
+ },
+} satisfies Record;
+
+export default function Page() {
+ const [camera, setCamera] = useState(Cameras.Gangnam);
+
+ return (
+
+
+
+ setCamera(Cameras.Gangnam)} />
+ setCamera(Cameras.Seolleung)} />
+
+
+ );
+}
diff --git a/example/tsconfig.json b/example/tsconfig.json
index 00f3ef7..5f88a90 100644
--- a/example/tsconfig.json
+++ b/example/tsconfig.json
@@ -7,6 +7,7 @@
{ "path": "../packages/navi" },
{ "path": "../packages/social" },
{ "path": "../packages/channel" },
+ { "path": "../packages/map" },
],
"compilerOptions": {
// Avoid expo-cli auto-generating a tsconfig
diff --git a/package.json b/package.json
index 02c2f0c..7a18fba 100644
--- a/package.json
+++ b/package.json
@@ -79,7 +79,7 @@
"lefthook": "^1.6.10",
"prettier": "3.2.5",
"react": "18.2.0",
- "react-native": "0.74.1-rc.0",
+ "react-native": "0.74.1",
"react-native-builder-bob": "^0.20.0",
"turbo": "1.13.3",
"typescript": "5.3.3",
diff --git a/packages/core/package.json b/packages/core/package.json
index 9086465..53021f3 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -120,7 +120,8 @@
"user": "2.22.0",
"navi": "2.22.0",
"friend": "2.22.0",
- "talk": "2.22.0"
+ "talk": "2.22.0",
+ "map": "2.10.4"
},
"android": {
"minSdk": 21,
@@ -134,7 +135,8 @@
"user": "2.20.1",
"navi": "2.20.1",
"friend": "2.20.1",
- "talk": "2.20.1"
+ "talk": "2.20.1",
+ "map": "2.10.3"
}
},
"gitHead": "57203ed1725b209e814da7cfbb71b36f52d24210",
diff --git a/packages/map/LICENSE b/packages/map/LICENSE
new file mode 100644
index 0000000..c76e593
--- /dev/null
+++ b/packages/map/LICENSE
@@ -0,0 +1,20 @@
+MIT License
+
+Copyright (c) 2024 MJ Studio
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/map/README.md b/packages/map/README.md
new file mode 100644
index 0000000..330f3c4
--- /dev/null
+++ b/packages/map/README.md
@@ -0,0 +1,42 @@
+
+
+
+
+
React Native Kakao Map
+
+
+
+
+
+
Native Kakao SDK All In One Solution
+
+
+Documentation
+
+
+## Documentation
+
+- [Quick Start](https://rnkakao.dev)
+
+## Contributing
+
+- [Contributing](https://github.com/mym0404/react-native-kakao/blob/main/CONTRIBUTING.md)
+- [Issues](https://github.com/mym0404/react-native-kakao/issues)
+- [PRs](https://github.com/mym0404/react-native-kakao/pulls)
+- [Documentation](https://rnkakao.dev)
+- [Code of Conduct](https://github.com/mym0404/react-native-kakao/blob/main/CODE_OF_CONDUCT.md)
+
+## License
+
+- See [LICENSE](/LICENSE)
+
+---
+
+
+
+
+
+
+ Built and maintained by MJ Studio.
+
+
diff --git a/packages/map/RNCKakaoMap.podspec b/packages/map/RNCKakaoMap.podspec
new file mode 100644
index 0000000..c8ccab5
--- /dev/null
+++ b/packages/map/RNCKakaoMap.podspec
@@ -0,0 +1,56 @@
+require "json"
+
+package = JSON.parse(File.read(File.join(__dir__, "package.json")))
+corePackage = JSON.parse(File.read(File.join(__dir__, "..", "core", "package.json")))
+sdk_version = corePackage['sdkVersions']['ios']['map']
+
+folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
+
+Pod::Spec.new do |s|
+ s.name = "RNCKakaoMap"
+ s.version = package["version"]
+ s.summary = package["description"]
+ s.homepage = package["homepage"]
+ s.license = package["license"]
+ s.authors = package["author"]
+
+ s.platforms = { :ios => min_ios_version_supported }
+ s.source = { :git => "https://github.com/mym0404/react-native-kakao.git", :tag => "#{s.version}" }
+
+ s.source_files = "ios/**/*.{h,m,mm}"
+
+ # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
+ # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
+ if respond_to?(:install_modules_dependencies, true)
+ install_modules_dependencies(s)
+ else
+ s.dependency "React-Core"
+
+ # Don't install the dependencies when we run `pod install` in the old architecture.
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
+ s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
+ s.pod_target_xcconfig = {
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
+ }
+ s.dependency "React-RCTFabric"
+ s.dependency "React-Codegen"
+ s.dependency "RCT-Folly"
+ s.dependency "RCTRequired"
+ s.dependency "RCTTypeSafety"
+ s.dependency "ReactCommon/turbomodule/core"
+ end
+ end
+
+ # Override Version by User
+ if defined?($KakaoMapSDKVersion)
+ Pod::UI.puts "#{s.name}: Using user specified Kakao SDK version '#{$KakaoMapSDKVersion}'"
+ sdk_version = $KakaoMapSDKVersion
+ end
+
+ s.dependency 'RNCKakaoCore'
+
+ # Kakao dependencies
+ s.dependency 'KakaoMapsSDK', sdk_version
+end
diff --git a/packages/map/android/.editorconfig b/packages/map/android/.editorconfig
new file mode 100644
index 0000000..63c5536
--- /dev/null
+++ b/packages/map/android/.editorconfig
@@ -0,0 +1,11 @@
+# editorconfig
+root = true
+
+[*.{kt,kts}]
+ktlint_code_style = ktlint_official
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/packages/map/android/build.gradle b/packages/map/android/build.gradle
new file mode 100644
index 0000000..7d3cc37
--- /dev/null
+++ b/packages/map/android/build.gradle
@@ -0,0 +1,117 @@
+apply from: file('./../../core/android/package-json.gradle')
+def Versions = project.ext.RNCKakaoSdkVersions
+Project coreProject = project.ext.getWorkspaceProject("core")
+
+buildscript {
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Kakao_kotlinVersion"]
+
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath "com.android.tools.build:gradle:7.2.1"
+ // noinspection DifferentKotlinGradleVersion
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+def isNewArchitectureEnabled() {
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
+}
+
+apply plugin: "com.android.library"
+apply plugin: "kotlin-android"
+
+if (isNewArchitectureEnabled()) {
+ apply plugin: "com.facebook.react"
+}
+
+def supportsNamespace() {
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
+ def major = parsed[0].toInteger()
+ def minor = parsed[1].toInteger()
+
+ // Namespace support was added in 7.3.0
+ return (major == 7 && minor >= 3) || major >= 8
+}
+
+android {
+ if (supportsNamespace()) {
+ namespace "net.mjstudio.rnkakao.map"
+
+ sourceSets {
+ main {
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
+ }
+ }
+ }
+
+ compileSdkVersion Versions.compileSdk
+
+ defaultConfig {
+ minSdkVersion Versions.minSdk
+ targetSdkVersion Versions.targetSdk
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
+ }
+
+ buildFeatures {
+ buildConfig true
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ }
+ }
+
+ lintOptions {
+ disable "GradleCompatible"
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+
+ sourceSets {
+ main {
+ if (isNewArchitectureEnabled()) {
+ java.srcDirs += [
+ "src/newarch",
+ // This is needed to build Kotlin project with NewArch enabled
+ "${project.buildDir}/generated/source/codegen/java"
+ ]
+ } else {
+ java.srcDirs += ["src/oldarch"]
+ }
+ }
+ }
+}
+
+repositories {
+ mavenCentral()
+ google()
+}
+
+dependencies {
+ // For < 0.71, this will be from the local maven repo
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
+ //noinspection GradleDynamicVersion
+ implementation "com.facebook.react:react-native:+"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}"
+
+ api coreProject
+ implementation "com.kakao.maps.open:android:${Versions.map}"
+}
+
+if (isNewArchitectureEnabled()) {
+ react {
+ jsRootDir = file("../src/")
+ libraryName = "RNCKakaoMap"
+ codegenJavaPackageName = "net.mjstudio.rnkakao.map"
+ }
+}
\ No newline at end of file
diff --git a/packages/map/android/gradle.properties b/packages/map/android/gradle.properties
new file mode 100644
index 0000000..1706dea
--- /dev/null
+++ b/packages/map/android/gradle.properties
@@ -0,0 +1 @@
+Kakao_kotlinVersion=1.7.0
diff --git a/packages/map/android/src/main/AndroidManifest.xml b/packages/map/android/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a5f88c0
--- /dev/null
+++ b/packages/map/android/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
diff --git a/packages/map/android/src/main/AndroidManifestNew.xml b/packages/map/android/src/main/AndroidManifestNew.xml
new file mode 100644
index 0000000..a2f47b6
--- /dev/null
+++ b/packages/map/android/src/main/AndroidManifestNew.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/packages/map/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapModule.kt b/packages/map/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapModule.kt
new file mode 100644
index 0000000..25f3907
--- /dev/null
+++ b/packages/map/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapModule.kt
@@ -0,0 +1,24 @@
+package net.mjstudio.rnkakao.map
+
+import com.facebook.react.bridge.Promise
+import com.facebook.react.bridge.ReactApplicationContext
+import com.kakao.vectormap.KakaoMapSdk
+
+class RNCKakaoMapModule internal constructor(context: ReactApplicationContext) :
+ KakaoMapSpec(context) {
+ override fun getName(): String {
+ return NAME
+ }
+
+ override fun initializeKakaoMapSDK(
+ appKey: String,
+ promise: Promise,
+ ) {
+ KakaoMapSdk.init(reactApplicationContext, appKey)
+ promise.resolve(42)
+ }
+
+ companion object {
+ const val NAME = "RNCKakaoMap"
+ }
+ }
diff --git a/packages/map/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapPackage.kt b/packages/map/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapPackage.kt
new file mode 100644
index 0000000..1ab0ec3
--- /dev/null
+++ b/packages/map/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapPackage.kt
@@ -0,0 +1,37 @@
+package net.mjstudio.rnkakao.map
+
+import com.facebook.react.TurboReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.module.model.ReactModuleInfo
+import com.facebook.react.module.model.ReactModuleInfoProvider
+
+class RNCKakaoMapPackage : TurboReactPackage() {
+ override fun getModule(
+ name: String,
+ reactContext: ReactApplicationContext,
+ ): NativeModule? {
+ return if (name == RNCKakaoMapModule.NAME) {
+ RNCKakaoMapModule(reactContext)
+ } else {
+ null
+ }
+ }
+
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
+ return ReactModuleInfoProvider {
+ val moduleInfos: MutableMap = HashMap()
+ val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
+ moduleInfos[RNCKakaoMapModule.NAME] =
+ ReactModuleInfo(
+ RNCKakaoMapModule.NAME,
+ RNCKakaoMapModule.NAME,
+ false, // canOverrideExistingModule
+ false, // needsEagerInit
+ false, // isCxxModule
+ isTurboModule, // isTurboModule
+ )
+ moduleInfos
+ }
+ }
+}
diff --git a/packages/map/android/src/newarch/KakaoMapSpec.kt b/packages/map/android/src/newarch/KakaoMapSpec.kt
new file mode 100644
index 0000000..e7bdfec
--- /dev/null
+++ b/packages/map/android/src/newarch/KakaoMapSpec.kt
@@ -0,0 +1,6 @@
+package net.mjstudio.rnkakao.map
+
+import com.facebook.react.bridge.ReactApplicationContext
+
+abstract class KakaoMapSpec internal constructor(context: ReactApplicationContext) :
+ NativeKakaoMapSpec(context)
diff --git a/packages/map/android/src/oldarch/KakaoMapSpec.kt b/packages/map/android/src/oldarch/KakaoMapSpec.kt
new file mode 100644
index 0000000..b6f4846
--- /dev/null
+++ b/packages/map/android/src/oldarch/KakaoMapSpec.kt
@@ -0,0 +1,13 @@
+package net.mjstudio.rnkakao.map
+
+import com.facebook.react.bridge.Promise
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.bridge.ReactContextBaseJavaModule
+
+abstract class KakaoMapSpec internal constructor(context: ReactApplicationContext) :
+ ReactContextBaseJavaModule(context) {
+ abstract fun initializeKakaoMapSDK(
+ appKey: String,
+ promise: Promise,
+ )
+ }
diff --git a/packages/map/ios/Component/Map/RNCKakaoMapView.h b/packages/map/ios/Component/Map/RNCKakaoMapView.h
new file mode 100644
index 0000000..24892f9
--- /dev/null
+++ b/packages/map/ios/Component/Map/RNCKakaoMapView.h
@@ -0,0 +1,24 @@
+//
+// RNCKakaoMapView.h
+// RNCKakaoMap
+//
+// Created by mj on 5/5/24.
+//
+
+#import "RCTFabricComponentsPlugins.h"
+#import "Util.h"
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+@interface RNCKakaoMapView : RCTViewComponentView
+
+@property(nonatomic, assign) double cameraAnimationDuration;
+
+@end
diff --git a/packages/map/ios/Component/Map/RNCKakaoMapView.mm b/packages/map/ios/Component/Map/RNCKakaoMapView.mm
new file mode 100644
index 0000000..bcffa7c
--- /dev/null
+++ b/packages/map/ios/Component/Map/RNCKakaoMapView.mm
@@ -0,0 +1,208 @@
+//
+// RNCKakaoMapView.m
+// RNCKakaoMap
+//
+// Created by mj on 5/5/24.
+//
+
+#import "RNCKakaoMapView.h"
+
+using namespace facebook::react;
+
+NSString* MAP_VIEW_NAME = @"mapview";
+NSString* MAP_VIEW_INFO_SKYVIEW_NAME = @"skyview";
+NSString* MAP_VIEW_INFO_MAP_NAME = @"map";
+NSString* APP_NAME = @"openmap";
+
+@interface RNCKakaoMapView ()
+@end
+
+@implementation RNCKakaoMapView {
+ BOOL _isAuthSuccess;
+ KMViewContainer* _container;
+ KMController* _controller;
+ BOOL _shouldForceUpdatePropsForInitialRender;
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ if (self = [super initWithFrame:frame]) {
+ static const auto defaultProps = std::make_shared();
+ _props = defaultProps;
+
+ _container = [[KMViewContainer alloc] init];
+ _controller = [[KMController alloc] initWithViewContainer:_container];
+ [_controller clearDiskCache];
+ _controller.delegate = self;
+
+ [_controller prepareEngine];
+ self.contentView = _container;
+ }
+
+ return self;
+}
+
+- (void)dealloc {
+ [_controller pauseEngine];
+ [_controller resetEngine];
+}
+
+- (KakaoMap*)map {
+ return static_cast([_controller getView:MAP_VIEW_NAME]);
+}
+
+- (void)updateProps:(Props::Shared const&)props oldProps:(Props::Shared const&)oldProps {
+ BOOL (^check)(BOOL) = ^(BOOL condition) {
+ if (!self.map)
+ return NO;
+ return self->_shouldForceUpdatePropsForInitialRender || condition;
+ };
+ const auto& p = *std::static_pointer_cast(_props);
+ const auto& n = *std::static_pointer_cast(props);
+
+ _cameraAnimationDuration = n.cameraAnimationDuration;
+
+ if (check(p.baseMapType != n.baseMapType))
+ [self.map changeViewInfoWithAppName:APP_NAME viewInfoName:getNsStr(n.baseMapType)];
+ if (check(p.overlays != n.overlays)) {
+ if (has(n.overlays, "hill_shading")) {
+ [self.map showOverlay:@"hill_shading"];
+ } else {
+ [self.map hideOverlay:@"hill_shading"];
+ }
+ if (has(n.overlays, "roadview_line")) {
+ [self.map showOverlay:@"roadview_line"];
+ } else {
+ [self.map hideOverlay:@"roadview_line"];
+ }
+ if (has(n.overlays, "bicycle_road")) {
+ [self.map showOverlay:@"bicycle_road"];
+ } else {
+ [self.map hideOverlay:@"bicycle_road"];
+ }
+ if (has(n.overlays, "hybrid")) {
+ [self.map showOverlay:@"hybrid"];
+ } else {
+ [self.map hideOverlay:@"hybrid"];
+ }
+ }
+
+ if (check(p.camera != n.camera))
+ [self moveCamera:n.camera noAnimation:_shouldForceUpdatePropsForInitialRender];
+ if (check(p.cameraMinLevel != n.cameraMinLevel && isValidNumber(n.cameraMinLevel)))
+ [self.map setCameraMinLevel:n.cameraMinLevel];
+ if (check(p.cameraMaxLevel != n.cameraMaxLevel && isValidNumber(n.cameraMaxLevel)))
+ [self.map setCameraMaxLevel:n.cameraMaxLevel];
+ if (check(p.buildingScale != n.buildingScale))
+ [self.map setBuildingScale:n.buildingScale];
+ if (check(p.poiEnabled != n.poiEnabled))
+ [self.map setPoiEnabled:n.poiEnabled];
+ if (check(p.poiClickable != n.poiClickable))
+ [self.map setPoiClickable:n.poiClickable];
+ if (check(p.poiScale != n.poiScale))
+ [self.map setPoiScale:n.poiScale == "small" ? PoiScaleTypeSmall
+ : n.poiScale == "regular" ? PoiScaleTypeRegular
+ : n.poiScale == "large" ? PoiScaleTypeLarge
+ : PoiScaleTypeXLarge];
+ if (check(p.language != n.language))
+ [self.map setLanguage:n.language == "en" ? @"en" : @"ko"];
+
+ if (check(p.isShowScaleBar != n.isShowScaleBar)) {
+ if (n.isShowScaleBar) {
+ [self.map showScaleBar];
+ } else {
+ [self.map hideScaleBar];
+ }
+ }
+ if (check(p.isShowCompass != n.isShowCompass)) {
+ if (n.isShowCompass) {
+ [self.map showCompass];
+ } else {
+ [self.map hideCompass];
+ }
+ }
+ [super updateProps:props oldProps:oldProps];
+ if (self.map && _shouldForceUpdatePropsForInitialRender) {
+ _shouldForceUpdatePropsForInitialRender = NO;
+ }
+}
+
+- (void)moveCamera:(const RNCKakaoMapViewCameraStruct&)c noAnimation:(BOOL)noAnimation {
+ CameraUpdate* update =
+ [CameraUpdate makeWithTarget:makePoint(c.lat, c.lng)
+ zoomLevel:getDoubleOrDefault(c.zoomLevel, self.map.zoomLevel)
+ rotation:getDoubleOrDefault(c.rotation, self.map.rotationAngle)
+ tilt:getDoubleOrDefault(c.tilt, self.map.tiltAngle)
+ mapView:self.map];
+
+ if (self.cameraAnimationDuration != 0 && !noAnimation) {
+ [self.map animateCameraWithCameraUpdate:update
+ options:CameraAnimationOptions{
+ .autoElevation = YES,
+ .consecutive = NO,
+ .durationInMillis =
+ (NSUInteger)self.cameraAnimationDuration}
+ callback:^{
+ }];
+ } else {
+ [self.map moveCamera:update
+ callback:^{
+ }];
+ }
+}
+
+- (void)addViews {
+ MapviewInfo* info = [[MapviewInfo alloc] initWithViewName:MAP_VIEW_NAME
+ appName:APP_NAME
+ viewInfoName:MAP_VIEW_INFO_MAP_NAME
+ defaultPosition:makePoint(37.402001, 127.108678)
+ defaultLevel:17
+ enabled:YES];
+ [_controller addView:info];
+}
+
+@end
+
+@implementation RNCKakaoMapView (MapControllerDelegate)
+- (void)authenticationSucceeded {
+ _isAuthSuccess = YES;
+ if (!_controller.isEngineActive) {
+ [_controller activateEngine];
+ }
+}
+- (void)authenticationFailed:(NSInteger)errorCode desc:(NSString*)desc {
+ NSLog(@"[RNCKakaoMapView] authenticationFailed %d, %@ retry...", (int)errorCode, desc);
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)),
+ dispatch_get_main_queue(), ^{
+ [self->_controller prepareEngine];
+ });
+}
+
+- (void)addViewSucceeded:(NSString*)viewName viewInfoName:(NSString*)viewInfoName {
+ if ([viewName isEqualToString:MAP_VIEW_NAME]) {
+ _shouldForceUpdatePropsForInitialRender = YES;
+ [self updateProps:_props oldProps:_props];
+ }
+}
+- (void)addViewFailed:(NSString*)viewName viewInfoName:(NSString*)viewInfoName {
+ NSLog(@"add view failed %@ %@", viewName, viewInfoName);
+}
+- (void)containerDidResized:(CGSize)size {
+ self.map.viewRect = CGRectMake(0, 0, size.width, size.height);
+}
+- (void)viewWillDestroyed:(ViewBase*)view {
+}
+@end
+
+@implementation RNCKakaoMapView (ReactNative)
+
+//- (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args {
+//}
+
+Class RNCKakaoMapViewCls(void) {
+ return RNCKakaoMapView.class;
+}
++ (ComponentDescriptorProvider)componentDescriptorProvider {
+ return concreteComponentDescriptorProvider();
+}
+
+@end
diff --git a/packages/map/ios/Component/Map/RNCKakaoMapViewManager.mm b/packages/map/ios/Component/Map/RNCKakaoMapViewManager.mm
new file mode 100644
index 0000000..cca9d57
--- /dev/null
+++ b/packages/map/ios/Component/Map/RNCKakaoMapViewManager.mm
@@ -0,0 +1,19 @@
+//
+// RNCKakaoMapViewManager.h
+// RNCKakaoMap
+//
+// Created by mj on 5/5/24.
+//
+
+#import
+#import
+#import
+
+@interface RNCKakaoMapViewManager : RCTViewManager
+@end
+
+@implementation RNCKakaoMapViewManager
+
+RCT_EXPORT_MODULE()
+
+@end
diff --git a/packages/map/ios/NativeModule/RNCKakaoMap.h b/packages/map/ios/NativeModule/RNCKakaoMap.h
new file mode 100644
index 0000000..45bf3bb
--- /dev/null
+++ b/packages/map/ios/NativeModule/RNCKakaoMap.h
@@ -0,0 +1,7 @@
+#import "RNCKakaoMapSpec.h"
+#import
+#import
+
+@interface RNCKakaoMap : NSObject
+
+@end
diff --git a/packages/map/ios/NativeModule/RNCKakaoMap.mm b/packages/map/ios/NativeModule/RNCKakaoMap.mm
new file mode 100644
index 0000000..c007163
--- /dev/null
+++ b/packages/map/ios/NativeModule/RNCKakaoMap.mm
@@ -0,0 +1,19 @@
+#import "RNCKakaoMap.h"
+
+@implementation RNCKakaoMap
+
+- (void)initializeKakaoMapSDK:(NSString*)appKey
+ resolve:(RCTPromiseResolveBlock)resolve
+ reject:(RCTPromiseRejectBlock)reject {
+ [SDKInitializer InitSDKWithAppKey:appKey];
+ resolve(@(42));
+}
+
+RCT_EXPORT_MODULE()
+
+- (std::shared_ptr)getTurboModule:
+ (const facebook::react::ObjCTurboModule::InitParams&)params {
+ return std::make_shared(params);
+}
+
+@end
diff --git a/packages/map/ios/NativeModule/RNCKakaoMapManager.swift b/packages/map/ios/NativeModule/RNCKakaoMapManager.swift
new file mode 100644
index 0000000..c516181
--- /dev/null
+++ b/packages/map/ios/NativeModule/RNCKakaoMapManager.swift
@@ -0,0 +1,7 @@
+// import Foundation
+// import React
+////import RNCKakaoCore
+//
+// @objc public class RNCKakaoMapManager: NSObject {
+// @objc public static let shared = RNCKakaoMapManager()
+// }
diff --git a/packages/map/ios/Util/Util.h b/packages/map/ios/Util/Util.h
new file mode 100644
index 0000000..a709426
--- /dev/null
+++ b/packages/map/ios/Util/Util.h
@@ -0,0 +1,97 @@
+//
+// Util.h
+// RNCKakaoMap
+//
+// Created by mj on 5/5/24.
+//
+
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+using namespace facebook::react;
+
+static inline BOOL isValidNumber(NSNumber* value) {
+ if (!value || [value isKindOfClass:[NSNull class]]) {
+ return false;
+ }
+
+ double INVALID = -123123123.0;
+
+ if ([value doubleValue] INVALID - 1) {
+ return false;
+ }
+
+ return true;
+}
+
+static inline BOOL isValidNumber(double value) {
+ return isValidNumber([NSNumber numberWithDouble:value]);
+}
+
+static inline NSNumber* getNumberOrNil(NSNumber* value) {
+ if (!isValidNumber(value)) {
+ return nil;
+ }
+
+ return value;
+}
+
+static inline double getDoubleOrDefault(NSNumber* value, double def) {
+ if (!isValidNumber(value)) {
+ return def;
+ }
+
+ return [value doubleValue];
+}
+
+static inline double getDoubleOrDefault(double value, double def) {
+ if (!isValidNumber(value)) {
+ return def;
+ }
+
+ return value;
+}
+
+static inline NSString* getNsStr(std::string str) {
+ return [NSString stringWithUTF8String:str.c_str()];
+}
+
+static inline BOOL isNotEmptyString(NSString* str) {
+ return ![str isKindOfClass:[NSNull class]] && str && str.length > 0;
+}
+
+static inline double clamp(double a, double b, double c) {
+ return MIN(MAX(a, b), c);
+}
+
+static inline UIColor* intToColor(NSInteger intToConvert) {
+ float alpha = ((intToConvert & 0xFF000000) >> 24) / 255.0;
+ float red = ((intToConvert & 0xFF0000) >> 16) / 255.0;
+ float green = ((intToConvert & 0x00FF00) >> 8) / 255.0;
+ float blue = (intToConvert & 0x0000FF) / 255.0;
+ return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+}
+
+static inline MapPoint* makePoint(double lat, double lng) {
+ return [[MapPoint alloc] initWithLongitude:lng latitude:lat];
+}
+
+static inline bool operator==(const RNCKakaoMapViewCameraStruct& c1,
+ const RNCKakaoMapViewCameraStruct& c2) {
+ return c1.lat == c2.lat && c1.lng == c2.lng && c1.zoomLevel == c2.zoomLevel &&
+ c1.rotation == c2.rotation && c1.tilt == c2.tilt;
+}
+
+#define all(X) (X).begin(), (X).end()
+#define sz(X) (int)(X).size()
+#define cntt(X, x) count(all(X), x)
+#define has(X, x) (std::find(all((X)), x) != (X).end())
+#define hass(X, x) ((X).find(x) != (X).end())
+#define hasstr(X, x) (!!strstr(&(X)[0], &(x)[0]))
+#define uniq(X) std::sort(all(X)), (X).resize(std::unique(all((X))) - (X).begin())
diff --git a/packages/map/package.json b/packages/map/package.json
new file mode 100644
index 0000000..4b4d575
--- /dev/null
+++ b/packages/map/package.json
@@ -0,0 +1,116 @@
+{
+ "name": "@react-native-kakao/map",
+ "description": "React Native Kakao Map SDK",
+ "version": "2.2.0",
+ "main": "lib/commonjs/index",
+ "module": "lib/module/index",
+ "types": "lib/typescript/src/index.d.ts",
+ "react-native": "src/index",
+ "source": "src/index",
+ "files": [
+ "src",
+ "lib",
+ "android",
+ "ios",
+ "cpp",
+ "*.podspec",
+ "!ios/build",
+ "!android/build",
+ "!android/gradle",
+ "!android/gradlew",
+ "!android/gradlew.bat",
+ "!android/local.properties",
+ "!**/__tests__",
+ "!**/__fixtures__",
+ "!**/__mocks__",
+ "!**/.*"
+ ],
+ "author": "MJ Studio (https://github.com/mym0404)",
+ "homepage": "https://rnkakao.dev",
+ "scripts": {
+ "test": "jest",
+ "prepare": "husky",
+ "release": "./script/release.sh",
+ "codegen:android": "cd ../../example/android && ./gradlew generateCodegenArtifactsFromSchema",
+ "codegen:ios": "node ../../example/node_modules/react-native/scripts/generate-codegen-artifacts.js --path example/ --outputPath ../../example/ios",
+ "codegen": "yarn codegen:android && yarn codegen:ios",
+ "prepack": "bob build",
+ "clean": "del-cli android/ lib"
+ },
+ "keywords": [
+ "react-native",
+ "kakao",
+ "kakao-sdk",
+ "typescript",
+ "javascript",
+ "react",
+ "expo",
+ "kakao-navi",
+ "kakao-navigation",
+ "kakao-api",
+ "login",
+ "auth"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/mym0404/react-native-kakao.git",
+ "directory": "packages/navi"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "registry": "https://registry.npmjs.org/",
+ "access": "public"
+ },
+ "devDependencies": {
+ "@react-native-kakao/core": "2.2.0",
+ "@types/invariant": "^2",
+ "@types/jest": "^29.5.5",
+ "@types/react": "^18.2.44",
+ "del-cli": "^5.1.0",
+ "jest": "^29.7.0",
+ "react": "18.2.0",
+ "react-native": "0.74.0",
+ "react-native-builder-bob": "^0.20.0",
+ "typescript": "5.1.6"
+ },
+ "peerDependencies": {
+ "@react-native-kakao/core": "2.2.0",
+ "react": "*",
+ "react-native": "*"
+ },
+ "workspaces": [
+ "example",
+ "packages/*"
+ ],
+ "jest": {
+ "preset": "react-native",
+ "modulePathIgnorePatterns": [
+ "/lib/"
+ ]
+ },
+ "react-native-builder-bob": {
+ "source": "src",
+ "output": "lib",
+ "targets": [
+ "commonjs",
+ "module",
+ [
+ "typescript",
+ {
+ "project": "tsconfig.build.json"
+ }
+ ]
+ ]
+ },
+ "codegenConfig": {
+ "name": "RNCKakaoMapSpec",
+ "type": "all",
+ "jsSrcsDir": "src",
+ "android": {
+ "javaPackageName": "net.mjstudio.rnkakao.map"
+ }
+ },
+ "dependencies": {
+ "@mj-studio/js-util": "1.1.3"
+ }
+}
diff --git a/packages/map/src/component/KakaoMapView.tsx b/packages/map/src/component/KakaoMapView.tsx
new file mode 100644
index 0000000..53c719e
--- /dev/null
+++ b/packages/map/src/component/KakaoMapView.tsx
@@ -0,0 +1,82 @@
+import { type ForwardedRef, forwardRef, useImperativeHandle, useMemo } from 'react';
+import type { ViewProps } from 'react-native';
+import { kAssert } from '@react-native-kakao/core';
+
+import NativeKakaoMapComponent from '../spec/RNCKakaoMapViewNativeComponent';
+import type { Camera } from '../type/type';
+import { Const } from '../util/Const';
+import { nullCamera } from '../util/Util';
+
+interface KakaoMapProps extends ViewProps {
+ baseMapType?: 'map' | 'skyview';
+ overlays?: ('hill_shading' | 'roadview_line' | 'bicycle_road' | 'hybrid')[];
+ camera?: Camera;
+ initialCamera?: Camera;
+ cameraMinLevel?: number;
+ cameraMaxLevel?: number;
+ cameraAnimationDuration?: number;
+
+ buildingScale?: number;
+ poiEnabled?: boolean;
+ poiClickable?: boolean;
+ poiScale?: 'small' | 'regular' | 'large' | 'xlarge';
+ language?: 'ko' | 'en';
+
+ isShowScaleBar?: boolean;
+ isShowCompass?: boolean;
+}
+interface KakaoMapRef {}
+
+const KakaoMapView = forwardRef(
+ (
+ {
+ baseMapType = 'map',
+ buildingScale = 0.5,
+ poiEnabled = true,
+ poiClickable = true,
+ poiScale = 'regular',
+ language,
+ overlays,
+ camera: cameraProp,
+ cameraMinLevel = Const.nullNumber,
+ cameraMaxLevel = Const.nullNumber,
+ cameraAnimationDuration = 0,
+ isShowScaleBar = true,
+ isShowCompass = true,
+ ...rest
+ }: KakaoMapProps,
+ ref: ForwardedRef,
+ ) => {
+ kAssert(
+ buildingScale >= 0 && buildingScale <= 1,
+ '[KakaoMapView] buildingScale range should be 0..1',
+ );
+ useImperativeHandle(ref, () => ({}), []);
+
+ const camera: Camera = useMemo(() => {
+ return { ...nullCamera, ...cameraProp };
+ }, [cameraProp]);
+
+ return (
+
+ );
+ },
+);
+
+export { KakaoMapView };
+export type { KakaoMapProps, KakaoMapRef };
diff --git a/packages/map/src/index.ts b/packages/map/src/index.ts
new file mode 100644
index 0000000..1cc6a4d
--- /dev/null
+++ b/packages/map/src/index.ts
@@ -0,0 +1,43 @@
+import { Platform } from 'react-native';
+
+import type { KakaoMapProps, KakaoMapRef } from './component/KakaoMapView';
+import { KakaoMapView } from './component/KakaoMapView';
+import type { Spec } from './spec/NativeKakaoMap';
+
+const LINKING_ERROR =
+ "The package '@react-native-kakao/map' doesn't seem to be linked. Make sure: \n\n" +
+ Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
+ '- You rebuilt the app after installing the package\n' +
+ '- You are not using Expo Go\n';
+
+const isTurboModuleEnabled = global.__turboModuleProxy != null;
+
+if (!isTurboModuleEnabled) {
+ throw new Error('The package @react-native-kakao/map only supports fabric');
+}
+
+const Module = require('./spec/NativeKakaoMap').default;
+
+const Native: Spec = Module
+ ? Module
+ : new Proxy(
+ {},
+ {
+ get() {
+ throw new Error(LINKING_ERROR);
+ },
+ },
+ );
+// todo remove
+console.log(Native);
+
+const KakaoMap = {
+ initializeKakaoMapSDK: async (appKey: string) => {
+ return await Native.initializeKakaoMapSDK(appKey);
+ },
+};
+export default KakaoMapView;
+export type KakaoMapAPI = typeof KakaoMap;
+
+export { KakaoMapView, KakaoMap };
+export type { KakaoMapProps, KakaoMapRef };
diff --git a/packages/map/src/spec/NativeKakaoMap.ts b/packages/map/src/spec/NativeKakaoMap.ts
new file mode 100644
index 0000000..06cd790
--- /dev/null
+++ b/packages/map/src/spec/NativeKakaoMap.ts
@@ -0,0 +1,8 @@
+import type { TurboModule } from 'react-native';
+import { TurboModuleRegistry } from 'react-native';
+
+export interface Spec extends TurboModule {
+ initializeKakaoMapSDK(appKey: string): Promise;
+}
+
+export default TurboModuleRegistry.getEnforcing('RNCKakaoMap');
diff --git a/packages/map/src/spec/RNCKakaoMapViewNativeComponent.ts b/packages/map/src/spec/RNCKakaoMapViewNativeComponent.ts
new file mode 100644
index 0000000..85a6f84
--- /dev/null
+++ b/packages/map/src/spec/RNCKakaoMapViewNativeComponent.ts
@@ -0,0 +1,38 @@
+import type { ViewProps } from 'react-native';
+import type { Double } from 'react-native/Libraries/Types/CodegenTypes';
+import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
+import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
+
+interface Camera {
+ lat: Double;
+ lng: Double;
+ tilt?: Double;
+ rotation?: Double;
+ zoomLevel?: Double;
+}
+interface Props extends ViewProps {
+ buildingScale?: Double;
+ overlays?: ReadonlyArray;
+ poiEnabled?: boolean;
+ poiClickable?: boolean;
+ poiScale?: string;
+ language?: string;
+ baseMapType?: string;
+ camera?: Camera;
+ initialCamera?: Camera;
+ cameraMinLevel?: Double;
+ cameraMaxLevel?: Double;
+ cameraAnimationDuration?: Double;
+
+ isShowScaleBar?: boolean;
+ isShowCompass?: boolean;
+}
+
+// type ComponentType = HostComponent;
+
+interface NativeCommands {}
+
+export default codegenNativeComponent('RNCKakaoMapView');
+export const Commands: NativeCommands = codegenNativeCommands({
+ supportedCommands: [],
+});
diff --git a/packages/map/src/type/type.ts b/packages/map/src/type/type.ts
new file mode 100644
index 0000000..bd55a4d
--- /dev/null
+++ b/packages/map/src/type/type.ts
@@ -0,0 +1,7 @@
+export interface Camera {
+ lat: number;
+ lng: number;
+ tilt?: number;
+ rotation?: number;
+ zoomLevel?: number;
+}
diff --git a/packages/map/src/util/Const.ts b/packages/map/src/util/Const.ts
new file mode 100644
index 0000000..eb24892
--- /dev/null
+++ b/packages/map/src/util/Const.ts
@@ -0,0 +1,7 @@
+export const Const = {
+ /**
+ * ios: codegen generate struct number fields with default value zero.
+ * in some cases, we should check it is invalid value instead of checking is zero.
+ */
+ nullNumber: -123123123,
+} satisfies (Record & {}) & {};
diff --git a/packages/map/src/util/Util.ts b/packages/map/src/util/Util.ts
new file mode 100644
index 0000000..2234ec4
--- /dev/null
+++ b/packages/map/src/util/Util.ts
@@ -0,0 +1,11 @@
+import type { Camera } from '../type/type';
+
+import { Const } from './Const';
+
+export const nullCamera: Required = {
+ lat: Const.nullNumber,
+ lng: Const.nullNumber,
+ tilt: Const.nullNumber,
+ rotation: Const.nullNumber,
+ zoomLevel: Const.nullNumber,
+};
diff --git a/packages/map/tsconfig.build.json b/packages/map/tsconfig.build.json
new file mode 100644
index 0000000..543a787
--- /dev/null
+++ b/packages/map/tsconfig.build.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "paths": {}
+ }
+}
diff --git a/packages/map/tsconfig.json b/packages/map/tsconfig.json
new file mode 100644
index 0000000..56626c3
--- /dev/null
+++ b/packages/map/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig",
+ "references": [
+ {
+ "path": "../core"
+ }
+ ],
+ "compilerOptions": {
+ "rootDir": ".",
+ "outDir": "./lib/typescript"
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 7e2c2b3..73457cf 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4390,6 +4390,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-clean@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-clean@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ execa: "npm:^5.0.0"
+ fast-glob: "npm:^3.3.2"
+ checksum: 10/430d624148d3cb55c340958792ead681bd5d005901b7bc59afc8908d780ebece549475645321a177c427f6e99fe695931af01017e808f03f2b402b55761b2592
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-config@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-config@npm:12.3.6"
@@ -4418,6 +4430,20 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-config@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-config@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ cosmiconfig: "npm:^5.1.0"
+ deepmerge: "npm:^4.3.0"
+ fast-glob: "npm:^3.3.2"
+ joi: "npm:^17.2.1"
+ checksum: 10/66d2b1df2049ab72fc5925926bbffa6ea8e8b5088d67b6a53699c4c2afcc686d2663e7a74e72b0d47d1997a3f72d6076d1d84292204f220d01fa386eeab911f5
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-debugger-ui@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-debugger-ui@npm:12.3.6"
@@ -4436,6 +4462,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-debugger-ui@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-debugger-ui@npm:13.6.6"
+ dependencies:
+ serve-static: "npm:^1.13.1"
+ checksum: 10/90b2cf006b1635abaa4cb7ead1a9784e05bd33bd97eac26c662dfe5934c4fabc4802f94a9c2a1f6ce71f400efad237ec476762e368b9f4505f1d822947821367
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-doctor@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-doctor@npm:12.3.6"
@@ -4485,6 +4520,31 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-doctor@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-doctor@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-config": "npm:13.6.6"
+ "@react-native-community/cli-platform-android": "npm:13.6.6"
+ "@react-native-community/cli-platform-apple": "npm:13.6.6"
+ "@react-native-community/cli-platform-ios": "npm:13.6.6"
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ command-exists: "npm:^1.2.8"
+ deepmerge: "npm:^4.3.0"
+ envinfo: "npm:^7.10.0"
+ execa: "npm:^5.0.0"
+ hermes-profile-transformer: "npm:^0.0.6"
+ node-stream-zip: "npm:^1.9.1"
+ ora: "npm:^5.4.1"
+ semver: "npm:^7.5.2"
+ strip-ansi: "npm:^5.2.0"
+ wcwidth: "npm:^1.0.1"
+ yaml: "npm:^2.2.1"
+ checksum: 10/d55c51e1ee39bf7fd201a5a0ba22246dee4c0ba00fcf39bacbe682beda1f982ba1dd55b91fb0567eefb37d8ff86a67e622742a538bb89adbd4bdebf40a14a635
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-hermes@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-hermes@npm:12.3.6"
@@ -4509,6 +4569,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-hermes@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-hermes@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-platform-android": "npm:13.6.6"
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ hermes-profile-transformer: "npm:^0.0.6"
+ checksum: 10/8c7645e39914491d4490480655255826b5b0083223dd8bc07200eb553d0285b1faf8388820710a83874a0ae830aef581c33a70ec6ec9bc8b11bf3b3da5251f12
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-platform-android@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-platform-android@npm:12.3.6"
@@ -4537,6 +4609,20 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-platform-android@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-platform-android@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ execa: "npm:^5.0.0"
+ fast-glob: "npm:^3.3.2"
+ fast-xml-parser: "npm:^4.2.4"
+ logkitty: "npm:^0.7.1"
+ checksum: 10/4326695026cbc99ab1f55a527f2cf905fc522ed31e5c68cfd03f81ed92746b958df9cad01d050af0bb0d5d557585c0e3b0793f7d7fffe46b99a4c1f64d53556f
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-platform-apple@npm:13.6.4":
version: 13.6.4
resolution: "@react-native-community/cli-platform-apple@npm:13.6.4"
@@ -4551,6 +4637,20 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-platform-apple@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-platform-apple@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ execa: "npm:^5.0.0"
+ fast-glob: "npm:^3.3.2"
+ fast-xml-parser: "npm:^4.0.12"
+ ora: "npm:^5.4.1"
+ checksum: 10/c776ec3583cd75a70c42c16c534e8977ab807d266b8dc1975d345c0f4c24f63cf001f75864c2297ed3234b1b72b55834caa158792b9b1cb0daede88cc9cd1d56
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-platform-ios@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-platform-ios@npm:12.3.6"
@@ -4574,6 +4674,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-platform-ios@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-platform-ios@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-platform-apple": "npm:13.6.6"
+ checksum: 10/bcaf4dc06cb330d1538962afbcf1e9046cc0dc09f7fec16c0e68ea5575b9f215ab2dfc98190cf4333f52f647cb960c9593465bd0ab500122dfda03968a40b16c
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-plugin-metro@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-plugin-metro@npm:12.3.6"
@@ -4615,6 +4724,23 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-server-api@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-server-api@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-debugger-ui": "npm:13.6.6"
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ compression: "npm:^1.7.1"
+ connect: "npm:^3.6.5"
+ errorhandler: "npm:^1.5.1"
+ nocache: "npm:^3.0.1"
+ pretty-format: "npm:^26.6.2"
+ serve-static: "npm:^1.13.1"
+ ws: "npm:^6.2.2"
+ checksum: 10/48256f9b09d7e80e856ed986eeb92ea2ebd0a5b5a87383752283e8444e192ea8b55eb0890ac708a5922982551a05a2cbbf905c1665b155505eb4430a5384ccf1
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-tools@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-tools@npm:12.3.6"
@@ -4652,6 +4778,25 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-tools@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-tools@npm:13.6.6"
+ dependencies:
+ appdirsjs: "npm:^1.2.4"
+ chalk: "npm:^4.1.2"
+ execa: "npm:^5.0.0"
+ find-up: "npm:^5.0.0"
+ mime: "npm:^2.4.1"
+ node-fetch: "npm:^2.6.0"
+ open: "npm:^6.2.0"
+ ora: "npm:^5.4.1"
+ semver: "npm:^7.5.2"
+ shell-quote: "npm:^1.7.3"
+ sudo-prompt: "npm:^9.0.0"
+ checksum: 10/fe82639e00b46406f410c85fb9a67e6120e22996e66b819f62f9e0f2e10e9407d6736536374d82be7b3f17a9468cbeab995e7c57961540441a96394d437fa0ea
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli-types@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli-types@npm:12.3.6"
@@ -4670,6 +4815,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli-types@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli-types@npm:13.6.6"
+ dependencies:
+ joi: "npm:^17.2.1"
+ checksum: 10/f2c8ffcd2e68df552687d687cab663b5c6bf9c2b807ba156eecde109ffd08cad5aa179aeb482d6922a8adce59e14deba67e7916ed077da8986a0ab7a0a9a49c9
+ languageName: node
+ linkType: hard
+
"@react-native-community/cli@npm:12.3.6":
version: 12.3.6
resolution: "@react-native-community/cli@npm:12.3.6"
@@ -4725,6 +4879,33 @@ __metadata:
languageName: node
linkType: hard
+"@react-native-community/cli@npm:13.6.6":
+ version: 13.6.6
+ resolution: "@react-native-community/cli@npm:13.6.6"
+ dependencies:
+ "@react-native-community/cli-clean": "npm:13.6.6"
+ "@react-native-community/cli-config": "npm:13.6.6"
+ "@react-native-community/cli-debugger-ui": "npm:13.6.6"
+ "@react-native-community/cli-doctor": "npm:13.6.6"
+ "@react-native-community/cli-hermes": "npm:13.6.6"
+ "@react-native-community/cli-server-api": "npm:13.6.6"
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ "@react-native-community/cli-types": "npm:13.6.6"
+ chalk: "npm:^4.1.2"
+ commander: "npm:^9.4.1"
+ deepmerge: "npm:^4.3.0"
+ execa: "npm:^5.0.0"
+ find-up: "npm:^4.1.0"
+ fs-extra: "npm:^8.1.0"
+ graceful-fs: "npm:^4.1.3"
+ prompts: "npm:^2.4.2"
+ semver: "npm:^7.5.2"
+ bin:
+ react-native: build/bin.js
+ checksum: 10/a0a27bb471107a818f56a41969bf4298b9bcba5054ac5a6258c2d6b698797f3acfbef7d9c18960706bcce39f751adcae5a8d7a3ac908d22eefa4b88de82db46d
+ languageName: node
+ linkType: hard
+
"@react-native-kakao/channel@workspace:packages/channel":
version: 0.0.0-use.local
resolution: "@react-native-kakao/channel@workspace:packages/channel"
@@ -4770,6 +4951,28 @@ __metadata:
languageName: unknown
linkType: soft
+"@react-native-kakao/map@workspace:packages/map":
+ version: 0.0.0-use.local
+ resolution: "@react-native-kakao/map@workspace:packages/map"
+ dependencies:
+ "@mj-studio/js-util": "npm:1.1.3"
+ "@react-native-kakao/core": "npm:2.2.0"
+ "@types/invariant": "npm:^2"
+ "@types/jest": "npm:^29.5.5"
+ "@types/react": "npm:^18.2.44"
+ del-cli: "npm:^5.1.0"
+ jest: "npm:^29.7.0"
+ react: "npm:18.2.0"
+ react-native: "npm:0.74.0"
+ react-native-builder-bob: "npm:^0.20.0"
+ typescript: "npm:5.1.6"
+ peerDependencies:
+ "@react-native-kakao/core": 2.2.0
+ react: "*"
+ react-native: "*"
+ languageName: unknown
+ linkType: soft
+
"@react-native-kakao/navi@workspace:packages/navi":
version: 0.0.0-use.local
resolution: "@react-native-kakao/navi@workspace:packages/navi"
@@ -4887,7 +5090,14 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/assets-registry@npm:0.74.82, @react-native/assets-registry@npm:~0.74.82":
+"@react-native/assets-registry@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/assets-registry@npm:0.74.83"
+ checksum: 10/930d97c5c595d63810cda11f87125bfc11e91337a6f98cd33f72fcf1279fb016491b86232ed0523e2432d2a17f7a9f2abbe28547e70da42c6b341768a399defd
+ languageName: node
+ linkType: hard
+
+"@react-native/assets-registry@npm:~0.74.82":
version: 0.74.82
resolution: "@react-native/assets-registry@npm:0.74.82"
checksum: 10/507175b593a90cb881ae730d69247e1942f066f11efa0aba33c5f59ba85f41f0a9bb6af64fad2d38dec22dc340bad42df6bb9c2f54c6f05dcd9ab848b7a582e7
@@ -4921,6 +5131,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/babel-plugin-codegen@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/babel-plugin-codegen@npm:0.74.83"
+ dependencies:
+ "@react-native/codegen": "npm:0.74.83"
+ checksum: 10/c82bf76611e479723c7722a1aa7aa244f8e496c500bbd3894ce182a898173671b3443e528eb843b5a77320fdcf8798cc66e4ad025dc5ac98be3b4ab680a31c6c
+ languageName: node
+ linkType: hard
+
"@react-native/babel-preset@npm:0.73.21":
version: 0.73.21
resolution: "@react-native/babel-preset@npm:0.73.21"
@@ -4973,7 +5192,7 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/babel-preset@npm:0.74.81, @react-native/babel-preset@npm:^0.74.81":
+"@react-native/babel-preset@npm:0.74.81":
version: 0.74.81
resolution: "@react-native/babel-preset@npm:0.74.81"
dependencies:
@@ -5026,7 +5245,60 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/babel-preset@npm:0.74.82, @react-native/babel-preset@npm:~0.74.82":
+"@react-native/babel-preset@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/babel-preset@npm:0.74.83"
+ dependencies:
+ "@babel/core": "npm:^7.20.0"
+ "@babel/plugin-proposal-async-generator-functions": "npm:^7.0.0"
+ "@babel/plugin-proposal-class-properties": "npm:^7.18.0"
+ "@babel/plugin-proposal-export-default-from": "npm:^7.0.0"
+ "@babel/plugin-proposal-logical-assignment-operators": "npm:^7.18.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.18.0"
+ "@babel/plugin-proposal-numeric-separator": "npm:^7.0.0"
+ "@babel/plugin-proposal-object-rest-spread": "npm:^7.20.0"
+ "@babel/plugin-proposal-optional-catch-binding": "npm:^7.0.0"
+ "@babel/plugin-proposal-optional-chaining": "npm:^7.20.0"
+ "@babel/plugin-syntax-dynamic-import": "npm:^7.8.0"
+ "@babel/plugin-syntax-export-default-from": "npm:^7.0.0"
+ "@babel/plugin-syntax-flow": "npm:^7.18.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.0.0"
+ "@babel/plugin-syntax-optional-chaining": "npm:^7.0.0"
+ "@babel/plugin-transform-arrow-functions": "npm:^7.0.0"
+ "@babel/plugin-transform-async-to-generator": "npm:^7.20.0"
+ "@babel/plugin-transform-block-scoping": "npm:^7.0.0"
+ "@babel/plugin-transform-classes": "npm:^7.0.0"
+ "@babel/plugin-transform-computed-properties": "npm:^7.0.0"
+ "@babel/plugin-transform-destructuring": "npm:^7.20.0"
+ "@babel/plugin-transform-flow-strip-types": "npm:^7.20.0"
+ "@babel/plugin-transform-function-name": "npm:^7.0.0"
+ "@babel/plugin-transform-literals": "npm:^7.0.0"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.0.0"
+ "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.0.0"
+ "@babel/plugin-transform-parameters": "npm:^7.0.0"
+ "@babel/plugin-transform-private-methods": "npm:^7.22.5"
+ "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11"
+ "@babel/plugin-transform-react-display-name": "npm:^7.0.0"
+ "@babel/plugin-transform-react-jsx": "npm:^7.0.0"
+ "@babel/plugin-transform-react-jsx-self": "npm:^7.0.0"
+ "@babel/plugin-transform-react-jsx-source": "npm:^7.0.0"
+ "@babel/plugin-transform-runtime": "npm:^7.0.0"
+ "@babel/plugin-transform-shorthand-properties": "npm:^7.0.0"
+ "@babel/plugin-transform-spread": "npm:^7.0.0"
+ "@babel/plugin-transform-sticky-regex": "npm:^7.0.0"
+ "@babel/plugin-transform-typescript": "npm:^7.5.0"
+ "@babel/plugin-transform-unicode-regex": "npm:^7.0.0"
+ "@babel/template": "npm:^7.0.0"
+ "@react-native/babel-plugin-codegen": "npm:0.74.83"
+ babel-plugin-transform-flow-enums: "npm:^0.0.2"
+ react-refresh: "npm:^0.14.0"
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: 10/3f8fb2ebddb52201c5be64550f811f161cdab4e3416c9d411715414a38ea706e8d1587aee1909bf2ee7293c59e171f22ad90472d1a26b76ac7042695e23fa813
+ languageName: node
+ linkType: hard
+
+"@react-native/babel-preset@npm:~0.74.82":
version: 0.74.82
resolution: "@react-native/babel-preset@npm:0.74.82"
dependencies:
@@ -5130,6 +5402,23 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/codegen@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/codegen@npm:0.74.83"
+ dependencies:
+ "@babel/parser": "npm:^7.20.0"
+ glob: "npm:^7.1.1"
+ hermes-parser: "npm:0.19.1"
+ invariant: "npm:^2.2.4"
+ jscodeshift: "npm:^0.14.0"
+ mkdirp: "npm:^0.5.1"
+ nullthrows: "npm:^1.1.1"
+ peerDependencies:
+ "@babel/preset-env": ^7.1.6
+ checksum: 10/8f8e546a67786b92c86b17f411f3304ef6e13616abf1b0362f1bcce0bb79dc4f0cd5f65901f6eddb9dff517c2aac5a96cafb70385940a585540242e40be1af40
+ languageName: node
+ linkType: hard
+
"@react-native/community-cli-plugin@npm:0.73.17":
version: 0.73.17
resolution: "@react-native/community-cli-plugin@npm:0.73.17"
@@ -5169,14 +5458,14 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/community-cli-plugin@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/community-cli-plugin@npm:0.74.82"
+"@react-native/community-cli-plugin@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/community-cli-plugin@npm:0.74.83"
dependencies:
- "@react-native-community/cli-server-api": "npm:13.6.4"
- "@react-native-community/cli-tools": "npm:13.6.4"
- "@react-native/dev-middleware": "npm:0.74.82"
- "@react-native/metro-babel-transformer": "npm:0.74.82"
+ "@react-native-community/cli-server-api": "npm:13.6.6"
+ "@react-native-community/cli-tools": "npm:13.6.6"
+ "@react-native/dev-middleware": "npm:0.74.83"
+ "@react-native/metro-babel-transformer": "npm:0.74.83"
chalk: "npm:^4.0.0"
execa: "npm:^5.1.1"
metro: "npm:^0.80.3"
@@ -5185,7 +5474,7 @@ __metadata:
node-fetch: "npm:^2.2.0"
querystring: "npm:^0.2.1"
readline: "npm:^1.3.0"
- checksum: 10/13023e7844d9c7fef494769ee9f477c6ecbeae9ec8a20851609a3af9bbaae9c0286040e69fde9880f1e30b0db23e8f4b7fc3129c4506940f8643559dd5e4c9ac
+ checksum: 10/8fb00b974b400246d15047df456d0c651d5ee2a94e3b81809de538b81b6ca9e9f290a69db8daa602161b0264f269d74296615943dc41078a1cbbc2c9627efd15
languageName: node
linkType: hard
@@ -5203,10 +5492,10 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/debugger-frontend@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/debugger-frontend@npm:0.74.82"
- checksum: 10/0787301f7df4f59e5f964ca0b83c0bfe52656cb059bbcf86564387607cfb510114ed8412c0021600c2f7edb9d7fe772de952e363872e36c83a2869dc1d94813e
+"@react-native/debugger-frontend@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/debugger-frontend@npm:0.74.83"
+ checksum: 10/16a82c9e2170379ee94a143c5f64347abe3b03678bc4077512296f8ea2fa2d86197beb829b7c9bdece5784709d504972be15b20e6ab856e1b0e91193e06d7121
languageName: node
linkType: hard
@@ -5250,12 +5539,12 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/dev-middleware@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/dev-middleware@npm:0.74.82"
+"@react-native/dev-middleware@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/dev-middleware@npm:0.74.83"
dependencies:
"@isaacs/ttlcache": "npm:^1.4.1"
- "@react-native/debugger-frontend": "npm:0.74.82"
+ "@react-native/debugger-frontend": "npm:0.74.83"
"@rnx-kit/chromium-edge-launcher": "npm:^1.0.0"
chrome-launcher: "npm:^0.15.2"
connect: "npm:^3.6.5"
@@ -5267,7 +5556,7 @@ __metadata:
serve-static: "npm:^1.13.1"
temp-dir: "npm:^2.0.0"
ws: "npm:^6.2.2"
- checksum: 10/8fa66342f9a06c32ebcc702e3eeeadf704fe0cf52afb04477b381c56ae2b8489dc285d0ab13b5e1c9e24a56e090c1915f72e42a249725234194ca98bbaf971d9
+ checksum: 10/1c69f40dab2729d38adca0a80af5dee942322f667025541cb11222e1d3e8071933b3f48d5a9765be4502a056d9b51502fabfeac1092543781e1c6106c3e202a6
languageName: node
linkType: hard
@@ -5316,10 +5605,10 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/gradle-plugin@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/gradle-plugin@npm:0.74.82"
- checksum: 10/9a02680b7ac14f0a9b101c59048dc20aedffca9cb89409da8bbb7ada9ac595bc4b48abc4adfb7ebbab3251d59e60fcd962cb9bde28eb5b3e0038c872cb3c8bb5
+"@react-native/gradle-plugin@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/gradle-plugin@npm:0.74.83"
+ checksum: 10/377c2b14dd33845515f8c44d80c12ca20fc8d84ad30671ad141ce4b014f84c175f4ea958d0adf634a6579912e99d406a6e0fdd6f2cd7b1a4c640ed75c9aeed45
languageName: node
linkType: hard
@@ -5337,10 +5626,10 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/js-polyfills@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/js-polyfills@npm:0.74.82"
- checksum: 10/50d24a42203689e47eb7c15ff5f4fa0b34d9c75c08d9b2baf852ad486b5699b467f82a3f79c21262f724eabab53c01b7d4033ceba21bc78e99eaa649f2c88f0c
+"@react-native/js-polyfills@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/js-polyfills@npm:0.74.83"
+ checksum: 10/1918ae0f17d4bc7feea532e56b055a0f3bc7d97e0090f70850f1ecc5f92093a5433e9d9bb6ada308acf9d6695764c84fccd657d2fd6feb538b972af25e241aa6
languageName: node
linkType: hard
@@ -5372,29 +5661,29 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/metro-babel-transformer@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/metro-babel-transformer@npm:0.74.82"
+"@react-native/metro-babel-transformer@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/metro-babel-transformer@npm:0.74.83"
dependencies:
"@babel/core": "npm:^7.20.0"
- "@react-native/babel-preset": "npm:0.74.82"
+ "@react-native/babel-preset": "npm:0.74.83"
hermes-parser: "npm:0.19.1"
nullthrows: "npm:^1.1.1"
peerDependencies:
"@babel/core": "*"
- checksum: 10/bb8e6c25e01a4c6c74ae329fdf0b2660548e913986f53abc7033cc805526087ea0b9ec14963e17b8d52d6479f275c2053f9bfa9c12101d523871c6ade799d724
+ checksum: 10/40b392eb90de8267ecf983a53752e37a57f93fdf9e384a09c8b0ff5ec8cbf4393bd8093608222e4850d746376c3ea48f2983bfa82d0696ceb9815fd25c5fe394
languageName: node
linkType: hard
-"@react-native/metro-config@npm:^0.74.81":
- version: 0.74.81
- resolution: "@react-native/metro-config@npm:0.74.81"
+"@react-native/metro-config@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/metro-config@npm:0.74.83"
dependencies:
- "@react-native/js-polyfills": "npm:0.74.81"
- "@react-native/metro-babel-transformer": "npm:0.74.81"
+ "@react-native/js-polyfills": "npm:0.74.83"
+ "@react-native/metro-babel-transformer": "npm:0.74.83"
metro-config: "npm:^0.80.3"
metro-runtime: "npm:^0.80.3"
- checksum: 10/268221229071320714689186ef27c982fcafe23ad4345633e94a8fcecedf5266f84647cab25da8f8a34d6f469f12222a922c94853fa8e3c9352806f05326f712
+ checksum: 10/547f879453fa16b0c07f098c9639b62d20b662b84c46eb0d76f82241ec8d88c54e07fcfaeb4ca20340f5697480866bb904929cd38cd3d6684ef2b5455c82aff7
languageName: node
linkType: hard
@@ -5419,17 +5708,24 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/normalize-colors@npm:0.74.82, @react-native/normalize-colors@npm:^0.74.1":
+"@react-native/normalize-colors@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/normalize-colors@npm:0.74.83"
+ checksum: 10/2784c3b119cc022a342530027f891a158e965291d79cc990a22b67c9e5f2a4f28043e19086a6ec9351e8df09173072104cad84c84a3de32ec94be99cc59c2cb1
+ languageName: node
+ linkType: hard
+
+"@react-native/normalize-colors@npm:^0.74.1":
version: 0.74.82
resolution: "@react-native/normalize-colors@npm:0.74.82"
checksum: 10/023fa7ea0cad668ac9966e76b48e85eeadcba844dd2db313676dff6f26005c11edd36cf635e202ae6a081f1fcf1b3f4d02ed7acabd8e46d6d539a15e1009be91
languageName: node
linkType: hard
-"@react-native/typescript-config@npm:^0.74.81":
- version: 0.74.81
- resolution: "@react-native/typescript-config@npm:0.74.81"
- checksum: 10/8ff757deced1270181e7b9015066b87b178d5a7cc8cd735c5bcc17bae91fec9548900d6d6d0e806a9ca0ec683e898f2a2927b77b5e77548c6826d956e0f23068
+"@react-native/typescript-config@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/typescript-config@npm:0.74.83"
+ checksum: 10/318ef304611bc7e42415327916bce358df1c7bc9e971e129d263166edf1179c42d64e5b91784fa28db13d5218ae2c87dc3e2214582673ba2b0f52e8f8615695b
languageName: node
linkType: hard
@@ -5462,9 +5758,9 @@ __metadata:
languageName: node
linkType: hard
-"@react-native/virtualized-lists@npm:0.74.82":
- version: 0.74.82
- resolution: "@react-native/virtualized-lists@npm:0.74.82"
+"@react-native/virtualized-lists@npm:0.74.83":
+ version: 0.74.83
+ resolution: "@react-native/virtualized-lists@npm:0.74.83"
dependencies:
invariant: "npm:^2.2.4"
nullthrows: "npm:^1.1.1"
@@ -5475,7 +5771,7 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 10/33119b7c9d98d907570415e72a4cedbd4a5c5637990f015fb6ccb53a7a1fd1f1653eaf697db17a30a858f6a992fe362cf7de998f3846ca407d03f563da6ca6ef
+ checksum: 10/aedc098372a303845e5f13f1c8745499ca17f26676a84deee9cdc07fb61027ba37036bb99431ab4af796986645d1acaf3570e43b0bacc52ff763eefcf76edb66
languageName: node
linkType: hard
@@ -15281,9 +15577,9 @@ __metadata:
"@mj-studio/js-util": "npm:^1.0.34"
"@mj-studio/react-util": "npm:^0.0.20"
"@react-native-styled-system/core": "npm:~1.2.1"
- "@react-native/babel-preset": "npm:^0.74.81"
- "@react-native/metro-config": "npm:^0.74.81"
- "@react-native/typescript-config": "npm:^0.74.81"
+ "@react-native/babel-preset": "npm:0.74.83"
+ "@react-native/metro-config": "npm:0.74.83"
+ "@react-native/typescript-config": "npm:0.74.83"
babel-plugin-module-resolver: "npm:^5.0.0"
expo: "npm:51.0.0-preview.10"
expo-build-properties: "npm:~0.12.0"
@@ -15293,7 +15589,7 @@ __metadata:
expo-router: "npm:3.5.4"
expo-status-bar: "npm:1.12.1"
react: "npm:18.2.0"
- react-native: "npm:0.74.1-rc.0"
+ react-native: "npm:0.74.1"
react-native-flash-message: "npm:^0.4.2"
react-native-safe-area-context: "npm:^4.10.1"
react-native-screens: "npm:^3.31.1"
@@ -19959,21 +20255,21 @@ __metadata:
languageName: node
linkType: hard
-"react-native@npm:0.74.1-rc.0":
- version: 0.74.1-rc.0
- resolution: "react-native@npm:0.74.1-rc.0"
+"react-native@npm:0.74.1":
+ version: 0.74.1
+ resolution: "react-native@npm:0.74.1"
dependencies:
"@jest/create-cache-key-function": "npm:^29.6.3"
- "@react-native-community/cli": "npm:13.6.4"
- "@react-native-community/cli-platform-android": "npm:13.6.4"
- "@react-native-community/cli-platform-ios": "npm:13.6.4"
- "@react-native/assets-registry": "npm:0.74.82"
- "@react-native/codegen": "npm:0.74.82"
- "@react-native/community-cli-plugin": "npm:0.74.82"
- "@react-native/gradle-plugin": "npm:0.74.82"
- "@react-native/js-polyfills": "npm:0.74.82"
- "@react-native/normalize-colors": "npm:0.74.82"
- "@react-native/virtualized-lists": "npm:0.74.82"
+ "@react-native-community/cli": "npm:13.6.6"
+ "@react-native-community/cli-platform-android": "npm:13.6.6"
+ "@react-native-community/cli-platform-ios": "npm:13.6.6"
+ "@react-native/assets-registry": "npm:0.74.83"
+ "@react-native/codegen": "npm:0.74.83"
+ "@react-native/community-cli-plugin": "npm:0.74.83"
+ "@react-native/gradle-plugin": "npm:0.74.83"
+ "@react-native/js-polyfills": "npm:0.74.83"
+ "@react-native/normalize-colors": "npm:0.74.83"
+ "@react-native/virtualized-lists": "npm:0.74.83"
abort-controller: "npm:^3.0.0"
anser: "npm:^1.4.9"
ansi-regex: "npm:^5.0.0"
@@ -20008,7 +20304,7 @@ __metadata:
optional: true
bin:
react-native: cli.js
- checksum: 10/1e51e442ce6ca8d1034b5b9b4dabe59569c4b2f970d6502023a91f954d6ba60a3379fe67eebb48c36228918f738a5996006e86b91e5119d0f785e9ade5874ac5
+ checksum: 10/4c70df351f021c7fe2978626dd223feabd483d95a9312b6cd76b8ea9467426c630ee6aea5ad692da37ecb4388c065c68072355e743fb87621b62d520a18943d5
languageName: node
linkType: hard
@@ -20850,7 +21146,7 @@ __metadata:
lefthook: "npm:^1.6.10"
prettier: "npm:3.2.5"
react: "npm:18.2.0"
- react-native: "npm:0.74.1-rc.0"
+ react-native: "npm:0.74.1"
react-native-builder-bob: "npm:^0.20.0"
turbo: "npm:1.13.3"
typescript: "npm:5.3.3"