react-native-picture-selector 1.0.0

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.
Files changed (99) hide show
  1. package/README.md +627 -0
  2. package/android/CMakeLists.txt +30 -0
  3. package/android/build.gradle +79 -0
  4. package/android/proguard-rules.pro +21 -0
  5. package/android/src/main/AndroidManifest.xml +39 -0
  6. package/android/src/main/kotlin/com/margelo/pictureselector/GlideEngine.kt +80 -0
  7. package/android/src/main/kotlin/com/margelo/pictureselector/HybridPictureSelector.kt +138 -0
  8. package/android/src/main/kotlin/com/margelo/pictureselector/LubanCompressEngine.kt +58 -0
  9. package/android/src/main/kotlin/com/margelo/pictureselector/MediaAssetMapper.kt +69 -0
  10. package/android/src/main/kotlin/com/margelo/pictureselector/NitroPictureSelectorPackage.kt +52 -0
  11. package/android/src/main/kotlin/com/margelo/pictureselector/PictureSelectorOptionsMapper.kt +105 -0
  12. package/android/src/main/kotlin/com/margelo/pictureselector/UCropEngine.kt +57 -0
  13. package/android/src/main/res/xml/file_paths.xml +8 -0
  14. package/ios/HybridPictureSelector.swift +386 -0
  15. package/ios/NitroPictureSelector.podspec +39 -0
  16. package/lib/commonjs/PictureSelector.js +74 -0
  17. package/lib/commonjs/PictureSelector.js.map +1 -0
  18. package/lib/commonjs/index.js +39 -0
  19. package/lib/commonjs/index.js.map +1 -0
  20. package/lib/commonjs/package.json +1 -0
  21. package/lib/commonjs/specs/PictureSelector.nitro.js +34 -0
  22. package/lib/commonjs/specs/PictureSelector.nitro.js.map +1 -0
  23. package/lib/commonjs/types.js +44 -0
  24. package/lib/commonjs/types.js.map +1 -0
  25. package/lib/commonjs/usePictureSelector.js +122 -0
  26. package/lib/commonjs/usePictureSelector.js.map +1 -0
  27. package/lib/module/PictureSelector.js +71 -0
  28. package/lib/module/PictureSelector.js.map +1 -0
  29. package/lib/module/index.js +6 -0
  30. package/lib/module/index.js.map +1 -0
  31. package/lib/module/package.json +1 -0
  32. package/lib/module/specs/PictureSelector.nitro.js +36 -0
  33. package/lib/module/specs/PictureSelector.nitro.js.map +1 -0
  34. package/lib/module/types.js +29 -0
  35. package/lib/module/types.js.map +1 -0
  36. package/lib/module/usePictureSelector.js +119 -0
  37. package/lib/module/usePictureSelector.js.map +1 -0
  38. package/lib/typescript/PictureSelector.d.ts +23 -0
  39. package/lib/typescript/PictureSelector.d.ts.map +1 -0
  40. package/lib/typescript/index.d.ts +6 -0
  41. package/lib/typescript/index.d.ts.map +1 -0
  42. package/lib/typescript/specs/PictureSelector.nitro.d.ts +96 -0
  43. package/lib/typescript/specs/PictureSelector.nitro.d.ts.map +1 -0
  44. package/lib/typescript/types.d.ts +16 -0
  45. package/lib/typescript/types.d.ts.map +1 -0
  46. package/lib/typescript/usePictureSelector.d.ts +26 -0
  47. package/lib/typescript/usePictureSelector.d.ts.map +1 -0
  48. package/nitro.json +11 -0
  49. package/nitrogen/generated/.gitattributes +1 -0
  50. package/nitrogen/generated/android/NitroPictureSelector+autolinking.cmake +81 -0
  51. package/nitrogen/generated/android/NitroPictureSelector+autolinking.gradle +27 -0
  52. package/nitrogen/generated/android/NitroPictureSelectorOnLoad.cpp +41 -0
  53. package/nitrogen/generated/android/NitroPictureSelectorOnLoad.hpp +34 -0
  54. package/nitrogen/generated/android/c++/JCompressOptions.hpp +69 -0
  55. package/nitrogen/generated/android/c++/JCropOptions.hpp +73 -0
  56. package/nitrogen/generated/android/c++/JHybridHybridPictureSelectorSpec.cpp +125 -0
  57. package/nitrogen/generated/android/c++/JHybridHybridPictureSelectorSpec.hpp +64 -0
  58. package/nitrogen/generated/android/c++/JMediaAsset.hpp +98 -0
  59. package/nitrogen/generated/android/c++/JMediaType.hpp +61 -0
  60. package/nitrogen/generated/android/c++/JPickerTheme.hpp +64 -0
  61. package/nitrogen/generated/android/c++/JPictureSelectorOptions.hpp +121 -0
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/CompressOptions.kt +47 -0
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/CropOptions.kt +50 -0
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/HybridHybridPictureSelectorSpec.kt +59 -0
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/MediaAsset.kt +68 -0
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/MediaType.kt +24 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/NitroPictureSelectorOnLoad.kt +35 -0
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/PickerTheme.kt +25 -0
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/margelo/pictureselector/PictureSelectorOptions.kt +65 -0
  70. package/nitrogen/generated/ios/NitroPictureSelector+autolinking.rb +60 -0
  71. package/nitrogen/generated/ios/NitroPictureSelector-Swift-Cxx-Bridge.cpp +49 -0
  72. package/nitrogen/generated/ios/NitroPictureSelector-Swift-Cxx-Bridge.hpp +270 -0
  73. package/nitrogen/generated/ios/NitroPictureSelector-Swift-Cxx-Umbrella.hpp +65 -0
  74. package/nitrogen/generated/ios/c++/HybridHybridPictureSelectorSpecSwift.cpp +11 -0
  75. package/nitrogen/generated/ios/c++/HybridHybridPictureSelectorSpecSwift.hpp +110 -0
  76. package/nitrogen/generated/ios/swift/CompressOptions.swift +83 -0
  77. package/nitrogen/generated/ios/swift/CropOptions.swift +101 -0
  78. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  79. package/nitrogen/generated/ios/swift/Func_void_std__vector_MediaAsset_.swift +46 -0
  80. package/nitrogen/generated/ios/swift/HybridHybridPictureSelectorSpec.swift +56 -0
  81. package/nitrogen/generated/ios/swift/HybridHybridPictureSelectorSpec_cxx.swift +176 -0
  82. package/nitrogen/generated/ios/swift/MediaAsset.swift +118 -0
  83. package/nitrogen/generated/ios/swift/MediaType.swift +44 -0
  84. package/nitrogen/generated/ios/swift/PickerTheme.swift +48 -0
  85. package/nitrogen/generated/ios/swift/PictureSelectorOptions.swift +182 -0
  86. package/nitrogen/generated/shared/c++/CompressOptions.hpp +95 -0
  87. package/nitrogen/generated/shared/c++/CropOptions.hpp +99 -0
  88. package/nitrogen/generated/shared/c++/HybridHybridPictureSelectorSpec.cpp +22 -0
  89. package/nitrogen/generated/shared/c++/HybridHybridPictureSelectorSpec.hpp +69 -0
  90. package/nitrogen/generated/shared/c++/MediaAsset.hpp +124 -0
  91. package/nitrogen/generated/shared/c++/MediaType.hpp +80 -0
  92. package/nitrogen/generated/shared/c++/PickerTheme.hpp +84 -0
  93. package/nitrogen/generated/shared/c++/PictureSelectorOptions.hpp +132 -0
  94. package/package.json +76 -0
  95. package/src/PictureSelector.ts +72 -0
  96. package/src/index.ts +16 -0
  97. package/src/specs/PictureSelector.nitro.ts +121 -0
  98. package/src/types.ts +38 -0
  99. package/src/usePictureSelector.ts +102 -0
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "MediaType", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _PictureSelector.MediaType;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "PickerTheme", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _PictureSelector.PickerTheme;
16
+ }
17
+ });
18
+ exports.toPickerError = toPickerError;
19
+ var _PictureSelector = require("./specs/PictureSelector.nitro");
20
+ // Re-export spec types for public consumption
21
+
22
+ // ─────────────────────────────────────────────────────────────────────────────
23
+ // Convenience aliases
24
+ // ─────────────────────────────────────────────────────────────────────────────
25
+
26
+ /**
27
+ * Errors thrown by openPicker / openCamera.
28
+ *
29
+ * code === 'CANCELLED' — user dismissed the picker
30
+ * code === 'PERMISSION_DENIED' — runtime permission not granted
31
+ * code === 'UNKNOWN' — any other native error
32
+ */
33
+
34
+ /** Normalise a raw native error to a typed PickerError. */
35
+ function toPickerError(err) {
36
+ const base = err instanceof Error ? err : new Error(String(err));
37
+ const msg = base.message ?? '';
38
+ let code = 'UNKNOWN';
39
+ if (msg.includes('CANCELLED')) code = 'CANCELLED';else if (msg.includes('PERMISSION_DENIED')) code = 'PERMISSION_DENIED';
40
+ return Object.assign(base, {
41
+ code
42
+ });
43
+ }
44
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_PictureSelector","require","toPickerError","err","base","Error","String","msg","message","code","includes","Object","assign"],"sourceRoot":"..\\..\\src","sources":["types.ts"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,IAAAA,gBAAA,GAAAC,OAAA;AARA;;AAUA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACO,SAASC,aAAaA,CAACC,GAAY,EAAe;EACvD,MAAMC,IAAI,GAAGD,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAG,IAAIE,KAAK,CAACC,MAAM,CAACH,GAAG,CAAC,CAAC;EAChE,MAAMI,GAAG,GAAGH,IAAI,CAACI,OAAO,IAAI,EAAE;EAE9B,IAAIC,IAAyB,GAAG,SAAS;EACzC,IAAIF,GAAG,CAACG,QAAQ,CAAC,WAAW,CAAC,EAAED,IAAI,GAAG,WAAW,MAC5C,IAAIF,GAAG,CAACG,QAAQ,CAAC,mBAAmB,CAAC,EAAED,IAAI,GAAG,mBAAmB;EAEtE,OAAOE,MAAM,CAACC,MAAM,CAACR,IAAI,EAAE;IAAEK;EAAK,CAAC,CAAC;AACtC","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.usePictureSelector = usePictureSelector;
7
+ var _react = require("react");
8
+ var _PictureSelector = require("./PictureSelector");
9
+ var _types = require("./types");
10
+ // ─────────────────────────────────────────────────────────────────────────────
11
+ // Hook state shape
12
+ // ─────────────────────────────────────────────────────────────────────────────
13
+
14
+ // ─────────────────────────────────────────────────────────────────────────────
15
+ // Hook
16
+ // ─────────────────────────────────────────────────────────────────────────────
17
+
18
+ /**
19
+ * React hook that manages picker state.
20
+ *
21
+ * @example
22
+ * const { assets, loading, pick, shoot, clear } = usePictureSelector({ maxCount: 9 })
23
+ *
24
+ * <Button onPress={() => pick()} title="Pick Photos" />
25
+ * {assets.map(a => <Image source={{ uri: a.uri }} />)}
26
+ */
27
+ function usePictureSelector(defaultOptions) {
28
+ const [state, setState] = (0, _react.useState)({
29
+ assets: [],
30
+ loading: false,
31
+ error: null
32
+ });
33
+
34
+ // Stable ref to avoid re-creating callbacks when defaultOptions changes
35
+ const defaultOptionsRef = (0, _react.useRef)(defaultOptions);
36
+ defaultOptionsRef.current = defaultOptions;
37
+ const pick = (0, _react.useCallback)(async options => {
38
+ setState(s => ({
39
+ ...s,
40
+ loading: true,
41
+ error: null
42
+ }));
43
+ try {
44
+ const merged = {
45
+ ...defaultOptionsRef.current,
46
+ ...options
47
+ };
48
+ const results = await _PictureSelector.PictureSelector.openPicker(merged);
49
+ setState({
50
+ assets: results,
51
+ loading: false,
52
+ error: null
53
+ });
54
+ return results;
55
+ } catch (err) {
56
+ const pickerErr = (0, _types.toPickerError)(err);
57
+ // Do not surface CANCELLED as an error — just restore loading state
58
+ if (pickerErr.code === 'CANCELLED') {
59
+ setState(s => ({
60
+ ...s,
61
+ loading: false
62
+ }));
63
+ return [];
64
+ }
65
+ setState(s => ({
66
+ ...s,
67
+ loading: false,
68
+ error: pickerErr
69
+ }));
70
+ throw pickerErr;
71
+ }
72
+ }, []);
73
+ const shoot = (0, _react.useCallback)(async options => {
74
+ setState(s => ({
75
+ ...s,
76
+ loading: true,
77
+ error: null
78
+ }));
79
+ try {
80
+ const merged = {
81
+ ...defaultOptionsRef.current,
82
+ ...options
83
+ };
84
+ const results = await _PictureSelector.PictureSelector.openCamera(merged);
85
+ setState({
86
+ assets: results,
87
+ loading: false,
88
+ error: null
89
+ });
90
+ return results;
91
+ } catch (err) {
92
+ const pickerErr = (0, _types.toPickerError)(err);
93
+ if (pickerErr.code === 'CANCELLED') {
94
+ setState(s => ({
95
+ ...s,
96
+ loading: false
97
+ }));
98
+ return [];
99
+ }
100
+ setState(s => ({
101
+ ...s,
102
+ loading: false,
103
+ error: pickerErr
104
+ }));
105
+ throw pickerErr;
106
+ }
107
+ }, []);
108
+ const clear = (0, _react.useCallback)(() => {
109
+ setState({
110
+ assets: [],
111
+ loading: false,
112
+ error: null
113
+ });
114
+ }, []);
115
+ return {
116
+ ...state,
117
+ pick,
118
+ shoot,
119
+ clear
120
+ };
121
+ }
122
+ //# sourceMappingURL=usePictureSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_PictureSelector","_types","usePictureSelector","defaultOptions","state","setState","useState","assets","loading","error","defaultOptionsRef","useRef","current","pick","useCallback","options","s","merged","results","PictureSelector","openPicker","err","pickerErr","toPickerError","code","shoot","openCamera","clear"],"sourceRoot":"..\\..\\src","sources":["usePictureSelector.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAEA;AACA;AACA;;AAoBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,kBAAkBA,CAChCC,cAAuC,EACb;EAC1B,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAuB;IACvDC,MAAM,EAAE,EAAE;IACVC,OAAO,EAAE,KAAK;IACdC,KAAK,EAAE;EACT,CAAC,CAAC;;EAEF;EACA,MAAMC,iBAAiB,GAAG,IAAAC,aAAM,EAACR,cAAc,CAAC;EAChDO,iBAAiB,CAACE,OAAO,GAAGT,cAAc;EAE1C,MAAMU,IAAI,GAAG,IAAAC,kBAAW,EACtB,MAAOC,OAAgC,IAA4B;IACjEV,QAAQ,CAAEW,CAAC,KAAM;MAAE,GAAGA,CAAC;MAAER,OAAO,EAAE,IAAI;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC,CAAC;IACvD,IAAI;MACF,MAAMQ,MAAM,GAAG;QAAE,GAAGP,iBAAiB,CAACE,OAAO;QAAE,GAAGG;MAAQ,CAAC;MAC3D,MAAMG,OAAO,GAAG,MAAMC,gCAAe,CAACC,UAAU,CAACH,MAAM,CAAC;MACxDZ,QAAQ,CAAC;QAAEE,MAAM,EAAEW,OAAO;QAAEV,OAAO,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC1D,OAAOS,OAAO;IAChB,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZ,MAAMC,SAAS,GAAG,IAAAC,oBAAa,EAACF,GAAG,CAAC;MACpC;MACA,IAAIC,SAAS,CAACE,IAAI,KAAK,WAAW,EAAE;QAClCnB,QAAQ,CAAEW,CAAC,KAAM;UAAE,GAAGA,CAAC;UAAER,OAAO,EAAE;QAAM,CAAC,CAAC,CAAC;QAC3C,OAAO,EAAE;MACX;MACAH,QAAQ,CAAEW,CAAC,KAAM;QAAE,GAAGA,CAAC;QAAER,OAAO,EAAE,KAAK;QAAEC,KAAK,EAAEa;MAAU,CAAC,CAAC,CAAC;MAC7D,MAAMA,SAAS;IACjB;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMG,KAAK,GAAG,IAAAX,kBAAW,EACvB,MAAOC,OAAgC,IAA4B;IACjEV,QAAQ,CAAEW,CAAC,KAAM;MAAE,GAAGA,CAAC;MAAER,OAAO,EAAE,IAAI;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC,CAAC;IACvD,IAAI;MACF,MAAMQ,MAAM,GAAG;QAAE,GAAGP,iBAAiB,CAACE,OAAO;QAAE,GAAGG;MAAQ,CAAC;MAC3D,MAAMG,OAAO,GAAG,MAAMC,gCAAe,CAACO,UAAU,CAACT,MAAM,CAAC;MACxDZ,QAAQ,CAAC;QAAEE,MAAM,EAAEW,OAAO;QAAEV,OAAO,EAAE,KAAK;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MAC1D,OAAOS,OAAO;IAChB,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZ,MAAMC,SAAS,GAAG,IAAAC,oBAAa,EAACF,GAAG,CAAC;MACpC,IAAIC,SAAS,CAACE,IAAI,KAAK,WAAW,EAAE;QAClCnB,QAAQ,CAAEW,CAAC,KAAM;UAAE,GAAGA,CAAC;UAAER,OAAO,EAAE;QAAM,CAAC,CAAC,CAAC;QAC3C,OAAO,EAAE;MACX;MACAH,QAAQ,CAAEW,CAAC,KAAM;QAAE,GAAGA,CAAC;QAAER,OAAO,EAAE,KAAK;QAAEC,KAAK,EAAEa;MAAU,CAAC,CAAC,CAAC;MAC7D,MAAMA,SAAS;IACjB;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMK,KAAK,GAAG,IAAAb,kBAAW,EAAC,MAAM;IAC9BT,QAAQ,CAAC;MAAEE,MAAM,EAAE,EAAE;MAAEC,OAAO,EAAE,KAAK;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;EACvD,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAE,GAAGL,KAAK;IAAES,IAAI;IAAEY,KAAK;IAAEE;EAAM,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ import { MediaType, toPickerError } from './types';
5
+
6
+ // ─────────────────────────────────────────────────────────────────────────────
7
+ // Lazy singleton — created once and reused across calls
8
+ // ─────────────────────────────────────────────────────────────────────────────
9
+
10
+ let _native = null;
11
+ function getNative() {
12
+ if (_native == null) {
13
+ _native = NitroModules.createHybridObject('PictureSelector');
14
+ }
15
+ return _native;
16
+ }
17
+
18
+ // ─────────────────────────────────────────────────────────────────────────────
19
+ // Default options
20
+ // ─────────────────────────────────────────────────────────────────────────────
21
+
22
+ const defaultOptions = {
23
+ mediaType: MediaType.IMAGE,
24
+ maxCount: 1,
25
+ enableCamera: true
26
+ };
27
+
28
+ // ─────────────────────────────────────────────────────────────────────────────
29
+ // Static API
30
+ // ─────────────────────────────────────────────────────────────────────────────
31
+
32
+ export const PictureSelector = {
33
+ /**
34
+ * Open the gallery picker.
35
+ *
36
+ * @example
37
+ * const assets = await PictureSelector.openPicker({ maxCount: 9 })
38
+ *
39
+ * @throws PickerError with code CANCELLED when the user dismisses
40
+ * @throws PickerError with code PERMISSION_DENIED on permission failure
41
+ */
42
+ async openPicker(options = {}) {
43
+ try {
44
+ return await getNative().openPicker({
45
+ ...defaultOptions,
46
+ ...options
47
+ });
48
+ } catch (err) {
49
+ throw toPickerError(err);
50
+ }
51
+ },
52
+ /**
53
+ * Open the camera for capture.
54
+ *
55
+ * @example
56
+ * const [asset] = await PictureSelector.openCamera({ mediaType: MediaType.VIDEO })
57
+ *
58
+ * @throws PickerError with code CANCELLED when the user dismisses
59
+ */
60
+ async openCamera(options = {}) {
61
+ try {
62
+ return await getNative().openCamera({
63
+ ...defaultOptions,
64
+ ...options
65
+ });
66
+ } catch (err) {
67
+ throw toPickerError(err);
68
+ }
69
+ }
70
+ };
71
+ //# sourceMappingURL=PictureSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","MediaType","toPickerError","_native","getNative","createHybridObject","defaultOptions","mediaType","IMAGE","maxCount","enableCamera","PictureSelector","openPicker","options","err","openCamera"],"sourceRoot":"..\\..\\src","sources":["PictureSelector.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAGzD,SAASC,SAAS,EAAEC,aAAa,QAAQ,SAAS;;AAElD;AACA;AACA;;AAEA,IAAIC,OAAqC,GAAG,IAAI;AAEhD,SAASC,SAASA,CAAA,EAA0B;EAC1C,IAAID,OAAO,IAAI,IAAI,EAAE;IACnBA,OAAO,GAAGH,YAAY,CAACK,kBAAkB,CACvC,iBACF,CAAC;EACH;EACA,OAAOF,OAAO;AAChB;;AAEA;AACA;AACA;;AAEA,MAAMG,cAAsC,GAAG;EAC7CC,SAAS,EAAEN,SAAS,CAACO,KAAK;EAC1BC,QAAQ,EAAE,CAAC;EACXC,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,OAAO,MAAMC,eAAe,GAAG;EAC7B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,UAAUA,CACdC,OAA+B,GAAG,CAAC,CAAC,EACb;IACvB,IAAI;MACF,OAAO,MAAMT,SAAS,CAAC,CAAC,CAACQ,UAAU,CAAC;QAAE,GAAGN,cAAc;QAAE,GAAGO;MAAQ,CAAC,CAAC;IACxE,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,MAAMZ,aAAa,CAACY,GAAG,CAAC;IAC1B;EACF,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,UAAUA,CACdF,OAA+B,GAAG,CAAC,CAAC,EACb;IACvB,IAAI;MACF,OAAO,MAAMT,SAAS,CAAC,CAAC,CAACW,UAAU,CAAC;QAAE,GAAGT,cAAc;QAAE,GAAGO;MAAQ,CAAC,CAAC;IACxE,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,MAAMZ,aAAa,CAACY,GAAG,CAAC;IAC1B;EACF;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export { PictureSelector } from './PictureSelector';
4
+ export { usePictureSelector } from './usePictureSelector';
5
+ export { MediaType, PickerTheme, toPickerError } from './types';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PictureSelector","usePictureSelector","MediaType","PickerTheme","toPickerError"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,mBAAmB;AACnD,SAASC,kBAAkB,QAAQ,sBAAsB;AAczD,SAASC,SAAS,EAAEC,WAAW,EAAEC,aAAa,QAAQ,SAAS","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ // ─────────────────────────────────────────────────────────────────────────────
4
+ // Enums
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+
7
+ export let MediaType = /*#__PURE__*/function (MediaType) {
8
+ MediaType["IMAGE"] = "image";
9
+ MediaType["VIDEO"] = "video";
10
+ MediaType["ALL"] = "all";
11
+ return MediaType;
12
+ }({});
13
+ export let PickerTheme = /*#__PURE__*/function (PickerTheme) {
14
+ PickerTheme["DEFAULT"] = "default";
15
+ PickerTheme["WECHAT"] = "wechat";
16
+ PickerTheme["WHITE"] = "white";
17
+ PickerTheme["DARK"] = "dark";
18
+ return PickerTheme;
19
+ }({});
20
+
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ // Config sub-structures
23
+ // ─────────────────────────────────────────────────────────────────────────────
24
+
25
+ // ─────────────────────────────────────────────────────────────────────────────
26
+ // Picker options
27
+ // ─────────────────────────────────────────────────────────────────────────────
28
+
29
+ // ─────────────────────────────────────────────────────────────────────────────
30
+ // Result structure
31
+ // ─────────────────────────────────────────────────────────────────────────────
32
+
33
+ // ─────────────────────────────────────────────────────────────────────────────
34
+ // HybridObject — the main bridge
35
+ // ─────────────────────────────────────────────────────────────────────────────
36
+ //# sourceMappingURL=PictureSelector.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MediaType","PickerTheme"],"sourceRoot":"..\\..\\..\\src","sources":["specs/PictureSelector.nitro.ts"],"mappings":";;AAEA;AACA;AACA;;AAEA,WAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAMrB,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;;AAOvB;AACA;AACA;;AA0BA;AACA;AACA;;AAyBA;AACA;AACA;;AA2BA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ // Re-export spec types for public consumption
4
+
5
+ export { MediaType, PickerTheme } from './specs/PictureSelector.nitro';
6
+
7
+ // ─────────────────────────────────────────────────────────────────────────────
8
+ // Convenience aliases
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+
11
+ /**
12
+ * Errors thrown by openPicker / openCamera.
13
+ *
14
+ * code === 'CANCELLED' — user dismissed the picker
15
+ * code === 'PERMISSION_DENIED' — runtime permission not granted
16
+ * code === 'UNKNOWN' — any other native error
17
+ */
18
+
19
+ /** Normalise a raw native error to a typed PickerError. */
20
+ export function toPickerError(err) {
21
+ const base = err instanceof Error ? err : new Error(String(err));
22
+ const msg = base.message ?? '';
23
+ let code = 'UNKNOWN';
24
+ if (msg.includes('CANCELLED')) code = 'CANCELLED';else if (msg.includes('PERMISSION_DENIED')) code = 'PERMISSION_DENIED';
25
+ return Object.assign(base, {
26
+ code
27
+ });
28
+ }
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MediaType","PickerTheme","toPickerError","err","base","Error","String","msg","message","code","includes","Object","assign"],"sourceRoot":"..\\..\\src","sources":["types.ts"],"mappings":";;AAAA;;AAQA,SAASA,SAAS,EAAEC,WAAW,QAAQ,+BAA+B;;AAEtE;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA,OAAO,SAASC,aAAaA,CAACC,GAAY,EAAe;EACvD,MAAMC,IAAI,GAAGD,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAG,IAAIE,KAAK,CAACC,MAAM,CAACH,GAAG,CAAC,CAAC;EAChE,MAAMI,GAAG,GAAGH,IAAI,CAACI,OAAO,IAAI,EAAE;EAE9B,IAAIC,IAAyB,GAAG,SAAS;EACzC,IAAIF,GAAG,CAACG,QAAQ,CAAC,WAAW,CAAC,EAAED,IAAI,GAAG,WAAW,MAC5C,IAAIF,GAAG,CAACG,QAAQ,CAAC,mBAAmB,CAAC,EAAED,IAAI,GAAG,mBAAmB;EAEtE,OAAOE,MAAM,CAACC,MAAM,CAACR,IAAI,EAAE;IAAEK;EAAK,CAAC,CAAC;AACtC","ignoreList":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ import { useState, useCallback, useRef } from 'react';
4
+ import { PictureSelector } from './PictureSelector';
5
+ import { toPickerError } from './types';
6
+
7
+ // ─────────────────────────────────────────────────────────────────────────────
8
+ // Hook state shape
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ // Hook
13
+ // ─────────────────────────────────────────────────────────────────────────────
14
+
15
+ /**
16
+ * React hook that manages picker state.
17
+ *
18
+ * @example
19
+ * const { assets, loading, pick, shoot, clear } = usePictureSelector({ maxCount: 9 })
20
+ *
21
+ * <Button onPress={() => pick()} title="Pick Photos" />
22
+ * {assets.map(a => <Image source={{ uri: a.uri }} />)}
23
+ */
24
+ export function usePictureSelector(defaultOptions) {
25
+ const [state, setState] = useState({
26
+ assets: [],
27
+ loading: false,
28
+ error: null
29
+ });
30
+
31
+ // Stable ref to avoid re-creating callbacks when defaultOptions changes
32
+ const defaultOptionsRef = useRef(defaultOptions);
33
+ defaultOptionsRef.current = defaultOptions;
34
+ const pick = useCallback(async options => {
35
+ setState(s => ({
36
+ ...s,
37
+ loading: true,
38
+ error: null
39
+ }));
40
+ try {
41
+ const merged = {
42
+ ...defaultOptionsRef.current,
43
+ ...options
44
+ };
45
+ const results = await PictureSelector.openPicker(merged);
46
+ setState({
47
+ assets: results,
48
+ loading: false,
49
+ error: null
50
+ });
51
+ return results;
52
+ } catch (err) {
53
+ const pickerErr = toPickerError(err);
54
+ // Do not surface CANCELLED as an error — just restore loading state
55
+ if (pickerErr.code === 'CANCELLED') {
56
+ setState(s => ({
57
+ ...s,
58
+ loading: false
59
+ }));
60
+ return [];
61
+ }
62
+ setState(s => ({
63
+ ...s,
64
+ loading: false,
65
+ error: pickerErr
66
+ }));
67
+ throw pickerErr;
68
+ }
69
+ }, []);
70
+ const shoot = useCallback(async options => {
71
+ setState(s => ({
72
+ ...s,
73
+ loading: true,
74
+ error: null
75
+ }));
76
+ try {
77
+ const merged = {
78
+ ...defaultOptionsRef.current,
79
+ ...options
80
+ };
81
+ const results = await PictureSelector.openCamera(merged);
82
+ setState({
83
+ assets: results,
84
+ loading: false,
85
+ error: null
86
+ });
87
+ return results;
88
+ } catch (err) {
89
+ const pickerErr = toPickerError(err);
90
+ if (pickerErr.code === 'CANCELLED') {
91
+ setState(s => ({
92
+ ...s,
93
+ loading: false
94
+ }));
95
+ return [];
96
+ }
97
+ setState(s => ({
98
+ ...s,
99
+ loading: false,
100
+ error: pickerErr
101
+ }));
102
+ throw pickerErr;
103
+ }
104
+ }, []);
105
+ const clear = useCallback(() => {
106
+ setState({
107
+ assets: [],
108
+ loading: false,
109
+ error: null
110
+ });
111
+ }, []);
112
+ return {
113
+ ...state,
114
+ pick,
115
+ shoot,
116
+ clear
117
+ };
118
+ }
119
+ //# sourceMappingURL=usePictureSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useCallback","useRef","PictureSelector","toPickerError","usePictureSelector","defaultOptions","state","setState","assets","loading","error","defaultOptionsRef","current","pick","options","s","merged","results","openPicker","err","pickerErr","code","shoot","openCamera","clear"],"sourceRoot":"..\\..\\src","sources":["usePictureSelector.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import type { MediaAsset, PictureSelectorOptions } from './types';
2
+ export declare const PictureSelector: {
3
+ /**
4
+ * Open the gallery picker.
5
+ *
6
+ * @example
7
+ * const assets = await PictureSelector.openPicker({ maxCount: 9 })
8
+ *
9
+ * @throws PickerError with code CANCELLED when the user dismisses
10
+ * @throws PickerError with code PERMISSION_DENIED on permission failure
11
+ */
12
+ openPicker(options?: PictureSelectorOptions): Promise<MediaAsset[]>;
13
+ /**
14
+ * Open the camera for capture.
15
+ *
16
+ * @example
17
+ * const [asset] = await PictureSelector.openCamera({ mediaType: MediaType.VIDEO })
18
+ *
19
+ * @throws PickerError with code CANCELLED when the user dismisses
20
+ */
21
+ openCamera(options?: PictureSelectorOptions): Promise<MediaAsset[]>;
22
+ };
23
+ //# sourceMappingURL=PictureSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictureSelector.d.ts","sourceRoot":"","sources":["../../src/PictureSelector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAgCjE,eAAO,MAAM,eAAe;IAC1B;;;;;;;;OAQG;yBAEQ,sBAAsB,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC;IAQxB;;;;;;;OAOG;yBAEQ,sBAAsB,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC;CAOzB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { PictureSelector } from './PictureSelector';
2
+ export { usePictureSelector } from './usePictureSelector';
3
+ export type { PictureSelectorState, PictureSelectorActions, UsePictureSelectorReturn, } from './usePictureSelector';
4
+ export type { MediaAsset, PictureSelectorOptions, CropOptions, CompressOptions, PickerResult, PickerError, } from './types';
5
+ export { MediaType, PickerTheme, toPickerError } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,96 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ export declare enum MediaType {
3
+ IMAGE = "image",
4
+ VIDEO = "video",
5
+ ALL = "all"
6
+ }
7
+ export declare enum PickerTheme {
8
+ DEFAULT = "default",
9
+ WECHAT = "wechat",
10
+ WHITE = "white",
11
+ DARK = "dark"
12
+ }
13
+ export interface CropOptions {
14
+ /** Enable cropping after selection */
15
+ enabled: boolean;
16
+ /** Allow free-form aspect ratio. Default: false */
17
+ freeStyle?: boolean;
18
+ /** Circular crop mask. iOS-only. Default: false */
19
+ circular?: boolean;
20
+ /** Width part of the crop aspect ratio. Default: 1 */
21
+ ratioX?: number;
22
+ /** Height part of the crop aspect ratio. Default: 1 */
23
+ ratioY?: number;
24
+ }
25
+ export interface CompressOptions {
26
+ /** Enable compression */
27
+ enabled: boolean;
28
+ /** JPEG quality, 0.0–1.0. Default: 0.8 */
29
+ quality?: number;
30
+ /** Max output width in pixels. Default: 1920 */
31
+ maxWidth?: number;
32
+ /** Max output height in pixels. Default: 1920 */
33
+ maxHeight?: number;
34
+ }
35
+ export interface PictureSelectorOptions {
36
+ /** Media type to display. Default: IMAGE */
37
+ mediaType?: MediaType;
38
+ /** Maximum number of selectable items. Default: 1 */
39
+ maxCount?: number;
40
+ /** Show camera button inside the picker. Default: true */
41
+ enableCamera?: boolean;
42
+ /** Crop configuration. Only applies when maxCount === 1 */
43
+ crop?: CropOptions;
44
+ /** Compression configuration */
45
+ compress?: CompressOptions;
46
+ /** Max video duration in seconds */
47
+ maxVideoDuration?: number;
48
+ /** Min video duration in seconds. Default: 0 */
49
+ minVideoDuration?: number;
50
+ /** Picker UI theme */
51
+ theme?: PickerTheme;
52
+ /** Accent color as hex string, e.g. "#007AFF". iOS: themeColor; Android: accent */
53
+ themeColor?: string;
54
+ /** Pre-selected asset URIs (file:// URIs) */
55
+ selectedAssets?: string[];
56
+ }
57
+ export interface MediaAsset {
58
+ /** file:// URI of the final file (compressed or original) */
59
+ uri: string;
60
+ /** "image" | "video" */
61
+ type: string;
62
+ /** MIME type, e.g. "image/jpeg", "video/mp4" */
63
+ mimeType: string;
64
+ /** Width in pixels */
65
+ width: number;
66
+ /** Height in pixels */
67
+ height: number;
68
+ /** Duration in milliseconds (0 for images) */
69
+ duration: number;
70
+ /** Original filename with extension */
71
+ fileName: string;
72
+ /** File size in bytes */
73
+ fileSize: number;
74
+ /** file:// URI after crop or edit. Undefined if no edit was applied */
75
+ editedUri?: string;
76
+ /** iOS: true if user tapped "Original" quality button */
77
+ isOriginal?: boolean;
78
+ /** Android: album/bucket name the file belongs to */
79
+ bucketName?: string;
80
+ }
81
+ export interface HybridPictureSelector extends HybridObject<{
82
+ ios: 'swift';
83
+ android: 'kotlin';
84
+ }> {
85
+ /**
86
+ * Open the photo/video gallery picker.
87
+ * Rejects with message "CANCELLED" when the user dismisses without selection.
88
+ */
89
+ openPicker(options: PictureSelectorOptions): Promise<MediaAsset[]>;
90
+ /**
91
+ * Open the device camera for capture.
92
+ * Rejects with message "CANCELLED" when the user dismisses.
93
+ */
94
+ openCamera(options: PictureSelectorOptions): Promise<MediaAsset[]>;
95
+ }
96
+ //# sourceMappingURL=PictureSelector.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictureSelector.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/PictureSelector.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAM9D,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;CACZ;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAMD,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,sBAAsB;IACtB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B;AAMD,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAA;IAChB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAMD,MAAM,WAAW,qBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IAElE;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;CACnE"}
@@ -0,0 +1,16 @@
1
+ export type { MediaAsset, PictureSelectorOptions, CropOptions, CompressOptions, } from './specs/PictureSelector.nitro';
2
+ export { MediaType, PickerTheme } from './specs/PictureSelector.nitro';
3
+ export type PickerResult = import('./specs/PictureSelector.nitro').MediaAsset[];
4
+ /**
5
+ * Errors thrown by openPicker / openCamera.
6
+ *
7
+ * code === 'CANCELLED' — user dismissed the picker
8
+ * code === 'PERMISSION_DENIED' — runtime permission not granted
9
+ * code === 'UNKNOWN' — any other native error
10
+ */
11
+ export interface PickerError extends Error {
12
+ code: 'CANCELLED' | 'PERMISSION_DENIED' | 'UNKNOWN';
13
+ }
14
+ /** Normalise a raw native error to a typed PickerError. */
15
+ export declare function toPickerError(err: unknown): PickerError;
16
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AACA,YAAY,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,eAAe,GAChB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAMtE,MAAM,MAAM,YAAY,GAAG,OAAO,+BAA+B,EAAE,UAAU,EAAE,CAAA;AAE/E;;;;;;GAMG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK;IACxC,IAAI,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAA;CACpD;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CASvD"}