@legendapp/state 3.0.0-alpha.1 → 3.0.0-alpha.3

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 (327) hide show
  1. package/.DS_Store +0 -0
  2. package/CHANGELOG.md +1 -831
  3. package/LICENSE +1 -21
  4. package/README.md +1 -141
  5. package/as/arrayAsRecord.d.mts +5 -0
  6. package/as/arrayAsRecord.d.ts +5 -0
  7. package/as/arrayAsRecord.js +28 -0
  8. package/as/arrayAsRecord.mjs +26 -0
  9. package/as/arrayAsSet.d.mts +5 -0
  10. package/as/arrayAsSet.d.ts +5 -0
  11. package/as/arrayAsSet.js +13 -0
  12. package/as/arrayAsSet.mjs +11 -0
  13. package/as/arrayAsString.d.mts +5 -0
  14. package/as/arrayAsString.d.ts +5 -0
  15. package/as/arrayAsString.js +13 -0
  16. package/as/arrayAsString.mjs +11 -0
  17. package/as/numberAsString.d.mts +5 -0
  18. package/as/numberAsString.d.ts +5 -0
  19. package/as/numberAsString.js +13 -0
  20. package/as/numberAsString.mjs +11 -0
  21. package/as/recordAsArray.d.mts +5 -0
  22. package/as/recordAsArray.d.ts +5 -0
  23. package/as/recordAsArray.js +25 -0
  24. package/as/recordAsArray.mjs +23 -0
  25. package/as/recordAsString.d.mts +5 -0
  26. package/as/recordAsString.d.ts +5 -0
  27. package/as/recordAsString.js +13 -0
  28. package/as/recordAsString.mjs +11 -0
  29. package/as/setAsArray.d.mts +5 -0
  30. package/as/setAsArray.d.ts +5 -0
  31. package/as/setAsArray.js +13 -0
  32. package/as/setAsArray.mjs +11 -0
  33. package/as/setAsString.d.mts +5 -0
  34. package/as/setAsString.d.ts +5 -0
  35. package/as/setAsString.js +13 -0
  36. package/as/setAsString.mjs +11 -0
  37. package/as/stringAsArray.d.mts +5 -0
  38. package/as/stringAsArray.d.ts +5 -0
  39. package/as/stringAsArray.js +13 -0
  40. package/as/stringAsArray.mjs +11 -0
  41. package/as/stringAsNumber.d.mts +5 -0
  42. package/as/stringAsNumber.d.ts +5 -0
  43. package/as/stringAsNumber.js +16 -0
  44. package/as/stringAsNumber.mjs +14 -0
  45. package/as/stringAsRecord.d.mts +5 -0
  46. package/as/stringAsRecord.d.ts +5 -0
  47. package/as/stringAsRecord.js +15 -0
  48. package/as/stringAsRecord.mjs +13 -0
  49. package/as/stringAsSet.d.mts +5 -0
  50. package/as/stringAsSet.d.ts +5 -0
  51. package/as/stringAsSet.js +13 -0
  52. package/as/stringAsSet.mjs +11 -0
  53. package/babel.d.mts +21 -0
  54. package/babel.d.ts +21 -2
  55. package/babel.js +57 -53
  56. package/babel.mjs +65 -0
  57. package/config/enable$GetSet.js +13 -14
  58. package/config/enable$GetSet.mjs +13 -14
  59. package/config/enableReactComponents.d.mts +9 -0
  60. package/config/enableReactComponents.d.ts +4 -2
  61. package/config/enableReactComponents.js +13 -10
  62. package/config/enableReactComponents.mjs +13 -10
  63. package/config/enableReactNativeComponents.d.mts +22 -0
  64. package/config/enableReactNativeComponents.d.ts +6 -4
  65. package/config/enableReactNativeComponents.js +43 -47
  66. package/config/enableReactNativeComponents.mjs +43 -47
  67. package/config/enableReactTracking.d.mts +7 -0
  68. package/config/enableReactTracking.d.ts +3 -2
  69. package/config/enableReactTracking.js +33 -38
  70. package/config/enableReactTracking.mjs +33 -38
  71. package/config/enableReactUse.d.mts +10 -0
  72. package/config/enableReactUse.d.ts +4 -1
  73. package/config/enableReactUse.js +15 -14
  74. package/config/enableReactUse.mjs +15 -14
  75. package/config/{enable$GetSet.d.ts → enable_GetSet.d.mts} +4 -2
  76. package/config/enable_GetSet.d.ts +10 -0
  77. package/config/enable_PeekAssign.d.mts +10 -0
  78. package/config/enable_PeekAssign.d.ts +4 -2
  79. package/config/enable_PeekAssign.js +13 -14
  80. package/config/enable_PeekAssign.mjs +13 -14
  81. package/helpers/pageHash.d.mts +9 -0
  82. package/helpers/pageHash.d.ts +2 -0
  83. package/helpers/pageHash.js +25 -30
  84. package/helpers/pageHash.mjs +25 -30
  85. package/helpers/pageHashParams.d.mts +9 -0
  86. package/helpers/pageHashParams.d.ts +2 -0
  87. package/helpers/pageHashParams.js +34 -37
  88. package/helpers/pageHashParams.mjs +34 -37
  89. package/helpers/time.d.mts +6 -0
  90. package/helpers/time.d.ts +6 -3
  91. package/helpers/time.js +17 -17
  92. package/helpers/time.mjs +17 -17
  93. package/helpers/trackHistory.d.mts +6 -0
  94. package/helpers/trackHistory.d.ts +4 -2
  95. package/helpers/trackHistory.js +13 -16
  96. package/helpers/trackHistory.mjs +13 -16
  97. package/helpers/undoRedo.d.mts +37 -0
  98. package/helpers/undoRedo.d.ts +5 -3
  99. package/helpers/undoRedo.js +59 -94
  100. package/helpers/undoRedo.mjs +59 -94
  101. package/index.d.mts +404 -0
  102. package/index.d.ts +371 -28
  103. package/index.js +2015 -2166
  104. package/index.mjs +2015 -2166
  105. package/package.json +254 -195
  106. package/persist-plugins/async-storage.d.mts +18 -0
  107. package/persist-plugins/async-storage.d.ts +6 -3
  108. package/persist-plugins/async-storage.js +79 -86
  109. package/persist-plugins/async-storage.mjs +79 -86
  110. package/persist-plugins/indexeddb.d.mts +29 -0
  111. package/persist-plugins/indexeddb.d.ts +6 -3
  112. package/persist-plugins/indexeddb.js +331 -352
  113. package/persist-plugins/indexeddb.mjs +331 -352
  114. package/persist-plugins/local-storage.d.mts +23 -0
  115. package/persist-plugins/local-storage.d.ts +8 -5
  116. package/persist-plugins/local-storage.js +74 -76
  117. package/persist-plugins/local-storage.mjs +74 -76
  118. package/persist-plugins/mmkv.d.mts +18 -0
  119. package/persist-plugins/mmkv.d.ts +6 -3
  120. package/persist-plugins/mmkv.js +82 -86
  121. package/persist-plugins/mmkv.mjs +82 -86
  122. package/react-hooks/createObservableHook.d.mts +5 -0
  123. package/react-hooks/createObservableHook.d.ts +4 -1
  124. package/react-hooks/createObservableHook.js +29 -30
  125. package/react-hooks/createObservableHook.mjs +25 -30
  126. package/react-hooks/useHover.d.mts +5 -0
  127. package/react-hooks/useHover.d.ts +5 -3
  128. package/react-hooks/useHover.js +29 -29
  129. package/react-hooks/useHover.mjs +29 -29
  130. package/react-hooks/useMeasure.d.mts +9 -0
  131. package/react-hooks/useMeasure.d.ts +5 -2
  132. package/react-hooks/useMeasure.js +30 -32
  133. package/react-hooks/useMeasure.mjs +30 -32
  134. package/react-hooks/useObservableNextRouter.d.mts +35 -0
  135. package/react-hooks/useObservableNextRouter.d.ts +9 -7
  136. package/react-hooks/useObservableNextRouter.js +64 -77
  137. package/react-hooks/useObservableNextRouter.mjs +60 -77
  138. package/react.d.mts +157 -0
  139. package/react.d.ts +157 -21
  140. package/react.js +458 -749
  141. package/react.mjs +457 -752
  142. package/sync-plugins/crud.d.mts +54 -0
  143. package/sync-plugins/crud.d.ts +12 -10
  144. package/sync-plugins/crud.js +253 -270
  145. package/sync-plugins/crud.mjs +253 -270
  146. package/sync-plugins/fetch.d.mts +21 -0
  147. package/sync-plugins/fetch.d.ts +7 -4
  148. package/sync-plugins/fetch.js +50 -37
  149. package/sync-plugins/fetch.mjs +50 -37
  150. package/sync-plugins/keel.d.mts +108 -0
  151. package/sync-plugins/keel.d.ts +17 -15
  152. package/sync-plugins/keel.js +229 -462
  153. package/sync-plugins/keel.mjs +227 -464
  154. package/sync-plugins/supabase.d.mts +39 -0
  155. package/sync-plugins/supabase.d.ts +16 -14
  156. package/sync-plugins/supabase.js +128 -128
  157. package/sync-plugins/supabase.mjs +128 -128
  158. package/sync-plugins/tanstack-query.d.mts +14 -0
  159. package/sync-plugins/tanstack-query.d.ts +7 -4
  160. package/sync-plugins/tanstack-query.js +51 -57
  161. package/sync-plugins/tanstack-query.mjs +51 -57
  162. package/sync-plugins/tanstack-react-query.d.mts +8 -0
  163. package/sync-plugins/tanstack-react-query.d.ts +6 -1
  164. package/sync-plugins/tanstack-react-query.js +2 -2
  165. package/sync-plugins/tanstack-react-query.mjs +2 -2
  166. package/sync.d.mts +351 -0
  167. package/sync.d.ts +349 -9
  168. package/sync.js +910 -964
  169. package/sync.mjs +920 -974
  170. package/trace.d.mts +9 -0
  171. package/trace.d.ts +9 -4
  172. package/trace.js +72 -62
  173. package/trace.mjs +72 -62
  174. package/types/babel.d.ts +1 -12
  175. package/babel.js.map +0 -1
  176. package/config/enable$GetSet.js.map +0 -1
  177. package/config/enable$GetSet.mjs.map +0 -1
  178. package/config/enableReactComponents.js.map +0 -1
  179. package/config/enableReactComponents.mjs.map +0 -1
  180. package/config/enableReactNativeComponents.js.map +0 -1
  181. package/config/enableReactNativeComponents.mjs.map +0 -1
  182. package/config/enableReactTracking.js.map +0 -1
  183. package/config/enableReactTracking.mjs.map +0 -1
  184. package/config/enableReactUse.js.map +0 -1
  185. package/config/enableReactUse.mjs.map +0 -1
  186. package/config/enable_PeekAssign.js.map +0 -1
  187. package/config/enable_PeekAssign.mjs.map +0 -1
  188. package/helpers/pageHash.js.map +0 -1
  189. package/helpers/pageHash.mjs.map +0 -1
  190. package/helpers/pageHashParams.js.map +0 -1
  191. package/helpers/pageHashParams.mjs.map +0 -1
  192. package/helpers/time.js.map +0 -1
  193. package/helpers/time.mjs.map +0 -1
  194. package/helpers/trackHistory.js.map +0 -1
  195. package/helpers/trackHistory.mjs.map +0 -1
  196. package/helpers/undoRedo.js.map +0 -1
  197. package/helpers/undoRedo.mjs.map +0 -1
  198. package/history.d.ts +0 -1
  199. package/history.js +0 -24
  200. package/history.js.map +0 -1
  201. package/history.mjs +0 -22
  202. package/history.mjs.map +0 -1
  203. package/index.js.map +0 -1
  204. package/index.mjs.map +0 -1
  205. package/persist-plugins/async-storage.js.map +0 -1
  206. package/persist-plugins/async-storage.mjs.map +0 -1
  207. package/persist-plugins/indexeddb.js.map +0 -1
  208. package/persist-plugins/indexeddb.mjs.map +0 -1
  209. package/persist-plugins/local-storage.js.map +0 -1
  210. package/persist-plugins/local-storage.mjs.map +0 -1
  211. package/persist-plugins/mmkv.js.map +0 -1
  212. package/persist-plugins/mmkv.mjs.map +0 -1
  213. package/react-hooks/createObservableHook.js.map +0 -1
  214. package/react-hooks/createObservableHook.mjs.map +0 -1
  215. package/react-hooks/useHover.js.map +0 -1
  216. package/react-hooks/useHover.mjs.map +0 -1
  217. package/react-hooks/useMeasure.js.map +0 -1
  218. package/react-hooks/useMeasure.mjs.map +0 -1
  219. package/react-hooks/useObservableNextRouter.js.map +0 -1
  220. package/react-hooks/useObservableNextRouter.mjs.map +0 -1
  221. package/react.js.map +0 -1
  222. package/react.mjs.map +0 -1
  223. package/src/ObservableObject.ts +0 -1350
  224. package/src/ObservablePrimitive.ts +0 -62
  225. package/src/babel/index.ts +0 -83
  226. package/src/batching.ts +0 -357
  227. package/src/computed.ts +0 -18
  228. package/src/config/enable$GetSet.ts +0 -30
  229. package/src/config/enableReactComponents.ts +0 -26
  230. package/src/config/enableReactNativeComponents.ts +0 -102
  231. package/src/config/enableReactTracking.ts +0 -62
  232. package/src/config/enableReactUse.ts +0 -32
  233. package/src/config/enable_PeekAssign.ts +0 -31
  234. package/src/config.ts +0 -47
  235. package/src/createObservable.ts +0 -47
  236. package/src/event.ts +0 -26
  237. package/src/globals.ts +0 -235
  238. package/src/helpers/pageHash.ts +0 -41
  239. package/src/helpers/pageHashParams.ts +0 -55
  240. package/src/helpers/time.ts +0 -30
  241. package/src/helpers/trackHistory.ts +0 -29
  242. package/src/helpers/undoRedo.ts +0 -111
  243. package/src/helpers.ts +0 -231
  244. package/src/is.ts +0 -63
  245. package/src/linked.ts +0 -17
  246. package/src/observable.ts +0 -32
  247. package/src/observableInterfaces.ts +0 -151
  248. package/src/observableTypes.ts +0 -232
  249. package/src/observe.ts +0 -89
  250. package/src/old-plugins/firebase.ts +0 -1053
  251. package/src/onChange.ts +0 -146
  252. package/src/persist/configureObservablePersistence.ts +0 -7
  253. package/src/persist/fieldTransformer.ts +0 -149
  254. package/src/persist/observablePersistRemoteFunctionsAdapter.ts +0 -39
  255. package/src/persist/persistObservable.ts +0 -1034
  256. package/src/persist-plugins/async-storage.ts +0 -99
  257. package/src/persist-plugins/indexeddb.ts +0 -439
  258. package/src/persist-plugins/local-storage.ts +0 -86
  259. package/src/persist-plugins/mmkv.ts +0 -91
  260. package/src/proxy.ts +0 -28
  261. package/src/react/Computed.tsx +0 -8
  262. package/src/react/For.tsx +0 -116
  263. package/src/react/Memo.tsx +0 -4
  264. package/src/react/Reactive.tsx +0 -53
  265. package/src/react/Show.tsx +0 -33
  266. package/src/react/Switch.tsx +0 -43
  267. package/src/react/react-globals.ts +0 -3
  268. package/src/react/reactInterfaces.ts +0 -32
  269. package/src/react/reactive-observer.tsx +0 -210
  270. package/src/react/useComputed.ts +0 -36
  271. package/src/react/useEffectOnce.ts +0 -41
  272. package/src/react/useIsMounted.ts +0 -16
  273. package/src/react/useMount.ts +0 -15
  274. package/src/react/useObservable.ts +0 -24
  275. package/src/react/useObservableReducer.ts +0 -52
  276. package/src/react/useObservableState.ts +0 -30
  277. package/src/react/useObserve.ts +0 -54
  278. package/src/react/useObserveEffect.ts +0 -40
  279. package/src/react/usePauseProvider.tsx +0 -16
  280. package/src/react/useSelector.ts +0 -167
  281. package/src/react/useUnmount.ts +0 -8
  282. package/src/react/useWhen.ts +0 -9
  283. package/src/react-hooks/createObservableHook.ts +0 -53
  284. package/src/react-hooks/useHover.ts +0 -40
  285. package/src/react-hooks/useMeasure.ts +0 -48
  286. package/src/react-hooks/useObservableNextRouter.ts +0 -137
  287. package/src/retry.ts +0 -71
  288. package/src/setupTracking.ts +0 -26
  289. package/src/sync/activateSyncedNode.ts +0 -128
  290. package/src/sync/configureObservableSync.ts +0 -7
  291. package/src/sync/persistTypes.ts +0 -216
  292. package/src/sync/syncHelpers.ts +0 -180
  293. package/src/sync/syncObservable.ts +0 -1056
  294. package/src/sync/syncObservableAdapter.ts +0 -31
  295. package/src/sync/syncTypes.ts +0 -189
  296. package/src/sync/synced.ts +0 -21
  297. package/src/sync-plugins/crud.ts +0 -412
  298. package/src/sync-plugins/fetch.ts +0 -80
  299. package/src/sync-plugins/keel.ts +0 -495
  300. package/src/sync-plugins/supabase.ts +0 -249
  301. package/src/sync-plugins/tanstack-query.ts +0 -113
  302. package/src/sync-plugins/tanstack-react-query.ts +0 -12
  303. package/src/trace/traceHelpers.ts +0 -11
  304. package/src/trace/useTraceListeners.ts +0 -34
  305. package/src/trace/useTraceUpdates.ts +0 -24
  306. package/src/trace/useVerifyNotTracking.ts +0 -33
  307. package/src/trace/useVerifyOneRender.ts +0 -10
  308. package/src/trackSelector.ts +0 -52
  309. package/src/tracking.ts +0 -43
  310. package/src/types/babel.d.ts +0 -12
  311. package/src/when.ts +0 -75
  312. package/sync-plugins/crud.js.map +0 -1
  313. package/sync-plugins/crud.mjs.map +0 -1
  314. package/sync-plugins/fetch.js.map +0 -1
  315. package/sync-plugins/fetch.mjs.map +0 -1
  316. package/sync-plugins/keel.js.map +0 -1
  317. package/sync-plugins/keel.mjs.map +0 -1
  318. package/sync-plugins/supabase.js.map +0 -1
  319. package/sync-plugins/supabase.mjs.map +0 -1
  320. package/sync-plugins/tanstack-query.js.map +0 -1
  321. package/sync-plugins/tanstack-query.mjs.map +0 -1
  322. package/sync-plugins/tanstack-react-query.js.map +0 -1
  323. package/sync-plugins/tanstack-react-query.mjs.map +0 -1
  324. package/sync.js.map +0 -1
  325. package/sync.mjs.map +0 -1
  326. package/trace.js.map +0 -1
  327. package/trace.mjs.map +0 -1
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var state = require('@legendapp/state');
4
+
5
+ // src/as/stringAsRecord.ts
6
+ function stringAsRecord(str$) {
7
+ return state.linked({
8
+ get: () => {
9
+ return JSON.parse((str$ == null ? void 0 : str$.get()) || "{}");
10
+ },
11
+ set: ({ value }) => str$ == null ? void 0 : str$.set(JSON.stringify(value))
12
+ });
13
+ }
14
+
15
+ exports.stringAsRecord = stringAsRecord;
@@ -0,0 +1,13 @@
1
+ import { linked } from '@legendapp/state';
2
+
3
+ // src/as/stringAsRecord.ts
4
+ function stringAsRecord(str$) {
5
+ return linked({
6
+ get: () => {
7
+ return JSON.parse((str$ == null ? void 0 : str$.get()) || "{}");
8
+ },
9
+ set: ({ value }) => str$ == null ? void 0 : str$.set(JSON.stringify(value))
10
+ });
11
+ }
12
+
13
+ export { stringAsRecord };
@@ -0,0 +1,5 @@
1
+ import { ObservableParam, Linked } from '@legendapp/state';
2
+
3
+ declare function stringAsSet<T>(str$: ObservableParam<string>): Linked<Set<T>>;
4
+
5
+ export { stringAsSet };
@@ -0,0 +1,5 @@
1
+ import { ObservableParam, Linked } from '@legendapp/state';
2
+
3
+ declare function stringAsSet<T>(str$: ObservableParam<string>): Linked<Set<T>>;
4
+
5
+ export { stringAsSet };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var state = require('@legendapp/state');
4
+
5
+ // src/as/stringAsSet.ts
6
+ function stringAsSet(str$) {
7
+ return state.linked({
8
+ get: () => new Set(JSON.parse((str$ == null ? void 0 : str$.get()) || "[]")),
9
+ set: ({ value }) => str$ == null ? void 0 : str$.set(JSON.stringify(Array.from(value)))
10
+ });
11
+ }
12
+
13
+ exports.stringAsSet = stringAsSet;
@@ -0,0 +1,11 @@
1
+ import { linked } from '@legendapp/state';
2
+
3
+ // src/as/stringAsSet.ts
4
+ function stringAsSet(str$) {
5
+ return linked({
6
+ get: () => new Set(JSON.parse((str$ == null ? void 0 : str$.get()) || "[]")),
7
+ set: ({ value }) => str$ == null ? void 0 : str$.set(JSON.stringify(Array.from(value)))
8
+ });
9
+ }
10
+
11
+ export { stringAsSet };
package/babel.d.mts ADDED
@@ -0,0 +1,21 @@
1
+ declare function export_default(): {
2
+ visitor: {
3
+ ImportDeclaration: {
4
+ enter(path: {
5
+ node: any;
6
+ replaceWith: (param: any) => any;
7
+ skip: () => void;
8
+ }): void;
9
+ };
10
+ JSXElement: {
11
+ enter(path: {
12
+ node: any;
13
+ replaceWith: (param: any) => any;
14
+ skip: () => void;
15
+ traverse: (path: any) => any;
16
+ }): void;
17
+ };
18
+ };
19
+ };
20
+
21
+ export { export_default as default };
package/babel.d.ts CHANGED
@@ -1,2 +1,21 @@
1
- import babel from './src/babel';
2
- export default babel;
1
+ declare function export_default(): {
2
+ visitor: {
3
+ ImportDeclaration: {
4
+ enter(path: {
5
+ node: any;
6
+ replaceWith: (param: any) => any;
7
+ skip: () => void;
8
+ }): void;
9
+ };
10
+ JSXElement: {
11
+ enter(path: {
12
+ node: any;
13
+ replaceWith: (param: any) => any;
14
+ skip: () => void;
15
+ traverse: (path: any) => any;
16
+ }): void;
17
+ };
18
+ };
19
+ };
20
+
21
+ export { export_default as default };
package/babel.js CHANGED
@@ -2,62 +2,66 @@
2
2
 
