zkit-ui 2.0.3 → 2.0.5
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/README.md +56 -0
- package/android/build.gradle +100 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GaleriaModule.kt +43 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GaleriaView.kt +305 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryLayoutSupport.java +450 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryMediaItem.java +36 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryPagerAdapter.java +140 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GallerySharedElementGeometry.java +25 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GallerySharedElementNames.java +39 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GallerySharedElementState.java +25 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GallerySourceViewRegistry.java +115 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryTransitionSnapshotView.java +60 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryVideoPlayerView.java +338 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryViewerOverlayView.java +636 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryViewerPageView.java +357 -0
- package/android/src/main/java/cn/fontree/zkit/ui/preview/GalleryViewerTransitionController.java +223 -0
- package/android/src/main/res/layout/galeria_player_view.xml +9 -0
- package/dist/all.d.ts +2 -0
- package/dist/all.d.ts.map +1 -1
- package/dist/all.js +24 -22
- package/dist/ui/NativeImagePreview/NativeImagePreview.d.ts +3 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.js +99 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.web.d.ts +3 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.web.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/NativeImagePreview.web.js +56 -0
- package/dist/ui/NativeImagePreview/context.d.ts +14 -0
- package/dist/ui/NativeImagePreview/context.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/context.js +38 -0
- package/dist/ui/NativeImagePreview/index.d.ts +3 -0
- package/dist/ui/NativeImagePreview/index.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/index.js +5 -0
- package/dist/ui/NativeImagePreview/types.d.ts +66 -0
- package/dist/ui/NativeImagePreview/types.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/types.js +2 -0
- package/dist/ui/NativeImagePreview/utils.d.ts +8 -0
- package/dist/ui/NativeImagePreview/utils.d.ts.map +1 -0
- package/dist/ui/NativeImagePreview/utils.js +82 -0
- package/expo-module.config.json +11 -0
- package/ios/GaleriaModule.swift +46 -0
- package/ios/GaleriaView.swift +253 -0
- package/ios/GalleryViewer/GaleriaImageLoader.swift +73 -0
- package/ios/GalleryViewer/GaleriaImageViewInteraction.swift +245 -0
- package/ios/GalleryViewer/GaleriaLayoutSupport.swift +143 -0
- package/ios/GalleryViewer/GaleriaMedia.swift +28 -0
- package/ios/GalleryViewer/GaleriaSourceViewRegistry.swift +80 -0
- package/ios/GalleryViewer/GaleriaVideoPlayerView.swift +437 -0
- package/ios/GalleryViewer/GaleriaViewerConfiguration.swift +51 -0
- package/ios/GalleryViewer/GaleriaViewerController.swift +745 -0
- package/ios/GalleryViewer/GaleriaViewerPageView.swift +623 -0
- package/ios/GalleryViewer/GaleriaViewerTransitionCoordinator.swift +312 -0
- package/package.json +21 -13
- package/src/all.ts +18 -0
- package/src/services/ImagePreviewService/README.md +19 -0
- package/src/ui/NativeImagePreview/NativeImagePreview.tsx +146 -0
- package/src/ui/NativeImagePreview/NativeImagePreview.web.tsx +37 -0
- package/src/ui/NativeImagePreview/README.md +111 -0
- package/src/ui/NativeImagePreview/context.tsx +22 -0
- package/src/ui/NativeImagePreview/index.tsx +18 -0
- package/src/ui/NativeImagePreview/types.ts +92 -0
- package/src/ui/NativeImagePreview/utils.ts +107 -0
- package/zkit-ui.podspec +13 -1
package/dist/all.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.ImagePreviewProvider = exports.ImagePreview = exports.imagePreview = exports.PermissionPurposeDialogProvider = exports.permissionPurposeDialog = exports.LoadingProvider = exports.loading = exports.ActionDialogProvider = void 0;
|
|
3
|
+
exports.ActionDialog = exports.ToastProvider = exports.toast = exports.PickerServiceProvider = exports.pickerService = exports.ZKitCoreProvider = exports.ZKitProvider = exports.useI18n = exports.I18nProvider = exports.resolveSystemBuiltinLocale = exports.resolveBuiltinLocale = exports.DEFAULT_I18N_LOCALE = exports.BUILTIN_I18N_LOCALES = exports.configureZKit = exports.useTheme = exports.ThemeProvider = exports.NativeImagePreview = exports.LinkedScroll = exports.RadioIndicator = exports.RadioGroup = exports.Radio = exports.SliderCaptcha = exports.Switch = exports.DatePicker = exports.AddressCascader = exports.WHEEL_VISIBLE_ITEMS = exports.WHEEL_VIEWPORT_HEIGHT = exports.WHEEL_ITEM_HEIGHT = exports.WHEEL_AREA_VERTICAL_INSET = exports.WHEEL_AREA_HEIGHT = exports.WheelColumn = exports.Picker = exports.BetweenTime = exports.AccordionTrigger = exports.AccordionItem = exports.AccordionIndicator = exports.AccordionContent = exports.Accordion = exports.SheetHeader = exports.SheetFooter = exports.SheetContent = exports.Sheet = exports.TextInputPrimitive = exports.TextInput = exports.Text = exports.CheckboxIndicator = exports.CheckboxGroup = exports.Checkbox = exports.LoadingSpinner = exports.Button = void 0;
|
|
4
|
+
exports.ImagePreviewProvider = exports.ImagePreview = exports.imagePreview = exports.PermissionPurposeDialogProvider = exports.permissionPurposeDialog = exports.LoadingProvider = exports.loading = exports.ActionDialogProvider = exports.actionDialog = void 0;
|
|
5
5
|
var index_1 = require("./ui/Button/index");
|
|
6
6
|
Object.defineProperty(exports, "Button", { enumerable: true, get: function () { return index_1.Button; } });
|
|
7
7
|
var index_2 = require("./ui/LoadingSpinner/index");
|
|
@@ -51,6 +51,8 @@ Object.defineProperty(exports, "RadioGroup", { enumerable: true, get: function (
|
|
|
51
51
|
Object.defineProperty(exports, "RadioIndicator", { enumerable: true, get: function () { return index_15.RadioIndicator; } });
|
|
52
52
|
var index_16 = require("./ui/LinkedScroll/index");
|
|
53
53
|
Object.defineProperty(exports, "LinkedScroll", { enumerable: true, get: function () { return index_16.LinkedScroll; } });
|
|
54
|
+
var index_17 = require("./ui/NativeImagePreview/index");
|
|
55
|
+
Object.defineProperty(exports, "NativeImagePreview", { enumerable: true, get: function () { return index_17.NativeImagePreview; } });
|
|
54
56
|
var ThemeProvider_1 = require("./theme/ThemeProvider");
|
|
55
57
|
Object.defineProperty(exports, "ThemeProvider", { enumerable: true, get: function () { return ThemeProvider_1.ThemeProvider; } });
|
|
56
58
|
var useTheme_1 = require("./theme/useTheme");
|
|
@@ -70,23 +72,23 @@ var ZKitProvider_1 = require("./ZKitProvider");
|
|
|
70
72
|
Object.defineProperty(exports, "ZKitProvider", { enumerable: true, get: function () { return ZKitProvider_1.ZKitProvider; } });
|
|
71
73
|
var ZKitCoreProvider_1 = require("./ZKitCoreProvider");
|
|
72
74
|
Object.defineProperty(exports, "ZKitCoreProvider", { enumerable: true, get: function () { return ZKitCoreProvider_1.ZKitCoreProvider; } });
|
|
73
|
-
var
|
|
74
|
-
Object.defineProperty(exports, "pickerService", { enumerable: true, get: function () { return
|
|
75
|
-
Object.defineProperty(exports, "PickerServiceProvider", { enumerable: true, get: function () { return
|
|
76
|
-
var
|
|
77
|
-
Object.defineProperty(exports, "toast", { enumerable: true, get: function () { return
|
|
78
|
-
Object.defineProperty(exports, "ToastProvider", { enumerable: true, get: function () { return
|
|
79
|
-
var
|
|
80
|
-
Object.defineProperty(exports, "ActionDialog", { enumerable: true, get: function () { return
|
|
81
|
-
Object.defineProperty(exports, "actionDialog", { enumerable: true, get: function () { return
|
|
82
|
-
Object.defineProperty(exports, "ActionDialogProvider", { enumerable: true, get: function () { return
|
|
83
|
-
var
|
|
84
|
-
Object.defineProperty(exports, "loading", { enumerable: true, get: function () { return
|
|
85
|
-
Object.defineProperty(exports, "LoadingProvider", { enumerable: true, get: function () { return
|
|
86
|
-
var
|
|
87
|
-
Object.defineProperty(exports, "permissionPurposeDialog", { enumerable: true, get: function () { return
|
|
88
|
-
Object.defineProperty(exports, "PermissionPurposeDialogProvider", { enumerable: true, get: function () { return
|
|
89
|
-
var
|
|
90
|
-
Object.defineProperty(exports, "imagePreview", { enumerable: true, get: function () { return
|
|
91
|
-
Object.defineProperty(exports, "ImagePreview", { enumerable: true, get: function () { return
|
|
92
|
-
Object.defineProperty(exports, "ImagePreviewProvider", { enumerable: true, get: function () { return
|
|
75
|
+
var index_18 = require("./services/PickerService/index");
|
|
76
|
+
Object.defineProperty(exports, "pickerService", { enumerable: true, get: function () { return index_18.pickerService; } });
|
|
77
|
+
Object.defineProperty(exports, "PickerServiceProvider", { enumerable: true, get: function () { return index_18.PickerServiceProvider; } });
|
|
78
|
+
var index_19 = require("./services/CardToastService/index");
|
|
79
|
+
Object.defineProperty(exports, "toast", { enumerable: true, get: function () { return index_19.toast; } });
|
|
80
|
+
Object.defineProperty(exports, "ToastProvider", { enumerable: true, get: function () { return index_19.ToastProvider; } });
|
|
81
|
+
var index_20 = require("./services/ActionDialogService/index");
|
|
82
|
+
Object.defineProperty(exports, "ActionDialog", { enumerable: true, get: function () { return index_20.ActionDialog; } });
|
|
83
|
+
Object.defineProperty(exports, "actionDialog", { enumerable: true, get: function () { return index_20.actionDialog; } });
|
|
84
|
+
Object.defineProperty(exports, "ActionDialogProvider", { enumerable: true, get: function () { return index_20.ActionDialogProvider; } });
|
|
85
|
+
var index_21 = require("./services/LoadingService/index");
|
|
86
|
+
Object.defineProperty(exports, "loading", { enumerable: true, get: function () { return index_21.loading; } });
|
|
87
|
+
Object.defineProperty(exports, "LoadingProvider", { enumerable: true, get: function () { return index_21.LoadingProvider; } });
|
|
88
|
+
var index_22 = require("./services/PermissionPurposeDialogService/index");
|
|
89
|
+
Object.defineProperty(exports, "permissionPurposeDialog", { enumerable: true, get: function () { return index_22.permissionPurposeDialog; } });
|
|
90
|
+
Object.defineProperty(exports, "PermissionPurposeDialogProvider", { enumerable: true, get: function () { return index_22.PermissionPurposeDialogProvider; } });
|
|
91
|
+
var index_23 = require("./services/ImagePreviewService/index");
|
|
92
|
+
Object.defineProperty(exports, "imagePreview", { enumerable: true, get: function () { return index_23.imagePreview; } });
|
|
93
|
+
Object.defineProperty(exports, "ImagePreview", { enumerable: true, get: function () { return index_23.ImagePreview; } });
|
|
94
|
+
Object.defineProperty(exports, "ImagePreviewProvider", { enumerable: true, get: function () { return index_23.ImagePreviewProvider; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeImagePreview.d.ts","sourceRoot":"","sources":["../../../src/ui/NativeImagePreview/NativeImagePreview.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,2BAA2B,EAI5B,MAAM,SAAS,CAAC;AAgIjB,eAAO,MAAM,kBAAkB,EAEzB,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.NativeImagePreview = void 0;
|
|
37
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
|
+
const expo_1 = require("expo");
|
|
39
|
+
const React = __importStar(require("react"));
|
|
40
|
+
const react_native_1 = require("react-native");
|
|
41
|
+
const react_native_is_edge_to_edge_1 = require("react-native-is-edge-to-edge");
|
|
42
|
+
const context_1 = require("./context");
|
|
43
|
+
const utils_1 = require("./utils");
|
|
44
|
+
const NativePreviewView = (0, expo_1.requireNativeView)('ZKitNativeImagePreview');
|
|
45
|
+
const ANDROID_EDGE_TO_EDGE = react_native_1.Platform.OS === 'android' ? (0, react_native_is_edge_to_edge_1.isEdgeToEdge)() : false;
|
|
46
|
+
function createGalleryId() {
|
|
47
|
+
return `zkit-native-image-preview-${Date.now().toString(36)}-${Math.random()
|
|
48
|
+
.toString(36)
|
|
49
|
+
.slice(2, 10)}`;
|
|
50
|
+
}
|
|
51
|
+
const NativeImagePreviewRoot = React.memo(function NativeImagePreview({ children, colorScheme = 'dark', disabled = false, edgeToEdge = false, items, nativeProps, onChange, }) {
|
|
52
|
+
const systemColorScheme = (0, react_native_1.useColorScheme)();
|
|
53
|
+
const galleryIdRef = React.useRef(null);
|
|
54
|
+
if (galleryIdRef.current == null) {
|
|
55
|
+
galleryIdRef.current = createGalleryId();
|
|
56
|
+
}
|
|
57
|
+
const resolvedItems = React.useMemo(() => (0, utils_1.normalizeNativeImagePreviewItems)(items), [items]);
|
|
58
|
+
const nativeItems = React.useMemo(() => (0, utils_1.toNativePreviewItems)(resolvedItems), [resolvedItems]);
|
|
59
|
+
const resolvedColorScheme = (0, utils_1.resolveNativeImagePreviewColorScheme)(colorScheme, systemColorScheme);
|
|
60
|
+
const contextValue = React.useMemo(() => ({
|
|
61
|
+
galleryId: galleryIdRef.current,
|
|
62
|
+
items: resolvedItems,
|
|
63
|
+
nativeItems,
|
|
64
|
+
colorScheme: resolvedColorScheme,
|
|
65
|
+
disabled,
|
|
66
|
+
edgeToEdge,
|
|
67
|
+
nativeProps,
|
|
68
|
+
onChange,
|
|
69
|
+
}), [disabled, edgeToEdge, nativeItems, nativeProps, onChange, resolvedColorScheme, resolvedItems]);
|
|
70
|
+
return ((0, jsx_runtime_1.jsx)(context_1.NativeImagePreviewContext.Provider, { value: contextValue, children: children }));
|
|
71
|
+
});
|
|
72
|
+
const NativeImagePreviewItem = React.memo(function NativeImagePreviewItem({ children, disabled = false, index, onChange, style, }) {
|
|
73
|
+
var _a;
|
|
74
|
+
const context = React.useContext(context_1.NativeImagePreviewContext);
|
|
75
|
+
const handleIndexChange = React.useCallback((event) => {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
if (!context)
|
|
78
|
+
return;
|
|
79
|
+
const value = event.nativeEvent.currentIndex;
|
|
80
|
+
const meta = {
|
|
81
|
+
reason: 'swipe',
|
|
82
|
+
item: (_a = context.items[value]) !== null && _a !== void 0 ? _a : null,
|
|
83
|
+
nativeEvent: event,
|
|
84
|
+
};
|
|
85
|
+
(_b = context.onChange) === null || _b === void 0 ? void 0 : _b.call(context, value, meta);
|
|
86
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value, meta);
|
|
87
|
+
}, [context, onChange]);
|
|
88
|
+
if (!context || context.disabled || disabled || context.nativeItems.length === 0) {
|
|
89
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.View, { style: style, children: children });
|
|
90
|
+
}
|
|
91
|
+
const resolvedEdgeToEdge = ANDROID_EDGE_TO_EDGE || context.edgeToEdge;
|
|
92
|
+
if (__DEV__ && react_native_1.Platform.OS === 'android') {
|
|
93
|
+
(0, react_native_is_edge_to_edge_1.controlEdgeToEdgeValues)({ edgeToEdge: resolvedEdgeToEdge });
|
|
94
|
+
}
|
|
95
|
+
return ((0, jsx_runtime_1.jsx)(NativePreviewView, { closeIconName: (_a = context.nativeProps) === null || _a === void 0 ? void 0 : _a.iosCloseIconName, edgeToEdge: resolvedEdgeToEdge, galleryId: context.galleryId, index: (0, utils_1.clampPreviewIndex)(index, context.nativeItems.length), items: context.nativeItems, onIndexChange: handleIndexChange, style: style, theme: context.colorScheme, children: children }));
|
|
96
|
+
});
|
|
97
|
+
exports.NativeImagePreview = Object.assign(NativeImagePreviewRoot, {
|
|
98
|
+
Item: NativeImagePreviewItem,
|
|
99
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeImagePreview.web.d.ts","sourceRoot":"","sources":["../../../src/ui/NativeImagePreview/NativeImagePreview.web.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAG5B,MAAM,SAAS,CAAC;AA4BjB,eAAO,MAAM,kBAAkB,EAEzB,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.NativeImagePreview = void 0;
|
|
37
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
|
+
const React = __importStar(require("react"));
|
|
39
|
+
const react_native_1 = require("react-native");
|
|
40
|
+
let didWarnUnsupportedWeb = false;
|
|
41
|
+
function warnUnsupportedWeb() {
|
|
42
|
+
if (!__DEV__ || didWarnUnsupportedWeb)
|
|
43
|
+
return;
|
|
44
|
+
didWarnUnsupportedWeb = true;
|
|
45
|
+
console.warn('[zkit-ui][NativeImagePreview] Native shared-transition preview is only available in iOS and Android native builds.');
|
|
46
|
+
}
|
|
47
|
+
const NativeImagePreviewRoot = React.memo(function NativeImagePreview({ children, }) {
|
|
48
|
+
React.useEffect(warnUnsupportedWeb, []);
|
|
49
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
|
|
50
|
+
});
|
|
51
|
+
const NativeImagePreviewItem = React.memo(function NativeImagePreviewItem({ children, style, }) {
|
|
52
|
+
return (0, jsx_runtime_1.jsx)(react_native_1.View, { style: style, children: children });
|
|
53
|
+
});
|
|
54
|
+
exports.NativeImagePreview = Object.assign(NativeImagePreviewRoot, {
|
|
55
|
+
Item: NativeImagePreviewItem,
|
|
56
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { NativeImagePreviewChangeMeta, NativeImagePreviewNativeItem, NativeImagePreviewNativeProps, NativeImagePreviewResolvedItem, NativeImagePreviewResolvedColorScheme } from './types';
|
|
3
|
+
export type NativeImagePreviewContextValue = {
|
|
4
|
+
galleryId: string;
|
|
5
|
+
items: readonly NativeImagePreviewResolvedItem[];
|
|
6
|
+
nativeItems: readonly NativeImagePreviewNativeItem[];
|
|
7
|
+
colorScheme: NativeImagePreviewResolvedColorScheme;
|
|
8
|
+
disabled: boolean;
|
|
9
|
+
edgeToEdge: boolean;
|
|
10
|
+
nativeProps?: NativeImagePreviewNativeProps;
|
|
11
|
+
onChange?: (value: number, meta: NativeImagePreviewChangeMeta) => void;
|
|
12
|
+
};
|
|
13
|
+
export declare const NativeImagePreviewContext: React.Context<NativeImagePreviewContextValue | null>;
|
|
14
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/ui/NativeImagePreview/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC9B,qCAAqC,EACtC,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACjD,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACrD,WAAW,EAAE,qCAAqC,CAAC;IACnD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,6BAA6B,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,KAAK,IAAI,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,yBAAyB,sDAC4B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.NativeImagePreviewContext = void 0;
|
|
37
|
+
const React = __importStar(require("react"));
|
|
38
|
+
exports.NativeImagePreviewContext = React.createContext(null);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { NativeImagePreview } from './NativeImagePreview';
|
|
2
|
+
export type { NativeImagePreviewChangeEvent, NativeImagePreviewChangeEventPayload, NativeImagePreviewChangeMeta, NativeImagePreviewChangeReason, NativeImagePreviewColorScheme, NativeImagePreviewComponent, NativeImagePreviewItem, NativeImagePreviewItemDescriptor, NativeImagePreviewItemProps, NativeImagePreviewMediaType, NativeImagePreviewNativeProps, NativeImagePreviewProps, NativeImagePreviewResolvedItem, NativeImagePreviewResolvedColorScheme, NativeImagePreviewSource, } from './types';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/NativeImagePreview/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,6BAA6B,EAC7B,oCAAoC,EACpC,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,wBAAwB,GACzB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeImagePreview = void 0;
|
|
4
|
+
var NativeImagePreview_1 = require("./NativeImagePreview");
|
|
5
|
+
Object.defineProperty(exports, "NativeImagePreview", { enumerable: true, get: function () { return NativeImagePreview_1.NativeImagePreview; } });
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { ImageSourcePropType, NativeSyntheticEvent, StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
export type NativeImagePreviewResolvedColorScheme = 'dark' | 'light';
|
|
4
|
+
export type NativeImagePreviewColorScheme = NativeImagePreviewResolvedColorScheme | 'system';
|
|
5
|
+
export type NativeImagePreviewMediaType = 'image' | 'video';
|
|
6
|
+
export type NativeImagePreviewSource = ImageSourcePropType | string;
|
|
7
|
+
export type NativeImagePreviewItemDescriptor = {
|
|
8
|
+
id?: string;
|
|
9
|
+
type?: NativeImagePreviewMediaType;
|
|
10
|
+
url?: string;
|
|
11
|
+
source?: NativeImagePreviewSource;
|
|
12
|
+
poster?: NativeImagePreviewSource;
|
|
13
|
+
width?: number;
|
|
14
|
+
height?: number;
|
|
15
|
+
};
|
|
16
|
+
export type NativeImagePreviewItem = NativeImagePreviewSource | NativeImagePreviewItemDescriptor;
|
|
17
|
+
export type NativeImagePreviewResolvedItem = {
|
|
18
|
+
id: string;
|
|
19
|
+
type: NativeImagePreviewMediaType;
|
|
20
|
+
url: string;
|
|
21
|
+
poster?: string;
|
|
22
|
+
width?: number;
|
|
23
|
+
height?: number;
|
|
24
|
+
raw: NativeImagePreviewItem;
|
|
25
|
+
};
|
|
26
|
+
export type NativeImagePreviewNativeItem = {
|
|
27
|
+
id: string;
|
|
28
|
+
type: NativeImagePreviewMediaType;
|
|
29
|
+
url: string;
|
|
30
|
+
poster?: string;
|
|
31
|
+
width?: number;
|
|
32
|
+
height?: number;
|
|
33
|
+
};
|
|
34
|
+
export type NativeImagePreviewChangeReason = 'swipe';
|
|
35
|
+
export type NativeImagePreviewChangeEventPayload = {
|
|
36
|
+
currentIndex: number;
|
|
37
|
+
};
|
|
38
|
+
export type NativeImagePreviewChangeEvent = NativeSyntheticEvent<NativeImagePreviewChangeEventPayload>;
|
|
39
|
+
export type NativeImagePreviewChangeMeta = {
|
|
40
|
+
reason: NativeImagePreviewChangeReason;
|
|
41
|
+
item: NativeImagePreviewResolvedItem | null;
|
|
42
|
+
nativeEvent?: NativeImagePreviewChangeEvent;
|
|
43
|
+
};
|
|
44
|
+
export type NativeImagePreviewNativeProps = {
|
|
45
|
+
iosCloseIconName?: string;
|
|
46
|
+
};
|
|
47
|
+
export type NativeImagePreviewProps = {
|
|
48
|
+
items: readonly NativeImagePreviewItem[];
|
|
49
|
+
children: React.ReactNode;
|
|
50
|
+
colorScheme?: NativeImagePreviewColorScheme;
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
edgeToEdge?: boolean;
|
|
53
|
+
nativeProps?: NativeImagePreviewNativeProps;
|
|
54
|
+
onChange?: (value: number, meta: NativeImagePreviewChangeMeta) => void;
|
|
55
|
+
};
|
|
56
|
+
export type NativeImagePreviewItemProps = {
|
|
57
|
+
index: number;
|
|
58
|
+
children: React.ReactElement;
|
|
59
|
+
disabled?: boolean;
|
|
60
|
+
style?: StyleProp<ViewStyle>;
|
|
61
|
+
onChange?: (value: number, meta: NativeImagePreviewChangeMeta) => void;
|
|
62
|
+
};
|
|
63
|
+
export type NativeImagePreviewComponent = React.MemoExoticComponent<(props: NativeImagePreviewProps) => React.ReactElement> & {
|
|
64
|
+
Item: React.MemoExoticComponent<(props: NativeImagePreviewItemProps) => React.ReactElement>;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/NativeImagePreview/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ColorSchemeName } from 'react-native';
|
|
2
|
+
import type { NativeImagePreviewColorScheme, NativeImagePreviewItem, NativeImagePreviewNativeItem, NativeImagePreviewResolvedItem, NativeImagePreviewResolvedColorScheme, NativeImagePreviewSource } from './types';
|
|
3
|
+
export declare function resolvePreviewSourceUri(source: NativeImagePreviewSource | undefined): string | undefined;
|
|
4
|
+
export declare function normalizeNativeImagePreviewItems(items: readonly NativeImagePreviewItem[]): NativeImagePreviewResolvedItem[];
|
|
5
|
+
export declare function toNativePreviewItems(items: readonly NativeImagePreviewResolvedItem[]): NativeImagePreviewNativeItem[];
|
|
6
|
+
export declare function clampPreviewIndex(index: number, length: number): number;
|
|
7
|
+
export declare function resolveNativeImagePreviewColorScheme(colorScheme: NativeImagePreviewColorScheme | undefined, systemColorScheme: ColorSchemeName): NativeImagePreviewResolvedColorScheme;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/NativeImagePreview/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,6BAA6B,EAC7B,sBAAsB,EAEtB,4BAA4B,EAC5B,8BAA8B,EAC9B,qCAAqC,EACrC,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAejB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,wBAAwB,GAAG,SAAS,sBAQ7C;AAoCD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,SAAS,sBAAsB,EAAE,oCAKzC;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,8BAA8B,EAAE,GAC/C,4BAA4B,EAAE,CAShC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAG9D;AAED,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,6BAA6B,GAAG,SAAS,EACtD,iBAAiB,EAAE,eAAe,GACjC,qCAAqC,CAIvC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvePreviewSourceUri = resolvePreviewSourceUri;
|
|
4
|
+
exports.normalizeNativeImagePreviewItems = normalizeNativeImagePreviewItems;
|
|
5
|
+
exports.toNativePreviewItems = toNativePreviewItems;
|
|
6
|
+
exports.clampPreviewIndex = clampPreviewIndex;
|
|
7
|
+
exports.resolveNativeImagePreviewColorScheme = resolveNativeImagePreviewColorScheme;
|
|
8
|
+
const react_native_1 = require("react-native");
|
|
9
|
+
function isDescriptor(item) {
|
|
10
|
+
if (item == null || typeof item !== 'object' || Array.isArray(item))
|
|
11
|
+
return false;
|
|
12
|
+
return ('source' in item ||
|
|
13
|
+
'url' in item ||
|
|
14
|
+
'poster' in item ||
|
|
15
|
+
'type' in item ||
|
|
16
|
+
'id' in item);
|
|
17
|
+
}
|
|
18
|
+
function resolvePreviewSourceUri(source) {
|
|
19
|
+
if (source == null)
|
|
20
|
+
return undefined;
|
|
21
|
+
if (typeof source === 'string')
|
|
22
|
+
return source;
|
|
23
|
+
const normalizedSource = Array.isArray(source) ? source[0] : source;
|
|
24
|
+
const resolved = react_native_1.Image.resolveAssetSource(normalizedSource);
|
|
25
|
+
return resolved === null || resolved === void 0 ? void 0 : resolved.uri;
|
|
26
|
+
}
|
|
27
|
+
function normalizePreviewItem(item, index) {
|
|
28
|
+
var _a, _b, _c, _d;
|
|
29
|
+
if (isDescriptor(item)) {
|
|
30
|
+
const type = (_a = item.type) !== null && _a !== void 0 ? _a : 'image';
|
|
31
|
+
const sourceUrl = resolvePreviewSourceUri(item.source);
|
|
32
|
+
const url = (_b = item.url) !== null && _b !== void 0 ? _b : sourceUrl;
|
|
33
|
+
if (!url)
|
|
34
|
+
return null;
|
|
35
|
+
const poster = (_c = resolvePreviewSourceUri(item.poster)) !== null && _c !== void 0 ? _c : (type === 'video' ? sourceUrl : undefined);
|
|
36
|
+
return {
|
|
37
|
+
id: (_d = item.id) !== null && _d !== void 0 ? _d : `${index}`,
|
|
38
|
+
type,
|
|
39
|
+
url,
|
|
40
|
+
poster,
|
|
41
|
+
width: item.width,
|
|
42
|
+
height: item.height,
|
|
43
|
+
raw: item,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const url = resolvePreviewSourceUri(item);
|
|
47
|
+
if (!url)
|
|
48
|
+
return null;
|
|
49
|
+
return {
|
|
50
|
+
id: `${index}`,
|
|
51
|
+
type: 'image',
|
|
52
|
+
url,
|
|
53
|
+
raw: item,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function normalizeNativeImagePreviewItems(items) {
|
|
57
|
+
return items
|
|
58
|
+
.map((item, index) => normalizePreviewItem(item, index))
|
|
59
|
+
.filter((item) => item != null);
|
|
60
|
+
}
|
|
61
|
+
function toNativePreviewItems(items) {
|
|
62
|
+
return items.map(({ id, type, url, poster, width, height }) => ({
|
|
63
|
+
id,
|
|
64
|
+
type,
|
|
65
|
+
url,
|
|
66
|
+
poster,
|
|
67
|
+
width,
|
|
68
|
+
height,
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
function clampPreviewIndex(index, length) {
|
|
72
|
+
if (!Number.isFinite(index))
|
|
73
|
+
return 0;
|
|
74
|
+
return Math.max(0, Math.min(Math.round(index), Math.max(0, length - 1)));
|
|
75
|
+
}
|
|
76
|
+
function resolveNativeImagePreviewColorScheme(colorScheme, systemColorScheme) {
|
|
77
|
+
if (colorScheme === 'light' || colorScheme === 'dark')
|
|
78
|
+
return colorScheme;
|
|
79
|
+
if (colorScheme === 'system')
|
|
80
|
+
return systemColorScheme === 'light' ? 'light' : 'dark';
|
|
81
|
+
return 'dark';
|
|
82
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
|
|
3
|
+
public class GaleriaModule: Module {
|
|
4
|
+
public func definition() -> ModuleDefinition {
|
|
5
|
+
Name("ZKitNativeImagePreview")
|
|
6
|
+
|
|
7
|
+
View(GaleriaView.self) {
|
|
8
|
+
Events("onIndexChange")
|
|
9
|
+
|
|
10
|
+
OnViewDidUpdateProps { (view) in
|
|
11
|
+
view.setupImageView()
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Prop("urls") { (view, urls: [String]?) in
|
|
15
|
+
view.urls = urls
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
Prop("items") { (view, items: [[String: Any]]?) in
|
|
19
|
+
view.items = items
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Prop("index") { (view, index: Int?) in
|
|
23
|
+
view.initialIndex = index
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Prop("galleryId") { (view, galleryId: String?) in
|
|
27
|
+
view.galleryId = galleryId
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
Prop("theme") { (view, theme: Theme?) in
|
|
31
|
+
view.theme = theme ?? .dark
|
|
32
|
+
}
|
|
33
|
+
Prop("closeIconName") { (view, closeIconName: String?) in
|
|
34
|
+
view.closeIconName = closeIconName
|
|
35
|
+
}
|
|
36
|
+
Prop("rightNavItemIconName") { (view, rightNavItemIconName: String) in
|
|
37
|
+
view.rightNavItemIconName = rightNavItemIconName
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
func onIndexChange(index: Int) {
|
|
44
|
+
sendEvent("onIndexChange", ["currentIndex": index])
|
|
45
|
+
}
|
|
46
|
+
}
|