tinybase 4.4.0-beta.0 → 4.4.0-beta.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 (347) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -1
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/indexes.cjs +1 -1
  6. package/lib/cjs/indexes.cjs.gz +0 -0
  7. package/lib/cjs/metrics.cjs +1 -1
  8. package/lib/cjs/metrics.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  10. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  12. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  14. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  16. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-file.cjs +1 -1
  18. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  20. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  24. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  26. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  30. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  32. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  33. package/lib/cjs/persisters.cjs +1 -1
  34. package/lib/cjs/persisters.cjs.gz +0 -0
  35. package/lib/cjs/queries.cjs +1 -1
  36. package/lib/cjs/queries.cjs.gz +0 -0
  37. package/lib/cjs/relationships.cjs +1 -1
  38. package/lib/cjs/relationships.cjs.gz +0 -0
  39. package/lib/cjs/store.cjs +1 -1
  40. package/lib/cjs/store.cjs.gz +0 -0
  41. package/lib/cjs/tinybase.cjs +1 -1
  42. package/lib/cjs/tinybase.cjs.gz +0 -0
  43. package/lib/cjs/tools.cjs +1 -1
  44. package/lib/cjs/tools.cjs.gz +0 -0
  45. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  46. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  47. package/lib/cjs/ui-react-dom.cjs +1 -1
  48. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  49. package/lib/cjs/ui-react.cjs +1 -1
  50. package/lib/cjs/ui-react.cjs.gz +0 -0
  51. package/lib/cjs-es6/checkpoints.cjs +1 -1
  52. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  53. package/lib/cjs-es6/indexes.cjs +1 -1
  54. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  55. package/lib/cjs-es6/metrics.cjs +1 -1
  56. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  76. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters.cjs +1 -1
  82. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  83. package/lib/cjs-es6/queries.cjs +1 -1
  84. package/lib/cjs-es6/queries.cjs.gz +0 -0
  85. package/lib/cjs-es6/relationships.cjs +1 -1
  86. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  87. package/lib/cjs-es6/store.cjs +1 -1
  88. package/lib/cjs-es6/store.cjs.gz +0 -0
  89. package/lib/cjs-es6/tinybase.cjs +1 -1
  90. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  91. package/lib/cjs-es6/tools.cjs +1 -1
  92. package/lib/cjs-es6/tools.cjs.gz +0 -0
  93. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  94. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  95. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  96. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  97. package/lib/cjs-es6/ui-react.cjs +1 -1
  98. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  99. package/lib/debug/checkpoints.js +12 -12
  100. package/lib/debug/indexes.js +9 -9
  101. package/lib/debug/metrics.js +9 -9
  102. package/lib/debug/persisters/persister-automerge.js +21 -8
  103. package/lib/debug/persisters/persister-browser.js +17 -3
  104. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +27 -12
  105. package/lib/debug/persisters/persister-expo-sqlite.js +27 -12
  106. package/lib/debug/persisters/persister-file.js +17 -3
  107. package/lib/debug/persisters/persister-indexed-db.js +21 -8
  108. package/lib/debug/persisters/persister-partykit-client.js +54 -20
  109. package/lib/debug/persisters/persister-partykit-server.js +173 -77
  110. package/lib/debug/persisters/persister-remote.js +17 -3
  111. package/lib/debug/persisters/persister-sqlite-wasm.js +27 -12
  112. package/lib/debug/persisters/persister-sqlite3.js +28 -13
  113. package/lib/debug/persisters/persister-yjs.js +23 -10
  114. package/lib/debug/persisters.js +16 -4
  115. package/lib/debug/queries.js +16 -15
  116. package/lib/debug/relationships.js +9 -9
  117. package/lib/debug/store.js +130 -35
  118. package/lib/debug/tinybase.js +142 -41
  119. package/lib/debug/tools.js +17 -9
  120. package/lib/debug/ui-react-dom.js +262 -150
  121. package/lib/debug/ui-react.js +26 -18
  122. package/lib/es6/checkpoints.js +1 -1
  123. package/lib/es6/checkpoints.js.gz +0 -0
  124. package/lib/es6/indexes.js +1 -1
  125. package/lib/es6/indexes.js.gz +0 -0
  126. package/lib/es6/metrics.js +1 -1
  127. package/lib/es6/metrics.js.gz +0 -0
  128. package/lib/es6/persisters/persister-automerge.js +1 -1
  129. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  130. package/lib/es6/persisters/persister-browser.js +1 -1
  131. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  132. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  133. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  134. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  135. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  136. package/lib/es6/persisters/persister-file.js +1 -1
  137. package/lib/es6/persisters/persister-file.js.gz +0 -0
  138. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  139. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  140. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  141. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  142. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  143. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  144. package/lib/es6/persisters/persister-remote.js +1 -1
  145. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  146. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  147. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  148. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  149. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  150. package/lib/es6/persisters/persister-yjs.js +1 -1
  151. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  152. package/lib/es6/persisters.js +1 -1
  153. package/lib/es6/persisters.js.gz +0 -0
  154. package/lib/es6/queries.js +1 -1
  155. package/lib/es6/queries.js.gz +0 -0
  156. package/lib/es6/relationships.js +1 -1
  157. package/lib/es6/relationships.js.gz +0 -0
  158. package/lib/es6/store.js +1 -1
  159. package/lib/es6/store.js.gz +0 -0
  160. package/lib/es6/tinybase.js +1 -1
  161. package/lib/es6/tinybase.js.gz +0 -0
  162. package/lib/es6/tools.js +1 -1
  163. package/lib/es6/tools.js.gz +0 -0
  164. package/lib/es6/ui-react-dom-debug.js +1 -1
  165. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  166. package/lib/es6/ui-react-dom.js +1 -1
  167. package/lib/es6/ui-react-dom.js.gz +0 -0
  168. package/lib/es6/ui-react.js +1 -1
  169. package/lib/es6/ui-react.js.gz +0 -0
  170. package/lib/indexes.js +1 -1
  171. package/lib/indexes.js.gz +0 -0
  172. package/lib/metrics.js +1 -1
  173. package/lib/metrics.js.gz +0 -0
  174. package/lib/persisters/persister-automerge.js +1 -1
  175. package/lib/persisters/persister-automerge.js.gz +0 -0
  176. package/lib/persisters/persister-browser.js +1 -1
  177. package/lib/persisters/persister-browser.js.gz +0 -0
  178. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  179. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  180. package/lib/persisters/persister-expo-sqlite.js +1 -1
  181. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  182. package/lib/persisters/persister-file.js +1 -1
  183. package/lib/persisters/persister-file.js.gz +0 -0
  184. package/lib/persisters/persister-indexed-db.js +1 -1
  185. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  186. package/lib/persisters/persister-partykit-client.js +1 -1
  187. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  188. package/lib/persisters/persister-partykit-server.js +1 -1
  189. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  190. package/lib/persisters/persister-remote.js +1 -1
  191. package/lib/persisters/persister-remote.js.gz +0 -0
  192. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  193. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  194. package/lib/persisters/persister-sqlite3.js +1 -1
  195. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  196. package/lib/persisters/persister-yjs.js +1 -1
  197. package/lib/persisters/persister-yjs.js.gz +0 -0
  198. package/lib/persisters.js +1 -1
  199. package/lib/persisters.js.gz +0 -0
  200. package/lib/queries.js +1 -1
  201. package/lib/queries.js.gz +0 -0
  202. package/lib/relationships.js +1 -1
  203. package/lib/relationships.js.gz +0 -0
  204. package/lib/store.js +1 -1
  205. package/lib/store.js.gz +0 -0
  206. package/lib/tinybase.js +1 -1
  207. package/lib/tinybase.js.gz +0 -0
  208. package/lib/tools.js +1 -1
  209. package/lib/tools.js.gz +0 -0
  210. package/lib/types/persisters/persister-automerge.d.ts +36 -3
  211. package/lib/types/persisters/persister-browser.d.ts +71 -8
  212. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +42 -8
  213. package/lib/types/persisters/persister-expo-sqlite.d.ts +40 -7
  214. package/lib/types/persisters/persister-file.d.ts +34 -3
  215. package/lib/types/persisters/persister-indexed-db.d.ts +40 -9
  216. package/lib/types/persisters/persister-partykit-client.d.ts +99 -13
  217. package/lib/types/persisters/persister-partykit-server.d.ts +414 -9
  218. package/lib/types/persisters/persister-remote.d.ts +40 -4
  219. package/lib/types/persisters/persister-sqlite-wasm.d.ts +46 -7
  220. package/lib/types/persisters/persister-sqlite3.d.ts +40 -7
  221. package/lib/types/persisters/persister-yjs.d.ts +37 -5
  222. package/lib/types/persisters.d.ts +10 -10
  223. package/lib/types/queries.d.ts +24 -0
  224. package/lib/types/store.d.ts +911 -31
  225. package/lib/types/tools.d.ts +4 -6
  226. package/lib/types/ui-react-dom.d.ts +13 -2
  227. package/lib/types/ui-react.d.ts +27 -6
  228. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +38 -4
  229. package/lib/types/with-schemas/persisters/persister-browser.d.ts +75 -10
  230. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +44 -9
  231. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +42 -8
  232. package/lib/types/with-schemas/persisters/persister-file.d.ts +36 -4
  233. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +42 -10
  234. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +102 -15
  235. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +447 -9
  236. package/lib/types/with-schemas/persisters/persister-remote.d.ts +42 -5
  237. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +48 -8
  238. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +41 -7
  239. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +39 -6
  240. package/lib/types/with-schemas/persisters.d.ts +10 -10
  241. package/lib/types/with-schemas/queries.d.ts +24 -0
  242. package/lib/types/with-schemas/store.d.ts +1179 -35
  243. package/lib/types/with-schemas/tools.d.ts +4 -6
  244. package/lib/types/with-schemas/ui-react-dom.d.ts +21 -4
  245. package/lib/types/with-schemas/ui-react.d.ts +29 -6
  246. package/lib/ui-react-dom.js +1 -1
  247. package/lib/ui-react-dom.js.gz +0 -0
  248. package/lib/ui-react.js +1 -1
  249. package/lib/ui-react.js.gz +0 -0
  250. package/lib/umd/checkpoints.js +1 -1
  251. package/lib/umd/checkpoints.js.gz +0 -0
  252. package/lib/umd/indexes.js +1 -1
  253. package/lib/umd/indexes.js.gz +0 -0
  254. package/lib/umd/metrics.js +1 -1
  255. package/lib/umd/metrics.js.gz +0 -0
  256. package/lib/umd/persisters/persister-automerge.js +1 -1
  257. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  258. package/lib/umd/persisters/persister-browser.js +1 -1
  259. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  260. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  261. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  262. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  263. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  264. package/lib/umd/persisters/persister-file.js +1 -1
  265. package/lib/umd/persisters/persister-file.js.gz +0 -0
  266. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  267. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  268. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  269. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  270. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  271. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  272. package/lib/umd/persisters/persister-remote.js +1 -1
  273. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  274. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  275. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  276. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  277. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  278. package/lib/umd/persisters/persister-yjs.js +1 -1
  279. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  280. package/lib/umd/persisters.js +1 -1
  281. package/lib/umd/persisters.js.gz +0 -0
  282. package/lib/umd/queries.js +1 -1
  283. package/lib/umd/queries.js.gz +0 -0
  284. package/lib/umd/relationships.js +1 -1
  285. package/lib/umd/relationships.js.gz +0 -0
  286. package/lib/umd/store.js +1 -1
  287. package/lib/umd/store.js.gz +0 -0
  288. package/lib/umd/tinybase.js +1 -1
  289. package/lib/umd/tinybase.js.gz +0 -0
  290. package/lib/umd/tools.js +1 -1
  291. package/lib/umd/tools.js.gz +0 -0
  292. package/lib/umd/ui-react-dom-debug.js +1 -1
  293. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  294. package/lib/umd/ui-react-dom.js +1 -1
  295. package/lib/umd/ui-react-dom.js.gz +0 -0
  296. package/lib/umd/ui-react.js +1 -1
  297. package/lib/umd/ui-react.js.gz +0 -0
  298. package/lib/umd-es6/checkpoints.js +1 -1
  299. package/lib/umd-es6/checkpoints.js.gz +0 -0
  300. package/lib/umd-es6/indexes.js +1 -1
  301. package/lib/umd-es6/indexes.js.gz +0 -0
  302. package/lib/umd-es6/metrics.js +1 -1
  303. package/lib/umd-es6/metrics.js.gz +0 -0
  304. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  305. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  306. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  307. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  308. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  309. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  310. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  311. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  312. package/lib/umd-es6/persisters/persister-file.js +1 -1
  313. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  314. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  315. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  316. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  317. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  318. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  319. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  320. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  321. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  322. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  323. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  324. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  325. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  326. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  327. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  328. package/lib/umd-es6/persisters.js +1 -1
  329. package/lib/umd-es6/persisters.js.gz +0 -0
  330. package/lib/umd-es6/queries.js +1 -1
  331. package/lib/umd-es6/queries.js.gz +0 -0
  332. package/lib/umd-es6/relationships.js +1 -1
  333. package/lib/umd-es6/relationships.js.gz +0 -0
  334. package/lib/umd-es6/store.js +1 -1
  335. package/lib/umd-es6/store.js.gz +0 -0
  336. package/lib/umd-es6/tinybase.js +1 -1
  337. package/lib/umd-es6/tinybase.js.gz +0 -0
  338. package/lib/umd-es6/tools.js +1 -1
  339. package/lib/umd-es6/tools.js.gz +0 -0
  340. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  341. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  342. package/lib/umd-es6/ui-react-dom.js +1 -1
  343. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  344. package/lib/umd-es6/ui-react.js +1 -1
  345. package/lib/umd-es6/ui-react.js.gz +0 -0
  346. package/package.json +42 -40
  347. package/readme.md +2 -2
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t,l){"use strict";const r=e=>typeof e,a=r(""),n=r(!0),o=r(0),s="Value",i="currentTarget",d="value",u=isFinite,c=e=>null==e,{PureComponent:m,Fragment:h,createElement:b,useCallback:p,useLayoutEffect:g,useRef:f,useState:w}=t,v=(e,...t)=>c(e)?{}:e(...t),I=(e,t)=>e.map(t),y=Object,C=(e=[])=>y.fromEntries(e),k=(e,t)=>I(y.entries(e),(([e,l])=>t(l,e))),x="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",R='content:url("',T=R+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",O='</svg>")',S=R+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",N=I([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,r])=>T+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${r}' fill='white'/>`+O)),V=T+"<path d='M20 20l60 60M20 80l60-60' />"+O,j=T+`<path d='${x}' />`+O,P=T+`<path d='${x}M20 20l60 60' />`+O;var z=Object.defineProperty,q=Object.defineProperties,M=Object.getOwnPropertyDescriptors,$=Object.getOwnPropertySymbols,B=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable,F=(e,t,l)=>t in e?z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,H=(e,t)=>{for(var l in t||(t={}))B.call(t,l)&&F(e,l,t[l]);if($)for(var l of $(t))E.call(t,l)&&F(e,l,t[l]);return e},D=(e,t)=>q(e,M(t));const A="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(k(D(H(D(H(D(H({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[A]:"width:0.5rem;height:0.5rem;",[A+"-track"]:"background:#111",[A+"-thumb"]:"background:#999;border:1px solid #111",[A+"-thumb:hover"]:"background:#fff",[A+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+S},C(I(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),C(I(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":S,"header>img:nth-of-type(6)":V}),C(I(N,((e,t)=>[`header>img[data-id='${t}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":j,"details[open]>summary img.done":P,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,t)=>e?`& ${t}{${e}}`:"")));const L=(e,t,l,r)=>e==a?t:e==o?l:r;var U=Object.defineProperty,G=Object.defineProperties,J=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable,X=(e,t,l)=>t in e?U(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,Y=(e,t)=>{for(var l in t||(t={}))Q.call(t,l)&&X(e,l,t[l]);if(K)for(var l of K(t))W.call(t,l)&&X(e,l,t[l]);return e},Z=(e,t)=>G(e,J(t)),_=(e,t)=>{var l={};for(var r in e)Q.call(e,r)&&t.indexOf(r)<0&&(l[r]=e[r]);if(null!=e&&K)for(var r of K(e))t.indexOf(r)<0&&W.call(e,r)&&(l[r]=e[r]);return l};const{useCallback:ee,useMemo:te,useState:le}=t,re="editable",ae=(e,t)=>I(l.useTableCellIds(e,t),(t=>e+"."+t)),ne=(e,t,l)=>{const r=ee(e,t);return l?r:void 0},oe=(...e)=>te((()=>e),e),se=(e,t)=>te((()=>({store:e,tableId:t})),[e,t]),ie=(e,t)=>te((()=>({queries:e,queryId:t})),[e,t]),de=(e,t=!1,l,r=0,a,n,o,s)=>{const[[i,d,u],c]=le([e,t,r]),m=ee((e=>{c(e),null==s||s(e)}),[s]),h=ne((e=>m([e,e==i&&!d,u])),[m,i,d,u],l),p=ee((e=>m([i,d,e])),[m,i,d]),g=!0===o?fe:o;return[[i,d,u],h,te((()=>!1===o?null:b(g,{offset:u,limit:a,total:n,onChange:p})),[o,g,u,a,n,p])]},ue=(e,t,l)=>te((()=>{const n=null!=t?t:e;return C(k(Array.isArray(n)?C(I(n,(e=>[e,e]))):n,((e,t)=>{return[t,Y(Y({},{label:t,component:l}),(n=e,r(n)==a?{label:e}:e))];var n})))}),[t,l,e]),ce=({className:e,headerRow:t,idColumn:l,params:[r,a,n,o,s,i]})=>b("table",{className:e},i?b("caption",null,i):null,!1===t?null:b("thead",null,b("tr",null,!1===l?null:b(me,{sort:null!=o?o:[],label:"Id",onClick:s}),k(r,(({label:e},t)=>b(me,{key:t,cellId:t,label:e,sort:null!=o?o:[],onClick:s}))))),b("tbody",null,I(n,(e=>b("tr",{key:e},!1===l?null:b("th",null,e),k(r,(({component:t,getComponentProps:l},r)=>b("td",{key:r},b(t,Z(Y(Y({},v(l,e,r)),a),{rowId:e,cellId:r})))))))))),me=({cellId:e,sort:[t,l],label:r=(null!=e?e:""),onClick:a})=>b("th",{onClick:ne((()=>null==a?void 0:a(e)),[a,e],a),className:c(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},c(l)||t!=e?null:(l?"↓":"↑")+" ",r),he=({localRowId:e,params:[r,a,n,o,s,i,d]})=>{const u=l.useRemoteRowId(s,e,i);return b("tr",null,!1===r?null:b(t.Fragment,null,b("th",null,e),b("th",null,u)),k(a,(({component:t,getComponentProps:l},r)=>{const[a,s]=r.split(".",2),i=a===n?e:a===o?u:null;return c(i)?null:b("td",{key:r},b(t,Z(Y({},v(l,i,s)),{store:d,tableId:a,rowId:i,cellId:s})))})))},be=({thing:e,onThingChange:t,className:l,hasSchema:s})=>{const[c,m]=le(),[h,p]=le(),[g,f]=le(),[w,v]=le(),[I,y]=le();h!==e&&(m((e=>{const t=r(e);return(e=>e==a||e==n)(t)||t==o&&u(e)?t:void 0})(e)),p(e),f(e+""),v(Number(e)||0),y(!!e));const C=ee(((e,l)=>{l(e),p(e),t(e)}),[t]);return b("div",{className:l},b("button",{className:c,onClick:ee((()=>{if(!(null==s?void 0:s())){const e=L(c,o,n,a),l=L(e,g,w,I);m(e),p(l),t(l)}}),[s,t,g,w,I,c])},c),L(c,b("input",{key:c,value:g,onChange:ee((e=>C(e[i][d]+"",f)),[C])}),b("input",{key:c,type:"number",value:w,onChange:ee((e=>C(Number(e[i][d]||0),v)),[C])}),b("input",{key:c,type:"checkbox",checked:I,onChange:ee((e=>C(!!e[i].checked,y)),[C])})))},pe=({tableId:e,rowId:t,cellId:r,store:a,className:n})=>{var o;return b(be,{thing:l.useCell(e,t,r,a),onThingChange:l.useSetCellCallback(e,t,r,(e=>e),[],a),className:null!=n?n:re+"Cell",hasSchema:null==(o=l.useStoreOrStoreById(a))?void 0:o.hasTablesSchema})},ge=({valueId:e,store:t,className:r})=>{var a;return b(be,{thing:l.useValue(e,t),onThingChange:l.useSetValueCallback(e,(e=>e),[],t),className:null!=r?r:re+s,hasSchema:null==(a=l.useStoreOrStoreById(t))?void 0:a.hasValuesSchema})},fe=({onChange:e,total:l,offset:r=0,limit:a=l,singular:n="row",plural:o=n+"s"})=>{(r>l||r<0)&&(r=0,e(0));const s=ne((()=>e(r-a)),[e,r,a],r>0),i=ne((()=>e(r+a)),[e,r,a],r+a<l);return b(t.Fragment,null,l>a&&b(t.Fragment,null,b("button",{className:"previous",disabled:0==r,onClick:s},"←"),b("button",{className:"next",disabled:r+a>=l,onClick:i},"→"),r+1," to ",Math.min(l,r+a)," of "),l," ",1!=l?o:n)};(class extends m{constructor(e){super(e),this.componentDidCatch=(e,t)=>console.error(e,t.componentStack),this.state={e:0}}render(){return this.state.e?b("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}}).getDerivedStateFromError=()=>({e:1});const we=e=>new Map(e);we(),we(),e.EditableCellView=pe,e.EditableValueView=ge,e.RelationshipInHtmlTable=({relationshipId:e,relationships:r,editable:a,customCells:n,className:o,headerRow:s,idColumn:i=!0})=>{const[d,u,c,m]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(t),null==e?void 0:e.getRemoteTableId(t)])(l.useRelationshipsOrRelationshipsById(r),e),h=ue([...ae(c,u),...ae(m,u)],n,a?pe:l.CellView),p=oe(i,h,c,m,e,d,u);return b("table",{className:o},!1===s?null:b("thead",null,b("tr",null,!1===i?null:b(t.Fragment,null,b("th",null,c,".Id"),b("th",null,m,".Id")),k(h,(({label:e},t)=>b("th",{key:t},e))))),b("tbody",null,I(l.useRowIds(c,u),(e=>b(he,{key:e,localRowId:e,params:p})))))},e.ResultSortedTableInHtmlTable=e=>{var t=e,{queryId:r,cellId:a,descending:n,offset:o,limit:s,queries:i,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=t,h=_(t,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=de(a,n,d,o,s,l.useResultRowCount(r,i),u,m);return b(ce,Z(Y({},h),{params:oe(ue(l.useResultTableCellIds(r,i),c,l.ResultCellView),ie(i,r),l.useResultSortedRowIds(r,...p,s,i),p,g,f)}))},e.ResultTableInHtmlTable=e=>{var t=e,{queryId:r,queries:a,customCells:n}=t,o=_(t,["queryId","queries","customCells"]);return b(ce,Z(Y({},o),{params:oe(ue(l.useResultTableCellIds(r,a),n,l.ResultCellView),ie(a,r),l.useResultRowIds(r,a))}))},e.SliceInHtmlTable=e=>{var t=e,{indexId:r,sliceId:a,indexes:n,editable:o,customCells:s}=t,i=_(t,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(l.useIndexesOrIndexesById(n),r);return b(ce,Z(Y({},i),{params:oe(ue(l.useTableCellIds(c,u),s,o?pe:l.CellView),se(u,c),l.useSliceRowIds(r,a,d))}))},e.SortedTableInHtmlTable=e=>{var t=e,{tableId:r,cellId:a,descending:n,offset:o,limit:s,store:i,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:h}=t,p=_(t,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=de(a,n,u,o,s,l.useRowCount(r,i),c,m);return b(ce,Z(Y({},p),{params:oe(ue(l.useTableCellIds(r,i),h,d?pe:l.CellView),se(i,r),l.useSortedRowIds(r,...g,s,i),g,f,w)}))},e.SortedTablePaginator=fe,e.StoreInspector=e=>null,e.TableInHtmlTable=e=>{var t=e,{tableId:r,store:a,editable:n,customCells:o}=t,s=_(t,["tableId","store","editable","customCells"]);return b(ce,Z(Y({},s),{params:oe(ue(l.useTableCellIds(r,a),o,n?pe:l.CellView),se(a,r),l.useRowIds(r,a))}))},e.ValuesInHtmlTable=({store:e,editable:t=!1,valueComponent:r=(t?ge:l.ValueView),getValueComponentProps:a,className:n,headerRow:o,idColumn:i})=>b("table",{className:n},!1===o?null:b("thead",null,b("tr",null,!1===i?null:b("th",null,"Id"),b("th",null,s))),b("tbody",null,I(l.useValueIds(e),(t=>b("tr",{key:t},!1===i?null:b("th",null,t),b("td",null,b(r,Z(Y({},v(a,t)),{valueId:t,store:e}))))))))},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("./ui-react")):"function"==typeof define&&define.amd?define(["exports","react","./ui-react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReactDom={},e.React,e.TinyBaseUiReact);
1
+ var e,l;e=this,l=function(e,l,t){"use strict";const a=e=>typeof e,n=a(""),o=a(!0),r=a(0),i="Value",s="currentTarget",d="value",u=isFinite,c=e=>null==e,{PureComponent:m,Fragment:h,createElement:b,useCallback:p,useLayoutEffect:g,useRef:f,useState:w}=l,y=(e,...l)=>c(e)?{}:e(...l),v=(e,l)=>e.map(l),I=Object,C=(e=[])=>I.fromEntries(e),k=(e,l)=>v(I.entries(e),(([e,t])=>l(t,e))),x="tinybaseStoreInspector",T="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",R='content:url("',O=R+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",S='</svg>")',N=R+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",V=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,l,t,a])=>O+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${l}' width='${t}' height='${a}' fill='white'/>`+S)),j=O+"<path d='M20 20l60 60M20 80l60-60' />"+S,z=O+`<path d='${T}' />`+S,P=O+`<path d='${T}M20 20l60 60' />`+S;var $=Object.defineProperty,q=Object.defineProperties,M=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,E=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable,F=(e,l,t)=>l in e?$(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,D=(e,l)=>{for(var t in l||(l={}))E.call(l,t)&&F(e,t,l[t]);if(B)for(var t of B(l))H.call(l,t)&&F(e,t,l[t]);return e},A=(e,l)=>q(e,M(l));const L="*::-webkit-scrollbar";((e,l="")=>{e.join(l)})(k(A(D(A(D(A(D({"":"all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999","*":"all:revert","*::before":"all:revert","*::after":"all:revert",[L]:"width:0.5rem;height:0.5rem;",[L+"-track"]:"background:#111",[L+"-thumb"]:"background:#999;border:1px solid #111",[L+"-thumb:hover"]:"background:#fff",[L+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+N},C(v(["bottom:0;left:0","top:0;right:0"],((e,l)=>[`>img[data-position='${l}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),C(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,l)=>[`main[data-position='${l}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":N,"header>img:nth-of-type(6)":j}),C(v(V,((e,l)=>[`header>img[data-id='${l}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":z,"details[open]>summary img.done":P,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem",[`th,#${x} td`]:"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,l)=>e?`#${x} ${l}{${e}}`:"")));const U=(e,l,t,a)=>e==n?l:e==r?t:a;var G=Object.defineProperty,J=Object.defineProperties,K=Object.getOwnPropertyDescriptors,Q=Object.getOwnPropertySymbols,W=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable,Y=(e,l,t)=>l in e?G(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,Z=(e,l)=>{for(var t in l||(l={}))W.call(l,t)&&Y(e,t,l[t]);if(Q)for(var t of Q(l))X.call(l,t)&&Y(e,t,l[t]);return e},_=(e,l)=>J(e,K(l)),ee=(e,l)=>{var t={};for(var a in e)W.call(e,a)&&l.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&Q)for(var a of Q(e))l.indexOf(a)<0&&X.call(e,a)&&(t[a]=e[a]);return t};const{useCallback:le,useMemo:te,useState:ae}=l,ne="editable",oe=(e,l)=>v(t.useTableCellIds(e,l),(l=>e+"."+l)),re=(e,l,t)=>{const a=le(e,l);return t?a:void 0},ie=(...e)=>te((()=>e),e),se=(e,l)=>te((()=>({store:e,tableId:l})),[e,l]),de=(e,l)=>te((()=>({queries:e,queryId:l})),[e,l]),ue=(e,l=!1,t,a=0,n,o,r,i)=>{const[[s,d,u],c]=ae([e,l,a]),m=le((e=>{c(e),null==i||i(e)}),[i]),h=re((e=>m([e,e==s&&!d,u])),[m,s,d,u],t),p=le((e=>m([s,d,e])),[m,s,d]),g=!0===r?we:r;return[[s,d,u],h,te((()=>!1===r?null:b(g,{offset:u,limit:n,total:o,onChange:p})),[r,g,u,n,o,p])]},ce=(e,l,t)=>te((()=>{const o=null!=l?l:e;return C(k(Array.isArray(o)?C(v(o,(e=>[e,e]))):o,((e,l)=>{return[l,Z(Z({},{label:l,component:t}),(o=e,a(o)==n?{label:e}:e))];var o})))}),[l,t,e]),me=({className:e,headerRow:l,idColumn:t,params:[a,n,o,r,i,s]})=>b("table",{className:e},s?b("caption",null,s):null,!1===l?null:b("thead",null,b("tr",null,!1===t?null:b(he,{sort:null!=r?r:[],label:"Id",onClick:i}),k(a,(({label:e},l)=>b(he,{key:l,cellId:l,label:e,sort:null!=r?r:[],onClick:i}))))),b("tbody",null,v(o,(e=>b("tr",{key:e},!1===t?null:b("th",null,e),k(a,(({component:l,getComponentProps:t},a)=>b("td",{key:a},b(l,_(Z(Z({},y(t,e,a)),n),{rowId:e,cellId:a})))))))))),he=({cellId:e,sort:[l,t],label:a=(null!=e?e:""),onClick:n})=>b("th",{onClick:re((()=>null==n?void 0:n(e)),[n,e],n),className:c(t)||l!=e?void 0:`sorted ${t?"de":"a"}scending`},c(t)||l!=e?null:(t?"↓":"↑")+" ",a),be=({localRowId:e,params:[a,n,o,r,i,s,d]})=>{const u=t.useRemoteRowId(i,e,s);return b("tr",null,!1===a?null:b(l.Fragment,null,b("th",null,e),b("th",null,u)),k(n,(({component:l,getComponentProps:t},a)=>{const[n,i]=a.split(".",2),s=n===o?e:n===r?u:null;return c(s)?null:b("td",{key:a},b(l,_(Z({},y(t,s,i)),{store:d,tableId:n,rowId:s,cellId:i})))})))},pe=({thing:e,onThingChange:l,className:t,hasSchema:i,showType:c=!0})=>{const[m,h]=ae(),[p,g]=ae(),[f,w]=ae(),[y,v]=ae(),[I,C]=ae();p!==e&&(h((e=>{const l=a(e);return(e=>e==n||e==o)(l)||l==r&&u(e)?l:void 0})(e)),g(e),w(e+""),v(Number(e)||0),C(!!e));const k=le(((e,t)=>{t(e),g(e),l(e)}),[l]),x=le((()=>{if(!(null==i?void 0:i())){const e=U(m,r,o,n),t=U(e,f,y,I);h(e),g(t),l(t)}}),[i,l,f,y,I,m]);return b("div",{className:t},c?b("button",{className:m,onClick:x},m):null,U(m,b("input",{key:m,value:f,onChange:le((e=>k(e[s][d]+"",w)),[k])}),b("input",{key:m,type:"number",value:y,onChange:le((e=>k(Number(e[s][d]||0),v)),[k])}),b("input",{key:m,type:"checkbox",checked:I,onChange:le((e=>k(!!e[s].checked,C)),[k])})))},ge=({tableId:e,rowId:l,cellId:a,store:n,className:o,showType:r})=>{var i;return b(pe,{thing:t.useCell(e,l,a,n),onThingChange:t.useSetCellCallback(e,l,a,(e=>e),[],n),className:null!=o?o:ne+"Cell",showType:r,hasSchema:null==(i=t.useStoreOrStoreById(n))?void 0:i.hasTablesSchema})},fe=({valueId:e,store:l,className:a,showType:n})=>{var o;return b(pe,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=a?a:ne+i,showType:n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},we=({onChange:e,total:t,offset:a=0,limit:n=t,singular:o="row",plural:r=o+"s"})=>{(a>t||a<0)&&(a=0,e(0));const i=re((()=>e(a-n)),[e,a,n],a>0),s=re((()=>e(a+n)),[e,a,n],a+n<t);return b(l.Fragment,null,t>n&&b(l.Fragment,null,b("button",{className:"previous",disabled:0==a,onClick:i},"←"),b("button",{className:"next",disabled:a+n>=t,onClick:s},"→"),a+1," to ",Math.min(t,a+n)," of "),t," ",1!=t?r:o)},ye=e=>new Map(e);ye(),ye(),e.EditableCellView=ge,e.EditableValueView=fe,e.RelationshipInHtmlTable=({relationshipId:e,relationships:a,editable:n,customCells:o,className:r,headerRow:i,idColumn:s=!0})=>{const[d,u,c,m]=((e,l)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(l),null==e?void 0:e.getRemoteTableId(l)])(t.useRelationshipsOrRelationshipsById(a),e),h=ce([...oe(c,u),...oe(m,u)],o,n?ge:t.CellView),p=ie(s,h,c,m,e,d,u);return b("table",{className:r},!1===i?null:b("thead",null,b("tr",null,!1===s?null:b(l.Fragment,null,b("th",null,c,".Id"),b("th",null,m,".Id")),k(h,(({label:e},l)=>b("th",{key:l},e))))),b("tbody",null,v(t.useRowIds(c,u),(e=>b(be,{key:e,localRowId:e,params:p})))))},e.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:a,cellId:n,descending:o,offset:r,limit:i,queries:s,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,h=ee(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ue(n,o,d,r,i,t.useResultRowCount(a,s),u,m);return b(me,_(Z({},h),{params:ie(ce(t.useResultTableCellIds(a,s),c,t.ResultCellView),de(s,a),t.useResultSortedRowIds(a,...p,i,s),p,g,f)}))},e.ResultTableInHtmlTable=e=>{var l=e,{queryId:a,queries:n,customCells:o}=l,r=ee(l,["queryId","queries","customCells"]);return b(me,_(Z({},r),{params:ie(ce(t.useResultTableCellIds(a,n),o,t.ResultCellView),de(n,a),t.useResultRowIds(a,n))}))},e.SliceInHtmlTable=e=>{var l=e,{indexId:a,sliceId:n,indexes:o,editable:r,customCells:i}=l,s=ee(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,l)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(l)])(t.useIndexesOrIndexesById(o),a);return b(me,_(Z({},s),{params:ie(ce(t.useTableCellIds(c,u),i,r?ge:t.CellView),se(u,c),t.useSliceRowIds(a,n,d))}))},e.SortedTableInHtmlTable=e=>{var l=e,{tableId:a,cellId:n,descending:o,offset:r,limit:i,store:s,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:h}=l,p=ee(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ue(n,o,u,r,i,t.useRowCount(a,s),c,m);return b(me,_(Z({},p),{params:ie(ce(t.useTableCellIds(a,s),h,d?ge:t.CellView),se(s,a),t.useSortedRowIds(a,...g,i,s),g,f,w)}))},e.SortedTablePaginator=we,e.StoreInspector=e=>null,e.TableInHtmlTable=e=>{var l=e,{tableId:a,store:n,editable:o,customCells:r}=l,i=ee(l,["tableId","store","editable","customCells"]);return b(me,_(Z({},i),{params:ie(ce(t.useTableCellIds(a,n),r,o?ge:t.CellView),se(n,a),t.useRowIds(a,n))}))},e.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:a=(l?fe:t.ValueView),getValueComponentProps:n,className:o,headerRow:r,idColumn:s})=>b("table",{className:o},!1===r?null:b("thead",null,b("tr",null,!1===s?null:b("th",null,"Id"),b("th",null,i))),b("tbody",null,v(t.useValueIds(e),(l=>b("tr",{key:l},!1===s?null:b("th",null,l),b("td",null,b(a,_(Z({},y(n,l)),{valueId:l,store:e}))))))))},"object"==typeof exports&&"undefined"!=typeof module?l(exports,require("react"),require("./ui-react")):"function"==typeof define&&define.amd?define(["exports","react","./ui-react"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReactDom={},e.React,e.TinyBaseUiReact);
Binary file
@@ -1 +1 @@
1
- var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,o="",l=t(o),r="Listener",u="Result",n="Ids",d="Table",i=d+"s",a=d+n,c="Row",I=c+"Count",p=c+n,C="Sorted"+c+n,b="Cell",w=b+n,R="Value",k=R+"s",v=R+n,g=e=>null==e,h=(e,s,t)=>g(e)?null==t?void 0:t():s(e),y=e=>t(e)==l,m=()=>{},L=(e,s)=>e.map(s),f=Object.keys,{createContext:S,useContext:V}=s,T=S([]),x=(e,s)=>{var t;const o=V(T);return g(e)?o[s]:y(e)?((e,s)=>h(e,(e=>e[s])))(null!=(t=o[s+1])?t:{},e):e},P=(e,s)=>{const t=x(e,s);return g(e)||y(e)?t:e},O=e=>{var s;return f(null!=(s=V(T)[e])?s:{})},q=e=>P(e,0),B=e=>P(e,2),M=e=>P(e,4),D=e=>P(e,6),j=e=>P(e,8),F=e=>P(e,10),Q=e=>e.toLowerCase();Q(r);const E="Transaction";Q(E);const{useCallback:A,useEffect:G,useMemo:U,useRef:W,useState:z}=s,H=(e,s,t=[])=>{const o=U((()=>s(e)),[e,...t]);return G((()=>()=>o.destroy()),[o]),o},J=(e,s,t,o=[],l)=>{const[,r]=z(),u=A((()=>{var l,r;return null!=(r=null==(l=null==s?void 0:s["get"+e])?void 0:l.call(s,...o))?r:t}),[s,...o]),[n]=z(u),d=W(n);return U((()=>d.current=u()),[u]),K(e,s,((...e)=>{d.current=g(l)?u():e[l],r([])}),[],o),d.current},K=(e,s,t,o=[],l=[],...u)=>G((()=>{var o;const n=null==(o=null==s?void 0:s["add"+e+r])?void 0:o.call(s,...l,t,...u);return()=>null==s?void 0:s.delListener(n)}),[s,...l,...o,...u]),N=(e,s,t,o=[],l=m,r=[],...u)=>{const n=q(e);return A((e=>h(n,(o=>h(t(e,o),(e=>l(o["set"+s](...u,e),e)))))),[n,s,...o,...r,...u])},X=(e,s,t=m,o=[],...l)=>{const r=q(e);return A((()=>t(null==r?void 0:r["del"+s](...l))),[r,s,...o,...l])},Y=(e,s,t)=>{const o=F(e);return A((()=>null==o?void 0:o[s](t)),[o,s,t])},Z=e=>J(a,q(e),[],[]),$=(e,s)=>J(p,q(s),[],[e]),_=(e,s,t,o=0,l,r)=>J(C,q(r),[],[e,s,t,o,l],6),ee=(e,s,t)=>J(w,q(t),[],[e,s]),se=(e,s,t,o)=>J(b,q(o),void 0,[e,s,t],4),te=e=>J(v,q(e),[],[]),oe=(e,s)=>J(R,q(s),void 0,[e]),le=(e,s)=>J("Metric",B(s),void 0,[e]),re=(e,s)=>J("SliceIds",M(s),[],[e]),ue=(e,s,t)=>J("Slice"+p,M(t),[],[e,s]),ne=(e,s,t)=>J("RemoteRowId",D(t),void 0,[e,s]),de=(e,s,t)=>J("Local"+p,D(t),[],[e,s]),ie=(e,s,t)=>J("Linked"+p,D(t),[],[e,s]),ae=(e,s)=>J(u+p,j(s),[],[e]),ce=(e,s,t,o=0,l,r)=>J(u+C,j(r),[],[e,s,t,o,l],6),Ie=(e,s,t)=>J(u+w,j(t),[],[e,s]),pe=(e,s,t,o)=>J(u+b,j(o),void 0,[e,s,t]),Ce=e=>J("CheckpointIds",F(e),[[],void 0,[]]),be=(e,s)=>J("Checkpoint",F(s),void 0,[e]),we=e=>Y(e,"goBackward"),Re=e=>Y(e,"goForward"),{PureComponent:ke,Fragment:ve,createElement:ge,useCallback:he,useLayoutEffect:ye,useRef:me,useState:Le}=s,fe=(e,...s)=>g(e)?{}:e(...s),Se=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Ve=Object.defineProperty,Te=Object.defineProperties,xe=Object.getOwnPropertyDescriptors,Pe=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable,Be=(e,s,t)=>s in e?Ve(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,Me=(e,s)=>{for(var t in s||(s={}))Oe.call(s,t)&&Be(e,t,s[t]);if(Pe)for(var t of Pe(s))qe.call(s,t)&&Be(e,t,s[t]);return e},De=(e,s)=>Te(e,xe(s)),je=(e,s)=>{var t={};for(var o in e)Oe.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&Pe)for(var o of Pe(e))s.indexOf(o)<0&&qe.call(e,o)&&(t[o]=e[o]);return t};const{useMemo:Fe}=s,Qe=({tableId:e,store:s,rowComponent:t=ze,getRowComponentProps:o,customCellIds:l,separator:r,debugIds:u},n)=>Ue(L(n,(r=>ge(t,De(Me({},fe(o,r)),{key:r,tableId:e,rowId:r,customCellIds:l,store:s,debugIds:u})))),r,u,e),Ee=({queryId:e,queries:s,resultRowComponent:t=Xe,getResultRowComponentProps:o,separator:l,debugIds:r},u)=>Ue(L(u,(l=>ge(t,De(Me({},fe(o,l)),{key:l,queryId:e,rowId:l,queries:s,debugIds:r})))),l,r,e),Ae=({relationshipId:e,relationships:s,rowComponent:t=ze,getRowComponentProps:o,separator:l,debugIds:r},u,n)=>{const[d,i,a]=Se(D(s),e),c=u(e,n,d);return Ue(L(c,(e=>ge(t,De(Me({},fe(o,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),l,r,n)},Ge=e=>({checkpoints:s,checkpointComponent:t=Ye,getCheckpointComponentProps:o,separator:l,debugIds:r})=>{const u=F(s);return Ue(L(e(Ce(u)),(e=>ge(t,De(Me({},fe(o,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:r})))),l)},Ue=(e,s,t,o)=>{const l=g(s)||!Array.isArray(e)?e:L(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",l,"}"]:l},We=({tableId:e,rowId:s,cellId:t,store:l,debugIds:r})=>{var u;return Ue(o+(null!=(u=se(e,s,t,l))?u:o),void 0,r,t)},ze=({tableId:e,rowId:s,store:t,cellComponent:o=We,getCellComponentProps:l,customCellIds:r,separator:u,debugIds:n})=>Ue(L(((e,s,t,o)=>{const l=ee(s,t,o);return null!=e?e:l})(r,e,s,t),(r=>ge(o,De(Me({},fe(l,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),u,n,s),He=e=>Qe(e,$(e.tableId,e.store)),Je=({valueId:e,store:s,debugIds:t})=>{var l;return Ue(o+(null!=(l=oe(e,s))?l:o),void 0,t,e)},Ke=({indexId:e,sliceId:s,indexes:t,rowComponent:o=ze,getRowComponentProps:l,separator:r,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(M(t),e),a=ue(e,s,n);return Ue(L(a,(e=>ge(o,De(Me({},fe(l,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),r,u,s)},Ne=({queryId:e,rowId:s,cellId:t,queries:l,debugIds:r})=>{var u;return Ue(o+(null!=(u=pe(e,s,t,l))?u:o),void 0,r,t)},Xe=({queryId:e,rowId:s,queries:t,resultCellComponent:o=Ne,getResultCellComponentProps:l,separator:r,debugIds:u})=>Ue(L(Ie(e,s,t),(r=>ge(o,De(Me({},fe(l,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:u})))),r,u,s),Ye=({checkpoints:e,checkpointId:s,debugIds:t})=>{var l;return Ue(null!=(l=be(s,e))?l:o,void 0,t,s)},Ze=Ge((e=>e[0])),$e=Ge((e=>g(e[1])?[]:[e[1]])),_e=Ge((e=>e[2]));e.BackwardCheckpointsView=Ze,e.CellView=We,e.CheckpointView=Ye,e.CurrentCheckpointView=$e,e.ForwardCheckpointsView=_e,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=Ke,getSliceComponentProps:o,separator:l,debugIds:r})=>Ue(L(re(e,s),(l=>ge(t,De(Me({},fe(o,l)),{key:l,indexId:e,sliceId:l,indexes:s,debugIds:r})))),l,r,e),e.LinkedRowsView=e=>Ae(e,ie,e.firstRowId),e.LocalRowsView=e=>Ae(e,de,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var l;return Ue(null!=(l=le(e,s))?l:o,void 0,t,e)},e.Provider=({store:e,storesById:t,metrics:o,metricsById:l,indexes:r,indexesById:u,relationships:n,relationshipsById:d,queries:i,queriesById:a,checkpoints:c,checkpointsById:I,children:p})=>{const C=s.useContext(T);return ge(T.Provider,{value:Fe((()=>[null!=e?e:C[0],Me(Me({},C[1]),t),null!=o?o:C[2],Me(Me({},C[3]),l),null!=r?r:C[4],Me(Me({},C[5]),u),null!=n?n:C[6],Me(Me({},C[7]),d),null!=i?i:C[8],Me(Me({},C[9]),a),null!=c?c:C[10],Me(Me({},C[11]),I)]),[e,t,o,l,r,u,n,d,i,a,c,I,C])},p)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=ze,getRowComponentProps:l,debugIds:r})=>{const[u,n,,d]=Se(D(t),e),i=ne(e,s,u);return Ue(g(d)||g(i)?null:ge(o,De(Me({},fe(l,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:r})),void 0,r,s)},e.ResultCellView=Ne,e.ResultRowView=Xe,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,u=je(s,["cellId","descending","offset","limit"]);return Ee(u,ce(u.queryId,t,o,l,r,u.queries))},e.ResultTableView=e=>Ee(e,ae(e.queryId,e.queries)),e.RowView=ze,e.SliceView=Ke,e.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,u=je(s,["cellId","descending","offset","limit"]);return Qe(u,_(u.tableId,t,o,l,r,u.store))},e.TableView=He,e.TablesView=({store:e,tableComponent:s=He,getTableComponentProps:t,separator:o,debugIds:l})=>Ue(L(Z(e),(o=>ge(s,De(Me({},fe(t,o)),{key:o,tableId:o,store:e,debugIds:l})))),o),e.ValueView=Je,e.ValuesView=({store:e,valueComponent:s=Je,getValueComponentProps:t,separator:o,debugIds:l})=>Ue(L(te(e),(o=>ge(s,De(Me({},fe(t,o)),{key:o,valueId:o,store:e,debugIds:l})))),o),e.useAddRowCallback=(e,s,t=[],o,l=m,r=[],u=!0)=>{const n=q(o);return A((t=>h(n,(o=>h(s(t,o),(s=>l(o.addRow(e,s,u),o,s)))))),[n,e,...t,...r,u])},e.useCell=se,e.useCellIds=ee,e.useCellIdsListener=(e,s,t,o,l,r)=>K(w,q(r),t,o,[e,s],l),e.useCellListener=(e,s,t,o,l,r,u)=>K(b,q(u),o,l,[e,s,t],r),e.useCheckpoint=be,e.useCheckpointIds=Ce,e.useCheckpointIdsListener=(e,s,t)=>K("CheckpointIds",F(t),e,s),e.useCheckpointListener=(e,s,t,o)=>K("Checkpoint",F(o),s,t,[e]),e.useCheckpoints=e=>x(e,10),e.useCheckpointsIds=()=>O(11),e.useCheckpointsOrCheckpointsById=F,e.useCreateCheckpoints=(e,s,t)=>H(e,s,t),e.useCreateIndexes=(e,s,t)=>H(e,s,t),e.useCreateMetrics=(e,s,t)=>H(e,s,t),e.useCreatePersister=(e,s,t=[],o,l=[])=>{const[,r]=z(),u=U((()=>s(e)),[e,...t]);return G((()=>{var e;return e=function*(){yield null==o?void 0:o(u),r(1)},new Promise(((s,t)=>{var o=s=>{try{r(e.next(s))}catch(e){t(e)}},l=s=>{try{r(e.throw(s))}catch(e){t(e)}},r=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,l);r((e=e.apply(void 0,null)).next())})),()=>{null==u||u.destroy()}}),[u,...l]),u},e.useCreateQueries=(e,s,t)=>H(e,s,t),e.useCreateRelationships=(e,s,t)=>H(e,s,t),e.useCreateStore=(e,s=[])=>U(e,s),e.useDelCellCallback=(e,s,t,o,l,r,u)=>X(l,b,r,u,e,s,t,o),e.useDelRowCallback=(e,s,t,o,l)=>X(t,c,o,l,e,s),e.useDelTableCallback=(e,s,t,o)=>X(s,d,t,o,e),e.useDelTablesCallback=(e,s,t)=>X(e,i,s,t),e.useDelValueCallback=(e,s,t,o)=>X(s,R,t,o,e),e.useDelValuesCallback=(e,s,t)=>X(e,k,s,t),e.useDidFinishTransactionListener=(e,s,t)=>K("DidFinish"+E,q(t),e,s),e.useGoBackwardCallback=we,e.useGoForwardCallback=Re,e.useGoToCallback=(e,s=[],t,o=m,l=[])=>{const r=F(t);return A((s=>h(r,(t=>h(e(s),(e=>o(t.goTo(e),e)))))),[r,...s,...l])},e.useIndexIds=e=>J("IndexIds",M(e),[]),e.useIndexes=e=>x(e,4),e.useIndexesIds=()=>O(5),e.useIndexesOrIndexesById=M,e.useLinkedRowIds=ie,e.useLinkedRowIdsListener=(e,s,t,o,l)=>K("Linked"+p,D(l),t,o,[e,s]),e.useLocalRowIds=de,e.useLocalRowIdsListener=(e,s,t,o,l)=>K("Local"+p,D(l),t,o,[e,s]),e.useMetric=le,e.useMetricIds=e=>J("MetricIds",B(e),[]),e.useMetricListener=(e,s,t,o)=>K("Metric",B(o),s,t,[e]),e.useMetrics=e=>x(e,2),e.useMetricsIds=()=>O(3),e.useMetricsOrMetricsById=B,e.useQueries=e=>x(e,8),e.useQueriesIds=()=>O(9),e.useQueriesOrQueriesById=j,e.useQueryIds=e=>J("QueryIds",j(e),[]),e.useRedoInformation=e=>{var s;const t=F(e),[,,[l]]=Ce(t);return[!g(l),Re(t),l,null!=(s=h(l,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o]},e.useRelationshipIds=e=>J("RelationshipIds",D(e),[]),e.useRelationships=e=>x(e,6),e.useRelationshipsIds=()=>O(7),e.useRelationshipsOrRelationshipsById=D,e.useRemoteRowId=ne,e.useRemoteRowIdListener=(e,s,t,o,l)=>K("RemoteRowId",D(l),t,o,[e,s]),e.useResultCell=pe,e.useResultCellIds=Ie,e.useResultCellIdsListener=(e,s,t,o,l)=>K(u+w,j(l),t,o,[e,s]),e.useResultCellListener=(e,s,t,o,l,r)=>K(u+b,j(r),o,l,[e,s,t]),e.useResultRow=(e,s,t)=>J(u+c,j(t),{},[e,s]),e.useResultRowCount=(e,s)=>J(u+I,j(s),[],[e]),e.useResultRowCountListener=(e,s,t,o)=>K(u+I,j(o),s,t,[e]),e.useResultRowIds=ae,e.useResultRowIdsListener=(e,s,t,o)=>K(u+p,j(o),s,t,[e]),e.useResultRowListener=(e,s,t,o,l)=>K(u+c,j(l),t,o,[e,s]),e.useResultSortedRowIds=ce,e.useResultSortedRowIdsListener=(e,s,t,o,l,r,n,d)=>K(u+C,j(d),r,n,[e,s,t,o,l]),e.useResultTable=(e,s)=>J(u+d,j(s),{},[e]),e.useResultTableCellIds=(e,s)=>J(u+d+w,j(s),[],[e]),e.useResultTableCellIdsListener=(e,s,t,o)=>K(u+d+w,j(o),s,t,[e]),e.useResultTableListener=(e,s,t,o)=>K(u+d,j(o),s,t,[e]),e.useRow=(e,s,t)=>J(c,q(t),{},[e,s]),e.useRowCount=(e,s)=>J(I,q(s),[],[e]),e.useRowCountListener=(e,s,t,o,l)=>K(I,q(l),s,t,[e],o),e.useRowIds=$,e.useRowIdsListener=(e,s,t,o,l)=>K(p,q(l),s,t,[e],o),e.useRowListener=(e,s,t,o,l,r)=>K(c,q(r),t,o,[e,s],l),e.useSetCellCallback=(e,s,t,o,l,r,u,n)=>N(r,b,o,l,u,n,e,s,t),e.useSetCheckpointCallback=(e=m,s=[],t,o=m,l=[])=>{const r=F(t);return A((s=>h(r,(t=>{const l=e(s);o(t.addCheckpoint(l),t,l)}))),[r,...s,...l])},e.useSetPartialRowCallback=(e,s,t,o,l,r,u)=>N(l,"PartialRow",t,o,r,u,e,s),e.useSetPartialValuesCallback=(e,s,t,o,l)=>N(t,"PartialValues",e,s,o,l),e.useSetRowCallback=(e,s,t,o,l,r,u)=>N(l,c,t,o,r,u,e,s),e.useSetTableCallback=(e,s,t,o,l,r)=>N(o,d,s,t,l,r,e),e.useSetTablesCallback=(e,s,t,o,l)=>N(t,i,e,s,o,l),e.useSetValueCallback=(e,s,t,o,l,r)=>N(o,R,s,t,l,r,e),e.useSetValuesCallback=(e,s,t,o,l)=>N(t,k,e,s,o,l),e.useSliceIds=re,e.useSliceIdsListener=(e,s,t,o)=>K("SliceIds",M(o),s,t,[e]),e.useSliceRowIds=ue,e.useSliceRowIdsListener=(e,s,t,o,l)=>K("Slice"+p,M(l),t,o,[e,s]),e.useSortedRowIds=_,e.useSortedRowIdsListener=(e,s,t,o,l,r,u,n,d)=>K(C,q(d),r,u,[e,s,t,o,l],n),e.useStartTransactionListener=(e,s,t)=>K("Start"+E,q(t),e,s),e.useStore=e=>x(e,0),e.useStoreIds=()=>O(1),e.useStoreOrStoreById=q,e.useTable=(e,s)=>J(d,q(s),{},[e]),e.useTableCellIds=(e,s)=>J(d+w,q(s),[],[e]),e.useTableCellIdsListener=(e,s,t,o,l)=>K(d+w,q(l),s,t,[e],o),e.useTableIds=Z,e.useTableIdsListener=(e,s,t,o)=>K(a,q(o),e,s,[],t),e.useTableListener=(e,s,t,o,l)=>K(d,q(l),s,t,[e],o),e.useTables=e=>J(i,q(e),{}),e.useTablesListener=(e,s,t,o)=>K(i,q(o),e,s,[],t),e.useUndoInformation=e=>{var s;const t=F(e),[l,r]=Ce(t);return[(u=l,!(0==(e=>e.length)(u))),we(t),r,null!=(s=h(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o];var u},e.useValue=oe,e.useValueIds=te,e.useValueIdsListener=(e,s,t,o)=>K(v,q(o),e,s,[],t),e.useValueListener=(e,s,t,o,l)=>K(R,q(l),s,t,[e],o),e.useValues=e=>J(k,q(e),{}),e.useValuesListener=(e,s,t,o)=>K(k,q(o),e,s,[],t),e.useWillFinishTransactionListener=(e,s,t)=>K("WillFinish"+E,q(t),e,s)},"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],s):s((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReact={},e.React);
1
+ var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,o="",l=t(o),r="Listener",u="Result",n="Ids",d="Table",i=d+"s",a=d+n,c="Row",I=c+"Count",p=c+n,C="Sorted"+c+n,b="Cell",w=b+n,R="Value",k=R+"s",v=R+n,g=e=>null==e,h=(e,s,t)=>g(e)?null==t?void 0:t():s(e),y=e=>t(e)==l,m=()=>{},L=(e,s)=>e.map(s),f=Object.keys,{createContext:S,useContext:V}=s,T=S([]),x=(e,s)=>{var t;const o=V(T);return g(e)?o[s]:y(e)?((e,s)=>h(e,(e=>e[s])))(null!=(t=o[s+1])?t:{},e):e},P=(e,s)=>{const t=x(e,s);return g(e)||y(e)?t:e},O=e=>{var s;return f(null!=(s=V(T)[e])?s:{})},q=e=>P(e,0),B=e=>P(e,2),M=e=>P(e,4),D=e=>P(e,6),j=e=>P(e,8),F=e=>P(e,10),Q=e=>e.toLowerCase();Q(r);const E="Transaction";Q(E);const{useCallback:A,useEffect:G,useMemo:U,useRef:W,useState:z}=s,H=(e,s,t=[])=>{const o=U((()=>s(e)),[e,...t]);return G((()=>()=>o.destroy()),[o]),o},J=(e,s,t,o=[],l)=>{const[,r]=z(),u=A((()=>{var l,r;return null!=(r=null==(l=null==s?void 0:s["get"+e])?void 0:l.call(s,...o))?r:t}),[s,...o]),n=W();return U((()=>n.current=u()),[u]),K(e,s,((...e)=>{n.current=g(l)?u():e[l],r([])}),[],o),n.current},K=(e,s,t,o=[],l=[],...u)=>{const n=[s,...l,...o,...u],d=U((()=>{var o;return null==(o=null==s?void 0:s["add"+e+r])?void 0:o.call(s,...l,t,...u)}),n);G((()=>()=>null==s?void 0:s.delListener(d)),n)},N=(e,s,t,o=[],l=m,r=[],...u)=>{const n=q(e);return A((e=>h(n,(o=>h(t(e,o),(e=>l(o["set"+s](...u,e),e)))))),[n,s,...o,...r,...u])},X=(e,s,t=m,o=[],...l)=>{const r=q(e);return A((()=>t(null==r?void 0:r["del"+s](...l))),[r,s,...o,...l])},Y=(e,s,t)=>{const o=F(e);return A((()=>null==o?void 0:o[s](t)),[o,s,t])},Z=e=>J(a,q(e),[],[]),$=(e,s)=>J(p,q(s),[],[e]),_=(e,s,t,o=0,l,r)=>J(C,q(r),[],[e,s,t,o,l],6),ee=(e,s,t)=>J(w,q(t),[],[e,s]),se=(e,s,t,o)=>J(b,q(o),void 0,[e,s,t],4),te=e=>J(v,q(e),[],[]),oe=(e,s)=>J(R,q(s),void 0,[e]),le=(e,s)=>J("Metric",B(s),void 0,[e]),re=(e,s)=>J("SliceIds",M(s),[],[e]),ue=(e,s,t)=>J("Slice"+p,M(t),[],[e,s]),ne=(e,s,t)=>J("RemoteRowId",D(t),void 0,[e,s]),de=(e,s,t)=>J("Local"+p,D(t),[],[e,s]),ie=(e,s,t)=>J("Linked"+p,D(t),[],[e,s]),ae=(e,s)=>J(u+p,j(s),[],[e]),ce=(e,s,t,o=0,l,r)=>J(u+C,j(r),[],[e,s,t,o,l],6),Ie=(e,s,t)=>J(u+w,j(t),[],[e,s]),pe=(e,s,t,o)=>J(u+b,j(o),void 0,[e,s,t]),Ce=e=>J("CheckpointIds",F(e),[[],void 0,[]]),be=(e,s)=>J("Checkpoint",F(s),void 0,[e]),we=e=>Y(e,"goBackward"),Re=e=>Y(e,"goForward"),{PureComponent:ke,Fragment:ve,createElement:ge,useCallback:he,useLayoutEffect:ye,useRef:me,useState:Le}=s,fe=(e,...s)=>g(e)?{}:e(...s),Se=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Ve=Object.defineProperty,Te=Object.defineProperties,xe=Object.getOwnPropertyDescriptors,Pe=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable,Be=(e,s,t)=>s in e?Ve(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,Me=(e,s)=>{for(var t in s||(s={}))Oe.call(s,t)&&Be(e,t,s[t]);if(Pe)for(var t of Pe(s))qe.call(s,t)&&Be(e,t,s[t]);return e},De=(e,s)=>Te(e,xe(s)),je=(e,s)=>{var t={};for(var o in e)Oe.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&Pe)for(var o of Pe(e))s.indexOf(o)<0&&qe.call(e,o)&&(t[o]=e[o]);return t};const{useMemo:Fe}=s,Qe=({tableId:e,store:s,rowComponent:t=ze,getRowComponentProps:o,customCellIds:l,separator:r,debugIds:u},n)=>Ue(L(n,(r=>ge(t,De(Me({},fe(o,r)),{key:r,tableId:e,rowId:r,customCellIds:l,store:s,debugIds:u})))),r,u,e),Ee=({queryId:e,queries:s,resultRowComponent:t=Xe,getResultRowComponentProps:o,separator:l,debugIds:r},u)=>Ue(L(u,(l=>ge(t,De(Me({},fe(o,l)),{key:l,queryId:e,rowId:l,queries:s,debugIds:r})))),l,r,e),Ae=({relationshipId:e,relationships:s,rowComponent:t=ze,getRowComponentProps:o,separator:l,debugIds:r},u,n)=>{const[d,i,a]=Se(D(s),e),c=u(e,n,d);return Ue(L(c,(e=>ge(t,De(Me({},fe(o,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),l,r,n)},Ge=e=>({checkpoints:s,checkpointComponent:t=Ye,getCheckpointComponentProps:o,separator:l,debugIds:r})=>{const u=F(s);return Ue(L(e(Ce(u)),(e=>ge(t,De(Me({},fe(o,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:r})))),l)},Ue=(e,s,t,o)=>{const l=g(s)||!Array.isArray(e)?e:L(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",l,"}"]:l},We=({tableId:e,rowId:s,cellId:t,store:l,debugIds:r})=>{var u;return Ue(o+(null!=(u=se(e,s,t,l))?u:o),void 0,r,t)},ze=({tableId:e,rowId:s,store:t,cellComponent:o=We,getCellComponentProps:l,customCellIds:r,separator:u,debugIds:n})=>Ue(L(((e,s,t,o)=>{const l=ee(s,t,o);return null!=e?e:l})(r,e,s,t),(r=>ge(o,De(Me({},fe(l,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),u,n,s),He=e=>Qe(e,$(e.tableId,e.store)),Je=({valueId:e,store:s,debugIds:t})=>{var l;return Ue(o+(null!=(l=oe(e,s))?l:o),void 0,t,e)},Ke=({indexId:e,sliceId:s,indexes:t,rowComponent:o=ze,getRowComponentProps:l,separator:r,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(M(t),e),a=ue(e,s,n);return Ue(L(a,(e=>ge(o,De(Me({},fe(l,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),r,u,s)},Ne=({queryId:e,rowId:s,cellId:t,queries:l,debugIds:r})=>{var u;return Ue(o+(null!=(u=pe(e,s,t,l))?u:o),void 0,r,t)},Xe=({queryId:e,rowId:s,queries:t,resultCellComponent:o=Ne,getResultCellComponentProps:l,separator:r,debugIds:u})=>Ue(L(Ie(e,s,t),(r=>ge(o,De(Me({},fe(l,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:u})))),r,u,s),Ye=({checkpoints:e,checkpointId:s,debugIds:t})=>{var l;return Ue(null!=(l=be(s,e))?l:o,void 0,t,s)},Ze=Ge((e=>e[0])),$e=Ge((e=>g(e[1])?[]:[e[1]])),_e=Ge((e=>e[2]));e.BackwardCheckpointsView=Ze,e.CellView=We,e.CheckpointView=Ye,e.CurrentCheckpointView=$e,e.ForwardCheckpointsView=_e,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=Ke,getSliceComponentProps:o,separator:l,debugIds:r})=>Ue(L(re(e,s),(l=>ge(t,De(Me({},fe(o,l)),{key:l,indexId:e,sliceId:l,indexes:s,debugIds:r})))),l,r,e),e.LinkedRowsView=e=>Ae(e,ie,e.firstRowId),e.LocalRowsView=e=>Ae(e,de,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var l;return Ue(null!=(l=le(e,s))?l:o,void 0,t,e)},e.Provider=({store:e,storesById:t,metrics:o,metricsById:l,indexes:r,indexesById:u,relationships:n,relationshipsById:d,queries:i,queriesById:a,checkpoints:c,checkpointsById:I,children:p})=>{const C=s.useContext(T);return ge(T.Provider,{value:Fe((()=>[null!=e?e:C[0],Me(Me({},C[1]),t),null!=o?o:C[2],Me(Me({},C[3]),l),null!=r?r:C[4],Me(Me({},C[5]),u),null!=n?n:C[6],Me(Me({},C[7]),d),null!=i?i:C[8],Me(Me({},C[9]),a),null!=c?c:C[10],Me(Me({},C[11]),I)]),[e,t,o,l,r,u,n,d,i,a,c,I,C])},p)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=ze,getRowComponentProps:l,debugIds:r})=>{const[u,n,,d]=Se(D(t),e),i=ne(e,s,u);return Ue(g(d)||g(i)?null:ge(o,De(Me({},fe(l,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:r})),void 0,r,s)},e.ResultCellView=Ne,e.ResultRowView=Xe,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,u=je(s,["cellId","descending","offset","limit"]);return Ee(u,ce(u.queryId,t,o,l,r,u.queries))},e.ResultTableView=e=>Ee(e,ae(e.queryId,e.queries)),e.RowView=ze,e.SliceView=Ke,e.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,u=je(s,["cellId","descending","offset","limit"]);return Qe(u,_(u.tableId,t,o,l,r,u.store))},e.TableView=He,e.TablesView=({store:e,tableComponent:s=He,getTableComponentProps:t,separator:o,debugIds:l})=>Ue(L(Z(e),(o=>ge(s,De(Me({},fe(t,o)),{key:o,tableId:o,store:e,debugIds:l})))),o),e.ValueView=Je,e.ValuesView=({store:e,valueComponent:s=Je,getValueComponentProps:t,separator:o,debugIds:l})=>Ue(L(te(e),(o=>ge(s,De(Me({},fe(t,o)),{key:o,valueId:o,store:e,debugIds:l})))),o),e.useAddRowCallback=(e,s,t=[],o,l=m,r=[],u=!0)=>{const n=q(o);return A((t=>h(n,(o=>h(s(t,o),(s=>l(o.addRow(e,s,u),o,s)))))),[n,e,...t,...r,u])},e.useCell=se,e.useCellIds=ee,e.useCellIdsListener=(e,s,t,o,l,r)=>K(w,q(r),t,o,[e,s],l),e.useCellListener=(e,s,t,o,l,r,u)=>K(b,q(u),o,l,[e,s,t],r),e.useCheckpoint=be,e.useCheckpointIds=Ce,e.useCheckpointIdsListener=(e,s,t)=>K("CheckpointIds",F(t),e,s),e.useCheckpointListener=(e,s,t,o)=>K("Checkpoint",F(o),s,t,[e]),e.useCheckpoints=e=>x(e,10),e.useCheckpointsIds=()=>O(11),e.useCheckpointsOrCheckpointsById=F,e.useCreateCheckpoints=(e,s,t)=>H(e,s,t),e.useCreateIndexes=(e,s,t)=>H(e,s,t),e.useCreateMetrics=(e,s,t)=>H(e,s,t),e.useCreatePersister=(e,s,t=[],o,l=[],r,u=[])=>{const[,n]=z(),d=U((()=>s(e)),[e,...t]);return G((()=>{var e;return e=function*(){o&&(yield o(d),n([]))},new Promise(((s,t)=>{var o=s=>{try{r(e.next(s))}catch(e){t(e)}},l=s=>{try{r(e.throw(s))}catch(e){t(e)}},r=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,l);r((e=e.apply(void 0,null)).next())})),()=>{null==d||d.destroy(),null==r||r(d)}}),[d,...l,...u]),d},e.useCreateQueries=(e,s,t)=>H(e,s,t),e.useCreateRelationships=(e,s,t)=>H(e,s,t),e.useCreateStore=(e,s=[])=>U(e,s),e.useDelCellCallback=(e,s,t,o,l,r,u)=>X(l,b,r,u,e,s,t,o),e.useDelRowCallback=(e,s,t,o,l)=>X(t,c,o,l,e,s),e.useDelTableCallback=(e,s,t,o)=>X(s,d,t,o,e),e.useDelTablesCallback=(e,s,t)=>X(e,i,s,t),e.useDelValueCallback=(e,s,t,o)=>X(s,R,t,o,e),e.useDelValuesCallback=(e,s,t)=>X(e,k,s,t),e.useDidFinishTransactionListener=(e,s,t)=>K("DidFinish"+E,q(t),e,s),e.useGoBackwardCallback=we,e.useGoForwardCallback=Re,e.useGoToCallback=(e,s=[],t,o=m,l=[])=>{const r=F(t);return A((s=>h(r,(t=>h(e(s),(e=>o(t.goTo(e),e)))))),[r,...s,...l])},e.useIndexIds=e=>J("IndexIds",M(e),[]),e.useIndexes=e=>x(e,4),e.useIndexesIds=()=>O(5),e.useIndexesOrIndexesById=M,e.useLinkedRowIds=ie,e.useLinkedRowIdsListener=(e,s,t,o,l)=>K("Linked"+p,D(l),t,o,[e,s]),e.useLocalRowIds=de,e.useLocalRowIdsListener=(e,s,t,o,l)=>K("Local"+p,D(l),t,o,[e,s]),e.useMetric=le,e.useMetricIds=e=>J("MetricIds",B(e),[]),e.useMetricListener=(e,s,t,o)=>K("Metric",B(o),s,t,[e]),e.useMetrics=e=>x(e,2),e.useMetricsIds=()=>O(3),e.useMetricsOrMetricsById=B,e.useQueries=e=>x(e,8),e.useQueriesIds=()=>O(9),e.useQueriesOrQueriesById=j,e.useQueryIds=e=>J("QueryIds",j(e),[]),e.useRedoInformation=e=>{var s;const t=F(e),[,,[l]]=Ce(t);return[!g(l),Re(t),l,null!=(s=h(l,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o]},e.useRelationshipIds=e=>J("RelationshipIds",D(e),[]),e.useRelationships=e=>x(e,6),e.useRelationshipsIds=()=>O(7),e.useRelationshipsOrRelationshipsById=D,e.useRemoteRowId=ne,e.useRemoteRowIdListener=(e,s,t,o,l)=>K("RemoteRowId",D(l),t,o,[e,s]),e.useResultCell=pe,e.useResultCellIds=Ie,e.useResultCellIdsListener=(e,s,t,o,l)=>K(u+w,j(l),t,o,[e,s]),e.useResultCellListener=(e,s,t,o,l,r)=>K(u+b,j(r),o,l,[e,s,t]),e.useResultRow=(e,s,t)=>J(u+c,j(t),{},[e,s]),e.useResultRowCount=(e,s)=>J(u+I,j(s),[],[e]),e.useResultRowCountListener=(e,s,t,o)=>K(u+I,j(o),s,t,[e]),e.useResultRowIds=ae,e.useResultRowIdsListener=(e,s,t,o)=>K(u+p,j(o),s,t,[e]),e.useResultRowListener=(e,s,t,o,l)=>K(u+c,j(l),t,o,[e,s]),e.useResultSortedRowIds=ce,e.useResultSortedRowIdsListener=(e,s,t,o,l,r,n,d)=>K(u+C,j(d),r,n,[e,s,t,o,l]),e.useResultTable=(e,s)=>J(u+d,j(s),{},[e]),e.useResultTableCellIds=(e,s)=>J(u+d+w,j(s),[],[e]),e.useResultTableCellIdsListener=(e,s,t,o)=>K(u+d+w,j(o),s,t,[e]),e.useResultTableListener=(e,s,t,o)=>K(u+d,j(o),s,t,[e]),e.useRow=(e,s,t)=>J(c,q(t),{},[e,s]),e.useRowCount=(e,s)=>J(I,q(s),[],[e]),e.useRowCountListener=(e,s,t,o,l)=>K(I,q(l),s,t,[e],o),e.useRowIds=$,e.useRowIdsListener=(e,s,t,o,l)=>K(p,q(l),s,t,[e],o),e.useRowListener=(e,s,t,o,l,r)=>K(c,q(r),t,o,[e,s],l),e.useSetCellCallback=(e,s,t,o,l,r,u,n)=>N(r,b,o,l,u,n,e,s,t),e.useSetCheckpointCallback=(e=m,s=[],t,o=m,l=[])=>{const r=F(t);return A((s=>h(r,(t=>{const l=e(s);o(t.addCheckpoint(l),t,l)}))),[r,...s,...l])},e.useSetPartialRowCallback=(e,s,t,o,l,r,u)=>N(l,"PartialRow",t,o,r,u,e,s),e.useSetPartialValuesCallback=(e,s,t,o,l)=>N(t,"PartialValues",e,s,o,l),e.useSetRowCallback=(e,s,t,o,l,r,u)=>N(l,c,t,o,r,u,e,s),e.useSetTableCallback=(e,s,t,o,l,r)=>N(o,d,s,t,l,r,e),e.useSetTablesCallback=(e,s,t,o,l)=>N(t,i,e,s,o,l),e.useSetValueCallback=(e,s,t,o,l,r)=>N(o,R,s,t,l,r,e),e.useSetValuesCallback=(e,s,t,o,l)=>N(t,k,e,s,o,l),e.useSliceIds=re,e.useSliceIdsListener=(e,s,t,o)=>K("SliceIds",M(o),s,t,[e]),e.useSliceRowIds=ue,e.useSliceRowIdsListener=(e,s,t,o,l)=>K("Slice"+p,M(l),t,o,[e,s]),e.useSortedRowIds=_,e.useSortedRowIdsListener=(e,s,t,o,l,r,u,n,d)=>K(C,q(d),r,u,[e,s,t,o,l],n),e.useStartTransactionListener=(e,s,t)=>K("Start"+E,q(t),e,s),e.useStore=e=>x(e,0),e.useStoreIds=()=>O(1),e.useStoreOrStoreById=q,e.useTable=(e,s)=>J(d,q(s),{},[e]),e.useTableCellIds=(e,s)=>J(d+w,q(s),[],[e]),e.useTableCellIdsListener=(e,s,t,o,l)=>K(d+w,q(l),s,t,[e],o),e.useTableIds=Z,e.useTableIdsListener=(e,s,t,o)=>K(a,q(o),e,s,[],t),e.useTableListener=(e,s,t,o,l)=>K(d,q(l),s,t,[e],o),e.useTables=e=>J(i,q(e),{}),e.useTablesListener=(e,s,t,o)=>K(i,q(o),e,s,[],t),e.useUndoInformation=e=>{var s;const t=F(e),[l,r]=Ce(t);return[(u=l,!(0==u.length)),we(t),r,null!=(s=h(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o];var u},e.useValue=oe,e.useValueIds=te,e.useValueIdsListener=(e,s,t,o)=>K(v,q(o),e,s,[],t),e.useValueListener=(e,s,t,o,l)=>K(R,q(l),s,t,[e],o),e.useValues=e=>J(k,q(e),{}),e.useValuesListener=(e,s,t,o)=>K(k,q(o),e,s,[],t),e.useWillFinishTransactionListener=(e,s,t)=>K("WillFinish"+E,q(t),e,s)},"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],s):s((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReact={},e.React);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinybase",
3
- "version": "4.4.0-beta.0",
3
+ "version": "4.4.0-beta.1",
4
4
  "author": "jamesgpearce",
5
5
  "repository": "github:tinyplex/tinybase",
6
6
  "license": "MIT",
@@ -82,6 +82,10 @@
82
82
  },
83
83
  "typesVersions": {
84
84
  "*": {
85
+ "*": [
86
+ "./lib/types/*.d.ts",
87
+ "./lib/types/tinybase.d.ts"
88
+ ],
85
89
  "cjs": [
86
90
  "./lib/types/tinybase.d.ts"
87
91
  ],
@@ -173,13 +177,11 @@
173
177
  "*/with-schemas": [
174
178
  "./lib/types/with-schemas/*.d.ts",
175
179
  "./lib/types/with-schemas/tinybase.d.ts"
176
- ],
177
- "*": [
178
- "./lib/types/*.d.ts",
179
- "./lib/types/tinybase.d.ts"
180
180
  ]
181
181
  }
182
182
  },
183
+ "main": "./lib/tinybase",
184
+ "types": "./lib/types/tinybase.d.ts",
183
185
  "react-native": "./lib/tinybase.js",
184
186
  "browser": {
185
187
  "fs": false
@@ -211,31 +213,31 @@
211
213
  "publishPackage": "gulp publishPackage"
212
214
  },
213
215
  "devDependencies": {
214
- "@automerge/automerge": "^2.1.3",
216
+ "@automerge/automerge": "^2.1.6",
215
217
  "@babel/cli": "^7.23.0",
216
- "@babel/core": "^7.23.0",
217
- "@babel/preset-env": "^7.22.20",
218
+ "@babel/core": "^7.23.2",
219
+ "@babel/preset-env": "^7.23.2",
218
220
  "@babel/preset-react": "^7.22.15",
219
- "@babel/preset-typescript": "^7.23.0",
221
+ "@babel/preset-typescript": "^7.23.2",
220
222
  "@prettier/sync": "^0.3.0",
221
- "@rollup/plugin-image": "^3.0.2",
222
- "@rollup/plugin-replace": "^5.0.2",
223
- "@rollup/plugin-terser": "^0.4.3",
224
- "@sqlite.org/sqlite-wasm": "^3.43.1-build1",
225
- "@types/asciichart": "^1.5.6",
226
- "@types/expect-puppeteer": "^5.0.4",
227
- "@types/http-server": "^0.12.2",
228
- "@types/jest": "^29.5.5",
229
- "@types/jest-environment-puppeteer": "^5.0.4",
230
- "@types/less": "^3.0.4",
231
- "@types/node": "^20.6.5",
223
+ "@rollup/plugin-image": "^3.0.3",
224
+ "@rollup/plugin-replace": "^5.0.5",
225
+ "@rollup/plugin-terser": "^0.4.4",
226
+ "@sqlite.org/sqlite-wasm": "^3.43.2-build1",
227
+ "@types/asciichart": "^1.5.7",
228
+ "@types/expect-puppeteer": "^5.0.5",
229
+ "@types/http-server": "^0.12.3",
230
+ "@types/jest": "^29.5.7",
231
+ "@types/jest-environment-puppeteer": "^5.0.5",
232
+ "@types/less": "^3.0.5",
233
+ "@types/node": "^20.8.9",
232
234
  "@types/puppeteer": "^5.4.7",
233
- "@types/react": "^18.2.22",
234
- "@types/react-dom": "^18.2.7",
235
- "@types/react-test-renderer": "^18.0.2",
236
- "@types/tmp": "^0.2.4",
237
- "@typescript-eslint/eslint-plugin": "^6.7.2",
238
- "@typescript-eslint/parser": "^6.7.2",
235
+ "@types/react": "^18.2.33",
236
+ "@types/react-dom": "^18.2.14",
237
+ "@types/react-test-renderer": "^18.0.5",
238
+ "@types/tmp": "^0.2.5",
239
+ "@typescript-eslint/eslint-plugin": "^6.9.1",
240
+ "@typescript-eslint/parser": "^6.9.1",
239
241
  "@vlcn.io/crsqlite-wasm": "^0.15.2",
240
242
  "asciichart": "^1.5.25",
241
243
  "automerge-repo": "^0.1.0",
@@ -246,16 +248,16 @@
246
248
  "babel-preset-minify": "^0.5.2",
247
249
  "buffer-replace": "^1.0.0",
248
250
  "country-flag-emoji-json": "^2.0.0",
249
- "cspell": "^7.3.6",
250
- "esbuild": "^0.19.3",
251
- "eslint": "^8.50.0",
251
+ "cspell": "^7.3.8",
252
+ "esbuild": "^0.19.5",
253
+ "eslint": "^8.52.0",
252
254
  "eslint-config-prettier": "^9.0.0",
253
- "eslint-plugin-jest": "^27.4.0",
255
+ "eslint-plugin-jest": "^27.6.0",
254
256
  "eslint-plugin-jsdoc": "^46.8.2",
255
257
  "eslint-plugin-react": "7.33.2",
256
258
  "eslint-plugin-react-hooks": "^4.6.0",
257
259
  "expo-sqlite": "^11.6.0",
258
- "fake-indexeddb": "^4.0.2",
260
+ "fake-indexeddb": "^5.0.1",
259
261
  "gulp": "^4.0.2",
260
262
  "gulp-gzip": "^1.4.2",
261
263
  "http-server": "^14.1.1",
@@ -263,20 +265,20 @@
263
265
  "jest": "^29.7.0",
264
266
  "jest-environment-jsdom": "^29.7.0",
265
267
  "jest-fetch-mock": "^3.0.3",
266
- "jest-puppeteer": "^9.0.0",
268
+ "jest-puppeteer": "^9.0.1",
267
269
  "less": "^4.2.0",
268
- "partykit": "^0.0.23",
269
- "partysocket": "^0.0.8",
270
+ "partykit": "^0.0.32",
271
+ "partysocket": "^0.0.12",
270
272
  "prettier": "^3.0.3",
271
273
  "puppeteer": "21.1.1",
272
274
  "react": "^18.2.0",
273
275
  "react-dom": "^18.2.0",
274
276
  "react-test-renderer": "^18.2.0",
275
- "rollup": "^3.29.3",
276
- "rollup-plugin-esbuild": "^6.0.1",
277
+ "rollup": "^4.1.5",
278
+ "rollup-plugin-esbuild": "^6.1.0",
277
279
  "rollup-plugin-gzip": "^3.1.0",
278
280
  "rollup-plugin-preserve-shebang": "^1.0.1",
279
- "rollup-plugin-prettier": "^4.0.0",
281
+ "rollup-plugin-prettier": "^4.1.1",
280
282
  "sqlite3": "^5.1.6",
281
283
  "tinybase": "file:./",
282
284
  "tinydocs": "^0.1.33",
@@ -286,11 +288,11 @@
286
288
  "yjs": "^13.6.8"
287
289
  },
288
290
  "peerDependencies": {
289
- "@sqlite.org/sqlite-wasm": "^3.43.1-build1",
291
+ "@sqlite.org/sqlite-wasm": "^3.43.2-build1",
290
292
  "@vlcn.io/crsqlite-wasm": "^0.15.2",
291
293
  "automerge-repo": "^0.1.0",
292
- "partykit": "^0.0.23",
293
- "partysocket": "^0.0.8",
294
+ "partykit": "^0.0.32",
295
+ "partysocket": "^0.0.12",
294
296
  "prettier": "^3.0.3",
295
297
  "react": "^18.2.0",
296
298
  "react-dom": "^18.2.0",
package/readme.md CHANGED
@@ -1,4 +1,4 @@
1
- <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p id="copy">Build blisteringly fast web apps that work both online and offline. Manage your state locally, synchronize it to the cloud when you need to, or even make it collaborative. But, most importantly... have fun building stuff again!</p></section><p><a href="https://beta.tinybase.org/guides/releases/#v4-3"><em>NEW!</em> v4.3 release</a> <span id="one-with">&quot;The One With PartyKit&quot;</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a>, <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-values">schematization</a> to model your app&#x27;s data structures.</li><li><a href="#register-granular-listeners">Flexibly reactive</a> to reconciled updates, so you only spend rendering cycles on things that change.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively - and without SQL.</li><li>Built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, <a href="#model-table-relationships">tabular relationships</a> - and even an <a href="#set-checkpoints-for-an-undo-stack">undo stack</a> for your app state.</li><li>Create <a href="#type-definitions-orm-like-apis">type definitions &amp; ORM-like APIs</a>, from schema or inference. <a href="#an-inspector-for-your-data">Inspect your data</a> (<em>new!</em>) directly in the browser.</li><li>Easily <a href="#persist-to-storage-sqlite-crdts">sync your data</a> to browser <a href="https://beta.tinybase.org/api/persister-browser">storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db/">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence/">SQLite</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/synchronizing-data/">CRDTs</a>, and (<em>new!</em>) <a href="https://beta.tinybase.org/api/persister-partykit-client/">PartyKit</a>.</li><li>Optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and (<em>new!</em>) <a href="#pre-built-reactive-components">pre-built components</a> that let you easily build fully reactive user interfaces.</li><li>Tiny by name, tiny by nature: <a href="#did-we-say-tiny">4.8kB - 9.2kB</a>, zero dependencies. <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</li></ul><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">Tinybase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
1
+ <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p id="copy">Build blisteringly fast web apps that work both online and offline. Manage your state locally, synchronize it to the cloud when you need to, or even make it collaborative. But, most importantly... have fun building stuff again!</p></section><p><a href="https://beta.tinybase.org/guides/releases/#v4-4"><em>NEW!</em> v4.4 release</a> <span id="one-with">&quot;The One With More Listeners&quot;</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a>, <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-values">schematization</a> to model your app&#x27;s data structures.</li><li><a href="#register-granular-listeners">Flexibly reactive</a> to reconciled updates, so you only spend rendering cycles on things that change.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively - and without SQL.</li><li>Built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, <a href="#model-table-relationships">tabular relationships</a> - and even an <a href="#set-checkpoints-for-an-undo-stack">undo stack</a> for your app state.</li><li>Create <a href="#type-definitions-orm-like-apis">type definitions &amp; ORM-like APIs</a>, from schema or inference. <a href="#an-inspector-for-your-data">Inspect your data</a> (<em>new!</em>) directly in the browser.</li><li>Easily <a href="#persist-to-storage-sqlite-crdts">sync your data</a> to browser <a href="https://beta.tinybase.org/api/persister-browser">storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db/">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence/">SQLite</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/synchronizing-data/">CRDTs</a>, and (<em>new!</em>) <a href="https://beta.tinybase.org/api/persister-partykit-client/">PartyKit</a>.</li><li>Optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and (<em>new!</em>) <a href="#pre-built-reactive-components">pre-built components</a> that let you easily build fully reactive user interfaces.</li><li>Tiny by name, tiny by nature: <a href="#did-we-say-tiny">5.0kB - 9.4kB</a>, zero dependencies. <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</li></ul><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">Tinybase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=GitHub&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&amp;logo=discord&amp;logoColor=%23fff&amp;label=Discord&amp;labelColor=%233131e8&amp;color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&amp;logo=x&amp;logoColor=%23fff&amp;label=Twitter&amp;labelColor=%23333&amp;color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Ideas&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Issues&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&amp;logo=jest&amp;logoColor=%23fff&amp;color=%23333&amp;labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/4.4.0-beta.1" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&amp;logo=npm&amp;logoColor=%23fff&amp;labelColor=%23bd0005&amp;color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
2
2
 
3
3
  ```js
4
4
  const store = createStore()
@@ -247,4 +247,4 @@ export const createShop: typeof createShopDecl = () => {
247
247
  };
248
248
  ```
249
249
 
250
- <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>4.8kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>9.2kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>3.9kB</em>, the auxiliary <a href="https://beta.tinybase.org/api/tools/"><code>tools</code></a> module is <em>10.5kB</em>, and everything is super fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">store</a></th><td>4.8kB</td><td>11.4kB</td><td>48.7kB</td><td>220.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.6kB</td><td>15.2kB</td><td>30.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.8kB</td><td>17.1kB</td><td>35.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/relationships/">relationships</a></th><td>1.9kB</td><td>3.7kB</td><td>17.2kB</td><td>44.2kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/queries/">queries</a></th><td>2.8kB</td><td>5.7kB</td><td>25.6kB</td><td>126.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.6kB</td><td>3.1kB</td><td>12.5kB</td><td>33.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/persisters/">persisters</a></th><td>0.7kB</td><td>1.5kB</td><td>5.1kB</td><td>43.4kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>9.2kB</td><td>22.5kB</td><td>97.5kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,880</td><td>1,880</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,034</td><td>2,034</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>811</td><td>811</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>689</td><td>689</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">3,365</td></tr><tr><th class="right">Assertions</th><td colspan="3">15,251</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a>, <a href="https://discord.com/invite/mGz3mevwP8">Discord</a>, and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/discussions">Discussions</a> and <a href="https://github.com/tinyplex/tinybase/issues">issues</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a>.</li><li><a href="https://beta.tinybase.org/guides/releases/">Release notes</a> for each version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/4.4.0-beta.0">NPM</a>.</li></ul></section><section><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section>
250
+ <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>5.0kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>9.4kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>3.9kB</em>, the auxiliary <a href="https://beta.tinybase.org/api/tools/"><code>tools</code></a> module is <em>10.5kB</em>, and everything is super fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">store</a></th><td>5.0kB</td><td>12.0kB</td><td>51.6kB</td><td>252.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.6kB</td><td>15.2kB</td><td>30.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.8kB</td><td>17.0kB</td><td>35.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/relationships/">relationships</a></th><td>1.9kB</td><td>3.7kB</td><td>17.1kB</td><td>44.2kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/queries/">queries</a></th><td>2.8kB</td><td>5.7kB</td><td>25.6kB</td><td>127.8kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.5kB</td><td>3.1kB</td><td>12.4kB</td><td>33.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/persisters/">persisters</a></th><td>0.8kB</td><td>1.5kB</td><td>5.3kB</td><td>43.5kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>9.4kB</td><td>23.2kB</td><td>100.5kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,915</td><td>1,915</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,071</td><td>2,071</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>824</td><td>824</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>709</td><td>709</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">3,736</td></tr><tr><th class="right">Assertions</th><td colspan="3">17,570</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>