@codeleap/mobile 5.8.21 → 6.0.1

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 (316) hide show
  1. package/dist/Registry.js.map +1 -1
  2. package/dist/components/ActionIcon/index.d.ts +2 -3
  3. package/dist/components/ActionIcon/index.js +5 -11
  4. package/dist/components/ActionIcon/index.js.map +1 -1
  5. package/dist/components/ActivityIndicator/index.d.ts +2 -2
  6. package/dist/components/ActivityIndicator/index.js +2 -2
  7. package/dist/components/ActivityIndicator/index.js.map +1 -1
  8. package/dist/components/ActivityIndicator/types.d.ts +0 -1
  9. package/dist/components/Autocomplete/index.d.ts +2 -3
  10. package/dist/components/Autocomplete/index.js +15 -18
  11. package/dist/components/Autocomplete/index.js.map +1 -1
  12. package/dist/components/Autocomplete/types.d.ts +1 -2
  13. package/dist/components/Avatar/components/Badge.d.ts +1 -2
  14. package/dist/components/Avatar/components/Badge.js +2 -2
  15. package/dist/components/Avatar/components/Badge.js.map +1 -1
  16. package/dist/components/Avatar/components/Content.d.ts +1 -1
  17. package/dist/components/Avatar/components/Content.js +3 -7
  18. package/dist/components/Avatar/components/Content.js.map +1 -1
  19. package/dist/components/Avatar/components/Illustration.d.ts +1 -2
  20. package/dist/components/Avatar/components/Illustration.js +2 -5
  21. package/dist/components/Avatar/components/Illustration.js.map +1 -1
  22. package/dist/components/Avatar/components/OverlayIcon.d.ts +1 -2
  23. package/dist/components/Avatar/components/OverlayIcon.js +2 -3
  24. package/dist/components/Avatar/components/OverlayIcon.js.map +1 -1
  25. package/dist/components/Avatar/components/Text.d.ts +1 -2
  26. package/dist/components/Avatar/components/Text.js +2 -1
  27. package/dist/components/Avatar/components/Text.js.map +1 -1
  28. package/dist/components/Avatar/components/Wrapper.d.ts +1 -2
  29. package/dist/components/Avatar/components/Wrapper.js +3 -6
  30. package/dist/components/Avatar/components/Wrapper.js.map +1 -1
  31. package/dist/components/Avatar/context.d.ts +108 -111
  32. package/dist/components/Avatar/context.js.map +1 -1
  33. package/dist/components/Avatar/index.d.ts +6 -7
  34. package/dist/components/Avatar/index.js +2 -6
  35. package/dist/components/Avatar/index.js.map +1 -1
  36. package/dist/components/AvatarGroup/index.d.ts +2 -3
  37. package/dist/components/AvatarGroup/index.js +2 -4
  38. package/dist/components/AvatarGroup/index.js.map +1 -1
  39. package/dist/components/Backdrop/index.d.ts +2 -3
  40. package/dist/components/Backdrop/index.js +4 -8
  41. package/dist/components/Backdrop/index.js.map +1 -1
  42. package/dist/components/Badge/index.d.ts +2 -3
  43. package/dist/components/Badge/index.js +5 -9
  44. package/dist/components/Badge/index.js.map +1 -1
  45. package/dist/components/Badge/types.d.ts +1 -2
  46. package/dist/components/Button/index.js +3 -9
  47. package/dist/components/Button/index.js.map +1 -1
  48. package/dist/components/Calendar/index.d.ts +2 -3
  49. package/dist/components/Calendar/index.js +5 -4
  50. package/dist/components/Calendar/index.js.map +1 -1
  51. package/dist/components/CalendarInput/index.d.ts +2 -3
  52. package/dist/components/CalendarInput/index.js +11 -12
  53. package/dist/components/CalendarInput/index.js.map +1 -1
  54. package/dist/components/Checkbox/index.d.ts +2 -3
  55. package/dist/components/Checkbox/index.js +9 -15
  56. package/dist/components/Checkbox/index.js.map +1 -1
  57. package/dist/components/DatePickerModal/index.d.ts +2 -3
  58. package/dist/components/DatePickerModal/index.js +13 -21
  59. package/dist/components/DatePickerModal/index.js.map +1 -1
  60. package/dist/components/EmptyPlaceholder/components/Button.d.ts +1 -2
  61. package/dist/components/EmptyPlaceholder/components/Button.js +2 -2
  62. package/dist/components/EmptyPlaceholder/components/Button.js.map +1 -1
  63. package/dist/components/EmptyPlaceholder/components/Content.d.ts +1 -1
  64. package/dist/components/EmptyPlaceholder/components/Content.js +6 -8
  65. package/dist/components/EmptyPlaceholder/components/Content.js.map +1 -1
  66. package/dist/components/EmptyPlaceholder/components/Illustration.d.ts +1 -2
  67. package/dist/components/EmptyPlaceholder/components/Illustration.js +2 -5
  68. package/dist/components/EmptyPlaceholder/components/Illustration.js.map +1 -1
  69. package/dist/components/EmptyPlaceholder/components/Info.d.ts +1 -2
  70. package/dist/components/EmptyPlaceholder/components/Info.js +2 -5
  71. package/dist/components/EmptyPlaceholder/components/Info.js.map +1 -1
  72. package/dist/components/EmptyPlaceholder/components/Loading.d.ts +1 -2
  73. package/dist/components/EmptyPlaceholder/components/Loading.js +3 -4
  74. package/dist/components/EmptyPlaceholder/components/Loading.js.map +1 -1
  75. package/dist/components/EmptyPlaceholder/context.d.ts +4 -5
  76. package/dist/components/EmptyPlaceholder/context.js.map +1 -1
  77. package/dist/components/EmptyPlaceholder/index.d.ts +5 -6
  78. package/dist/components/EmptyPlaceholder/index.js +2 -6
  79. package/dist/components/EmptyPlaceholder/index.js.map +1 -1
  80. package/dist/components/FileInput/index.d.ts +1 -1
  81. package/dist/components/FileInput/index.js +1 -1
  82. package/dist/components/FileInput/index.js.map +1 -1
  83. package/dist/components/Grid/index.js +11 -10
  84. package/dist/components/Grid/index.js.map +1 -1
  85. package/dist/components/Grid/types.d.ts +0 -1
  86. package/dist/components/Icon/index.d.ts +1 -2
  87. package/dist/components/Icon/index.js +3 -5
  88. package/dist/components/Icon/index.js.map +1 -1
  89. package/dist/components/Image/index.js +9 -15
  90. package/dist/components/Image/index.js.map +1 -1
  91. package/dist/components/Image/types.d.ts +1 -2
  92. package/dist/components/ImageView/Spotlight.d.ts +4 -4
  93. package/dist/components/ImageView/Spotlight.js +4 -5
  94. package/dist/components/ImageView/Spotlight.js.map +1 -1
  95. package/dist/components/ImageView/component.d.ts +1 -2
  96. package/dist/components/ImageView/component.js +4 -2
  97. package/dist/components/ImageView/component.js.map +1 -1
  98. package/dist/components/InputBase/index.js +3 -16
  99. package/dist/components/InputBase/index.js.map +1 -1
  100. package/dist/components/InputBase/types.d.ts +3 -4
  101. package/dist/components/InputBase/useInputBase.d.ts +2 -3
  102. package/dist/components/InputBase/useInputBase.js +1 -1
  103. package/dist/components/InputBase/useInputBase.js.map +1 -1
  104. package/dist/components/InputBase/useInputBasePartialStyles.js.map +1 -1
  105. package/dist/components/InputOverlay/index.d.ts +3 -4
  106. package/dist/components/InputOverlay/index.js +6 -21
  107. package/dist/components/InputOverlay/index.js.map +1 -1
  108. package/dist/components/InputOverlay/store.js.map +1 -1
  109. package/dist/components/List/index.js +5 -4
  110. package/dist/components/List/index.js.map +1 -1
  111. package/dist/components/List/types.d.ts +0 -1
  112. package/dist/components/LoadingOverlay/index.d.ts +2 -3
  113. package/dist/components/LoadingOverlay/index.js +5 -7
  114. package/dist/components/LoadingOverlay/index.js.map +1 -1
  115. package/dist/components/Modal/index.d.ts +2 -3
  116. package/dist/components/Modal/index.js +13 -39
  117. package/dist/components/Modal/index.js.map +1 -1
  118. package/dist/components/Modal/types.d.ts +0 -1
  119. package/dist/components/NumberIncrement/index.js +5 -7
  120. package/dist/components/NumberIncrement/index.js.map +1 -1
  121. package/dist/components/NumberIncrement/useNumberIncrement.d.ts +3 -4
  122. package/dist/components/NumberIncrement/useNumberIncrement.js.map +1 -1
  123. package/dist/components/Pager/PagerDots.d.ts +1 -2
  124. package/dist/components/Pager/PagerDots.js +3 -6
  125. package/dist/components/Pager/PagerDots.js.map +1 -1
  126. package/dist/components/Pager/PagerItem.d.ts +1 -2
  127. package/dist/components/Pager/PagerItem.js +3 -2
  128. package/dist/components/Pager/PagerItem.js.map +1 -1
  129. package/dist/components/Pager/index.d.ts +2 -3
  130. package/dist/components/Pager/index.js +9 -16
  131. package/dist/components/Pager/index.js.map +1 -1
  132. package/dist/components/Pager/types.d.ts +2 -2
  133. package/dist/components/PaginationIndicator/index.d.ts +2 -3
  134. package/dist/components/PaginationIndicator/index.js +3 -3
  135. package/dist/components/PaginationIndicator/index.js.map +1 -1
  136. package/dist/components/PaginationIndicator/types.d.ts +2 -3
  137. package/dist/components/PlacesAutocomplete/index.d.ts +6 -7
  138. package/dist/components/PlacesAutocomplete/index.js +11 -17
  139. package/dist/components/PlacesAutocomplete/index.js.map +1 -1
  140. package/dist/components/PlacesAutocomplete/types.d.ts +3 -4
  141. package/dist/components/RadioInput/index.d.ts +2 -3
  142. package/dist/components/RadioInput/index.js +4 -22
  143. package/dist/components/RadioInput/index.js.map +1 -1
  144. package/dist/components/RefreshControl/index.d.ts +2 -3
  145. package/dist/components/RefreshControl/index.js +2 -2
  146. package/dist/components/RefreshControl/index.js.map +1 -1
  147. package/dist/components/Scroll/index.d.ts +2 -3
  148. package/dist/components/Scroll/index.js +9 -12
  149. package/dist/components/Scroll/index.js.map +1 -1
  150. package/dist/components/SearchInput/index.d.ts +7 -4
  151. package/dist/components/SearchInput/index.js +4 -3
  152. package/dist/components/SearchInput/index.js.map +1 -1
  153. package/dist/components/SectionFilters/context.d.ts +3 -24
  154. package/dist/components/SectionFilters/index.d.ts +1 -2
  155. package/dist/components/SectionFilters/index.js +5 -7
  156. package/dist/components/SectionFilters/index.js.map +1 -1
  157. package/dist/components/SectionFilters/useSectionFilters.js.map +1 -1
  158. package/dist/components/Sections/index.d.ts +2 -3
  159. package/dist/components/Sections/index.js +5 -4
  160. package/dist/components/Sections/index.js.map +1 -1
  161. package/dist/components/Sections/types.d.ts +0 -1
  162. package/dist/components/SegmentedControl/Option.d.ts +1 -1
  163. package/dist/components/SegmentedControl/Option.js +7 -13
  164. package/dist/components/SegmentedControl/Option.js.map +1 -1
  165. package/dist/components/SegmentedControl/index.js +16 -26
  166. package/dist/components/SegmentedControl/index.js.map +1 -1
  167. package/dist/components/SegmentedControl/types.d.ts +2 -3
  168. package/dist/components/Select/index.d.ts +2 -3
  169. package/dist/components/Select/index.js +20 -25
  170. package/dist/components/Select/index.js.map +1 -1
  171. package/dist/components/Select/types.d.ts +2 -3
  172. package/dist/components/Slider/index.d.ts +2 -3
  173. package/dist/components/Slider/index.js +23 -38
  174. package/dist/components/Slider/index.js.map +1 -1
  175. package/dist/components/Slider/types.d.ts +0 -1
  176. package/dist/components/SortablePhotos/index.d.ts +2 -3
  177. package/dist/components/SortablePhotos/index.js +7 -18
  178. package/dist/components/SortablePhotos/index.js.map +1 -1
  179. package/dist/components/SortablePhotos/useSortablePhotos.d.ts +0 -2
  180. package/dist/components/SortablePhotos/useSortablePhotos.js.map +1 -1
  181. package/dist/components/Switch/index.d.ts +2 -3
  182. package/dist/components/Switch/index.js +9 -13
  183. package/dist/components/Switch/index.js.map +1 -1
  184. package/dist/components/Tabs/Context.d.ts +2 -3
  185. package/dist/components/Tabs/Context.js +2 -1
  186. package/dist/components/Tabs/Context.js.map +1 -1
  187. package/dist/components/Tabs/Panel.d.ts +1 -1
  188. package/dist/components/Tabs/Panel.js +3 -5
  189. package/dist/components/Tabs/Panel.js.map +1 -1
  190. package/dist/components/Tabs/Tab.d.ts +1 -2
  191. package/dist/components/Tabs/Tab.js +12 -16
  192. package/dist/components/Tabs/Tab.js.map +1 -1
  193. package/dist/components/Tabs/TabList.d.ts +1 -2
  194. package/dist/components/Tabs/TabList.js +2 -1
  195. package/dist/components/Tabs/TabList.js.map +1 -1
  196. package/dist/components/Tabs/index.d.ts +197 -192
  197. package/dist/components/Tabs/index.js +2 -6
  198. package/dist/components/Tabs/index.js.map +1 -1
  199. package/dist/components/Text/index.js +5 -7
  200. package/dist/components/Text/index.js.map +1 -1
  201. package/dist/components/Text/types.d.ts +2 -2
  202. package/dist/components/TextInput/index.js +13 -14
  203. package/dist/components/TextInput/index.js.map +1 -1
  204. package/dist/components/TextInput/types.d.ts +0 -1
  205. package/dist/components/TextInput/useTextInput.d.ts +2 -3
  206. package/dist/components/TimeInput/index.d.ts +2 -3
  207. package/dist/components/TimeInput/index.js +8 -12
  208. package/dist/components/TimeInput/index.js.map +1 -1
  209. package/dist/components/Touchable/index.js +5 -10
  210. package/dist/components/Touchable/index.js.map +1 -1
  211. package/dist/components/Touchable/types.d.ts +0 -1
  212. package/dist/components/View/index.d.ts +4 -6
  213. package/dist/components/View/index.js +4 -3
  214. package/dist/components/View/index.js.map +1 -1
  215. package/dist/components/View/types.d.ts +2 -3
  216. package/dist/index.d.ts +0 -1
  217. package/dist/index.js +0 -1
  218. package/dist/index.js.map +1 -1
  219. package/dist/modules/PressableRipple/ripple.d.ts +2 -2
  220. package/dist/modules/PressableRipple/ripple.js +4 -11
  221. package/dist/modules/PressableRipple/ripple.js.map +1 -1
  222. package/dist/modules/PressableRipple/styles.d.ts +5 -5
  223. package/dist/modules/backgroundTimer.js.map +1 -1
  224. package/dist/modules/reactNavigation.js.map +1 -1
  225. package/dist/modules/scroll.d.ts +3 -3
  226. package/dist/modules/scroll.js +3 -4
  227. package/dist/modules/scroll.js.map +1 -1
  228. package/dist/modules/textInputMask.d.ts +1 -2
  229. package/dist/types/index.d.ts +2 -3
  230. package/dist/types/utility.d.ts +2 -2
  231. package/dist/utils/NotificationManager/index.js.map +1 -1
  232. package/dist/utils/OSAlert.js.map +1 -1
  233. package/dist/utils/StorageManager.js.map +1 -1
  234. package/dist/utils/Subscription.js.map +1 -1
  235. package/dist/utils/hooks.d.ts +3 -3
  236. package/dist/utils/hooks.js.map +1 -1
  237. package/dist/utils/input.d.ts +1 -1
  238. package/dist/utils/input.js.map +1 -1
  239. package/dist/utils/misc.d.ts +0 -1
  240. package/dist/utils/misc.js.map +1 -1
  241. package/dist/utils/useQueryListRefresh.js.map +1 -1
  242. package/package.json +30 -32
  243. package/package.json.bak +14 -16
  244. package/src/components/Autocomplete/types.ts +1 -1
  245. package/src/components/Badge/types.ts +1 -1
  246. package/src/components/FileInput/index.tsx +2 -2
  247. package/src/components/Image/types.ts +1 -1
  248. package/src/components/ImageView/Spotlight.tsx +2 -2
  249. package/src/components/ImageView/component.tsx +1 -0
  250. package/src/components/InputBase/types.ts +3 -3
  251. package/src/components/InputBase/useInputBase.ts +1 -1
  252. package/src/components/Pager/PagerItem.tsx +1 -1
  253. package/src/components/Pager/index.tsx +1 -0
  254. package/src/components/Pager/types.ts +1 -1
  255. package/src/components/PaginationIndicator/types.ts +2 -2
  256. package/src/components/PlacesAutocomplete/types.ts +3 -3
  257. package/src/components/Scroll/index.tsx +1 -1
  258. package/src/components/SearchInput/index.tsx +7 -3
  259. package/src/components/SectionFilters/index.tsx +1 -1
  260. package/src/components/SegmentedControl/types.ts +2 -2
  261. package/src/components/Select/types.ts +2 -2
  262. package/src/components/Slider/index.tsx +1 -0
  263. package/src/components/Text/types.ts +2 -2
  264. package/src/components/View/index.tsx +1 -1
  265. package/src/components/View/types.ts +2 -2
  266. package/src/components/components.ts +1 -1
  267. package/src/index.ts +0 -1
  268. package/src/modules/scroll.tsx +1 -1
  269. package/src/types/index.ts +2 -2
  270. package/src/types/utility.ts +2 -2
  271. package/src/utils/hooks.ts +3 -3
  272. package/dist/deprecated/index.d.ts +0 -2
  273. package/dist/deprecated/index.js +0 -5
  274. package/dist/deprecated/index.js.map +0 -1
  275. package/dist/deprecated/modals/Context.d.ts +0 -48
  276. package/dist/deprecated/modals/Context.js +0 -187
  277. package/dist/deprecated/modals/Context.js.map +0 -1
  278. package/dist/deprecated/modals/components.d.ts +0 -15
  279. package/dist/deprecated/modals/components.js +0 -53
  280. package/dist/deprecated/modals/components.js.map +0 -1
  281. package/dist/deprecated/modals/index.d.ts +0 -10
  282. package/dist/deprecated/modals/index.js +0 -9
  283. package/dist/deprecated/modals/index.js.map +0 -1
  284. package/dist/deprecated/permissions/Context.d.ts +0 -53
  285. package/dist/deprecated/permissions/Context.js +0 -208
  286. package/dist/deprecated/permissions/Context.js.map +0 -1
  287. package/dist/deprecated/permissions/index.d.ts +0 -5
  288. package/dist/deprecated/permissions/index.js +0 -4
  289. package/dist/deprecated/permissions/index.js.map +0 -1
  290. package/dist/deprecated/permissions/package/Manager.d.ts +0 -23
  291. package/dist/deprecated/permissions/package/Manager.js +0 -84
  292. package/dist/deprecated/permissions/package/Manager.js.map +0 -1
  293. package/dist/deprecated/permissions/package/Permission.d.ts +0 -19
  294. package/dist/deprecated/permissions/package/Permission.js +0 -65
  295. package/dist/deprecated/permissions/package/Permission.js.map +0 -1
  296. package/dist/deprecated/permissions/package/index.d.ts +0 -3
  297. package/dist/deprecated/permissions/package/index.js +0 -5
  298. package/dist/deprecated/permissions/package/index.js.map +0 -1
  299. package/dist/deprecated/permissions/package/types.d.ts +0 -31
  300. package/dist/deprecated/permissions/package/types.js +0 -2
  301. package/dist/deprecated/permissions/package/types.js.map +0 -1
  302. package/dist/deprecated/permissions/types.d.ts +0 -16
  303. package/dist/deprecated/permissions/types.js +0 -2
  304. package/dist/deprecated/permissions/types.js.map +0 -1
  305. package/mobile-packages.code-workspace +0 -27
  306. package/src/deprecated/index.ts +0 -2
  307. package/src/deprecated/modals/Context.tsx +0 -259
  308. package/src/deprecated/modals/components.tsx +0 -84
  309. package/src/deprecated/modals/index.ts +0 -13
  310. package/src/deprecated/permissions/Context.tsx +0 -316
  311. package/src/deprecated/permissions/index.ts +0 -16
  312. package/src/deprecated/permissions/package/Manager.ts +0 -123
  313. package/src/deprecated/permissions/package/Permission.ts +0 -79
  314. package/src/deprecated/permissions/package/index.ts +0 -3
  315. package/src/deprecated/permissions/package/types.ts +0 -43
  316. package/src/deprecated/permissions/types.ts +0 -27