3
3
  var types = require('@babel/types');
4
4
 
5
- function babel () {
6
- let hasLegendImport = false;
7
- return {
8
- visitor: {
9
- ImportDeclaration: {
10
- enter(path) {
11
- if (path.node.source.value === '@legendapp/state/react') {
12
- const specifiers = path.node.specifiers;
13
- for (let i = 0; i < specifiers.length; i++) {
14
- const s = specifiers[i].imported.name;
15
- if (!hasLegendImport && (s === 'Computed' || s === 'Memo' || s === 'Show')) {
16
- hasLegendImport = true;
17
- path.skip();
18
- break;
19
- }
20
- }
21
- }
22
- },
23
- },
24
- JSXElement: {
25
- enter(path) {
26
- if (!hasLegendImport) {
27
- path.skip();
28
- return;
29
- }
30
- const openingElement = path.node.openingElement;
31
- const name = openingElement.name.name;
32
- if (name === 'Computed' || name === 'Memo' || name === 'Show') {
33
- const children = removeEmptyText(path.node.children);
34
- if (children.length === 0)
35
- return;
36
- if (children[0].type === 'JSXElement' ||
37
- (children[0].type === 'JSXExpressionContainer' &&
38
- children[0].expression.type !== 'ArrowFunctionExpression' &&
39
- children[0].expression.type !== 'FunctionExpression' &&
40
- children[0].expression.type !== 'MemberExpression' &&
41
- children[0].expression.type !== 'Identifier')) {
42
- const attrs = openingElement.attributes;
43
- path.replaceWith(types.jsxElement(types.jsxOpeningElement(types.jsxIdentifier(name), attrs), types.jsxClosingElement(types.jsxIdentifier(name)), [types.jsxExpressionContainer(types.arrowFunctionExpression([], maybeWrapFragment(children)))]));
44
- }
45
- }
46
- },
47
- },
48
- },
49
- };
5
+ // src/babel/index.ts
6
+ function babel_default() {
7
+ let hasLegendImport = false;
8
+ return {
9
+ visitor: {
10
+ ImportDeclaration: {
11
+ enter(path) {
12
+ if (path.node.source.value === "@legendapp/state/react") {
13
+ const specifiers = path.node.specifiers;
14
+ for (let i = 0; i < specifiers.length; i++) {
15
+ const s = specifiers[i].imported.name;
16
+ if (!hasLegendImport && (s === "Computed" || s === "Memo" || s === "Show")) {
17
+ hasLegendImport = true;
18
+ path.skip();
19
+ break;
20
+ }
21
+ }
22
+ }
23
+ }
24
+ },
25
+ JSXElement: {
26
+ enter(path) {
27
+ if (!hasLegendImport) {
28
+ path.skip();
29
+ return;
30
+ }
31
+ const openingElement = path.node.openingElement;
32
+ const name = openingElement.name.name;
33
+ if (name === "Computed" || name === "Memo" || name === "Show") {
34
+ const children = removeEmptyText(path.node.children);
35
+ if (children.length === 0)
36
+ return;
37
+ if (children[0].type === "JSXElement" || children[0].type === "JSXExpressionContainer" && children[0].expression.type !== "ArrowFunctionExpression" && children[0].expression.type !== "FunctionExpression" && children[0].expression.type !== "MemberExpression" && children[0].expression.type !== "Identifier") {
38
+ const attrs = openingElement.attributes;
39
+ path.replaceWith(
40
+ types.jsxElement(
41
+ types.jsxOpeningElement(types.jsxIdentifier(name), attrs),
42
+ types.jsxClosingElement(types.jsxIdentifier(name)),
43
+ [types.jsxExpressionContainer(types.arrowFunctionExpression([], maybeWrapFragment(children)))]
44
+ )
45
+ );
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ };
50
52
  }
51
53
  function maybeWrapFragment(children) {
52
- if (children.length === 1 && children[0].type == 'JSXElement')
53
- return children[0];
54
- if (children.length === 1 && children[0].type == 'JSXExpressionContainer')
55
- return children[0].expression;
56
- return types.jsxFragment(types.jsxOpeningFragment(), types.jsxClosingFragment(), children);
54
+ if (children.length === 1 && children[0].type == "JSXElement")
55
+ return children[0];
56
+ if (children.length === 1 && children[0].type == "JSXExpressionContainer")
57
+ return children[0].expression;
58
+ return types.jsxFragment(types.jsxOpeningFragment(), types.jsxClosingFragment(), children);
57
59
  }
58
60
  function removeEmptyText(nodes) {
59
- return nodes.filter((node) => !(node.type === 'JSXText' && node.value.trim().length === 0));
61
+ return nodes.filter((node) => !(node.type === "JSXText" && node.value.trim().length === 0));
60
62
  }
61
63
 
62
- module.exports = babel;
63
- //# sourceMappingURL=babel.js.map
64
+ // babel.ts
65
+ var babel_default2 = babel_default;
66
+
67
+ module.exports = babel_default2;
package/babel.mjs ADDED
@@ -0,0 +1,65 @@
1
+ import { jsxElement, jsxOpeningElement, jsxIdentifier, jsxClosingElement, jsxExpressionContainer, arrowFunctionExpression, jsxFragment, jsxOpeningFragment, jsxClosingFragment } from '@babel/types';
2
+
3
+ // src/babel/index.ts
4
+ function babel_default() {
5
+ let hasLegendImport = false;
6
+ return {
7
+ visitor: {
8
+ ImportDeclaration: {
9
+ enter(path) {
10
+ if (path.node.source.value === "@legendapp/state/react") {
11
+ const specifiers = path.node.specifiers;
12
+ for (let i = 0; i < specifiers.length; i++) {
13
+ const s = specifiers[i].imported.name;
14
+ if (!hasLegendImport && (s === "Computed" || s === "Memo" || s === "Show")) {
15
+ hasLegendImport = true;
16
+ path.skip();
17
+ break;
18
+ }
19
+ }
20
+ }
21
+ }
22
+ },
23
+ JSXElement: {
24
+ enter(path) {
25
+ if (!hasLegendImport) {
26
+ path.skip();
27
+ return;
28
+ }
29
+ const openingElement = path.node.openingElement;
30
+ const name = openingElement.name.name;
31
+ if (name === "Computed" || name === "Memo" || name === "Show") {
32
+ const children = removeEmptyText(path.node.children);
33
+ if (children.length === 0)
34
+ return;
35
+ if (children[0].type === "JSXElement" || children[0].type === "JSXExpressionContainer" && children[0].expression.type !== "ArrowFunctionExpression" && children[0].expression.type !== "FunctionExpression" && children[0].expression.type !== "MemberExpression" && children[0].expression.type !== "Identifier") {
36
+ const attrs = openingElement.attributes;
37
+ path.replaceWith(
38
+ jsxElement(
39
+ jsxOpeningElement(jsxIdentifier(name), attrs),
40
+ jsxClosingElement(jsxIdentifier(name)),
41
+ [jsxExpressionContainer(arrowFunctionExpression([], maybeWrapFragment(children)))]
42
+ )
43
+ );
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+ };
50
+ }
51
+ function maybeWrapFragment(children) {
52
+ if (children.length === 1 && children[0].type == "JSXElement")
53
+ return children[0];
54
+ if (children.length === 1 && children[0].type == "JSXExpressionContainer")
55
+ return children[0].expression;
56
+ return jsxFragment(jsxOpeningFragment(), jsxClosingFragment(), children);
57
+ }
58
+ function removeEmptyText(nodes) {
59
+ return nodes.filter((node) => !(node.type === "JSXText" && node.value.trim().length === 0));
60
+ }
61
+
62
+ // babel.ts
63
+ var babel_default2 = babel_default;
64
+
65
+ export { babel_default2 as default };
@@ -2,23 +2,22 @@
2
2
 
3
3
  var state = require('@legendapp/state');
4
4
 
5
+ // src/config/enable$GetSet.ts
5
6
  function enable$GetSet() {
6
- state.configureLegendState({
7
- observableProperties: {
8
- $: {
9
- get(node) {
10
- return state.internal.get(node);
11
- },
12
- set(node, value) {
13
- state.internal.set(node, value);
14
- },
15
- },
7
+ state.configureLegendState({
8
+ observableProperties: {
9
+ $: {
10
+ get(node) {
11
+ return state.internal.get(node);
16
12
  },
17
- });
13
+ set(node, value) {
14
+ state.internal.set(node, value);
15
+ }
16
+ }
17
+ }
18
+ });
18
19
  }
19
- // TODOv4 deprecate
20
- const enableDirectAccess = enable$GetSet;
20
+ var enableDirectAccess = enable$GetSet;
21
21
 
22
22
  exports.enable$GetSet = enable$GetSet;
23
23
  exports.enableDirectAccess = enableDirectAccess;
24
- //# sourceMappingURL=enable$GetSet.js.map
@@ -1,21 +1,20 @@
1
1
  import { configureLegendState, internal } from '@legendapp/state';
2
2
 
3
+ // src/config/enable$GetSet.ts
3
4
  function enable$GetSet() {
4
- configureLegendState({
5
- observableProperties: {
6
- $: {
7
- get(node) {
8
- return internal.get(node);
9
- },
10
- set(node, value) {
11
- internal.set(node, value);
12
- },
13
- },
5
+ configureLegendState({
6
+ observableProperties: {
7
+ $: {
8
+ get(node) {
9
+ return internal.get(node);
14
10
  },
15
- });
11
+ set(node, value) {
12
+ internal.set(node, value);
13
+ }
14
+ }
15
+ }
16
+ });
16
17
  }
17
- // TODOv4 deprecate
18
- const enableDirectAccess = enable$GetSet;
18
+ var enableDirectAccess = enable$GetSet;
19
19
 
20
20
  export { enable$GetSet, enableDirectAccess };
21
- //# sourceMappingURL=enable$GetSet.mjs.map
@@ -0,0 +1,9 @@
1
+ import { FCReactiveObject } from '@legendapp/state/react';
2
+
3
+ declare function enableReactComponents(): void;
4
+ declare module '@legendapp/state/react' {
5
+ interface IReactive extends FCReactiveObject<JSX.IntrinsicElements> {
6
+ }
7
+ }
8
+
9
+ export { enableReactComponents };
@@ -1,7 +1,9 @@
1
- /// <reference types="react" />
2
1
  import { FCReactiveObject } from '@legendapp/state/react';
3
- export declare function enableReactComponents(): void;
2
+
3
+ declare function enableReactComponents(): void;
4
4
  declare module '@legendapp/state/react' {
5
5
  interface IReactive extends FCReactiveObject<JSX.IntrinsicElements> {
6
6
  }
7
7
  }
8
+
9
+ export { enableReactComponents };
@@ -2,17 +2,20 @@
2
2
 
3
3
  var react = require('@legendapp/state/react');
4
4
 
5
+ // src/config/enableReactComponents.ts
5
6
  function enableReactComponents() {
6
- const bindInfo = { value: { handler: 'onChange', getValue: (e) => e.target.value, defaultValue: '' } };
7
- const bindInfoInput = Object.assign({ checked: { handler: 'onChange', getValue: (e) => e.target.checked } }, bindInfo);
8
- react.configureReactive({
9
- binders: {
10
- input: bindInfoInput,
11
- textarea: bindInfo,
12
- select: bindInfo,
13
- },
14
- });
7
+ const bindInfo = { value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" } };
8
+ const bindInfoInput = Object.assign(
9
+ { checked: { handler: "onChange", getValue: (e) => e.target.checked } },
10
+ bindInfo
11
+ );
12
+ react.configureReactive({
13
+ binders: {
14
+ input: bindInfoInput,
15
+ textarea: bindInfo,
16
+ select: bindInfo
17
+ }
18
+ });
15
19
  }
16
20
 
17
21
  exports.enableReactComponents = enableReactComponents;
18
- //# sourceMappingURL=enableReactComponents.js.map
@@ -1,16 +1,19 @@
1
1
  import { configureReactive } from '@legendapp/state/react';
2
2
 
3
+ // src/config/enableReactComponents.ts
3
4
  function enableReactComponents() {
4
- const bindInfo = { value: { handler: 'onChange', getValue: (e) => e.target.value, defaultValue: '' } };
5
- const bindInfoInput = Object.assign({ checked: { handler: 'onChange', getValue: (e) => e.target.checked } }, bindInfo);
6
- configureReactive({
7
- binders: {
8
- input: bindInfoInput,
9
- textarea: bindInfo,
10
- select: bindInfo,
11
- },
12
- });
5
+ const bindInfo = { value: { handler: "onChange", getValue: (e) => e.target.value, defaultValue: "" } };
6
+ const bindInfoInput = Object.assign(
7
+ { checked: { handler: "onChange", getValue: (e) => e.target.checked } },
8
+ bindInfo
9
+ );
10
+ configureReactive({
11
+ binders: {
12
+ input: bindInfoInput,
13
+ textarea: bindInfo,
14
+ select: bindInfo
15
+ }
16
+ });
13
17
  }
14
18
 
15
19
  export { enableReactComponents };
16
- //# sourceMappingURL=enableReactComponents.mjs.map
@@ -0,0 +1,22 @@
1
+ import { FCReactiveObject, FCReactive } from '@legendapp/state/react';
2
+ import { ActivityIndicator, ActivityIndicatorProps, Button, ButtonProps, FlatList, FlatListProps, Image, ImageProps, Pressable, PressableProps, ScrollView, ScrollViewProps, SectionList, SectionListProps, Switch, SwitchProps, Text, TextProps, TextInput, TextInputProps, TouchableWithoutFeedback, TouchableWithoutFeedbackProps, View, ViewProps } from 'react-native';
3
+
4
+ declare function enableReactNativeComponents(): void;
5
+ declare module '@legendapp/state/react' {
6
+ interface IReactive extends FCReactiveObject<JSX.IntrinsicElements> {
7
+ ActivityIndicator: FCReactive<ActivityIndicator, ActivityIndicatorProps>;
8
+ Button: FCReactive<Button, ButtonProps>;
9
+ FlatList: FCReactive<FlatList, FlatListProps<any>>;
10
+ Image: FCReactive<Image, ImageProps>;
11
+ Pressable: FCReactive<typeof Pressable, PressableProps>;
12
+ ScrollView: FCReactive<ScrollView, ScrollViewProps>;
13
+ SectionList: FCReactive<SectionList, SectionListProps<any>>;
14
+ Switch: FCReactive<Switch, SwitchProps>;
15
+ Text: FCReactive<Text, TextProps>;
16
+ TextInput: FCReactive<TextInput, TextInputProps>;
17
+ TouchableWithoutFeedback: FCReactive<TouchableWithoutFeedback, TouchableWithoutFeedbackProps>;
18
+ View: FCReactive<View, ViewProps>;
19
+ }
20
+ }
21
+
22
+ export { enableReactNativeComponents };
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
2
- import { FCReactive, FCReactiveObject } from '@legendapp/state/react';
3
- import { ActivityIndicator, ActivityIndicatorProps, Button, ButtonProps, FlatList, FlatListProps, Image, ImageProps, Pressable, PressableProps, ScrollView, ScrollViewProps, SectionList, SectionListProps, Switch, SwitchProps, Text, TextInput, TextInputProps, TextProps, TouchableWithoutFeedback, TouchableWithoutFeedbackProps, View, ViewProps } from 'react-native';
4
- export declare function enableReactNativeComponents(): void;
1
+ import { FCReactiveObject, FCReactive } from '@legendapp/state/react';
2
+ import { ActivityIndicator, ActivityIndicatorProps, Button, ButtonProps, FlatList, FlatListProps, Image, ImageProps, Pressable, PressableProps, ScrollView, ScrollViewProps, SectionList, SectionListProps, Switch, SwitchProps, Text, TextProps, TextInput, TextInputProps, TouchableWithoutFeedback, TouchableWithoutFeedbackProps, View, ViewProps } from 'react-native';
3
+
4
+ declare function enableReactNativeComponents(): void;
5
5
  declare module '@legendapp/state/react' {
6
6
  interface IReactive extends FCReactiveObject<JSX.IntrinsicElements> {
7
7
  ActivityIndicator: FCReactive<ActivityIndicator, ActivityIndicatorProps>;
@@ -18,3 +18,5 @@ declare module '@legendapp/state/react' {
18
18
  View: FCReactive<View, ViewProps>;
19
19
  }
20
20
  }
21
+
22
+ export { enableReactNativeComponents };
@@ -4,54 +4,50 @@ var react$1 = require('react');
4
4
  var react = require('@legendapp/state/react');
5
5
  var reactNative = require('react-native');
6
6
 
7
+ // src/config/enableReactNativeComponents.ts
7
8
  function enableReactNativeComponents() {
8
- react.configureReactive({
9
- components: {
10
- ActivityIndicator: reactNative.ActivityIndicator,
11
- Button: reactNative.Button,
12
- FlatList: reactNative.FlatList,
13
- Image: reactNative.Image,
14
- Pressable: reactNative.Pressable,
15
- ScrollView: reactNative.ScrollView,
16
- SectionList: reactNative.SectionList,
17
- Switch: reactNative.Switch,
18
- Text: reactNative.Text,
19
- TextInput: reactNative.TextInput,
20
- TouchableWithoutFeedback: reactNative.TouchableWithoutFeedback,
21
- View: reactNative.View,
22
- },
23
- binders: {
24
- TextInput: {
25
- value: {
26
- handler: 'onChange',
27
- getValue: (e) => e.nativeEvent.text,
28
- defaultValue: '',
29
- },
30
- },
31
- Switch: {
32
- value: {
33
- handler: 'onValueChange',
34
- getValue: (e) => e,
35
- defaultValue: false,
36
- },
37
- },
38
- FlatList: {
39
- data: {
40
- selector: (propsOut, p) => {
41
- const state = react$1.useRef(0);
42
- // Increment renderNum whenever the array changes shallowly
43
- const [renderNum, value] = react.useSelector(() => [state.current++, p.get(true)]);
44
- // Set extraData to renderNum so that it will re-render when renderNum changes.
45
- // This is necessary because the observable array is mutable so changes to it
46
- // won't trigger re-renders by default.
47
- propsOut.extraData = renderNum;
48
- return value;
49
- },
50
- },
51
- },
52
- },
53
- });
9
+ react.configureReactive({
10
+ components: {
11
+ ActivityIndicator: reactNative.ActivityIndicator,
12
+ Button: reactNative.Button,
13
+ FlatList: reactNative.FlatList,
14
+ Image: reactNative.Image,
15
+ Pressable: reactNative.Pressable,
16
+ ScrollView: reactNative.ScrollView,
17
+ SectionList: reactNative.SectionList,
18
+ Switch: reactNative.Switch,
19
+ Text: reactNative.Text,
20
+ TextInput: reactNative.TextInput,
21
+ TouchableWithoutFeedback: reactNative.TouchableWithoutFeedback,
22
+ View: reactNative.View
23
+ },
24
+ binders: {
25
+ TextInput: {
26
+ value: {
27
+ handler: "onChange",
28
+ getValue: (e) => e.nativeEvent.text,
29
+ defaultValue: ""
30
+ }
31
+ },
32
+ Switch: {
33
+ value: {
34
+ handler: "onValueChange",
35
+ getValue: (e) => e,
36
+ defaultValue: false
37
+ }
38
+ },
39
+ FlatList: {
40
+ data: {
41
+ selector: (propsOut, p) => {
42
+ const state = react$1.useRef(0);
43
+ const [renderNum, value] = react.useSelector(() => [state.current++, p.get(true)]);
44
+ propsOut.extraData = renderNum;
45
+ return value;
46
+ }
47
+ }
48
+ }
49
+ }
50
+ });
54
51
  }
55
52
 
56
53
  exports.enableReactNativeComponents = enableReactNativeComponents;
57
- //# sourceMappingURL=enableReactNativeComponents.js.map