@tradly/asset 1.0.24 → 1.0.25

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.
@@ -171,6 +171,11 @@ var FileUpload = function FileUpload(_ref) {
171
171
  return mimeMap[ext] || "image/jpeg";
172
172
  };
173
173
  var mimeType = pickerResult.mimeType || pickerResult.type || getMimeType(fileName, null);
174
+ console.log("mimeType", {
175
+ fileName: fileName,
176
+ mimeType: mimeType,
177
+ pickerResult: pickerResult
178
+ });
174
179
  return {
175
180
  uri: uri,
176
181
  name: fileName,
@@ -1,24 +1,32 @@
1
1
  import React from "react";
2
- import { View, StyleSheet, Dimensions, ActivityIndicator } from "react-native";
2
+ import { View, StyleSheet, Dimensions, ActivityIndicator, FlatList } from "react-native";
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  var _Dimensions$get = Dimensions.get("window"),
5
5
  SCREEN_WIDTH = _Dimensions$get.width;
6
6
  var NUM_COLUMNS = 3;
7
7
  var ITEM_MARGIN = 4; // Match MediaGallery margin
8
- // Calculate item size accounting for:
8
+ // Calculate item size - must match MediaGallery exactly
9
9
  // - Container padding (md = 12px on each side = 24px total)
10
10
  // - Grid padding (2px on each side = 4px total)
11
- // - Item margins between items (4px * 2 gaps = 8px total)
12
- var CONTAINER_PADDING = 20; // paddingHorizontal md (12 * 2)
11
+ // - Item margins: (NUM_COLUMNS - 1) gaps between items
12
+ // Each gap = 2 * ITEM_MARGIN (left margin of right item + right margin of left item)
13
+ // Total: (3 - 1) * 2 * 4 = 16px
14
+ var CONTAINER_PADDING = 24; // paddingHorizontal md (12 * 2)
13
15
  var GRID_PADDING = 4; // padding 2 on each side (2 * 2)
14
- var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // margins between items (4px * 2 gaps = 8px)
16
+ var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // 4 * 2 * 2 = 16px
15
17
  var ITEM_SIZE = (SCREEN_WIDTH - CONTAINER_PADDING - GRID_PADDING - TOTAL_MARGINS) / NUM_COLUMNS;
16
18
  var ImagesSkeleton = function ImagesSkeleton(_ref) {
17
19
  var _ref$per_page = _ref.per_page,
18
20
  per_page = _ref$per_page === void 0 ? 30 : _ref$per_page;
19
- var skeletonItems = [];
20
- for (var i = 0; i < per_page; i++) {
21
- skeletonItems.push(/*#__PURE__*/_jsx(View, {
21
+ var skeletonData = Array.from({
22
+ length: per_page
23
+ }, function (_, i) {
24
+ return {
25
+ id: i
26
+ };
27
+ });
28
+ var renderItem = function renderItem() {
29
+ return /*#__PURE__*/_jsx(View, {
22
30
  style: [styles.skeletonItem, {
23
31
  width: ITEM_SIZE,
24
32
  height: ITEM_SIZE,
@@ -28,17 +36,21 @@ var ImagesSkeleton = function ImagesSkeleton(_ref) {
28
36
  size: "small",
29
37
  color: "#3B3269"
30
38
  })
31
- }, i));
32
- }
33
- return /*#__PURE__*/_jsx(View, {
34
- style: styles.container,
35
- children: skeletonItems
39
+ });
40
+ };
41
+ return /*#__PURE__*/_jsx(FlatList, {
42
+ data: skeletonData,
43
+ renderItem: renderItem,
44
+ keyExtractor: function keyExtractor(item) {
45
+ return "skeleton-".concat(item.id);
46
+ },
47
+ numColumns: NUM_COLUMNS,
48
+ contentContainerStyle: styles.grid,
49
+ showsVerticalScrollIndicator: false
36
50
  });
37
51
  };
38
52
  var styles = StyleSheet.create({
39
- container: {
40
- flexDirection: "row",
41
- flexWrap: "wrap",
53
+ grid: {
42
54
  padding: 2 // Match MediaGallery grid padding
43
55
  },
44
56
  skeletonItem: {
@@ -176,6 +176,11 @@ var FileUpload = function FileUpload(_ref) {
176
176
  return mimeMap[ext] || "image/jpeg";
177
177
  };
178
178
  var mimeType = pickerResult.mimeType || pickerResult.type || getMimeType(fileName, null);
179
+ console.log("mimeType", {
180
+ fileName: fileName,
181
+ mimeType: mimeType,
182
+ pickerResult: pickerResult
183
+ });
179
184
  return {
180
185
  uri: uri,
181
186
  name: fileName,
@@ -12,20 +12,28 @@ var _Dimensions$get = _reactNative.Dimensions.get("window"),
12
12
  SCREEN_WIDTH = _Dimensions$get.width;
13
13
  var NUM_COLUMNS = 3;
14
14
  var ITEM_MARGIN = 4; // Match MediaGallery margin
15
- // Calculate item size accounting for:
15
+ // Calculate item size - must match MediaGallery exactly
16
16
  // - Container padding (md = 12px on each side = 24px total)
17
17
  // - Grid padding (2px on each side = 4px total)
18
- // - Item margins between items (4px * 2 gaps = 8px total)
19
- var CONTAINER_PADDING = 20; // paddingHorizontal md (12 * 2)
18
+ // - Item margins: (NUM_COLUMNS - 1) gaps between items
19
+ // Each gap = 2 * ITEM_MARGIN (left margin of right item + right margin of left item)
20
+ // Total: (3 - 1) * 2 * 4 = 16px
21
+ var CONTAINER_PADDING = 24; // paddingHorizontal md (12 * 2)
20
22
  var GRID_PADDING = 4; // padding 2 on each side (2 * 2)
21
- var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // margins between items (4px * 2 gaps = 8px)
23
+ var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // 4 * 2 * 2 = 16px
22
24
  var ITEM_SIZE = (SCREEN_WIDTH - CONTAINER_PADDING - GRID_PADDING - TOTAL_MARGINS) / NUM_COLUMNS;
23
25
  var ImagesSkeleton = function ImagesSkeleton(_ref) {
24
26
  var _ref$per_page = _ref.per_page,
25
27
  per_page = _ref$per_page === void 0 ? 30 : _ref$per_page;
26
- var skeletonItems = [];
27
- for (var i = 0; i < per_page; i++) {
28
- skeletonItems.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
28
+ var skeletonData = Array.from({
29
+ length: per_page
30
+ }, function (_, i) {
31
+ return {
32
+ id: i
33
+ };
34
+ });
35
+ var renderItem = function renderItem() {
36
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
29
37
  style: [styles.skeletonItem, {
30
38
  width: ITEM_SIZE,
31
39
  height: ITEM_SIZE,
@@ -35,17 +43,21 @@ var ImagesSkeleton = function ImagesSkeleton(_ref) {
35
43
  size: "small",
36
44
  color: "#3B3269"
37
45
  })
38
- }, i));
39
- }
40
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
41
- style: styles.container,
42
- children: skeletonItems
46
+ });
47
+ };
48
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
49
+ data: skeletonData,
50
+ renderItem: renderItem,
51
+ keyExtractor: function keyExtractor(item) {
52
+ return "skeleton-".concat(item.id);
53
+ },
54
+ numColumns: NUM_COLUMNS,
55
+ contentContainerStyle: styles.grid,
56
+ showsVerticalScrollIndicator: false
43
57
  });
44
58
  };
45
59
  var styles = _reactNative.StyleSheet.create({
46
- container: {
47
- flexDirection: "row",
48
- flexWrap: "wrap",
60
+ grid: {
49
61
  padding: 2 // Match MediaGallery grid padding
50
62
  },
51
63
  skeletonItem: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradly/asset",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "description": "A reusable media gallery component for uploading and selecting images, videos, and files with Tradly authentication",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",