@xhsreds/reds-rn-next 0.1.2 → 0.1.4
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/benchmarks/out.json +900 -820
- 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-12.json +1 -1
- package/coverage/.tmp/coverage-13.json +1 -1
- package/coverage/.tmp/coverage-14.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-18.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-25.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 -0
- package/coverage/.tmp/coverage-3.json +1 -1
- package/coverage/.tmp/coverage-30.json +1 -0
- package/coverage/.tmp/coverage-31.json +1 -0
- package/coverage/.tmp/coverage-32.json +1 -0
- package/coverage/.tmp/coverage-4.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/CkkZzOy_.js +23 -0
- package/lib/cjs/_chunks/CkkZzOy_.js.map +1 -0
- package/lib/cjs/_chunks/GhFTd1qc.js +22 -0
- package/lib/cjs/_chunks/GhFTd1qc.js.map +1 -0
- package/lib/cjs/_chunks/RPaDcSae.js +20 -0
- package/lib/cjs/_chunks/RPaDcSae.js.map +1 -0
- package/lib/cjs/_chunks/bwo-gq0b.js +66 -0
- package/lib/cjs/_chunks/bwo-gq0b.js.map +1 -0
- package/lib/cjs/components/ActionSheets/ActionSheets.js +99 -0
- package/lib/cjs/components/ActionSheets/ActionSheets.js.map +1 -0
- package/lib/cjs/components/ActionSheets/index.js +37 -0
- package/lib/cjs/components/ActionSheets/index.js.map +1 -0
- package/lib/cjs/components/ActionSheets/interface/index.js +9 -0
- package/lib/cjs/components/ActionSheets/interface/index.js.map +1 -0
- package/lib/cjs/components/ActionSheets/styles.js +59 -0
- package/lib/cjs/components/ActionSheets/styles.js.map +1 -0
- package/lib/cjs/components/Alert/Alert.js +143 -0
- package/lib/cjs/components/Alert/Alert.js.map +1 -0
- package/lib/cjs/components/Alert/index.js +145 -0
- package/lib/cjs/components/Alert/index.js.map +1 -0
- package/lib/cjs/components/Alert/interface/index.js +8 -0
- package/lib/cjs/components/Alert/interface/index.js.map +1 -0
- package/lib/cjs/components/Alert/styles.js +124 -0
- package/lib/cjs/components/Alert/styles.js.map +1 -0
- package/lib/cjs/components/Avatar/Avatar.js +1 -1
- package/lib/cjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/cjs/components/AvatarGroup/AvatarGroup.js +97 -98
- package/lib/cjs/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/lib/cjs/components/AvatarGroup/index.js +61 -21
- package/lib/cjs/components/AvatarGroup/index.js.map +1 -1
- package/lib/cjs/components/Button/Button.js +1 -1
- package/lib/cjs/components/Button/Button.js.map +1 -1
- package/lib/cjs/components/FAB/FAB.js +1 -1
- package/lib/cjs/components/FAB/FAB.js.map +1 -1
- package/lib/cjs/components/Image/hook/index.js +2 -2
- package/lib/cjs/components/Image/hook/index.js.map +1 -1
- package/lib/cjs/components/ImagePreview/ImagePreview.js +96 -68
- package/lib/cjs/components/ImagePreview/ImagePreview.js.map +1 -1
- package/lib/cjs/components/ImagePreview/ImageViewer3.js +3 -3
- package/lib/cjs/components/ImagePreview/ImageViewer3.js.map +1 -1
- package/lib/cjs/components/ImagePreview/index.js +65 -20
- package/lib/cjs/components/ImagePreview/index.js.map +1 -1
- package/lib/cjs/components/List/ListItem/ListItem.js +94 -113
- package/lib/cjs/components/List/ListItem/ListItem.js.map +1 -1
- package/lib/cjs/components/List/index.js +59 -18
- package/lib/cjs/components/List/index.js.map +1 -1
- package/lib/cjs/components/Picker/Picker.js +6 -1
- package/lib/cjs/components/Picker/Picker.js.map +1 -1
- package/lib/cjs/components/Picker/index.js +6 -1
- package/lib/cjs/components/Picker/index.js.map +1 -1
- package/lib/cjs/components/Sheets/Sheets.js +168 -16
- package/lib/cjs/components/Sheets/Sheets.js.map +1 -1
- package/lib/cjs/components/Sheets/index.js +9 -3
- package/lib/cjs/components/Sheets/index.js.map +1 -1
- package/lib/cjs/components/Sheets/interface/index.js +6 -1
- package/lib/cjs/components/Sheets/interface/index.js.map +1 -1
- package/lib/cjs/components/Sheets/styles.js +39 -11
- package/lib/cjs/components/Sheets/styles.js.map +1 -1
- package/lib/cjs/components/Silder/Silder.js +71 -0
- package/lib/cjs/components/Silder/Silder.js.map +1 -0
- package/lib/cjs/components/Silder/index.js +18 -0
- package/lib/cjs/components/Silder/index.js.map +1 -0
- package/lib/cjs/components/Silder/interface/index.js +9 -0
- package/lib/cjs/components/Silder/interface/index.js.map +1 -0
- package/lib/cjs/components/Silder/styles.js +29 -0
- package/lib/cjs/components/Silder/styles.js.map +1 -0
- package/lib/cjs/components/TabBar/TabBar.js +10 -10
- package/lib/cjs/components/TabBar/TabBar.js.map +1 -1
- package/lib/cjs/components/Tag/Tag.js +1 -1
- package/lib/cjs/components/Tag/Tag.js.map +1 -1
- package/lib/cjs/components/Text/hooks/loadFontFromFile.js +1 -1
- package/lib/cjs/components/Text/hooks/loadFontFromFile.js.map +1 -1
- package/lib/cjs/index.js +254 -30
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/_chunks/BJ2Kj1Vd.js +58 -0
- package/lib/esm/_chunks/BJ2Kj1Vd.js.map +1 -0
- package/lib/esm/_chunks/BKEXyO9m.js +19 -0
- package/lib/esm/_chunks/BKEXyO9m.js.map +1 -0
- package/lib/esm/_chunks/{D-HreRcG.js → CwHnr-H1.js} +2 -2
- package/lib/esm/_chunks/{D-HreRcG.js.map → CwHnr-H1.js.map} +1 -1
- package/lib/esm/_chunks/DHJk9lIr.js +19 -0
- package/lib/esm/_chunks/DHJk9lIr.js.map +1 -0
- package/lib/esm/_chunks/RRfNwNcs.js +17 -0
- package/lib/esm/_chunks/RRfNwNcs.js.map +1 -0
- package/lib/esm/components/ActionSheets/ActionSheets.js +95 -0
- package/lib/esm/components/ActionSheets/ActionSheets.js.map +1 -0
- package/lib/esm/components/ActionSheets/index.js +31 -0
- package/lib/esm/components/ActionSheets/index.js.map +1 -0
- package/lib/esm/components/ActionSheets/interface/index.js +2 -0
- package/lib/esm/components/ActionSheets/interface/index.js.map +1 -0
- package/lib/esm/components/ActionSheets/styles.js +55 -0
- package/lib/esm/components/ActionSheets/styles.js.map +1 -0
- package/lib/esm/components/Alert/Alert.js +135 -0
- package/lib/esm/components/Alert/Alert.js.map +1 -0
- package/lib/esm/components/Alert/index.js +139 -0
- package/lib/esm/components/Alert/index.js.map +1 -0
- package/lib/esm/components/Alert/interface/index.js +2 -0
- package/lib/esm/components/Alert/interface/index.js.map +1 -0
- package/lib/esm/components/Alert/styles.js +122 -0
- package/lib/esm/components/Alert/styles.js.map +1 -0
- package/lib/esm/components/Avatar/Avatar.js +2 -2
- package/lib/esm/components/Avatar/Avatar.js.map +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 +95 -100
- package/lib/esm/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/lib/esm/components/AvatarGroup/index.js +59 -19
- package/lib/esm/components/AvatarGroup/index.js.map +1 -1
- package/lib/esm/components/Badge/Badge.js +1 -1
- package/lib/esm/components/Badge/index.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 +2 -2
- package/lib/esm/components/Button/Button.js.map +1 -1
- package/lib/esm/components/Button/index.js +1 -1
- package/lib/esm/components/Button/styleMap.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/useThemeToken.js +1 -1
- package/lib/esm/components/ConfigProvider/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/DropDown/styles.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 +2 -2
- package/lib/esm/components/FAB/FAB.js.map +1 -1
- package/lib/esm/components/FAB/index.js +1 -1
- package/lib/esm/components/Image/Image.js +1 -1
- package/lib/esm/components/Image/hook/index.js +3 -3
- package/lib/esm/components/Image/hook/index.js.map +1 -1
- package/lib/esm/components/Image/index.js +1 -1
- package/lib/esm/components/ImagePreview/Gesture/useGesture.js +1 -1
- package/lib/esm/components/ImagePreview/ImagePreview.js +95 -71
- package/lib/esm/components/ImagePreview/ImagePreview.js.map +1 -1
- package/lib/esm/components/ImagePreview/ImageViewer.js +1 -1
- package/lib/esm/components/ImagePreview/ImageViewer3.js +4 -4
- package/lib/esm/components/ImagePreview/ImageViewer3.js.map +1 -1
- package/lib/esm/components/ImagePreview/index.js +63 -18
- package/lib/esm/components/ImagePreview/index.js.map +1 -1
- package/lib/esm/components/List/ListItem/ListItem.js +92 -115
- package/lib/esm/components/List/ListItem/ListItem.js.map +1 -1
- package/lib/esm/components/List/index.js +59 -18
- package/lib/esm/components/List/index.js.map +1 -1
- package/lib/esm/components/Picker/Picker.js +7 -2
- package/lib/esm/components/Picker/Picker.js.map +1 -1
- package/lib/esm/components/Picker/index.js +7 -2
- package/lib/esm/components/Picker/index.js.map +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/component.js +1 -1
- package/lib/esm/components/Popover/hook.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/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/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/Sheets/Sheets.js +170 -18
- package/lib/esm/components/Sheets/Sheets.js.map +1 -1
- package/lib/esm/components/Sheets/index.js +9 -3
- package/lib/esm/components/Sheets/index.js.map +1 -1
- package/lib/esm/components/Sheets/interface/index.js +1 -1
- package/lib/esm/components/Sheets/styles.js +39 -11
- package/lib/esm/components/Sheets/styles.js.map +1 -1
- package/lib/esm/components/Silder/Silder.js +67 -0
- package/lib/esm/components/Silder/Silder.js.map +1 -0
- package/lib/esm/components/Silder/index.js +12 -0
- package/lib/esm/components/Silder/index.js.map +1 -0
- package/lib/esm/components/Silder/interface/index.js +3 -0
- package/lib/esm/components/Silder/interface/index.js.map +1 -0
- package/lib/esm/components/Silder/styles.js +25 -0
- package/lib/esm/components/Silder/styles.js.map +1 -0
- package/lib/esm/components/Skeleton/Item/SkeletonItem.js +1 -1
- package/lib/esm/components/Skeleton/Skeleton.js +1 -1
- package/lib/esm/components/Skeleton/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/Tab.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 +11 -11
- package/lib/esm/components/TabBar/TabBar.js.map +1 -1
- package/lib/esm/components/TabBar/index.js +1 -1
- package/lib/esm/components/Tag/Tag.js +2 -2
- package/lib/esm/components/Tag/Tag.js.map +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/hooks/cloneContainer.js +1 -1
- package/lib/esm/components/Text/hooks/index.js +1 -1
- package/lib/esm/components/Text/hooks/loadFontFromFile.js +2 -2
- package/lib/esm/components/Text/hooks/loadFontFromFile.js.map +1 -1
- package/lib/esm/components/Text/index.js +1 -1
- package/lib/esm/components/Text/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/index.js +253 -28
- package/lib/esm/index.js.map +1 -1
- package/lib/types/components/ActionSheets/ActionSheets.d.ts +10 -0
- package/lib/types/components/ActionSheets/demo/index.d.ts +2 -0
- package/lib/types/components/ActionSheets/index.d.ts +4 -0
- package/lib/types/components/ActionSheets/interface/index.d.ts +23 -0
- package/lib/types/components/ActionSheets/styles.d.ts +51 -0
- package/lib/types/components/ActionSheets/test/index.bench.d.ts +1 -0
- package/lib/types/components/ActionSheets/test/index.test.d.ts +1 -0
- package/lib/types/components/ActionSheets/test/paper.bench.d.ts +1 -0
- package/lib/types/components/Alert/Alert.d.ts +4 -0
- package/lib/types/components/Alert/demo/index.d.ts +2 -0
- package/lib/types/components/Alert/index.d.ts +4 -0
- package/lib/types/components/Alert/interface/index.d.ts +35 -0
- package/lib/types/components/Alert/styles.d.ts +108 -0
- package/lib/types/components/Alert/test/index.bench.d.ts +1 -0
- package/lib/types/components/Alert/test/index.test.d.ts +1 -0
- package/lib/types/components/Alert/test/paper.bench.d.ts +1 -0
- package/lib/types/components/FAB/test/paper.bench.d.ts +1 -0
- package/lib/types/components/Sheets/Sheets.d.ts +17 -1
- package/lib/types/components/Sheets/interface/index.d.ts +45 -0
- package/lib/types/components/Sheets/styles.d.ts +38 -9
- package/lib/types/components/Sheets/test/index.test.d.ts +1 -1
- package/lib/types/components/Silder/Silder.d.ts +13 -0
- package/lib/types/components/Silder/demo/index.d.ts +2 -0
- package/lib/types/components/Silder/index.d.ts +4 -0
- package/lib/types/components/Silder/interface/index.d.ts +19 -0
- package/lib/types/components/Silder/styles.d.ts +20 -0
- package/lib/types/components/Silder/test/index.bench.d.ts +1 -0
- package/lib/types/components/Silder/test/index.test.d.ts +1 -0
- package/lib/types/index.d.ts +6 -0
- package/package.json +2 -3
- package/src/components/ActionSheets/ActionSheets.tsx +66 -0
- package/src/components/ActionSheets/demo/index.tsx +65 -0
- package/src/components/ActionSheets/doc/index.mdx +24 -0
- package/src/components/ActionSheets/index.ts +5 -0
- package/src/components/ActionSheets/interface/index.ts +27 -0
- package/src/components/ActionSheets/styles.ts +54 -0
- package/src/components/ActionSheets/test/index.bench.tsx +13 -0
- package/src/components/ActionSheets/test/index.test.tsx +81 -0
- package/src/components/ActionSheets/test/paper.bench.tsx +17 -0
- package/src/components/Alert/Alert.tsx +170 -0
- package/src/components/Alert/demo/index.tsx +234 -0
- package/src/components/Alert/doc/index.mdx +37 -0
- package/src/components/Alert/index.ts +5 -0
- package/src/components/Alert/interface/index.ts +35 -0
- package/src/components/Alert/styles.ts +116 -0
- package/src/components/Alert/test/__snapshots__/index.test.tsx.snap +519 -0
- package/src/components/Alert/test/index.bench.tsx +13 -0
- package/src/components/Alert/test/index.test.tsx +62 -0
- package/src/components/Alert/test/paper.bench.tsx +26 -0
- package/src/components/Avatar/test/__snapshots__/index.test.tsx.snap +32 -0
- package/src/components/Avatar/test/paper.bench.tsx +1 -1
- package/src/components/Button/test/__snapshots__/index.test.tsx.snap +0 -10
- package/src/components/Divider/test/__snapshots__/index.test.tsx.snap +420 -6
- package/src/components/Divider/test/index.test.tsx +43 -35
- package/src/components/FAB/test/__snapshots__/index.test.tsx.snap +0 -2
- package/src/components/FAB/test/paper.bench.tsx +12 -0
- package/src/components/Picker/test/index.test.tsx +17 -25
- package/src/components/Progress/test/__snapshots__/index.test.tsx.snap +332 -3
- package/src/components/Progress/test/index.test.tsx +29 -19
- package/src/components/PullRefresh/test/index.bench.tsx +1 -1
- package/src/components/Sheets/Sheets.tsx +293 -20
- package/src/components/Sheets/demo/index.tsx +191 -14
- package/src/components/Sheets/doc/index.mdx +16 -5
- package/src/components/Sheets/interface/index.ts +50 -0
- package/src/components/Sheets/styles.ts +38 -10
- package/src/components/Sheets/test/index.test.tsx +71 -48
- package/src/components/Sheets/test/paper.bench.tsx +1 -1
- package/src/components/Silder/Silder.tsx +49 -0
- package/src/components/Silder/demo/index.tsx +53 -0
- package/src/components/Silder/doc/index.mdx +26 -0
- package/src/components/Silder/index.ts +5 -0
- package/src/components/Silder/interface/index.ts +20 -0
- package/src/components/Silder/styles.ts +24 -0
- package/src/components/Silder/test/index.bench.tsx +13 -0
- package/src/components/Silder/test/index.test.tsx +18 -0
- package/src/components/TabBar/TabBar.tsx +17 -17
- package/src/components/Toast/test/paper.bench.tsx +9 -5
- package/src/index.ts +17 -0
- package/lib/cjs/_chunks/DIhBCUjt.js +0 -17
- package/lib/cjs/_chunks/DIhBCUjt.js.map +0 -1
- package/lib/esm/_chunks/B3_9dzWY.js +0 -14
- package/lib/esm/_chunks/B3_9dzWY.js.map +0 -1
|
@@ -1,111 +1,135 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import '../
|
|
1
|
+
import 'react';
|
|
2
|
+
import 'react-native';
|
|
3
|
+
import '../../_chunks/ByMDi00e.js';
|
|
4
|
+
import './ImageViewer.js';
|
|
5
|
+
export { ImagePreview as default } from '../../index.js';
|
|
6
|
+
import '../Image/Image.js';
|
|
7
7
|
import '@xhsreds/reds-token-next';
|
|
8
|
-
import '
|
|
9
|
-
import '../PickerView/styles.js';
|
|
10
|
-
import '../Picker/Picker.js';
|
|
11
|
-
import '../FAB/styles.js';
|
|
12
|
-
import '../Button/styleMap.js';
|
|
13
|
-
import '../Portal/core/Portal.js';
|
|
14
|
-
import '../Portal/core/PortalHost.js';
|
|
15
|
-
import '../Portal/core/PortalProvider.js';
|
|
16
|
-
import '@xhs/reder-icon-svg';
|
|
17
|
-
import 'react-native-svg';
|
|
18
|
-
import '../Toast/styles.js';
|
|
19
|
-
import '../DropDown/DropDown.js';
|
|
20
|
-
import '../DropDown/DropDownItem.js';
|
|
21
|
-
import '../Progress/styles.js';
|
|
22
|
-
import '../TabBar/TabBar.js';
|
|
23
|
-
import '../NavigationBar/NavigationBar.js';
|
|
24
|
-
import '../BottomBar/styles.js';
|
|
25
|
-
import '../List/styles.js';
|
|
26
|
-
import '../Skeleton/Skeleton.js';
|
|
27
|
-
import '../Skeleton/Item/SkeletonItem.js';
|
|
28
|
-
import '../Tag/Tag.js';
|
|
29
|
-
import Image from '../Image/Image.js';
|
|
30
|
-
import '@floating-ui/react-native';
|
|
31
|
-
import '../Switch/Switch.js';
|
|
32
|
-
import '../../_chunks/B3zY_xWO.js';
|
|
33
|
-
import '../Collapse/Collapse.js';
|
|
34
|
-
import '../Collapse/Item/Item.js';
|
|
35
|
-
import '../Empty/Empty.js';
|
|
36
|
-
import '../PullRefresh/PullRefresh.js';
|
|
37
|
-
import '../Badge/styles.js';
|
|
38
|
-
import '../Tab/Tab.js';
|
|
39
|
-
import '../../_chunks/D-HreRcG.js';
|
|
8
|
+
import '../../_chunks/CwHnr-H1.js';
|
|
40
9
|
import './Gesture/useGesture.js';
|
|
41
10
|
import './Gesture/Pinch.js';
|
|
42
11
|
import './Gesture/Pan.js';
|
|
43
12
|
import './Gesture/Tap.js';
|
|
44
|
-
import '
|
|
13
|
+
import '../ActionSheets/ActionSheets.js';
|
|
14
|
+
import '../../_chunks/DHJk9lIr.js';
|
|
15
|
+
import '../ActionSheets/styles.js';
|
|
16
|
+
import '../ConfigProvider/hooks/ConfigCache/ConfigCache.js';
|
|
45
17
|
import '../ConfigProvider/hooks/themeToken/useThemeToken.js';
|
|
46
18
|
import '../ConfigProvider/hooks/ConfigContext/ConfigContext.js';
|
|
47
|
-
import '../Sheets/
|
|
19
|
+
import '../Sheets/Sheets.js';
|
|
20
|
+
import '../../_chunks/BJ2Kj1Vd.js';
|
|
21
|
+
import '../Portal/core/Portal.js';
|
|
48
22
|
import '../Portal/core/hooks/usePortal.js';
|
|
49
23
|
import '../../_chunks/B-g-eq94.js';
|
|
50
24
|
import '../Portal/core/PortalContext.js';
|
|
25
|
+
import '../Portal/core/PortalHost.js';
|
|
51
26
|
import '../Portal/core/hooks/usePortalState.js';
|
|
27
|
+
import '../Portal/core/PortalProvider.js';
|
|
28
|
+
import '../Sheets/styles.js';
|
|
29
|
+
import '../Button/Button.js';
|
|
30
|
+
import '../../_chunks/BbMynYIz.js';
|
|
31
|
+
import '../Button/styleMap.js';
|
|
32
|
+
import '../Icon/Icon.js';
|
|
33
|
+
import 'react-native-svg';
|
|
34
|
+
import '@xhs/reder-icon-svg';
|
|
35
|
+
import '../Silder/Silder.js';
|
|
36
|
+
import '../../_chunks/RRfNwNcs.js';
|
|
37
|
+
import '../Silder/styles.js';
|
|
38
|
+
import '../PickerView/PickerView.js';
|
|
39
|
+
import '../ProgressIndicator/ProgressIndicator.js';
|
|
52
40
|
import '../../_chunks/D361MMpE.js';
|
|
53
41
|
import '../ProgressIndicator/styles.js';
|
|
54
|
-
import '
|
|
55
|
-
import '../PickerView/PickerView.js';
|
|
42
|
+
import '../PickerView/styles.js';
|
|
56
43
|
import '../PickerView/Wheel.js';
|
|
44
|
+
import '../../_chunks/BCi0K_XP.js';
|
|
45
|
+
import '../Picker/Picker.js';
|
|
46
|
+
import '../../_chunks/HoMybJja.js';
|
|
47
|
+
import '../../_chunks/BKEXyO9m.js';
|
|
48
|
+
import '../FAB/FAB.js';
|
|
49
|
+
import '../../_chunks/BHRAJjD2.js';
|
|
50
|
+
import '../FAB/styles.js';
|
|
57
51
|
import '../../_chunks/smTB3TZu.js';
|
|
52
|
+
import '../Toast/api.js';
|
|
53
|
+
import '../Toast/Toast.js';
|
|
54
|
+
import '../Toast/styles.js';
|
|
55
|
+
import '../DropDown/DropDown.js';
|
|
58
56
|
import '../../_chunks/vOnIzQRe.js';
|
|
59
57
|
import '../DropDown/styles.js';
|
|
58
|
+
import '../Tab/Tab.js';
|
|
60
59
|
import '../../_chunks/5aBuaARv.js';
|
|
61
|
-
import '../Icon/Icon.js';
|
|
62
|
-
import '../Button/Button.js';
|
|
63
|
-
import '../../_chunks/BbMynYIz.js';
|
|
64
60
|
import '../Tab/styles.js';
|
|
65
61
|
import '../Badge/Badge.js';
|
|
66
62
|
import '../../_chunks/t6qlCOwe.js';
|
|
63
|
+
import '../Badge/styles.js';
|
|
64
|
+
import '../DropDown/DropDownItem.js';
|
|
65
|
+
import '../Progress/Progress.js';
|
|
66
|
+
import '../../_chunks/CDjjInz6.js';
|
|
67
|
+
import '../Progress/styles.js';
|
|
68
|
+
import '../TabBar/TabBar.js';
|
|
67
69
|
import '../../_chunks/DUTFT_ka.js';
|
|
68
70
|
import '../TabBar/styles.js';
|
|
71
|
+
import '../NavigationBar/NavigationBar.js';
|
|
69
72
|
import '../../_chunks/DxmiznjB.js';
|
|
70
73
|
import '../NavigationBar/styles.js';
|
|
74
|
+
import '../BottomBar/BottomBar.js';
|
|
75
|
+
import '../../_chunks/6IvC8kW8.js';
|
|
76
|
+
import '../BottomBar/styles.js';
|
|
77
|
+
import '../List/List.js';
|
|
78
|
+
import '../List/ListItem/ListContext.js';
|
|
79
|
+
import '../List/styles.js';
|
|
80
|
+
import '../../_chunks/CWfZNdRH.js';
|
|
81
|
+
import '../Skeleton/Skeleton.js';
|
|
71
82
|
import '../../_chunks/7_ZK_tBb.js';
|
|
72
|
-
import '../Skeleton/
|
|
83
|
+
import '../Skeleton/Item/SkeletonItem.js';
|
|
73
84
|
import '../../_chunks/D-UGc_mn.js';
|
|
74
85
|
import '../Skeleton/Item/styles.js';
|
|
86
|
+
import '../Skeleton/styles.js';
|
|
87
|
+
import '../Divider/Divider.js';
|
|
88
|
+
import '../../_chunks/CLoffREn.js';
|
|
89
|
+
import '../Divider/styles.js';
|
|
90
|
+
import '../Tag/Tag.js';
|
|
75
91
|
import '../../_chunks/CszwJiJx.js';
|
|
76
92
|
import '../../_chunks/BITrbAAT.js';
|
|
77
|
-
import '../
|
|
78
|
-
import '../
|
|
79
|
-
import '../
|
|
93
|
+
import '../Popover/Popover.js';
|
|
94
|
+
import '../Popover/component.js';
|
|
95
|
+
import '../Popover/hook.js';
|
|
96
|
+
import '@floating-ui/react-native';
|
|
97
|
+
import '../../_chunks/BeWZSBnN.js';
|
|
98
|
+
import '../Switch/Switch.js';
|
|
99
|
+
import '../../_chunks/B3zY_xWO.js';
|
|
80
100
|
import '../Switch/styles.js';
|
|
101
|
+
import '../ConfigProvider/ConfigProvider.js';
|
|
102
|
+
import '../../_chunks/DKABHJAn.js';
|
|
103
|
+
import '../Text/Text.js';
|
|
104
|
+
import '../Text/hooks/cloneContainer.js';
|
|
105
|
+
import '../Text/hooks/getRenderText.js';
|
|
106
|
+
import '../Text/hooks/nativeEmojiMap/android.js';
|
|
107
|
+
import '../Text/hooks/nativeEmojiMap/ios.js';
|
|
108
|
+
import '../Text/styles.js';
|
|
109
|
+
import '../../_chunks/BswK5qRp.js';
|
|
110
|
+
import '../Collapse/Collapse.js';
|
|
81
111
|
import '../Collapse/interface/index.js';
|
|
82
112
|
import '../Collapse/hooks/useCollapseContext.js';
|
|
113
|
+
import '../Collapse/Item/Item.js';
|
|
83
114
|
import '../Collapse/Item/interface/index.js';
|
|
84
115
|
import '../Collapse/Item/styles.js';
|
|
116
|
+
import '../Empty/Empty.js';
|
|
85
117
|
import '../../_chunks/BfaGqGMC.js';
|
|
86
118
|
import '../Empty/styles.js';
|
|
119
|
+
import '../Result/Result.js';
|
|
120
|
+
import '../../_chunks/BKS4Pa1R.js';
|
|
121
|
+
import '../Result/styles.js';
|
|
122
|
+
import '../Result/hooks/useDefaultIcon.js';
|
|
123
|
+
import '../PullRefresh/PullRefresh.js';
|
|
87
124
|
import '../../_chunks/CGzZESdM.js';
|
|
88
125
|
import '../PullRefresh/component.js';
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
}, /* @__PURE__ */React__default.createElement(ImageViewer, {
|
|
100
|
-
onClose: removePortal
|
|
101
|
-
}, /* @__PURE__ */React__default.createElement(Image, {
|
|
102
|
-
width: "100%",
|
|
103
|
-
height: "100%",
|
|
104
|
-
resizeMode: "contain",
|
|
105
|
-
src: "https://picasso-static.xiaohongshu.com/fe-platform/167754d83b112dc155edd2ae5dc7f9ced481bba3.webp"
|
|
106
|
-
})));
|
|
107
|
-
};
|
|
108
|
-
ImagePreview.defaultProps = ImagePreviewDefaultProps;
|
|
109
|
-
|
|
110
|
-
export { ImagePreview as default };
|
|
126
|
+
import '../../_chunks/LNDx6DgD.js';
|
|
127
|
+
import '../Avatar/Avatar.js';
|
|
128
|
+
import '../../_chunks/CBSrvlEa.js';
|
|
129
|
+
import '../Avatar/styles.js';
|
|
130
|
+
import '../../_chunks/DYs5DSy1.js';
|
|
131
|
+
import '../Alert/styles.js';
|
|
132
|
+
import '../Image/styles.js';
|
|
133
|
+
import '../Image/hook/index.js';
|
|
134
|
+
import '../Image/CircularProgress.js';
|
|
111
135
|
//# sourceMappingURL=ImagePreview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePreview.js","sources":[
|
|
1
|
+
{"version":3,"file":"ImagePreview.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as _objectSpread2 } from '../../_chunks/CwHnr-H1.js';
|
|
2
2
|
import { Animated, View } from 'react-native';
|
|
3
3
|
import React__default, { useRef } from 'react';
|
|
4
4
|
import useGesture from './Gesture/useGesture.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as _typeof, e as _createClass, j as _inherits, f as _classCallCheck,
|
|
1
|
+
import { g as _typeof, e as _createClass, j as _inherits, f as _classCallCheck, a as _objectSpread2, k as _callSuper } from '../../_chunks/CwHnr-H1.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { StyleSheet, Animated, View, PanResponder } from 'react-native';
|
|
4
4
|
|
|
@@ -226,7 +226,7 @@ var ImageViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
226
226
|
_this.zoomLastDistance = null;
|
|
227
227
|
_this.horizontalWholeCounter = 0;
|
|
228
228
|
_this.verticalWholeCounter = 0;
|
|
229
|
-
_this.lastTouchStartTime = (
|
|
229
|
+
_this.lastTouchStartTime = (/* @__PURE__ */new Date()).getTime();
|
|
230
230
|
_this.isDoubleClick = false;
|
|
231
231
|
_this.isLongPress = false;
|
|
232
232
|
_this.isHorizontalWrap = false;
|
|
@@ -259,7 +259,7 @@ var ImageViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
259
259
|
}
|
|
260
260
|
}, _this.props.longPressTime);
|
|
261
261
|
if (evt.nativeEvent.changedTouches.length <= 1) {
|
|
262
|
-
if ((
|
|
262
|
+
if ((/* @__PURE__ */new Date()).getTime() - _this.lastClickTime < (_this.props.doubleClickInterval || 0)) {
|
|
263
263
|
_this.lastClickTime = 0;
|
|
264
264
|
_this.doubleClickX = evt.nativeEvent.changedTouches[0].pageX;
|
|
265
265
|
_this.doubleClickY = evt.nativeEvent.changedTouches[0].pageY;
|
|
@@ -301,7 +301,7 @@ var ImageViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
301
301
|
})]).start();
|
|
302
302
|
}
|
|
303
303
|
} else {
|
|
304
|
-
_this.lastClickTime = (
|
|
304
|
+
_this.lastClickTime = (/* @__PURE__ */new Date()).getTime();
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageViewer3.js","sources":["../../../../src/components/ImagePreview/ImageViewer3.tsx"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\n// https://github.com/ascoders/react-native-image-zoom/blob/master/src/image-zoom/image-zoom.component.tsx\nimport * as React from \"react\";\nimport {\n Animated,\n GestureResponderEvent,\n LayoutChangeEvent,\n PanResponder,\n PanResponderGestureState,\n StyleSheet,\n View,\n ViewStyle,\n} from \"react-native\";\n\nexport interface ICenterOn {\n x: number;\n y: number;\n scale: number;\n duration: number;\n}\n\nexport interface IOnMove {\n type: string;\n positionX: number;\n positionY: number;\n scale: number;\n zoomCurrentDistance: number;\n}\n\nexport interface IOnClick {\n locationX: number;\n locationY: number;\n pageX: number;\n pageY: number;\n}\n\nexport class ImageZoomProps {\n /**\n * 操作区域宽度\n */\n public cropWidth: number = 100;\n\n /**\n * 操作区域高度\n */\n public cropHeight: number = 100;\n\n /**\n * 图片宽度\n */\n public imageWidth: number = 100;\n\n /**\n * 图片高度\n */\n public imageHeight: number = 100;\n\n /**\n * 单手是否能移动图片\n */\n public panToMove?: boolean = true;\n\n /**\n * 多手指是否能缩放\n */\n public pinchToZoom?: boolean = true;\n\n /**\n * 双击能否放大\n */\n public enableDoubleClickZoom?: boolean = true;\n\n /**\n * 单击最大位移\n */\n public clickDistance?: number = 10;\n\n /**\n * 最大滑动阈值\n */\n public maxOverflow?: number = 100;\n\n /**\n * 长按的阈值(毫秒)\n */\n public longPressTime?: number = 800;\n\n /**\n * 双击计时器最大间隔\n */\n public doubleClickInterval?: number = 175;\n\n /**\n * If provided this will cause the view to zoom and pan to the center point\n * Duration is optional and defaults to 300 ms.\n */\n public centerOn?: ICenterOn;\n\n public style?: ViewStyle = {};\n\n /**\n * threshold for firing swipe down function\n */\n public swipeDownThreshold?: number = 230;\n\n /**\n * for enabling vertical movement if user doesn't want it\n */\n public enableSwipeDown?: boolean = false;\n\n /**\n * for disabling focus on image center if user doesn't want it\n */\n public enableCenterFocus?: boolean = true;\n\n /**\n * for disabling rendering to hardware texture on Android\n */\n public useHardwareTextureAndroid?: boolean = true;\n\n /**\n * minimum zoom scale\n */\n public minScale?: number = 0.6;\n\n /**\n * maximum zoom scale\n */\n public maxScale?: number = 10;\n\n /**\n * 是否启用原生动画驱动\n * Whether to use native code to perform animations.\n */\n public useNativeDriver?: boolean = false;\n\n /**\n * 单击的回调\n */\n public onClick?: (eventParams: IOnClick) => void = () => {\n //\n };\n\n /**\n * 双击的回调\n */\n public onDoubleClick?: (eventParams: IOnClick) => void = () => {\n //\n };\n\n /**\n * 长按的回调\n */\n public onLongPress?: (eventParams: IOnClick) => void = () => {\n //\n };\n\n /**\n * 横向超出的距离,父级做图片切换时,可以监听这个函数\n * 当此函数触发时,可以做切换操作\n */\n public horizontalOuterRangeOffset?: (offsetX: number) => void = () => {\n //\n };\n\n /**\n * 触发想切换到左边的图,向左滑动速度超出阈值时触发\n */\n public onDragLeft?: () => void = () => {\n //\n };\n\n /**\n * 松手但是没有取消看图的回调\n */\n public responderRelease?: (vx: number, scale: number) => void = () => {\n //\n };\n\n /**\n * If provided, this will be called everytime the map is moved\n */\n public onMove?: (position: IOnMove) => void = () => {\n //\n };\n\n /**\n * If provided, this method will be called when the onLayout event fires\n */\n public layoutChange?: (event: LayoutChangeEvent) => void = () => {\n //\n };\n\n /**\n * function that fires when user swipes down\n */\n public onSwipeDown?: () => void = () => {\n //\n };\n\n /**\n * Allows defining the onMoveShouldSetResponder behavior.\n */\n public onMoveShouldSetPanResponder?: (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n ) => boolean;\n\n /**\n * Allows overriding the default onStartShouldSetPanResponder behavior.\n * By default, always becomes the responder\n */\n public onStartShouldSetPanResponder?: (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n ) => boolean;\n\n /**\n * Allows overriding the default onPanResponderTerminationRequest behavior.\n * By default, doesn't terminate until the press ends\n */\n public onPanResponderTerminationRequest?: (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n ) => boolean = () => false;\n}\n\nexport class ImageZoomState {\n /**\n * 中心 x 坐标\n */\n public centerX?: number = 0.5;\n /**\n * 中心 y 坐标\n */\n public centerY?: number = 0.5;\n}\n\nconst styles = StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n backgroundColor: \"transparent\", // fix 0.36 bug, see: https://github.com/facebook/react-native/issues/10782\n },\n});\n\nexport default class ImageViewer extends React.Component<ImageZoomProps, ImageZoomState> {\n public static defaultProps = new ImageZoomProps();\n public state = new ImageZoomState();\n\n // 上次/当前/动画 x 位移\n private lastPositionX: number | null = null;\n private positionX = 0;\n private animatedPositionX = new Animated.Value(0);\n\n // 上次/当前/动画 y 位移\n private lastPositionY: number | null = null;\n private positionY = 0;\n private animatedPositionY = new Animated.Value(0);\n\n // 缩放大小\n private scale = 1;\n private animatedScale = new Animated.Value(1);\n private zoomLastDistance: number | null = null;\n private zoomCurrentDistance = 0;\n\n // 上次手按下去的时间\n private lastTouchStartTime = 0;\n\n // 滑动过程中,整体横向过界偏移量\n private horizontalWholeOuterCounter = 0;\n\n // 滑动过程中,swipeDown 偏移量\n private swipeDownOffset = 0;\n\n // 滑动过程中,x y的总位移\n private horizontalWholeCounter = 0;\n private verticalWholeCounter = 0;\n\n // 两手距离中心点位置\n private centerDiffX = 0;\n private centerDiffY = 0;\n\n // 触发单击的 timeout\n private singleClickTimeout: number | undefined;\n\n // 计算长按的 timeout\n private longPressTimeout: number | undefined;\n\n // 上一次点击的时间\n private lastClickTime = 0;\n\n // 双击时的位置\n private doubleClickX = 0;\n private doubleClickY = 0;\n\n // 是否双击了\n private isDoubleClick = false;\n\n // 是否是长按\n private isLongPress = false;\n\n // 是否在左右滑\n private isHorizontalWrap = false;\n\n // 图片手势处理\n private imagePanResponder = PanResponder.create({\n onStartShouldSetPanResponder: this.props.onStartShouldSetPanResponder,\n onPanResponderTerminationRequest: this.props.onPanResponderTerminationRequest,\n onMoveShouldSetPanResponder: this.props.onMoveShouldSetPanResponder,\n\n onPanResponderGrant: (evt) => {\n // 开始手势操作\n this.lastPositionX = null;\n this.lastPositionY = null;\n this.zoomLastDistance = null;\n this.horizontalWholeCounter = 0;\n this.verticalWholeCounter = 0;\n this.lastTouchStartTime = new Date().getTime();\n this.isDoubleClick = false;\n this.isLongPress = false;\n this.isHorizontalWrap = false;\n\n // 任何手势开始,都清空单击计时器\n if (this.singleClickTimeout) {\n clearTimeout(this.singleClickTimeout);\n }\n\n if (evt.nativeEvent.changedTouches.length > 1) {\n const centerX = (evt.nativeEvent.changedTouches[0].pageX + evt.nativeEvent.changedTouches[1].pageX) / 2;\n this.centerDiffX = centerX - this.props.cropWidth / 2;\n\n const centerY = (evt.nativeEvent.changedTouches[0].pageY + evt.nativeEvent.changedTouches[1].pageY) / 2;\n this.centerDiffY = centerY - this.props.cropHeight / 2;\n }\n\n // 计算长按\n if (this.longPressTimeout) {\n clearTimeout(this.longPressTimeout);\n }\n const { locationX, locationY, pageX, pageY } = evt.nativeEvent;\n this.longPressTimeout = setTimeout(() => {\n this.isLongPress = true;\n if (this.props.onLongPress) {\n this.props.onLongPress({ locationX, locationY, pageX, pageY });\n }\n }, this.props.longPressTime);\n\n if (evt.nativeEvent.changedTouches.length <= 1) {\n // 一个手指的情况\n if (new Date().getTime() - this.lastClickTime < (this.props.doubleClickInterval || 0)) {\n // 认为触发了双击\n this.lastClickTime = 0;\n\n // 因为可能触发放大,因此记录双击时的坐标位置\n this.doubleClickX = evt.nativeEvent.changedTouches[0].pageX;\n this.doubleClickY = evt.nativeEvent.changedTouches[0].pageY;\n\n if (this.props.onDoubleClick) {\n this.props.onDoubleClick({\n locationX: evt.nativeEvent.changedTouches[0].locationX,\n locationY: evt.nativeEvent.changedTouches[0].locationY,\n pageX: this.doubleClickX,\n pageY: this.doubleClickY,\n });\n }\n\n // 取消长按\n clearTimeout(this.longPressTimeout);\n\n // 缩放\n this.isDoubleClick = true;\n\n if (this.props.enableDoubleClickZoom) {\n if (this.scale > 1 || this.scale < 1) {\n // 回归原位\n this.scale = 1;\n\n this.positionX = 0;\n this.positionY = 0;\n } else {\n // 开始在位移地点缩放\n // 记录之前缩放比例\n // 此时 this.scale 一定为 1\n const beforeScale = this.scale;\n\n // 开始缩放\n this.scale = 2;\n\n // 缩放 diff\n const diffScale = this.scale - beforeScale;\n // 找到两手中心点距离页面中心的位移\n // 移动位置\n this.positionX = ((this.props.cropWidth / 2 - this.doubleClickX) * diffScale) / this.scale;\n\n this.positionY = ((this.props.cropHeight / 2 - this.doubleClickY) * diffScale) / this.scale;\n }\n\n this.imageDidMove(\"centerOn\");\n\n Animated.parallel([\n Animated.timing(this.animatedScale, {\n toValue: this.scale,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n ]).start();\n }\n } else {\n this.lastClickTime = new Date().getTime();\n }\n }\n },\n onPanResponderMove: (evt, gestureState) => {\n if (this.isDoubleClick) {\n // 有时双击会被当做位移,这里屏蔽掉\n return;\n }\n\n if (evt.nativeEvent.changedTouches.length <= 1) {\n // x 位移\n let diffX = gestureState.dx - (this.lastPositionX || 0);\n if (this.lastPositionX === null) {\n diffX = 0;\n }\n // y 位移\n let diffY = gestureState.dy - (this.lastPositionY || 0);\n if (this.lastPositionY === null) {\n diffY = 0;\n }\n\n // 保留这一次位移作为下次的上一次位移\n this.lastPositionX = gestureState.dx;\n this.lastPositionY = gestureState.dy;\n\n this.horizontalWholeCounter += diffX;\n this.verticalWholeCounter += diffY;\n\n if (Math.abs(this.horizontalWholeCounter) > 5 || Math.abs(this.verticalWholeCounter) > 5) {\n // 如果位移超出手指范围,取消长按监听\n clearTimeout(this.longPressTimeout);\n }\n\n if (this.props.panToMove) {\n // 处理左右滑,如果正在 swipeDown,左右滑失效\n if (this.swipeDownOffset === 0) {\n if (Math.abs(diffX) > Math.abs(diffY)) {\n this.isHorizontalWrap = true;\n }\n\n // diffX > 0 表示手往右滑,图往左移动,反之同理\n // horizontalWholeOuterCounter > 0 表示溢出在左侧,反之在右侧,绝对值越大溢出越多\n if (this.props.imageWidth * this.scale > this.props.cropWidth) {\n // 如果图片宽度大图盒子宽度, 可以横向拖拽\n // 没有溢出偏移量或者这次位移完全收回了偏移量才能拖拽\n if (this.horizontalWholeOuterCounter > 0) {\n // 溢出在右侧\n if (diffX < 0) {\n // 从右侧收紧\n if (this.horizontalWholeOuterCounter > Math.abs(diffX)) {\n // 偏移量还没有用完\n this.horizontalWholeOuterCounter += diffX;\n diffX = 0;\n } else {\n // 溢出量置为0,偏移量减去剩余溢出量,并且可以被拖动\n diffX += this.horizontalWholeOuterCounter;\n this.horizontalWholeOuterCounter = 0;\n if (this.props.horizontalOuterRangeOffset) {\n this.props.horizontalOuterRangeOffset(0);\n }\n }\n } else {\n // 向右侧扩增\n this.horizontalWholeOuterCounter += diffX;\n }\n } else if (this.horizontalWholeOuterCounter < 0) {\n // 溢出在左侧\n if (diffX > 0) {\n // 从左侧收紧\n if (Math.abs(this.horizontalWholeOuterCounter) > diffX) {\n // 偏移量还没有用完\n this.horizontalWholeOuterCounter += diffX;\n diffX = 0;\n } else {\n // 溢出量置为0,偏移量减去剩余溢出量,并且可以被拖动\n diffX += this.horizontalWholeOuterCounter;\n this.horizontalWholeOuterCounter = 0;\n if (this.props.horizontalOuterRangeOffset) {\n this.props.horizontalOuterRangeOffset(0);\n }\n }\n } else {\n // 向左侧扩增\n this.horizontalWholeOuterCounter += diffX;\n }\n } else {\n // 溢出偏移量为0,正常移动\n }\n\n // 产生位移\n this.positionX += diffX / this.scale;\n\n // 但是横向不能出现黑边\n // 横向能容忍的绝对值\n const horizontalMax = (this.props.imageWidth * this.scale - this.props.cropWidth) / 2 / this.scale;\n if (this.positionX < -horizontalMax) {\n // 超越了左边临界点,还在继续向左移动\n this.positionX = -horizontalMax;\n\n // 让其产生细微位移,偏离轨道\n this.horizontalWholeOuterCounter += -1 / 1e10;\n } else if (this.positionX > horizontalMax) {\n // 超越了右侧临界点,还在继续向右移动\n this.positionX = horizontalMax;\n\n // 让其产生细微位移,偏离轨道\n this.horizontalWholeOuterCounter += 1 / 1e10;\n }\n this.animatedPositionX.setValue(this.positionX);\n } else {\n // 不能横向拖拽,全部算做溢出偏移量\n this.horizontalWholeOuterCounter += diffX;\n }\n\n // 溢出量不会超过设定界限\n if (this.horizontalWholeOuterCounter > (this.props.maxOverflow || 0)) {\n this.horizontalWholeOuterCounter = this.props.maxOverflow || 0;\n } else if (this.horizontalWholeOuterCounter < -(this.props.maxOverflow || 0)) {\n this.horizontalWholeOuterCounter = -(this.props.maxOverflow || 0);\n }\n\n if (this.horizontalWholeOuterCounter !== 0) {\n // 如果溢出偏移量不是0,执行溢出回调\n if (this.props.horizontalOuterRangeOffset) {\n this.props.horizontalOuterRangeOffset(this.horizontalWholeOuterCounter);\n }\n }\n }\n\n // 如果图片高度大于盒子高度, 可以纵向弹性拖拽\n if (this.props.imageHeight * this.scale > this.props.cropHeight) {\n this.positionY += diffY / this.scale;\n this.animatedPositionY.setValue(this.positionY);\n\n // 如果图片上边缘脱离屏幕上边缘,则进入 swipeDown 动作\n // if (\n // (this.props.imageHeight / 2 - this.positionY) * this.scale <\n // this.props.cropHeight / 2\n // ) {\n // if (this.props.enableSwipeDown) {\n // this.swipeDownOffset += diffY\n\n // // 只要滑动溢出量不小于 0,就可以拖动\n // if (this.swipeDownOffset > 0) {\n // this.positionY += diffY / this.scale\n // this.animatedPositionY.setValue(this.positionY)\n\n // // 越到下方,缩放越小\n // this.scale = this.scale - diffY / 1000\n // this.animatedScale.setValue(this.scale)\n // }\n // }\n // }\n } else {\n // swipeDown 不允许在已经有横向偏移量时触发\n if (this.props.enableSwipeDown && !this.isHorizontalWrap) {\n // 图片高度小于盒子高度,只能向下拖拽,而且一定是 swipeDown 动作\n this.swipeDownOffset += diffY;\n\n // 只要滑动溢出量不小于 0,就可以拖动\n if (this.swipeDownOffset > 0) {\n this.positionY += diffY / this.scale;\n this.animatedPositionY.setValue(this.positionY);\n\n // 越到下方,缩放越小\n this.scale = this.scale - diffY / 1000;\n this.animatedScale.setValue(this.scale);\n }\n }\n }\n }\n } else {\n // 多个手指的情况\n // 取消长按状态\n if (this.longPressTimeout) {\n clearTimeout(this.longPressTimeout);\n }\n\n if (this.props.pinchToZoom) {\n // 找最小的 x 和最大的 x\n let minX: number;\n let maxX: number;\n if (evt.nativeEvent.changedTouches[0].locationX > evt.nativeEvent.changedTouches[1].locationX) {\n minX = evt.nativeEvent.changedTouches[1].pageX;\n maxX = evt.nativeEvent.changedTouches[0].pageX;\n } else {\n minX = evt.nativeEvent.changedTouches[0].pageX;\n maxX = evt.nativeEvent.changedTouches[1].pageX;\n }\n\n let minY: number;\n let maxY: number;\n if (evt.nativeEvent.changedTouches[0].locationY > evt.nativeEvent.changedTouches[1].locationY) {\n minY = evt.nativeEvent.changedTouches[1].pageY;\n maxY = evt.nativeEvent.changedTouches[0].pageY;\n } else {\n minY = evt.nativeEvent.changedTouches[0].pageY;\n maxY = evt.nativeEvent.changedTouches[1].pageY;\n }\n\n const widthDistance = maxX - minX;\n const heightDistance = maxY - minY;\n const diagonalDistance = Math.sqrt(widthDistance * widthDistance + heightDistance * heightDistance);\n this.zoomCurrentDistance = Number(diagonalDistance.toFixed(1));\n\n if (this.zoomLastDistance !== null) {\n const distanceDiff = (this.zoomCurrentDistance - this.zoomLastDistance) / 200;\n let zoom = this.scale + distanceDiff;\n\n if (zoom < (this.props.minScale || 0)) {\n zoom = this.props.minScale || 0;\n }\n if (zoom > (this.props.maxScale || 0)) {\n zoom = this.props.maxScale || 0;\n }\n\n // 记录之前缩放比例\n const beforeScale = this.scale;\n\n // 开始缩放\n this.scale = zoom;\n this.animatedScale.setValue(this.scale);\n\n // 图片要慢慢往两个手指的中心点移动\n // 缩放 diff\n const diffScale = this.scale - beforeScale;\n // 找到两手中心点距离页面中心的位移\n // 移动位置\n this.positionX -= (this.centerDiffX * diffScale) / this.scale;\n this.positionY -= (this.centerDiffY * diffScale) / this.scale;\n this.animatedPositionX.setValue(this.positionX);\n this.animatedPositionY.setValue(this.positionY);\n }\n this.zoomLastDistance = this.zoomCurrentDistance;\n }\n }\n\n this.imageDidMove(\"onPanResponderMove\");\n },\n onPanResponderRelease: (evt, gestureState) => {\n // 取消长按\n if (this.longPressTimeout) {\n clearTimeout(this.longPressTimeout);\n }\n\n // 双击结束,结束尾判断\n if (this.isDoubleClick) {\n return;\n }\n\n // 长按结束,结束尾判断\n if (this.isLongPress) {\n return;\n }\n\n // 如果是单个手指、距离上次按住大于预设秒、滑动距离小于预设值, 则可能是单击(如果后续双击间隔内没有开始手势)\n // const stayTime = new Date().getTime() - this.lastTouchStartTime!\n const moveDistance = Math.sqrt(gestureState.dx * gestureState.dx + gestureState.dy * gestureState.dy);\n const { locationX, locationY, pageX, pageY } = evt.nativeEvent;\n\n if (evt.nativeEvent.changedTouches.length === 1 && moveDistance < (this.props.clickDistance || 0)) {\n this.singleClickTimeout = setTimeout(() => {\n if (this.props.onClick) {\n this.props.onClick({ locationX, locationY, pageX, pageY });\n }\n }, this.props.doubleClickInterval);\n } else {\n // 多手势结束,或者滑动结束\n if (this.props.responderRelease) {\n this.props.responderRelease(gestureState.vx, this.scale);\n }\n\n this.panResponderReleaseResolve();\n }\n },\n onPanResponderTerminate: () => {},\n });\n\n public resetScale = (): void => {\n this.positionX = 0;\n this.positionY = 0;\n this.scale = 1;\n this.animatedScale.setValue(1);\n };\n\n public panResponderReleaseResolve = (): void => {\n // 判断是否是 swipeDown\n if (this.props.enableSwipeDown && this.props.swipeDownThreshold) {\n if (this.swipeDownOffset > this.props.swipeDownThreshold) {\n if (this.props.onSwipeDown) {\n this.props.onSwipeDown();\n }\n // Stop reset.\n return;\n }\n }\n\n if (this.props.enableCenterFocus && this.scale < 1) {\n // 如果缩放小于1,强制重置为 1\n this.scale = 1;\n Animated.timing(this.animatedScale, {\n toValue: this.scale,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n if (this.props.imageWidth * this.scale <= this.props.cropWidth) {\n // 如果图片宽度小于盒子宽度,横向位置重置\n this.positionX = 0;\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n if (this.props.imageHeight * this.scale <= this.props.cropHeight) {\n // 如果图片高度小于盒子高度,纵向位置重置\n this.positionY = 0;\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n // 横向肯定不会超出范围,由拖拽时控制\n // 如果图片高度大于盒子高度,纵向不能出现黑边\n if (this.props.imageHeight * this.scale > this.props.cropHeight) {\n // 纵向能容忍的绝对值\n const verticalMax = (this.props.imageHeight * this.scale - this.props.cropHeight) / 2 / this.scale;\n if (this.positionY < -verticalMax) {\n this.positionY = -verticalMax;\n } else if (this.positionY > verticalMax) {\n this.positionY = verticalMax;\n }\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n if (this.props.imageWidth * this.scale > this.props.cropWidth) {\n // 纵向能容忍的绝对值\n const horizontalMax = (this.props.imageWidth * this.scale - this.props.cropWidth) / 2 / this.scale;\n if (this.positionX < -horizontalMax) {\n this.positionX = -horizontalMax;\n } else if (this.positionX > horizontalMax) {\n this.positionX = horizontalMax;\n }\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n // 拖拽正常结束后,如果没有缩放,直接回到0,0点\n if (this.props.enableCenterFocus && this.scale === 1) {\n this.positionX = 0;\n this.positionY = 0;\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n // 水平溢出量置空\n this.horizontalWholeOuterCounter = 0;\n\n // swipeDown 溢出量置空\n this.swipeDownOffset = 0;\n\n this.imageDidMove(\"onPanResponderRelease\");\n return false;\n };\n\n public componentDidMount(): void {\n if (this.props.centerOn) {\n this.centerOn(this.props.centerOn);\n }\n }\n\n public componentDidUpdate(prevProps: ImageZoomProps): void {\n // Either centerOn has never been called, or it is a repeat and we should ignore it\n if (\n (this.props.centerOn && !prevProps.centerOn) ||\n (this.props.centerOn && prevProps.centerOn && this.didCenterOnChange(prevProps.centerOn, this.props.centerOn))\n ) {\n this.centerOn(this.props.centerOn);\n }\n }\n\n public imageDidMove(type: string): void {\n if (this.props.onMove) {\n this.props.onMove({\n type,\n positionX: this.positionX,\n positionY: this.positionY,\n scale: this.scale,\n zoomCurrentDistance: this.zoomCurrentDistance,\n });\n }\n }\n\n public didCenterOnChange(\n params: { x: number; y: number; scale: number; duration: number },\n paramsNext: { x: number; y: number; scale: number; duration: number },\n ): boolean {\n return params.x !== paramsNext.x || params.y !== paramsNext.y || params.scale !== paramsNext.scale;\n }\n\n public centerOn(params: ICenterOn): void {\n this.positionX = params.x;\n this.positionY = params.y;\n this.scale = params.scale;\n const duration = params.duration || 300;\n Animated.parallel([\n Animated.timing(this.animatedScale, {\n toValue: this.scale,\n duration,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n ]).start(() => {\n this.imageDidMove(\"centerOn\");\n });\n }\n\n /**\n * 图片区域视图渲染完毕\n */\n public handleLayout(event: LayoutChangeEvent): void {\n if (this.props.layoutChange) {\n this.props.layoutChange(event);\n }\n }\n\n /**\n * 重置大小和位置\n */\n public reset(): void {\n this.scale = 1;\n this.animatedScale.setValue(this.scale);\n this.positionX = 0;\n this.animatedPositionX.setValue(this.positionX);\n this.positionY = 0;\n this.animatedPositionY.setValue(this.positionY);\n }\n\n public render(): React.ReactNode {\n const animateConf = {\n transform: [\n {\n scale: this.animatedScale,\n },\n {\n translateX: this.animatedPositionX,\n },\n {\n translateY: this.animatedPositionY,\n },\n ],\n };\n\n const parentStyles = StyleSheet.flatten(this.props.style);\n\n return (\n <View\n style={{\n ...styles.container,\n ...parentStyles,\n width: this.props.cropWidth,\n height: this.props.cropHeight,\n }}\n {...this.imagePanResponder.panHandlers}\n >\n <Animated.View style={animateConf} renderToHardwareTextureAndroid={this.props.useHardwareTextureAndroid}>\n <View\n onLayout={this.handleLayout.bind(this)}\n style={{\n width: this.props.imageWidth,\n height: this.props.imageHeight,\n }}\n >\n {this.props.children}\n </View>\n </Animated.View>\n </View>\n );\n }\n}\n"],"names":["ImageZoomProps","_createClass","_classCallCheck","__publicField","ImageZoomState","styles","StyleSheet","create","container","justifyContent","alignItems","overflow","backgroundColor","ImageViewer","_React$Component","_this","_callSuper","arguments","Animated","Value","PanResponder","onStartShouldSetPanResponder","props","onPanResponderTerminationRequest","onMoveShouldSetPanResponder","onPanResponderGrant","evt","lastPositionX","lastPositionY","zoomLastDistance","horizontalWholeCounter","verticalWholeCounter","lastTouchStartTime","Date","getTime","isDoubleClick","isLongPress","isHorizontalWrap","singleClickTimeout","clearTimeout","nativeEvent","changedTouches","length","centerX","pageX","centerDiffX","cropWidth","centerY","pageY","centerDiffY","cropHeight","longPressTimeout","_evt$nativeEvent","locationX","locationY","setTimeout","onLongPress","longPressTime","lastClickTime","doubleClickInterval","doubleClickX","doubleClickY","onDoubleClick","enableDoubleClickZoom","scale","positionX","positionY","beforeScale","diffScale","imageDidMove","parallel","timing","animatedScale","toValue","duration","useNativeDriver","animatedPositionX","animatedPositionY","start","onPanResponderMove","gestureState","diffX","dx","diffY","dy","Math","abs","panToMove","swipeDownOffset","imageWidth","horizontalWholeOuterCounter","horizontalOuterRangeOffset","horizontalMax","setValue","maxOverflow","imageHeight","enableSwipeDown","pinchToZoom","minX","maxX","minY","maxY","widthDistance","heightDistance","diagonalDistance","sqrt","zoomCurrentDistance","Number","toFixed","distanceDiff","zoom","minScale","maxScale","onPanResponderRelease","moveDistance","_evt$nativeEvent2","clickDistance","onClick","responderRelease","vx","panResponderReleaseResolve","onPanResponderTerminate","swipeDownThreshold","onSwipeDown","enableCenterFocus","verticalMax","_inherits","key","value","componentDidMount","centerOn","componentDidUpdate","prevProps","didCenterOnChange","type","onMove","params","paramsNext","x","y","_this2","handleLayout","event","layoutChange","reset","render","animateConf","transform","translateX","translateY","parentStyles","flatten","style","React","createElement","View","_objectSpread","width","height","imagePanResponder","panHandlers","renderToHardwareTextureAndroid","useHardwareTextureAndroid","onLayout","bind","children","Component"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImageViewer3.js","sources":["../../../../src/components/ImagePreview/ImageViewer3.tsx"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\n// https://github.com/ascoders/react-native-image-zoom/blob/master/src/image-zoom/image-zoom.component.tsx\nimport * as React from \"react\";\nimport {\n Animated,\n GestureResponderEvent,\n LayoutChangeEvent,\n PanResponder,\n PanResponderGestureState,\n StyleSheet,\n View,\n ViewStyle,\n} from \"react-native\";\n\nexport interface ICenterOn {\n x: number;\n y: number;\n scale: number;\n duration: number;\n}\n\nexport interface IOnMove {\n type: string;\n positionX: number;\n positionY: number;\n scale: number;\n zoomCurrentDistance: number;\n}\n\nexport interface IOnClick {\n locationX: number;\n locationY: number;\n pageX: number;\n pageY: number;\n}\n\nexport class ImageZoomProps {\n /**\n * 操作区域宽度\n */\n public cropWidth: number = 100;\n\n /**\n * 操作区域高度\n */\n public cropHeight: number = 100;\n\n /**\n * 图片宽度\n */\n public imageWidth: number = 100;\n\n /**\n * 图片高度\n */\n public imageHeight: number = 100;\n\n /**\n * 单手是否能移动图片\n */\n public panToMove?: boolean = true;\n\n /**\n * 多手指是否能缩放\n */\n public pinchToZoom?: boolean = true;\n\n /**\n * 双击能否放大\n */\n public enableDoubleClickZoom?: boolean = true;\n\n /**\n * 单击最大位移\n */\n public clickDistance?: number = 10;\n\n /**\n * 最大滑动阈值\n */\n public maxOverflow?: number = 100;\n\n /**\n * 长按的阈值(毫秒)\n */\n public longPressTime?: number = 800;\n\n /**\n * 双击计时器最大间隔\n */\n public doubleClickInterval?: number = 175;\n\n /**\n * If provided this will cause the view to zoom and pan to the center point\n * Duration is optional and defaults to 300 ms.\n */\n public centerOn?: ICenterOn;\n\n public style?: ViewStyle = {};\n\n /**\n * threshold for firing swipe down function\n */\n public swipeDownThreshold?: number = 230;\n\n /**\n * for enabling vertical movement if user doesn't want it\n */\n public enableSwipeDown?: boolean = false;\n\n /**\n * for disabling focus on image center if user doesn't want it\n */\n public enableCenterFocus?: boolean = true;\n\n /**\n * for disabling rendering to hardware texture on Android\n */\n public useHardwareTextureAndroid?: boolean = true;\n\n /**\n * minimum zoom scale\n */\n public minScale?: number = 0.6;\n\n /**\n * maximum zoom scale\n */\n public maxScale?: number = 10;\n\n /**\n * 是否启用原生动画驱动\n * Whether to use native code to perform animations.\n */\n public useNativeDriver?: boolean = false;\n\n /**\n * 单击的回调\n */\n public onClick?: (eventParams: IOnClick) => void = () => {\n //\n };\n\n /**\n * 双击的回调\n */\n public onDoubleClick?: (eventParams: IOnClick) => void = () => {\n //\n };\n\n /**\n * 长按的回调\n */\n public onLongPress?: (eventParams: IOnClick) => void = () => {\n //\n };\n\n /**\n * 横向超出的距离,父级做图片切换时,可以监听这个函数\n * 当此函数触发时,可以做切换操作\n */\n public horizontalOuterRangeOffset?: (offsetX: number) => void = () => {\n //\n };\n\n /**\n * 触发想切换到左边的图,向左滑动速度超出阈值时触发\n */\n public onDragLeft?: () => void = () => {\n //\n };\n\n /**\n * 松手但是没有取消看图的回调\n */\n public responderRelease?: (vx: number, scale: number) => void = () => {\n //\n };\n\n /**\n * If provided, this will be called everytime the map is moved\n */\n public onMove?: (position: IOnMove) => void = () => {\n //\n };\n\n /**\n * If provided, this method will be called when the onLayout event fires\n */\n public layoutChange?: (event: LayoutChangeEvent) => void = () => {\n //\n };\n\n /**\n * function that fires when user swipes down\n */\n public onSwipeDown?: () => void = () => {\n //\n };\n\n /**\n * Allows defining the onMoveShouldSetResponder behavior.\n */\n public onMoveShouldSetPanResponder?: (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n ) => boolean;\n\n /**\n * Allows overriding the default onStartShouldSetPanResponder behavior.\n * By default, always becomes the responder\n */\n public onStartShouldSetPanResponder?: (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n ) => boolean;\n\n /**\n * Allows overriding the default onPanResponderTerminationRequest behavior.\n * By default, doesn't terminate until the press ends\n */\n public onPanResponderTerminationRequest?: (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState,\n ) => boolean = () => false;\n}\n\nexport class ImageZoomState {\n /**\n * 中心 x 坐标\n */\n public centerX?: number = 0.5;\n /**\n * 中心 y 坐标\n */\n public centerY?: number = 0.5;\n}\n\nconst styles = StyleSheet.create({\n container: {\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n backgroundColor: \"transparent\", // fix 0.36 bug, see: https://github.com/facebook/react-native/issues/10782\n },\n});\n\nexport default class ImageViewer extends React.Component<ImageZoomProps, ImageZoomState> {\n public static defaultProps = new ImageZoomProps();\n public state = new ImageZoomState();\n\n // 上次/当前/动画 x 位移\n private lastPositionX: number | null = null;\n private positionX = 0;\n private animatedPositionX = new Animated.Value(0);\n\n // 上次/当前/动画 y 位移\n private lastPositionY: number | null = null;\n private positionY = 0;\n private animatedPositionY = new Animated.Value(0);\n\n // 缩放大小\n private scale = 1;\n private animatedScale = new Animated.Value(1);\n private zoomLastDistance: number | null = null;\n private zoomCurrentDistance = 0;\n\n // 上次手按下去的时间\n private lastTouchStartTime = 0;\n\n // 滑动过程中,整体横向过界偏移量\n private horizontalWholeOuterCounter = 0;\n\n // 滑动过程中,swipeDown 偏移量\n private swipeDownOffset = 0;\n\n // 滑动过程中,x y的总位移\n private horizontalWholeCounter = 0;\n private verticalWholeCounter = 0;\n\n // 两手距离中心点位置\n private centerDiffX = 0;\n private centerDiffY = 0;\n\n // 触发单击的 timeout\n private singleClickTimeout: number | undefined;\n\n // 计算长按的 timeout\n private longPressTimeout: number | undefined;\n\n // 上一次点击的时间\n private lastClickTime = 0;\n\n // 双击时的位置\n private doubleClickX = 0;\n private doubleClickY = 0;\n\n // 是否双击了\n private isDoubleClick = false;\n\n // 是否是长按\n private isLongPress = false;\n\n // 是否在左右滑\n private isHorizontalWrap = false;\n\n // 图片手势处理\n private imagePanResponder = PanResponder.create({\n onStartShouldSetPanResponder: this.props.onStartShouldSetPanResponder,\n onPanResponderTerminationRequest: this.props.onPanResponderTerminationRequest,\n onMoveShouldSetPanResponder: this.props.onMoveShouldSetPanResponder,\n\n onPanResponderGrant: (evt) => {\n // 开始手势操作\n this.lastPositionX = null;\n this.lastPositionY = null;\n this.zoomLastDistance = null;\n this.horizontalWholeCounter = 0;\n this.verticalWholeCounter = 0;\n this.lastTouchStartTime = new Date().getTime();\n this.isDoubleClick = false;\n this.isLongPress = false;\n this.isHorizontalWrap = false;\n\n // 任何手势开始,都清空单击计时器\n if (this.singleClickTimeout) {\n clearTimeout(this.singleClickTimeout);\n }\n\n if (evt.nativeEvent.changedTouches.length > 1) {\n const centerX = (evt.nativeEvent.changedTouches[0].pageX + evt.nativeEvent.changedTouches[1].pageX) / 2;\n this.centerDiffX = centerX - this.props.cropWidth / 2;\n\n const centerY = (evt.nativeEvent.changedTouches[0].pageY + evt.nativeEvent.changedTouches[1].pageY) / 2;\n this.centerDiffY = centerY - this.props.cropHeight / 2;\n }\n\n // 计算长按\n if (this.longPressTimeout) {\n clearTimeout(this.longPressTimeout);\n }\n const { locationX, locationY, pageX, pageY } = evt.nativeEvent;\n this.longPressTimeout = setTimeout(() => {\n this.isLongPress = true;\n if (this.props.onLongPress) {\n this.props.onLongPress({ locationX, locationY, pageX, pageY });\n }\n }, this.props.longPressTime);\n\n if (evt.nativeEvent.changedTouches.length <= 1) {\n // 一个手指的情况\n if (new Date().getTime() - this.lastClickTime < (this.props.doubleClickInterval || 0)) {\n // 认为触发了双击\n this.lastClickTime = 0;\n\n // 因为可能触发放大,因此记录双击时的坐标位置\n this.doubleClickX = evt.nativeEvent.changedTouches[0].pageX;\n this.doubleClickY = evt.nativeEvent.changedTouches[0].pageY;\n\n if (this.props.onDoubleClick) {\n this.props.onDoubleClick({\n locationX: evt.nativeEvent.changedTouches[0].locationX,\n locationY: evt.nativeEvent.changedTouches[0].locationY,\n pageX: this.doubleClickX,\n pageY: this.doubleClickY,\n });\n }\n\n // 取消长按\n clearTimeout(this.longPressTimeout);\n\n // 缩放\n this.isDoubleClick = true;\n\n if (this.props.enableDoubleClickZoom) {\n if (this.scale > 1 || this.scale < 1) {\n // 回归原位\n this.scale = 1;\n\n this.positionX = 0;\n this.positionY = 0;\n } else {\n // 开始在位移地点缩放\n // 记录之前缩放比例\n // 此时 this.scale 一定为 1\n const beforeScale = this.scale;\n\n // 开始缩放\n this.scale = 2;\n\n // 缩放 diff\n const diffScale = this.scale - beforeScale;\n // 找到两手中心点距离页面中心的位移\n // 移动位置\n this.positionX = ((this.props.cropWidth / 2 - this.doubleClickX) * diffScale) / this.scale;\n\n this.positionY = ((this.props.cropHeight / 2 - this.doubleClickY) * diffScale) / this.scale;\n }\n\n this.imageDidMove(\"centerOn\");\n\n Animated.parallel([\n Animated.timing(this.animatedScale, {\n toValue: this.scale,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n ]).start();\n }\n } else {\n this.lastClickTime = new Date().getTime();\n }\n }\n },\n onPanResponderMove: (evt, gestureState) => {\n if (this.isDoubleClick) {\n // 有时双击会被当做位移,这里屏蔽掉\n return;\n }\n\n if (evt.nativeEvent.changedTouches.length <= 1) {\n // x 位移\n let diffX = gestureState.dx - (this.lastPositionX || 0);\n if (this.lastPositionX === null) {\n diffX = 0;\n }\n // y 位移\n let diffY = gestureState.dy - (this.lastPositionY || 0);\n if (this.lastPositionY === null) {\n diffY = 0;\n }\n\n // 保留这一次位移作为下次的上一次位移\n this.lastPositionX = gestureState.dx;\n this.lastPositionY = gestureState.dy;\n\n this.horizontalWholeCounter += diffX;\n this.verticalWholeCounter += diffY;\n\n if (Math.abs(this.horizontalWholeCounter) > 5 || Math.abs(this.verticalWholeCounter) > 5) {\n // 如果位移超出手指范围,取消长按监听\n clearTimeout(this.longPressTimeout);\n }\n\n if (this.props.panToMove) {\n // 处理左右滑,如果正在 swipeDown,左右滑失效\n if (this.swipeDownOffset === 0) {\n if (Math.abs(diffX) > Math.abs(diffY)) {\n this.isHorizontalWrap = true;\n }\n\n // diffX > 0 表示手往右滑,图往左移动,反之同理\n // horizontalWholeOuterCounter > 0 表示溢出在左侧,反之在右侧,绝对值越大溢出越多\n if (this.props.imageWidth * this.scale > this.props.cropWidth) {\n // 如果图片宽度大图盒子宽度, 可以横向拖拽\n // 没有溢出偏移量或者这次位移完全收回了偏移量才能拖拽\n if (this.horizontalWholeOuterCounter > 0) {\n // 溢出在右侧\n if (diffX < 0) {\n // 从右侧收紧\n if (this.horizontalWholeOuterCounter > Math.abs(diffX)) {\n // 偏移量还没有用完\n this.horizontalWholeOuterCounter += diffX;\n diffX = 0;\n } else {\n // 溢出量置为0,偏移量减去剩余溢出量,并且可以被拖动\n diffX += this.horizontalWholeOuterCounter;\n this.horizontalWholeOuterCounter = 0;\n if (this.props.horizontalOuterRangeOffset) {\n this.props.horizontalOuterRangeOffset(0);\n }\n }\n } else {\n // 向右侧扩增\n this.horizontalWholeOuterCounter += diffX;\n }\n } else if (this.horizontalWholeOuterCounter < 0) {\n // 溢出在左侧\n if (diffX > 0) {\n // 从左侧收紧\n if (Math.abs(this.horizontalWholeOuterCounter) > diffX) {\n // 偏移量还没有用完\n this.horizontalWholeOuterCounter += diffX;\n diffX = 0;\n } else {\n // 溢出量置为0,偏移量减去剩余溢出量,并且可以被拖动\n diffX += this.horizontalWholeOuterCounter;\n this.horizontalWholeOuterCounter = 0;\n if (this.props.horizontalOuterRangeOffset) {\n this.props.horizontalOuterRangeOffset(0);\n }\n }\n } else {\n // 向左侧扩增\n this.horizontalWholeOuterCounter += diffX;\n }\n } else {\n // 溢出偏移量为0,正常移动\n }\n\n // 产生位移\n this.positionX += diffX / this.scale;\n\n // 但是横向不能出现黑边\n // 横向能容忍的绝对值\n const horizontalMax = (this.props.imageWidth * this.scale - this.props.cropWidth) / 2 / this.scale;\n if (this.positionX < -horizontalMax) {\n // 超越了左边临界点,还在继续向左移动\n this.positionX = -horizontalMax;\n\n // 让其产生细微位移,偏离轨道\n this.horizontalWholeOuterCounter += -1 / 1e10;\n } else if (this.positionX > horizontalMax) {\n // 超越了右侧临界点,还在继续向右移动\n this.positionX = horizontalMax;\n\n // 让其产生细微位移,偏离轨道\n this.horizontalWholeOuterCounter += 1 / 1e10;\n }\n this.animatedPositionX.setValue(this.positionX);\n } else {\n // 不能横向拖拽,全部算做溢出偏移量\n this.horizontalWholeOuterCounter += diffX;\n }\n\n // 溢出量不会超过设定界限\n if (this.horizontalWholeOuterCounter > (this.props.maxOverflow || 0)) {\n this.horizontalWholeOuterCounter = this.props.maxOverflow || 0;\n } else if (this.horizontalWholeOuterCounter < -(this.props.maxOverflow || 0)) {\n this.horizontalWholeOuterCounter = -(this.props.maxOverflow || 0);\n }\n\n if (this.horizontalWholeOuterCounter !== 0) {\n // 如果溢出偏移量不是0,执行溢出回调\n if (this.props.horizontalOuterRangeOffset) {\n this.props.horizontalOuterRangeOffset(this.horizontalWholeOuterCounter);\n }\n }\n }\n\n // 如果图片高度大于盒子高度, 可以纵向弹性拖拽\n if (this.props.imageHeight * this.scale > this.props.cropHeight) {\n this.positionY += diffY / this.scale;\n this.animatedPositionY.setValue(this.positionY);\n\n // 如果图片上边缘脱离屏幕上边缘,则进入 swipeDown 动作\n // if (\n // (this.props.imageHeight / 2 - this.positionY) * this.scale <\n // this.props.cropHeight / 2\n // ) {\n // if (this.props.enableSwipeDown) {\n // this.swipeDownOffset += diffY\n\n // // 只要滑动溢出量不小于 0,就可以拖动\n // if (this.swipeDownOffset > 0) {\n // this.positionY += diffY / this.scale\n // this.animatedPositionY.setValue(this.positionY)\n\n // // 越到下方,缩放越小\n // this.scale = this.scale - diffY / 1000\n // this.animatedScale.setValue(this.scale)\n // }\n // }\n // }\n } else {\n // swipeDown 不允许在已经有横向偏移量时触发\n if (this.props.enableSwipeDown && !this.isHorizontalWrap) {\n // 图片高度小于盒子高度,只能向下拖拽,而且一定是 swipeDown 动作\n this.swipeDownOffset += diffY;\n\n // 只要滑动溢出量不小于 0,就可以拖动\n if (this.swipeDownOffset > 0) {\n this.positionY += diffY / this.scale;\n this.animatedPositionY.setValue(this.positionY);\n\n // 越到下方,缩放越小\n this.scale = this.scale - diffY / 1000;\n this.animatedScale.setValue(this.scale);\n }\n }\n }\n }\n } else {\n // 多个手指的情况\n // 取消长按状态\n if (this.longPressTimeout) {\n clearTimeout(this.longPressTimeout);\n }\n\n if (this.props.pinchToZoom) {\n // 找最小的 x 和最大的 x\n let minX: number;\n let maxX: number;\n if (evt.nativeEvent.changedTouches[0].locationX > evt.nativeEvent.changedTouches[1].locationX) {\n minX = evt.nativeEvent.changedTouches[1].pageX;\n maxX = evt.nativeEvent.changedTouches[0].pageX;\n } else {\n minX = evt.nativeEvent.changedTouches[0].pageX;\n maxX = evt.nativeEvent.changedTouches[1].pageX;\n }\n\n let minY: number;\n let maxY: number;\n if (evt.nativeEvent.changedTouches[0].locationY > evt.nativeEvent.changedTouches[1].locationY) {\n minY = evt.nativeEvent.changedTouches[1].pageY;\n maxY = evt.nativeEvent.changedTouches[0].pageY;\n } else {\n minY = evt.nativeEvent.changedTouches[0].pageY;\n maxY = evt.nativeEvent.changedTouches[1].pageY;\n }\n\n const widthDistance = maxX - minX;\n const heightDistance = maxY - minY;\n const diagonalDistance = Math.sqrt(widthDistance * widthDistance + heightDistance * heightDistance);\n this.zoomCurrentDistance = Number(diagonalDistance.toFixed(1));\n\n if (this.zoomLastDistance !== null) {\n const distanceDiff = (this.zoomCurrentDistance - this.zoomLastDistance) / 200;\n let zoom = this.scale + distanceDiff;\n\n if (zoom < (this.props.minScale || 0)) {\n zoom = this.props.minScale || 0;\n }\n if (zoom > (this.props.maxScale || 0)) {\n zoom = this.props.maxScale || 0;\n }\n\n // 记录之前缩放比例\n const beforeScale = this.scale;\n\n // 开始缩放\n this.scale = zoom;\n this.animatedScale.setValue(this.scale);\n\n // 图片要慢慢往两个手指的中心点移动\n // 缩放 diff\n const diffScale = this.scale - beforeScale;\n // 找到两手中心点距离页面中心的位移\n // 移动位置\n this.positionX -= (this.centerDiffX * diffScale) / this.scale;\n this.positionY -= (this.centerDiffY * diffScale) / this.scale;\n this.animatedPositionX.setValue(this.positionX);\n this.animatedPositionY.setValue(this.positionY);\n }\n this.zoomLastDistance = this.zoomCurrentDistance;\n }\n }\n\n this.imageDidMove(\"onPanResponderMove\");\n },\n onPanResponderRelease: (evt, gestureState) => {\n // 取消长按\n if (this.longPressTimeout) {\n clearTimeout(this.longPressTimeout);\n }\n\n // 双击结束,结束尾判断\n if (this.isDoubleClick) {\n return;\n }\n\n // 长按结束,结束尾判断\n if (this.isLongPress) {\n return;\n }\n\n // 如果是单个手指、距离上次按住大于预设秒、滑动距离小于预设值, 则可能是单击(如果后续双击间隔内没有开始手势)\n // const stayTime = new Date().getTime() - this.lastTouchStartTime!\n const moveDistance = Math.sqrt(gestureState.dx * gestureState.dx + gestureState.dy * gestureState.dy);\n const { locationX, locationY, pageX, pageY } = evt.nativeEvent;\n\n if (evt.nativeEvent.changedTouches.length === 1 && moveDistance < (this.props.clickDistance || 0)) {\n this.singleClickTimeout = setTimeout(() => {\n if (this.props.onClick) {\n this.props.onClick({ locationX, locationY, pageX, pageY });\n }\n }, this.props.doubleClickInterval);\n } else {\n // 多手势结束,或者滑动结束\n if (this.props.responderRelease) {\n this.props.responderRelease(gestureState.vx, this.scale);\n }\n\n this.panResponderReleaseResolve();\n }\n },\n onPanResponderTerminate: () => {},\n });\n\n public resetScale = (): void => {\n this.positionX = 0;\n this.positionY = 0;\n this.scale = 1;\n this.animatedScale.setValue(1);\n };\n\n public panResponderReleaseResolve = (): void => {\n // 判断是否是 swipeDown\n if (this.props.enableSwipeDown && this.props.swipeDownThreshold) {\n if (this.swipeDownOffset > this.props.swipeDownThreshold) {\n if (this.props.onSwipeDown) {\n this.props.onSwipeDown();\n }\n // Stop reset.\n return;\n }\n }\n\n if (this.props.enableCenterFocus && this.scale < 1) {\n // 如果缩放小于1,强制重置为 1\n this.scale = 1;\n Animated.timing(this.animatedScale, {\n toValue: this.scale,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n if (this.props.imageWidth * this.scale <= this.props.cropWidth) {\n // 如果图片宽度小于盒子宽度,横向位置重置\n this.positionX = 0;\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n if (this.props.imageHeight * this.scale <= this.props.cropHeight) {\n // 如果图片高度小于盒子高度,纵向位置重置\n this.positionY = 0;\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n // 横向肯定不会超出范围,由拖拽时控制\n // 如果图片高度大于盒子高度,纵向不能出现黑边\n if (this.props.imageHeight * this.scale > this.props.cropHeight) {\n // 纵向能容忍的绝对值\n const verticalMax = (this.props.imageHeight * this.scale - this.props.cropHeight) / 2 / this.scale;\n if (this.positionY < -verticalMax) {\n this.positionY = -verticalMax;\n } else if (this.positionY > verticalMax) {\n this.positionY = verticalMax;\n }\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n if (this.props.imageWidth * this.scale > this.props.cropWidth) {\n // 纵向能容忍的绝对值\n const horizontalMax = (this.props.imageWidth * this.scale - this.props.cropWidth) / 2 / this.scale;\n if (this.positionX < -horizontalMax) {\n this.positionX = -horizontalMax;\n } else if (this.positionX > horizontalMax) {\n this.positionX = horizontalMax;\n }\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n // 拖拽正常结束后,如果没有缩放,直接回到0,0点\n if (this.props.enableCenterFocus && this.scale === 1) {\n this.positionX = 0;\n this.positionY = 0;\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration: 100,\n useNativeDriver: !!this.props.useNativeDriver,\n }).start();\n }\n\n // 水平溢出量置空\n this.horizontalWholeOuterCounter = 0;\n\n // swipeDown 溢出量置空\n this.swipeDownOffset = 0;\n\n this.imageDidMove(\"onPanResponderRelease\");\n return false;\n };\n\n public componentDidMount(): void {\n if (this.props.centerOn) {\n this.centerOn(this.props.centerOn);\n }\n }\n\n public componentDidUpdate(prevProps: ImageZoomProps): void {\n // Either centerOn has never been called, or it is a repeat and we should ignore it\n if (\n (this.props.centerOn && !prevProps.centerOn) ||\n (this.props.centerOn && prevProps.centerOn && this.didCenterOnChange(prevProps.centerOn, this.props.centerOn))\n ) {\n this.centerOn(this.props.centerOn);\n }\n }\n\n public imageDidMove(type: string): void {\n if (this.props.onMove) {\n this.props.onMove({\n type,\n positionX: this.positionX,\n positionY: this.positionY,\n scale: this.scale,\n zoomCurrentDistance: this.zoomCurrentDistance,\n });\n }\n }\n\n public didCenterOnChange(\n params: { x: number; y: number; scale: number; duration: number },\n paramsNext: { x: number; y: number; scale: number; duration: number },\n ): boolean {\n return params.x !== paramsNext.x || params.y !== paramsNext.y || params.scale !== paramsNext.scale;\n }\n\n public centerOn(params: ICenterOn): void {\n this.positionX = params.x;\n this.positionY = params.y;\n this.scale = params.scale;\n const duration = params.duration || 300;\n Animated.parallel([\n Animated.timing(this.animatedScale, {\n toValue: this.scale,\n duration,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionX, {\n toValue: this.positionX,\n duration,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n Animated.timing(this.animatedPositionY, {\n toValue: this.positionY,\n duration,\n useNativeDriver: !!this.props.useNativeDriver,\n }),\n ]).start(() => {\n this.imageDidMove(\"centerOn\");\n });\n }\n\n /**\n * 图片区域视图渲染完毕\n */\n public handleLayout(event: LayoutChangeEvent): void {\n if (this.props.layoutChange) {\n this.props.layoutChange(event);\n }\n }\n\n /**\n * 重置大小和位置\n */\n public reset(): void {\n this.scale = 1;\n this.animatedScale.setValue(this.scale);\n this.positionX = 0;\n this.animatedPositionX.setValue(this.positionX);\n this.positionY = 0;\n this.animatedPositionY.setValue(this.positionY);\n }\n\n public render(): React.ReactNode {\n const animateConf = {\n transform: [\n {\n scale: this.animatedScale,\n },\n {\n translateX: this.animatedPositionX,\n },\n {\n translateY: this.animatedPositionY,\n },\n ],\n };\n\n const parentStyles = StyleSheet.flatten(this.props.style);\n\n return (\n <View\n style={{\n ...styles.container,\n ...parentStyles,\n width: this.props.cropWidth,\n height: this.props.cropHeight,\n }}\n {...this.imagePanResponder.panHandlers}\n >\n <Animated.View style={animateConf} renderToHardwareTextureAndroid={this.props.useHardwareTextureAndroid}>\n <View\n onLayout={this.handleLayout.bind(this)}\n style={{\n width: this.props.imageWidth,\n height: this.props.imageHeight,\n }}\n >\n {this.props.children}\n </View>\n </Animated.View>\n </View>\n );\n }\n}\n"],"names":["ImageZoomProps","_createClass","_classCallCheck","__publicField","ImageZoomState","styles","StyleSheet","create","container","justifyContent","alignItems","overflow","backgroundColor","ImageViewer","_React$Component","_this","_callSuper","arguments","Animated","Value","PanResponder","onStartShouldSetPanResponder","props","onPanResponderTerminationRequest","onMoveShouldSetPanResponder","onPanResponderGrant","evt","lastPositionX","lastPositionY","zoomLastDistance","horizontalWholeCounter","verticalWholeCounter","lastTouchStartTime","Date","getTime","isDoubleClick","isLongPress","isHorizontalWrap","singleClickTimeout","clearTimeout","nativeEvent","changedTouches","length","centerX","pageX","centerDiffX","cropWidth","centerY","pageY","centerDiffY","cropHeight","longPressTimeout","_evt$nativeEvent","locationX","locationY","setTimeout","onLongPress","longPressTime","lastClickTime","doubleClickInterval","doubleClickX","doubleClickY","onDoubleClick","enableDoubleClickZoom","scale","positionX","positionY","beforeScale","diffScale","imageDidMove","parallel","timing","animatedScale","toValue","duration","useNativeDriver","animatedPositionX","animatedPositionY","start","onPanResponderMove","gestureState","diffX","dx","diffY","dy","Math","abs","panToMove","swipeDownOffset","imageWidth","horizontalWholeOuterCounter","horizontalOuterRangeOffset","horizontalMax","setValue","maxOverflow","imageHeight","enableSwipeDown","pinchToZoom","minX","maxX","minY","maxY","widthDistance","heightDistance","diagonalDistance","sqrt","zoomCurrentDistance","Number","toFixed","distanceDiff","zoom","minScale","maxScale","onPanResponderRelease","moveDistance","_evt$nativeEvent2","clickDistance","onClick","responderRelease","vx","panResponderReleaseResolve","onPanResponderTerminate","swipeDownThreshold","onSwipeDown","enableCenterFocus","verticalMax","_inherits","key","value","componentDidMount","centerOn","componentDidUpdate","prevProps","didCenterOnChange","type","onMove","params","paramsNext","x","y","_this2","handleLayout","event","layoutChange","reset","render","animateConf","transform","translateX","translateY","parentStyles","flatten","style","React","createElement","View","_objectSpread","width","height","imagePanResponder","panHandlers","renderToHardwareTextureAndroid","useHardwareTextureAndroid","onLayout","bind","children","Component"],"mappings":";;;;;;;;;;;;;;;;AAqCO,IAAMA,cAAe,gBAAAC,YAAA,CAArB,SAAAD,iBAAA;AAAAE,EAAAA,eAAA,OAAAF,cAAA,CAAA,CAAA;AAIL;AAAA;AAAA;AAAAG,EAAAA,aAAA,CAAA,IAAA,EAAO,WAAoB,EAAA,GAAA,CAAA,CAAA;AAK3B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,YAAqB,EAAA,GAAA,CAAA,CAAA;AAK5B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,YAAqB,EAAA,GAAA,CAAA,CAAA;AAK5B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,aAAsB,EAAA,GAAA,CAAA,CAAA;AAK7B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,WAAsB,EAAA,IAAA,CAAA,CAAA;AAK7B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,aAAwB,EAAA,IAAA,CAAA,CAAA;AAK/B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,uBAAkC,EAAA,IAAA,CAAA,CAAA;AAKzC;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,eAAyB,EAAA,EAAA,CAAA,CAAA;AAKhC;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,aAAuB,EAAA,GAAA,CAAA,CAAA;AAK9B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,eAAyB,EAAA,GAAA,CAAA,CAAA;AAKhC;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,qBAA+B,EAAA,GAAA,CAAA,CAAA;AAMtC;AAAA;AAAA;AAAA;AAAOA,EAAAA,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAEPA,EAAAA,aAAA,CAAA,IAAA,EAAO,SAAoB,EAAC,CAAA,CAAA;AAK5B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,oBAA8B,EAAA,GAAA,CAAA,CAAA;AAKrC;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,iBAA4B,EAAA,KAAA,CAAA,CAAA;AAKnC;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,mBAA8B,EAAA,IAAA,CAAA,CAAA;AAKrC;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,2BAAsC,EAAA,IAAA,CAAA,CAAA;AAK7C;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,UAAoB,EAAA,GAAA,CAAA,CAAA;AAK3B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,UAAoB,EAAA,EAAA,CAAA,CAAA;AAM3B;AAAA;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,iBAA4B,EAAA,KAAA,CAAA,CAAA;AAKnC;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,WAA4C,YAAM,EAEzD,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,iBAAkD,YAAM,EAE/D,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,eAAgD,YAAM,EAE7D,CAAA,CAAA;AAMA;AAAA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,8BAAyD,YAAM,EAEtE,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,cAA0B,YAAM,EAEvC,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,oBAAyD,YAAM,EAEtE,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,UAAuC,YAAM,EAEpD,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,gBAAoD,YAAM,EAEjE,CAAA,CAAA;AAKA;AAAA;AAAA;EAAAA,aAAA,CAAA,IAAA,EAAO,eAA2B,YAAM,EAExC,CAAA,CAAA;AAKA;AAAA;AAAA;AAAOA,EAAAA,aAAA,CAAA,IAAA,EAAA,6BAAA,CAAA,CAAA;AASP;AAAA;AAAA;AAAA;AAAOA,EAAAA,aAAA,CAAA,IAAA,EAAA,8BAAA,CAAA,CAAA;AASP;AAAA;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,oCAGQ,YAAA;AAAA,IAAA,OAAM,KAAA,CAAA;GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;AAGhB,IAAMC,cAAe,gBAAAH,YAAA,CAArB,SAAAG,iBAAA;AAAAF,EAAAA,eAAA,OAAAE,cAAA,CAAA,CAAA;AAIL;AAAA;AAAA;AAAAD,EAAAA,aAAA,CAAA,IAAA,EAAO,SAAmB,EAAA,GAAA,CAAA,CAAA;AAI1B;AAAA;AAAA;AAAAA,EAAAA,aAAA,CAAA,IAAA,EAAO,SAAmB,EAAA,GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;AAG5B,IAAME,MAAA,GAASC,WAAWC,MAAO,CAAA;AAC/BC,EAAAA,SAAW,EAAA;AACTC,IAAAA,cAAgB,EAAA,QAAA;AAChBC,IAAAA,UAAY,EAAA,QAAA;AACZC,IAAAA,QAAU,EAAA,QAAA;AACVC,IAAAA,eAAiB,EAAA,aAAA;AAAA;AACnB,GAAA;AACF,CAAC,CAAA,CAAA;AAEoBC,IAAAA,WAAA,0BAAAC,gBAAA,EAAA;AAArB,EAAA,SAAAD,cAAA;AAAA,IAAA,IAAAE,KAAA,CAAA;AAAAb,IAAAA,eAAA,OAAAW,WAAA,CAAA,CAAA;AAAAE,IAAAA,KAAA,GAAAC,UAAA,CAAAH,IAAAA,EAAAA,WAAA,EAAAI,SAAA,CAAA,CAAA;IAESd,aAAA,CAAAY,KAAA,EAAA,OAAA,EAAQ,IAAIX,cAAe,EAAA,CAAA,CAAA;AAGlC;AAAAD,IAAAA,aAAA,CAAAY,KAAA,EAAQ,eAA+B,EAAA,IAAA,CAAA,CAAA;AACvCZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,WAAY,EAAA,CAAA,CAAA,CAAA;AACpBZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,mBAAoB,EAAA,IAAIG,QAAS,CAAAC,KAAA,CAAM,CAAC,CAAA,CAAA,CAAA;AAGhD;AAAAhB,IAAAA,aAAA,CAAAY,KAAA,EAAQ,eAA+B,EAAA,IAAA,CAAA,CAAA;AACvCZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,WAAY,EAAA,CAAA,CAAA,CAAA;AACpBZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,mBAAoB,EAAA,IAAIG,QAAS,CAAAC,KAAA,CAAM,CAAC,CAAA,CAAA,CAAA;AAGhD;AAAAhB,IAAAA,aAAA,CAAAY,KAAA,EAAQ,OAAQ,EAAA,CAAA,CAAA,CAAA;AAChBZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,eAAgB,EAAA,IAAIG,QAAS,CAAAC,KAAA,CAAM,CAAC,CAAA,CAAA,CAAA;AAC5ChB,IAAAA,aAAA,CAAAY,KAAA,EAAQ,kBAAkC,EAAA,IAAA,CAAA,CAAA;AAC1CZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,qBAAsB,EAAA,CAAA,CAAA,CAAA;AAG9B;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,oBAAqB,EAAA,CAAA,CAAA,CAAA;AAG7B;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,6BAA8B,EAAA,CAAA,CAAA,CAAA;AAGtC;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,iBAAkB,EAAA,CAAA,CAAA,CAAA;AAG1B;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,wBAAyB,EAAA,CAAA,CAAA,CAAA;AACjCZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,sBAAuB,EAAA,CAAA,CAAA,CAAA;AAG/B;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,aAAc,EAAA,CAAA,CAAA,CAAA;AACtBZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,aAAc,EAAA,CAAA,CAAA,CAAA;AAGtB;AAAQZ,IAAAA,aAAA,CAAAY,KAAA,EAAA,oBAAA,CAAA,CAAA;AAGR;AAAQZ,IAAAA,aAAA,CAAAY,KAAA,EAAA,kBAAA,CAAA,CAAA;AAGR;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,eAAgB,EAAA,CAAA,CAAA,CAAA;AAGxB;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,cAAe,EAAA,CAAA,CAAA,CAAA;AACvBZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,cAAe,EAAA,CAAA,CAAA,CAAA;AAGvB;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,eAAgB,EAAA,KAAA,CAAA,CAAA;AAGxB;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,aAAc,EAAA,KAAA,CAAA,CAAA;AAGtB;AAAAZ,IAAAA,aAAA,CAAAY,KAAA,EAAQ,kBAAmB,EAAA,KAAA,CAAA,CAAA;AAG3B;IAAQZ,aAAA,CAAAY,KAAA,EAAA,mBAAA,EAAoBK,aAAab,MAAO,CAAA;AAC9Cc,MAAAA,4BAAA,EAA8BN,KAAA,CAAKO,KAAM,CAAAD,4BAAA;AACzCE,MAAAA,gCAAA,EAAkCR,KAAA,CAAKO,KAAM,CAAAC,gCAAA;AAC7CC,MAAAA,2BAAA,EAA6BT,KAAA,CAAKO,KAAM,CAAAE,2BAAA;AAExCC,MAAAA,mBAAA,EAAqB,SAArBA,mBAAAA,CAAsBC,GAAQ,EAAA;QAE5BX,KAAA,CAAKY,aAAgB,GAAA,IAAA,CAAA;QACrBZ,KAAA,CAAKa,aAAgB,GAAA,IAAA,CAAA;QACrBb,KAAA,CAAKc,gBAAmB,GAAA,IAAA,CAAA;QACxBd,KAAA,CAAKe,sBAAyB,GAAA,CAAA,CAAA;QAC9Bf,KAAA,CAAKgB,oBAAuB,GAAA,CAAA,CAAA;AAC5BhB,QAAAA,KAAA,CAAKiB,kBAAqB,GAAA,gBAAA,IAAIC,IAAK,EAAA,EAAEC,OAAQ,EAAA,CAAA;QAC7CnB,KAAA,CAAKoB,aAAgB,GAAA,KAAA,CAAA;QACrBpB,KAAA,CAAKqB,WAAc,GAAA,KAAA,CAAA;QACnBrB,KAAA,CAAKsB,gBAAmB,GAAA,KAAA,CAAA;QAGxB,IAAItB,KAAA,CAAKuB,kBAAoB,EAAA;AAC3BC,UAAAA,YAAA,CAAaxB,KAAA,CAAKuB,kBAAkB,CAAA,CAAA;AACtC,SAAA;QAEA,IAAIZ,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAAC,MAAA,GAAS,CAAG,EAAA;UAC7C,IAAMC,OAAW,GAAA,CAAAjB,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEG,KAAQ,GAAAlB,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEG,KAAS,IAAA,CAAA,CAAA;UACtG7B,KAAA,CAAK8B,WAAc,GAAAF,OAAA,GAAU5B,KAAA,CAAKO,KAAA,CAAMwB,SAAY,GAAA,CAAA,CAAA;UAEpD,IAAMC,OAAW,GAAA,CAAArB,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEO,KAAQ,GAAAtB,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEO,KAAS,IAAA,CAAA,CAAA;UACtGjC,KAAA,CAAKkC,WAAc,GAAAF,OAAA,GAAUhC,KAAA,CAAKO,KAAA,CAAM4B,UAAa,GAAA,CAAA,CAAA;AACvD,SAAA;QAGA,IAAInC,KAAA,CAAKoC,gBAAkB,EAAA;AACzBZ,UAAAA,YAAA,CAAaxB,KAAA,CAAKoC,gBAAgB,CAAA,CAAA;AACpC,SAAA;AACA,QAAA,IAAAC,gBAAA,GAA+C1B,GAAI,CAAAc,WAAA;UAA3Ca,SAAW,GAAAD,gBAAA,CAAXC,SAAW;UAAAC,SAAA,GAAAF,gBAAA,CAAAE,SAAA;UAAWV,KAAO,GAAAQ,gBAAA,CAAPR,KAAO;UAAAI,KAAA,GAAAI,gBAAA,CAAAJ,KAAA,CAAA;AAChCjC,QAAAA,KAAA,CAAAoC,gBAAA,GAAmBI,WAAW,YAAM;UACvCxC,KAAA,CAAKqB,WAAc,GAAA,IAAA,CAAA;AACf,UAAA,IAAArB,KAAA,CAAKO,MAAMkC,WAAa,EAAA;AAC1BzC,YAAAA,KAAA,CAAKO,MAAMkC,WAAY,CAAA;AAAEH,cAAAA,WAAAA;AAAWC,cAAAA,SAAW,EAAXA,SAAW;AAAAV,cAAAA,KAAA,EAAAA,KAAA;AAAOI,cAAAA,OAAAA,KAAAA;AAAM,aAAC,CAAA,CAAA;AAC/D,WAAA;AACF,SAAA,EAAGjC,KAAA,CAAKO,KAAA,CAAMmC,aAAa,CAAA,CAAA;QAE3B,IAAI/B,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAAC,MAAA,IAAU,CAAG,EAAA;UAE1C,IAAA,gBAAA,IAAIT,IAAK,EAAA,EAAEC,OAAQ,EAAA,GAAInB,KAAA,CAAK2C,aAAiB,IAAA3C,KAAA,CAAKO,KAAM,CAAAqC,mBAAA,IAAuB,CAAI,CAAA,EAAA;YAErF5C,KAAA,CAAK2C,aAAgB,GAAA,CAAA,CAAA;AAGrB3C,YAAAA,KAAA,CAAK6C,YAAe,GAAAlC,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAE,CAAAG,KAAA,CAAA;AACtD7B,YAAAA,KAAA,CAAK8C,YAAe,GAAAnC,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAE,CAAAO,KAAA,CAAA;AAElD,YAAA,IAAAjC,KAAA,CAAKO,MAAMwC,aAAe,EAAA;AAC5B/C,cAAAA,KAAA,CAAKO,MAAMwC,aAAc,CAAA;gBACvBT,SAAW,EAAA3B,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAE,CAAAY,SAAA;gBAC7CC,SAAW,EAAA5B,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAE,CAAAa,SAAA;gBAC7CV,OAAO7B,KAAA,CAAK6C,YAAA;gBACZZ,OAAOjC,KAAA,CAAK8C,YAAAA;AACd,eAAC,CAAA,CAAA;AACH,aAAA;AAGAtB,YAAAA,YAAA,CAAaxB,KAAA,CAAKoC,gBAAgB,CAAA,CAAA;YAGlCpC,KAAA,CAAKoB,aAAgB,GAAA,IAAA,CAAA;AAEjB,YAAA,IAAApB,KAAA,CAAKO,MAAMyC,qBAAuB,EAAA;cACpC,IAAIhD,KAAA,CAAKiD,KAAA,GAAQ,CAAK,IAAAjD,KAAA,CAAKiD,QAAQ,CAAG,EAAA;gBAEpCjD,KAAA,CAAKiD,KAAQ,GAAA,CAAA,CAAA;gBAEbjD,KAAA,CAAKkD,SAAY,GAAA,CAAA,CAAA;gBACjBlD,KAAA,CAAKmD,SAAY,GAAA,CAAA,CAAA;AACnB,eAAO,MAAA;AAIL,gBAAA,IAAMC,cAAcpD,KAAA,CAAKiD,KAAA,CAAA;gBAGzBjD,KAAA,CAAKiD,KAAQ,GAAA,CAAA,CAAA;AAGP,gBAAA,IAAAI,SAAA,GAAYrD,KAAA,CAAKiD,KAAQ,GAAAG,WAAA,CAAA;gBAG1BpD,KAAA,CAAAkD,SAAA,GAAA,CAAclD,KAAA,CAAKO,KAAM,CAAAwB,SAAA,GAAY,IAAI/B,KAAA,CAAK6C,YAAA,IAAgBQ,YAAarD,KAAA,CAAKiD,KAAA,CAAA;gBAEhFjD,KAAA,CAAAmD,SAAA,GAAA,CAAcnD,KAAA,CAAKO,KAAM,CAAA4B,UAAA,GAAa,IAAInC,KAAA,CAAK8C,YAAA,IAAgBO,YAAarD,KAAA,CAAKiD,KAAA,CAAA;AACxF,eAAA;AAEAjD,cAAAA,KAAA,CAAKsD,aAAa,UAAU,CAAA,CAAA;cAE5BnD,QAAA,CAASoD,QAAS,CAAA,CAChBpD,QAAA,CAASqD,MAAO,CAAAxD,KAAA,CAAKyD,aAAe,EAAA;gBAClCC,SAAS1D,KAAA,CAAKiD,KAAA;AACdU,gBAAAA,QAAU,EAAA,GAAA;AACVC,gBAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;eAC/B,CAAA,EACDzD,QAAA,CAASqD,MAAO,CAAAxD,KAAA,CAAK6D,iBAAmB,EAAA;gBACtCH,SAAS1D,KAAA,CAAKkD,SAAA;AACdS,gBAAAA,QAAU,EAAA,GAAA;AACVC,gBAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;eAC/B,CAAA,EACDzD,QAAA,CAASqD,MAAO,CAAAxD,KAAA,CAAK8D,iBAAmB,EAAA;gBACtCJ,SAAS1D,KAAA,CAAKmD,SAAA;AACdQ,gBAAAA,QAAU,EAAA,GAAA;AACVC,gBAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,eAAC,CAAA,CACF,EAAEG,KAAM,EAAA,CAAA;AACX,aAAA;AACF,WAAO,MAAA;AACL/D,YAAAA,KAAA,CAAK2C,aAAgB,GAAA,gBAAA,IAAIzB,IAAK,EAAA,EAAEC,OAAQ,EAAA,CAAA;AAC1C,WAAA;AACF,SAAA;OACF;AACA6C,MAAAA,kBAAA,EAAoB,SAApBA,kBAAAA,CAAqBrD,GAAA,EAAKsD,YAAiB,EAAA;QACzC,IAAIjE,KAAA,CAAKoB,aAAe,EAAA;AAEtB,UAAA,OAAA;AACF,SAAA;QAEA,IAAIT,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAAC,MAAA,IAAU,CAAG,EAAA;UAE9C,IAAIuC,KAAQ,GAAAD,YAAA,CAAaE,EAAM,IAAAnE,KAAA,CAAKY,aAAiB,IAAA,CAAA,CAAA,CAAA;AACjD,UAAA,IAAAZ,KAAA,CAAKY,kBAAkB,IAAM,EAAA;AACvBsD,YAAAA,KAAA,GAAA,CAAA,CAAA;AACV,WAAA;UAEA,IAAIE,KAAQ,GAAAH,YAAA,CAAaI,EAAM,IAAArE,KAAA,CAAKa,aAAiB,IAAA,CAAA,CAAA,CAAA;AACjD,UAAA,IAAAb,KAAA,CAAKa,kBAAkB,IAAM,EAAA;AACvBuD,YAAAA,KAAA,GAAA,CAAA,CAAA;AACV,WAAA;AAGApE,UAAAA,KAAA,CAAKY,gBAAgBqD,YAAa,CAAAE,EAAA,CAAA;AAClCnE,UAAAA,KAAA,CAAKa,gBAAgBoD,YAAa,CAAAI,EAAA,CAAA;UAElCrE,KAAA,CAAKe,sBAA0B,IAAAmD,KAAA,CAAA;UAC/BlE,KAAA,CAAKgB,oBAAwB,IAAAoD,KAAA,CAAA;UAEzB,IAAAE,IAAA,CAAKC,GAAI,CAAAvE,KAAA,CAAKe,sBAAsB,CAAA,GAAI,CAAK,IAAAuD,IAAA,CAAKC,GAAI,CAAAvE,KAAA,CAAKgB,oBAAoB,CAAA,GAAI,CAAG,EAAA;AAExFQ,YAAAA,YAAA,CAAaxB,KAAA,CAAKoC,gBAAgB,CAAA,CAAA;AACpC,WAAA;AAEI,UAAA,IAAApC,KAAA,CAAKO,MAAMiE,SAAW,EAAA;AAEpB,YAAA,IAAAxE,KAAA,CAAKyE,oBAAoB,CAAG,EAAA;AAC9B,cAAA,IAAIH,KAAKC,GAAI,CAAAL,KAAK,IAAII,IAAK,CAAAC,GAAA,CAAIH,KAAK,CAAG,EAAA;gBACrCpE,KAAA,CAAKsB,gBAAmB,GAAA,IAAA,CAAA;AAC1B,eAAA;AAIA,cAAA,IAAItB,KAAA,CAAKO,KAAM,CAAAmE,UAAA,GAAa1E,KAAA,CAAKiD,KAAQ,GAAAjD,KAAA,CAAKO,MAAMwB,SAAW,EAAA;AAGzD,gBAAA,IAAA/B,KAAA,CAAK2E,8BAA8B,CAAG,EAAA;kBAExC,IAAIT,QAAQ,CAAG,EAAA;oBAEb,IAAIlE,KAAA,CAAK2E,2BAAA,GAA8BL,IAAK,CAAAC,GAAA,CAAIL,KAAK,CAAG,EAAA;sBAEtDlE,KAAA,CAAK2E,2BAA+B,IAAAT,KAAA,CAAA;AAC5BA,sBAAAA,KAAA,GAAA,CAAA,CAAA;AACV,qBAAO,MAAA;sBAELA,KAAA,IAASlE,KAAA,CAAK2E,2BAAA,CAAA;sBACd3E,KAAA,CAAK2E,2BAA8B,GAAA,CAAA,CAAA;AAC/B,sBAAA,IAAA3E,KAAA,CAAKO,MAAMqE,0BAA4B,EAAA;AACpC5E,wBAAAA,KAAA,CAAAO,KAAA,CAAMqE,2BAA2B,CAAC,CAAA,CAAA;AACzC,uBAAA;AACF,qBAAA;AACF,mBAAO,MAAA;oBAEL5E,KAAA,CAAK2E,2BAA+B,IAAAT,KAAA,CAAA;AACtC,mBAAA;AACF,iBAAA,MAAA,IAAWlE,KAAA,CAAK2E,2BAAA,GAA8B,CAAG,EAAA;kBAE/C,IAAIT,QAAQ,CAAG,EAAA;oBAEb,IAAII,IAAK,CAAAC,GAAA,CAAIvE,KAAA,CAAK2E,2BAA2B,IAAIT,KAAO,EAAA;sBAEtDlE,KAAA,CAAK2E,2BAA+B,IAAAT,KAAA,CAAA;AAC5BA,sBAAAA,KAAA,GAAA,CAAA,CAAA;AACV,qBAAO,MAAA;sBAELA,KAAA,IAASlE,KAAA,CAAK2E,2BAAA,CAAA;sBACd3E,KAAA,CAAK2E,2BAA8B,GAAA,CAAA,CAAA;AAC/B,sBAAA,IAAA3E,KAAA,CAAKO,MAAMqE,0BAA4B,EAAA;AACpC5E,wBAAAA,KAAA,CAAAO,KAAA,CAAMqE,2BAA2B,CAAC,CAAA,CAAA;AACzC,uBAAA;AACF,qBAAA;AACF,mBAAO,MAAA;oBAEL5E,KAAA,CAAK2E,2BAA+B,IAAAT,KAAA,CAAA;AACtC,mBAAA;AACF,iBAAO,MAAA,CAEP;AAGKlE,gBAAAA,KAAA,CAAAkD,SAAA,IAAagB,QAAQlE,KAAA,CAAKiD,KAAA,CAAA;gBAIzB,IAAA4B,aAAA,GAAA,CAAiB7E,KAAA,CAAKO,KAAA,CAAMmE,UAAa,GAAA1E,KAAA,CAAKiD,QAAQjD,KAAA,CAAKO,KAAA,CAAMwB,SAAa,IAAA,CAAA,GAAI/B,KAAA,CAAKiD,KAAA,CAAA;AACzF,gBAAA,IAAAjD,KAAA,CAAKkD,SAAY,GAAA,CAAC2B,aAAe,EAAA;AAEnC7E,kBAAAA,KAAA,CAAKkD,YAAY,CAAC2B,aAAA,CAAA;AAGlB7E,kBAAAA,KAAA,CAAK2E,+BAA+B,CAAK,CAAA,GAAA,IAAA,CAAA;AAC3C,iBAAA,MAAA,IAAW3E,KAAA,CAAKkD,SAAA,GAAY2B,aAAe,EAAA;kBAEzC7E,KAAA,CAAKkD,SAAY,GAAA2B,aAAA,CAAA;AAGjB7E,kBAAAA,KAAA,CAAK2E,+BAA+B,CAAI,GAAA,IAAA,CAAA;AAC1C,iBAAA;gBACK3E,KAAA,CAAA6D,iBAAA,CAAkBiB,QAAS,CAAA9E,KAAA,CAAKkD,SAAS,CAAA,CAAA;AAChD,eAAO,MAAA;gBAELlD,KAAA,CAAK2E,2BAA+B,IAAAT,KAAA,CAAA;AACtC,eAAA;AAGA,cAAA,IAAIlE,KAAA,CAAK2E,2BAAA,IAA+B3E,KAAA,CAAKO,KAAA,CAAMwE,eAAe,CAAI,CAAA,EAAA;gBAC/D/E,KAAA,CAAA2E,2BAAA,GAA8B3E,KAAA,CAAKO,KAAA,CAAMwE,WAAe,IAAA,CAAA,CAAA;AAC/D,yBAAW/E,KAAA,CAAK2E,2BAAA,GAA8B,EAAE3E,KAAA,CAAKO,KAAA,CAAMwE,eAAe,CAAI,CAAA,EAAA;gBAC5E/E,KAAA,CAAK2E,2BAA8B,GAAA,EAAE3E,KAAA,CAAKO,KAAA,CAAMwE,WAAe,IAAA,CAAA,CAAA,CAAA;AACjE,eAAA;AAEI,cAAA,IAAA/E,KAAA,CAAK2E,gCAAgC,CAAG,EAAA;AAEtC,gBAAA,IAAA3E,KAAA,CAAKO,MAAMqE,0BAA4B,EAAA;kBACpC5E,KAAA,CAAAO,KAAA,CAAMqE,0BAA2B,CAAA5E,KAAA,CAAK2E,2BAA2B,CAAA,CAAA;AACxE,iBAAA;AACF,eAAA;AACF,aAAA;AAGA,YAAA,IAAI3E,KAAA,CAAKO,KAAM,CAAAyE,WAAA,GAAchF,KAAA,CAAKiD,KAAQ,GAAAjD,KAAA,CAAKO,MAAM4B,UAAY,EAAA;AAC1DnC,cAAAA,KAAA,CAAAmD,SAAA,IAAaiB,QAAQpE,KAAA,CAAKiD,KAAA,CAAA;cAC1BjD,KAAA,CAAA8D,iBAAA,CAAkBgB,QAAS,CAAA9E,KAAA,CAAKmD,SAAS,CAAA,CAAA;AAqBhD,aAAO,MAAA;cAEL,IAAInD,KAAA,CAAKO,KAAA,CAAM0E,eAAmB,IAAA,CAACjF,KAAA,CAAKsB,gBAAkB,EAAA;gBAExDtB,KAAA,CAAKyE,eAAmB,IAAAL,KAAA,CAAA;AAGpB,gBAAA,IAAApE,KAAA,CAAKyE,kBAAkB,CAAG,EAAA;AACvBzE,kBAAAA,KAAA,CAAAmD,SAAA,IAAaiB,QAAQpE,KAAA,CAAKiD,KAAA,CAAA;kBAC1BjD,KAAA,CAAA8D,iBAAA,CAAkBgB,QAAS,CAAA9E,KAAA,CAAKmD,SAAS,CAAA,CAAA;kBAGzCnD,KAAA,CAAAiD,KAAA,GAAQjD,KAAA,CAAKiD,KAAA,GAAQmB,KAAQ,GAAA,GAAA,CAAA;kBAC7BpE,KAAA,CAAAyD,aAAA,CAAcqB,QAAS,CAAA9E,KAAA,CAAKiD,KAAK,CAAA,CAAA;AACxC,iBAAA;AACF,eAAA;AACF,aAAA;AACF,WAAA;AACF,SAAO,MAAA;UAGL,IAAIjD,KAAA,CAAKoC,gBAAkB,EAAA;AACzBZ,YAAAA,YAAA,CAAaxB,KAAA,CAAKoC,gBAAgB,CAAA,CAAA;AACpC,WAAA;AAEI,UAAA,IAAApC,KAAA,CAAKO,MAAM2E,WAAa,EAAA;AAEtB,YAAA,IAAAC,IAAA,CAAA;AACA,YAAA,IAAAC,IAAA,CAAA;YACA,IAAAzE,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEY,SAAY,GAAA3B,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEY,SAAW,EAAA;cAC7F6C,IAAA,GAAOxE,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAG,KAAA,CAAA;cACzCuD,IAAA,GAAOzE,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAG,KAAA,CAAA;AAC3C,aAAO,MAAA;cACLsD,IAAA,GAAOxE,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAG,KAAA,CAAA;cACzCuD,IAAA,GAAOzE,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAG,KAAA,CAAA;AAC3C,aAAA;AAEI,YAAA,IAAAwD,IAAA,CAAA;AACA,YAAA,IAAAC,IAAA,CAAA;YACA,IAAA3E,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEa,SAAY,GAAA5B,GAAA,CAAIc,WAAY,CAAAC,cAAA,CAAe,CAAC,CAAA,CAAEa,SAAW,EAAA;cAC7F8C,IAAA,GAAO1E,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAO,KAAA,CAAA;cACzCqD,IAAA,GAAO3E,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAO,KAAA,CAAA;AAC3C,aAAO,MAAA;cACLoD,IAAA,GAAO1E,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAO,KAAA,CAAA;cACzCqD,IAAA,GAAO3E,GAAI,CAAAc,WAAA,CAAYC,cAAe,CAAA,CAAC,CAAE,CAAAO,KAAA,CAAA;AAC3C,aAAA;AAEA,YAAA,IAAMsD,gBAAgBH,IAAO,GAAAD,IAAA,CAAA;AAC7B,YAAA,IAAMK,iBAAiBF,IAAO,GAAAD,IAAA,CAAA;AAC9B,YAAA,IAAMI,mBAAmBnB,IAAK,CAAAoB,IAAA,CAAKH,aAAgB,GAAAA,aAAA,GAAgBC,iBAAiBA,cAAc,CAAA,CAAA;YAClGxF,KAAA,CAAK2F,mBAAsB,GAAAC,MAAA,CAAOH,gBAAiB,CAAAI,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAEzD,YAAA,IAAA7F,KAAA,CAAKc,qBAAqB,IAAM,EAAA;cAClC,IAAMgF,YAAgB,GAAA,CAAA9F,KAAA,CAAK2F,mBAAsB,GAAA3F,KAAA,CAAKc,gBAAoB,IAAA,GAAA,CAAA;AACtE,cAAA,IAAAiF,IAAA,GAAO/F,KAAA,CAAKiD,KAAQ,GAAA6C,YAAA,CAAA;cAExB,IAAIC,IAAQ,IAAA/F,KAAA,CAAKO,KAAM,CAAAyF,QAAA,IAAY,CAAI,CAAA,EAAA;AAC9BD,gBAAAA,IAAA,GAAA/F,KAAA,CAAKO,MAAMyF,QAAY,IAAA,CAAA,CAAA;AAChC,eAAA;cACA,IAAID,IAAQ,IAAA/F,KAAA,CAAKO,KAAM,CAAA0F,QAAA,IAAY,CAAI,CAAA,EAAA;AAC9BF,gBAAAA,IAAA,GAAA/F,KAAA,CAAKO,MAAM0F,QAAY,IAAA,CAAA,CAAA;AAChC,eAAA;AAGA,cAAA,IAAM7C,cAAcpD,KAAA,CAAKiD,KAAA,CAAA;cAGzBjD,KAAA,CAAKiD,KAAQ,GAAA8C,IAAA,CAAA;cACR/F,KAAA,CAAAyD,aAAA,CAAcqB,QAAS,CAAA9E,KAAA,CAAKiD,KAAK,CAAA,CAAA;AAIhC,cAAA,IAAAI,SAAA,GAAYrD,KAAA,CAAKiD,KAAQ,GAAAG,WAAA,CAAA;cAG/BpD,KAAA,CAAKkD,SAAc,IAAAlD,KAAA,CAAK8B,WAAc,GAAAuB,SAAA,GAAarD,KAAA,CAAKiD,KAAA,CAAA;cACxDjD,KAAA,CAAKmD,SAAc,IAAAnD,KAAA,CAAKkC,WAAc,GAAAmB,SAAA,GAAarD,KAAA,CAAKiD,KAAA,CAAA;cACnDjD,KAAA,CAAA6D,iBAAA,CAAkBiB,QAAS,CAAA9E,KAAA,CAAKkD,SAAS,CAAA,CAAA;cACzClD,KAAA,CAAA8D,iBAAA,CAAkBgB,QAAS,CAAA9E,KAAA,CAAKmD,SAAS,CAAA,CAAA;AAChD,aAAA;AACAnD,YAAAA,KAAA,CAAKc,mBAAmBd,KAAA,CAAK2F,mBAAA,CAAA;AAC/B,WAAA;AACF,SAAA;AAEA3F,QAAAA,KAAA,CAAKsD,aAAa,oBAAoB,CAAA,CAAA;OACxC;AACA4C,MAAAA,qBAAA,EAAuB,SAAvBA,qBAAAA,CAAwBvF,GAAA,EAAKsD,YAAiB,EAAA;QAE5C,IAAIjE,KAAA,CAAKoC,gBAAkB,EAAA;AACzBZ,UAAAA,YAAA,CAAaxB,KAAA,CAAKoC,gBAAgB,CAAA,CAAA;AACpC,SAAA;QAGA,IAAIpC,KAAA,CAAKoB,aAAe,EAAA;AACtB,UAAA,OAAA;AACF,SAAA;QAGA,IAAIpB,KAAA,CAAKqB,WAAa,EAAA;AACpB,UAAA,OAAA;AACF,SAAA;QAIM,IAAA8E,YAAA,GAAe7B,IAAK,CAAAoB,IAAA,CAAKzB,YAAa,CAAAE,EAAA,GAAKF,aAAaE,EAAK,GAAAF,YAAA,CAAaI,EAAK,GAAAJ,YAAA,CAAaI,EAAE,CAAA,CAAA;AACpG,QAAA,IAAA+B,iBAAA,GAA+CzF,GAAI,CAAAc,WAAA;UAA3Ca,SAAW,GAAA8D,iBAAA,CAAX9D,SAAW;UAAAC,SAAA,GAAA6D,iBAAA,CAAA7D,SAAA;UAAWV,KAAO,GAAAuE,iBAAA,CAAPvE,KAAO;UAAAI,KAAA,GAAAmE,iBAAA,CAAAnE,KAAA,CAAA;QAEjC,IAAAtB,GAAA,CAAIc,YAAYC,cAAe,CAAAC,MAAA,KAAW,KAAKwE,YAAgB,IAAAnG,KAAA,CAAKO,KAAM,CAAA8F,aAAA,IAAiB,CAAI,CAAA,EAAA;AAC5FrG,UAAAA,KAAA,CAAAuB,kBAAA,GAAqBiB,WAAW,YAAM;AACrC,YAAA,IAAAxC,KAAA,CAAKO,MAAM+F,OAAS,EAAA;AACtBtG,cAAAA,KAAA,CAAKO,MAAM+F,OAAQ,CAAA;AAAEhE,gBAAAA,WAAAA;AAAWC,gBAAAA,SAAW,EAAXA,SAAW;AAAAV,gBAAAA,KAAA,EAAAA,KAAA;AAAOI,gBAAAA,OAAAA,KAAAA;AAAM,eAAC,CAAA,CAAA;AAC3D,aAAA;AACF,WAAA,EAAGjC,KAAA,CAAKO,KAAA,CAAMqC,mBAAmB,CAAA,CAAA;AACnC,SAAO,MAAA;AAED,UAAA,IAAA5C,KAAA,CAAKO,MAAMgG,gBAAkB,EAAA;AAC/BvG,YAAAA,KAAA,CAAKO,KAAM,CAAAgG,gBAAA,CAAiBtC,YAAa,CAAAuC,EAAA,EAAIxG,KAAA,CAAKiD,KAAK,CAAA,CAAA;AACzD,WAAA;UAEAjD,KAAA,CAAKyG,0BAA2B,EAAA,CAAA;AAClC,SAAA;OACF;AACAC,MAAAA,yBAAyB,SAAzBA,0BAA+B,EAAC;AAClC,KAAC,CAAA,CAAA,CAAA;AAEDtH,IAAAA,aAAA,CAAAY,KAAA,EAAO,cAAa,YAAY;MAC9BA,KAAA,CAAKkD,SAAY,GAAA,CAAA,CAAA;MACjBlD,KAAA,CAAKmD,SAAY,GAAA,CAAA,CAAA;MACjBnD,KAAA,CAAKiD,KAAQ,GAAA,CAAA,CAAA;AACRjD,MAAAA,KAAA,CAAAyD,aAAA,CAAcqB,SAAS,CAAC,CAAA,CAAA;AAC/B,KAAA,CAAA,CAAA;AAEA1F,IAAAA,aAAA,CAAAY,KAAA,EAAO,8BAA6B,YAAY;MAE9C,IAAIA,KAAA,CAAKO,KAAA,CAAM0E,eAAmB,IAAAjF,KAAA,CAAKO,MAAMoG,kBAAoB,EAAA;QAC/D,IAAI3G,KAAA,CAAKyE,eAAA,GAAkBzE,KAAA,CAAKO,KAAA,CAAMoG,kBAAoB,EAAA;AACpD,UAAA,IAAA3G,KAAA,CAAKO,MAAMqG,WAAa,EAAA;AAC1B5G,YAAAA,KAAA,CAAKO,MAAMqG,WAAY,EAAA,CAAA;AACzB,WAAA;AAEA,UAAA,OAAA;AACF,SAAA;AACF,OAAA;MAEA,IAAI5G,KAAA,CAAKO,KAAA,CAAMsG,iBAAqB,IAAA7G,KAAA,CAAKiD,QAAQ,CAAG,EAAA;QAElDjD,KAAA,CAAKiD,KAAQ,GAAA,CAAA,CAAA;AACJ9C,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAKyD,aAAe,EAAA;UAClCC,SAAS1D,KAAA,CAAKiD,KAAA;AACdU,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACX,OAAA;AAEA,MAAA,IAAI/D,KAAA,CAAKO,KAAM,CAAAmE,UAAA,GAAa1E,KAAA,CAAKiD,KAAS,IAAAjD,KAAA,CAAKO,MAAMwB,SAAW,EAAA;QAE9D/B,KAAA,CAAKkD,SAAY,GAAA,CAAA,CAAA;AACR/C,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAK6D,iBAAmB,EAAA;UACtCH,SAAS1D,KAAA,CAAKkD,SAAA;AACdS,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACX,OAAA;AAEA,MAAA,IAAI/D,KAAA,CAAKO,KAAM,CAAAyE,WAAA,GAAchF,KAAA,CAAKiD,KAAS,IAAAjD,KAAA,CAAKO,MAAM4B,UAAY,EAAA;QAEhEnC,KAAA,CAAKmD,SAAY,GAAA,CAAA,CAAA;AACRhD,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAK8D,iBAAmB,EAAA;UACtCJ,SAAS1D,KAAA,CAAKmD,SAAA;AACdQ,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACX,OAAA;AAIA,MAAA,IAAI/D,KAAA,CAAKO,KAAM,CAAAyE,WAAA,GAAchF,KAAA,CAAKiD,KAAQ,GAAAjD,KAAA,CAAKO,MAAM4B,UAAY,EAAA;QAEzD,IAAA2E,WAAA,GAAA,CAAe9G,KAAA,CAAKO,KAAA,CAAMyE,WAAc,GAAAhF,KAAA,CAAKiD,QAAQjD,KAAA,CAAKO,KAAA,CAAM4B,UAAc,IAAA,CAAA,GAAInC,KAAA,CAAKiD,KAAA,CAAA;AACzF,QAAA,IAAAjD,KAAA,CAAKmD,SAAY,GAAA,CAAC2D,WAAa,EAAA;AACjC9G,UAAAA,KAAA,CAAKmD,YAAY,CAAC2D,WAAA,CAAA;AACpB,SAAA,MAAA,IAAW9G,KAAA,CAAKmD,SAAA,GAAY2D,WAAa,EAAA;UACvC9G,KAAA,CAAKmD,SAAY,GAAA2D,WAAA,CAAA;AACnB,SAAA;AACS3G,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAK8D,iBAAmB,EAAA;UACtCJ,SAAS1D,KAAA,CAAKmD,SAAA;AACdQ,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACX,OAAA;AAEA,MAAA,IAAI/D,KAAA,CAAKO,KAAM,CAAAmE,UAAA,GAAa1E,KAAA,CAAKiD,KAAQ,GAAAjD,KAAA,CAAKO,MAAMwB,SAAW,EAAA;QAEvD,IAAA8C,aAAA,GAAA,CAAiB7E,KAAA,CAAKO,KAAA,CAAMmE,UAAa,GAAA1E,KAAA,CAAKiD,QAAQjD,KAAA,CAAKO,KAAA,CAAMwB,SAAa,IAAA,CAAA,GAAI/B,KAAA,CAAKiD,KAAA,CAAA;AACzF,QAAA,IAAAjD,KAAA,CAAKkD,SAAY,GAAA,CAAC2B,aAAe,EAAA;AACnC7E,UAAAA,KAAA,CAAKkD,YAAY,CAAC2B,aAAA,CAAA;AACpB,SAAA,MAAA,IAAW7E,KAAA,CAAKkD,SAAA,GAAY2B,aAAe,EAAA;UACzC7E,KAAA,CAAKkD,SAAY,GAAA2B,aAAA,CAAA;AACnB,SAAA;AACS1E,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAK6D,iBAAmB,EAAA;UACtCH,SAAS1D,KAAA,CAAKkD,SAAA;AACdS,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACX,OAAA;MAGA,IAAI/D,KAAA,CAAKO,KAAA,CAAMsG,iBAAqB,IAAA7G,KAAA,CAAKiD,UAAU,CAAG,EAAA;QACpDjD,KAAA,CAAKkD,SAAY,GAAA,CAAA,CAAA;QACjBlD,KAAA,CAAKmD,SAAY,GAAA,CAAA,CAAA;AACRhD,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAK6D,iBAAmB,EAAA;UACtCH,SAAS1D,KAAA,CAAKkD,SAAA;AACdS,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACA5D,QAAAA,QAAA,CAAAqD,MAAA,CAAOxD,KAAA,CAAK8D,iBAAmB,EAAA;UACtCJ,SAAS1D,KAAA,CAAKmD,SAAA;AACdQ,UAAAA,QAAU,EAAA,GAAA;AACVC,UAAAA,eAAiB,EAAA,CAAC,CAAC5D,KAAA,CAAKO,KAAM,CAAAqD,eAAAA;AAChC,SAAC,EAAEG,KAAM,EAAA,CAAA;AACX,OAAA;MAGA/D,KAAA,CAAK2E,2BAA8B,GAAA,CAAA,CAAA;MAGnC3E,KAAA,CAAKyE,eAAkB,GAAA,CAAA,CAAA;AAEvBzE,MAAAA,KAAA,CAAKsD,aAAa,uBAAuB,CAAA,CAAA;AAClC,MAAA,OAAA,KAAA,CAAA;AACT,KAAA,CAAA,CAAA;AAAA,IAAA,OAAAtD,KAAA,CAAA;AAAA,GAAA;EAAA+G,SAAA,CAAAjH,WAAA,EAAAC,gBAAA,CAAA,CAAA;EAAA,OAAAb,YAAA,CAAAY,WAAA,EAAA,CAAA;IAAAkH,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAEO,SAAAC,iBAA0BA,GAAA;AAC3B,MAAA,IAAA,IAAA,CAAK3G,MAAM4G,QAAU,EAAA;QAClB,IAAA,CAAAA,QAAA,CAAS,IAAK,CAAA5G,KAAA,CAAM4G,QAAQ,CAAA,CAAA;AACnC,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAH,GAAA,EAAA,oBAAA;AAAAC,IAAAA,KAAA,EAEO,SAAAG,mBAAmBC,SAAiC,EAAA;AAEzD,MAAA,IACG,KAAK9G,KAAM,CAAA4G,QAAA,IAAY,CAACE,SAAU,CAAAF,QAAA,IAClC,KAAK5G,KAAM,CAAA4G,QAAA,IAAYE,SAAU,CAAAF,QAAA,IAAY,KAAKG,iBAAkB,CAAAD,SAAA,CAAUF,UAAU,IAAK,CAAA5G,KAAA,CAAM4G,QAAQ,CAC5G,EAAA;QACK,IAAA,CAAAA,QAAA,CAAS,IAAK,CAAA5G,KAAA,CAAM4G,QAAQ,CAAA,CAAA;AACnC,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAH,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EAEO,SAAA3D,aAAaiE,IAAoB,EAAA;AAClC,MAAA,IAAA,IAAA,CAAKhH,MAAMiH,MAAQ,EAAA;AACrB,QAAA,IAAA,CAAKjH,MAAMiH,MAAO,CAAA;AAChBD,UAAAA,IAAA,EAAAA,IAAA;UACArE,WAAW,IAAK,CAAAA,SAAA;UAChBC,WAAW,IAAK,CAAAA,SAAA;UAChBF,OAAO,IAAK,CAAAA,KAAA;UACZ0C,qBAAqB,IAAK,CAAAA,mBAAAA;AAC5B,SAAC,CAAA,CAAA;AACH,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAqB,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAEO,SAAAK,iBAAAA,CACLG,QACAC,UACS,EAAA;MACF,OAAAD,MAAA,CAAOE,CAAM,KAAAD,UAAA,CAAWC,CAAK,IAAAF,MAAA,CAAOG,MAAMF,UAAW,CAAAE,CAAA,IAAKH,MAAO,CAAAxE,KAAA,KAAUyE,UAAW,CAAAzE,KAAA,CAAA;AAC/F,KAAA;AAAA,GAAA,EAAA;IAAA+D,GAAA,EAAA,UAAA;AAAAC,IAAAA,KAAA,EAEO,SAAAE,SAASM,MAAyB,EAAA;AAAA,MAAA,IAAAI,MAAA,GAAA,IAAA,CAAA;AACvC,MAAA,IAAA,CAAK3E,YAAYuE,MAAO,CAAAE,CAAA,CAAA;AACxB,MAAA,IAAA,CAAKxE,YAAYsE,MAAO,CAAAG,CAAA,CAAA;AACxB,MAAA,IAAA,CAAK3E,QAAQwE,MAAO,CAAAxE,KAAA,CAAA;AACd,MAAA,IAAAU,QAAA,GAAW8D,OAAO9D,QAAY,IAAA,GAAA,CAAA;MACpCxD,QAAA,CAASoD,QAAS,CAAA,CAChBpD,QAAA,CAASqD,MAAO,CAAA,IAAA,CAAKC,aAAe,EAAA;QAClCC,SAAS,IAAK,CAAAT,KAAA;AACdU,QAAAA,QAAA,EAAAA,QAAA;AACAC,QAAAA,eAAiB,EAAA,CAAC,CAAC,IAAA,CAAKrD,KAAM,CAAAqD,eAAAA;OAC/B,CAAA,EACDzD,QAAA,CAASqD,MAAO,CAAA,IAAA,CAAKK,iBAAmB,EAAA;QACtCH,SAAS,IAAK,CAAAR,SAAA;AACdS,QAAAA,QAAA,EAAAA,QAAA;AACAC,QAAAA,eAAiB,EAAA,CAAC,CAAC,IAAA,CAAKrD,KAAM,CAAAqD,eAAAA;OAC/B,CAAA,EACDzD,QAAA,CAASqD,MAAO,CAAA,IAAA,CAAKM,iBAAmB,EAAA;QACtCJ,SAAS,IAAK,CAAAP,SAAA;AACdQ,QAAAA,QAAA,EAAAA,QAAA;AACAC,QAAAA,eAAiB,EAAA,CAAC,CAAC,IAAA,CAAKrD,KAAM,CAAAqD,eAAAA;AAChC,OAAC,CAAA,CACF,CAAE,CAAAG,KAAA,CAAM,YAAM;AACb8D,QAAAA,MAAA,CAAKvE,aAAa,UAAU,CAAA,CAAA;AAC9B,OAAC,CAAA,CAAA;AACH,KAAA;AAAA;AAAA;AAAA;AAAA,GAAA,EAAA;IAAA0D,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,EAKO,SAAAa,aAAaC,KAAgC,EAAA;AAC9C,MAAA,IAAA,IAAA,CAAKxH,MAAMyH,YAAc,EAAA;AACtB,QAAA,IAAA,CAAAzH,KAAA,CAAMyH,aAAaD,KAAK,CAAA,CAAA;AAC/B,OAAA;AACF,KAAA;AAAA;AAAA;AAAA;AAAA,GAAA,EAAA;IAAAf,GAAA,EAAA,OAAA;AAAAC,IAAAA,KAAA,EAKO,SAAAgB,KAAcA,GAAA;MACnB,IAAA,CAAKhF,KAAQ,GAAA,CAAA,CAAA;MACR,IAAA,CAAAQ,aAAA,CAAcqB,QAAS,CAAA,IAAA,CAAK7B,KAAK,CAAA,CAAA;MACtC,IAAA,CAAKC,SAAY,GAAA,CAAA,CAAA;MACZ,IAAA,CAAAW,iBAAA,CAAkBiB,QAAS,CAAA,IAAA,CAAK5B,SAAS,CAAA,CAAA;MAC9C,IAAA,CAAKC,SAAY,GAAA,CAAA,CAAA;MACZ,IAAA,CAAAW,iBAAA,CAAkBgB,QAAS,CAAA,IAAA,CAAK3B,SAAS,CAAA,CAAA;AAChD,KAAA;AAAA,GAAA,EAAA;IAAA6D,GAAA,EAAA,QAAA;AAAAC,IAAAA,KAAA,EAEO,SAAAiB,MAA0BA,GAAA;AAC/B,MAAA,IAAMC,WAAc,GAAA;AAClBC,QAAAA,SAAW,EAAA,CACT;UACEnF,OAAO,IAAK,CAAAQ,aAAAA;AACd,SAAA,EACA;UACE4E,YAAY,IAAK,CAAAxE,iBAAAA;AACnB,SAAA,EACA;UACEyE,YAAY,IAAK,CAAAxE,iBAAAA;SACnB,CAAA;OAEJ,CAAA;MAEA,IAAMyE,YAAe,GAAAhJ,UAAA,CAAWiJ,OAAQ,CAAA,IAAA,CAAKjI,MAAMkI,KAAK,CAAA,CAAA;AAGtD,MAAA,sBAAAC,KAAA,CAAAC,aAAA,CAACC,IAAA,EAAAC,cAAA,CAAA;QACCJ,KAAO,EAAAI,cAAA,CAAAA,cAAA,CAAAA,cAAA,CAAA,EAAA,EACFvJ,MAAO,CAAAG,SAAA,CAAA,EACP8I,YAAA,CAAA,EAAA,EAAA,EAAA;AACHO,UAAAA,KAAA,EAAO,KAAKvI,KAAM,CAAAwB,SAAA;AAClBgH,UAAAA,MAAA,EAAQ,KAAKxI,KAAM,CAAA4B,UAAAA;AAAA,SAAA,CAAA;AACrB,OAAA,EACI,KAAK6G,iBAAkB,CAAAC,WAAA,CAE3B,iBAAAP,KAAA,CAAAC,aAAA,CAACxI,SAASyI,IAAT,EAAA;AAAcH,QAAAA,OAAON,WAAa;AAAAe,QAAAA,8BAAA,EAAgC,IAAK,CAAA3I,KAAA,CAAM4I,yBAAAA;AAC5E,OAAA,iBAAAT,KAAA,CAAAC,aAAA,CAACC,IAAA,EAAA;QACCQ,QAAU,EAAA,IAAA,CAAKtB,YAAa,CAAAuB,IAAA,CAAK,IAAI,CAAA;AACrCZ,QAAAA,KAAO,EAAA;AACLK,UAAAA,KAAA,EAAO,KAAKvI,KAAM,CAAAmE,UAAA;AAClBqE,UAAAA,MAAA,EAAQ,KAAKxI,KAAM,CAAAyE,WAAAA;AACrB,SAAA;OAAA,EAEC,KAAKzE,KAAM,CAAA+I,QACd,CACF,CACF,CAAA,CAAA;AAEJ,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAzqBuCZ,CAAAA,MAAMa,SAA0C,EAAA;AACvFnK,aADmB,CAAAU,WAAA,EACL,cAAe,EAAA,IAAIb,cAAe,EAAA,CAAA;;;;"}
|