react-native-acoustic-connect 19.0.9 → 19.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/ConnectConfig.example.json +1 -1
- package/README.md +390 -1
- package/android/build.gradle +86 -3
- package/android/config.gradle +137 -13
- package/android/src/main/assets/ConnectAdvancedConfig.json +1 -1
- package/android/src/main/java/com/acousticconnectrn/HybridAcousticConnectRN.kt +407 -34
- package/app.plugin.js +2 -2
- package/ios/AcousticConnectRNConfig.json +2 -2
- package/ios/ConnectRNParsing.swift +229 -0
- package/ios/HybridAcousticConnectRN.swift +290 -30
- package/lib/commonjs/TLTRN.js +116 -3
- package/lib/commonjs/TLTRN.js.map +1 -1
- package/lib/commonjs/components/Connect.js +145 -27
- package/lib/commonjs/components/Connect.js.map +1 -1
- package/lib/commonjs/index.js +3 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/TLTRN.js +116 -3
- package/lib/module/TLTRN.js.map +1 -1
- package/lib/module/components/Connect.js +146 -28
- package/lib/module/components/Connect.js.map +1 -1
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/TLTRN.d.ts +85 -1
- package/lib/typescript/src/TLTRN.d.ts.map +1 -1
- package/lib/typescript/src/components/Connect.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/react-native-acoustic-connect.nitro.d.ts +178 -10
- package/lib/typescript/src/specs/react-native-acoustic-connect.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridAcousticConnectRNSpec.cpp +5 -9
- package/nitrogen/generated/android/c++/JHybridAcousticConnectRNSpec.hpp +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/acousticconnectrn/HybridAcousticConnectRNSpec.kt +2 -1
- package/nitrogen/generated/ios/AcousticConnectRN-Swift-Cxx-Umbrella.hpp +1 -0
- package/nitrogen/generated/ios/c++/HybridAcousticConnectRNSpecSwift.hpp +2 -1
- package/nitrogen/generated/ios/swift/HybridAcousticConnectRNSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridAcousticConnectRNSpec_cxx.swift +2 -25
- package/nitrogen/generated/shared/c++/HybridAcousticConnectRNSpec.hpp +2 -1
- package/package.json +4 -7
- package/plugin/build/withConnectAndroidConfig.d.ts +2 -2
- package/plugin/build/withConnectAndroidConfig.js +2 -2
- package/plugin/build/withConnectIosSigning.d.ts +1 -1
- package/plugin/build/withConnectIosSigning.js +1 -1
- package/plugin/src/withConnectAndroidConfig.ts +2 -2
- package/plugin/src/withConnectIosSigning.ts +1 -1
- package/scripts/gradleParser.js +1 -1
- package/src/TLTRN.ts +125 -4
- package/src/components/Connect.tsx +150 -27
- package/src/index.ts +5 -0
- package/src/specs/react-native-acoustic-connect.nitro.ts +180 -10
- package/Examples/SampleUI/.bundle/config +0 -2
- package/Examples/SampleUI/.detoxrc.js +0 -83
- package/Examples/SampleUI/.eslintrc.js +0 -4
- package/Examples/SampleUI/.prettierrc.js +0 -7
- package/Examples/SampleUI/.watchmanconfig +0 -1
- package/Examples/SampleUI/App.js +0 -1
- package/Examples/SampleUI/Gemfile +0 -10
- package/Examples/SampleUI/Gemfile.lock +0 -121
- package/Examples/SampleUI/README.md +0 -79
- package/Examples/SampleUI/__tests__/App.test.tsx +0 -17
- package/Examples/SampleUI/android/app/build.gradle +0 -129
- package/Examples/SampleUI/android/app/debug.keystore +0 -0
- package/Examples/SampleUI/android/app/proguard-rules.pro +0 -10
- package/Examples/SampleUI/android/app/src/debug/AndroidManifest.xml +0 -9
- package/Examples/SampleUI/android/app/src/main/AndroidManifest.xml +0 -31
- package/Examples/SampleUI/android/app/src/main/java/com/sampleui/MainActivity.kt +0 -30
- package/Examples/SampleUI/android/app/src/main/java/com/sampleui/MainApplication.kt +0 -53
- package/Examples/SampleUI/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -37
- package/Examples/SampleUI/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/Examples/SampleUI/android/app/src/main/res/values/strings.xml +0 -3
- package/Examples/SampleUI/android/app/src/main/res/values/styles.xml +0 -9
- package/Examples/SampleUI/android/build.gradle +0 -21
- package/Examples/SampleUI/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/Examples/SampleUI/android/gradle/wrapper/gradle-wrapper.properties +0 -7
- package/Examples/SampleUI/android/gradle.properties +0 -39
- package/Examples/SampleUI/android/gradlew +0 -252
- package/Examples/SampleUI/android/gradlew.bat +0 -94
- package/Examples/SampleUI/android/settings.gradle +0 -21
- package/Examples/SampleUI/app.json +0 -51
- package/Examples/SampleUI/assets/fonts/Abel-Regular.ttf +0 -0
- package/Examples/SampleUI/assets/fonts/NotoSans-Regular.ttf +0 -0
- package/Examples/SampleUI/assets/images/android-icon.png +0 -0
- package/Examples/SampleUI/assets/images/artist-1.jpg +0 -0
- package/Examples/SampleUI/assets/images/artist-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/avatar.png +0 -0
- package/Examples/SampleUI/assets/images/beach.jpg +0 -0
- package/Examples/SampleUI/assets/images/bridge.jpg +0 -0
- package/Examples/SampleUI/assets/images/chameleon.jpg +0 -0
- package/Examples/SampleUI/assets/images/city.jpg +0 -0
- package/Examples/SampleUI/assets/images/email-icon.png +0 -0
- package/Examples/SampleUI/assets/images/favorite.png +0 -0
- package/Examples/SampleUI/assets/images/forest.jpg +0 -0
- package/Examples/SampleUI/assets/images/paper-icon.png +0 -0
- package/Examples/SampleUI/assets/images/players-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/players.jpg +0 -0
- package/Examples/SampleUI/assets/images/restaurant-1.jpg +0 -0
- package/Examples/SampleUI/assets/images/restaurant-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/song-1.jpg +0 -0
- package/Examples/SampleUI/assets/images/song-2.jpg +0 -0
- package/Examples/SampleUI/assets/images/splash.png +0 -0
- package/Examples/SampleUI/assets/images/strawberries.jpg +0 -0
- package/Examples/SampleUI/assets/images/wrecked-ship.jpg +0 -0
- package/Examples/SampleUI/assets/styles/fonts.css +0 -47
- package/Examples/SampleUI/babel.config.js +0 -22
- package/Examples/SampleUI/index.js +0 -9
- package/Examples/SampleUI/ios/.xcode.env +0 -11
- package/Examples/SampleUI/ios/Podfile +0 -71
- package/Examples/SampleUI/ios/Podfile.lock +0 -2276
- package/Examples/SampleUI/ios/SampleUI/AppDelegate.h +0 -7
- package/Examples/SampleUI/ios/SampleUI/AppDelegate.mm +0 -31
- package/Examples/SampleUI/ios/SampleUI/Images.xcassets/AppIcon.appiconset/Contents.json +0 -53
- package/Examples/SampleUI/ios/SampleUI/Images.xcassets/Contents.json +0 -6
- package/Examples/SampleUI/ios/SampleUI/Info.plist +0 -52
- package/Examples/SampleUI/ios/SampleUI/LaunchScreen.storyboard +0 -47
- package/Examples/SampleUI/ios/SampleUI/PrivacyInfo.xcprivacy +0 -48
- package/Examples/SampleUI/ios/SampleUI/main.m +0 -10
- package/Examples/SampleUI/ios/SampleUI.xcodeproj/project.pbxproj +0 -785
- package/Examples/SampleUI/ios/SampleUI.xcodeproj/xcshareddata/xcschemes/SampleUI.xcscheme +0 -105
- package/Examples/SampleUI/ios/SampleUI.xcworkspace/contents.xcworkspacedata +0 -10
- package/Examples/SampleUI/ios/SampleUITests/Info.plist +0 -24
- package/Examples/SampleUI/ios/SampleUITests/SampleUITests.m +0 -66
- package/Examples/SampleUI/jest.config.js +0 -3
- package/Examples/SampleUI/metro.config.js +0 -54
- package/Examples/SampleUI/package.json +0 -65
- package/Examples/SampleUI/scripts/integration-test-android.sh +0 -292
- package/Examples/SampleUI/src/DrawerItems.tsx +0 -322
- package/Examples/SampleUI/src/ExampleList.tsx +0 -175
- package/Examples/SampleUI/src/Examples/ActivityIndicatorExample.tsx +0 -73
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/AnimatedFABExample.tsx +0 -220
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/CustomFAB.tsx +0 -70
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/CustomFABControls.tsx +0 -146
- package/Examples/SampleUI/src/Examples/AnimatedFABExample/index.ts +0 -1
- package/Examples/SampleUI/src/Examples/AppbarExample.tsx +0 -263
- package/Examples/SampleUI/src/Examples/AvatarExample.tsx +0 -76
- package/Examples/SampleUI/src/Examples/BadgeExample.tsx +0 -97
- package/Examples/SampleUI/src/Examples/BannerExample.tsx +0 -152
- package/Examples/SampleUI/src/Examples/BottomNavigationBarExample.tsx +0 -94
- package/Examples/SampleUI/src/Examples/BottomNavigationExample.tsx +0 -205
- package/Examples/SampleUI/src/Examples/ButtonExample.tsx +0 -405
- package/Examples/SampleUI/src/Examples/CardExample.tsx +0 -245
- package/Examples/SampleUI/src/Examples/CheckboxExample.tsx +0 -87
- package/Examples/SampleUI/src/Examples/CheckboxItemExample.tsx +0 -72
- package/Examples/SampleUI/src/Examples/ChipExample.tsx +0 -432
- package/Examples/SampleUI/src/Examples/DataTableExample.tsx +0 -128
- package/Examples/SampleUI/src/Examples/DialogExample.tsx +0 -217
- package/Examples/SampleUI/src/Examples/Dialogs/DialogTextComponent.tsx +0 -31
- package/Examples/SampleUI/src/Examples/Dialogs/DialogTrackingTest.tsx +0 -307
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithCustomColors.tsx +0 -57
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithDismissableBackButton.tsx +0 -38
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithIcon.tsx +0 -42
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithLoadingIndicator.tsx +0 -48
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithLongText.tsx +0 -81
- package/Examples/SampleUI/src/Examples/Dialogs/DialogWithRadioBtns.tsx +0 -111
- package/Examples/SampleUI/src/Examples/Dialogs/UndismissableDialog.tsx +0 -30
- package/Examples/SampleUI/src/Examples/Dialogs/index.tsx +0 -44
- package/Examples/SampleUI/src/Examples/DividerExample.tsx +0 -30
- package/Examples/SampleUI/src/Examples/FABExample.tsx +0 -226
- package/Examples/SampleUI/src/Examples/IconButtonExample.tsx +0 -230
- package/Examples/SampleUI/src/Examples/IconExample.tsx +0 -50
- package/Examples/SampleUI/src/Examples/ListAccordionExample.tsx +0 -65
- package/Examples/SampleUI/src/Examples/ListAccordionGroupExample.tsx +0 -80
- package/Examples/SampleUI/src/Examples/ListItemExample.tsx +0 -310
- package/Examples/SampleUI/src/Examples/ListSectionExample.tsx +0 -159
- package/Examples/SampleUI/src/Examples/MaterialBottomTabNavigatorExample.tsx +0 -87
- package/Examples/SampleUI/src/Examples/MenuExample.tsx +0 -211
- package/Examples/SampleUI/src/Examples/ProgressBarExample.tsx +0 -142
- package/Examples/SampleUI/src/Examples/RadioButtonExample.tsx +0 -104
- package/Examples/SampleUI/src/Examples/RadioButtonGroupExample.tsx +0 -67
- package/Examples/SampleUI/src/Examples/RadioButtonItemExample.tsx +0 -77
- package/Examples/SampleUI/src/Examples/SearchbarExample.tsx +0 -249
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonCustomColorCheck.tsx +0 -93
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonDefault.tsx +0 -49
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonDisabled.tsx +0 -47
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselect.tsx +0 -50
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselectIcons.tsx +0 -49
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselectRealCase.tsx +0 -114
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonOnlyIcons.tsx +0 -40
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonOnlyIconsWithCheck.tsx +0 -43
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonRealCase.tsx +0 -97
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonWithDensity.tsx +0 -47
- package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonWithSelectedCheck.tsx +0 -52
- package/Examples/SampleUI/src/Examples/SegmentedButtons/index.ts +0 -9
- package/Examples/SampleUI/src/Examples/SegmentedButtonsExample.tsx +0 -57
- package/Examples/SampleUI/src/Examples/SnackbarExample.tsx +0 -141
- package/Examples/SampleUI/src/Examples/SurfaceExample.tsx +0 -130
- package/Examples/SampleUI/src/Examples/SwitchExample.tsx +0 -105
- package/Examples/SampleUI/src/Examples/TeamDetails.tsx +0 -291
- package/Examples/SampleUI/src/Examples/TeamsList.tsx +0 -57
- package/Examples/SampleUI/src/Examples/TextExample.tsx +0 -132
- package/Examples/SampleUI/src/Examples/TextInputExample.tsx +0 -914
- package/Examples/SampleUI/src/Examples/ThemeExample.tsx +0 -41
- package/Examples/SampleUI/src/Examples/ThemingWithReactNavigation.tsx +0 -75
- package/Examples/SampleUI/src/Examples/ToggleButtonExample.tsx +0 -128
- package/Examples/SampleUI/src/Examples/TooltipExample.tsx +0 -191
- package/Examples/SampleUI/src/Examples/TouchableRippleExample.tsx +0 -37
- package/Examples/SampleUI/src/RootNavigator.tsx +0 -95
- package/Examples/SampleUI/src/ScreenWrapper.tsx +0 -67
- package/Examples/SampleUI/src/components/ActivityIndicator.tsx +0 -254
- package/Examples/SampleUI/src/components/Appbar/Appbar.tsx +0 -364
- package/Examples/SampleUI/src/components/Appbar/AppbarAction.tsx +0 -132
- package/Examples/SampleUI/src/components/Appbar/AppbarBackAction.tsx +0 -77
- package/Examples/SampleUI/src/components/Appbar/AppbarBackIcon.tsx +0 -52
- package/Examples/SampleUI/src/components/Appbar/AppbarContent.tsx +0 -249
- package/Examples/SampleUI/src/components/Appbar/AppbarHeader.tsx +0 -174
- package/Examples/SampleUI/src/components/Appbar/index.ts +0 -22
- package/Examples/SampleUI/src/components/Appbar/utils.ts +0 -188
- package/Examples/SampleUI/src/components/Avatar/Avatar.tsx +0 -8
- package/Examples/SampleUI/src/components/Avatar/AvatarIcon.tsx +0 -87
- package/Examples/SampleUI/src/components/Avatar/AvatarImage.tsx +0 -128
- package/Examples/SampleUI/src/components/Avatar/AvatarText.tsx +0 -127
- package/Examples/SampleUI/src/components/Badge.tsx +0 -138
- package/Examples/SampleUI/src/components/Banner.tsx +0 -302
- package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigation.tsx +0 -643
- package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigationBar.tsx +0 -1039
- package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigationRouteScreen.tsx +0 -31
- package/Examples/SampleUI/src/components/BottomNavigation/utils.ts +0 -70
- package/Examples/SampleUI/src/components/Button/Button.tsx +0 -503
- package/Examples/SampleUI/src/components/Button/utils.tsx +0 -272
- package/Examples/SampleUI/src/components/Card/Card.tsx +0 -373
- package/Examples/SampleUI/src/components/Card/CardActions.tsx +0 -74
- package/Examples/SampleUI/src/components/Card/CardContent.tsx +0 -99
- package/Examples/SampleUI/src/components/Card/CardCover.tsx +0 -96
- package/Examples/SampleUI/src/components/Card/CardTitle.tsx +0 -236
- package/Examples/SampleUI/src/components/Card/utils.tsx +0 -110
- package/Examples/SampleUI/src/components/Checkbox/Checkbox.tsx +0 -78
- package/Examples/SampleUI/src/components/Checkbox/CheckboxAndroid.tsx +0 -180
- package/Examples/SampleUI/src/components/Checkbox/CheckboxIOS.tsx +0 -104
- package/Examples/SampleUI/src/components/Checkbox/CheckboxItem.tsx +0 -236
- package/Examples/SampleUI/src/components/Checkbox/index.ts +0 -19
- package/Examples/SampleUI/src/components/Checkbox/utils.ts +0 -183
- package/Examples/SampleUI/src/components/Chip/Chip.tsx +0 -513
- package/Examples/SampleUI/src/components/Chip/helpers.tsx +0 -322
- package/Examples/SampleUI/src/components/CrossFadeIcon.tsx +0 -140
- package/Examples/SampleUI/src/components/DataTable/DataTable.tsx +0 -138
- package/Examples/SampleUI/src/components/DataTable/DataTableCell.tsx +0 -132
- package/Examples/SampleUI/src/components/DataTable/DataTableHeader.tsx +0 -82
- package/Examples/SampleUI/src/components/DataTable/DataTablePagination.tsx +0 -407
- package/Examples/SampleUI/src/components/DataTable/DataTableRow.tsx +0 -107
- package/Examples/SampleUI/src/components/DataTable/DataTableTitle.tsx +0 -208
- package/Examples/SampleUI/src/components/Dialog/Dialog.tsx +0 -191
- package/Examples/SampleUI/src/components/Dialog/DialogActions.tsx +0 -94
- package/Examples/SampleUI/src/components/Dialog/DialogContent.tsx +0 -54
- package/Examples/SampleUI/src/components/Dialog/DialogIcon.tsx +0 -100
- package/Examples/SampleUI/src/components/Dialog/DialogScrollArea.tsx +0 -88
- package/Examples/SampleUI/src/components/Dialog/DialogTitle.tsx +0 -94
- package/Examples/SampleUI/src/components/Divider.tsx +0 -102
- package/Examples/SampleUI/src/components/Drawer/Drawer.tsx +0 -8
- package/Examples/SampleUI/src/components/Drawer/DrawerCollapsedItem.tsx +0 -282
- package/Examples/SampleUI/src/components/Drawer/DrawerItem.tsx +0 -209
- package/Examples/SampleUI/src/components/Drawer/DrawerSection.tsx +0 -138
- package/Examples/SampleUI/src/components/FAB/AnimatedFAB.tsx +0 -619
- package/Examples/SampleUI/src/components/FAB/FAB.tsx +0 -371
- package/Examples/SampleUI/src/components/FAB/FABGroup.tsx +0 -532
- package/Examples/SampleUI/src/components/FAB/index.ts +0 -13
- package/Examples/SampleUI/src/components/FAB/utils.ts +0 -474
- package/Examples/SampleUI/src/components/HelperText/HelperText.tsx +0 -168
- package/Examples/SampleUI/src/components/HelperText/utils.ts +0 -30
- package/Examples/SampleUI/src/components/Icon.tsx +0 -170
- package/Examples/SampleUI/src/components/IconButton/IconButton.tsx +0 -234
- package/Examples/SampleUI/src/components/IconButton/utils.ts +0 -190
- package/Examples/SampleUI/src/components/List/List.tsx +0 -20
- package/Examples/SampleUI/src/components/List/ListAccordion.tsx +0 -391
- package/Examples/SampleUI/src/components/List/ListAccordionGroup.tsx +0 -88
- package/Examples/SampleUI/src/components/List/ListIcon.tsx +0 -79
- package/Examples/SampleUI/src/components/List/ListImage.tsx +0 -89
- package/Examples/SampleUI/src/components/List/ListItem.tsx +0 -313
- package/Examples/SampleUI/src/components/List/ListSection.tsx +0 -87
- package/Examples/SampleUI/src/components/List/ListSubheader.tsx +0 -79
- package/Examples/SampleUI/src/components/List/utils.ts +0 -113
- package/Examples/SampleUI/src/components/MaterialCommunityIcon.tsx +0 -121
- package/Examples/SampleUI/src/components/Menu/Menu.tsx +0 -711
- package/Examples/SampleUI/src/components/Menu/MenuItem.tsx +0 -257
- package/Examples/SampleUI/src/components/Menu/utils.ts +0 -110
- package/Examples/SampleUI/src/components/Modal.tsx +0 -245
- package/Examples/SampleUI/src/components/Portal/Portal.tsx +0 -69
- package/Examples/SampleUI/src/components/Portal/PortalConsumer.tsx +0 -44
- package/Examples/SampleUI/src/components/Portal/PortalHost.tsx +0 -143
- package/Examples/SampleUI/src/components/Portal/PortalManager.tsx +0 -54
- package/Examples/SampleUI/src/components/ProgressBar.tsx +0 -292
- package/Examples/SampleUI/src/components/RadioButton/RadioButton.tsx +0 -86
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonAndroid.tsx +0 -202
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonGroup.tsx +0 -67
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonIOS.tsx +0 -130
- package/Examples/SampleUI/src/components/RadioButton/RadioButtonItem.tsx +0 -268
- package/Examples/SampleUI/src/components/RadioButton/index.ts +0 -22
- package/Examples/SampleUI/src/components/RadioButton/utils.ts +0 -37
- package/Examples/SampleUI/src/components/Searchbar.tsx +0 -459
- package/Examples/SampleUI/src/components/SegmentedButtons/SegmentedButtonItem.tsx +0 -271
- package/Examples/SampleUI/src/components/SegmentedButtons/SegmentedButtons.tsx +0 -197
- package/Examples/SampleUI/src/components/SegmentedButtons/utils.ts +0 -179
- package/Examples/SampleUI/src/components/Snackbar.tsx +0 -430
- package/Examples/SampleUI/src/components/Surface.tsx +0 -376
- package/Examples/SampleUI/src/components/Switch/Switch.tsx +0 -108
- package/Examples/SampleUI/src/components/Switch/utils.ts +0 -113
- package/Examples/SampleUI/src/components/TextInput/Addons/Outline.tsx +0 -64
- package/Examples/SampleUI/src/components/TextInput/Addons/Underline.tsx +0 -78
- package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputAdornment.tsx +0 -208
- package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputAffix.tsx +0 -212
- package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputIcon.tsx +0 -195
- package/Examples/SampleUI/src/components/TextInput/Adornment/enums.tsx +0 -12
- package/Examples/SampleUI/src/components/TextInput/Adornment/types.tsx +0 -11
- package/Examples/SampleUI/src/components/TextInput/Adornment/utils.ts +0 -48
- package/Examples/SampleUI/src/components/TextInput/Label/InputLabel.tsx +0 -217
- package/Examples/SampleUI/src/components/TextInput/Label/LabelBackground.tsx +0 -100
- package/Examples/SampleUI/src/components/TextInput/TextInput.tsx +0 -572
- package/Examples/SampleUI/src/components/TextInput/TextInputFlat.tsx +0 -475
- package/Examples/SampleUI/src/components/TextInput/TextInputOutlined.tsx +0 -450
- package/Examples/SampleUI/src/components/TextInput/constants.tsx +0 -48
- package/Examples/SampleUI/src/components/TextInput/helpers.tsx +0 -612
- package/Examples/SampleUI/src/components/TextInput/types.tsx +0 -155
- package/Examples/SampleUI/src/components/ToggleButton/ToggleButton.tsx +0 -187
- package/Examples/SampleUI/src/components/ToggleButton/ToggleButtonGroup.tsx +0 -72
- package/Examples/SampleUI/src/components/ToggleButton/ToggleButtonRow.tsx +0 -107
- package/Examples/SampleUI/src/components/ToggleButton/index.ts +0 -16
- package/Examples/SampleUI/src/components/ToggleButton/utils.ts +0 -26
- package/Examples/SampleUI/src/components/Tooltip/Tooltip.tsx +0 -249
- package/Examples/SampleUI/src/components/Tooltip/utils.ts +0 -129
- package/Examples/SampleUI/src/components/TouchableRipple/Pressable.tsx +0 -41
- package/Examples/SampleUI/src/components/TouchableRipple/TouchableRipple.native.tsx +0 -145
- package/Examples/SampleUI/src/components/TouchableRipple/TouchableRipple.tsx +0 -317
- package/Examples/SampleUI/src/components/TouchableRipple/utils.ts +0 -66
- package/Examples/SampleUI/src/components/Typography/AnimatedText.tsx +0 -107
- package/Examples/SampleUI/src/components/Typography/Text.tsx +0 -184
- package/Examples/SampleUI/src/components/Typography/types.tsx +0 -5
- package/Examples/SampleUI/src/components/Typography/v2/Caption.tsx +0 -50
- package/Examples/SampleUI/src/components/Typography/v2/Headline.tsx +0 -52
- package/Examples/SampleUI/src/components/Typography/v2/Paragraph.tsx +0 -49
- package/Examples/SampleUI/src/components/Typography/v2/StyledText.tsx +0 -56
- package/Examples/SampleUI/src/components/Typography/v2/Subheading.tsx +0 -50
- package/Examples/SampleUI/src/components/Typography/v2/Text.tsx +0 -62
- package/Examples/SampleUI/src/components/Typography/v2/Title.tsx +0 -49
- package/Examples/SampleUI/src/components/Typography/v2/index.ts +0 -5
- package/Examples/SampleUI/src/core/PaperProvider.tsx +0 -122
- package/Examples/SampleUI/src/core/SafeAreaProviderCompat.tsx +0 -65
- package/Examples/SampleUI/src/core/settings.tsx +0 -23
- package/Examples/SampleUI/src/core/theming.tsx +0 -170
- package/Examples/SampleUI/src/index.native.tsx +0 -285
- package/Examples/SampleUI/src/index.tsx +0 -226
- package/Examples/SampleUI/src/react-navigation/index.tsx +0 -19
- package/Examples/SampleUI/src/react-navigation/navigators/createMaterialBottomTabNavigator.tsx +0 -72
- package/Examples/SampleUI/src/react-navigation/types.tsx +0 -126
- package/Examples/SampleUI/src/react-navigation/views/MaterialBottomTabView.tsx +0 -140
- package/Examples/SampleUI/src/styles/__tests__/fonts.test.js +0 -290
- package/Examples/SampleUI/src/styles/fonts.tsx +0 -143
- package/Examples/SampleUI/src/styles/overlay.tsx +0 -70
- package/Examples/SampleUI/src/styles/shadow.tsx +0 -109
- package/Examples/SampleUI/src/styles/themes/index.ts +0 -4
- package/Examples/SampleUI/src/styles/themes/v2/DarkTheme.tsx +0 -30
- package/Examples/SampleUI/src/styles/themes/v2/LightTheme.tsx +0 -30
- package/Examples/SampleUI/src/styles/themes/v2/colors.tsx +0 -277
- package/Examples/SampleUI/src/styles/themes/v3/DarkTheme.tsx +0 -66
- package/Examples/SampleUI/src/styles/themes/v3/LightTheme.tsx +0 -69
- package/Examples/SampleUI/src/styles/themes/v3/tokens.tsx +0 -230
- package/Examples/SampleUI/src/utils/BackHandler/BackHandler.native.tsx +0 -3
- package/Examples/SampleUI/src/utils/BackHandler/BackHandler.tsx +0 -11
- package/Examples/SampleUI/src/utils/addEventListener.tsx +0 -56
- package/Examples/SampleUI/src/utils/forwardRef.tsx +0 -23
- package/Examples/SampleUI/src/utils/getContrastingColor.tsx +0 -15
- package/Examples/SampleUI/src/utils/hasTouchHandler.tsx +0 -23
- package/Examples/SampleUI/src/utils/roundLayoutSize.ts +0 -2
- package/Examples/SampleUI/src/utils/splitStyles.ts +0 -60
- package/Examples/SampleUI/src/utils/useAnimatedValue.tsx +0 -9
- package/Examples/SampleUI/src/utils/useAnimatedValueArray.tsx +0 -13
- package/Examples/SampleUI/src/utils/useIsKeyboardShown.tsx +0 -55
- package/Examples/SampleUI/src/utils/useLayout.tsx +0 -29
- package/Examples/SampleUI/src/utils/useLazyRef.tsx +0 -11
- package/Examples/SampleUI/tsconfig.json +0 -3
- package/Examples/SampleUI/utils/index.ts +0 -1426
- package/cli/__tests__/doctor.test.mjs +0 -88
|
@@ -14,6 +14,10 @@ import Foundation
|
|
|
14
14
|
import Connect
|
|
15
15
|
import NitroModules
|
|
16
16
|
import OSLog
|
|
17
|
+
// Explicit, though `Connect`'s umbrella header pulls it in transitively:
|
|
18
|
+
// `logScreenLayout` resolves the top view controller itself, so this file has a
|
|
19
|
+
// first-hand dependency on UIApplication / UIWindowScene / UIViewController.
|
|
20
|
+
import UIKit
|
|
17
21
|
|
|
18
22
|
// Two loggers under one subsystem so developers can filter Console.app / Xcode
|
|
19
23
|
// output by category. `config` covers anything about reading and validating
|
|
@@ -60,6 +64,14 @@ private enum ConnectConfigStore {
|
|
|
60
64
|
static func number(forKey key: String, default def: Double) -> Double {
|
|
61
65
|
return (ConnectApplicationHelper.sharedInstance().value(forConfigurableItem: key) as? NSNumber)?.doubleValue ?? def
|
|
62
66
|
}
|
|
67
|
+
|
|
68
|
+
/// Reads a config item back as a dictionary. Used for `AutoLayout`, which
|
|
69
|
+
/// the native SDK populates from its own bundled `ConnectLayoutConfig.json`
|
|
70
|
+
/// and which `applyConnectConfig` then overrides from `ConnectConfig.json`
|
|
71
|
+
/// — so this returns the *effective* block either way.
|
|
72
|
+
static func dictionary(forKey key: String) -> [String: Any]? {
|
|
73
|
+
return ConnectApplicationHelper.sharedInstance().value(forConfigurableItem: key) as? [String: Any]
|
|
74
|
+
}
|
|
63
75
|
}
|
|
64
76
|
|
|
65
77
|
// MARK: - Push adapter wrappers
|
|
@@ -93,10 +105,42 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
93
105
|
/// `@MainActor` SDK to detect mode (mirrors the Android bridge): manual mode
|
|
94
106
|
/// forwards events to the SDK; automatic/off surface `EAC-RN-007` (`false`).
|
|
95
107
|
///
|
|
108
|
+
|
|
109
|
+
/// Whether `ConnectConfig.json` supplied an `AutoLayout` block.
|
|
110
|
+
///
|
|
111
|
+
/// It decides where a defaulted capture delay comes from. When the consumer
|
|
112
|
+
/// configured layout, their `CaptureLayoutDelay` is authoritative — whatever
|
|
113
|
+
/// they wrote, including `0`. When they configured none, the config store
|
|
114
|
+
/// still answers, but with the native SDK's own bundled
|
|
115
|
+
/// `ConnectLayoutConfig.json` — and that value (1 ms) is tuned for the
|
|
116
|
+
/// UIKit trigger, which fires *after* the transition. React Navigation
|
|
117
|
+
/// triggers capture *before* it, so inheriting 1 ms there reproduces the
|
|
118
|
+
/// mid-transition capture this indirection exists to avoid, and diverges
|
|
119
|
+
/// from Android, whose bundled default is 500 ms. No consumer block
|
|
120
|
+
/// therefore means the wrapper's own default applies.
|
|
121
|
+
///
|
|
122
|
+
/// That also excludes the *per-screen* rules in the SDK's bundled config,
|
|
123
|
+
/// deliberately: they are keyed by UIKit view-controller class names from
|
|
124
|
+
/// the SDK's own sample app (`StartViewController`, `WEWKWebViewController`
|
|
125
|
+
/// …) and cannot match a React Navigation route name, and there is no
|
|
126
|
+
/// supported way to add per-screen rules on iOS except through
|
|
127
|
+
/// `ConnectConfig.json` — the pod rewrites its bundled copy on every `pod
|
|
128
|
+
/// install`. So nothing reachable is being dropped.
|
|
129
|
+
///
|
|
130
|
+
/// Resolved in `init` rather than in `load()`, which is where the rest of
|
|
131
|
+
/// the config is applied: `load()` runs on the main actor, so resolving it
|
|
132
|
+
/// there would leave a startup window in which this read as `false` and a
|
|
133
|
+
/// capture silently ignored a configured delay. `init` closes that window —
|
|
134
|
+
/// JS cannot reach a bridge method before the constructor returns.
|
|
135
|
+
private let consumerSuppliedAutoLayout: Bool
|
|
136
|
+
|
|
96
137
|
// Constructor — auto-inits the SDK from `ConnectConfig.json`. Matches the
|
|
97
138
|
// pre-existing auto-init behaviour; consumers that need consent-gated init can call
|
|
98
139
|
// `disable()` immediately and `enable()` once they have permission.
|
|
99
140
|
override init() {
|
|
141
|
+
self.consumerSuppliedAutoLayout =
|
|
142
|
+
ConnectRNParsing.suppliesAutoLayout(Self.parseConnectConfigJSON() ?? [:])
|
|
143
|
+
|
|
100
144
|
super.init()
|
|
101
145
|
|
|
102
146
|
Task { @MainActor [weak self] in
|
|
@@ -112,7 +156,7 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
112
156
|
// future caller.
|
|
113
157
|
@MainActor
|
|
114
158
|
func load() {
|
|
115
|
-
let connectData =
|
|
159
|
+
let connectData = Self.parseConnectConfigJSON()
|
|
116
160
|
|
|
117
161
|
guard let connectData = connectData else {
|
|
118
162
|
configLog.error("AcousticConnectRNConfig.bundle missing or unreadable. SDK not initialised. Verify ConnectConfig.json at your project root and re-run `pod install`.")
|
|
@@ -182,7 +226,7 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
182
226
|
/// `AcousticConnectRNConfig.json`. The bundle is populated at pod install
|
|
183
227
|
/// time by the podspec — see `AcousticConnectRN.podspec`. Returns nil when
|
|
184
228
|
/// the bundle or file is missing; callers fall back to empty values.
|
|
185
|
-
private func parseConnectConfigJSON() -> [String: Any]? {
|
|
229
|
+
private static func parseConnectConfigJSON() -> [String: Any]? {
|
|
186
230
|
let bundle = Bundle(for: Self.self)
|
|
187
231
|
let bundleURL = bundle.resourceURL?.appendingPathComponent("AcousticConnectRNConfig.bundle")
|
|
188
232
|
let resourceBundle = bundleURL.flatMap { Bundle(url: $0) }
|
|
@@ -233,22 +277,46 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
233
277
|
"textBox:textChange", "textBox:textChanged", "textBox:textFieldDidChange", "toggleButton:click"
|
|
234
278
|
]
|
|
235
279
|
|
|
280
|
+
// Keys the bridge consumes somewhere other than this method: load()
|
|
281
|
+
// (the enable parameters and verbose native logging), the push
|
|
282
|
+
// resolver, or the install-time podspec / gradle scripts. Enumerated
|
|
283
|
+
// so the unrecognised-key warning below fires only on keys that
|
|
284
|
+
// nothing consumes. A key falling through this method silently is what
|
|
285
|
+
// kept the layout-config mismatch below hidden for so long.
|
|
286
|
+
let handledElsewhere: Set<String> = [
|
|
287
|
+
"AppKey", "PostMessageUrl", // load() -> enable(with:)
|
|
288
|
+
"useRelease", // load() -> verbose native logging
|
|
289
|
+
"PushEnabled", "iOSPushMode", "iOSAppGroupIdentifier", // ConnectRNParsing.resolvePushConfig
|
|
290
|
+
"iOSDevelopmentTeam", // install-time signing (podspec / Expo plugin)
|
|
291
|
+
"iOSVersion", "AndroidVersion", // install-time (podspec / gradle)
|
|
292
|
+
"AndroidNotificationIconResName", // Android-only
|
|
293
|
+
"layoutConfigAndroid", // Android-only
|
|
294
|
+
]
|
|
295
|
+
|
|
236
296
|
for (key, value) in connectData {
|
|
237
297
|
// Skip keys load() passes directly to enable — re-applying is harmless but redundant.
|
|
238
298
|
if key == "AppKey" || key == "PostMessageUrl" { continue }
|
|
239
299
|
|
|
240
300
|
if tealeafKeys.contains(key) || eocoreKeys.contains(key) {
|
|
241
301
|
ConnectConfigStore.set(key, value: value)
|
|
242
|
-
} else if key
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
ConnectConfigStore.set("AutoLayout", value: autoLayout)
|
|
246
|
-
}
|
|
247
|
-
if let appendMapIds = layoutConfig["AppendMapIds"] {
|
|
248
|
-
ConnectConfigStore.set("AppendMapIds", value: appendMapIds)
|
|
249
|
-
}
|
|
302
|
+
} else if !handledElsewhere.contains(key),
|
|
303
|
+
!ConnectRNParsing.layoutConfigKeys.contains(key) {
|
|
304
|
+
configLog.warning("Connect.\(key, privacy: .public) in ConnectConfig.json is not a key this SDK applies — check it against the documented keys. Unrecognised keys are ignored.")
|
|
250
305
|
}
|
|
251
306
|
}
|
|
307
|
+
|
|
308
|
+
// Resolved outside the loop: two keys feed this block (the shared
|
|
309
|
+
// `layoutConfig` plus the platform-suffixed `layoutConfigIos`, which
|
|
310
|
+
// is what the shipped ConnectConfig.json template writes and what the
|
|
311
|
+
// podspec copies into the bundle verbatim), and their contents map onto
|
|
312
|
+
// differently-named store keys — so it is not a per-key passthrough
|
|
313
|
+
// like the lists above. Matching only the unsuffixed `layoutConfig`
|
|
314
|
+
// here meant the entire iOS layout block was silently dropped, leaving
|
|
315
|
+
// per-screen settings such as ScreenShot unconfigurable from
|
|
316
|
+
// ConnectConfig.json. See ConnectRNParsing.resolveLayoutOverrides.
|
|
317
|
+
for (storeKey, storeValue) in ConnectRNParsing.resolveLayoutOverrides(from: connectData) {
|
|
318
|
+
ConnectConfigStore.set(storeKey, value: storeValue)
|
|
319
|
+
}
|
|
252
320
|
}
|
|
253
321
|
|
|
254
322
|
// MARK: - Gate-keeper API
|
|
@@ -506,18 +574,57 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
506
574
|
func logCustomEvent(eventName: String, values: Dictionary<String, Variant_Bool_String_Double>, level: Double) throws -> Bool {
|
|
507
575
|
let logLevel = try getLogLevel(level: level)
|
|
508
576
|
let result = ConnectCustomEvent().logEvent(eventName, values: convertToAnyDictionary(input: values), level: logLevel)
|
|
577
|
+
return Self.warnIfRejected(result, api: "logCustomEvent", detail: eventName)
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/// Surfaces a `false` returned by a native logging call, and passes it
|
|
581
|
+
/// through unchanged.
|
|
582
|
+
///
|
|
583
|
+
/// The bridge's boolean means "the SDK accepted this for delivery", never
|
|
584
|
+
/// "the collector received it" — nothing on the device knows the latter.
|
|
585
|
+
/// But the *accepted* half was itself invisible: a `false` reached JS as a
|
|
586
|
+
/// bare return value that the wrapper's callers almost never inspect, with
|
|
587
|
+
/// nothing in `os_log`. Callers reporting "the event never arrived" had no
|
|
588
|
+
/// way to tell a rejected call from a delivery problem. One line at
|
|
589
|
+
/// `.warning` distinguishes them.
|
|
590
|
+
///
|
|
591
|
+
/// Deliberately does not change the return value or throw: an analytics
|
|
592
|
+
/// bridge must not turn a rejected event into an app-visible failure.
|
|
593
|
+
///
|
|
594
|
+
/// - Parameters:
|
|
595
|
+
/// - result: The value the native call returned.
|
|
596
|
+
/// - api: Name of the bridge method, for the log line.
|
|
597
|
+
/// - detail: Optional extra identifier, e.g. an event name.
|
|
598
|
+
/// - Returns: `result`, unchanged.
|
|
599
|
+
@discardableResult
|
|
600
|
+
private static func warnIfRejected(_ result: Bool, api: String, detail: String? = nil) -> Bool {
|
|
601
|
+
if !result {
|
|
602
|
+
let suffix = detail.map { " (\($0))" } ?? ""
|
|
603
|
+
bridgeLog.warning("\(api, privacy: .public)\(suffix, privacy: .public): the Connect SDK did not accept the event; nothing was queued for delivery. Check that the SDK is enabled and the payload is valid.")
|
|
604
|
+
}
|
|
509
605
|
return result
|
|
510
606
|
}
|
|
511
607
|
|
|
512
608
|
/// Log signal data.
|
|
609
|
+
///
|
|
610
|
+
/// Takes an `AnyMap` rather than a map of scalars so JS callers can send
|
|
611
|
+
/// arbitrary JSON — nested objects and arrays included. `CTSignalMessage`
|
|
612
|
+
/// embeds the dictionary verbatim and gates only on
|
|
613
|
+
/// `NSJSONSerialization.isValidJSONObject:`, so nesting needs no special
|
|
614
|
+
/// handling beyond producing a JSON-representable dictionary:
|
|
615
|
+
/// `AnyMap.toDictionary()` yields `[String: Any?]` (nested containers
|
|
616
|
+
/// carry optionals too), which `jsonSafeDictionary` normalises by
|
|
617
|
+
/// unwrapping the optionals and mapping `null` to `NSNull`. Nothing is
|
|
618
|
+
/// flattened or reshaped.
|
|
513
619
|
/// - Parameters:
|
|
514
|
-
/// - values:
|
|
620
|
+
/// - values: signal payload; objects, arrays and scalars are all carried through.
|
|
515
621
|
/// - level: set a custom log level to the event.
|
|
516
622
|
/// - Returns: Boolean value will return whether it was able to log the signal message.
|
|
517
|
-
func logSignal(values:
|
|
623
|
+
func logSignal(values: AnyMap, level: Double) throws -> Bool {
|
|
518
624
|
let logLevel = try getLogLevel(level: level)
|
|
519
|
-
let
|
|
520
|
-
|
|
625
|
+
let payload = ConnectRNParsing.jsonSafeDictionary(values.toDictionary())
|
|
626
|
+
let result = ConnectCustomEvent().logSignal(payload, level: logLevel)
|
|
627
|
+
return Self.warnIfRejected(result, api: "logSignal")
|
|
521
628
|
}
|
|
522
629
|
|
|
523
630
|
/// Logs a user identity so device activity can be associated with a known
|
|
@@ -535,18 +642,30 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
535
642
|
/// - identifierValue: Identifier value, e.g. "user@example.com".
|
|
536
643
|
/// - signalType: Optional signal type; defaults to "loggedIn" when omitted.
|
|
537
644
|
/// - additionalParameters: Optional extra key/value pairs merged into the
|
|
538
|
-
/// signal. Defaults
|
|
539
|
-
///
|
|
645
|
+
/// signal. Defaults, only when `nil` (omitted), to the method attribute
|
|
646
|
+
/// the resolved signal type requires — `["loginMethod": "email"]` for
|
|
647
|
+
/// `loggedIn`, `["registrationMethod": "email"]` otherwise (see
|
|
648
|
+
/// `ConnectRNParsing.defaultIdentityParameters(for:)`). An explicit map
|
|
649
|
+
/// — including an empty one — is used as-is.
|
|
540
650
|
/// - Returns: A promise resolving to `true` if the signal was dispatched,
|
|
541
651
|
/// `false` otherwise. Never rejects.
|
|
542
652
|
func logIdentity(identifierName: String, identifierValue: String, signalType: String?, additionalParameters: [String: String]?) throws -> Promise<Bool> {
|
|
653
|
+
let resolvedSignalType = signalType ?? "loggedIn"
|
|
654
|
+
let resolvedParameters = additionalParameters
|
|
655
|
+
?? ConnectRNParsing.defaultIdentityParameters(for: resolvedSignalType)
|
|
543
656
|
return Promise.async { @MainActor in
|
|
544
|
-
ConnectSDK.shared.identity.log(
|
|
657
|
+
let result = ConnectSDK.shared.identity.log(
|
|
545
658
|
identifierName: identifierName,
|
|
546
659
|
identifierValue: identifierValue,
|
|
547
|
-
signalType:
|
|
548
|
-
additionalParameters:
|
|
660
|
+
signalType: resolvedSignalType,
|
|
661
|
+
additionalParameters: resolvedParameters
|
|
549
662
|
)
|
|
663
|
+
// An identity signal the SDK accepts can still be rejected
|
|
664
|
+
// downstream by schema validation — a mismatched method attribute
|
|
665
|
+
// has cost a customer 22 signals while every call reported
|
|
666
|
+
// success. The bridge cannot see that; it can at least report the
|
|
667
|
+
// half it does see.
|
|
668
|
+
return HybridAcousticConnectRN.warnIfRejected(result, api: "logIdentity", detail: resolvedSignalType)
|
|
550
669
|
}
|
|
551
670
|
}
|
|
552
671
|
|
|
@@ -651,22 +770,163 @@ class HybridAcousticConnectRN: HybridAcousticConnectRNSpec {
|
|
|
651
770
|
return result
|
|
652
771
|
}
|
|
653
772
|
|
|
654
|
-
///
|
|
773
|
+
/// The view controller a layout capture should describe — the iOS analogue
|
|
774
|
+
/// of the Android bridge's `getCurrentActivity()`.
|
|
775
|
+
///
|
|
776
|
+
/// Mirrors the framework's own resolution (`TLFUILifeCycleAIC
|
|
777
|
+
/// -getDefaultVC:`, which is also what the pre-Nitro Objective-C bridge
|
|
778
|
+
/// did here): start at the foreground key window's root, walk the
|
|
779
|
+
/// `presentedViewController` chain to whatever is actually on top — a React
|
|
780
|
+
/// Native `<Modal>` presents its own host controller — and unwrap
|
|
781
|
+
/// container controllers to the child that is really showing.
|
|
782
|
+
///
|
|
783
|
+
/// Two deliberate departures from that precedent:
|
|
784
|
+
///
|
|
785
|
+
/// - It enumerates `UIScene`s rather than asking EOCore for the window.
|
|
786
|
+
/// This bridge links `Connect` only, so `EOApplicationHelper` is not
|
|
787
|
+
/// reachable, and scene enumeration is also the correct answer on a
|
|
788
|
+
/// multi-window iPad where several scenes each hold a key window.
|
|
789
|
+
/// - It unwraps `UITabBarController` as well as `UINavigationController`.
|
|
790
|
+
/// The framework only unwraps navigation controllers; capturing a tab
|
|
791
|
+
/// controller is not wrong (its view contains the selected child), but
|
|
792
|
+
/// the selected child is the screen the capture is named after.
|
|
793
|
+
///
|
|
794
|
+
/// Must be called on the main thread — see `captureScreenLayout`.
|
|
795
|
+
private static func resolveTopViewController() -> UIViewController? {
|
|
796
|
+
let windowScenes = UIApplication.shared.connectedScenes
|
|
797
|
+
.compactMap { $0 as? UIWindowScene }
|
|
798
|
+
// Prefer the scene the user is actually looking at, but do not stop
|
|
799
|
+
// there: a foreground scene can exist with no window yet, while a
|
|
800
|
+
// merely-inactive one still holds the window that is on screen. So
|
|
801
|
+
// order the scenes by preference and take the first that yields a
|
|
802
|
+
// window, rather than committing to one scene up front.
|
|
803
|
+
let orderedScenes =
|
|
804
|
+
windowScenes.filter { $0.activationState == .foregroundActive }
|
|
805
|
+
+ windowScenes.filter { $0.activationState != .foregroundActive }
|
|
806
|
+
// `keyWindow` is nil for a scene whose windows are all non-key (a
|
|
807
|
+
// freshly attached scene, a scene hosting only an overlay), hence the
|
|
808
|
+
// `windows.first` fallback.
|
|
809
|
+
guard let window = orderedScenes.compactMap({ $0.keyWindow ?? $0.windows.first }).first else {
|
|
810
|
+
return nil
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
var top = window.rootViewController
|
|
814
|
+
// Bounded rather than an open `while`. In practice the chain is a short
|
|
815
|
+
// linked list, but this runs on every navigation, so a pathological
|
|
816
|
+
// cycle must not hang the main thread.
|
|
817
|
+
var hops = 0
|
|
818
|
+
while hops < 32 {
|
|
819
|
+
hops += 1
|
|
820
|
+
// Presentation first: `presentedViewController` also reports a
|
|
821
|
+
// modal put up by a descendant, so checking it before unwrapping a
|
|
822
|
+
// container lands on the modal directly instead of on the
|
|
823
|
+
// container's child underneath it.
|
|
824
|
+
if let presented = top?.presentedViewController {
|
|
825
|
+
top = presented
|
|
826
|
+
continue
|
|
827
|
+
}
|
|
828
|
+
if let nav = top as? UINavigationController,
|
|
829
|
+
let visible = nav.topViewController {
|
|
830
|
+
top = visible
|
|
831
|
+
continue
|
|
832
|
+
}
|
|
833
|
+
if let tabs = top as? UITabBarController,
|
|
834
|
+
let selected = tabs.selectedViewController {
|
|
835
|
+
top = selected
|
|
836
|
+
continue
|
|
837
|
+
}
|
|
838
|
+
break
|
|
839
|
+
}
|
|
840
|
+
return top
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
/// Resolves the top view controller and hands it to the framework, as one
|
|
844
|
+
/// unit. **Must run on the main thread** — both halves need it:
|
|
845
|
+
///
|
|
846
|
+
/// - `resolveTopViewController` touches UIApplication / UIWindowScene /
|
|
847
|
+
/// UIViewController.
|
|
848
|
+
/// - The framework's own overloads split on the delay.
|
|
849
|
+
/// `logScreenLayoutWithViewController:andDelay:andName:` wraps its work in
|
|
850
|
+
/// a `dispatch_after` onto the main queue and returns `YES` immediately,
|
|
851
|
+
/// but `logScreenLayoutWithViewController:andName:` — the `delayMs <= 0`
|
|
852
|
+
/// path — runs the whole view-tree walk synchronously on the *caller's*
|
|
853
|
+
/// thread. Calling that from the JS thread would traverse UIKit off-main.
|
|
854
|
+
///
|
|
855
|
+
/// Returns whether the framework accepted the capture; `false` also covers
|
|
856
|
+
/// "no view controller resolved", which is logged here because the caller
|
|
857
|
+
/// may no longer be in a position to report it (see `logScreenLayout`).
|
|
858
|
+
@discardableResult
|
|
859
|
+
private static func captureScreenLayout(name: String, delayMs: Double) -> Bool {
|
|
860
|
+
guard let uvc = resolveTopViewController() else {
|
|
861
|
+
bridgeLog.error("logScreenLayout(\(name, privacy: .public)): no view controller resolved; skipping capture.")
|
|
862
|
+
return false
|
|
863
|
+
}
|
|
864
|
+
if delayMs <= 0 {
|
|
865
|
+
return ConnectCustomEvent().logScreenLayout(with: uvc, andName: name)
|
|
866
|
+
}
|
|
867
|
+
return ConnectCustomEvent().logScreenLayout(with: uvc, andDelay: delayMs / 1000.0, andName: name)
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/// Requests that the framework logs the layout of the screen.
|
|
871
|
+
///
|
|
655
872
|
/// - Parameters:
|
|
656
873
|
/// - name: Custom name to associate with the viewcontroller.
|
|
657
|
-
/// - delay:
|
|
874
|
+
/// - delay: Milliseconds to wait before capturing. A negative value means
|
|
875
|
+
/// "use the `CaptureLayoutDelay` configured for this screen", which is
|
|
876
|
+
/// what the JS wrapper sends when the caller names no delay.
|
|
658
877
|
/// - Returns: Boolean value will return whether it was able to log the screen layout event.
|
|
878
|
+
///
|
|
879
|
+
/// Two things worth knowing before editing this:
|
|
880
|
+
///
|
|
881
|
+
/// - `delay` crosses the bridge in **milliseconds**, matching both
|
|
882
|
+
/// `CaptureLayoutDelay` and the Android bridge, but the native
|
|
883
|
+
/// `andDelay:` API takes **seconds** (`delay * NSEC_PER_SEC`). The
|
|
884
|
+
/// conversion below is the whole reason a raw passthrough was wrong: a
|
|
885
|
+
/// caller asking for a 300 ms deferral used to get 300 *seconds*.
|
|
886
|
+
/// - The no-delay overload captures synchronously, on the calling thread,
|
|
887
|
+
/// with no reference to the configured delay at all. Sending 0 for every
|
|
888
|
+
/// screen — which the wrapper used to do — therefore fired the capture
|
|
889
|
+
/// mid-transition and made `CaptureLayoutDelay` inert on iOS.
|
|
890
|
+
///
|
|
891
|
+
/// The view controller used to be a hardcoded nil, and a nil controller is
|
|
892
|
+
/// not benign: the framework's layout processor guards on a non-nil
|
|
893
|
+
/// controller and reports failure without queueing anything, so every
|
|
894
|
+
/// JS-triggered capture on iOS produced no layout message at all — while
|
|
895
|
+
/// the deferred overload still returned true the moment it scheduled, so
|
|
896
|
+
/// the bridge reported success for a capture that never happened.
|
|
659
897
|
func logScreenLayout(name: String, delay: Double) throws -> Bool {
|
|
660
|
-
//
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
898
|
+
// Config reads only — safe on any thread, and cheap enough to do before
|
|
899
|
+
// the hop so the closure below captures plain values.
|
|
900
|
+
let configuredLayout = consumerSuppliedAutoLayout
|
|
901
|
+
? ConnectConfigStore.dictionary(forKey: ConnectRNParsing.autoLayoutConfigKey)
|
|
902
|
+
: nil
|
|
903
|
+
let delayMs = delay < 0
|
|
904
|
+
? ConnectRNParsing.captureLayoutDelayMs(for: name, in: configuredLayout)
|
|
905
|
+
: delay
|
|
906
|
+
|
|
907
|
+
// Already on main: run inline and report what the framework actually
|
|
908
|
+
// said. This is the only path that can return a truthful failure.
|
|
909
|
+
if Thread.isMainThread {
|
|
910
|
+
return Self.captureScreenLayout(name: name, delayMs: delayMs)
|
|
667
911
|
}
|
|
668
|
-
|
|
669
|
-
|
|
912
|
+
|
|
913
|
+
// Off main — in practice the JS thread. Dispatch **async**, never
|
|
914
|
+
// `sync`: the main thread can itself synchronously wait on the JS
|
|
915
|
+
// thread (an established React Native / Fabric pattern, the
|
|
916
|
+
// `RCTUnsafeExecuteOnMainQueueSync` family), so a blocking hop from
|
|
917
|
+
// here inverts the lock order and can deadlock the app on an ordinary
|
|
918
|
+
// navigation. Async costs the return value — resolution and the
|
|
919
|
+
// framework call both happen after this method has returned — so a
|
|
920
|
+
// failure surfaces in the log inside `captureScreenLayout` rather than
|
|
921
|
+
// in the result, and `true` here means "capture scheduled", exactly the
|
|
922
|
+
// semantics the framework's own delayed overload already has.
|
|
923
|
+
// Named explicitly rather than through `Self` so this escaping closure
|
|
924
|
+
// captures nothing but the two value parameters — no reference to the
|
|
925
|
+
// HybridObject outlives the call.
|
|
926
|
+
DispatchQueue.main.async {
|
|
927
|
+
HybridAcousticConnectRN.captureScreenLayout(name: name, delayMs: delayMs)
|
|
928
|
+
}
|
|
929
|
+
return true
|
|
670
930
|
}
|
|
671
931
|
|
|
672
932
|
/// Logs a dialog show event with the specified dialog information.
|
package/lib/commonjs/TLTRN.js
CHANGED
|
@@ -102,11 +102,42 @@ class TLTRN {
|
|
|
102
102
|
}
|
|
103
103
|
return result;
|
|
104
104
|
};
|
|
105
|
-
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Sentinel for the native `delay` argument meaning "use the
|
|
108
|
+
* `CaptureLayoutDelay` configured for this screen". Both bridges resolve it
|
|
109
|
+
* from the layout config; anything >= 0 is an explicit delay in
|
|
110
|
+
* milliseconds.
|
|
111
|
+
*/
|
|
112
|
+
static USE_CONFIGURED_CAPTURE_DELAY = -1;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Captures the layout of the current screen.
|
|
116
|
+
*
|
|
117
|
+
* @param name Screen name to associate with the capture.
|
|
118
|
+
* @param delayMs Milliseconds to wait before capturing. Omit it to use the
|
|
119
|
+
* `CaptureLayoutDelay` from `ConnectConfig.json` — that is the setting to
|
|
120
|
+
* reach for when a screen transition animation is still running and the
|
|
121
|
+
* capture would otherwise catch a half-rendered screen. Pass `0` to
|
|
122
|
+
* capture immediately.
|
|
123
|
+
*
|
|
124
|
+
* Passing no delay used to send a hardcoded `0`, which made
|
|
125
|
+
* `CaptureLayoutDelay` inert for React Native apps and fired the capture at
|
|
126
|
+
* the *start* of the transition rather than after it.
|
|
127
|
+
*
|
|
128
|
+
* @returns With no `delayMs` — the normal case — only that the capture was
|
|
129
|
+
* **scheduled**, not that it produced a layout message. The native
|
|
130
|
+
* deferred overload dispatches and returns immediately, so anything that
|
|
131
|
+
* goes wrong once it runs (no view controller resolved, layout capture
|
|
132
|
+
* gated off by config) cannot be reflected here; those surface in logcat
|
|
133
|
+
* / os_log instead. Pass `0` and the value describes the capture itself,
|
|
134
|
+
* at the cost of capturing mid-transition.
|
|
135
|
+
*/
|
|
136
|
+
static logScreenLayout = (name, delayMs) => {
|
|
106
137
|
TLTRN.currentScreen = name || '';
|
|
107
138
|
let result = false;
|
|
108
139
|
try {
|
|
109
|
-
result = _index.default.logScreenLayout(TLTRN.currentScreen,
|
|
140
|
+
result = _index.default.logScreenLayout(TLTRN.currentScreen, delayMs === undefined ? TLTRN.USE_CONFIGURED_CAPTURE_DELAY : delayMs);
|
|
110
141
|
} catch (error) {
|
|
111
142
|
console.log('LogScreenLayout error: ', error.message);
|
|
112
143
|
}
|
|
@@ -154,8 +185,82 @@ class TLTRN {
|
|
|
154
185
|
}
|
|
155
186
|
return result;
|
|
156
187
|
};
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Keys already warned about, so a call site inside a render or a list loop
|
|
191
|
+
* warns once rather than on every pass.
|
|
192
|
+
*/
|
|
193
|
+
static warnedNestedValueSites = new Set();
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Cap on {@link warnedNestedValueSites}.
|
|
197
|
+
*
|
|
198
|
+
* The site key includes the nested keys' names, so a payload built from an
|
|
199
|
+
* API response — per-record ids, timestamps — makes every call a distinct
|
|
200
|
+
* site, and the set would then grow for the life of the session. By the
|
|
201
|
+
* hundredth distinct shape the warning has made its point, so it stops
|
|
202
|
+
* instead of accumulating: bounded memory matters more than warning about
|
|
203
|
+
* shape 101.
|
|
204
|
+
*/
|
|
205
|
+
static WARNED_NESTED_VALUE_SITES_MAX = 100;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Warns when a flat-values payload carries a nested object or array.
|
|
209
|
+
*
|
|
210
|
+
* `logCustomEvent`/`logDialogCustomEvent` are typed for flat scalars, but
|
|
211
|
+
* TypeScript types are erased at runtime: a payload built from an API
|
|
212
|
+
* response, widened through `any`, or passed from untyped JS reaches the
|
|
213
|
+
* bridge with its nesting intact. Both platforms then reshape it silently —
|
|
214
|
+
* Android's SDK chain is typed `HashMap<String, String>` end to end, so a
|
|
215
|
+
* nested value is stringified into whatever its `toString()` yields — and
|
|
216
|
+
* the call still returns `true`. `logSignal` is the API that carries nested
|
|
217
|
+
* JSON on both platforms.
|
|
218
|
+
*
|
|
219
|
+
* Warning only: the payload is passed through untouched, so this changes no
|
|
220
|
+
* behaviour and cannot break a caller who is relying on today's reshaping.
|
|
221
|
+
*
|
|
222
|
+
* @param api Name of the calling API, for the message.
|
|
223
|
+
* @param values The payload about to cross the bridge.
|
|
224
|
+
*/
|
|
225
|
+
static warnOnNestedValues = (api, values) => {
|
|
226
|
+
if (values == null || typeof values !== 'object') {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const nested = Object.keys(values).filter(key => {
|
|
230
|
+
const value = values[key];
|
|
231
|
+
return typeof value === 'object' && value !== null;
|
|
232
|
+
});
|
|
233
|
+
if (nested.length === 0) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const site = `${api}:${nested.sort().join(',')}`;
|
|
237
|
+
if (TLTRN.warnedNestedValueSites.has(site)) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (TLTRN.warnedNestedValueSites.size >= TLTRN.WARNED_NESTED_VALUE_SITES_MAX) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
TLTRN.warnedNestedValueSites.add(site);
|
|
244
|
+
console.warn(`TLTRN.${api}: nested value(s) [${nested.sort().join(', ')}] will be flattened — ` + `${api} carries flat scalars only, and the native SDKs reshape anything else ` + `without reporting it. Use logSignal for nested JSON; it is carried intact on ` + `both platforms.`);
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Logs a custom event.
|
|
249
|
+
*
|
|
250
|
+
* @param eventName Event name, as it appears in the posted JSON.
|
|
251
|
+
* @param values Flat key/value pairs. Nested objects and arrays are NOT
|
|
252
|
+
* supported here and are reshaped by the native SDKs — use `logSignal`
|
|
253
|
+
* for nested JSON.
|
|
254
|
+
* @param level Monitoring level for this event.
|
|
255
|
+
* @returns Whether the native SDK **accepted the event for delivery** —
|
|
256
|
+
* not whether the collector received it. The event is queued locally and
|
|
257
|
+
* posted later, so no return value from this call can attest to delivery;
|
|
258
|
+
* a `true` here means only that the SDK took the event. A `false` is also
|
|
259
|
+
* logged natively (logcat / os_log) so the rejection is visible.
|
|
260
|
+
*/
|
|
157
261
|
static logCustomEvent = async (eventName, values, level) => {
|
|
158
262
|
let result = false;
|
|
263
|
+
TLTRN.warnOnNestedValues('logCustomEvent', values);
|
|
159
264
|
try {
|
|
160
265
|
result = _index.default.logCustomEvent(eventName, values, level);
|
|
161
266
|
} catch (error) {
|
|
@@ -192,8 +297,16 @@ class TLTRN {
|
|
|
192
297
|
}
|
|
193
298
|
return result;
|
|
194
299
|
};
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Logs a custom event tied to a dialog.
|
|
303
|
+
*
|
|
304
|
+
* Same flat-values contract and same return-value meaning as
|
|
305
|
+
* {@link logCustomEvent} — it routes to the same native API.
|
|
306
|
+
*/
|
|
195
307
|
static logDialogCustomEvent = async (dialogId, eventName, values) => {
|
|
196
308
|
let result = false;
|
|
309
|
+
TLTRN.warnOnNestedValues('logDialogCustomEvent', values);
|
|
197
310
|
try {
|
|
198
311
|
result = _index.default.logDialogCustomEvent(dialogId, eventName, values);
|
|
199
312
|
} catch (error) {
|
|
@@ -293,7 +406,7 @@ class TLTRN {
|
|
|
293
406
|
static logTeal = async () => {
|
|
294
407
|
try {
|
|
295
408
|
TLTRN.isLoggingData = 1;
|
|
296
|
-
var res = await _index.default.logScreenLayout(TLTRN.currentScreen,
|
|
409
|
+
var res = await _index.default.logScreenLayout(TLTRN.currentScreen, TLTRN.USE_CONFIGURED_CAPTURE_DELAY);
|
|
297
410
|
var dict = {
|
|
298
411
|
ReactLayoutTime: TLTRN.totalRenderTime
|
|
299
412
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_MessageQueue","_interopRequireDefault","require","_reactNative","_KeyboardListener","_DialogListener","_index","e","__esModule","default","previousGlobalErrorHandler","global","ErrorUtils","getGlobalHandler","setGlobalHandler","isFatal","AcousticConnectRN","logExceptionEvent","JSON","stringify","loggingError","console","warn","message","TLTRN","currentScreen","lastJSBridgeMessageTime","totalRenderTime","messageRenderTime","countMsgs","messageConsole","lastMessageConsole","isLoggingData","displayDebug","myTimer","handle","started","time","startTimer","setInterval","checkTime","stopTimer","clearInterval","init","initialCurrentScreen","showDebugConsoleMessages","undefined","currentScreenMsg","MessageQueue","spy","listenToBridge","interceptKeyboardEvents","enable","keyListener","logScreenViewPageName","name","result","setCurrentScreenName","error","log","logScreenViewContextLoad","prevName","logScreenLayout","logClickEvent","event","target","__nativeTag","_nativeTag","controlId","fiberId","_targetInst","memoizedProps","id","length","Array","isArray","_dispatchInstances","found","find","node","logTextChangeEvent","text","_ariaLabel","Platform","OS","logCustomEvent","eventName","values","level","logDialogShowEvent","dialogId","dialogTitle","dialogType","logDialogDismissEvent","dismissReason","logDialogButtonClickEvent","buttonText","buttonIndex","logDialogCustomEvent","eventListenerRegistered","eventListenerUnsubscribe","interceptDialogEvents","dialogListener","DialogListener","getInstance","startIntercepting","addEventListener","stopIntercepting","now","Date","getTime","from","type","data","module","method","args","logTeal","res","dict","ReactLayoutTime","KeyboardListener","_instance","_default","exports"],"sourceRoot":"../../src","sources":["TLTRN.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_MessageQueue","_interopRequireDefault","require","_reactNative","_KeyboardListener","_DialogListener","_index","e","__esModule","default","previousGlobalErrorHandler","global","ErrorUtils","getGlobalHandler","setGlobalHandler","isFatal","AcousticConnectRN","logExceptionEvent","JSON","stringify","loggingError","console","warn","message","TLTRN","currentScreen","lastJSBridgeMessageTime","totalRenderTime","messageRenderTime","countMsgs","messageConsole","lastMessageConsole","isLoggingData","displayDebug","myTimer","handle","started","time","startTimer","setInterval","checkTime","stopTimer","clearInterval","init","initialCurrentScreen","showDebugConsoleMessages","undefined","currentScreenMsg","MessageQueue","spy","listenToBridge","interceptKeyboardEvents","enable","keyListener","logScreenViewPageName","name","result","setCurrentScreenName","error","log","logScreenViewContextLoad","prevName","USE_CONFIGURED_CAPTURE_DELAY","logScreenLayout","delayMs","logClickEvent","event","target","__nativeTag","_nativeTag","controlId","fiberId","_targetInst","memoizedProps","id","length","Array","isArray","_dispatchInstances","found","find","node","logTextChangeEvent","text","_ariaLabel","Platform","OS","warnedNestedValueSites","Set","WARNED_NESTED_VALUE_SITES_MAX","warnOnNestedValues","api","values","nested","Object","keys","filter","key","value","site","sort","join","has","size","add","logCustomEvent","eventName","level","logDialogShowEvent","dialogId","dialogTitle","dialogType","logDialogDismissEvent","dismissReason","logDialogButtonClickEvent","buttonText","buttonIndex","logDialogCustomEvent","eventListenerRegistered","eventListenerUnsubscribe","interceptDialogEvents","dialogListener","DialogListener","getInstance","startIntercepting","addEventListener","stopIntercepting","now","Date","getTime","from","type","data","module","method","args","logTeal","res","dict","ReactLayoutTime","KeyboardListener","_instance","_default","exports"],"sourceRoot":"../../src","sources":["TLTRN.ts"],"mappings":"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","ignoreList":[]}
|