@@ -1,5 +0,0 @@
1
- import { usePermissions, Provider, createTypedPermissionHooks, usePermissionModal } from './Context';
2
- import { PermissionConfig, PermissionModalsConfig } from './types';
3
- export * from './package';
4
- export { usePermissions, Provider, usePermissionModal, createTypedPermissionHooks, };
5
- export type { PermissionConfig, PermissionModalsConfig, };
@@ -1,4 +0,0 @@
1
- import { usePermissions, Provider, createTypedPermissionHooks, usePermissionModal } from './Context';
2
- export * from './package';
3
- export { usePermissions, Provider, usePermissionModal, createTypedPermissionHooks, };
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deprecated/permissions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGpG,cAAc,WAAW,CAAA;AAEzB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,0BAA0B,GAC3B,CAAA"}
@@ -1,23 +0,0 @@
1
- import * as PermissionTypes from './types';
2
- export declare class PermissionManager<T extends PermissionTypes.PermissionActionRecord, I extends PermissionTypes.IPermissionManager<T> = PermissionTypes.IPermissionManager<T>> implements PermissionTypes.IPermissionManager<T> {
3
- private _permissions;
4
- subscriberArgs: Parameters<PermissionTypes.ChangeListener<T>>;
5
- private subscribers;
6
- private permSubscribers;
7
- _perms: T;
8
- opts: I;
9
- private params;
10
- permissions: {
11
- [Property in keyof T as Uppercase<string & Property>]: Property;
12
- };
13
- logger: any;
14
- constructor(perms: T, options?: PermissionTypes.PermissionManagerOptions);
15
- get values(): Record<keyof T, PermissionTypes.PermissionState>;
16
- private check;
17
- getMany: I['getMany'];
18
- get: I['get'];
19
- onPermissionChange(name: keyof T, callback: PermissionTypes.PermissionSubscriber): () => void;
20
- onChange(callback: PermissionTypes.ChangeListener<T>): () => void;
21
- getState(): Record<keyof T, PermissionTypes.PermissionState>;
22
- update(): Promise<Record<keyof T, PermissionTypes.PermissionState>>;
23
- }
@@ -1,84 +0,0 @@
1
- import { Permission } from './Permission';
2
- export class PermissionManager {
3
- _permissions;
4
- subscriberArgs;
5
- subscribers;
6
- permSubscribers;
7
- _perms;
8
- opts;
9
- params;
10
- permissions;
11
- logger;
12
- constructor(perms, options) {
13
- this.params = perms;
14
- // @ts-ignore
15
- this._permissions = {};
16
- // @ts-ignore
17
- this.permissions = {};
18
- this.logger = options?.logger;
19
- this.permSubscribers = {};
20
- for (const [permName, actions] of Object.entries(this.params)) {
21
- const name = permName;
22
- this._permissions[name] = new Permission({ ...actions, log: this.logger?.log || (() => null) }, permName);
23
- this.permSubscribers[name] = [];
24
- // @ts-ignore
25
- this.permissions[name.toUpperCase()] = name;
26
- }
27
- this.subscribers = [];
28
- }
29
- get values() {
30
- return this._permissions;
31
- }
32
- async check(name, options) {
33
- const previousStatus = this._permissions[name].status;
34
- await this._permissions[name].check(options);
35
- if (this._permissions[name].status !== previousStatus) {
36
- this.permSubscribers[name].forEach(sub => sub(this._permissions[name]));
37
- this.subscribers.forEach(sub => sub(name, this._permissions[name]));
38
- }
39
- return this._permissions[name];
40
- }
41
- getMany = async (perms, options) => {
42
- const results = [];
43
- for (const p of perms) {
44
- const isArray = Array.isArray(p);
45
- const name = isArray ? p[0] : p;
46
- const opts = isArray ? p[1] : options;
47
- results.push(await this.check(name, opts));
48
- }
49
- return results;
50
- };
51
- // @ts-ignore
52
- get = async (name, options) => {
53
- return await this.check(name, options);
54
- };
55
- onPermissionChange(name, callback) {
56
- const subIdx = this.permSubscribers[name].push(callback) - 1;
57
- return () => {
58
- this.permSubscribers[name].splice(subIdx, 1);
59
- };
60
- }
61
- onChange(callback) {
62
- const subIdx = this.subscribers.push(callback) - 1;
63
- return () => {
64
- this.subscribers.splice(subIdx, 1);
65
- };
66
- }
67
- getState() {
68
- const state = {};
69
- for (const [p, { ask: _ig2, check: _ig1, ...values }] of Object.entries(this._permissions)) {
70
- state[p] = { ...values };
71
- }
72
- return state;
73
- }
74
- async update() {
75
- const res = {};
76
- for (const p of Object.keys(this._permissions)) {
77
- res[p] = await this.check(p, {
78
- ask: false,
79
- });
80
- }
81
- return res;
82
- }
83
- }
84
- //# sourceMappingURL=Manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../../../../src/deprecated/permissions/package/Manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,MAAM,OAAO,iBAAiB;IAIpB,YAAY,CAA6B;IAEjD,cAAc,CAA+C;IAErD,WAAW,CAAqC;IAEhD,eAAe,CAAyD;IAEzE,MAAM,CAAG;IAET,IAAI,CAAG;IAEN,MAAM,CAAG;IAEV,WAAW,CAEjB;IAED,MAAM,CAAA;IAEN,YAAY,KAAQ,EAAE,OAAkD;QACtE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,aAAa;QACb,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,aAAa;QACb,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QAErB,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,EAAiC,CAAA;QAExD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC7D,MAAM,IAAI,GAAG,QAAmB,CAAA;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;YAEzG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YAE/B,aAAa;YACb,IAAI,CAAC,WAAW,CAAE,IAAe,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAA;SACxD;QAED,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAA2E,CAAA;IACzF,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAAa,EAAE,OAAsC;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QAErD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE5C,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,EAAE;YACrD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACpE;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,OAAO,GAAiB,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAE/C,MAAM,OAAO,GAAG,EAAE,CAAA;QAElB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;YAErC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;SAC3C;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,aAAa;IACb,GAAG,GAAa,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACtC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,kBAAkB,CAAC,IAAa,EAAE,QAA8C;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAE5D,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC9C,CAAC,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,QAA2C;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAElD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACpC,CAAC,CAAA;IACH,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,EAAE,CAAA;QAEhB,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC1F,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;SACzB;QAED,OAAO,KAAyD,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,GAAG,GAAG,EAAsD,CAAA;QAClE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC9C,GAAG,CAAC,CAAY,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBACtC,GAAG,EAAE,KAAK;aACX,CAAC,CAAA;SACH;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF"}
@@ -1,19 +0,0 @@
1
- import { AnyFunction } from '@codeleap/types';
2
- import * as PermissionTypes from './types';
3
- export declare class Permission implements PermissionTypes.IPermission {
4
- private actions;
5
- name: string;
6
- status: PermissionTypes.PermissionStatus;
7
- shouldAsk: boolean;
8
- constructor(actions: PermissionTypes.PermissionActions & {
9
- log?: AnyFunction;
10
- }, name?: string);
11
- ask(): Promise<void>;
12
- check(options?: PermissionTypes.CheckOptions): Promise<void>;
13
- get isGranted(): boolean;
14
- get isDenied(): boolean;
15
- get isPending(): boolean;
16
- get isBlocked(): boolean;
17
- get isUnavailable(): boolean;
18
- get isLimited(): boolean;
19
- }
@@ -1,65 +0,0 @@
1
- const SCOPE = 'Permissions';
2
- export class Permission {
3
- actions;
4
- name;
5
- status;
6
- shouldAsk;
7
- constructor(actions, name = '') {
8
- this.actions = actions;
9
- this.name = name;
10
- this.actions = actions;
11
- this.shouldAsk = true;
12
- this.status = 'pending';
13
- }
14
- async ask() {
15
- const newState = await this.actions.onAsk();
16
- this.actions.log(`Request for permission ${this.name} returned`, newState, SCOPE);
17
- this.status = newState;
18
- if (newState === 'blocked') {
19
- this.shouldAsk = false;
20
- }
21
- }
22
- async check(options) {
23
- const _options = {
24
- askOnPending: true,
25
- askOnDenied: false,
26
- ask: true,
27
- ...options,
28
- };
29
- this.status = await this.actions.onCheck();
30
- this.actions.log(`Check for permission ${this.name} returned`, this.status, SCOPE);
31
- if (!_options.ask)
32
- return;
33
- switch (this.status) {
34
- case 'denied':
35
- if (_options.askOnDenied) {
36
- await this.ask();
37
- }
38
- break;
39
- case 'pending':
40
- if (_options.askOnPending) {
41
- await this.ask();
42
- }
43
- break;
44
- }
45
- }
46
- get isGranted() {
47
- return this.status === 'granted';
48
- }
49
- get isDenied() {
50
- return this.status === 'denied';
51
- }
52
- get isPending() {
53
- return this.status === 'pending';
54
- }
55
- get isBlocked() {
56
- return this.status === 'blocked';
57
- }
58
- get isUnavailable() {
59
- return this.status === 'unavailable';
60
- }
61
- get isLimited() {
62
- return this.status === 'limited';
63
- }
64
- }
65
- //# sourceMappingURL=Permission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/deprecated/permissions/package/Permission.ts"],"names":[],"mappings":"AAGA,MAAM,KAAK,GAAG,aAAa,CAAA;AAE3B,MAAM,OAAO,UAAU;IAKD;IAA2E;IAJ/F,MAAM,CAAkC;IAExC,SAAS,CAAS;IAElB,YAAoB,OAAkE,EAAS,OAAO,EAAE;QAApF,YAAO,GAAP,OAAO,CAA2D;QAAS,SAAI,GAAJ,IAAI,CAAK;QACtG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;IAEzB,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,IAAI,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;QACjF,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QAEtB,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;SACvB;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAsC;QAChD,MAAM,QAAQ,GAAiC;YAC7C,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,IAAI;YACT,GAAG,OAAO;SACX,CAAA;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,IAAI,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAClF,IAAI,CAAC,QAAQ,CAAC,GAAG;YAAE,OAAM;QAEzB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,QAAQ;gBACX,IAAI,QAAQ,CAAC,WAAW,EAAE;oBACxB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;iBACjB;gBACD,MAAK;YACP,KAAK,SAAS;gBACZ,IAAI,QAAQ,CAAC,YAAY,EAAE;oBACzB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;iBACjB;gBACD,MAAK;SACR;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAA;IAClC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAA;IACjC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAA;IAClC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAA;IAClC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,KAAK,aAAa,CAAA;IAEtC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAA;IAElC,CAAC;CACF"}
@@ -1,3 +0,0 @@
1
- export * as PermissionTypes from './types';
2
- export * from './Permission';
3
- export * from './Manager';
@@ -1,5 +0,0 @@
1
- import * as PermissionTypes_1 from './types';
2
- export { PermissionTypes_1 as PermissionTypes };
3
- export * from './Permission';
4
- export * from './Manager';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/deprecated/permissions/package/index.ts"],"names":[],"mappings":"mCAAiC,SAAS;8BAA9B,eAAe;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA"}
@@ -1,31 +0,0 @@
1
- import { FunctionType } from '@codeleap/types';
2
- export declare const permissionStatuses: readonly ["unavailable", "pending", "denied", "limited", "granted", "blocked"];
3
- export type PermissionStatus = typeof permissionStatuses[number];
4
- export type PermissionState = {
5
- status: PermissionStatus;
6
- shouldAsk: boolean;
7
- } & Record<`is${Capitalize<PermissionStatus>}`, boolean>;
8
- export type CheckOptions = {
9
- askOnPending?: boolean;
10
- askOnDenied?: boolean;
11
- ask?: boolean;
12
- };
13
- export type IPermission = {
14
- ask(): Promise<void>;
15
- check(options?: CheckOptions): Promise<void>;
16
- } & PermissionState;
17
- export type PermFunction = FunctionType<[], Promise<PermissionStatus>>;
18
- export type PermissionActions = Record<'onAsk' | 'onCheck', PermFunction> & {
19
- init?: 'check' | PermissionState;
20
- };
21
- export type PermissionActionRecord = Record<string, PermissionActions>;
22
- export interface IPermissionManager<T extends PermissionActionRecord> {
23
- getMany(perms: PermissionArray<T>, options?: CheckOptions): Promise<PermissionState[]>;
24
- get(name: keyof T, options?: CheckOptions): Promise<PermissionState>;
25
- }
26
- export type ChangeListener<T> = FunctionType<[keyof T, PermissionState], any>;
27
- export type PermissionSubscriber = FunctionType<[PermissionState], any>;
28
- export type PermissionArray<T> = ([name: keyof T, options: CheckOptions])[] | (keyof T)[];
29
- export type PermissionManagerOptions = {
30
- logger?: any;
31
- };
@@ -1,2 +0,0 @@
1
- export const permissionStatuses = ['unavailable', 'pending', 'denied', 'limited', 'granted', 'blocked'];
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/deprecated/permissions/package/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA"}
@@ -1,16 +0,0 @@
1
- import { ImageProps } from '../../components/Image';
2
- import { PermissionTypes } from './package';
3
- type NonGrantedPermissionTypes = Exclude<PermissionTypes.PermissionStatus, 'granted'>;
4
- export type BasePermissionConfig = {
5
- fullscreenModal?: boolean;
6
- dismissable?: boolean;
7
- title: string;
8
- onAllow: 'openSettings' | 'ask';
9
- description: string[];
10
- icon?: string;
11
- image?: ImageProps['source'];
12
- imageProps?: Omit<ImageProps, 'source'>;
13
- };
14
- export type PermissionConfig = BasePermissionConfig & Partial<Record<NonGrantedPermissionTypes, Partial<BasePermissionConfig>>>;
15
- export type PermissionModalsConfig<PermissionNames extends string | number | symbol> = Partial<Record<PermissionNames, PermissionConfig>>;
16
- export {};
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deprecated/permissions/types.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- {
2
- "folders": [
3
- {
4
- "path": "."
5
- }
6
- ],
7
- "settings": {
8
- "eslint.alwaysShowStatus": true,
9
- "todohighlight.keywords": [
10
- "TODO",
11
- "NOTES",
12
- "NOTE",
13
- "FIXME",
14
- "HACK",
15
- "DISCUSS",
16
- "WTF",
17
- "REFACTOR"
18
- ],
19
- "todohighlight.defaultStyle": {
20
- "color": "red",
21
- "border": "2px solid #aaa",
22
- "backgroundColor": "#faea00",
23
- "fontWeight": "bold",
24
- "borderRadius": "3px"
25
- }
26
- }
27
- }
@@ -1,2 +0,0 @@
1
- export * as Permissions from './permissions'
2
- export * as Modals from './permissions'
@@ -1,259 +0,0 @@
1
- import React from 'react'
2
- import { AnyFunction, TypeGuards } from '@codeleap/types'
3
- import { onUpdate, useState } from '@codeleap/hooks'
4
- import { PortalProvider } from '@gorhom/portal'
5
-
6
- export type AppModalProps = {
7
- visible: boolean
8
- attachments: string[]
9
- attachedTo: string[]
10
- props?: any
11
- }
12
- type TModalState = AppModalProps
13
- type ModalTransitionOptions = {
14
- duration?: number
15
- props?: any
16
- }
17
-
18
- type TModalContext = {
19
- state: Record<string, TModalState>
20
- toggleModal: (name: string, setTo?: boolean, props?: any) => void
21
- setModal: (name: string, to: Partial<TModalState>) => void
22
- currentModal: string
23
- isVisible: (name: string) => boolean
24
- transition: (from: string, to: string, options?: ModalTransitionOptions) => Promise<void>
25
- attach: (modal: string, to: string) => void
26
- remove(name: string): void
27
- transitionDuration: number
28
- }
29
-
30
- const ModalContext = React.createContext({} as TModalContext)
31
-
32
- export function Provider({ children }) {
33
- const [modals, setModals] = useState<TModalContext['state']>({})
34
- const currentModal = Object.keys(modals).find(name => modals[name].visible)
35
-
36
- function isVisible(name: string) {
37
- return !!modals[name]?.visible
38
- }
39
-
40
- const toggleModal: TModalContext['toggleModal'] = (name, set?: boolean, props?: any) => {
41
- const visible = isVisible(name)
42
-
43
- const newVisible = typeof set === 'boolean' ? set : !visible
44
-
45
- setModals((current) => {
46
- const attached = newVisible ? [] : current[name]?.attachments?.map?.(m => [m, { ...current[m], visible: false }])
47
- return {
48
- ...current,
49
- [name]: {
50
- ...current[name],
51
- visible: newVisible,
52
- props,
53
- },
54
- ...Object.fromEntries(attached ?? []),
55
- }
56
-
57
- })
58
- }
59
-
60
- const setModal: TModalContext['setModal'] = (name, to) => {
61
-
62
- setModals((current) => ({
63
- ...current,
64
- [name]: {
65
- ...current[name],
66
- ...to,
67
- },
68
- }))
69
-
70
- }
71
-
72
- // const codeleapCtx = useCodeleapContext()
73
- const defaultDuration = 300
74
- const transition: TModalContext['transition'] = (from, to, options) => {
75
- return new Promise((resolve) => {
76
- setTimeout(() => {
77
-
78
- if (!from) {
79
- toggleModal(to, true, options?.props)
80
- return
81
- }
82
- const _options: ModalTransitionOptions = {
83
- duration: defaultDuration,
84
- ...options,
85
- }
86
-
87
- const toVisible = isVisible(to)
88
- const fromVisible = isVisible(from)
89
-
90
- // if (!fromVisible && !toVisible) {
91
- // toggleModal(to, true, options?.props)
92
- // return
93
- // }
94
-
95
- toggleModal(from, false)
96
- setTimeout(() => {
97
-
98
- toggleModal(to, true, options?.props)
99
-
100
- resolve()
101
- }, _options.duration)
102
-
103
- })
104
- })
105
- }
106
-
107
- function attach(modal: string, to: string) {
108
- setModals((modals) => {
109
- const toModal = modals[to]
110
- const _modal = modals[modal]
111
- if (!toModal || !_modal) return modals
112
-
113
- const isAttached = toModal.attachments.includes(modal) || _modal.attachedTo.includes(to)
114
-
115
- const newVal = { ...modals }
116
- if (isAttached) {
117
-
118
- newVal[to].attachments = newVal[to].attachments.filter(x => x !== modal)
119
- newVal[modal].attachedTo = newVal[modal].attachedTo.filter(x => x !== to)
120
-
121
- } else {
122
-
123
- newVal[to].attachments.push(modal)
124
- newVal[modal].attachedTo.push(to)
125
-
126
- }
127
- return newVal
128
- })
129
- }
130
-
131
- function remove(id: string) {
132
- const newModals = { ...modals }
133
-
134
- delete newModals[id]
135
-
136
- setModals(newModals)
137
- }
138
-
139
- return (
140
- <ModalContext.Provider value={{
141
- state: modals,
142
- toggleModal,
143
- setModal,
144
- currentModal,
145
- attach,
146
- isVisible,
147
- remove,
148
- transition,
149
- transitionDuration: defaultDuration,
150
-
151
- }}>
152
- <PortalProvider>
153
-
154
- {children}
155
- </PortalProvider>
156
- </ModalContext.Provider>
157
- )
158
- }
159
-
160
- export function useModalContext() {
161
- const context = React.useContext(ModalContext)
162
- return context
163
- }
164
-
165
- export type UseModalSequenceOptions = {
166
- onFinish?: AnyFunction
167
- resetOnFinish?: boolean
168
- closeLastOnFinish?: boolean
169
- waitForLastToCloseBeforeCallingFinish?: boolean
170
- transitionOpts?: Partial<Parameters<TModalContext['transition']>[2]>
171
- autoOpen?: boolean
172
- }
173
-
174
- export function useModalSequence(ids: string[], options?: UseModalSequenceOptions) {
175
-
176
- const _options: UseModalSequenceOptions = {
177
- closeLastOnFinish: true,
178
- onFinish: () => { },
179
- resetOnFinish: false,
180
- waitForLastToCloseBeforeCallingFinish: true,
181
- ...options,
182
- }
183
-
184
- const modals = useModalContext()
185
- const [idx, setIdx] = useState(0)
186
-
187
- const state = {
188
- currentId: ids[idx],
189
- nextId: ids[idx + 1],
190
- previousId: ids[idx - 1],
191
- }
192
-
193
- onUpdate(() => {
194
- if (_options.autoOpen && typeof ids?.[0] === 'number') {
195
- if (!modals.isVisible(ids[0])) {
196
- modals.toggleModal(ids[0])
197
- }
198
- }
199
- }, [_options.autoOpen, ids?.[0]])
200
-
201
- function next(props?: any) {
202
- if (idx === ids.length - 1) {
203
- if (_options.closeLastOnFinish) {
204
- modals.transition(ids[idx], null).then(() => {
205
- if (_options.waitForLastToCloseBeforeCallingFinish) {
206
- _options.onFinish()
207
- }
208
- })
209
- }
210
- if (_options.resetOnFinish) {
211
- reset()
212
- }
213
- if (!(_options.waitForLastToCloseBeforeCallingFinish && _options.closeLastOnFinish)) {
214
- _options.onFinish()
215
- }
216
- return
217
- } else {
218
- if (!state.nextId) return
219
- modals.transition(ids[idx], state.nextId, props)
220
- setIdx(i => i + 1)
221
- }
222
- }
223
- function previous(props?: any) {
224
- if (!state.previousId) return
225
-
226
- modals.transition(ids[idx], state.previousId, props)
227
- setIdx(i => i - 1)
228
-
229
- }
230
-
231
- function goto(idxOrId: string | number, props?: any) {
232
- let newId: string = null
233
- if (TypeGuards.isString(idxOrId)) {
234
- newId = idxOrId
235
-
236
- } else {
237
- newId = ids[idxOrId]
238
- }
239
- modals.transition(ids[idx], newId, {
240
- props,
241
- })
242
- setIdx(ids.indexOf(newId))
243
- }
244
- function reset() {
245
- setIdx(0)
246
- }
247
-
248
- return {
249
- reset,
250
- next,
251
- previous,
252
- setModal: setIdx,
253
- goto,
254
- currentIdx: idx,
255
- ...state,
256
-
257
- }
258
-
259
- }
@@ -1,84 +0,0 @@
1
- import React from 'react'
2
- import { usePrevious, onMount, onUpdate } from '@codeleap/hooks'
3
- import { PropsOf } from '@codeleap/types'
4
- import { useModalContext } from './Context'
5
- import { Portal } from '@gorhom/portal'
6
- import { Modal as _Modal } from '../../components/Modal'
7
-
8
- type UseManagedModalArgs = {
9
- id?: string
10
- initialVisible?: boolean
11
- parent?: string
12
- visible?: boolean
13
- toggle?: PropsOf<typeof _Modal>['toggle']
14
- }
15
-
16
- function useManagedModal(props: UseManagedModalArgs) {
17
- const {
18
- initialVisible = false,
19
- parent,
20
- id,
21
- } = props
22
- const modalId = id
23
- const modals = useModalContext()
24
-
25
- onMount(() => {
26
- if (!modalId) return
27
- modals.setModal(modalId, {
28
- attachedTo: [],
29
- attachments: [],
30
- visible: initialVisible,
31
- })
32
- })
33
-
34
- const prevParent = usePrevious(parent)
35
-
36
- onUpdate(() => {
37
- if (!modalId) return
38
- if (!!parent || !!prevParent) {
39
- modals.attach(modalId, parent)
40
- }
41
- }, [parent])
42
-
43
- const visible = modalId ? modals.isVisible(modalId) : props.visible
44
-
45
- const ctxProps = modals?.state?.[modalId]?.props
46
-
47
- const componentProps = {
48
- ...props, ...ctxProps, visible: visible, toggle: () => {
49
- if (modalId) {
50
- modals.toggleModal(modalId)
51
- } else {
52
- props?.toggle?.()
53
- }
54
- },
55
- }
56
-
57
- return componentProps
58
- }
59
- export type ManagedModalProps<T = PropsOf<typeof _Modal>> = Omit<T, 'visible' | 'toggle'> & UseManagedModalArgs & {
60
-
61
- absolute?: boolean
62
-
63
- }
64
- export const Modal: React.FC<ManagedModalProps> = ({
65
- children,
66
- absolute = true,
67
- ...props
68
- }) => {
69
- const componentProps = useManagedModal(props)
70
-
71
- const content = (
72
- <_Modal {...componentProps}>
73
- {children}
74
- </_Modal>
75
- )
76
-
77
- if (absolute) {
78
- return <Portal>
79
- {content}
80
- </Portal>
81
- }
82
-
83
- return content
84
- }