@xhsreds/reds-rn-next 0.8.4-fix-image-callbacks202510011434 → 0.8.4-image-optimization202510221852
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/coverage/.tmp/coverage-0.json +1 -1
- package/coverage/.tmp/coverage-1.json +1 -1
- package/coverage/.tmp/coverage-10.json +1 -1
- package/coverage/.tmp/coverage-11.json +1 -1
- package/coverage/.tmp/coverage-12.json +1 -1
- package/coverage/.tmp/coverage-13.json +1 -1
- package/coverage/.tmp/coverage-15.json +1 -1
- package/coverage/.tmp/coverage-16.json +1 -1
- package/coverage/.tmp/coverage-17.json +1 -1
- package/coverage/.tmp/coverage-19.json +1 -1
- package/coverage/.tmp/coverage-2.json +1 -1
- package/coverage/.tmp/coverage-20.json +1 -1
- package/coverage/.tmp/coverage-21.json +1 -1
- package/coverage/.tmp/coverage-22.json +1 -1
- package/coverage/.tmp/coverage-23.json +1 -1
- package/coverage/.tmp/coverage-24.json +1 -1
- package/coverage/.tmp/coverage-26.json +1 -1
- package/coverage/.tmp/coverage-27.json +1 -1
- package/coverage/.tmp/coverage-28.json +1 -1
- package/coverage/.tmp/coverage-29.json +1 -1
- package/coverage/.tmp/coverage-3.json +1 -1
- package/coverage/.tmp/coverage-30.json +1 -1
- package/coverage/.tmp/coverage-31.json +1 -1
- package/coverage/.tmp/coverage-32.json +1 -1
- package/coverage/.tmp/coverage-33.json +1 -1
- package/coverage/.tmp/coverage-36.json +1 -1
- package/coverage/.tmp/coverage-37.json +1 -1
- package/coverage/.tmp/coverage-38.json +1 -1
- package/coverage/.tmp/coverage-4.json +1 -1
- package/coverage/.tmp/coverage-40.json +1 -1
- package/coverage/.tmp/coverage-41.json +1 -1
- package/coverage/.tmp/coverage-42.json +1 -1
- package/coverage/.tmp/coverage-5.json +1 -1
- package/coverage/.tmp/coverage-6.json +1 -1
- package/coverage/.tmp/coverage-7.json +1 -1
- package/coverage/.tmp/coverage-8.json +1 -1
- package/coverage/.tmp/coverage-9.json +1 -1
- package/lib/cjs/_chunks/{C9tZEm0t.js → vVKkFPW_.js} +2 -2
- package/lib/cjs/_chunks/{C9tZEm0t.js.map → vVKkFPW_.js.map} +1 -1
- package/lib/cjs/components/ActionSheets/ActionSheets.js +1 -1
- package/lib/cjs/components/ActionSheets/ActionSheetsItem.js +1 -1
- package/lib/cjs/components/ActionSheets/api.js +1 -1
- package/lib/cjs/components/ActionSheets/hooks.js +1 -1
- package/lib/cjs/components/ActionSheets/index.js +1 -1
- package/lib/cjs/components/ActionablePopover/ActionablePopover.js +1 -1
- package/lib/cjs/components/ActionablePopover/index.js +1 -1
- package/lib/cjs/components/Alert/Alert.js +1 -1
- package/lib/cjs/components/Alert/hooks/alert.js +1 -1
- package/lib/cjs/components/Alert/index.js +1 -1
- package/lib/cjs/components/Alert/styles.js +1 -1
- package/lib/cjs/components/Avatar/Avatar.js +1 -1
- package/lib/cjs/components/Avatar/index.js +1 -1
- package/lib/cjs/components/Avatar/styles.js +1 -1
- package/lib/cjs/components/AvatarGroup/AvatarGroup.js +1 -1
- package/lib/cjs/components/AvatarGroup/index.js +1 -1
- package/lib/cjs/components/Badge/Badge.js +1 -1
- package/lib/cjs/components/Badge/index.js +1 -1
- package/lib/cjs/components/Badge/styles.js +1 -1
- package/lib/cjs/components/BottomBar/BottomBar.js +1 -1
- package/lib/cjs/components/BottomBar/index.js +1 -1
- package/lib/cjs/components/Button/Button.js +1 -1
- package/lib/cjs/components/Button/Viewable.js +1 -1
- package/lib/cjs/components/Button/index.js +1 -1
- package/lib/cjs/components/Button/styleMap.js +1 -1
- package/lib/cjs/components/Carousel/Carousel.js +1 -1
- package/lib/cjs/components/Carousel/index.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/CheckBox.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/CheckBoxGroup.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/index.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/styles.js +1 -1
- package/lib/cjs/components/Collapse/Collapse.js +1 -1
- package/lib/cjs/components/Collapse/Item/Item.js +1 -1
- package/lib/cjs/components/Collapse/Item/styles.js +1 -1
- package/lib/cjs/components/Collapse/index.js +1 -1
- package/lib/cjs/components/ConfigProvider/ConfigProvider.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/themeToken/index.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
- package/lib/cjs/components/ConfigProvider/index.js +1 -1
- package/lib/cjs/components/DatePicker/DatePicker.js +1 -1
- package/lib/cjs/components/DatePicker/api.js +1 -1
- package/lib/cjs/components/DatePicker/index.js +1 -1
- package/lib/cjs/components/Divider/Divider.js +1 -1
- package/lib/cjs/components/Divider/index.js +1 -1
- package/lib/cjs/components/Divider/styles.js +1 -1
- package/lib/cjs/components/DropDown/DropDown.js +1 -1
- package/lib/cjs/components/DropDown/DropDownItem.js +1 -1
- package/lib/cjs/components/DropDown/index.js +1 -1
- package/lib/cjs/components/Empty/Empty.js +1 -1
- package/lib/cjs/components/Empty/index.js +1 -1
- package/lib/cjs/components/Empty/styles.js +1 -1
- package/lib/cjs/components/FAB/FAB.js +1 -1
- package/lib/cjs/components/FAB/index.js +1 -1
- package/lib/cjs/components/Form/Form.js +1 -1
- package/lib/cjs/components/Form/FormItem.js +1 -1
- package/lib/cjs/components/Form/index.js +1 -1
- package/lib/cjs/components/Form/styles.js +1 -1
- package/lib/cjs/components/Image/Image.js +42 -101
- package/lib/cjs/components/Image/Image.js.map +1 -1
- package/lib/cjs/components/Image/Image69.js +2 -1
- package/lib/cjs/components/Image/Image69.js.map +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/cjs/components/Image/hook/index.js +3 -1
- package/lib/cjs/components/Image/hook/index.js.map +1 -1
- package/lib/cjs/components/Image/hook/useImageId.js +18 -0
- package/lib/cjs/components/Image/hook/useImageId.js.map +1 -0
- package/lib/cjs/components/Image/index.js +3 -1
- package/lib/cjs/components/Image/index.js.map +1 -1
- package/lib/cjs/components/Image/manager/ImageAPMManager.js +397 -0
- package/lib/cjs/components/Image/manager/ImageAPMManager.js.map +1 -0
- package/lib/cjs/components/Image/manager/index.js +12 -0
- package/lib/cjs/components/Image/manager/index.js.map +1 -0
- package/lib/cjs/components/Image/manager/types.js +3 -0
- package/lib/cjs/components/Image/manager/types.js.map +1 -0
- package/lib/cjs/components/Image/utils.js +1 -3
- package/lib/cjs/components/Image/utils.js.map +1 -1
- package/lib/cjs/components/ImagePreview/ImagePreview.js +1 -1
- package/lib/cjs/components/ImagePreview/api.js +1 -1
- package/lib/cjs/components/ImagePreview/index.js +1 -1
- package/lib/cjs/components/LanguageProvider/hooks/useLanguage.js +1 -1
- package/lib/cjs/components/LanguageProvider/index.js +1 -1
- package/lib/cjs/components/List/List.js +1 -1
- package/lib/cjs/components/List/ListItem/ListItem.js +1 -1
- package/lib/cjs/components/List/index.js +1 -1
- package/lib/cjs/components/List/styles.js +1 -1
- package/lib/cjs/components/MiniSnackBar/MiniSnackBar.js +1 -1
- package/lib/cjs/components/MiniSnackBar/index.js +1 -1
- package/lib/cjs/components/MiniSnackBar/styles.js +1 -1
- package/lib/cjs/components/NavigationBar/NavigationBar.js +1 -1
- package/lib/cjs/components/NavigationBar/index.js +1 -1
- package/lib/cjs/components/NavigationBar/styles.js +1 -1
- package/lib/cjs/components/NoticeBar/NoticeBar.js +1 -1
- package/lib/cjs/components/NoticeBar/index.js +1 -1
- package/lib/cjs/components/Picker/Picker.js +1 -1
- package/lib/cjs/components/Picker/api.js +1 -1
- package/lib/cjs/components/Picker/index.js +1 -1
- package/lib/cjs/components/PickerView/PickerView.js +1 -1
- package/lib/cjs/components/PickerView/Wheel.js +1 -1
- package/lib/cjs/components/PickerView/index.js +1 -1
- package/lib/cjs/components/Popover/Popover.js +1 -1
- package/lib/cjs/components/Popover/index.js +1 -1
- package/lib/cjs/components/Portal/core/PortalProvider.js +1 -1
- package/lib/cjs/components/Portal/index.js +1 -1
- package/lib/cjs/components/Progress/Progress.js +1 -1
- package/lib/cjs/components/Progress/index.js +1 -1
- package/lib/cjs/components/Progress/styles.js +1 -1
- package/lib/cjs/components/ProgressIndicator/ProgressIndicator.js +1 -1
- package/lib/cjs/components/ProgressIndicator/index.js +1 -1
- package/lib/cjs/components/ProgressIndicator/styles.js +1 -1
- package/lib/cjs/components/PullRefresh/PullRefresh.js +1 -1
- package/lib/cjs/components/PullRefresh/component.js +1 -1
- package/lib/cjs/components/PullRefresh/index.js +1 -1
- package/lib/cjs/components/Radio/Radio.js +3 -1
- package/lib/cjs/components/Radio/Radio.js.map +1 -1
- package/lib/cjs/components/Radio/RadioGroup.js +1 -1
- package/lib/cjs/components/Radio/index.js +3 -1
- package/lib/cjs/components/Radio/index.js.map +1 -1
- package/lib/cjs/components/Radio/styles.js +1 -1
- package/lib/cjs/components/Rate/Rate.js +1 -1
- package/lib/cjs/components/Rate/index.js +1 -1
- package/lib/cjs/components/Result/Result.js +1 -1
- package/lib/cjs/components/Result/index.js +1 -1
- package/lib/cjs/components/Result/styles.js +1 -1
- package/lib/cjs/components/Search/Search.js +1 -1
- package/lib/cjs/components/Search/index.js +1 -1
- package/lib/cjs/components/Search/styles.js +1 -1
- package/lib/cjs/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/cjs/components/SegmentedControl/index.js +1 -1
- package/lib/cjs/components/Sheets/AnimatedSheets.js +1 -1
- package/lib/cjs/components/Sheets/Sheets.js +1 -1
- package/lib/cjs/components/Sheets/api.js +1 -1
- package/lib/cjs/components/Sheets/index.js +1 -1
- package/lib/cjs/components/Skeleton/Item/SkeletonItem.js +1 -1
- package/lib/cjs/components/Skeleton/Item/SkeletonItem69.js +1 -1
- package/lib/cjs/components/Skeleton/Skeleton.js +1 -1
- package/lib/cjs/components/Skeleton/Skeleton69.js +1 -1
- package/lib/cjs/components/Skeleton/index.js +1 -1
- package/lib/cjs/components/Slider/Slider.js +1 -1
- package/lib/cjs/components/Slider/index.js +1 -1
- package/lib/cjs/components/SlimAlert/Alert.js +1 -1
- package/lib/cjs/components/SlimAlert/AlertContent.js +1 -1
- package/lib/cjs/components/SlimAlert/AlertFooter.js +1 -1
- package/lib/cjs/components/SlimAlert/index.js +1 -1
- package/lib/cjs/components/SlimAlert/styles.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/NavigationBar.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/NavigationBarAction.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/index.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/styles.js +1 -1
- package/lib/cjs/components/SlimSheets/AnimatedSheets.js +1 -1
- package/lib/cjs/components/SlimSheets/AnimatedSheetsAction.js +1 -1
- package/lib/cjs/components/SlimSheets/AnimatedSheetsHeader.js +1 -1
- package/lib/cjs/components/SlimSheets/DragAnimatedSheets.js +1 -1
- package/lib/cjs/components/SlimSheets/index.js +1 -1
- package/lib/cjs/components/SlimTabs/BadgeSlimTabItem.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTab.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabItem.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabItemLabel.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabItemValue.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabList.js +1 -1
- package/lib/cjs/components/SlimTabs/index.js +1 -1
- package/lib/cjs/components/SlimTabs/styles.js +1 -1
- package/lib/cjs/components/SnackBar/SnackBar.js +1 -1
- package/lib/cjs/components/SnackBar/index.js +1 -1
- package/lib/cjs/components/SnackBar/styles.js +1 -1
- package/lib/cjs/components/Stepper/Stepper.js +1 -1
- package/lib/cjs/components/Stepper/index.js +1 -1
- package/lib/cjs/components/Switch/Switch.js +1 -1
- package/lib/cjs/components/Switch/index.js +1 -1
- package/lib/cjs/components/Tab/Tabs.js +1 -1
- package/lib/cjs/components/Tab/index.js +1 -1
- package/lib/cjs/components/Tab/styles.js +1 -1
- package/lib/cjs/components/TabBar/TabBar.js +1 -1
- package/lib/cjs/components/TabBar/index.js +1 -1
- package/lib/cjs/components/TabBar/styles.js +1 -1
- package/lib/cjs/components/Tag/Tag.js +1 -1
- package/lib/cjs/components/Tag/index.js +1 -1
- package/lib/cjs/components/Text/Text.js +1 -1
- package/lib/cjs/components/Text/Viewable.js +1 -1
- package/lib/cjs/components/Text/hooks/cloneContainer.js +1 -1
- package/lib/cjs/components/Text/hooks/index.js +1 -1
- package/lib/cjs/components/Text/hooks/loadFontFromFile.js +1 -1
- package/lib/cjs/components/Text/index.js +1 -1
- package/lib/cjs/components/Text/styles.js +1 -1
- package/lib/cjs/components/TextField/TextField.js +1 -1
- package/lib/cjs/components/TextField/index.js +1 -1
- package/lib/cjs/components/TextField/styles.js +1 -1
- package/lib/cjs/components/TextView/TextView.js +1 -1
- package/lib/cjs/components/TextView/index.js +1 -1
- package/lib/cjs/components/TextView/styles.js +1 -1
- package/lib/cjs/components/Toast/Toast.js +1 -1
- package/lib/cjs/components/Toast/api.js +1 -1
- package/lib/cjs/components/Toast/index.js +1 -1
- package/lib/cjs/components/Toast/styles.js +1 -1
- package/lib/cjs/components/Uploader/Uploader.js +1 -1
- package/lib/cjs/components/Uploader/index.js +1 -1
- package/lib/cjs/components/Uploader/utils.js +1 -1
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/_chunks/{CAkwE9ZD.js → DpFbw-p-.js} +2 -2
- package/lib/esm/_chunks/{CAkwE9ZD.js.map → DpFbw-p-.js.map} +1 -1
- package/lib/esm/components/ActionSheets/ActionSheets.js +1 -1
- package/lib/esm/components/ActionSheets/ActionSheetsItem.js +1 -1
- package/lib/esm/components/ActionSheets/api.js +1 -1
- package/lib/esm/components/ActionSheets/hooks.js +1 -1
- package/lib/esm/components/ActionSheets/index.js +1 -1
- package/lib/esm/components/ActionablePopover/ActionablePopover.js +1 -1
- package/lib/esm/components/ActionablePopover/index.js +1 -1
- package/lib/esm/components/Alert/Alert.js +1 -1
- package/lib/esm/components/Alert/hooks/alert.js +1 -1
- package/lib/esm/components/Alert/index.js +1 -1
- package/lib/esm/components/Alert/styles.js +1 -1
- package/lib/esm/components/Avatar/Avatar.js +1 -1
- package/lib/esm/components/Avatar/index.js +1 -1
- package/lib/esm/components/Avatar/styles.js +1 -1
- package/lib/esm/components/AvatarGroup/AvatarGroup.js +1 -1
- package/lib/esm/components/AvatarGroup/index.js +1 -1
- package/lib/esm/components/Badge/Badge.js +1 -1
- package/lib/esm/components/Badge/index.js +1 -1
- package/lib/esm/components/Badge/styles.js +1 -1
- package/lib/esm/components/BottomBar/BottomBar.js +1 -1
- package/lib/esm/components/BottomBar/index.js +1 -1
- package/lib/esm/components/Button/Button.js +1 -1
- package/lib/esm/components/Button/Viewable.js +1 -1
- package/lib/esm/components/Button/index.js +1 -1
- package/lib/esm/components/Button/styleMap.js +1 -1
- package/lib/esm/components/Carousel/Carousel.js +1 -1
- package/lib/esm/components/Carousel/index.js +1 -1
- package/lib/esm/components/CheckBoxGroup/CheckBox.js +1 -1
- package/lib/esm/components/CheckBoxGroup/CheckBoxGroup.js +1 -1
- package/lib/esm/components/CheckBoxGroup/index.js +1 -1
- package/lib/esm/components/CheckBoxGroup/styles.js +1 -1
- package/lib/esm/components/Collapse/Collapse.js +1 -1
- package/lib/esm/components/Collapse/Item/Item.js +1 -1
- package/lib/esm/components/Collapse/Item/styles.js +1 -1
- package/lib/esm/components/Collapse/index.js +1 -1
- package/lib/esm/components/ConfigProvider/ConfigProvider.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/themeToken/index.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
- package/lib/esm/components/ConfigProvider/index.js +1 -1
- package/lib/esm/components/DatePicker/DatePicker.js +1 -1
- package/lib/esm/components/DatePicker/api.js +1 -1
- package/lib/esm/components/DatePicker/index.js +1 -1
- package/lib/esm/components/Divider/Divider.js +1 -1
- package/lib/esm/components/Divider/index.js +1 -1
- package/lib/esm/components/Divider/styles.js +1 -1
- package/lib/esm/components/DropDown/DropDown.js +1 -1
- package/lib/esm/components/DropDown/DropDownItem.js +1 -1
- package/lib/esm/components/DropDown/index.js +1 -1
- package/lib/esm/components/Empty/Empty.js +1 -1
- package/lib/esm/components/Empty/index.js +1 -1
- package/lib/esm/components/Empty/styles.js +1 -1
- package/lib/esm/components/FAB/FAB.js +1 -1
- package/lib/esm/components/FAB/index.js +1 -1
- package/lib/esm/components/Form/Form.js +1 -1
- package/lib/esm/components/Form/FormItem.js +1 -1
- package/lib/esm/components/Form/index.js +1 -1
- package/lib/esm/components/Form/styles.js +1 -1
- package/lib/esm/components/Image/Image.js +45 -104
- package/lib/esm/components/Image/Image.js.map +1 -1
- package/lib/esm/components/Image/Image69.js +2 -1
- package/lib/esm/components/Image/Image69.js.map +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/esm/components/Image/hook/index.js +2 -1
- package/lib/esm/components/Image/hook/index.js.map +1 -1
- package/lib/esm/components/Image/hook/useImageId.js +16 -0
- package/lib/esm/components/Image/hook/useImageId.js.map +1 -0
- package/lib/esm/components/Image/index.js +3 -1
- package/lib/esm/components/Image/index.js.map +1 -1
- package/lib/esm/components/Image/manager/ImageAPMManager.js +393 -0
- package/lib/esm/components/Image/manager/ImageAPMManager.js.map +1 -0
- package/lib/esm/components/Image/manager/index.js +6 -0
- package/lib/esm/components/Image/manager/index.js.map +1 -0
- package/lib/esm/components/Image/manager/types.js +2 -0
- package/lib/esm/components/Image/manager/types.js.map +1 -0
- package/lib/esm/components/Image/utils.js +1 -3
- package/lib/esm/components/Image/utils.js.map +1 -1
- package/lib/esm/components/ImagePreview/ImagePreview.js +1 -1
- package/lib/esm/components/ImagePreview/api.js +1 -1
- package/lib/esm/components/ImagePreview/index.js +1 -1
- package/lib/esm/components/LanguageProvider/hooks/useLanguage.js +1 -1
- package/lib/esm/components/LanguageProvider/index.js +1 -1
- package/lib/esm/components/List/List.js +1 -1
- package/lib/esm/components/List/ListItem/ListItem.js +1 -1
- package/lib/esm/components/List/index.js +1 -1
- package/lib/esm/components/List/styles.js +1 -1
- package/lib/esm/components/MiniSnackBar/MiniSnackBar.js +1 -1
- package/lib/esm/components/MiniSnackBar/index.js +1 -1
- package/lib/esm/components/MiniSnackBar/styles.js +1 -1
- package/lib/esm/components/NavigationBar/NavigationBar.js +1 -1
- package/lib/esm/components/NavigationBar/index.js +1 -1
- package/lib/esm/components/NavigationBar/styles.js +1 -1
- package/lib/esm/components/NoticeBar/NoticeBar.js +1 -1
- package/lib/esm/components/NoticeBar/index.js +1 -1
- package/lib/esm/components/Picker/Picker.js +1 -1
- package/lib/esm/components/Picker/api.js +1 -1
- package/lib/esm/components/Picker/index.js +1 -1
- package/lib/esm/components/PickerView/PickerView.js +1 -1
- package/lib/esm/components/PickerView/Wheel.js +1 -1
- package/lib/esm/components/PickerView/index.js +1 -1
- package/lib/esm/components/Popover/Popover.js +1 -1
- package/lib/esm/components/Popover/index.js +1 -1
- package/lib/esm/components/Portal/core/PortalProvider.js +1 -1
- package/lib/esm/components/Portal/index.js +1 -1
- package/lib/esm/components/Progress/Progress.js +1 -1
- package/lib/esm/components/Progress/index.js +1 -1
- package/lib/esm/components/Progress/styles.js +1 -1
- package/lib/esm/components/ProgressIndicator/ProgressIndicator.js +1 -1
- package/lib/esm/components/ProgressIndicator/index.js +1 -1
- package/lib/esm/components/ProgressIndicator/styles.js +1 -1
- package/lib/esm/components/PullRefresh/PullRefresh.js +1 -1
- package/lib/esm/components/PullRefresh/component.js +1 -1
- package/lib/esm/components/PullRefresh/index.js +1 -1
- package/lib/esm/components/Radio/Radio.js +3 -1
- package/lib/esm/components/Radio/Radio.js.map +1 -1
- package/lib/esm/components/Radio/RadioGroup.js +1 -1
- package/lib/esm/components/Radio/index.js +3 -1
- package/lib/esm/components/Radio/index.js.map +1 -1
- package/lib/esm/components/Radio/styles.js +1 -1
- package/lib/esm/components/Rate/Rate.js +1 -1
- package/lib/esm/components/Rate/index.js +1 -1
- package/lib/esm/components/Result/Result.js +1 -1
- package/lib/esm/components/Result/index.js +1 -1
- package/lib/esm/components/Result/styles.js +1 -1
- package/lib/esm/components/Search/Search.js +1 -1
- package/lib/esm/components/Search/index.js +1 -1
- package/lib/esm/components/Search/styles.js +1 -1
- package/lib/esm/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/esm/components/SegmentedControl/index.js +1 -1
- package/lib/esm/components/Sheets/AnimatedSheets.js +1 -1
- package/lib/esm/components/Sheets/Sheets.js +1 -1
- package/lib/esm/components/Sheets/api.js +1 -1
- package/lib/esm/components/Sheets/index.js +1 -1
- package/lib/esm/components/Skeleton/Item/SkeletonItem.js +1 -1
- package/lib/esm/components/Skeleton/Item/SkeletonItem69.js +1 -1
- package/lib/esm/components/Skeleton/Skeleton.js +1 -1
- package/lib/esm/components/Skeleton/Skeleton69.js +1 -1
- package/lib/esm/components/Skeleton/index.js +1 -1
- package/lib/esm/components/Slider/Slider.js +1 -1
- package/lib/esm/components/Slider/index.js +1 -1
- package/lib/esm/components/SlimAlert/Alert.js +1 -1
- package/lib/esm/components/SlimAlert/AlertContent.js +1 -1
- package/lib/esm/components/SlimAlert/AlertFooter.js +1 -1
- package/lib/esm/components/SlimAlert/index.js +1 -1
- package/lib/esm/components/SlimAlert/styles.js +1 -1
- package/lib/esm/components/SlimNavigationBar/NavigationBar.js +1 -1
- package/lib/esm/components/SlimNavigationBar/NavigationBarAction.js +1 -1
- package/lib/esm/components/SlimNavigationBar/index.js +1 -1
- package/lib/esm/components/SlimNavigationBar/styles.js +1 -1
- package/lib/esm/components/SlimSheets/AnimatedSheets.js +1 -1
- package/lib/esm/components/SlimSheets/AnimatedSheetsAction.js +1 -1
- package/lib/esm/components/SlimSheets/AnimatedSheetsHeader.js +1 -1
- package/lib/esm/components/SlimSheets/DragAnimatedSheets.js +1 -1
- package/lib/esm/components/SlimSheets/index.js +1 -1
- package/lib/esm/components/SlimTabs/BadgeSlimTabItem.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTab.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabItem.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabItemLabel.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabItemValue.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabList.js +1 -1
- package/lib/esm/components/SlimTabs/index.js +1 -1
- package/lib/esm/components/SlimTabs/styles.js +1 -1
- package/lib/esm/components/SnackBar/SnackBar.js +1 -1
- package/lib/esm/components/SnackBar/index.js +1 -1
- package/lib/esm/components/SnackBar/styles.js +1 -1
- package/lib/esm/components/Stepper/Stepper.js +1 -1
- package/lib/esm/components/Stepper/index.js +1 -1
- package/lib/esm/components/Switch/Switch.js +1 -1
- package/lib/esm/components/Switch/index.js +1 -1
- package/lib/esm/components/Tab/Tabs.js +1 -1
- package/lib/esm/components/Tab/index.js +1 -1
- package/lib/esm/components/Tab/styles.js +1 -1
- package/lib/esm/components/TabBar/TabBar.js +1 -1
- package/lib/esm/components/TabBar/index.js +1 -1
- package/lib/esm/components/TabBar/styles.js +1 -1
- package/lib/esm/components/Tag/Tag.js +1 -1
- package/lib/esm/components/Tag/index.js +1 -1
- package/lib/esm/components/Text/Text.js +1 -1
- package/lib/esm/components/Text/Viewable.js +1 -1
- package/lib/esm/components/Text/hooks/cloneContainer.js +1 -1
- package/lib/esm/components/Text/hooks/index.js +1 -1
- package/lib/esm/components/Text/hooks/loadFontFromFile.js +1 -1
- package/lib/esm/components/Text/index.js +1 -1
- package/lib/esm/components/Text/styles.js +1 -1
- package/lib/esm/components/TextField/TextField.js +1 -1
- package/lib/esm/components/TextField/index.js +1 -1
- package/lib/esm/components/TextField/styles.js +1 -1
- package/lib/esm/components/TextView/TextView.js +1 -1
- package/lib/esm/components/TextView/index.js +1 -1
- package/lib/esm/components/TextView/styles.js +1 -1
- package/lib/esm/components/Toast/Toast.js +1 -1
- package/lib/esm/components/Toast/api.js +1 -1
- package/lib/esm/components/Toast/index.js +1 -1
- package/lib/esm/components/Toast/styles.js +1 -1
- package/lib/esm/components/Uploader/Uploader.js +1 -1
- package/lib/esm/components/Uploader/index.js +1 -1
- package/lib/esm/components/Uploader/utils.js +1 -1
- package/lib/esm/index.js +3 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/src/components/Image/Image.d.ts +1 -1
- package/lib/src/components/Image/hook/index.d.ts +1 -0
- package/lib/src/components/Image/hook/useImageId.d.ts +7 -0
- package/lib/src/components/Image/index.d.ts +1 -1
- package/lib/src/components/Image/manager/ImageAPMManager.d.ts +123 -0
- package/lib/src/components/Image/manager/index.d.ts +2 -0
- package/lib/src/components/Image/manager/types.d.ts +40 -0
- package/lib/types/components/Image/Image.d.ts +1 -1
- package/lib/types/components/Image/hook/index.d.ts +1 -0
- package/lib/types/components/Image/hook/useImageId.d.ts +7 -0
- package/lib/types/components/Image/index.d.ts +1 -1
- package/lib/types/components/Image/manager/ImageAPMManager.d.ts +123 -0
- package/lib/types/components/Image/manager/index.d.ts +2 -0
- package/lib/types/components/Image/manager/types.d.ts +40 -0
- package/package.json +1 -1
- package/src/components/Image/Image.tsx +48 -127
- package/src/components/Image/VisibilitySensor.tsx +0 -1
- package/src/components/Image/hook/index.ts +2 -0
- package/src/components/Image/hook/useImageId.ts +33 -0
- package/src/components/Image/manager/ImageAPMManager.ts +389 -0
- package/src/components/Image/manager/index.ts +2 -0
- package/src/components/Image/manager/types.ts +46 -0
- package/src/components/Image/utils.ts +0 -2
- package/src/i18n/@types/resources.d.ts +18 -18
- package/src/i18n/index.json +31 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image69.js","sources":["../../../../src/components/Image/Image69.tsx"],"sourcesContent":["import React, { useState, memo, useMemo, useRef, useCallback, useEffect } from \"react\";\nimport {\n View,\n Image as RNImage,\n GestureResponderEvent,\n ImageProps,\n TouchableOpacity,\n ImageLoadEventData,\n NativeSyntheticEvent,\n ImageErrorEventData,\n ImageProgressEventDataIOS,\n ImageSourcePropType,\n ImageURISource,\n} from \"react-native\";\nimport {\n RedsImage,\n ImageDefaultProps,\n IMAGE_STATUS,\n TErrorStyle,\n TLoadStyle,\n ImageTrackerProps,\n} from \"./interface/index\";\nimport styles from \"./styles\";\nimport { useAveColor, useBlur } from \"./hook\";\nimport CircularProgress from \"./CircularProgress\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { useColorMode } from \"../ConfigProvider\";\nimport { lightColor, platformLightColor } from \"@xhsreds/reds-token-next\";\nimport { formatUri, isDataUri, isLocalFile, convertKeysToSnakeCase } from \"./utils\";\nimport VisibilitySensor from \"./VisibilitySensor\";\nimport { apmPush } from \"./apm\";\n\nconst imageReLoad = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/4f9bfbf2358aa970f1ec3dbf4ba5ff9355b7a41e.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n};\n\nconst imageError = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/7d8debb5e2c3a1f37299a292342b77d479be6f28.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n};\n\nconst Image = ({\n src,\n source: _source,\n width,\n height,\n borderRadius,\n errorStyle,\n loadStyle,\n style,\n abortApmCollection,\n ...props\n}: RedsImage & Omit<ImageProps, keyof RedsImage>) => {\n useMounted(\"Image69\");\n const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);\n const [progress, setProgress] = useState(0);\n\n const formatSource = useMemo(() => {\n // @ts-ignore\n if (_source) return { uri: formatUri(_source) } as ImageSourcePropTyp;\n // @ts-ignore\n return { uri: formatUri({ uri: src }) } as ImageSourcePropType;\n }, [src, _source]);\n\n const aveColor = useAveColor({\n source: formatSource,\n defaultColor: lightColor.Fill1,\n loadingAve: loadStyle === TLoadStyle.AVE,\n });\n\n const blurSource = useBlur({ source: formatSource });\n\n const [viewable, setViewable] = useState(false);\n const hasInit = useRef(false);\n const checkIsVisible = (isVisible: boolean) => {\n // 判断首屏\n if (!hasInit.current) {\n hasInit.current = true;\n apmDataRef.current.isFirstScreen = isVisible ? \"true\" : \"false\";\n }\n setViewable(isVisible);\n };\n const apmDataRef = useRef<ImageTrackerProps>({\n imageUrl: \"\",\n imageHost: \"\",\n intersectTime: viewable ? Date.now() : 0,\n imageSize: 0,\n isFirstScreen: \"false\",\n isPrefetch: \"\",\n isSuccess: \"false\",\n errorReason: \"\",\n loadedStartTime: 0,\n loadedTime: 0,\n loadDuration: 0,\n viewDuration: 0,\n });\n const [apmDoneRef, setApmDoneRef] = useState(false);\n\n useEffect(() => {\n try {\n const apmData = apmDataRef.current;\n if (\n typeof formatSource !== \"number\" &&\n !isLocalFile((formatSource as ImageURISource).uri as string) &&\n !isDataUri((formatSource as ImageURISource).uri as string)\n ) {\n const imageUrl = new URL((formatSource as ImageURISource).uri as string);\n apmData.imageHost = `${imageUrl.protocol}//${imageUrl.host}`;\n apmData.imageUrl = (formatSource as ImageURISource).uri as string;\n }\n } catch (error) {\n //\n }\n }, [formatSource]);\n\n useEffect(() => {\n const imageUrl = (formatSource as ImageURISource)?.uri || \"\";\n if (typeof RNImage.queryCache === \"function\" && !!imageUrl) {\n const uriEncodeImageUrl = encodeURI(imageUrl);\n RNImage.queryCache([imageUrl]).then((res) => {\n if (res?.[uriEncodeImageUrl]) {\n apmDataRef.current.isPrefetch = \"true\";\n } else {\n apmDataRef.current.isPrefetch = \"false\";\n }\n });\n }\n return () => {\n apmDataRef.current.isPrefetch = \"\";\n };\n }, [formatSource]);\n\n const pushApmData = useCallback(() => {\n const apmData = apmDataRef.current;\n const viewDuration = apmData.loadedTime - apmData.intersectTime;\n apmData.viewDuration = viewDuration < 0 ? 0 : viewDuration;\n /**\n * 如果Image.queryCache未完成时,通过imageSize来判断\n * 如果image_size是-1,那么认为图片已有缓存\n */\n const imageSize = apmDataRef.current.imageSize || 0;\n if (!apmDataRef.current.isPrefetch) {\n apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);\n }\n if (!apmDoneRef && apmData.imageUrl && !abortApmCollection) {\n setApmDoneRef(true);\n apmPush(convertKeysToSnakeCase(apmData));\n }\n }, [abortApmCollection]);\n\n // 判断首屏\n if ((!apmDataRef.current.isFirstScreen || apmDataRef.current.isFirstScreen === \"false\") && viewable) {\n apmDataRef.current.isFirstScreen = \"true\";\n }\n useEffect(() => {\n const apmData = apmDataRef.current;\n if (!apmData.intersectTime && viewable) {\n apmData.intersectTime = Date.now();\n // 进入视窗前加载完成/失败\n if (apmData.loadedTime || apmData.errorReason) {\n pushApmData();\n }\n }\n }, [viewable, pushApmData]);\n\n const onLoadEnd = () => {\n const apmData = apmDataRef.current;\n // 进入视窗后加载成功/失败\n if (apmData.intersectTime) {\n pushApmData();\n }\n };\n\n const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {\n const {\n nativeEvent: { total, loaded },\n } = e;\n if (total) {\n setProgress(((loaded / total) * 100) | 0);\n }\n apmDataRef.current.imageSize = total;\n props.onProgress?.(e);\n };\n const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {\n const now = Date.now();\n const loadDuration = now - apmDataRef.current.loadedStartTime;\n apmDataRef.current.loadedTime = now;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n apmDataRef.current.isSuccess = \"true\";\n props.onLoad?.(e);\n setImageStatus(IMAGE_STATUS.LOADED);\n };\n\n const onLoadStart = () => {\n apmDataRef.current.loadedStartTime = Date.now();\n };\n\n const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {\n apmDataRef.current.isSuccess = \"false\";\n apmDataRef.current.errorReason = `${e.nativeEvent.error}`;\n props.onError?.(e);\n setImageStatus(errorStyle === TErrorStyle.ERROR ? IMAGE_STATUS.LOADERROR : IMAGE_STATUS.RELOAD);\n };\n const onReload = (e: GestureResponderEvent) => {\n setImageStatus(IMAGE_STATUS.HIDE);\n props.onReload?.(e);\n setTimeout(() => {\n setImageStatus(IMAGE_STATUS.LOADING);\n });\n };\n\n const colorMode = useColorMode();\n\n return (\n <View style={{ borderRadius, height, width, ...(style as {}) }}>\n {imageStatus !== IMAGE_STATUS.HIDE &&\n (!abortApmCollection ? (\n <VisibilitySensor onChange={checkIsVisible} disabled={apmDoneRef}>\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n style={{\n width,\n height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n onFirstDrawFinished={(e) => onFirstDrawFinished(e)}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n </VisibilitySensor>\n ) : (\n <RNImage\n {...props}\n // @ts-ignore\n source={{ uri: formatUri(_source) }}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n style={{\n width,\n height,\n borderRadius,\n opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n onFirstDrawFinished={(e) => onFirstDrawFinished(e)}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n ))}\n {imageStatus === IMAGE_STATUS.LOADING && (\n <View\n style={{\n width,\n height,\n borderRadius,\n ...styles.loadingContainer,\n backgroundColor: loadStyle === TLoadStyle.AVE ? aveColor : styles.loadingContainer.backgroundColor,\n }}\n >\n {loadStyle === TLoadStyle.BLUR && (\n <RNImage\n source={blurSource}\n style={{\n width,\n height,\n borderRadius,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {loadStyle === TLoadStyle.LOADING && <></>}\n </View>\n )}\n {(imageStatus === IMAGE_STATUS.LOADERROR || imageStatus === IMAGE_STATUS.RELOAD) && (\n <TouchableOpacity\n activeOpacity={1}\n onPress={(e) => {\n onReload(e);\n }}\n style={{ width, height, borderRadius, ...styles.loadingContainer }}\n >\n <RNImage\n style={{ width: 40, height: 40 }}\n source={{\n uri: imageStatus === IMAGE_STATUS.RELOAD ? imageReLoad[colorMode] : imageError[colorMode],\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImage.defaultProps = ImageDefaultProps;\n\nexport default memo(Image);\n"],"names":["imageReLoad","light","dark","platformLight","imageError","Image","src","_ref","_source","source","width","height","borderRadius","errorStyle","loadStyle","style","abortApmCollection","props","_objectWithoutProperties","_excluded","useMounted","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","formatSource","useMemo","uri","formatUri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","_useState5","_useState6","viewable","setViewable","hasInit","useRef","checkIsVisible","isVisible","current","apmDataRef","isFirstScreen","imageUrl","imageHost","intersectTime","Date","now","imageSize","isPrefetch","isSuccess","errorReason","loadedStartTime","loadedTime","loadDuration","viewDuration","_useState7","_useState8","apmDoneRef","setApmDoneRef","useEffect","apmData","isLocalFile","isDataUri","URL","protocol","concat","host","error","RNImage","queryCache","uriEncodeImageUrl","encodeURI","then","res","pushApmData","useCallback","String","apmPush","convertKeysToSnakeCase","onLoadEnd","onProgress","e","_props$onProgress","_e$nativeEvent","nativeEvent","total","loaded","call","onLoad","_props$onLoad","LOADED","onLoadStart","onError","_props$onError","TErrorStyle","ERROR","LOADERROR","RELOAD","onReload","_props$onReload","HIDE","setTimeout","colorMode","useColorMode","React","createElement","View","_objectSpread","VisibilitySensor","onChange","disabled","onFirstDrawFinished","_onFirstDrawFinished","_x","apply","arguments","toString","apmBiz","opacity","_onFirstDrawFinished2","_x2","styles","loadingContainer","backgroundColor","BLUR","Fragment","TouchableOpacity","activeOpacity","onPress","defaultProps","ImageDefaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Image69.js","sources":["../../../../src/components/Image/Image69.tsx"],"sourcesContent":["import React, { useState, memo, useMemo, useRef, useCallback, useEffect } from \"react\";\nimport {\n View,\n Image as RNImage,\n GestureResponderEvent,\n ImageProps,\n TouchableOpacity,\n ImageLoadEventData,\n NativeSyntheticEvent,\n ImageErrorEventData,\n ImageProgressEventDataIOS,\n ImageSourcePropType,\n ImageURISource,\n} from \"react-native\";\nimport {\n RedsImage,\n ImageDefaultProps,\n IMAGE_STATUS,\n TErrorStyle,\n TLoadStyle,\n ImageTrackerProps,\n} from \"./interface/index\";\nimport styles from \"./styles\";\nimport { useAveColor, useBlur } from \"./hook\";\nimport CircularProgress from \"./CircularProgress\";\nimport useMounted from \"../../pvCount/useUnmountedProcess\";\nimport { useColorMode } from \"../ConfigProvider\";\nimport { lightColor, platformLightColor } from \"@xhsreds/reds-token-next\";\nimport { formatUri, isDataUri, isLocalFile, convertKeysToSnakeCase } from \"./utils\";\nimport VisibilitySensor from \"./VisibilitySensor\";\nimport { apmPush } from \"./apm\";\n\nconst imageReLoad = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/4f9bfbf2358aa970f1ec3dbf4ba5ff9355b7a41e.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/06ae169b310c2926e541903b828486a80fcac404.png\",\n};\n\nconst imageError = {\n light: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n dark: \"https://picasso-static.xiaohongshu.com/fe-platform/7d8debb5e2c3a1f37299a292342b77d479be6f28.png\",\n platformLight: \"https://picasso-static.xiaohongshu.com/fe-platform/76fee5bba4ce3bbf3e9ff5fe1935b737bb27625a.png\",\n};\n\nconst Image = ({\n src,\n source: _source,\n width,\n height,\n borderRadius,\n errorStyle,\n loadStyle,\n style,\n abortApmCollection,\n ...props\n}: RedsImage & Omit<ImageProps, keyof RedsImage>) => {\n useMounted(\"Image69\");\n const [imageStatus, setImageStatus] = useState(IMAGE_STATUS.LOADING);\n const [progress, setProgress] = useState(0);\n\n const formatSource = useMemo(() => {\n // @ts-ignore\n if (_source) return { uri: formatUri(_source) } as ImageSourcePropTyp;\n // @ts-ignore\n return { uri: formatUri({ uri: src }) } as ImageSourcePropType;\n }, [src, _source]);\n\n const aveColor = useAveColor({\n source: formatSource,\n defaultColor: lightColor.Fill1,\n loadingAve: loadStyle === TLoadStyle.AVE,\n });\n\n const blurSource = useBlur({ source: formatSource });\n\n const [viewable, setViewable] = useState(false);\n const hasInit = useRef(false);\n const checkIsVisible = (isVisible: boolean) => {\n // 判断首屏\n if (!hasInit.current) {\n hasInit.current = true;\n apmDataRef.current.isFirstScreen = isVisible ? \"true\" : \"false\";\n }\n setViewable(isVisible);\n };\n const apmDataRef = useRef<ImageTrackerProps>({\n imageUrl: \"\",\n imageHost: \"\",\n intersectTime: viewable ? Date.now() : 0,\n imageSize: 0,\n isFirstScreen: \"false\",\n isPrefetch: \"\",\n isSuccess: \"false\",\n errorReason: \"\",\n loadedStartTime: 0,\n loadedTime: 0,\n loadDuration: 0,\n viewDuration: 0,\n });\n const [apmDoneRef, setApmDoneRef] = useState(false);\n\n useEffect(() => {\n try {\n const apmData = apmDataRef.current;\n if (\n typeof formatSource !== \"number\" &&\n !isLocalFile((formatSource as ImageURISource).uri as string) &&\n !isDataUri((formatSource as ImageURISource).uri as string)\n ) {\n const imageUrl = new URL((formatSource as ImageURISource).uri as string);\n apmData.imageHost = `${imageUrl.protocol}//${imageUrl.host}`;\n apmData.imageUrl = (formatSource as ImageURISource).uri as string;\n }\n } catch (error) {\n //\n }\n }, [formatSource]);\n\n useEffect(() => {\n const imageUrl = (formatSource as ImageURISource)?.uri || \"\";\n if (typeof RNImage.queryCache === \"function\" && !!imageUrl) {\n const uriEncodeImageUrl = encodeURI(imageUrl);\n RNImage.queryCache([imageUrl]).then((res) => {\n if (res?.[uriEncodeImageUrl]) {\n apmDataRef.current.isPrefetch = \"true\";\n } else {\n apmDataRef.current.isPrefetch = \"false\";\n }\n });\n }\n return () => {\n apmDataRef.current.isPrefetch = \"\";\n };\n }, [formatSource]);\n\n const pushApmData = useCallback(() => {\n const apmData = apmDataRef.current;\n const viewDuration = apmData.loadedTime - apmData.intersectTime;\n apmData.viewDuration = viewDuration < 0 ? 0 : viewDuration;\n /**\n * 如果Image.queryCache未完成时,通过imageSize来判断\n * 如果image_size是-1,那么认为图片已有缓存\n */\n const imageSize = apmDataRef.current.imageSize || 0;\n if (!apmDataRef.current.isPrefetch) {\n apmDataRef.current.isPrefetch = String((imageSize || 0) <= 0);\n }\n if (!apmDoneRef && apmData.imageUrl && !abortApmCollection) {\n setApmDoneRef(true);\n apmPush(convertKeysToSnakeCase(apmData));\n }\n }, [abortApmCollection]);\n\n // 判断首屏\n if ((!apmDataRef.current.isFirstScreen || apmDataRef.current.isFirstScreen === \"false\") && viewable) {\n apmDataRef.current.isFirstScreen = \"true\";\n }\n useEffect(() => {\n const apmData = apmDataRef.current;\n if (!apmData.intersectTime && viewable) {\n apmData.intersectTime = Date.now();\n // 进入视窗前加载完成/失败\n if (apmData.loadedTime || apmData.errorReason) {\n pushApmData();\n }\n }\n }, [viewable, pushApmData]);\n\n const onLoadEnd = () => {\n const apmData = apmDataRef.current;\n // 进入视窗后加载成功/失败\n if (apmData.intersectTime) {\n pushApmData();\n }\n };\n\n const onProgress = (e: NativeSyntheticEvent<ImageProgressEventDataIOS>) => {\n const {\n nativeEvent: { total, loaded },\n } = e;\n if (total) {\n setProgress(((loaded / total) * 100) | 0);\n }\n apmDataRef.current.imageSize = total;\n props.onProgress?.(e);\n };\n const onLoad = (e: NativeSyntheticEvent<ImageLoadEventData>) => {\n const now = Date.now();\n const loadDuration = now - apmDataRef.current.loadedStartTime;\n apmDataRef.current.loadedTime = now;\n apmDataRef.current.loadDuration = loadDuration < 0 ? 0 : loadDuration;\n apmDataRef.current.isSuccess = \"true\";\n props.onLoad?.(e);\n setImageStatus(IMAGE_STATUS.LOADED);\n };\n\n const onLoadStart = () => {\n apmDataRef.current.loadedStartTime = Date.now();\n };\n\n const onError = (e: NativeSyntheticEvent<ImageErrorEventData>) => {\n apmDataRef.current.isSuccess = \"false\";\n apmDataRef.current.errorReason = `${e.nativeEvent.error}`;\n props.onError?.(e);\n setImageStatus(errorStyle === TErrorStyle.ERROR ? IMAGE_STATUS.LOADERROR : IMAGE_STATUS.RELOAD);\n };\n const onReload = (e: GestureResponderEvent) => {\n setImageStatus(IMAGE_STATUS.HIDE);\n props.onReload?.(e);\n setTimeout(() => {\n setImageStatus(IMAGE_STATUS.LOADING);\n });\n };\n\n const colorMode = useColorMode();\n\n return (\n <View style={{ borderRadius, height, width, ...(style as {}) }}>\n {imageStatus !== IMAGE_STATUS.HIDE &&\n (!abortApmCollection ? (\n <VisibilitySensor onChange={checkIsVisible} disabled={apmDoneRef}>\n <RNImage\n {...props}\n // @ts-ignore\n source={formatSource}\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n onLoadEnd={onLoadEnd}\n style={{\n width,\n height,\n borderRadius,\n // opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n onFirstDrawFinished={(e) => onFirstDrawFinished(e)}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n </VisibilitySensor>\n ) : (\n <RNImage\n {...props}\n // @ts-ignore\n source={{ uri: formatUri(_source) }}\n onLoad={onLoad}\n onProgress={onProgress}\n onError={onError}\n style={{\n width,\n height,\n borderRadius,\n opacity: imageStatus === IMAGE_STATUS.LOADED ? 1 : 0,\n }}\n // @ts-ignore\n onFirstDrawFinished={(e) => onFirstDrawFinished(e)}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n ))}\n {imageStatus === IMAGE_STATUS.LOADING && (\n <View\n style={{\n width,\n height,\n borderRadius,\n ...styles.loadingContainer,\n backgroundColor: loadStyle === TLoadStyle.AVE ? aveColor : styles.loadingContainer.backgroundColor,\n }}\n >\n {loadStyle === TLoadStyle.BLUR && (\n <RNImage\n source={blurSource}\n style={{\n width,\n height,\n borderRadius,\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n ></RNImage>\n )}\n {loadStyle === TLoadStyle.LOADING && <></>}\n </View>\n )}\n {(imageStatus === IMAGE_STATUS.LOADERROR || imageStatus === IMAGE_STATUS.RELOAD) && (\n <TouchableOpacity\n activeOpacity={1}\n onPress={(e) => {\n onReload(e);\n }}\n style={{ width, height, borderRadius, ...styles.loadingContainer }}\n >\n <RNImage\n style={{ width: 40, height: 40 }}\n source={{\n uri: imageStatus === IMAGE_STATUS.RELOAD ? imageReLoad[colorMode] : imageError[colorMode],\n }}\n // @ts-ignore\n apmBiz={props.apmBiz}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImage.defaultProps = ImageDefaultProps;\n\nexport default memo(Image);\n"],"names":["imageReLoad","light","dark","platformLight","imageError","Image","src","_ref","_source","source","width","height","borderRadius","errorStyle","loadStyle","style","abortApmCollection","props","_objectWithoutProperties","_excluded","useMounted","_useState","useState","IMAGE_STATUS","LOADING","_useState2","_slicedToArray","imageStatus","setImageStatus","_useState3","_useState4","progress","setProgress","formatSource","useMemo","uri","formatUri","aveColor","useAveColor","defaultColor","lightColor","Fill1","loadingAve","TLoadStyle","AVE","blurSource","useBlur","_useState5","_useState6","viewable","setViewable","hasInit","useRef","checkIsVisible","isVisible","current","apmDataRef","isFirstScreen","imageUrl","imageHost","intersectTime","Date","now","imageSize","isPrefetch","isSuccess","errorReason","loadedStartTime","loadedTime","loadDuration","viewDuration","_useState7","_useState8","apmDoneRef","setApmDoneRef","useEffect","apmData","isLocalFile","isDataUri","URL","protocol","concat","host","error","RNImage","queryCache","uriEncodeImageUrl","encodeURI","then","res","pushApmData","useCallback","String","apmPush","convertKeysToSnakeCase","onLoadEnd","onProgress","e","_props$onProgress","_e$nativeEvent","nativeEvent","total","loaded","call","onLoad","_props$onLoad","LOADED","onLoadStart","onError","_props$onError","TErrorStyle","ERROR","LOADERROR","RELOAD","onReload","_props$onReload","HIDE","setTimeout","colorMode","useColorMode","React","createElement","View","_objectSpread","VisibilitySensor","onChange","disabled","onFirstDrawFinished","_onFirstDrawFinished","_x","apply","arguments","toString","apmBiz","opacity","_onFirstDrawFinished2","_x2","styles","loadingContainer","backgroundColor","BLUR","Fragment","TouchableOpacity","activeOpacity","onPress","defaultProps","ImageDefaultProps","memo"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as _objectWithoutProperties, _ as _slicedToArray, a as _objectSpread2 } from '../../_chunks/
|
|
1
|
+
import { i as _objectWithoutProperties, _ as _slicedToArray, a as _objectSpread2 } from '../../_chunks/DpFbw-p-.js';
|
|
2
2
|
import React, { forwardRef, useRef, useImperativeHandle, useState, useCallback, useEffect } from 'react';
|
|
3
3
|
import { Dimensions, View } from 'react-native';
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilitySensor.js","sources":["../../../../src/components/Image/VisibilitySensor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState, forwardRef, useImperativeHandle } from \"react\";\nimport { Dimensions, type ScaledSize, View } from \"react-native\";\nimport type { VisibilitySensorRef, VisibilitySensorProps, RectDimensionsState } from \"./interface/visibilitySensor\";\n// function useInterval(callback: () => void, delay: number | null) {\n// const savedCallback = useRef(callback);\n// useEffect(() => {\n// savedCallback.current = callback;\n// }, [callback]);\n// useEffect(() => {\n// if (delay === null || delay === undefined) {\n// return;\n// }\n// const id = setInterval(() => savedCallback.current(), delay);\n// return () => clearInterval(id);\n// }, [delay]);\n// }\nconst VisibilitySensor = forwardRef<VisibilitySensorRef, VisibilitySensorProps>((props, ref) => {\n const { onChange, disabled = false, triggerOnce = false, delay, threshold = {}, children, ...rest } = props;\n const localRef = useRef<View>(null);\n const hasMountedRef = useRef(false);\n useImperativeHandle(ref, () => ({\n getInnerRef: () => localRef.current,\n }));\n const [rectDimensions, setRectDimensions] = useState<RectDimensionsState>({\n rectTop: 0,\n rectBottom: 0,\n rectLeft: 0,\n rectRight: 0,\n rectWidth: 0,\n rectHeight: 0,\n });\n const [lastValue, setLastValue] = useState<boolean | undefined>(undefined);\n const [active, setActive] = useState<boolean>(false);\n const measureInnerView = () => {\n if (!active) return;\n localRef.current?.measure((_x: number, _y: number, width: number, height: number, pageX: number, pageY: number) => {\n const dimensions = {\n rectTop: pageY,\n rectBottom: pageY + height,\n rectLeft: pageX,\n rectRight: pageX + width,\n rectWidth: width,\n rectHeight: height,\n };\n if (\n rectDimensions.rectTop !== dimensions.rectTop ||\n rectDimensions.rectBottom !== dimensions.rectBottom ||\n rectDimensions.rectLeft !== dimensions.rectLeft ||\n rectDimensions.rectRight !== dimensions.rectRight ||\n rectDimensions.rectWidth !== dimensions.rectWidth ||\n rectDimensions.rectHeight !== dimensions.rectHeight\n ) {\n setRectDimensions(dimensions);\n }\n });\n };\n // useInterval(measureInnerView, delay || 100);\n const startWatching = useCallback(() => {\n if (!active) setActive(true);\n }, [active]);\n const stopWatching = useCallback(() => {\n if (active) setActive(false);\n }, [active]);\n useEffect(() => {\n if (!disabled) {\n startWatching();\n }\n return () => {\n stopWatching();\n };\n }, [disabled, startWatching, stopWatching]);\n useEffect(() => {\n if (!hasMountedRef.current) {\n hasMountedRef.current = true;\n return;\n }\n const window: ScaledSize = Dimensions.get(\"window\");\n const isVisible: boolean =\n rectDimensions.rectTop + (threshold.top || 0) <= window.height && // Top edge is within the bottom of the window\n rectDimensions.rectBottom - (threshold.bottom || 0) >= 0 && // Bottom edge is within the top of the window\n rectDimensions.rectLeft + (threshold.left || 0) <= window.width && // Left edge is within the right of the window\n rectDimensions.rectRight - (threshold.right || 0) >= 0; // Right edge is within the left of the window\n if (lastValue !== isVisible) {\n setLastValue(isVisible);\n onChange(isVisible);\n if (isVisible && triggerOnce) {\n stopWatching();\n }\n }\n
|
|
1
|
+
{"version":3,"file":"VisibilitySensor.js","sources":["../../../../src/components/Image/VisibilitySensor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState, forwardRef, useImperativeHandle } from \"react\";\nimport { Dimensions, type ScaledSize, View } from \"react-native\";\nimport type { VisibilitySensorRef, VisibilitySensorProps, RectDimensionsState } from \"./interface/visibilitySensor\";\n// function useInterval(callback: () => void, delay: number | null) {\n// const savedCallback = useRef(callback);\n// useEffect(() => {\n// savedCallback.current = callback;\n// }, [callback]);\n// useEffect(() => {\n// if (delay === null || delay === undefined) {\n// return;\n// }\n// const id = setInterval(() => savedCallback.current(), delay);\n// return () => clearInterval(id);\n// }, [delay]);\n// }\nconst VisibilitySensor = forwardRef<VisibilitySensorRef, VisibilitySensorProps>((props, ref) => {\n const { onChange, disabled = false, triggerOnce = false, delay, threshold = {}, children, ...rest } = props;\n const localRef = useRef<View>(null);\n const hasMountedRef = useRef(false);\n useImperativeHandle(ref, () => ({\n getInnerRef: () => localRef.current,\n }));\n const [rectDimensions, setRectDimensions] = useState<RectDimensionsState>({\n rectTop: 0,\n rectBottom: 0,\n rectLeft: 0,\n rectRight: 0,\n rectWidth: 0,\n rectHeight: 0,\n });\n const [lastValue, setLastValue] = useState<boolean | undefined>(undefined);\n const [active, setActive] = useState<boolean>(false);\n const measureInnerView = () => {\n if (!active) return;\n localRef.current?.measure((_x: number, _y: number, width: number, height: number, pageX: number, pageY: number) => {\n const dimensions = {\n rectTop: pageY,\n rectBottom: pageY + height,\n rectLeft: pageX,\n rectRight: pageX + width,\n rectWidth: width,\n rectHeight: height,\n };\n if (\n rectDimensions.rectTop !== dimensions.rectTop ||\n rectDimensions.rectBottom !== dimensions.rectBottom ||\n rectDimensions.rectLeft !== dimensions.rectLeft ||\n rectDimensions.rectRight !== dimensions.rectRight ||\n rectDimensions.rectWidth !== dimensions.rectWidth ||\n rectDimensions.rectHeight !== dimensions.rectHeight\n ) {\n setRectDimensions(dimensions);\n }\n });\n };\n // useInterval(measureInnerView, delay || 100);\n const startWatching = useCallback(() => {\n if (!active) setActive(true);\n }, [active]);\n const stopWatching = useCallback(() => {\n if (active) setActive(false);\n }, [active]);\n useEffect(() => {\n if (!disabled) {\n startWatching();\n }\n return () => {\n stopWatching();\n };\n }, [disabled, startWatching, stopWatching]);\n useEffect(() => {\n if (!hasMountedRef.current) {\n hasMountedRef.current = true;\n return;\n }\n const window: ScaledSize = Dimensions.get(\"window\");\n const isVisible: boolean =\n rectDimensions.rectTop + (threshold.top || 0) <= window.height && // Top edge is within the bottom of the window\n rectDimensions.rectBottom - (threshold.bottom || 0) >= 0 && // Bottom edge is within the top of the window\n rectDimensions.rectLeft + (threshold.left || 0) <= window.width && // Left edge is within the right of the window\n rectDimensions.rectRight - (threshold.right || 0) >= 0; // Right edge is within the left of the window\n if (lastValue !== isVisible) {\n setLastValue(isVisible);\n onChange(isVisible);\n if (isVisible && triggerOnce) {\n stopWatching();\n }\n }\n }, [rectDimensions, lastValue, threshold, onChange, triggerOnce, stopWatching]);\n return (\n <View ref={localRef} {...rest} onLayout={() => measureInnerView()}>\n {children}\n </View>\n );\n});\nexport default VisibilitySensor;\n"],"names":["VisibilitySensor","forwardRef","props","ref","onChange","_props$disabled","disabled","_props$triggerOnce","triggerOnce","delay","_props$threshold","threshold","children","rest","_excluded","localRef","useRef","hasMountedRef","useImperativeHandle","getInnerRef","current","_useState","useState","rectTop","rectBottom","rectLeft","rectRight","rectWidth","rectHeight","_useState2","_slicedToArray","rectDimensions","setRectDimensions","_useState3","_useState4","lastValue","setLastValue","_useState5","_useState6","active","setActive","measureInnerView","_localRef$current","measure","_x","_y","width","height","pageX","pageY","dimensions","startWatching","useCallback","stopWatching","useEffect","window","Dimensions","get","isVisible","top","bottom","left","right","React","createElement","View","_objectSpread","onLayout"],"mappings":";;;;;AAgBMA,IAAAA,gBAAmB,gBAAAC,UAAA,CAAuD,UAACC,KAAA,EAAOC,GAAQ,EAAA;AAC9F,EAAA,IAAQC,QAAA,GAA8FF,KAAA,CAA9FE,QAAA,CAAA;IAAAC,eAAA,GAA8FH,KAAA,CAApFI,QAAW,CAAA;AAAXA,IAAAA,QAAW,GAAAD,eAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,eAAA,CAAA;IAAAE,kBAAA,GAAyEL,KAAA,CAAlEM,WAAc,CAAA;AAAdA,IAAAA,WAAc,GAAAD,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,kBAAA,CAAA;IAAoDL,KAAA,CAA7CO,KAAO,CAAA;QAAAC,gBAAA,GAAsCR,KAAA,CAAtCS,SAAA,CAAA;AAAAA,IAAAA,SAAA,GAAAD,gBAAA,KAAA,KAAA,CAAA,GAAY,EAAC,GAAAA,gBAAA,CAAA;IAAGE,QAAU,GAAYV,KAAA,CAAtBU,QAAU,CAAA;AAAGC,IAAAA,gCAASX,KAAA,EAAAY,SAAA,EAAA;AAChG,EAAA,IAAAC,QAAA,GAAWC,OAAa,IAAI,CAAA,CAAA;AAC5B,EAAA,IAAAC,aAAA,GAAgBD,OAAO,KAAK,CAAA,CAAA;EAClCE,mBAAA,CAAoBf,KAAK,YAAA;IAAA,OAAO;MAC9BgB,WAAA,EAAa,SAAbA,WAAAA,GAAA;QAAA,OAAmBJ,QAAS,CAAAK,OAAA,CAAA;AAAA,OAAA;KAC5B,CAAA;AAAA,GAAA,CAAA,CAAA;EACF,IAAAC,SAAA,GAA4CC,QAA8B,CAAA;AACxEC,MAAAA,OAAS,EAAA,CAAA;AACTC,MAAAA,UAAY,EAAA,CAAA;AACZC,MAAAA,QAAU,EAAA,CAAA;AACVC,MAAAA,SAAW,EAAA,CAAA;AACXC,MAAAA,SAAW,EAAA,CAAA;AACXC,MAAAA,UAAY,EAAA,CAAA;AACd,KAAC,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAT,SAAA,EAAA,CAAA,CAAA;AAPMU,IAAAA,cAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAgBG,IAAAA,iBAAiB,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAQxC,EAAA,IAAAI,UAAA,GAAkCX,SAA8B,KAAS,CAAA,CAAA;IAAAY,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAlEE,IAAAA,SAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAWE,IAAAA,YAAY,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAC9B,EAAA,IAAAG,UAAA,GAA4Bf,SAAkB,KAAK,CAAA;IAAAgB,UAAA,GAAAR,cAAA,CAAAO,UAAA,EAAA,CAAA,CAAA;AAA5CE,IAAAA,MAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAQE,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AACxB,EAAA,IAAMG,mBAAmB,SAAnBA,mBAAyB;AAAA,IAAA,IAAAC,iBAAA,CAAA;IAC7B,IAAI,CAACH,MAAQ,EAAA,OAAA;IACJ,CAAAG,iBAAA,GAAA3B,QAAA,CAAAK,OAAA,cAAAsB,iBAAA,KAAA,KAAA,CAAA,IAAAA,iBAAA,CAASC,QAAQ,UAACC,EAAA,EAAYC,IAAYC,KAAe,EAAAC,MAAA,EAAgBC,OAAeC,KAAkB,EAAA;AACjH,MAAA,IAAMC,UAAa,GAAA;AACjB3B,QAAAA,OAAS,EAAA0B,KAAA;QACTzB,YAAYyB,KAAQ,GAAAF,MAAA;AACpBtB,QAAAA,QAAU,EAAAuB,KAAA;QACVtB,WAAWsB,KAAQ,GAAAF,KAAA;AACnBnB,QAAAA,SAAW,EAAAmB,KAAA;AACXlB,QAAAA,UAAY,EAAAmB,MAAAA;OACd,CAAA;MAEE,IAAAhB,cAAA,CAAeR,YAAY2B,UAAW,CAAA3B,OAAA,IACtCQ,eAAeP,UAAe,KAAA0B,UAAA,CAAW1B,UACzC,IAAAO,cAAA,CAAeN,QAAa,KAAAyB,UAAA,CAAWzB,YACvCM,cAAe,CAAAL,SAAA,KAAcwB,UAAW,CAAAxB,SAAA,IACxCK,cAAe,CAAAJ,SAAA,KAAcuB,WAAWvB,SACxC,IAAAI,cAAA,CAAeH,UAAe,KAAAsB,UAAA,CAAWtB,UACzC,EAAA;QACAI,iBAAA,CAAkBkB,UAAU,CAAA,CAAA;AAC9B,OAAA;AACF,KAAC,CAAA,CAAA;GACH,CAAA;AAEM,EAAA,IAAAC,aAAA,GAAgBC,YAAY,YAAM;AAClC,IAAA,IAAA,CAACb,MAAQ,EAAAC,SAAA,CAAU,IAAI,CAAA,CAAA;AAC7B,GAAA,EAAG,CAACD,MAAM,CAAC,CAAA,CAAA;AACL,EAAA,IAAAc,YAAA,GAAeD,YAAY,YAAM;AACjC,IAAA,IAAAb,MAAA,YAAkB,KAAK,CAAA,CAAA;AAC7B,GAAA,EAAG,CAACA,MAAM,CAAC,CAAA,CAAA;AACXe,EAAAA,SAAA,CAAU,YAAM;IACd,IAAI,CAAChD,QAAU,EAAA;AACC6C,MAAAA,aAAA,EAAA,CAAA;AAChB,KAAA;AACA,IAAA,OAAO,YAAM;AACEE,MAAAA,YAAA,EAAA,CAAA;KACf,CAAA;GACC,EAAA,CAAC/C,QAAU,EAAA6C,aAAA,EAAeE,YAAY,CAAC,CAAA,CAAA;AAC1CC,EAAAA,SAAA,CAAU,YAAM;AACV,IAAA,IAAA,CAACrC,cAAcG,OAAS,EAAA;MAC1BH,aAAA,CAAcG,OAAU,GAAA,IAAA,CAAA;AACxB,MAAA,OAAA;AACF,KAAA;AACM,IAAA,IAAAmC,MAAA,GAAqBC,UAAW,CAAAC,GAAA,CAAI,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAMC,YACJ3B,cAAe,CAAAR,OAAA,IAAWZ,SAAU,CAAAgD,GAAA,IAAO,MAAMJ,MAAO,CAAAR,MAAA;AAAA;IACxDhB,cAAe,CAAAP,UAAA,IAAcb,SAAU,CAAAiD,MAAA,IAAU,CAAM,CAAA,IAAA,CAAA;AAAA;AACvD7B,IAAAA,cAAe,CAAAN,QAAA,IAAYd,SAAU,CAAAkD,IAAA,IAAQ,MAAMN,MAAO,CAAAT,KAAA;AAAA;IAC1Df,cAAe,CAAAL,SAAA,IAAaf,SAAU,CAAAmD,KAAA,IAAS,CAAM,CAAA,IAAA,CAAA,CAAA;IACvD,IAAI3B,cAAcuB,SAAW,EAAA;MAC3BtB,YAAA,CAAasB,SAAS,CAAA,CAAA;MACtBtD,QAAA,CAASsD,SAAS,CAAA,CAAA;MAClB,IAAIA,aAAalD,WAAa,EAAA;AACf6C,QAAAA,YAAA,EAAA,CAAA;AACf,OAAA;AACF,KAAA;AACF,GAAA,EAAG,CAACtB,cAAgB,EAAAI,SAAA,EAAWxB,WAAWP,QAAU,EAAAI,WAAA,EAAa6C,YAAY,CAAC,CAAA,CAAA;EAE5E,sBAAAU,KAAA,CAAAC,aAAA,CAACC,IAAK,EAAAC,cAAA,CAAAA,cAAA,CAAA;AAAA/D,IAAAA,GAAA,EAAKY,QAAAA;AAAW,GAAA,EAAGF;IAAMsD,QAAU,EAAA,SAAVA,QAAUA,GAAA;MAAA,OAAM1B,gBAAiB,EAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,EAC7D7B,QACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { _ as _slicedToArray, c as _asyncToGenerator, d as _regenerator } from '../../../_chunks/
|
|
1
|
+
import { _ as _slicedToArray, c as _asyncToGenerator, d as _regenerator } from '../../../_chunks/DpFbw-p-.js';
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
|
+
export { useImageId } from './useImageId.js';
|
|
3
4
|
|
|
4
5
|
var useAveColor = function useAveColor(_ref) {
|
|
5
6
|
var source = _ref.source,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/Image/hook/index.ts"],"sourcesContent":["import { useState, useEffect, useMemo } from \"react\";\nimport { ImageSourcePropType, ImageURISource } from \"react-native\";\nimport { RedsImage, TLoadStyle } from \"../interface\";\n\nexport const useAveColor = ({\n source,\n defaultColor,\n loadingAve,\n}: {\n source: ImageSourcePropType;\n defaultColor: string;\n loadingAve: boolean;\n}) => {\n const url = (source as ImageURISource)?.uri;\n const [color, setColor] = useState(defaultColor);\n useEffect(() => {\n if (!loadingAve || !url) return;\n fetch(url + `${url.includes(\"?\") ? \"&\" : \"?\"}imageAve`)\n .then(async (a) => a.json())\n .then((res) => {\n res.RGB && setColor(res.RGB.replace(\"0x\", \"#\"));\n })\n .catch(() => {});\n }, [source, loadingAve]);\n return color;\n};\n\nexport const useBlur = ({ source }: { source: ImageSourcePropType }) => {\n const url = (source as ImageURISource)?.uri;\n if (!url) return { uri: \"\" };\n return { uri: url.includes(\"?\") ? url.replace(/\\?.*/, \"?imageMogr2/blur/25x25\") : url + \"?imageMogr2/blur/25x25\" };\n};\n"],"names":["useAveColor","source","_ref","defaultColor","loadingAve","url","uri","_useState","useState","_useState2","_slicedToArray","color","setColor","useEffect","fetch","includes","then","_ref2","_asyncToGenerator","_regenerator","m","_callee","a","json","_x","apply","arguments","res","RGB","replace","useBlur","_ref3"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/Image/hook/index.ts"],"sourcesContent":["import { useState, useEffect, useMemo } from \"react\";\nimport { ImageSourcePropType, ImageURISource } from \"react-native\";\nimport { RedsImage, TLoadStyle } from \"../interface\";\n\nexport const useAveColor = ({\n source,\n defaultColor,\n loadingAve,\n}: {\n source: ImageSourcePropType;\n defaultColor: string;\n loadingAve: boolean;\n}) => {\n const url = (source as ImageURISource)?.uri;\n const [color, setColor] = useState(defaultColor);\n useEffect(() => {\n if (!loadingAve || !url) return;\n fetch(url + `${url.includes(\"?\") ? \"&\" : \"?\"}imageAve`)\n .then(async (a) => a.json())\n .then((res) => {\n res.RGB && setColor(res.RGB.replace(\"0x\", \"#\"));\n })\n .catch(() => {});\n }, [source, loadingAve]);\n return color;\n};\n\nexport const useBlur = ({ source }: { source: ImageSourcePropType }) => {\n const url = (source as ImageURISource)?.uri;\n if (!url) return { uri: \"\" };\n return { uri: url.includes(\"?\") ? url.replace(/\\?.*/, \"?imageMogr2/blur/25x25\") : url + \"?imageMogr2/blur/25x25\" };\n};\n\nexport { useImageId } from \"./useImageId\";\n"],"names":["useAveColor","source","_ref","defaultColor","loadingAve","url","uri","_useState","useState","_useState2","_slicedToArray","color","setColor","useEffect","fetch","includes","then","_ref2","_asyncToGenerator","_regenerator","m","_callee","a","json","_x","apply","arguments","res","RGB","replace","useBlur","_ref3"],"mappings":";;;;IAIaA,cAAc,SAAdA,kBAQP;AAAA,EAAA,IAPJC,MAAA,GAAAC,IAAA,CAAAD,MAAA;IACAE,YAAA,GAAAD,IAAA,CAAAC,YAAA;IACAC,UAAA,GAAAF,IAAA,CAAAE,UAAA,CAAA;EAMA,IAAMC,MAAOJ,MAA2B,KAAA,IAAA,IAA3BA,MAA2B,KAA3BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAA2B,CAAAK,GAAA,CAAA;AACxC,EAAA,IAAAC,SAAA,GAA0BC,SAASL,YAAY,CAAA;IAAAM,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAxCI,IAAAA,KAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAOG,IAAAA,QAAQ,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AACtBI,EAAAA,SAAA,CAAU,YAAM;AACV,IAAA,IAAA,CAACT,UAAc,IAAA,CAACC,GAAK,EAAA,OAAA;AACzBS,IAAAA,KAAA,CAAMT,gBAASA,GAAA,CAAIU,SAAS,GAAG,CAAA,GAAI,MAAM,GAAG,EAAU,UAAA,CAAA,EACnDC,IAAK,cAAA,YAAA;MAAA,IAAAC,KAAA,GAAAC,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAA,SAAAC,OAAAA,CAAOC;;;;mCAAMA,CAAE,CAAAC,IAAA,EAAM,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAF,OAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,MAAA,OAAA,UAAAG,EAAA,EAAA;AAAA,QAAA,OAAAP,KAAA,CAAAQ,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAAA,CAC1B,CAAAV,IAAA,CAAK,UAACW,GAAQ,EAAA;AACbA,MAAAA,GAAA,CAAIC,OAAOhB,QAAS,CAAAe,GAAA,CAAIC,IAAIC,OAAQ,CAAA,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AAChD,KAAC,CACA,CAAA,OAAA,CAAA,CAAM,YAAM,EAAE,CAAA,CAAA;AACnB,GAAG,EAAA,CAAC5B,MAAQ,EAAAG,UAAU,CAAC,CAAA,CAAA;AAChB,EAAA,OAAAO,KAAA,CAAA;AACT,EAAA;IAEamB,OAAU,GAAA,SAAVA,OAAUA,CAAAC,KAAA,EAAiD;AAAA,EAAA,IAA9C9B,MAAA,GAAA8B,KAAA,CAAA9B,MAAA,CAAA;EACxB,IAAMI,MAAOJ,MAA2B,KAAA,IAAA,IAA3BA,MAA2B,KAA3BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAA2B,CAAAK,GAAA,CAAA;EACxC,IAAI,CAACD,GAAA,EAAY,OAAA;AAAEC,IAAAA,KAAK,EAAA;GAAG,CAAA;EAC3B,OAAO;AAAEA,IAAAA,GAAA,EAAKD,GAAI,CAAAU,QAAA,CAAS,GAAG,CAAA,GAAIV,GAAI,CAAAwB,OAAA,CAAQ,MAAQ,EAAA,wBAAwB,CAAI,GAAAxB,GAAA,GAAM,wBAAA;GAAyB,CAAA;AACnH;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
var globalCounter = 0;
|
|
4
|
+
function useImageId() {
|
|
5
|
+
if (typeof React.useId === "function") {
|
|
6
|
+
return React.useId();
|
|
7
|
+
}
|
|
8
|
+
var idRef = useRef(null);
|
|
9
|
+
if (idRef.current === null) {
|
|
10
|
+
idRef.current = "image-".concat(++globalCounter);
|
|
11
|
+
}
|
|
12
|
+
return idRef.current;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { useImageId };
|
|
16
|
+
//# sourceMappingURL=useImageId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useImageId.js","sources":["../../../../../src/components/Image/hook/useImageId.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport React from \"react\";\n\n/**\n * useId polyfill for React < 18\n *\n * React 18+ has native useId() hook for generating unique IDs.\n * For older versions, we implement a simple counter-based solution.\n */\n\nlet globalCounter = 0;\n\n/**\n * Generate a unique ID for each image instance\n *\n * If React 18+ useId is available, use it.\n * Otherwise, use a counter-based fallback.\n */\nexport function useImageId(): string {\n // Try to use React 18+ native useId if available\n if (typeof (React as any).useId === \"function\") {\n return (React as any).useId();\n }\n\n // Fallback for React < 18\n const idRef = useRef<string | null>(null);\n\n if (idRef.current === null) {\n idRef.current = `image-${++globalCounter}`;\n }\n\n return idRef.current;\n}\n"],"names":["globalCounter","useImageId","React","useId","idRef","useRef","current","concat"],"mappings":";;AAUA,IAAIA,aAAgB,GAAA,CAAA,CAAA;AAQb,SAASC,UAAqBA,GAAA;AAE/B,EAAA,IAAA,OAAQC,KAAc,CAAAC,KAAA,KAAU,UAAY,EAAA;AAC9C,IAAA,OAAQD,MAAcC,KAAM,EAAA,CAAA;AAC9B,GAAA;AAGM,EAAA,IAAAC,KAAA,GAAQC,OAAsB,IAAI,CAAA,CAAA;AAEpC,EAAA,IAAAD,KAAA,CAAME,YAAY,IAAM,EAAA;AACpBF,IAAAA,KAAA,CAAAE,OAAA,GAAA,QAAA,CAAAC,MAAA,CAAmB,EAAEP,aAAa,CAAA,CAAA;AAC1C,GAAA;EAEA,OAAOI,KAAM,CAAAE,OAAA,CAAA;AACf;;;;"}
|
|
@@ -2,11 +2,12 @@ import { Platform } from 'react-native';
|
|
|
2
2
|
import Image from './Image.js';
|
|
3
3
|
import Image69 from './Image69.js';
|
|
4
4
|
export { i as ImageType } from '../../_chunks/CMnjcQfl.js';
|
|
5
|
-
import '../../_chunks/
|
|
5
|
+
import '../../_chunks/DpFbw-p-.js';
|
|
6
6
|
import 'react';
|
|
7
7
|
import './styles.js';
|
|
8
8
|
import '@xhsreds/reds-token-next';
|
|
9
9
|
import './hook/index.js';
|
|
10
|
+
import './hook/useImageId.js';
|
|
10
11
|
import './CircularProgress.js';
|
|
11
12
|
import 'react-native-svg';
|
|
12
13
|
import '../ConfigProvider/hooks/ConfigCache/ConfigCache.js';
|
|
@@ -17,6 +18,7 @@ import '../ConfigProvider/hooks/themeToken/useColorMode.js';
|
|
|
17
18
|
import '../ConfigProvider/hooks/ConfigContext/ConfigContext.js';
|
|
18
19
|
import './utils.js';
|
|
19
20
|
import './VisibilitySensor.js';
|
|
21
|
+
import './manager/ImageAPMManager.js';
|
|
20
22
|
import './apm.js';
|
|
21
23
|
|
|
22
24
|
var _Platform$constants;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Image/index.ts"],"sourcesContent":["import { Platform } from \"react-native\";\nimport Image from \"./Image\";\nimport Image69 from \"./Image69\";\nimport * as ImageType from \"./interface\";\n\nconst ImageComponent = Platform.constants?.reactNativeVersion?.minor === 72 ? Image : Image69;\nexport default ImageComponent;\nexport { ImageComponent as Image, ImageType, Image69 };\n"],"names":["ImageComponent","_Platform$constants","Platform","constants","reactNativeVersion","minor","Image","Image69"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Image/index.ts"],"sourcesContent":["import { Platform } from \"react-native\";\nimport Image from \"./Image\";\nimport Image69 from \"./Image69\";\nimport * as ImageType from \"./interface\";\n\nconst ImageComponent = Platform.constants?.reactNativeVersion?.minor === 72 ? Image : Image69;\nexport default ImageComponent;\nexport { ImageComponent as Image, ImageType, Image69 };\n"],"names":["ImageComponent","_Platform$constants","Platform","constants","reactNativeVersion","minor","Image","Image69"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKMA,IAAAA,iBAAiB,CAAA,CAAAC,mBAAA,GAAAC,QAAS,CAAAC,SAAA,MAAA,IAAA,IAAAF,mBAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,mBAAA,GAATA,mBAAA,CAAoBG,kBAAoB,MAAA,IAAA,IAAAH,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxCA,mBAAA,CAAwCI,KAAA,MAAU,KAAKC,KAAQ,GAAAC;;;;"}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { e as _typeof, g as _createClass, h as _classCallCheck, c as _asyncToGenerator, d as _regenerator, _ as _slicedToArray } from '../../../_chunks/DpFbw-p-.js';
|
|
2
|
+
import { Image } from 'react-native';
|
|
3
|
+
import { isLocalFile, isDataUri, convertKeysToSnakeCase } from '../utils.js';
|
|
4
|
+
import { apmPush } from '../apm.js';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __defNormalProp = function __defNormalProp(obj, key, value) {
|
|
8
|
+
return key in obj ? __defProp(obj, key, {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
configurable: true,
|
|
11
|
+
writable: true,
|
|
12
|
+
value: value
|
|
13
|
+
}) : obj[key] = value;
|
|
14
|
+
};
|
|
15
|
+
var __publicField = function __publicField(obj, key, value) {
|
|
16
|
+
return __defNormalProp(obj, _typeof(key) !== "symbol" ? key + "" : key, value);
|
|
17
|
+
};
|
|
18
|
+
var _ImageAPMManager = /*#__PURE__*/function () {
|
|
19
|
+
function _ImageAPMManager() {
|
|
20
|
+
_classCallCheck(this, _ImageAPMManager);
|
|
21
|
+
// Core tracking data
|
|
22
|
+
__publicField(this, "trackers", /* @__PURE__ */new Map());
|
|
23
|
+
__publicField(this, "registrations", /* @__PURE__ */new Map());
|
|
24
|
+
// Cache query batching
|
|
25
|
+
__publicField(this, "pendingCacheQueries", /* @__PURE__ */new Map());
|
|
26
|
+
// url -> [imageIds]
|
|
27
|
+
__publicField(this, "cacheQueryTimer", null);
|
|
28
|
+
__publicField(this, "CACHE_QUERY_DEBOUNCE_MS", 50);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Singleton pattern - ensures only one manager instance exists
|
|
32
|
+
*/
|
|
33
|
+
return _createClass(_ImageAPMManager, [{
|
|
34
|
+
key: "register",
|
|
35
|
+
value:
|
|
36
|
+
/**
|
|
37
|
+
* Register an image for APM tracking
|
|
38
|
+
* Called once per image on mount
|
|
39
|
+
*
|
|
40
|
+
* Corresponds to original useEffect logic at Image.tsx:105-139
|
|
41
|
+
*/
|
|
42
|
+
function register(imageId, source, apmBiz) {
|
|
43
|
+
var state = {
|
|
44
|
+
imageUrl: "",
|
|
45
|
+
imageHost: "",
|
|
46
|
+
intersectTime: 0,
|
|
47
|
+
imageSize: 0,
|
|
48
|
+
isFirstScreen: "",
|
|
49
|
+
// Not determined yet
|
|
50
|
+
isPrefetch: "",
|
|
51
|
+
// Will be set by cache query
|
|
52
|
+
isSuccess: "false",
|
|
53
|
+
errorReason: "",
|
|
54
|
+
loadedStartTime: 0,
|
|
55
|
+
loadedTime: 0,
|
|
56
|
+
loadDuration: 0,
|
|
57
|
+
viewDuration: 0,
|
|
58
|
+
_isViewable: false,
|
|
59
|
+
_hasLoaded: false,
|
|
60
|
+
_hasPushed: false,
|
|
61
|
+
_firstVisibilityChecked: false
|
|
62
|
+
};
|
|
63
|
+
this.trackers.set(imageId, state);
|
|
64
|
+
this.registrations.set(imageId, {
|
|
65
|
+
imageId: imageId,
|
|
66
|
+
source: source,
|
|
67
|
+
apmBiz: apmBiz
|
|
68
|
+
});
|
|
69
|
+
this.extractUrlInfo(imageId, source);
|
|
70
|
+
this.queueCacheQuery(imageId, source);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Unregister and cleanup
|
|
74
|
+
* Called on component unmount
|
|
75
|
+
*/
|
|
76
|
+
}, {
|
|
77
|
+
key: "unregister",
|
|
78
|
+
value: function unregister(imageId) {
|
|
79
|
+
this.trackers["delete"](imageId);
|
|
80
|
+
this.registrations["delete"](imageId);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Update source if it changes
|
|
84
|
+
* Corresponds to formatSource dependency updates
|
|
85
|
+
*/
|
|
86
|
+
}, {
|
|
87
|
+
key: "updateSource",
|
|
88
|
+
value: function updateSource(imageId, source) {
|
|
89
|
+
var registration = this.registrations.get(imageId);
|
|
90
|
+
if (!registration) return;
|
|
91
|
+
registration.source = source;
|
|
92
|
+
this.extractUrlInfo(imageId, source);
|
|
93
|
+
this.queueCacheQuery(imageId, source);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Report visibility change from VisibilitySensor
|
|
97
|
+
*
|
|
98
|
+
* Corresponds to:
|
|
99
|
+
* - checkIsVisible callback (Image.tsx:80-88)
|
|
100
|
+
* - First screen detection (Image.tsx:161-167)
|
|
101
|
+
* - Visibility tracking useEffect (Image.tsx:168-178)
|
|
102
|
+
*/
|
|
103
|
+
}, {
|
|
104
|
+
key: "setViewable",
|
|
105
|
+
value: function setViewable(imageId, isViewable) {
|
|
106
|
+
var state = this.trackers.get(imageId);
|
|
107
|
+
if (!state) return;
|
|
108
|
+
if (!state._firstVisibilityChecked) {
|
|
109
|
+
state._firstVisibilityChecked = true;
|
|
110
|
+
state.isFirstScreen = isViewable ? "true" : "false";
|
|
111
|
+
}
|
|
112
|
+
if (!state._isViewable && isViewable) {
|
|
113
|
+
state._isViewable = true;
|
|
114
|
+
state.intersectTime = Date.now();
|
|
115
|
+
if (state._hasLoaded) {
|
|
116
|
+
this.pushData(imageId);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
state._isViewable = isViewable;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Record load start event
|
|
123
|
+
* Corresponds to onLoadStart (Image.tsx:211-213)
|
|
124
|
+
*/
|
|
125
|
+
}, {
|
|
126
|
+
key: "recordLoadStart",
|
|
127
|
+
value: function recordLoadStart(imageId) {
|
|
128
|
+
var state = this.trackers.get(imageId);
|
|
129
|
+
if (!state) return;
|
|
130
|
+
state.loadedStartTime = Date.now();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Record progress event
|
|
134
|
+
* Corresponds to onProgress (Image.tsx:189-198)
|
|
135
|
+
*/
|
|
136
|
+
}, {
|
|
137
|
+
key: "recordProgress",
|
|
138
|
+
value: function recordProgress(imageId, loaded, total) {
|
|
139
|
+
var state = this.trackers.get(imageId);
|
|
140
|
+
if (!state) return;
|
|
141
|
+
state.imageSize = total;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Record successful load
|
|
145
|
+
* Corresponds to onLoad (Image.tsx:199-209)
|
|
146
|
+
*/
|
|
147
|
+
}, {
|
|
148
|
+
key: "recordLoad",
|
|
149
|
+
value: function recordLoad(imageId) {
|
|
150
|
+
var state = this.trackers.get(imageId);
|
|
151
|
+
if (!state) return;
|
|
152
|
+
var now = Date.now();
|
|
153
|
+
var loadDuration = now - state.loadedStartTime;
|
|
154
|
+
state.loadedTime = now;
|
|
155
|
+
state.loadDuration = loadDuration < 0 ? 0 : loadDuration;
|
|
156
|
+
state.isSuccess = "true";
|
|
157
|
+
state._hasLoaded = true;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Record error event
|
|
161
|
+
* Corresponds to onError (Image.tsx:215-222)
|
|
162
|
+
*/
|
|
163
|
+
}, {
|
|
164
|
+
key: "recordError",
|
|
165
|
+
value: function recordError(imageId, errorMessage) {
|
|
166
|
+
var state = this.trackers.get(imageId);
|
|
167
|
+
if (!state) return;
|
|
168
|
+
state.isSuccess = "false";
|
|
169
|
+
state.errorReason = errorMessage;
|
|
170
|
+
state._hasLoaded = true;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if ready to push and push if conditions met
|
|
174
|
+
* Corresponds to onLoadEnd (Image.tsx:179-187)
|
|
175
|
+
*
|
|
176
|
+
* Push logic: Only push when BOTH:
|
|
177
|
+
* 1. Image is viewable (entered viewport)
|
|
178
|
+
* 2. Image has loaded (success or error)
|
|
179
|
+
*/
|
|
180
|
+
}, {
|
|
181
|
+
key: "checkAndPush",
|
|
182
|
+
value: function checkAndPush(imageId) {
|
|
183
|
+
var state = this.trackers.get(imageId);
|
|
184
|
+
if (!state || state._hasPushed) return;
|
|
185
|
+
if (state._isViewable && state._hasLoaded) {
|
|
186
|
+
this.pushData(imageId);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Extract URL and host from image source
|
|
191
|
+
* Corresponds to useEffect lines 105-121
|
|
192
|
+
*/
|
|
193
|
+
}, {
|
|
194
|
+
key: "extractUrlInfo",
|
|
195
|
+
value: function extractUrlInfo(imageId, source) {
|
|
196
|
+
var state = this.trackers.get(imageId);
|
|
197
|
+
if (!state) return;
|
|
198
|
+
try {
|
|
199
|
+
if (typeof source !== "number" && !isLocalFile(source.uri) && !isDataUri(source.uri)) {
|
|
200
|
+
var imageUrl = new URL(source.uri);
|
|
201
|
+
state.imageHost = "".concat(imageUrl.protocol, "//").concat(imageUrl.host);
|
|
202
|
+
state.imageUrl = source.uri;
|
|
203
|
+
}
|
|
204
|
+
} catch (error) {}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Queue a cache query for batching
|
|
208
|
+
* Corresponds to useEffect lines 123-139
|
|
209
|
+
*/
|
|
210
|
+
}, {
|
|
211
|
+
key: "queueCacheQuery",
|
|
212
|
+
value: function queueCacheQuery(imageId, source) {
|
|
213
|
+
var _this = this;
|
|
214
|
+
var imageUrl = (source === null || source === void 0 ? void 0 : source.uri) || "";
|
|
215
|
+
if (!imageUrl) return;
|
|
216
|
+
if (!this.pendingCacheQueries.has(imageUrl)) {
|
|
217
|
+
this.pendingCacheQueries.set(imageUrl, []);
|
|
218
|
+
}
|
|
219
|
+
this.pendingCacheQueries.get(imageUrl).push(imageId);
|
|
220
|
+
if (!this.cacheQueryTimer) {
|
|
221
|
+
this.cacheQueryTimer = setTimeout(function () {
|
|
222
|
+
_this.flushCacheQueries();
|
|
223
|
+
}, this.CACHE_QUERY_DEBOUNCE_MS);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Execute batched cache queries
|
|
228
|
+
*
|
|
229
|
+
* Key optimization: Instead of 100 individual RNImage.queryCache() calls,
|
|
230
|
+
* we batch them into 1-5 calls (depending on timing)
|
|
231
|
+
*/
|
|
232
|
+
}, {
|
|
233
|
+
key: "flushCacheQueries",
|
|
234
|
+
value: (function () {
|
|
235
|
+
var _flushCacheQueries = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
236
|
+
var _this2 = this;
|
|
237
|
+
var queries, allUrls, results;
|
|
238
|
+
return _regenerator().w(function (_context) {
|
|
239
|
+
while (1) switch (_context.n) {
|
|
240
|
+
case 0:
|
|
241
|
+
queries = Array.from(this.pendingCacheQueries.entries());
|
|
242
|
+
this.pendingCacheQueries.clear();
|
|
243
|
+
this.cacheQueryTimer = null;
|
|
244
|
+
if (!(typeof Image.queryCache !== "function")) {
|
|
245
|
+
_context.n = 1;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
queries.forEach(function (_ref) {
|
|
249
|
+
var _ref2 = _slicedToArray(_ref, 2);
|
|
250
|
+
_ref2[0];
|
|
251
|
+
var imageIds = _ref2[1];
|
|
252
|
+
imageIds.forEach(function (imageId) {
|
|
253
|
+
var state = _this2.trackers.get(imageId);
|
|
254
|
+
if (state) {
|
|
255
|
+
state.isPrefetch = "";
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
return _context.a(2);
|
|
260
|
+
case 1:
|
|
261
|
+
allUrls = queries.map(function (_ref3) {
|
|
262
|
+
var _ref4 = _slicedToArray(_ref3, 1),
|
|
263
|
+
url = _ref4[0];
|
|
264
|
+
return url;
|
|
265
|
+
});
|
|
266
|
+
_context.p = 2;
|
|
267
|
+
_context.n = 3;
|
|
268
|
+
return Image.queryCache(allUrls);
|
|
269
|
+
case 3:
|
|
270
|
+
results = _context.v;
|
|
271
|
+
queries.forEach(function (_ref5) {
|
|
272
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
273
|
+
url = _ref6[0],
|
|
274
|
+
imageIds = _ref6[1];
|
|
275
|
+
var uriEncodeImageUrl = encodeURI(url);
|
|
276
|
+
var isPrefetched = !!(results !== null && results !== void 0 && results[uriEncodeImageUrl]);
|
|
277
|
+
imageIds.forEach(function (imageId) {
|
|
278
|
+
var state = _this2.trackers.get(imageId);
|
|
279
|
+
if (state) {
|
|
280
|
+
state.isPrefetch = String(isPrefetched);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
_context.n = 5;
|
|
285
|
+
break;
|
|
286
|
+
case 4:
|
|
287
|
+
_context.p = 4;
|
|
288
|
+
_context.v;
|
|
289
|
+
queries.forEach(function (_ref7) {
|
|
290
|
+
var _ref8 = _slicedToArray(_ref7, 2);
|
|
291
|
+
_ref8[0];
|
|
292
|
+
var imageIds = _ref8[1];
|
|
293
|
+
imageIds.forEach(function (imageId) {
|
|
294
|
+
var state = _this2.trackers.get(imageId);
|
|
295
|
+
if (state) {
|
|
296
|
+
state.isPrefetch = "false";
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
case 5:
|
|
301
|
+
return _context.a(2);
|
|
302
|
+
}
|
|
303
|
+
}, _callee, this, [[2, 4]]);
|
|
304
|
+
}));
|
|
305
|
+
function flushCacheQueries() {
|
|
306
|
+
return _flushCacheQueries.apply(this, arguments);
|
|
307
|
+
}
|
|
308
|
+
return flushCacheQueries;
|
|
309
|
+
}()
|
|
310
|
+
/**
|
|
311
|
+
* Push APM data to analytics
|
|
312
|
+
* Corresponds to pushApmData callback (Image.tsx:141-158)
|
|
313
|
+
*
|
|
314
|
+
* This is where all the collected metrics are sent to the APM system
|
|
315
|
+
*/
|
|
316
|
+
)
|
|
317
|
+
}, {
|
|
318
|
+
key: "pushData",
|
|
319
|
+
value: function pushData(imageId) {
|
|
320
|
+
var state = this.trackers.get(imageId);
|
|
321
|
+
var registration = this.registrations.get(imageId);
|
|
322
|
+
if (!state || !registration || state._hasPushed) return;
|
|
323
|
+
var viewDuration = state.loadedTime - state.intersectTime;
|
|
324
|
+
state.viewDuration = viewDuration < 0 ? 0 : viewDuration;
|
|
325
|
+
if (!state.isPrefetch) {
|
|
326
|
+
var imageSize = state.imageSize || 0;
|
|
327
|
+
state.isPrefetch = String(imageSize <= 0);
|
|
328
|
+
}
|
|
329
|
+
if (!state.imageUrl) return;
|
|
330
|
+
state._hasPushed = true;
|
|
331
|
+
var apmData = convertKeysToSnakeCase({
|
|
332
|
+
imageUrl: state.imageUrl,
|
|
333
|
+
imageHost: state.imageHost,
|
|
334
|
+
intersectTime: state.intersectTime,
|
|
335
|
+
imageSize: state.imageSize,
|
|
336
|
+
isFirstScreen: state.isFirstScreen,
|
|
337
|
+
isPrefetch: state.isPrefetch,
|
|
338
|
+
isSuccess: state.isSuccess,
|
|
339
|
+
errorReason: state.errorReason,
|
|
340
|
+
loadedStartTime: state.loadedStartTime,
|
|
341
|
+
loadedTime: state.loadedTime,
|
|
342
|
+
loadDuration: state.loadDuration,
|
|
343
|
+
viewDuration: state.viewDuration
|
|
344
|
+
});
|
|
345
|
+
apmPush(apmData);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Debug method to inspect tracker state
|
|
349
|
+
* Useful for testing and validation
|
|
350
|
+
*/
|
|
351
|
+
}, {
|
|
352
|
+
key: "getState",
|
|
353
|
+
value: function getState(imageId) {
|
|
354
|
+
return this.trackers.get(imageId);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Debug method to get all tracked image IDs
|
|
358
|
+
* Useful for testing and validation
|
|
359
|
+
*/
|
|
360
|
+
}, {
|
|
361
|
+
key: "getAllTrackedIds",
|
|
362
|
+
value: function getAllTrackedIds() {
|
|
363
|
+
return Array.from(this.trackers.keys());
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Reset manager state (for testing)
|
|
367
|
+
*/
|
|
368
|
+
}, {
|
|
369
|
+
key: "reset",
|
|
370
|
+
value: function reset() {
|
|
371
|
+
this.trackers.clear();
|
|
372
|
+
this.registrations.clear();
|
|
373
|
+
this.pendingCacheQueries.clear();
|
|
374
|
+
if (this.cacheQueryTimer) {
|
|
375
|
+
clearTimeout(this.cacheQueryTimer);
|
|
376
|
+
this.cacheQueryTimer = null;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}], [{
|
|
380
|
+
key: "getInstance",
|
|
381
|
+
value: function getInstance() {
|
|
382
|
+
if (!_ImageAPMManager.instance) {
|
|
383
|
+
_ImageAPMManager.instance = new _ImageAPMManager();
|
|
384
|
+
}
|
|
385
|
+
return _ImageAPMManager.instance;
|
|
386
|
+
}
|
|
387
|
+
}]);
|
|
388
|
+
}();
|
|
389
|
+
__publicField(_ImageAPMManager, "instance");
|
|
390
|
+
var ImageAPMManager = _ImageAPMManager;
|
|
391
|
+
|
|
392
|
+
export { ImageAPMManager as default };
|
|
393
|
+
//# sourceMappingURL=ImageAPMManager.js.map
|