tinybase 5.0.0-beta.7 → 5.0.0-beta.9

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 (324) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -1
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-libsql.cjs +1 -1
  20. package/lib/cjs/persisters/persister-libsql.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-powersync.cjs +1 -1
  24. package/lib/cjs/persisters/persister-powersync.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/synchronizers/synchronizer-local.cjs +1 -1
  36. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  37. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -1
  38. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  39. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -1
  40. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  41. package/lib/cjs/synchronizers.cjs +1 -1
  42. package/lib/cjs/synchronizers.cjs.gz +0 -0
  43. package/lib/cjs/tinybase.cjs +1 -1
  44. package/lib/cjs/tinybase.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.cjs +1 -1
  48. package/lib/cjs/ui-react.cjs.gz +0 -0
  49. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  50. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  52. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  53. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  54. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-libsql.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-powersync.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-powersync.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/synchronizers/synchronizer-local.cjs +1 -1
  84. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  85. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -1
  86. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  87. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -1
  88. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  89. package/lib/cjs-es6/synchronizers.cjs +1 -1
  90. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  91. package/lib/cjs-es6/tinybase.cjs +1 -1
  92. package/lib/cjs-es6/tinybase.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.cjs +1 -1
  96. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  97. package/lib/debug/mergeable-store.js +6 -0
  98. package/lib/debug/persisters/persister-automerge.js +15 -6
  99. package/lib/debug/persisters/persister-browser.js +15 -6
  100. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +15 -6
  101. package/lib/debug/persisters/persister-electric-sql.js +15 -6
  102. package/lib/debug/persisters/persister-expo-sqlite-next.js +15 -6
  103. package/lib/debug/persisters/persister-expo-sqlite.js +15 -6
  104. package/lib/debug/persisters/persister-file.js +15 -6
  105. package/lib/debug/persisters/persister-indexed-db.js +15 -6
  106. package/lib/debug/persisters/persister-libsql.js +15 -6
  107. package/lib/debug/persisters/persister-partykit-client.js +15 -6
  108. package/lib/debug/persisters/persister-powersync.js +15 -6
  109. package/lib/debug/persisters/persister-remote.js +15 -6
  110. package/lib/debug/persisters/persister-sqlite-wasm.js +15 -6
  111. package/lib/debug/persisters/persister-sqlite3.js +15 -6
  112. package/lib/debug/persisters/persister-yjs.js +15 -6
  113. package/lib/debug/persisters.js +15 -6
  114. package/lib/debug/synchronizers/synchronizer-local.js +27 -18
  115. package/lib/debug/synchronizers/synchronizer-ws-client.js +45 -33
  116. package/lib/debug/synchronizers/synchronizer-ws-server.js +65 -26
  117. package/lib/debug/synchronizers.js +27 -18
  118. package/lib/debug/tinybase.js +33 -18
  119. package/lib/debug/ui-react-dom.js +22 -10
  120. package/lib/debug/ui-react.js +54 -5
  121. package/lib/es6/mergeable-store.js +1 -1
  122. package/lib/es6/mergeable-store.js.gz +0 -0
  123. package/lib/es6/persisters/persister-automerge.js +1 -1
  124. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  125. package/lib/es6/persisters/persister-browser.js +1 -1
  126. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  127. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  128. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  129. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  130. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  131. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  132. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  133. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  134. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  135. package/lib/es6/persisters/persister-file.js +1 -1
  136. package/lib/es6/persisters/persister-file.js.gz +0 -0
  137. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  138. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  139. package/lib/es6/persisters/persister-libsql.js +1 -1
  140. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  141. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  142. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  143. package/lib/es6/persisters/persister-powersync.js +1 -1
  144. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  145. package/lib/es6/persisters/persister-remote.js +1 -1
  146. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  147. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  148. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  149. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  150. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  151. package/lib/es6/persisters/persister-yjs.js +1 -1
  152. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  153. package/lib/es6/persisters.js +1 -1
  154. package/lib/es6/persisters.js.gz +0 -0
  155. package/lib/es6/synchronizers/synchronizer-local.js +1 -1
  156. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  157. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -1
  158. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  159. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -1
  160. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  161. package/lib/es6/synchronizers.js +1 -1
  162. package/lib/es6/synchronizers.js.gz +0 -0
  163. package/lib/es6/tinybase.js +1 -1
  164. package/lib/es6/tinybase.js.gz +0 -0
  165. package/lib/es6/ui-react-dom-debug.js +1 -1
  166. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  167. package/lib/es6/ui-react.js +1 -1
  168. package/lib/es6/ui-react.js.gz +0 -0
  169. package/lib/mergeable-store.js +1 -1
  170. package/lib/mergeable-store.js.gz +0 -0
  171. package/lib/persisters/persister-automerge.js +1 -1
  172. package/lib/persisters/persister-automerge.js.gz +0 -0
  173. package/lib/persisters/persister-browser.js +1 -1
  174. package/lib/persisters/persister-browser.js.gz +0 -0
  175. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  176. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  177. package/lib/persisters/persister-electric-sql.js +1 -1
  178. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  179. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  180. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  181. package/lib/persisters/persister-expo-sqlite.js +1 -1
  182. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  183. package/lib/persisters/persister-file.js +1 -1
  184. package/lib/persisters/persister-file.js.gz +0 -0
  185. package/lib/persisters/persister-indexed-db.js +1 -1
  186. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  187. package/lib/persisters/persister-libsql.js +1 -1
  188. package/lib/persisters/persister-libsql.js.gz +0 -0
  189. package/lib/persisters/persister-partykit-client.js +1 -1
  190. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  191. package/lib/persisters/persister-powersync.js +1 -1
  192. package/lib/persisters/persister-powersync.js.gz +0 -0
  193. package/lib/persisters/persister-remote.js +1 -1
  194. package/lib/persisters/persister-remote.js.gz +0 -0
  195. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  196. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  197. package/lib/persisters/persister-sqlite3.js +1 -1
  198. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  199. package/lib/persisters/persister-yjs.js +1 -1
  200. package/lib/persisters/persister-yjs.js.gz +0 -0
  201. package/lib/persisters.js +1 -1
  202. package/lib/persisters.js.gz +0 -0
  203. package/lib/synchronizers/synchronizer-local.js +1 -1
  204. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  205. package/lib/synchronizers/synchronizer-ws-client.js +1 -1
  206. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  207. package/lib/synchronizers/synchronizer-ws-server.js +1 -1
  208. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  209. package/lib/synchronizers.js +1 -1
  210. package/lib/synchronizers.js.gz +0 -0
  211. package/lib/tinybase.js +1 -1
  212. package/lib/tinybase.js.gz +0 -0
  213. package/lib/types/mergeable-store.d.ts +7 -1
  214. package/lib/types/persisters.d.ts +10 -14
  215. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +10 -5
  216. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +12 -0
  217. package/lib/types/synchronizers.d.ts +3 -2
  218. package/lib/types/ui-react.d.ts +151 -1
  219. package/lib/types/with-schemas/mergeable-store.d.ts +7 -0
  220. package/lib/types/with-schemas/persisters.d.ts +11 -23
  221. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +15 -6
  222. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +12 -0
  223. package/lib/types/with-schemas/synchronizers.d.ts +4 -4
  224. package/lib/types/with-schemas/ui-react.d.ts +169 -1
  225. package/lib/ui-react.js +1 -1
  226. package/lib/ui-react.js.gz +0 -0
  227. package/lib/umd/mergeable-store.js +1 -1
  228. package/lib/umd/mergeable-store.js.gz +0 -0
  229. package/lib/umd/persisters/persister-automerge.js +1 -1
  230. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  231. package/lib/umd/persisters/persister-browser.js +1 -1
  232. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  233. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  234. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  235. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  236. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  237. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  238. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  239. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  240. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  241. package/lib/umd/persisters/persister-file.js +1 -1
  242. package/lib/umd/persisters/persister-file.js.gz +0 -0
  243. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  244. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  245. package/lib/umd/persisters/persister-libsql.js +1 -1
  246. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  247. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  248. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  249. package/lib/umd/persisters/persister-powersync.js +1 -1
  250. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  251. package/lib/umd/persisters/persister-remote.js +1 -1
  252. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  253. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  254. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  255. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  256. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  257. package/lib/umd/persisters/persister-yjs.js +1 -1
  258. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  259. package/lib/umd/persisters.js +1 -1
  260. package/lib/umd/persisters.js.gz +0 -0
  261. package/lib/umd/synchronizers/synchronizer-local.js +1 -1
  262. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  263. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -1
  264. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  265. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -1
  266. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  267. package/lib/umd/synchronizers.js +1 -1
  268. package/lib/umd/synchronizers.js.gz +0 -0
  269. package/lib/umd/tinybase.js +1 -1
  270. package/lib/umd/tinybase.js.gz +0 -0
  271. package/lib/umd/ui-react-dom-debug.js +1 -1
  272. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  273. package/lib/umd/ui-react.js +1 -1
  274. package/lib/umd/ui-react.js.gz +0 -0
  275. package/lib/umd-es6/mergeable-store.js +1 -1
  276. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  277. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  278. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  279. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  280. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  281. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  282. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  283. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  284. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  285. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  286. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  287. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  288. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  289. package/lib/umd-es6/persisters/persister-file.js +1 -1
  290. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  291. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  292. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  293. package/lib/umd-es6/persisters/persister-libsql.js +1 -1
  294. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  295. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  296. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  297. package/lib/umd-es6/persisters/persister-powersync.js +1 -1
  298. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  299. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  300. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  301. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  302. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  303. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  304. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  305. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  306. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  307. package/lib/umd-es6/persisters.js +1 -1
  308. package/lib/umd-es6/persisters.js.gz +0 -0
  309. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -1
  310. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  311. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -1
  312. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  313. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -1
  314. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  315. package/lib/umd-es6/synchronizers.js +1 -1
  316. package/lib/umd-es6/synchronizers.js.gz +0 -0
  317. package/lib/umd-es6/tinybase.js +1 -1
  318. package/lib/umd-es6/tinybase.js.gz +0 -0
  319. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  320. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  321. package/lib/umd-es6/ui-react.js +1 -1
  322. package/lib/umd-es6/ui-react.js.gz +0 -0
  323. package/package.json +1 -1
  324. package/readme.md +2 -2
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t,l){"use strict";const n=e=>typeof e,s="",r=n(s),a=n(!0),o=n(0),i=n(n),u="type",d="default",c="Has",h="Ids",m="Table",b=m+"s",p=m+h,g="Row",v=g+"Count",f=g+h,I="Cell",y=I+h,w="Value",C=w+"s",k=w+h,T="currentTarget",S="value",x=e=>s+e,V=Math.floor,R=isFinite,O=e=>null==e,q=(e,t,l)=>O(e)?null==l?void 0:l():t(e),P=e=>e==r||e==a,M=e=>n(e)==r,N=e=>n(e)==i,L=e=>Array.isArray(e),E=(e,t,l)=>e.slice(t,l),j=e=>e.length,{PureComponent:z,Fragment:$,createElement:A,useCallback:F,useLayoutEffect:J,useRef:D,useState:H}=t,B=(e,...t)=>O(e)?{}:e(...t),Q=(e,t)=>e.sort(t),W=(e,t)=>e.forEach(t),U=(e,t)=>e.map(t),G=e=>0==j(e),K=(e,...t)=>e.push(...t),X=e=>e.shift(),Y=Object,Z=e=>Y.getPrototypeOf(e),_=Y.entries,ee=Y.isFrozen,te=e=>!O(e)&&q(Z(e),(e=>e==Y.prototype||O(Z(e))),(()=>!0)),le=Y.keys,ne=Y.freeze,se=(e=[])=>Y.fromEntries(e),re=(e,t)=>t in e,ae=(e,t)=>(delete e[t],e),oe=(e,t)=>U(_(e),(([e,l])=>t(l,e))),ie=e=>te(e)&&0==(e=>j(le(e)))(e),ue=(e,t,l,n=0)=>O(e)||!te(e)||!n&&ie(e)||ee(e)?(null==l||l(),!1):(oe(e,((l,n)=>{t(l,n)||ae(e,n)})),!!n||!ie(e)),de=e=>JSON.stringify(e,((e,t)=>t instanceof Map?Y.fromEntries([...t]):t)),ce=JSON.parse,he="tinybaseStoreInspector",me="TinyBase Store Inspector",be=["left","top","bottom","right","full"],pe="state",ge="sort",ve="open",fe="position",Ie=ve,ye="editable",we=(...e)=>de(e),Ce=(e,t)=>U(Q(e),t),ke=(e,t)=>[!!l.useCell(pe,e,ye,t),F((l=>{t.setCell(pe,e,ye,(e=>!e)),l.preventDefault()}),[t,e])],Te="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",Se='content:url("',xe=Se+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",Ve='</svg>")',Re=Se+"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\")",Oe=U([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,n])=>xe+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${n}' fill='white'/>`+Ve)),qe=xe+"<path d='M20 20l60 60M20 80l60-60' />"+Ve,Pe=xe+`<path d='${Te}' />`+Ve,Me=xe+`<path d='${Te}M20 20l60 60' />`+Ve;var Ne=Object.defineProperty,Le=Object.defineProperties,Ee=Object.getOwnPropertyDescriptors,je=Object.getOwnPropertySymbols,ze=Object.prototype.hasOwnProperty,$e=Object.prototype.propertyIsEnumerable,Ae=(e,t,l)=>t in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,Fe=(e,t)=>{for(var l in t||(t={}))ze.call(t,l)&&Ae(e,l,t[l]);if(je)for(var l of je(t))$e.call(t,l)&&Ae(e,l,t[l]);return e},Je=(e,t)=>Le(e,Ee(t));const De="*::-webkit-scrollbar",He=((e,t="")=>e.join(t))(oe(Je(Fe(Je(Fe(Je(Fe({"":"all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999","*":"all:revert","*::before":"all:revert","*::after":"all:revert",[De]:"width:0.5rem;height:0.5rem;",[De+"-track"]:"background:#111",[De+"-thumb"]:"background:#999;border:1px solid #111",[De+"-thumb:hover"]:"background:#fff",[De+"-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;"+Re},se(U(["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;"}),se(U(["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)":Re,"header>img:nth-of-type(6)":qe}),se(U(Oe,((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":Pe,"details[open]>summary img.done":Me,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,#${he} 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?`#${he} ${t}{${e}}`:""))),Be=({s:e})=>{var t;const n=null!=(t=l.useValue(fe,e))?t:1,s=l.useSetValueCallback(Ie,(()=>!0),[],e);return l.useValue(Ie,e)?null:A("img",{onClick:s,title:me,"data-position":n})},Qe=({uniqueId:e,summary:t,editable:n,handleEditable:s,children:r,s:a})=>{const o=!!l.useCell(pe,e,ve,a),i=l.useSetCellCallback(pe,e,ve,(e=>e[T].open),[],a);return A("details",{open:o,onToggle:i},A("summary",null,t,s?A("img",{onClick:s,className:n?"done":"edit"}):null),r)},We=e=>{const t=n(e);return P(t)||t==o&&R(e)?t:void 0},Ue=(e,t,l,n,s)=>O(s)?e.delCell(t,l,n,!0):e.setCell(t,l,n,s),Ge=(e,t,l)=>O(l)?e.delValue(t):e.setValue(t,l),Ke=(e,t,l,n)=>e==r?t:e==o?l:n;var Xe=Object.defineProperty,Ye=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,_e=Object.getOwnPropertySymbols,et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable,lt=(e,t,l)=>t in e?Xe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,nt=(e,t)=>{for(var l in t||(t={}))et.call(t,l)&&lt(e,l,t[l]);if(_e)for(var l of _e(t))tt.call(t,l)&&lt(e,l,t[l]);return e},st=(e,t)=>Ye(e,Ze(t)),rt=(e,t)=>{var l={};for(var n in e)et.call(e,n)&&t.indexOf(n)<0&&(l[n]=e[n]);if(null!=e&&_e)for(var n of _e(e))t.indexOf(n)<0&&tt.call(e,n)&&(l[n]=e[n]);return l};const{useCallback:at,useMemo:ot,useState:it}=t,ut="editable",dt=(e,t)=>U(l.useTableCellIds(e,t),(t=>e+"."+t)),ct=(e,t,l)=>{const n=at(e,t);return l?n:void 0},ht=(...e)=>ot((()=>e),e),mt=(e,t)=>ot((()=>({store:e,tableId:t})),[e,t]),bt=(e,t)=>ot((()=>({queries:e,queryId:t})),[e,t]),pt=(e,t=!1,l,n=0,s,r,a,o)=>{const[[i,u,d],c]=it([e,t,n]),h=at((e=>{c(e),null==o||o(e)}),[o]),m=ct((e=>h([e,e==i&&!u,d])),[h,i,u,d],l),b=at((e=>h([i,u,e])),[h,i,u]),p=!0===a?Rt:a;return[[i,u,d],m,ot((()=>!1===a?null:A(p,{offset:d,limit:s,total:r,onChange:b})),[a,p,d,s,r,b])]},gt=(e,t,l)=>ot((()=>{const n=null!=t?t:e;return s=L(n)?se(U(n,(e=>[e,e]))):n,r=(e,t)=>nt(nt({},{label:t,component:l}),M(e)?{label:e}:e),se(oe(s,((e,t)=>[t,r(e,t)])));var s,r}),[t,l,e]),vt=({className:e,headerRow:t,idColumn:l,params:[n,s,r,a,o,i]})=>A("table",{className:e},i?A("caption",null,i):null,!1===t?null:A("thead",null,A("tr",null,!1===l?null:A(ft,{sort:null!=a?a:[],label:"Id",onClick:o}),oe(n,(({label:e},t)=>A(ft,{key:t,cellId:t,label:e,sort:null!=a?a:[],onClick:o}))))),A("tbody",null,U(r,(e=>A("tr",{key:e},!1===l?null:A("th",null,e),oe(n,(({component:t,getComponentProps:l},n)=>A("td",{key:n},A(t,st(nt(nt({},B(l,e,n)),s),{rowId:e,cellId:n})))))))))),ft=({cellId:e,sort:[t,l],label:n=(null!=e?e:s),onClick:r})=>A("th",{onClick:ct((()=>null==r?void 0:r(e)),[r,e],r),className:O(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},O(l)||t!=e?null:(l?"↓":"↑")+" ",n),It=({localRowId:e,params:[n,s,r,a,o,i,u]})=>{const d=l.useRemoteRowId(o,e,i);return A("tr",null,!1===n?null:A(t.Fragment,null,A("th",null,e),A("th",null,d)),oe(s,(({component:t,getComponentProps:l},n)=>{const[s,o]=n.split(".",2),i=s===r?e:s===a?d:null;return O(i)?null:A("td",{key:n},A(t,st(nt({},B(l,i,o)),{store:u,tableId:s,rowId:i,cellId:o})))})))},yt=({thing:e,onThingChange:t,className:l,hasSchema:n,showType:s=!0})=>{const[i,u]=it(),[d,c]=it(),[h,m]=it(),[b,p]=it(),[g,v]=it();d!==e&&(u(We(e)),c(e),m(e+""),p(Number(e)||0),v(!!e));const f=at(((e,l)=>{l(e),c(e),t(e)}),[t]),I=at((()=>{if(!(null==n?void 0:n())){const e=Ke(i,o,a,r),l=Ke(e,h,b,g);u(e),c(l),t(l)}}),[n,t,h,b,g,i]);return A("div",{className:l},s?A("button",{className:i,onClick:I},i):null,Ke(i,A("input",{key:i,value:h,onChange:at((e=>f(e[T][S]+"",m)),[f])}),A("input",{key:i,type:"number",value:b,onChange:at((e=>f(Number(e[T][S]||0),p)),[f])}),A("input",{key:i,type:"checkbox",checked:g,onChange:at((e=>f(!!e[T].checked,v)),[f])})))},wt=e=>{var t=e,{tableId:n,cellId:s,descending:r,offset:a,limit:o,store:i,editable:u,sortOnClick:d,paginator:c=!1,onChange:h,customCells:m}=t,b=rt(t,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[p,g,v]=pt(s,r,d,a,o,l.useRowCount(n,i),c,h);return A(vt,st(nt({},b),{params:ht(gt(l.useTableCellIds(n,i),m,u?xt:l.CellView),mt(i,n),l.useSortedRowIds(n,...p,o,i),p,g,v)}))},Ct=({store:e,editable:t=!1,valueComponent:n=(t?Vt:l.ValueView),getValueComponentProps:s,className:r,headerRow:a,idColumn:o})=>A("table",{className:r},!1===a?null:A("thead",null,A("tr",null,!1===o?null:A("th",null,"Id"),A("th",null,w))),A("tbody",null,U(l.useValueIds(e),(t=>A("tr",{key:t},!1===o?null:A("th",null,t),A("td",null,A(n,st(nt({},B(s,t)),{valueId:t,store:e})))))))),kt=e=>{var t=e,{indexId:n,sliceId:s,indexes:r,editable:a,customCells:o}=t,i=rt(t,["indexId","sliceId","indexes","editable","customCells"]);const[u,d,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(l.useIndexesOrIndexesById(r),n);return A(vt,st(nt({},i),{params:ht(gt(l.useTableCellIds(c,d),o,a?xt:l.CellView),mt(d,c),l.useSliceRowIds(n,s,u))}))},Tt=({relationshipId:e,relationships:n,editable:s,customCells:r,className:a,headerRow:o,idColumn:i=!0})=>{const[u,d,c,h]=((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(n),e),m=gt([...dt(c,d),...dt(h,d)],r,s?xt:l.CellView),b=ht(i,m,c,h,e,u,d);return A("table",{className:a},!1===o?null:A("thead",null,A("tr",null,!1===i?null:A(t.Fragment,null,A("th",null,c,".Id"),A("th",null,h,".Id")),oe(m,(({label:e},t)=>A("th",{key:t},e))))),A("tbody",null,U(l.useRowIds(c,d),(e=>A(It,{key:e,localRowId:e,params:b})))))},St=e=>{var t=e,{queryId:n,cellId:s,descending:r,offset:a,limit:o,queries:i,sortOnClick:u,paginator:d=!1,customCells:c,onChange:h}=t,m=rt(t,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[b,p,g]=pt(s,r,u,a,o,l.useResultRowCount(n,i),d,h);return A(vt,st(nt({},m),{params:ht(gt(l.useResultTableCellIds(n,i),c,l.ResultCellView),bt(i,n),l.useResultSortedRowIds(n,...b,o,i),b,p,g)}))},xt=({tableId:e,rowId:t,cellId:n,store:s,className:r,showType:a})=>{var o;return A(yt,{thing:l.useCell(e,t,n,s),onThingChange:l.useSetCellCallback(e,t,n,(e=>e),[],s),className:null!=r?r:ut+I,showType:a,hasSchema:null==(o=l.useStoreOrStoreById(s))?void 0:o.hasTablesSchema})},Vt=({valueId:e,store:t,className:n,showType:s})=>{var r;return A(yt,{thing:l.useValue(e,t),onThingChange:l.useSetValueCallback(e,(e=>e),[],t),className:null!=n?n:ut+w,showType:s,hasSchema:null==(r=l.useStoreOrStoreById(t))?void 0:r.hasValuesSchema})},Rt=({onChange:e,total:l,offset:n=0,limit:s=l,singular:r="row",plural:a=r+"s"})=>{(n>l||n<0)&&(n=0,e(0));const o=ct((()=>e(n-s)),[e,n,s],n>0),i=ct((()=>e(n+s)),[e,n,s],n+s<l);return A(t.Fragment,null,l>s&&A(t.Fragment,null,A("button",{className:"previous",disabled:0==n,onClick:o},"←"),A("button",{className:"next",disabled:n+s>=l,onClick:i},"→"),n+1," to ",Math.min(l,n+s)," of "),l," ",1!=l?a:r)},Ot=({indexes:e,indexesId:t,indexId:n,s:s})=>A(Qe,{uniqueId:we("i",t,n),summary:"Index: "+n,s:s},U(l.useSliceIds(n,e),(l=>A(qt,{indexes:e,indexesId:t,indexId:n,sliceId:l,s:s,key:l})))),qt=({indexes:e,indexesId:t,indexId:l,sliceId:n,s:s})=>{const r=we("i",t,l,n),[a,o]=ke(r,s);return A(Qe,{uniqueId:r,summary:"Slice: "+n,editable:a,handleEditable:o,s:s},A(kt,{sliceId:n,indexId:l,indexes:e,editable:a}))},Pt=({indexesId:e,s:t})=>{const n=l.useIndexes(e),s=l.useIndexIds(n);return O(n)?null:A(Qe,{uniqueId:we("i",e),summary:"Indexes: "+(null!=e?e:d),s:t},G(s)?"No indexes defined":Ce(s,(l=>A(Ot,{indexes:n,indexesId:e,indexId:l,s:t,key:l}))))},Mt=({metrics:e,metricId:t})=>A("tr",null,A("th",null,t),A("td",null,null==e?void 0:e.getTableId(t)),A("td",null,l.useMetric(t,e))),Nt=({metricsId:e,s:t})=>{const n=l.useMetrics(e),s=l.useMetricIds(n);return O(n)?null:A(Qe,{uniqueId:we("m",e),summary:"Metrics: "+(null!=e?e:d),s:t},G(s)?"No metrics defined":A("table",null,A("thead",null,A("th",null,"Metric Id"),A("th",null,"Table Id"),A("th",null,"Metric")),A("tbody",null,U(s,(e=>A(Mt,{metrics:n,metricId:e,key:e}))))))},Lt=({queries:e,queriesId:t,queryId:n,s:s})=>{var r;const a=we("q",t,n),[o,i,u]=ce(null!=(r=l.useCell(pe,a,ge,s))?r:"[]"),d=l.useSetCellCallback(pe,a,ge,de,[],s);return A(Qe,{uniqueId:a,summary:"Query: "+n,s:s},A(St,{queryId:n,queries:e,cellId:o,descending:i,offset:u,limit:10,paginator:!0,sortOnClick:!0,onChange:d}))},Et=({queriesId:e,s:t})=>{const n=l.useQueries(e),s=l.useQueryIds(n);return O(n)?null:A(Qe,{uniqueId:we("q",e),summary:"Queries: "+(null!=e?e:d),s:t},G(s)?"No queries defined":Ce(s,(l=>A(Lt,{queries:n,queriesId:e,queryId:l,s:t,key:l}))))},jt=({relationships:e,relationshipsId:t,relationshipId:l,s:n})=>{const s=we("r",t,l),[r,a]=ke(s,n);return A(Qe,{uniqueId:s,summary:"Relationship: "+l,editable:r,handleEditable:a,s:n},A(Tt,{relationshipId:l,relationships:e,editable:r}))},zt=({relationshipsId:e,s:t})=>{const n=l.useRelationships(e),s=l.useRelationshipIds(n);return O(n)?null:A(Qe,{uniqueId:we("r",e),summary:"Relationships: "+(null!=e?e:d),s:t},G(s)?"No relationships defined":Ce(s,(l=>A(jt,{relationships:n,relationshipsId:e,relationshipId:l,s:t,key:l}))))},$t=({tableId:e,store:t,storeId:n,s:s})=>{var r;const a=we("t",n,e),[o,i,u]=ce(null!=(r=l.useCell(pe,a,ge,s))?r:"[]"),d=l.useSetCellCallback(pe,a,ge,de,[],s),[c,h]=ke(a,s);return A(Qe,{uniqueId:a,summary:m+": "+e,editable:c,handleEditable:h,s:s},A(wt,{tableId:e,store:t,cellId:o,descending:i,offset:u,limit:10,paginator:!0,sortOnClick:!0,onChange:d,editable:c}))},At=({store:e,storeId:t,s:n})=>{const s=we("v",t),[r,a]=ke(s,n);return G(l.useValueIds(e))?null:A(Qe,{uniqueId:s,summary:C,editable:r,handleEditable:a,s:n},A(Ct,{store:e,editable:r}))},Ft=({storeId:e,s:t})=>{const n=l.useStore(e),s=l.useTableIds(n);return O(n)?null:A(Qe,{uniqueId:we("s",e),summary:"Store: "+(null!=e?e:d),s:t},A(At,{storeId:e,store:n,s:t}),Ce(s,(l=>A($t,{store:n,storeId:e,tableId:l,s:t,key:l}))))},Jt=({s:e})=>{const t=D(null),n=D(0),[s,r]=H(!1),{scrollLeft:a,scrollTop:o}=l.useValues(e);J((()=>{const e=t.current;if(e&&!s){const t=new MutationObserver((()=>{e.scrollWidth>=V(a)+e.clientWidth&&e.scrollHeight>=V(o)+e.clientHeight&&e.scrollTo(a,o)}));return t.observe(e,{childList:!0,subtree:!0}),()=>t.disconnect()}}),[s,a,o]);const i=F((t=>{const{scrollLeft:l,scrollTop:s}=t[T];cancelIdleCallback(n.current),n.current=requestIdleCallback((()=>{r(!0),e.setPartialValues({scrollLeft:l,scrollTop:s})}))}),[e]),u=l.useStore(),d=l.useStoreIds(),c=l.useMetrics(),h=l.useMetricsIds(),m=l.useIndexes(),b=l.useIndexesIds(),p=l.useRelationships(),g=l.useRelationshipsIds(),v=l.useQueries(),f=l.useQueriesIds();return O(u)&&G(d)&&O(c)&&G(h)&&O(m)&&G(b)&&O(p)&&G(g)&&O(v)&&G(f)?A("span",{className:"warn"},"There are no Stores or other objects to inspect. Make sure you placed the StoreInspector inside a Provider component."):A("article",{ref:t,onScroll:i},A(Ft,{s:e}),U(d,(t=>A(Ft,{storeId:t,s:e,key:t}))),A(Nt,{s:e}),U(h,(t=>A(Nt,{metricsId:t,s:e,key:t}))),A(Pt,{s:e}),U(b,(t=>A(Pt,{indexesId:t,s:e,key:t}))),A(zt,{s:e}),U(g,(t=>A(zt,{relationshipsId:t,s:e,key:t}))),A(Et,{s:e}),U(f,(t=>A(Et,{queriesId:t,s:e,key:t}))))};class Dt extends z{constructor(e){super(e),this.componentDidCatch=(e,t)=>console.error(e,t.componentStack),this.state={e:0}}static getDerivedStateFromError(){return{e:1}}render(){return this.state.e?A("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}}const Ht=({s:e})=>{var t;const n=null!=(t=l.useValue(fe,e))?t:1,s=l.useSetValueCallback(Ie,(()=>!1),[],e),r=l.useSetValueCallback(fe,(e=>Number(e[T].dataset.id)),[],e);return A("header",null,A("img",{title:me}),A("span",null,me),U(be,((e,t)=>t==n?null:A("img",{onClick:r,"data-id":t,title:"Dock to "+e,key:t}))),A("img",{onClick:s,title:"Close"}))},Bt=({s:e})=>{var t;const n=null!=(t=l.useValue(fe,e))?t:1;return l.useValue(Ie,e)?A("main",{"data-position":n},A(Ht,{s:e}),A(Dt,null,A(Jt,{s:e}))):null},Qt=e=>t=>{return l=(t,l)=>t+e(l),Zt(t).reduce(l,0);var l},Wt=e=>{var t;return null!=(t=null==e?void 0:e.size)?t:0},Ut=Qt(Wt),Gt=Qt(Ut),Kt=Qt(Gt),Xt=(e,t)=>{var l;return null!=(l=null==e?void 0:e.has(t))&&l},Yt=e=>O(e)||0==Wt(e),Zt=e=>{var t;return[...null!=(t=null==e?void 0:e.values())?t:[]]},_t=e=>e.clear(),el=(e,t)=>null==e?void 0:e.forEach(t),tl=(e,t)=>null==e?void 0:e.delete(t),ll=e=>new Map(e),nl=e=>{var t;return[...null!=(t=null==e?void 0:e.keys())?t:[]]},sl=(e,t)=>null==e?void 0:e.get(t),rl=(e,t)=>el(e,((e,l)=>t(l,e))),al=(e,t,l)=>O(l)?(tl(e,t),e):null==e?void 0:e.set(t,l),ol=(e,t,l,n)=>(Xt(e,t)?null==n||n(sl(e,t)):al(e,t,l()),sl(e,t)),il=(e,t,l,n=al)=>(oe(t,((t,n)=>l(e,n,t))),rl(e,(l=>re(t,l)?0:n(e,l))),e),ul=(e,t,l,n)=>{const s={};return el(e,((e,r)=>{if(!(null==l?void 0:l(e,r))){const l=t?t(e,r):e;!(null==n?void 0:n(l))&&(s[r]=l)}})),s},dl=(e,t,l)=>ul(e,(e=>ul(e,t,l)),Yt,ie),cl=(e,t,l)=>ul(e,(e=>dl(e,t,l)),Yt,ie),hl=(e,t)=>{const l=ll();return el(e,((e,n)=>{var s;return l.set(n,null!=(s=null==t?void 0:t(e))?s:e)})),l},ml=e=>hl(e,hl),bl=e=>hl(e,ml),pl=(e,t,l,n,s=0)=>q((l?ol:sl)(e,t[s],s>j(t)-2?l:ll),(r=>{if(s>j(t)-2)return(null==n?void 0:n(r))&&al(e,t[s]),r;const a=pl(r,t,l,n,s+1);return Yt(r)&&al(e,t[s]),a}));var gl=Object.defineProperty,vl=Object.getOwnPropertySymbols,fl=Object.prototype.hasOwnProperty,Il=Object.prototype.propertyIsEnumerable,yl=(e,t,l)=>t in e?gl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,wl=(e,t,l)=>new Promise(((n,s)=>{var r=e=>{try{o(l.next(e))}catch(e){s(e)}},a=e=>{try{o(l.throw(e))}catch(e){s(e)}},o=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);o((l=l.apply(e,t)).next())}));const Cl=ll(),kl=ll();var Tl=(e,t,l)=>new Promise(((n,s)=>{var r=e=>{try{o(l.next(e))}catch(e){s(e)}},a=e=>{try{o(l.throw(e))}catch(e){s(e)}},o=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);o((l=l.apply(e,t)).next())}));const Sl="storage",xl=globalThis.window,Vl=e=>new Set(L(e)||O(e)?e:[e]),Rl=(e,t)=>null==e?void 0:e.add(t),Ol=/^\d+$/,ql=()=>{const e=[];let t=0;return[l=>{var n;return null!=(n=l?X(e):null)?n:s+t++},t=>{Ol.test(t)&&j(e)<1e3&&K(e,t)}]},Pl=e=>[e,e],Ml=(e,t=Ut)=>t(e[0])+t(e[1]),Nl=()=>[ll(),ll()],Ll=e=>[...e],El=([e,t])=>e===t,jl=(e,t,l)=>al(e,t,sl(e,t)==-l?void 0:l),zl=()=>{let e,t,l=!1,n=!1,r=0,a=[];const i=ll(),h=ll(),T=ll(),S=ll(),V=ll(),R=ll(),M=ll(),L=ll(),z=ll(),$=ll(),A=ll(),F=ll(),J=ll(),D=ll(),H=Vl(),B=ll(),G=ll(),X=ll(),Y=ll(),Z=Nl(),_=Nl(),ee=Nl(),te=Nl(),le=Nl(),se=Nl(),he=Nl(),me=Nl(),be=Nl(),pe=Nl(),ge=Nl(),ve=Nl(),fe=Nl(),Ie=Nl(),ye=Nl(),we=Nl(),Ce=Nl(),ke=Nl(),Te=Nl(),Se=Nl(),xe=Nl(),Ve=Nl(),Re=ll(),Oe=Nl(),[qe,Pe,Me,Ne]=(e=>{let t;const[l,n]=ql(),r=ll();return[(e,n,a,o=[],i=(()=>[]))=>{null!=t||(t=Sl);const u=l(1);return al(r,u,[e,n,a,o,i]),Rl(pl(n,null!=a?a:[s],Vl),u),u},(e,l,...n)=>W(((e,t=[s])=>{const l=[],n=(e,s)=>s==j(t)?K(l,e):null===t[s]?el(e,(e=>n(e,s+1))):W([t[s],null],(t=>n(sl(e,t),s+1)));return n(e,0),l})(e,l),(e=>el(e,(e=>sl(r,e)[0](t,...null!=l?l:[],...n))))),e=>q(sl(r,e),(([,t,l])=>(pl(t,null!=l?l:[s],void 0,(t=>(tl(t,e),Yt(t)?1:0))),al(r,e),n(e),l))),e=>q(sl(r,e),(([e,,l=[],n,s])=>{const r=(...a)=>{var o,i;const u=j(a);u==j(l)?e(t,...a,...s(a)):O(l[u])?W(null!=(i=null==(o=n[u])?void 0:o.call(n,...a))?i:[],(e=>r(...a,e))):r(...a,l[u])};r()}))]})(),Le=e=>{if(!ue(e,((e,t)=>[u,d].includes(t))))return!1;const t=e[u];return!(!P(t)&&t!=o||(We(e[d])!=t&&ae(e,d),0))},Ee=(t,l)=>(!e||Xt(A,l)||bt(l))&&ue(t,((e,t)=>je(l,t,e)),(()=>bt(l))),je=(e,t,l,n)=>ue(n?l:Fe(l,e,t),((n,s)=>q(ze(e,t,s,n),(e=>(l[s]=e,!0)),(()=>!1))),(()=>bt(e,t))),ze=(t,l,n,s)=>e?q(sl(sl(A,t),n),(e=>We(s)!=e[u]?bt(t,l,n,s,e[d]):s),(()=>bt(t,l,n,s))):O(We(s))?bt(t,l,n,s):s,$e=(e,t)=>ue(t?e:Je(e),((t,l)=>q(Ae(l,t),(t=>(e[l]=t,!0)),(()=>!1))),(()=>pt())),Ae=(e,l)=>t?q(sl(J,e),(t=>We(l)!=t[u]?pt(e,l,t[d]):l),(()=>pt(e,l))):O(We(l))?pt(e,l):l,Fe=(e,t,l)=>(q(sl(F,t),(([n,s])=>{el(n,((t,l)=>{re(e,l)||(e[l]=t)})),el(s,(n=>{re(e,n)||bt(t,l,n)}))})),e),Je=e=>(t&&(el(D,((t,l)=>{re(e,l)||(e[l]=t)})),el(H,(t=>{re(e,t)||pt(t)}))),e),De=e=>il(A,e,((e,t,l)=>{const n=ll(),s=Vl();il(ol(A,t,ll),l,((e,t,l)=>{al(e,t,l),q(l[d],(e=>al(n,t,e)),(()=>Rl(s,t)))})),al(F,t,[n,s])}),((e,t)=>{al(A,t),al(F,t)})),He=e=>il(J,e,((e,t,l)=>{al(J,t,l),q(l[d],(e=>al(D,t,e)),(()=>Rl(H,t)))}),((e,t)=>{al(J,t),al(D,t),tl(H,t)})),Be=e=>ie(e)?gl():Dt(e),Qe=e=>il(X,e,((e,t,l)=>Ke(t,l)),((e,t)=>st(t))),Ke=(e,t)=>il(ol(X,e,(()=>(it(e,1),al(B,e,ql()),al(G,e,ll()),ll()))),t,((t,l,n)=>Xe(e,t,l,n)),((t,l)=>rt(e,t,l))),Xe=(e,t,l,n,s)=>il(ol(t,l,(()=>(ut(e,l,1),ll()))),n,((t,n,s)=>Ye(e,l,t,n,s)),((n,r)=>at(e,t,l,n,r,s))),Ye=(e,t,l,n,s)=>{Xt(l,n)||dt(e,t,n,1);const r=sl(l,n);s!==r&&(ct(e,t,n,r,s),al(l,n,s))},Ze=(e,t,l,n,s)=>q(sl(t,l),(t=>Ye(e,l,t,n,s)),(()=>Xe(e,t,l,Fe({[n]:s},e,l)))),_e=e=>ie(e)?Il():Ht(e),et=e=>il(Y,e,((e,t,l)=>tt(t,l)),((e,t)=>ot(t))),tt=(e,t)=>{Xt(Y,e)||ht(e,1);const l=sl(Y,e);t!==l&&(mt(e,l,t),al(Y,e,t))},lt=(e,t)=>{const[l]=sl(B,e),n=l(t);return Xt(sl(X,e),n)?lt(e,t):n},nt=e=>{var t;return null!=(t=sl(X,e))?t:Ke(e,{})},st=e=>Ke(e,{}),rt=(e,t,l)=>{const[,n]=sl(B,e);n(l),Xe(e,t,l,{},!0)},at=(e,t,l,n,s,r)=>{var a;const o=sl(null==(a=sl(F,e))?void 0:a[0],s);if(!O(o)&&!r)return Ye(e,l,n,s,o);const i=t=>{ct(e,l,t,sl(n,t)),dt(e,l,t,-1),al(n,t)};O(o)?i(s):rl(n,i),Yt(n)&&(ut(e,l,-1),Yt(al(t,l))&&(it(e,-1),al(X,e),al(B,e),al(G,e)))},ot=e=>{const t=sl(D,e);if(!O(t))return tt(e,t);mt(e,sl(Y,e)),ht(e,-1),al(Y,e)},it=(e,t)=>jl(i,e,t),ut=(e,t,l)=>jl(ol(S,e,ll),t,l)&&al(T,e,ol(T,e,(()=>0))+l),dt=(e,t,l,n)=>{var s;const r=sl(G,e),a=null!=(s=sl(r,l))?s:0;(0==a&&1==n||1==a&&-1==n)&&jl(ol(h,e,ll),l,n),al(r,l,a!=-n?a+n:null),jl(ol(ol(V,e,ll),t,ll),l,n)},ct=(e,t,l,n,s)=>ol(ol(ol(R,e,ll),t,ll),l,(()=>[n,0]))[1]=s,ht=(e,t)=>jl(M,e,t),mt=(e,t,l)=>ol(L,e,(()=>[t,0]))[1]=l,bt=(e,t,l,n,s)=>(K(ol(ol(ol(z,e,ll),t,ll),l,(()=>[])),n),s),pt=(e,t,l)=>(K(ol($,e,(()=>[])),t),l),gt=(e,t,l)=>q(sl(sl(sl(R,e),t),l),(([e,t])=>[!0,e,t]),(()=>[!1,...Pl(Pt(e,t,l))])),vt=e=>q(sl(L,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Pl(Lt(e))])),ft=e=>Yt(z)||Yt(we[e])?0:el(e?bl(z):z,((t,l)=>el(t,((t,n)=>el(t,((t,s)=>Pe(we[e],[l,n,s],t))))))),It=e=>Yt($)||Yt(Ce[e])?0:el(e?hl($):$,((t,l)=>Pe(Ce[e],[l],t))),yt=(e,t,l,n)=>{if(!Yt(e))return Pe(t,n,(()=>ul(e))),rl(e,((e,t)=>Pe(l,[...null!=n?n:[],e],1==t))),1},wt=e=>{const t=Et();t!=l&&Pe(Z[e],void 0,t);const n=Yt(pe[e]),s=Yt(fe[e])&&Yt(Ie[e])&&Yt(be[e])&&Yt(ge[e])&&Yt(se[e])&&Yt(he[e])&&Yt(me[e])&&n&&Yt(ee[e])&&Yt(te[e]),r=Yt(ye[e])&&Yt(ve[e])&&Yt(le[e])&&Yt(_[e]);if(!s||!r){const t=e?[hl(i),ml(h),hl(T),ml(S),bl(V),bl(R)]:[i,h,T,S,V,R];if(!s){yt(t[0],ee[e],te[e]),el(t[1],((t,l)=>yt(t,se[e],he[e],[l]))),el(t[2],((t,l)=>{0!=t&&Pe(me[e],[l],Vt(l))}));const l=Vl();el(t[3],((t,s)=>{yt(t,be[e],ge[e],[s])&&!n&&(Pe(pe[e],[s,null]),Rl(l,s))})),n||el(t[5],((t,n)=>{if(!Xt(l,n)){const l=Vl();el(t,(e=>el(e,(([t,n],s)=>n!==t?Rl(l,s):tl(e,s))))),el(l,(t=>Pe(pe[e],[n,t])))}})),el(t[4],((t,l)=>el(t,((t,n)=>yt(t,fe[e],Ie[e],[l,n])))))}if(!r){let l;el(t[5],((t,n)=>{let s;el(t,((t,r)=>{let a;el(t,(([t,o],i)=>{o!==t&&(Pe(ye[e],[n,r,i],o,t,gt),l=s=a=1)})),a&&Pe(ve[e],[n,r],gt)})),s&&Pe(le[e],[n],gt)})),l&&Pe(_[e],void 0,gt)}}},Ct=e=>{const t=Ft();t!=n&&Pe(ke[e],void 0,t);const l=Yt(Se[e])&&Yt(xe[e]),s=Yt(Ve[e])&&Yt(Te[e]);if(!l||!s){const t=e?[hl(M),hl(L)]:[M,L];if(l||yt(t[0],Se[e],xe[e]),!s){let l;el(t[1],(([t,n],s)=>{n!==t&&(Pe(Ve[e],[s],n,t,vt),l=1)})),l&&Pe(Te[e],void 0,vt)}}},kt=(e,...t)=>(Cl((()=>e(...U(t,x)))),Sl),Tt=()=>cl(X),St=()=>nl(X),xt=e=>nl(sl(G,x(e))),Vt=e=>Wt(sl(X,x(e))),Rt=e=>nl(sl(X,x(e))),Ot=(e,t,l,n=0,s)=>{return U(E(Q((r=sl(X,x(e)),a=(e,l)=>[O(t)?l:sl(e,x(t)),l],U([...null!=(o=null==r?void 0:r.entries())?o:[]],(([e,t])=>a(t,e)))),(([e],[t])=>{return((null!=(n=e)?n:0)<(null!=(s=t)?s:0)?-1:1)*(l?-1:1);var n,s})),n,O(s)?s:n+s),(([,e])=>e));var r,a,o},qt=(e,t)=>nl(sl(sl(X,x(e)),x(t))),Pt=(e,t,l)=>sl(sl(sl(X,x(e)),x(t)),x(l)),Mt=()=>ul(Y),Nt=()=>nl(Y),Lt=e=>sl(Y,x(e)),Et=()=>!Yt(X),jt=e=>Xt(X,x(e)),zt=(e,t)=>Xt(sl(G,x(e)),x(t)),$t=(e,t)=>Xt(sl(X,x(e)),x(t)),At=(e,t,l)=>Xt(sl(sl(X,x(e)),x(t)),x(l)),Ft=()=>!Yt(Y),Jt=e=>Xt(Y,x(e)),Dt=e=>kt((()=>(e=>ue(e,Ee,bt))(e)?Qe(e):0)),Ht=e=>kt((()=>$e(e)?et(e):0)),Bt=e=>{try{Be(ce(e))}catch(e){}return Sl},Qt=t=>kt((()=>{if((e=ue(t,(e=>ue(e,Le))))&&(De(t),!Yt(X))){const e=Tt();gl(),Dt(e)}})),Zt=e=>kt((()=>{if(t=(e=>ue(e,Le))(e)){const l=Mt();wl(),Il(),t=!0,He(e),Ht(l)}})),gl=()=>kt((()=>Qe({}))),vl=e=>kt((e=>Xt(X,e)?st(e):0),e),fl=(e,t)=>kt(((e,t)=>q(sl(X,e),(l=>Xt(l,t)?rt(e,l,t):0))),e,t),Il=()=>kt((()=>et({}))),yl=()=>kt((()=>{De({}),e=!1})),wl=()=>kt((()=>{He({}),t=!1})),Cl=(e,t)=>{if(-1!=r){kl();const l=e();return Tl(t),l}},kl=()=>(-1!=r&&r++,1==r&&Pe(Re,void 0),Sl),Tl=e=>{var t,s;return r>0&&(r--,0==r&&(r=1,ft(1),Yt(R)||wt(1),It(1),Yt(L)||Ct(1),(null==e?void 0:e(Sl))&&(el(R,((e,t)=>el(e,((e,l)=>el(e,(([e],n)=>Ue(Sl,t,l,n,e))))))),_t(R),el(L,(([e],t)=>Ge(Sl,t,e))),_t(L)),Pe(Oe[0],void 0),r=-1,ft(0),Yt(R)||wt(0),It(0),Yt(L)||Ct(0),null==(t=a[0])||t.call(a,Sl),Pe(Oe[1],void 0),null==(s=a[1])||s.call(a,Sl),r=0,l=Et(),n=Ft(),W([i,h,T,S,V,R,z,M,L,$],_t))),Sl},Sl={getContent:()=>[Tt(),Mt()],getTables:Tt,getTableIds:St,getTable:e=>dl(sl(X,x(e))),getTableCellIds:xt,getRowCount:Vt,getRowIds:Rt,getSortedRowIds:Ot,getRow:(e,t)=>ul(sl(sl(X,x(e)),x(t))),getCellIds:qt,getCell:Pt,getValues:Mt,getValueIds:Nt,getValue:Lt,hasTables:Et,hasTable:jt,hasTableCell:zt,hasRow:$t,hasCell:At,hasValues:Ft,hasValue:Jt,getTablesJson:()=>de(X),getValuesJson:()=>de(Y),getJson:()=>de([X,Y]),getTablesSchemaJson:()=>de(A),getValuesSchemaJson:()=>de(J),getSchemaJson:()=>de([A,J]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>kt((()=>{(ie(e)?gl:Dt)(e),(ie(t)?Il:Ht)(t)})),setTables:Dt,setTable:(e,t)=>kt((e=>Ee(t,e)?Ke(e,t):0),e),setRow:(e,t,l)=>kt(((e,t)=>je(e,t,l)?Xe(e,nt(e),t,l):0),e,t),addRow:(e,t,l=!0)=>Cl((()=>{let n;return je(e,n,t)&&(e=x(e),Xe(e,nt(e),n=lt(e,l?1:0),t)),n})),setPartialRow:(e,t,l)=>kt(((e,t)=>{if(je(e,t,l,1)){const n=nt(e);oe(l,((l,s)=>Ze(e,n,t,s,l)))}}),e,t),setCell:(e,t,l,n)=>kt(((e,t,l)=>q(ze(e,t,l,N(n)?n(Pt(e,t,l)):n),(n=>Ze(e,nt(e),t,l,n)))),e,t,l),setValues:Ht,setPartialValues:e=>kt((()=>$e(e,1)?oe(e,((e,t)=>tt(t,e))):0)),setValue:(e,t)=>kt((e=>q(Ae(e,N(t)?t(Lt(e)):t),(t=>tt(e,t)))),e),applyChanges:e=>kt((()=>{oe(e[0],((e,t)=>O(e)?vl(t):oe(e,((e,l)=>O(e)?fl(t,l):oe(e,((e,n)=>Ue(Sl,t,l,n,e))))))),oe(e[1],((e,t)=>Ge(Sl,t,e)))})),setTablesJson:Bt,setValuesJson:e=>{try{_e(ce(e))}catch(e){}return Sl},setJson:e=>kt((()=>{try{const[t,l]=ce(e);Be(t),_e(l)}catch(t){Bt(e)}})),setTablesSchema:Qt,setValuesSchema:Zt,setSchema:(e,t)=>kt((()=>{Qt(e),Zt(t)})),delTables:gl,delTable:vl,delRow:fl,delCell:(e,t,l,n)=>kt(((e,t,l)=>q(sl(X,e),(s=>q(sl(s,t),(r=>Xt(r,l)?at(e,s,t,r,l,n):0))))),e,t,l),delValues:Il,delValue:e=>kt((e=>Xt(Y,e)?ot(e):0),e),delTablesSchema:yl,delValuesSchema:wl,delSchema:()=>kt((()=>{yl(),wl()})),transaction:Cl,startTransaction:kl,getTransactionChanges:()=>[ul(R,((e,t)=>-1===sl(i,t)?void 0:ul(e,((e,l)=>-1===sl(sl(S,t),l)?void 0:ul(e,(([,e])=>e),(e=>El(e)))),Yt,ie)),Yt,ie),ul(L,(([,e])=>e),(e=>El(e))),1],getTransactionLog:()=>[!Yt(R),!Yt(L),cl(R,Ll,El),cl(z),ul(L,Ll,El),ul($),ul(i),dl(S),cl(V),ul(M)],finishTransaction:Tl,forEachTable:e=>el(X,((t,l)=>e(l,(e=>el(t,((t,l)=>e(l,(e=>rl(t,e))))))))),forEachTableCell:(e,t)=>rl(sl(G,x(e)),t),forEachRow:(e,t)=>el(sl(X,x(e)),((e,l)=>t(l,(t=>rl(e,t))))),forEachCell:(e,t,l)=>rl(sl(sl(X,x(e)),x(t)),l),forEachValue:e=>rl(Y,e),addSortedRowIdsListener:(e,t,l,n,s,r,a)=>{let o=Ot(e,t,l,n,s);return qe((()=>{const a=Ot(e,t,l,n,s);var i,u,d;u=o,j(i=a)===j(u)&&(d=(e,t)=>u[t]===e,i.every(d))||(o=a,r(Sl,e,t,l,n,s,o))}),pe[a?1:0],[e,t],[St])},addStartTransactionListener:e=>qe(e,Re),addWillFinishTransactionListener:e=>qe(e,Oe[0]),addDidFinishTransactionListener:e=>qe(e,Oe[1]),callListener:e=>(Ne(e),Sl),delListener:e=>(Me(e),Sl),getListenerStats:()=>({hasTables:Ml(Z),tables:Ml(_),tableIds:Ml(ee),hasTable:Ml(te),table:Ml(le),tableCellIds:Ml(se),hasTableCell:Ml(he,Gt),rowCount:Ml(me),rowIds:Ml(be),sortedRowIds:Ml(pe),hasRow:Ml(ge,Gt),row:Ml(ve,Gt),cellIds:Ml(fe,Gt),hasCell:Ml(Ie,Kt),cell:Ml(ye,Kt),invalidCell:Ml(we,Kt),hasValues:Ml(ke),values:Ml(Te),valueIds:Ml(Se),hasValue:Ml(xe),value:Ml(Ve),invalidValue:Ml(Ce),transaction:Ut(Re)+Ml(Oe)}),createStore:zl,addListener:qe,callListeners:Pe,setInternalListeners:(e,t)=>a=[e,t]};return oe({[c+b]:[0,Z,[],()=>[Et()]],[b]:[0,_],[p]:[0,ee],[c+m]:[1,te,[St],e=>[jt(...e)]],[m]:[1,le,[St]],[m+y]:[1,se,[St]],[c+m+I]:[2,he,[St,xt],e=>[zt(...e)]],[v]:[1,me,[St]],[f]:[1,be,[St]],[c+g]:[2,ge,[St,Rt],e=>[$t(...e)]],[g]:[2,ve,[St,Rt]],[y]:[2,fe,[St,Rt]],[c+I]:[3,Ie,[St,Rt,qt],e=>[At(...e)]],[I]:[3,ye,[St,Rt,qt],e=>Pl(Pt(...e))],InvalidCell:[3,we],[c+C]:[0,ke,[],()=>[Ft()]],[C]:[0,Te],[k]:[0,Se],[c+w]:[1,xe,[Nt],e=>[Jt(...e)]],[w]:[1,Ve,[Nt],e=>Pl(Lt(e[0]))],InvalidValue:[1,Ce]},(([e,t,l,n],s)=>{Sl["add"+s+"Listener"]=(...s)=>qe(s[e],t[s[e+1]?1:0],e>0?E(s,0,e):void 0,l,n)})),ne(Sl)},$l=({position:e="right",open:t=!1})=>{const n=l.useCreateStore(zl),s=be.indexOf(e);return l.useCreatePersister(n,(e=>{return((e,t,l,n)=>((e,t,l,n,s,r,a,o={},i=[])=>{let u,d,c,h=0,m=0,b=0;ol(Cl,i,(()=>0)),ol(kl,i,(()=>[]));const[p,g,v,f]=((e,t)=>!e||O(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!ie(e)||!ie(t)]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!ie(e)||!ie(t)])(a,e),I=e=>wl(void 0,null,(function*(){return 2!=h&&(h=1,m++,yield w.schedule((()=>wl(void 0,null,(function*(){yield e(),h=0}))))),w})),y=t=>{(p&&M(null==t?void 0:t[0])?1===(null==t?void 0:t[1][2])?e.applyMergeableChanges:e.setMergeableContent:1===(null==t?void 0:t[2])?e.applyChanges:e.setContent)(t)},w=((e,t)=>{for(var l in t||(t={}))fl.call(t,l)&&yl(e,l,t[l]);if(vl)for(var l of vl(t))Il.call(t,l)&&yl(e,l,t[l]);return e})({load:(l,n)=>wl(void 0,null,(function*(){return yield I((()=>wl(void 0,null,(function*(){try{y(yield t())}catch(t){null==r||r(t),e.setContent([l,n])}}))))})),startAutoLoad:(...e)=>wl(void 0,[...e],(function*(e={},l={}){return yield w.stopAutoLoad().load(e,l),d=n(((e,l)=>wl(void 0,null,(function*(){const n=null==l?void 0:l();yield I((()=>wl(void 0,null,(function*(){var l;try{y(null!=(l=null!=n?n:null==e?void 0:e())?l:yield t())}catch(e){null==r||r(e)}}))))})))),w})),stopAutoLoad:()=>(d&&(s(d),d=void 0),w),isAutoLoading:()=>!O(d),save:e=>wl(void 0,null,(function*(){return 1!=h&&(h=2,b++,yield w.schedule((()=>wl(void 0,null,(function*(){try{yield l(g,e)}catch(e){null==r||r(e)}h=0}))))),w})),startAutoSave:()=>wl(void 0,null,(function*(){return yield w.stopAutoSave().save(),c=e.addDidFinishTransactionListener((()=>{const e=v();f(e)&&w.save((()=>e))})),w})),stopAutoSave:()=>(q(c,e.delListener),c=void 0,w),isAutoSaving:()=>!O(c),schedule:(...e)=>wl(void 0,null,(function*(){return K(sl(kl,i),...e),yield wl(void 0,null,(function*(){if(!sl(Cl,i)){for(al(Cl,i,1);!O(u=X(sl(kl,i)));)try{yield u()}catch(e){null==r||r(e)}al(Cl,i,0)}})),w})),getStore:()=>e,destroy:()=>w.stopAutoLoad().stopAutoSave(),getStats:()=>({loads:m,saves:b})},o);return ne(w)})(e,(()=>Tl(void 0,null,(function*(){return ce(l.getItem(t))}))),(e=>Tl(void 0,null,(function*(){return l.setItem(t,de(e()))}))),(e=>{const n=n=>{n.storageArea===l&&n.key===t&&e((()=>ce(n.newValue)))};return xl.addEventListener(Sl,n),n}),(e=>xl.removeEventListener(Sl,e)),n,!0,{getStorageName:()=>t}))(e,he,sessionStorage,t);var t}),void 0,(e=>{return l=function*(){yield e.load(void 0,{position:-1==s?1:s,open:!!t}),yield e.startAutoSave()},new Promise(((e,t)=>{var n=e=>{try{r(l.next(e))}catch(e){t(e)}},s=e=>{try{r(l.throw(e))}catch(e){t(e)}},r=t=>t.done?e(t.value):Promise.resolve(t.value).then(n,s);r((l=l.apply(void 0,null)).next())}));var l})),A($,null,A("aside",{id:he},A(Be,{s:n}),A(Bt,{s:n})),A("style",null,He))};var Al=Object.defineProperty,Fl=Object.getOwnPropertySymbols,Jl=Object.prototype.hasOwnProperty,Dl=Object.prototype.propertyIsEnumerable,Hl=(e,t,l)=>t in e?Al(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l;e.EditableCellView=xt,e.EditableValueView=Vt,e.RelationshipInHtmlTable=Tt,e.ResultSortedTableInHtmlTable=St,e.ResultTableInHtmlTable=e=>{var t=e,{queryId:n,queries:s,customCells:r}=t,a=rt(t,["queryId","queries","customCells"]);return A(vt,st(nt({},a),{params:ht(gt(l.useResultTableCellIds(n,s),r,l.ResultCellView),bt(s,n),l.useResultRowIds(n,s))}))},e.SliceInHtmlTable=kt,e.SortedTableInHtmlTable=wt,e.SortedTablePaginator=Rt,e.StoreInspector=e=>A($l,((e,t)=>{for(var l in t||(t={}))Jl.call(t,l)&&Hl(e,l,t[l]);if(Fl)for(var l of Fl(t))Dl.call(t,l)&&Hl(e,l,t[l]);return e})({},e)),e.TableInHtmlTable=e=>{var t=e,{tableId:n,store:s,editable:r,customCells:a}=t,o=rt(t,["tableId","store","editable","customCells"]);return A(vt,st(nt({},o),{params:ht(gt(l.useTableCellIds(n,s),a,r?xt:l.CellView),mt(s,n),l.useRowIds(n,s))}))},e.ValuesInHtmlTable=Ct},"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).TinyBaseUiReactDomDebug={},e.React,e.TinyBaseUiReact);
1
+ var e,t;e=this,t=function(e,t,l){"use strict";const n=e=>typeof e,s="",r=n(s),a=n(!0),o=n(0),i=n(n),u="type",d="default",c="Has",h="Ids",m="Table",b=m+"s",p=m+h,g="Row",v=g+"Count",f=g+h,I="Cell",y=I+h,w="Value",C=w+"s",k=w+h,T="currentTarget",S="value",x=e=>s+e,V=Math.floor,R=isFinite,O=e=>null==e,q=(e,t,l)=>O(e)?null==l?void 0:l():t(e),P=e=>e==r||e==a,M=e=>n(e)==r,N=e=>n(e)==i,L=e=>Array.isArray(e),E=(e,t,l)=>e.slice(t,l),j=e=>e.length,{PureComponent:z,Fragment:$,createElement:A,useCallback:D,useLayoutEffect:F,useRef:J,useState:H}=t,B=(e,...t)=>O(e)?{}:e(...t),Q=(e,t)=>e.sort(t),W=(e,t)=>e.forEach(t),U=(e,t)=>e.map(t),G=e=>0==j(e),K=(e,...t)=>e.push(...t),X=e=>e.shift(),Y=Object,Z=e=>Y.getPrototypeOf(e),_=Y.entries,ee=Y.isFrozen,te=e=>!O(e)&&q(Z(e),(e=>e==Y.prototype||O(Z(e))),(()=>!0)),le=Y.keys,ne=Y.freeze,se=(e=[])=>Y.fromEntries(e),re=(e,t)=>t in e,ae=(e,t)=>(delete e[t],e),oe=(e,t)=>U(_(e),(([e,l])=>t(l,e))),ie=e=>te(e)&&0==(e=>j(le(e)))(e),ue=(e,t,l,n=0)=>O(e)||!te(e)||!n&&ie(e)||ee(e)?(null==l||l(),!1):(oe(e,((l,n)=>{t(l,n)||ae(e,n)})),!!n||!ie(e)),de=e=>JSON.stringify(e,((e,t)=>t instanceof Map?Y.fromEntries([...t]):t)),ce=JSON.parse,he="tinybaseStoreInspector",me="TinyBase Store Inspector",be=["left","top","bottom","right","full"],pe="state",ge="sort",ve="open",fe="position",Ie=ve,ye="editable",we=(...e)=>de(e),Ce=(e,t)=>U(Q(e),t),ke=(e,t)=>[!!l.useCell(pe,e,ye,t),D((l=>{t.setCell(pe,e,ye,(e=>!e)),l.preventDefault()}),[t,e])],Te="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",Se='content:url("',xe=Se+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",Ve='</svg>")',Re=Se+"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\")",Oe=U([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,n])=>xe+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${n}' fill='white'/>`+Ve)),qe=xe+"<path d='M20 20l60 60M20 80l60-60' />"+Ve,Pe=xe+`<path d='${Te}' />`+Ve,Me=xe+`<path d='${Te}M20 20l60 60' />`+Ve;var Ne=Object.defineProperty,Le=Object.defineProperties,Ee=Object.getOwnPropertyDescriptors,je=Object.getOwnPropertySymbols,ze=Object.prototype.hasOwnProperty,$e=Object.prototype.propertyIsEnumerable,Ae=(e,t,l)=>t in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,De=(e,t)=>{for(var l in t||(t={}))ze.call(t,l)&&Ae(e,l,t[l]);if(je)for(var l of je(t))$e.call(t,l)&&Ae(e,l,t[l]);return e},Fe=(e,t)=>Le(e,Ee(t));const Je="*::-webkit-scrollbar",He=((e,t="")=>e.join(t))(oe(Fe(De(Fe(De(Fe(De({"":"all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999","*":"all:revert","*::before":"all:revert","*::after":"all:revert",[Je]:"width:0.5rem;height:0.5rem;",[Je+"-track"]:"background:#111",[Je+"-thumb"]:"background:#999;border:1px solid #111",[Je+"-thumb:hover"]:"background:#fff",[Je+"-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;"+Re},se(U(["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;"}),se(U(["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)":Re,"header>img:nth-of-type(6)":qe}),se(U(Oe,((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":Pe,"details[open]>summary img.done":Me,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,#${he} 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?`#${he} ${t}{${e}}`:""))),Be=({s:e})=>{var t;const n=null!=(t=l.useValue(fe,e))?t:1,s=l.useSetValueCallback(Ie,(()=>!0),[],e);return l.useValue(Ie,e)?null:A("img",{onClick:s,title:me,"data-position":n})},Qe=({uniqueId:e,summary:t,editable:n,handleEditable:s,children:r,s:a})=>{const o=!!l.useCell(pe,e,ve,a),i=l.useSetCellCallback(pe,e,ve,(e=>e[T].open),[],a);return A("details",{open:o,onToggle:i},A("summary",null,t,s?A("img",{onClick:s,className:n?"done":"edit"}):null),r)},We=e=>{const t=n(e);return P(t)||t==o&&R(e)?t:void 0},Ue=(e,t,l,n,s)=>O(s)?e.delCell(t,l,n,!0):e.setCell(t,l,n,s),Ge=(e,t,l)=>O(l)?e.delValue(t):e.setValue(t,l),Ke=(e,t,l,n)=>e==r?t:e==o?l:n;var Xe=Object.defineProperty,Ye=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,_e=Object.getOwnPropertySymbols,et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable,lt=(e,t,l)=>t in e?Xe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,nt=(e,t)=>{for(var l in t||(t={}))et.call(t,l)&&lt(e,l,t[l]);if(_e)for(var l of _e(t))tt.call(t,l)&&lt(e,l,t[l]);return e},st=(e,t)=>Ye(e,Ze(t)),rt=(e,t)=>{var l={};for(var n in e)et.call(e,n)&&t.indexOf(n)<0&&(l[n]=e[n]);if(null!=e&&_e)for(var n of _e(e))t.indexOf(n)<0&&tt.call(e,n)&&(l[n]=e[n]);return l};const{useCallback:at,useMemo:ot,useState:it}=t,ut="editable",dt=(e,t)=>U(l.useTableCellIds(e,t),(t=>e+"."+t)),ct=(e,t,l)=>{const n=at(e,t);return l?n:void 0},ht=(...e)=>ot((()=>e),e),mt=(e,t)=>ot((()=>({store:e,tableId:t})),[e,t]),bt=(e,t)=>ot((()=>({queries:e,queryId:t})),[e,t]),pt=(e,t=!1,l,n=0,s,r,a,o)=>{const[[i,u,d],c]=it([e,t,n]),h=at((e=>{c(e),null==o||o(e)}),[o]),m=ct((e=>h([e,e==i&&!u,d])),[h,i,u,d],l),b=at((e=>h([i,u,e])),[h,i,u]),p=!0===a?Rt:a;return[[i,u,d],m,ot((()=>!1===a?null:A(p,{offset:d,limit:s,total:r,onChange:b})),[a,p,d,s,r,b])]},gt=(e,t,l)=>ot((()=>{const n=null!=t?t:e;return s=L(n)?se(U(n,(e=>[e,e]))):n,r=(e,t)=>nt(nt({},{label:t,component:l}),M(e)?{label:e}:e),se(oe(s,((e,t)=>[t,r(e,t)])));var s,r}),[t,l,e]),vt=({className:e,headerRow:t,idColumn:l,params:[n,s,r,a,o,i]})=>A("table",{className:e},i?A("caption",null,i):null,!1===t?null:A("thead",null,A("tr",null,!1===l?null:A(ft,{sort:null!=a?a:[],label:"Id",onClick:o}),oe(n,(({label:e},t)=>A(ft,{key:t,cellId:t,label:e,sort:null!=a?a:[],onClick:o}))))),A("tbody",null,U(r,(e=>A("tr",{key:e},!1===l?null:A("th",null,e),oe(n,(({component:t,getComponentProps:l},n)=>A("td",{key:n},A(t,st(nt(nt({},B(l,e,n)),s),{rowId:e,cellId:n})))))))))),ft=({cellId:e,sort:[t,l],label:n=(null!=e?e:s),onClick:r})=>A("th",{onClick:ct((()=>null==r?void 0:r(e)),[r,e],r),className:O(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},O(l)||t!=e?null:(l?"↓":"↑")+" ",n),It=({localRowId:e,params:[n,s,r,a,o,i,u]})=>{const d=l.useRemoteRowId(o,e,i);return A("tr",null,!1===n?null:A(t.Fragment,null,A("th",null,e),A("th",null,d)),oe(s,(({component:t,getComponentProps:l},n)=>{const[s,o]=n.split(".",2),i=s===r?e:s===a?d:null;return O(i)?null:A("td",{key:n},A(t,st(nt({},B(l,i,o)),{store:u,tableId:s,rowId:i,cellId:o})))})))},yt=({thing:e,onThingChange:t,className:l,hasSchema:n,showType:s=!0})=>{const[i,u]=it(),[d,c]=it(),[h,m]=it(),[b,p]=it(),[g,v]=it();d!==e&&(u(We(e)),c(e),m(e+""),p(Number(e)||0),v(!!e));const f=at(((e,l)=>{l(e),c(e),t(e)}),[t]),I=at((()=>{if(!(null==n?void 0:n())){const e=Ke(i,o,a,r),l=Ke(e,h,b,g);u(e),c(l),t(l)}}),[n,t,h,b,g,i]);return A("div",{className:l},s?A("button",{className:i,onClick:I},i):null,Ke(i,A("input",{key:i,value:h,onChange:at((e=>f(e[T][S]+"",m)),[f])}),A("input",{key:i,type:"number",value:b,onChange:at((e=>f(Number(e[T][S]||0),p)),[f])}),A("input",{key:i,type:"checkbox",checked:g,onChange:at((e=>f(!!e[T].checked,v)),[f])})))},wt=e=>{var t=e,{tableId:n,cellId:s,descending:r,offset:a,limit:o,store:i,editable:u,sortOnClick:d,paginator:c=!1,onChange:h,customCells:m}=t,b=rt(t,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[p,g,v]=pt(s,r,d,a,o,l.useRowCount(n,i),c,h);return A(vt,st(nt({},b),{params:ht(gt(l.useTableCellIds(n,i),m,u?xt:l.CellView),mt(i,n),l.useSortedRowIds(n,...p,o,i),p,g,v)}))},Ct=({store:e,editable:t=!1,valueComponent:n=(t?Vt:l.ValueView),getValueComponentProps:s,className:r,headerRow:a,idColumn:o})=>A("table",{className:r},!1===a?null:A("thead",null,A("tr",null,!1===o?null:A("th",null,"Id"),A("th",null,w))),A("tbody",null,U(l.useValueIds(e),(t=>A("tr",{key:t},!1===o?null:A("th",null,t),A("td",null,A(n,st(nt({},B(s,t)),{valueId:t,store:e})))))))),kt=e=>{var t=e,{indexId:n,sliceId:s,indexes:r,editable:a,customCells:o}=t,i=rt(t,["indexId","sliceId","indexes","editable","customCells"]);const[u,d,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(l.useIndexesOrIndexesById(r),n);return A(vt,st(nt({},i),{params:ht(gt(l.useTableCellIds(c,d),o,a?xt:l.CellView),mt(d,c),l.useSliceRowIds(n,s,u))}))},Tt=({relationshipId:e,relationships:n,editable:s,customCells:r,className:a,headerRow:o,idColumn:i=!0})=>{const[u,d,c,h]=((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(n),e),m=gt([...dt(c,d),...dt(h,d)],r,s?xt:l.CellView),b=ht(i,m,c,h,e,u,d);return A("table",{className:a},!1===o?null:A("thead",null,A("tr",null,!1===i?null:A(t.Fragment,null,A("th",null,c,".Id"),A("th",null,h,".Id")),oe(m,(({label:e},t)=>A("th",{key:t},e))))),A("tbody",null,U(l.useRowIds(c,d),(e=>A(It,{key:e,localRowId:e,params:b})))))},St=e=>{var t=e,{queryId:n,cellId:s,descending:r,offset:a,limit:o,queries:i,sortOnClick:u,paginator:d=!1,customCells:c,onChange:h}=t,m=rt(t,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[b,p,g]=pt(s,r,u,a,o,l.useResultRowCount(n,i),d,h);return A(vt,st(nt({},m),{params:ht(gt(l.useResultTableCellIds(n,i),c,l.ResultCellView),bt(i,n),l.useResultSortedRowIds(n,...b,o,i),b,p,g)}))},xt=({tableId:e,rowId:t,cellId:n,store:s,className:r,showType:a})=>{var o;return A(yt,{thing:l.useCell(e,t,n,s),onThingChange:l.useSetCellCallback(e,t,n,(e=>e),[],s),className:null!=r?r:ut+I,showType:a,hasSchema:null==(o=l.useStoreOrStoreById(s))?void 0:o.hasTablesSchema})},Vt=({valueId:e,store:t,className:n,showType:s})=>{var r;return A(yt,{thing:l.useValue(e,t),onThingChange:l.useSetValueCallback(e,(e=>e),[],t),className:null!=n?n:ut+w,showType:s,hasSchema:null==(r=l.useStoreOrStoreById(t))?void 0:r.hasValuesSchema})},Rt=({onChange:e,total:l,offset:n=0,limit:s=l,singular:r="row",plural:a=r+"s"})=>{(n>l||n<0)&&(n=0,e(0));const o=ct((()=>e(n-s)),[e,n,s],n>0),i=ct((()=>e(n+s)),[e,n,s],n+s<l);return A(t.Fragment,null,l>s&&A(t.Fragment,null,A("button",{className:"previous",disabled:0==n,onClick:o},"←"),A("button",{className:"next",disabled:n+s>=l,onClick:i},"→"),n+1," to ",Math.min(l,n+s)," of "),l," ",1!=l?a:r)},Ot=({indexes:e,indexesId:t,indexId:n,s:s})=>A(Qe,{uniqueId:we("i",t,n),summary:"Index: "+n,s:s},U(l.useSliceIds(n,e),(l=>A(qt,{indexes:e,indexesId:t,indexId:n,sliceId:l,s:s,key:l})))),qt=({indexes:e,indexesId:t,indexId:l,sliceId:n,s:s})=>{const r=we("i",t,l,n),[a,o]=ke(r,s);return A(Qe,{uniqueId:r,summary:"Slice: "+n,editable:a,handleEditable:o,s:s},A(kt,{sliceId:n,indexId:l,indexes:e,editable:a}))},Pt=({indexesId:e,s:t})=>{const n=l.useIndexes(e),s=l.useIndexIds(n);return O(n)?null:A(Qe,{uniqueId:we("i",e),summary:"Indexes: "+(null!=e?e:d),s:t},G(s)?"No indexes defined":Ce(s,(l=>A(Ot,{indexes:n,indexesId:e,indexId:l,s:t,key:l}))))},Mt=({metrics:e,metricId:t})=>A("tr",null,A("th",null,t),A("td",null,null==e?void 0:e.getTableId(t)),A("td",null,l.useMetric(t,e))),Nt=({metricsId:e,s:t})=>{const n=l.useMetrics(e),s=l.useMetricIds(n);return O(n)?null:A(Qe,{uniqueId:we("m",e),summary:"Metrics: "+(null!=e?e:d),s:t},G(s)?"No metrics defined":A("table",null,A("thead",null,A("th",null,"Metric Id"),A("th",null,"Table Id"),A("th",null,"Metric")),A("tbody",null,U(s,(e=>A(Mt,{metrics:n,metricId:e,key:e}))))))},Lt=({queries:e,queriesId:t,queryId:n,s:s})=>{var r;const a=we("q",t,n),[o,i,u]=ce(null!=(r=l.useCell(pe,a,ge,s))?r:"[]"),d=l.useSetCellCallback(pe,a,ge,de,[],s);return A(Qe,{uniqueId:a,summary:"Query: "+n,s:s},A(St,{queryId:n,queries:e,cellId:o,descending:i,offset:u,limit:10,paginator:!0,sortOnClick:!0,onChange:d}))},Et=({queriesId:e,s:t})=>{const n=l.useQueries(e),s=l.useQueryIds(n);return O(n)?null:A(Qe,{uniqueId:we("q",e),summary:"Queries: "+(null!=e?e:d),s:t},G(s)?"No queries defined":Ce(s,(l=>A(Lt,{queries:n,queriesId:e,queryId:l,s:t,key:l}))))},jt=({relationships:e,relationshipsId:t,relationshipId:l,s:n})=>{const s=we("r",t,l),[r,a]=ke(s,n);return A(Qe,{uniqueId:s,summary:"Relationship: "+l,editable:r,handleEditable:a,s:n},A(Tt,{relationshipId:l,relationships:e,editable:r}))},zt=({relationshipsId:e,s:t})=>{const n=l.useRelationships(e),s=l.useRelationshipIds(n);return O(n)?null:A(Qe,{uniqueId:we("r",e),summary:"Relationships: "+(null!=e?e:d),s:t},G(s)?"No relationships defined":Ce(s,(l=>A(jt,{relationships:n,relationshipsId:e,relationshipId:l,s:t,key:l}))))},$t=({tableId:e,store:t,storeId:n,s:s})=>{var r;const a=we("t",n,e),[o,i,u]=ce(null!=(r=l.useCell(pe,a,ge,s))?r:"[]"),d=l.useSetCellCallback(pe,a,ge,de,[],s),[c,h]=ke(a,s);return A(Qe,{uniqueId:a,summary:m+": "+e,editable:c,handleEditable:h,s:s},A(wt,{tableId:e,store:t,cellId:o,descending:i,offset:u,limit:10,paginator:!0,sortOnClick:!0,onChange:d,editable:c}))},At=({store:e,storeId:t,s:n})=>{const s=we("v",t),[r,a]=ke(s,n);return G(l.useValueIds(e))?null:A(Qe,{uniqueId:s,summary:C,editable:r,handleEditable:a,s:n},A(Ct,{store:e,editable:r}))},Dt=({storeId:e,s:t})=>{const n=l.useStore(e),s=l.useTableIds(n);return O(n)?null:A(Qe,{uniqueId:we("s",e),summary:"Store: "+(null!=e?e:d),s:t},A(At,{storeId:e,store:n,s:t}),Ce(s,(l=>A($t,{store:n,storeId:e,tableId:l,s:t,key:l}))))},Ft=({s:e})=>{const t=J(null),n=J(0),[s,r]=H(!1),{scrollLeft:a,scrollTop:o}=l.useValues(e);F((()=>{const e=t.current;if(e&&!s){const t=new MutationObserver((()=>{e.scrollWidth>=V(a)+e.clientWidth&&e.scrollHeight>=V(o)+e.clientHeight&&e.scrollTo(a,o)}));return t.observe(e,{childList:!0,subtree:!0}),()=>t.disconnect()}}),[s,a,o]);const i=D((t=>{const{scrollLeft:l,scrollTop:s}=t[T];cancelIdleCallback(n.current),n.current=requestIdleCallback((()=>{r(!0),e.setPartialValues({scrollLeft:l,scrollTop:s})}))}),[e]),u=l.useStore(),d=l.useStoreIds(),c=l.useMetrics(),h=l.useMetricsIds(),m=l.useIndexes(),b=l.useIndexesIds(),p=l.useRelationships(),g=l.useRelationshipsIds(),v=l.useQueries(),f=l.useQueriesIds();return O(u)&&G(d)&&O(c)&&G(h)&&O(m)&&G(b)&&O(p)&&G(g)&&O(v)&&G(f)?A("span",{className:"warn"},"There are no Stores or other objects to inspect. Make sure you placed the StoreInspector inside a Provider component."):A("article",{ref:t,onScroll:i},A(Dt,{s:e}),U(d,(t=>A(Dt,{storeId:t,s:e,key:t}))),A(Nt,{s:e}),U(h,(t=>A(Nt,{metricsId:t,s:e,key:t}))),A(Pt,{s:e}),U(b,(t=>A(Pt,{indexesId:t,s:e,key:t}))),A(zt,{s:e}),U(g,(t=>A(zt,{relationshipsId:t,s:e,key:t}))),A(Et,{s:e}),U(f,(t=>A(Et,{queriesId:t,s:e,key:t}))))};class Jt extends z{constructor(e){super(e),this.componentDidCatch=(e,t)=>console.error(e,t.componentStack),this.state={e:0}}static getDerivedStateFromError(){return{e:1}}render(){return this.state.e?A("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}}const Ht=({s:e})=>{var t;const n=null!=(t=l.useValue(fe,e))?t:1,s=l.useSetValueCallback(Ie,(()=>!1),[],e),r=l.useSetValueCallback(fe,(e=>Number(e[T].dataset.id)),[],e);return A("header",null,A("img",{title:me}),A("span",null,me),U(be,((e,t)=>t==n?null:A("img",{onClick:r,"data-id":t,title:"Dock to "+e,key:t}))),A("img",{onClick:s,title:"Close"}))},Bt=({s:e})=>{var t;const n=null!=(t=l.useValue(fe,e))?t:1;return l.useValue(Ie,e)?A("main",{"data-position":n},A(Ht,{s:e}),A(Jt,null,A(Ft,{s:e}))):null},Qt=e=>t=>{return l=(t,l)=>t+e(l),Zt(t).reduce(l,0);var l},Wt=e=>{var t;return null!=(t=null==e?void 0:e.size)?t:0},Ut=Qt(Wt),Gt=Qt(Ut),Kt=Qt(Gt),Xt=(e,t)=>{var l;return null!=(l=null==e?void 0:e.has(t))&&l},Yt=e=>O(e)||0==Wt(e),Zt=e=>{var t;return[...null!=(t=null==e?void 0:e.values())?t:[]]},_t=e=>e.clear(),el=(e,t)=>null==e?void 0:e.forEach(t),tl=(e,t)=>null==e?void 0:e.delete(t),ll=e=>new Map(e),nl=e=>{var t;return[...null!=(t=null==e?void 0:e.keys())?t:[]]},sl=(e,t)=>null==e?void 0:e.get(t),rl=(e,t)=>el(e,((e,l)=>t(l,e))),al=(e,t,l)=>O(l)?(tl(e,t),e):null==e?void 0:e.set(t,l),ol=(e,t,l,n)=>(Xt(e,t)?null==n||n(sl(e,t)):al(e,t,l()),sl(e,t)),il=(e,t,l,n=al)=>(oe(t,((t,n)=>l(e,n,t))),rl(e,(l=>re(t,l)?0:n(e,l))),e),ul=(e,t,l,n)=>{const s={};return el(e,((e,r)=>{if(!(null==l?void 0:l(e,r))){const l=t?t(e,r):e;!(null==n?void 0:n(l))&&(s[r]=l)}})),s},dl=(e,t,l)=>ul(e,(e=>ul(e,t,l)),Yt,ie),cl=(e,t,l)=>ul(e,(e=>dl(e,t,l)),Yt,ie),hl=(e,t)=>{const l=ll();return el(e,((e,n)=>{var s;return l.set(n,null!=(s=null==t?void 0:t(e))?s:e)})),l},ml=e=>hl(e,hl),bl=e=>hl(e,ml),pl=(e,t,l,n,s=0)=>q((l?ol:sl)(e,t[s],s>j(t)-2?l:ll),(r=>{if(s>j(t)-2)return(null==n?void 0:n(r))&&al(e,t[s]),r;const a=pl(r,t,l,n,s+1);return Yt(r)&&al(e,t[s]),a}));var gl=Object.defineProperty,vl=Object.getOwnPropertySymbols,fl=Object.prototype.hasOwnProperty,Il=Object.prototype.propertyIsEnumerable,yl=(e,t,l)=>t in e?gl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,wl=(e,t,l)=>new Promise(((n,s)=>{var r=e=>{try{o(l.next(e))}catch(e){s(e)}},a=e=>{try{o(l.throw(e))}catch(e){s(e)}},o=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);o((l=l.apply(e,t)).next())}));const Cl=ll(),kl=ll();var Tl=(e,t,l)=>new Promise(((n,s)=>{var r=e=>{try{o(l.next(e))}catch(e){s(e)}},a=e=>{try{o(l.throw(e))}catch(e){s(e)}},o=e=>e.done?n(e.value):Promise.resolve(e.value).then(r,a);o((l=l.apply(e,t)).next())}));const Sl="storage",xl=globalThis.window,Vl=e=>new Set(L(e)||O(e)?e:[e]),Rl=(e,t)=>null==e?void 0:e.add(t),Ol=/^\d+$/,ql=()=>{const e=[];let t=0;return[l=>{var n;return null!=(n=l?X(e):null)?n:s+t++},t=>{Ol.test(t)&&j(e)<1e3&&K(e,t)}]},Pl=e=>[e,e],Ml=(e,t=Ut)=>t(e[0])+t(e[1]),Nl=()=>[ll(),ll()],Ll=e=>[...e],El=([e,t])=>e===t,jl=(e,t,l)=>al(e,t,sl(e,t)==-l?void 0:l),zl=()=>{let e,t,l=!1,n=!1,r=0,a=[];const i=ll(),h=ll(),T=ll(),S=ll(),V=ll(),R=ll(),M=ll(),L=ll(),z=ll(),$=ll(),A=ll(),D=ll(),F=ll(),J=ll(),H=Vl(),B=ll(),G=ll(),X=ll(),Y=ll(),Z=Nl(),_=Nl(),ee=Nl(),te=Nl(),le=Nl(),se=Nl(),he=Nl(),me=Nl(),be=Nl(),pe=Nl(),ge=Nl(),ve=Nl(),fe=Nl(),Ie=Nl(),ye=Nl(),we=Nl(),Ce=Nl(),ke=Nl(),Te=Nl(),Se=Nl(),xe=Nl(),Ve=Nl(),Re=ll(),Oe=Nl(),[qe,Pe,Me,Ne]=(e=>{let t;const[l,n]=ql(),r=ll();return[(e,n,a,o=[],i=(()=>[]))=>{null!=t||(t=Sl);const u=l(1);return al(r,u,[e,n,a,o,i]),Rl(pl(n,null!=a?a:[s],Vl),u),u},(e,l,...n)=>W(((e,t=[s])=>{const l=[],n=(e,s)=>s==j(t)?K(l,e):null===t[s]?el(e,(e=>n(e,s+1))):W([t[s],null],(t=>n(sl(e,t),s+1)));return n(e,0),l})(e,l),(e=>el(e,(e=>sl(r,e)[0](t,...null!=l?l:[],...n))))),e=>q(sl(r,e),(([,t,l])=>(pl(t,null!=l?l:[s],void 0,(t=>(tl(t,e),Yt(t)?1:0))),al(r,e),n(e),l))),e=>q(sl(r,e),(([e,,l=[],n,s])=>{const r=(...a)=>{var o,i;const u=j(a);u==j(l)?e(t,...a,...s(a)):O(l[u])?W(null!=(i=null==(o=n[u])?void 0:o.call(n,...a))?i:[],(e=>r(...a,e))):r(...a,l[u])};r()}))]})(),Le=e=>{if(!ue(e,((e,t)=>[u,d].includes(t))))return!1;const t=e[u];return!(!P(t)&&t!=o||(We(e[d])!=t&&ae(e,d),0))},Ee=(t,l)=>(!e||Xt(A,l)||bt(l))&&ue(t,((e,t)=>je(l,t,e)),(()=>bt(l))),je=(e,t,l,n)=>ue(n?l:De(l,e,t),((n,s)=>q(ze(e,t,s,n),(e=>(l[s]=e,!0)),(()=>!1))),(()=>bt(e,t))),ze=(t,l,n,s)=>e?q(sl(sl(A,t),n),(e=>We(s)!=e[u]?bt(t,l,n,s,e[d]):s),(()=>bt(t,l,n,s))):O(We(s))?bt(t,l,n,s):s,$e=(e,t)=>ue(t?e:Fe(e),((t,l)=>q(Ae(l,t),(t=>(e[l]=t,!0)),(()=>!1))),(()=>pt())),Ae=(e,l)=>t?q(sl(F,e),(t=>We(l)!=t[u]?pt(e,l,t[d]):l),(()=>pt(e,l))):O(We(l))?pt(e,l):l,De=(e,t,l)=>(q(sl(D,t),(([n,s])=>{el(n,((t,l)=>{re(e,l)||(e[l]=t)})),el(s,(n=>{re(e,n)||bt(t,l,n)}))})),e),Fe=e=>(t&&(el(J,((t,l)=>{re(e,l)||(e[l]=t)})),el(H,(t=>{re(e,t)||pt(t)}))),e),Je=e=>il(A,e,((e,t,l)=>{const n=ll(),s=Vl();il(ol(A,t,ll),l,((e,t,l)=>{al(e,t,l),q(l[d],(e=>al(n,t,e)),(()=>Rl(s,t)))})),al(D,t,[n,s])}),((e,t)=>{al(A,t),al(D,t)})),He=e=>il(F,e,((e,t,l)=>{al(F,t,l),q(l[d],(e=>al(J,t,e)),(()=>Rl(H,t)))}),((e,t)=>{al(F,t),al(J,t),tl(H,t)})),Be=e=>ie(e)?gl():Jt(e),Qe=e=>il(X,e,((e,t,l)=>Ke(t,l)),((e,t)=>st(t))),Ke=(e,t)=>il(ol(X,e,(()=>(it(e,1),al(B,e,ql()),al(G,e,ll()),ll()))),t,((t,l,n)=>Xe(e,t,l,n)),((t,l)=>rt(e,t,l))),Xe=(e,t,l,n,s)=>il(ol(t,l,(()=>(ut(e,l,1),ll()))),n,((t,n,s)=>Ye(e,l,t,n,s)),((n,r)=>at(e,t,l,n,r,s))),Ye=(e,t,l,n,s)=>{Xt(l,n)||dt(e,t,n,1);const r=sl(l,n);s!==r&&(ct(e,t,n,r,s),al(l,n,s))},Ze=(e,t,l,n,s)=>q(sl(t,l),(t=>Ye(e,l,t,n,s)),(()=>Xe(e,t,l,De({[n]:s},e,l)))),_e=e=>ie(e)?Il():Ht(e),et=e=>il(Y,e,((e,t,l)=>tt(t,l)),((e,t)=>ot(t))),tt=(e,t)=>{Xt(Y,e)||ht(e,1);const l=sl(Y,e);t!==l&&(mt(e,l,t),al(Y,e,t))},lt=(e,t)=>{const[l]=sl(B,e),n=l(t);return Xt(sl(X,e),n)?lt(e,t):n},nt=e=>{var t;return null!=(t=sl(X,e))?t:Ke(e,{})},st=e=>Ke(e,{}),rt=(e,t,l)=>{const[,n]=sl(B,e);n(l),Xe(e,t,l,{},!0)},at=(e,t,l,n,s,r)=>{var a;const o=sl(null==(a=sl(D,e))?void 0:a[0],s);if(!O(o)&&!r)return Ye(e,l,n,s,o);const i=t=>{ct(e,l,t,sl(n,t)),dt(e,l,t,-1),al(n,t)};O(o)?i(s):rl(n,i),Yt(n)&&(ut(e,l,-1),Yt(al(t,l))&&(it(e,-1),al(X,e),al(B,e),al(G,e)))},ot=e=>{const t=sl(J,e);if(!O(t))return tt(e,t);mt(e,sl(Y,e)),ht(e,-1),al(Y,e)},it=(e,t)=>jl(i,e,t),ut=(e,t,l)=>jl(ol(S,e,ll),t,l)&&al(T,e,ol(T,e,(()=>0))+l),dt=(e,t,l,n)=>{var s;const r=sl(G,e),a=null!=(s=sl(r,l))?s:0;(0==a&&1==n||1==a&&-1==n)&&jl(ol(h,e,ll),l,n),al(r,l,a!=-n?a+n:null),jl(ol(ol(V,e,ll),t,ll),l,n)},ct=(e,t,l,n,s)=>ol(ol(ol(R,e,ll),t,ll),l,(()=>[n,0]))[1]=s,ht=(e,t)=>jl(M,e,t),mt=(e,t,l)=>ol(L,e,(()=>[t,0]))[1]=l,bt=(e,t,l,n,s)=>(K(ol(ol(ol(z,e,ll),t,ll),l,(()=>[])),n),s),pt=(e,t,l)=>(K(ol($,e,(()=>[])),t),l),gt=(e,t,l)=>q(sl(sl(sl(R,e),t),l),(([e,t])=>[!0,e,t]),(()=>[!1,...Pl(Pt(e,t,l))])),vt=e=>q(sl(L,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Pl(Lt(e))])),ft=e=>Yt(z)||Yt(we[e])?0:el(e?bl(z):z,((t,l)=>el(t,((t,n)=>el(t,((t,s)=>Pe(we[e],[l,n,s],t))))))),It=e=>Yt($)||Yt(Ce[e])?0:el(e?hl($):$,((t,l)=>Pe(Ce[e],[l],t))),yt=(e,t,l,n)=>{if(!Yt(e))return Pe(t,n,(()=>ul(e))),rl(e,((e,t)=>Pe(l,[...null!=n?n:[],e],1==t))),1},wt=e=>{const t=Et();t!=l&&Pe(Z[e],void 0,t);const n=Yt(pe[e]),s=Yt(fe[e])&&Yt(Ie[e])&&Yt(be[e])&&Yt(ge[e])&&Yt(se[e])&&Yt(he[e])&&Yt(me[e])&&n&&Yt(ee[e])&&Yt(te[e]),r=Yt(ye[e])&&Yt(ve[e])&&Yt(le[e])&&Yt(_[e]);if(!s||!r){const t=e?[hl(i),ml(h),hl(T),ml(S),bl(V),bl(R)]:[i,h,T,S,V,R];if(!s){yt(t[0],ee[e],te[e]),el(t[1],((t,l)=>yt(t,se[e],he[e],[l]))),el(t[2],((t,l)=>{0!=t&&Pe(me[e],[l],Vt(l))}));const l=Vl();el(t[3],((t,s)=>{yt(t,be[e],ge[e],[s])&&!n&&(Pe(pe[e],[s,null]),Rl(l,s))})),n||el(t[5],((t,n)=>{if(!Xt(l,n)){const l=Vl();el(t,(e=>el(e,(([t,n],s)=>n!==t?Rl(l,s):tl(e,s))))),el(l,(t=>Pe(pe[e],[n,t])))}})),el(t[4],((t,l)=>el(t,((t,n)=>yt(t,fe[e],Ie[e],[l,n])))))}if(!r){let l;el(t[5],((t,n)=>{let s;el(t,((t,r)=>{let a;el(t,(([t,o],i)=>{o!==t&&(Pe(ye[e],[n,r,i],o,t,gt),l=s=a=1)})),a&&Pe(ve[e],[n,r],gt)})),s&&Pe(le[e],[n],gt)})),l&&Pe(_[e],void 0,gt)}}},Ct=e=>{const t=Dt();t!=n&&Pe(ke[e],void 0,t);const l=Yt(Se[e])&&Yt(xe[e]),s=Yt(Ve[e])&&Yt(Te[e]);if(!l||!s){const t=e?[hl(M),hl(L)]:[M,L];if(l||yt(t[0],Se[e],xe[e]),!s){let l;el(t[1],(([t,n],s)=>{n!==t&&(Pe(Ve[e],[s],n,t,vt),l=1)})),l&&Pe(Te[e],void 0,vt)}}},kt=(e,...t)=>(Cl((()=>e(...U(t,x)))),Sl),Tt=()=>cl(X),St=()=>nl(X),xt=e=>nl(sl(G,x(e))),Vt=e=>Wt(sl(X,x(e))),Rt=e=>nl(sl(X,x(e))),Ot=(e,t,l,n=0,s)=>{return U(E(Q((r=sl(X,x(e)),a=(e,l)=>[O(t)?l:sl(e,x(t)),l],U([...null!=(o=null==r?void 0:r.entries())?o:[]],(([e,t])=>a(t,e)))),(([e],[t])=>{return((null!=(n=e)?n:0)<(null!=(s=t)?s:0)?-1:1)*(l?-1:1);var n,s})),n,O(s)?s:n+s),(([,e])=>e));var r,a,o},qt=(e,t)=>nl(sl(sl(X,x(e)),x(t))),Pt=(e,t,l)=>sl(sl(sl(X,x(e)),x(t)),x(l)),Mt=()=>ul(Y),Nt=()=>nl(Y),Lt=e=>sl(Y,x(e)),Et=()=>!Yt(X),jt=e=>Xt(X,x(e)),zt=(e,t)=>Xt(sl(G,x(e)),x(t)),$t=(e,t)=>Xt(sl(X,x(e)),x(t)),At=(e,t,l)=>Xt(sl(sl(X,x(e)),x(t)),x(l)),Dt=()=>!Yt(Y),Ft=e=>Xt(Y,x(e)),Jt=e=>kt((()=>(e=>ue(e,Ee,bt))(e)?Qe(e):0)),Ht=e=>kt((()=>$e(e)?et(e):0)),Bt=e=>{try{Be(ce(e))}catch(e){}return Sl},Qt=t=>kt((()=>{if((e=ue(t,(e=>ue(e,Le))))&&(Je(t),!Yt(X))){const e=Tt();gl(),Jt(e)}})),Zt=e=>kt((()=>{if(t=(e=>ue(e,Le))(e)){const l=Mt();wl(),Il(),t=!0,He(e),Ht(l)}})),gl=()=>kt((()=>Qe({}))),vl=e=>kt((e=>Xt(X,e)?st(e):0),e),fl=(e,t)=>kt(((e,t)=>q(sl(X,e),(l=>Xt(l,t)?rt(e,l,t):0))),e,t),Il=()=>kt((()=>et({}))),yl=()=>kt((()=>{Je({}),e=!1})),wl=()=>kt((()=>{He({}),t=!1})),Cl=(e,t)=>{if(-1!=r){kl();const l=e();return Tl(t),l}},kl=()=>(-1!=r&&r++,1==r&&Pe(Re,void 0),Sl),Tl=e=>{var t,s;return r>0&&(r--,0==r&&(r=1,ft(1),Yt(R)||wt(1),It(1),Yt(L)||Ct(1),(null==e?void 0:e(Sl))&&(el(R,((e,t)=>el(e,((e,l)=>el(e,(([e],n)=>Ue(Sl,t,l,n,e))))))),_t(R),el(L,(([e],t)=>Ge(Sl,t,e))),_t(L)),Pe(Oe[0],void 0),r=-1,ft(0),Yt(R)||wt(0),It(0),Yt(L)||Ct(0),null==(t=a[0])||t.call(a,Sl),Pe(Oe[1],void 0),null==(s=a[1])||s.call(a,Sl),r=0,l=Et(),n=Dt(),W([i,h,T,S,V,R,z,M,L,$],_t))),Sl},Sl={getContent:()=>[Tt(),Mt()],getTables:Tt,getTableIds:St,getTable:e=>dl(sl(X,x(e))),getTableCellIds:xt,getRowCount:Vt,getRowIds:Rt,getSortedRowIds:Ot,getRow:(e,t)=>ul(sl(sl(X,x(e)),x(t))),getCellIds:qt,getCell:Pt,getValues:Mt,getValueIds:Nt,getValue:Lt,hasTables:Et,hasTable:jt,hasTableCell:zt,hasRow:$t,hasCell:At,hasValues:Dt,hasValue:Ft,getTablesJson:()=>de(X),getValuesJson:()=>de(Y),getJson:()=>de([X,Y]),getTablesSchemaJson:()=>de(A),getValuesSchemaJson:()=>de(F),getSchemaJson:()=>de([A,F]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>kt((()=>{(ie(e)?gl:Jt)(e),(ie(t)?Il:Ht)(t)})),setTables:Jt,setTable:(e,t)=>kt((e=>Ee(t,e)?Ke(e,t):0),e),setRow:(e,t,l)=>kt(((e,t)=>je(e,t,l)?Xe(e,nt(e),t,l):0),e,t),addRow:(e,t,l=!0)=>Cl((()=>{let n;return je(e,n,t)&&(e=x(e),Xe(e,nt(e),n=lt(e,l?1:0),t)),n})),setPartialRow:(e,t,l)=>kt(((e,t)=>{if(je(e,t,l,1)){const n=nt(e);oe(l,((l,s)=>Ze(e,n,t,s,l)))}}),e,t),setCell:(e,t,l,n)=>kt(((e,t,l)=>q(ze(e,t,l,N(n)?n(Pt(e,t,l)):n),(n=>Ze(e,nt(e),t,l,n)))),e,t,l),setValues:Ht,setPartialValues:e=>kt((()=>$e(e,1)?oe(e,((e,t)=>tt(t,e))):0)),setValue:(e,t)=>kt((e=>q(Ae(e,N(t)?t(Lt(e)):t),(t=>tt(e,t)))),e),applyChanges:e=>kt((()=>{oe(e[0],((e,t)=>O(e)?vl(t):oe(e,((e,l)=>O(e)?fl(t,l):oe(e,((e,n)=>Ue(Sl,t,l,n,e))))))),oe(e[1],((e,t)=>Ge(Sl,t,e)))})),setTablesJson:Bt,setValuesJson:e=>{try{_e(ce(e))}catch(e){}return Sl},setJson:e=>kt((()=>{try{const[t,l]=ce(e);Be(t),_e(l)}catch(t){Bt(e)}})),setTablesSchema:Qt,setValuesSchema:Zt,setSchema:(e,t)=>kt((()=>{Qt(e),Zt(t)})),delTables:gl,delTable:vl,delRow:fl,delCell:(e,t,l,n)=>kt(((e,t,l)=>q(sl(X,e),(s=>q(sl(s,t),(r=>Xt(r,l)?at(e,s,t,r,l,n):0))))),e,t,l),delValues:Il,delValue:e=>kt((e=>Xt(Y,e)?ot(e):0),e),delTablesSchema:yl,delValuesSchema:wl,delSchema:()=>kt((()=>{yl(),wl()})),transaction:Cl,startTransaction:kl,getTransactionChanges:()=>[ul(R,((e,t)=>-1===sl(i,t)?void 0:ul(e,((e,l)=>-1===sl(sl(S,t),l)?void 0:ul(e,(([,e])=>e),(e=>El(e)))),Yt,ie)),Yt,ie),ul(L,(([,e])=>e),(e=>El(e))),1],getTransactionLog:()=>[!Yt(R),!Yt(L),cl(R,Ll,El),cl(z),ul(L,Ll,El),ul($),ul(i),dl(S),cl(V),ul(M)],finishTransaction:Tl,forEachTable:e=>el(X,((t,l)=>e(l,(e=>el(t,((t,l)=>e(l,(e=>rl(t,e))))))))),forEachTableCell:(e,t)=>rl(sl(G,x(e)),t),forEachRow:(e,t)=>el(sl(X,x(e)),((e,l)=>t(l,(t=>rl(e,t))))),forEachCell:(e,t,l)=>rl(sl(sl(X,x(e)),x(t)),l),forEachValue:e=>rl(Y,e),addSortedRowIdsListener:(e,t,l,n,s,r,a)=>{let o=Ot(e,t,l,n,s);return qe((()=>{const a=Ot(e,t,l,n,s);var i,u,d;u=o,j(i=a)===j(u)&&(d=(e,t)=>u[t]===e,i.every(d))||(o=a,r(Sl,e,t,l,n,s,o))}),pe[a?1:0],[e,t],[St])},addStartTransactionListener:e=>qe(e,Re),addWillFinishTransactionListener:e=>qe(e,Oe[0]),addDidFinishTransactionListener:e=>qe(e,Oe[1]),callListener:e=>(Ne(e),Sl),delListener:e=>(Me(e),Sl),getListenerStats:()=>({hasTables:Ml(Z),tables:Ml(_),tableIds:Ml(ee),hasTable:Ml(te),table:Ml(le),tableCellIds:Ml(se),hasTableCell:Ml(he,Gt),rowCount:Ml(me),rowIds:Ml(be),sortedRowIds:Ml(pe),hasRow:Ml(ge,Gt),row:Ml(ve,Gt),cellIds:Ml(fe,Gt),hasCell:Ml(Ie,Kt),cell:Ml(ye,Kt),invalidCell:Ml(we,Kt),hasValues:Ml(ke),values:Ml(Te),valueIds:Ml(Se),hasValue:Ml(xe),value:Ml(Ve),invalidValue:Ml(Ce),transaction:Ut(Re)+Ml(Oe)}),createStore:zl,addListener:qe,callListeners:Pe,setInternalListeners:(e,t)=>a=[e,t]};return oe({[c+b]:[0,Z,[],()=>[Et()]],[b]:[0,_],[p]:[0,ee],[c+m]:[1,te,[St],e=>[jt(...e)]],[m]:[1,le,[St]],[m+y]:[1,se,[St]],[c+m+I]:[2,he,[St,xt],e=>[zt(...e)]],[v]:[1,me,[St]],[f]:[1,be,[St]],[c+g]:[2,ge,[St,Rt],e=>[$t(...e)]],[g]:[2,ve,[St,Rt]],[y]:[2,fe,[St,Rt]],[c+I]:[3,Ie,[St,Rt,qt],e=>[At(...e)]],[I]:[3,ye,[St,Rt,qt],e=>Pl(Pt(...e))],InvalidCell:[3,we],[c+C]:[0,ke,[],()=>[Dt()]],[C]:[0,Te],[k]:[0,Se],[c+w]:[1,xe,[Nt],e=>[Ft(...e)]],[w]:[1,Ve,[Nt],e=>Pl(Lt(e[0]))],InvalidValue:[1,Ce]},(([e,t,l,n],s)=>{Sl["add"+s+"Listener"]=(...s)=>qe(s[e],t[s[e+1]?1:0],e>0?E(s,0,e):void 0,l,n)})),ne(Sl)},$l=({position:e="right",open:t=!1})=>{const n=l.useCreateStore(zl),s=be.indexOf(e);return l.useCreatePersister(n,(e=>{return((e,t,l,n)=>((e,t,l,n,s,r,a,o={},i=[])=>{let u,d,c,h=0,m=0,b=0;ol(Cl,i,(()=>0)),ol(kl,i,(()=>[]));const[p,g,v,f,I]=((e,t)=>!e||O(t.getMergeableContent)?[0,t.getContent,t.getTransactionChanges,([e,t])=>!ie(e)||!ie(t),t.setContent]:[1,t.getMergeableContent,t.getTransactionMergeableChanges,([,[[,e],[,t]]])=>!ie(e)||!ie(t),t.setDefaultContent])(a,e),y=e=>wl(void 0,null,(function*(){return 2!=h&&(h=1,m++,yield C.schedule((()=>wl(void 0,null,(function*(){yield e(),h=0}))))),C})),w=t=>{(p&&M(null==t?void 0:t[0])?1===(null==t?void 0:t[1][2])?e.applyMergeableChanges:e.setMergeableContent:1===(null==t?void 0:t[2])?e.applyChanges:e.setContent)(t)},C=((e,t)=>{for(var l in t||(t={}))fl.call(t,l)&&yl(e,l,t[l]);if(vl)for(var l of vl(t))Il.call(t,l)&&yl(e,l,t[l]);return e})({load:e=>wl(void 0,null,(function*(){return yield y((()=>wl(void 0,null,(function*(){try{w(yield t())}catch(t){null==r||r(t),e&&I(e)}}))))})),startAutoLoad:e=>wl(void 0,null,(function*(){return yield C.stopAutoLoad().load(e),d=n(((e,l)=>wl(void 0,null,(function*(){const n=null==l?void 0:l();yield y((()=>wl(void 0,null,(function*(){var l;try{w(null!=(l=null!=n?n:null==e?void 0:e())?l:yield t())}catch(e){null==r||r(e)}}))))})))),C})),stopAutoLoad:()=>(d&&(s(d),d=void 0),C),isAutoLoading:()=>!O(d),save:e=>wl(void 0,null,(function*(){return 1!=h&&(h=2,b++,yield C.schedule((()=>wl(void 0,null,(function*(){try{yield l(g,e)}catch(e){null==r||r(e)}h=0}))))),C})),startAutoSave:()=>wl(void 0,null,(function*(){return yield C.stopAutoSave().save(),c=e.addDidFinishTransactionListener((()=>{const e=v();f(e)&&C.save((()=>e))})),C})),stopAutoSave:()=>(q(c,e.delListener),c=void 0,C),isAutoSaving:()=>!O(c),schedule:(...e)=>wl(void 0,null,(function*(){return K(sl(kl,i),...e),yield wl(void 0,null,(function*(){if(!sl(Cl,i)){for(al(Cl,i,1);!O(u=X(sl(kl,i)));)try{yield u()}catch(e){null==r||r(e)}al(Cl,i,0)}})),C})),getStore:()=>e,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({loads:m,saves:b})},o);return ne(C)})(e,(()=>Tl(void 0,null,(function*(){return ce(l.getItem(t))}))),(e=>Tl(void 0,null,(function*(){return l.setItem(t,de(e()))}))),(e=>{const n=n=>{n.storageArea===l&&n.key===t&&e((()=>ce(n.newValue)))};return xl.addEventListener(Sl,n),n}),(e=>xl.removeEventListener(Sl,e)),n,!0,{getStorageName:()=>t}))(e,he,sessionStorage,t);var t}),void 0,(e=>{return l=function*(){yield e.load([{},{position:-1==s?1:s,open:!!t}]),yield e.startAutoSave()},new Promise(((e,t)=>{var n=e=>{try{r(l.next(e))}catch(e){t(e)}},s=e=>{try{r(l.throw(e))}catch(e){t(e)}},r=t=>t.done?e(t.value):Promise.resolve(t.value).then(n,s);r((l=l.apply(void 0,null)).next())}));var l})),A($,null,A("aside",{id:he},A(Be,{s:n}),A(Bt,{s:n})),A("style",null,He))};var Al=Object.defineProperty,Dl=Object.getOwnPropertySymbols,Fl=Object.prototype.hasOwnProperty,Jl=Object.prototype.propertyIsEnumerable,Hl=(e,t,l)=>t in e?Al(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l;e.EditableCellView=xt,e.EditableValueView=Vt,e.RelationshipInHtmlTable=Tt,e.ResultSortedTableInHtmlTable=St,e.ResultTableInHtmlTable=e=>{var t=e,{queryId:n,queries:s,customCells:r}=t,a=rt(t,["queryId","queries","customCells"]);return A(vt,st(nt({},a),{params:ht(gt(l.useResultTableCellIds(n,s),r,l.ResultCellView),bt(s,n),l.useResultRowIds(n,s))}))},e.SliceInHtmlTable=kt,e.SortedTableInHtmlTable=wt,e.SortedTablePaginator=Rt,e.StoreInspector=e=>A($l,((e,t)=>{for(var l in t||(t={}))Fl.call(t,l)&&Hl(e,l,t[l]);if(Dl)for(var l of Dl(t))Jl.call(t,l)&&Hl(e,l,t[l]);return e})({},e)),e.TableInHtmlTable=e=>{var t=e,{tableId:n,store:s,editable:r,customCells:a}=t,o=rt(t,["tableId","store","editable","customCells"]);return A(vt,st(nt({},o),{params:ht(gt(l.useTableCellIds(n,s),a,r?xt:l.CellView),mt(s,n),l.useRowIds(n,s))}))},e.ValuesInHtmlTable=Ct},"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).TinyBaseUiReactDomDebug={},e.React,e.TinyBaseUiReact);
@@ -1 +1 @@
1
- var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,l="",o=t(l),r=t(t),u="Listener",n="Result",d="Has",i="Ids",a="Table",c=a+"s",I=a+i,p="Row",C=p+"Count",b=p+i,w="Sorted"+p+i,R="Cell",k=R+i,g="Value",y=g+"s",v=g+i,h=e=>null==e,m=(e,s,t)=>h(e)?null==t?void 0:t():s(e),L=e=>t(e)==o,f=e=>t(e)==r,S=e=>e.length,T=()=>{},V=(e,s)=>e.every(s),P=(e,s)=>S(e)===S(s)&&V(e,((e,t)=>s[t]===e)),x=(e,s)=>e.map(s),O=Object,q=e=>O.getPrototypeOf(e),B=O.entries,H=e=>!h(e)&&m(q(e),(e=>e==O.prototype||h(q(e))),(()=>!0)),M=O.keys,D=(e,s)=>m(e,(e=>e[s])),j=(e,s)=>{const t=B(e);return S(t)===S(M(s))&&V(t,(([e,t])=>H(t)?!!H(s[e])&&j(s[e],t):s[e]===t))},{createContext:F,useContext:E,useEffect:Q}=s,A=F([]),G=(e,s)=>{var t;const l=E(A);return h(e)?l[s]:L(e)?D(null!=(t=l[s+1])?t:{},e):e},U=(e,s)=>{const t=G(e,s);return h(e)||L(e)?t:e},W=e=>{var s;return M(null!=(s=E(A)[e])?s:{})},z=e=>U(e,0),J=e=>U(e,2),K=e=>U(e,4),N=e=>U(e,6),X=e=>U(e,8),Y=e=>U(e,10),Z=e=>e.toLowerCase();Z(u);const $="Transaction";Z($);const{useCallback:_,useEffect:ee,useMemo:se,useLayoutEffect:te,useRef:le,useState:oe,useSyncExternalStore:re}=s,ue=[],ne=[{},[],[ue,void 0,ue],void 0,!1,0],de=(e,s)=>e===s,ie=[j,P,([e,s,t],[l,o,r])=>s===o&&P(e,l)&&P(t,r)],ae=(e,s,t=ue)=>{const[,l]=oe(),[o,r]=oe();return ee((()=>{const t=s(e);return r(t),l([]),t.destroy}),[e,...t]),o},ce=(e,s,...t)=>{var l;const o=null==(l=null==e?void 0:e["add"+s+u])?void 0:l.call(e,...t);return()=>null==e?void 0:e.delListener(o)},Ie=(e,s,t,o=ue)=>{const r=le(ne[t]),u=_((()=>{var l,u,n;const d=null!=(u=null==(l=null==s?void 0:s[(4==t?"has":"get")+e])?void 0:l.call(s,...o))?u:ne[t];return(null!=(n=ie[t])?n:de)(d,r.current)?r.current:r.current=d}),[s,t,e,...o]),n=_((r=>ce(s,(4==t?d:l)+e,...o,r)),[s,t,e,...o]);return re(n,u)},pe=(e,s,t,l=ue,o=ue,...r)=>te((()=>ce(s,e,...o,t,...r)),[s,e,...o,...l,...r]),Ce=(e,s,t,l=ue,o=T,r=ue,...u)=>{const n=z(e);return _((e=>m(n,(l=>m(t(e,l),(t=>o(l["set"+s](...x(u,(s=>f(s)?s(e,l):s)),t),t)))))),[n,s,...l,...r,...u])},be=(e,s,t=T,l=ue,...o)=>{const r=z(e);return _((()=>t(null==r?void 0:r["del"+s](...o))),[r,s,...l,...o])},we=(e,s,t)=>{const l=Y(e);return _((()=>null==l?void 0:l[s](t)),[l,s,t])},Re=e=>Ie(I,z(e),1),ke=(e,s)=>Ie(b,z(s),1,[e]),ge=(e,s,t,l=0,o,r)=>Ie(w,z(r),1,[e,s,t,l,o]),ye=(e,s,t)=>Ie(k,z(t),1,[e,s]),ve=(e,s,t,l)=>Ie(R,z(l),3,[e,s,t]),he=e=>Ie(v,z(e),1),me=(e,s)=>Ie(g,z(s),3,[e]),Le=(e,s)=>Ie("Metric",J(s),3,[e]),fe=(e,s)=>Ie("SliceIds",K(s),1,[e]),Se=(e,s,t)=>Ie("Slice"+b,K(t),1,[e,s]),Te=(e,s,t)=>Ie("RemoteRowId",N(t),3,[e,s]),Ve=(e,s,t)=>Ie("Local"+b,N(t),1,[e,s]),Pe=(e,s,t)=>Ie("Linked"+b,N(t),1,[e,s]),xe=(e,s)=>Ie(n+b,X(s),1,[e]),Oe=(e,s,t,l=0,o,r)=>Ie(n+w,X(r),1,[e,s,t,l,o]),qe=(e,s,t)=>Ie(n+k,X(t),1,[e,s]),Be=(e,s,t,l)=>Ie(n+R,X(l),3,[e,s,t]),He=e=>Ie("CheckpointIds",Y(e),2),Me=(e,s)=>Ie("Checkpoint",Y(s),3,[e]),De=e=>we(e,"goBackward"),je=e=>we(e,"goForward"),{PureComponent:Fe,Fragment:Ee,createElement:Qe,useCallback:Ae,useLayoutEffect:Ge,useRef:Ue,useState:We}=s,ze=(e,...s)=>h(e)?{}:e(...s),Je=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Ke=Object.defineProperty,Ne=Object.defineProperties,Xe=Object.getOwnPropertyDescriptors,Ye=Object.getOwnPropertySymbols,Ze=Object.prototype.hasOwnProperty,$e=Object.prototype.propertyIsEnumerable,_e=(e,s,t)=>s in e?Ke(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,es=(e,s)=>{for(var t in s||(s={}))Ze.call(s,t)&&_e(e,t,s[t]);if(Ye)for(var t of Ye(s))$e.call(s,t)&&_e(e,t,s[t]);return e},ss=(e,s)=>Ne(e,Xe(s)),ts=(e,s)=>{var t={};for(var l in e)Ze.call(e,l)&&s.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&Ye)for(var l of Ye(e))s.indexOf(l)<0&&$e.call(e,l)&&(t[l]=e[l]);return t};const{useCallback:ls,useContext:os,useMemo:rs,useState:us}=s,ns=({tableId:e,store:s,rowComponent:t=ps,getRowComponentProps:l,customCellIds:o,separator:r,debugIds:u},n)=>cs(x(n,(r=>Qe(t,ss(es({},ze(l,r)),{key:r,tableId:e,rowId:r,customCellIds:o,store:s,debugIds:u})))),r,u,e),ds=({queryId:e,queries:s,resultRowComponent:t=ks,getResultRowComponentProps:l,separator:o,debugIds:r},u)=>cs(x(u,(o=>Qe(t,ss(es({},ze(l,o)),{key:o,queryId:e,rowId:o,queries:s,debugIds:r})))),o,r,e),is=({relationshipId:e,relationships:s,rowComponent:t=ps,getRowComponentProps:l,separator:o,debugIds:r},u,n)=>{const[d,i,a]=Je(N(s),e),c=u(e,n,d);return cs(x(c,(e=>Qe(t,ss(es({},ze(l,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),o,r,n)},as=e=>({checkpoints:s,checkpointComponent:t=gs,getCheckpointComponentProps:l,separator:o,debugIds:r})=>{const u=Y(s);return cs(x(e(He(u)),(e=>Qe(t,ss(es({},ze(l,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:r})))),o)},cs=(e,s,t,l)=>{const o=h(s)||!Array.isArray(e)?e:x(e,((e,t)=>t>0?[s,e]:e));return t?[l,":{",o,"}"]:o},Is=({tableId:e,rowId:s,cellId:t,store:o,debugIds:r})=>{var u;return cs(l+(null!=(u=ve(e,s,t,o))?u:l),void 0,r,t)},ps=({tableId:e,rowId:s,store:t,cellComponent:l=Is,getCellComponentProps:o,customCellIds:r,separator:u,debugIds:n})=>cs(x(((e,s,t,l)=>{const o=ye(s,t,l);return null!=e?e:o})(r,e,s,t),(r=>Qe(l,ss(es({},ze(o,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),u,n,s),Cs=e=>ns(e,ke(e.tableId,e.store)),bs=({valueId:e,store:s,debugIds:t})=>{var o;return cs(l+(null!=(o=me(e,s))?o:l),void 0,t,e)},ws=({indexId:e,sliceId:s,indexes:t,rowComponent:l=ps,getRowComponentProps:o,separator:r,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(K(t),e),a=Se(e,s,n);return cs(x(a,(e=>Qe(l,ss(es({},ze(o,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),r,u,s)},Rs=({queryId:e,rowId:s,cellId:t,queries:o,debugIds:r})=>{var u;return cs(l+(null!=(u=Be(e,s,t,o))?u:l),void 0,r,t)},ks=({queryId:e,rowId:s,queries:t,resultCellComponent:l=Rs,getResultCellComponentProps:o,separator:r,debugIds:u})=>cs(x(qe(e,s,t),(r=>Qe(l,ss(es({},ze(o,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:u})))),r,u,s),gs=({checkpoints:e,checkpointId:s,debugIds:t})=>{var o;return cs(null!=(o=Me(s,e))?o:l,void 0,t,s)},ys=as((e=>e[0])),vs=as((e=>h(e[1])?[]:[e[1]])),hs=as((e=>e[2]));e.BackwardCheckpointsView=ys,e.CellView=Is,e.CheckpointView=gs,e.CurrentCheckpointView=vs,e.ForwardCheckpointsView=hs,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=ws,getSliceComponentProps:l,separator:o,debugIds:r})=>cs(x(fe(e,s),(o=>Qe(t,ss(es({},ze(l,o)),{key:o,indexId:e,sliceId:o,indexes:s,debugIds:r})))),o,r,e),e.LinkedRowsView=e=>is(e,Pe,e.firstRowId),e.LocalRowsView=e=>is(e,Ve,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var o;return cs(null!=(o=Le(e,s))?o:l,void 0,t,e)},e.Provider=({store:e,storesById:s,metrics:t,metricsById:l,indexes:o,indexesById:r,relationships:u,relationshipsById:n,queries:d,queriesById:i,checkpoints:a,checkpointsById:c,children:I})=>{const p=os(A),[C,b]=us({}),w=ls(((e,s)=>b((t=>D(t,e)==s?t:ss(es({},t),{[e]:s})))),[]),R=ls((e=>b((s=>es({},((e,s)=>(delete e[s],e))(s,e))))),[]);return Qe(A.Provider,{value:rs((()=>[null!=e?e:p[0],es(es(es({},p[1]),s),C),null!=t?t:p[2],es(es({},p[3]),l),null!=o?o:p[4],es(es({},p[5]),r),null!=u?u:p[6],es(es({},p[7]),n),null!=d?d:p[8],es(es({},p[9]),i),null!=a?a:p[10],es(es({},p[11]),c),w,R]),[e,s,C,t,l,o,r,u,n,d,i,a,c,p,w,R])},I)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:l=ps,getRowComponentProps:o,debugIds:r})=>{const[u,n,,d]=Je(N(t),e),i=Te(e,s,u);return cs(h(d)||h(i)?null:Qe(l,ss(es({},ze(o,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:r})),void 0,r,s)},e.ResultCellView=Rs,e.ResultRowView=ks,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ts(s,["cellId","descending","offset","limit"]);return ds(u,Oe(u.queryId,t,l,o,r,u.queries))},e.ResultTableView=e=>ds(e,xe(e.queryId,e.queries)),e.RowView=ps,e.SliceView=ws,e.SortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ts(s,["cellId","descending","offset","limit"]);return ns(u,ge(u.tableId,t,l,o,r,u.store))},e.TableView=Cs,e.TablesView=({store:e,tableComponent:s=Cs,getTableComponentProps:t,separator:l,debugIds:o})=>cs(x(Re(e),(l=>Qe(s,ss(es({},ze(t,l)),{key:l,tableId:l,store:e,debugIds:o})))),l),e.ValueView=bs,e.ValuesView=({store:e,valueComponent:s=bs,getValueComponentProps:t,separator:l,debugIds:o})=>cs(x(he(e),(l=>Qe(s,ss(es({},ze(t,l)),{key:l,valueId:l,store:e,debugIds:o})))),l),e.useAddRowCallback=(e,s,t=ue,l,o=T,r=ue,u=!0)=>{const n=z(l);return _((t=>m(n,(l=>m(s(t,l),(s=>o(l.addRow(f(e)?e(t,l):e,s,u),l,s)))))),[n,e,...t,...r,u])},e.useCell=ve,e.useCellIds=ye,e.useCellIdsListener=(e,s,t,l,o,r)=>pe(k,z(r),t,l,[e,s],o),e.useCellListener=(e,s,t,l,o,r,u)=>pe(R,z(u),l,o,[e,s,t],r),e.useCheckpoint=Me,e.useCheckpointIds=He,e.useCheckpointIdsListener=(e,s,t)=>pe("CheckpointIds",Y(t),e,s),e.useCheckpointListener=(e,s,t,l)=>pe("Checkpoint",Y(l),s,t,[e]),e.useCheckpoints=e=>G(e,10),e.useCheckpointsIds=()=>W(11),e.useCheckpointsOrCheckpointsById=Y,e.useCreateCheckpoints=(e,s,t)=>ae(e,s,t),e.useCreateIndexes=(e,s,t)=>ae(e,s,t),e.useCreateMetrics=(e,s,t)=>ae(e,s,t),e.useCreatePersister=(e,s,t=ue,l,o=ue,r,u=ue)=>{const[,n]=oe(),[d,i]=oe();return ee((()=>{const t=s(e);if(i(t),t)return l&&(o=function*(){yield l(t),n([])},new Promise(((e,s)=>{var t=e=>{try{r(o.next(e))}catch(e){s(e)}},l=e=>{try{r(o.throw(e))}catch(e){s(e)}},r=s=>s.done?e(s.value):Promise.resolve(s.value).then(t,l);r((o=o.apply(void 0,null)).next())}))),()=>{t.destroy(),null==r||r(t)};var o}),[e,...t,...o,...u]),d},e.useCreateQueries=(e,s,t)=>ae(e,s,t),e.useCreateRelationships=(e,s,t)=>ae(e,s,t),e.useCreateStore=(e,s=ue)=>se(e,s),e.useDelCellCallback=(e,s,t,l,o,r,u)=>be(o,R,r,u,e,s,t,l),e.useDelRowCallback=(e,s,t,l,o)=>be(t,p,l,o,e,s),e.useDelTableCallback=(e,s,t,l)=>be(s,a,t,l,e),e.useDelTablesCallback=(e,s,t)=>be(e,c,s,t),e.useDelValueCallback=(e,s,t,l)=>be(s,g,t,l,e),e.useDelValuesCallback=(e,s,t)=>be(e,y,s,t),e.useDidFinishTransactionListener=(e,s,t)=>pe("DidFinish"+$,z(t),e,s),e.useGoBackwardCallback=De,e.useGoForwardCallback=je,e.useGoToCallback=(e,s=ue,t,l=T,o=ue)=>{const r=Y(t);return _((s=>m(r,(t=>m(e(s),(e=>l(t.goTo(e),e)))))),[r,...s,...o])},e.useHasCell=(e,s,t,l)=>Ie(R,z(l),4,[e,s,t]),e.useHasCellListener=(e,s,t,l,o,r,u)=>pe(d+R,z(u),l,o,[e,s,t],r),e.useHasRow=(e,s,t)=>Ie(p,z(t),4,[e,s]),e.useHasRowListener=(e,s,t,l,o,r)=>pe(d+p,z(r),t,l,[e,s],o),e.useHasTable=(e,s)=>Ie(a,z(s),4,[e]),e.useHasTableCell=(e,s,t)=>Ie(a+R,z(t),4,[e,s]),e.useHasTableCellListener=(e,s,t,l,o,r)=>pe(d+a+R,z(r),t,l,[e,s],o),e.useHasTableListener=(e,s,t,l,o)=>pe(d+a,z(o),s,t,[e],l),e.useHasTables=e=>Ie(c,z(e),4,[]),e.useHasTablesListener=(e,s,t,l)=>pe(d+c,z(l),e,s,[],t),e.useHasValue=(e,s)=>Ie(g,z(s),4,[e]),e.useHasValueListener=(e,s,t,l,o)=>pe(d+g,z(o),s,t,[e],l),e.useHasValues=e=>Ie(y,z(e),4,[]),e.useHasValuesListener=(e,s,t,l)=>pe(d+y,z(l),e,s,[],t),e.useIndexIds=e=>Ie("IndexIds",K(e),1),e.useIndexes=e=>G(e,4),e.useIndexesIds=()=>W(5),e.useIndexesOrIndexesById=K,e.useLinkedRowIds=Pe,e.useLinkedRowIdsListener=(e,s,t,l,o)=>pe("Linked"+b,N(o),t,l,[e,s]),e.useLocalRowIds=Ve,e.useLocalRowIdsListener=(e,s,t,l,o)=>pe("Local"+b,N(o),t,l,[e,s]),e.useMetric=Le,e.useMetricIds=e=>Ie("MetricIds",J(e),1),e.useMetricListener=(e,s,t,l)=>pe("Metric",J(l),s,t,[e]),e.useMetrics=e=>G(e,2),e.useMetricsIds=()=>W(3),e.useMetricsOrMetricsById=J,e.useProvideStore=(e,s)=>{const{12:t,13:l}=E(A);Q((()=>(null==t||t(e,s),()=>null==l?void 0:l(e))),[t,e,s,l])},e.useQueries=e=>G(e,8),e.useQueriesIds=()=>W(9),e.useQueriesOrQueriesById=X,e.useQueryIds=e=>Ie("QueryIds",X(e),1),e.useRedoInformation=e=>{var s;const t=Y(e),[,,[o]]=He(t);return[!h(o),je(t),o,null!=(s=m(o,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l]},e.useRelationshipIds=e=>Ie("RelationshipIds",N(e),1),e.useRelationships=e=>G(e,6),e.useRelationshipsIds=()=>W(7),e.useRelationshipsOrRelationshipsById=N,e.useRemoteRowId=Te,e.useRemoteRowIdListener=(e,s,t,l,o)=>pe("RemoteRowId",N(o),t,l,[e,s]),e.useResultCell=Be,e.useResultCellIds=qe,e.useResultCellIdsListener=(e,s,t,l,o)=>pe(n+k,X(o),t,l,[e,s]),e.useResultCellListener=(e,s,t,l,o,r)=>pe(n+R,X(r),l,o,[e,s,t]),e.useResultRow=(e,s,t)=>Ie(n+p,X(t),0,[e,s]),e.useResultRowCount=(e,s)=>Ie(n+C,X(s),5,[e]),e.useResultRowCountListener=(e,s,t,l)=>pe(n+C,X(l),s,t,[e]),e.useResultRowIds=xe,e.useResultRowIdsListener=(e,s,t,l)=>pe(n+b,X(l),s,t,[e]),e.useResultRowListener=(e,s,t,l,o)=>pe(n+p,X(o),t,l,[e,s]),e.useResultSortedRowIds=Oe,e.useResultSortedRowIdsListener=(e,s,t,l,o,r,u,d)=>pe(n+w,X(d),r,u,[e,s,t,l,o]),e.useResultTable=(e,s)=>Ie(n+a,X(s),0,[e]),e.useResultTableCellIds=(e,s)=>Ie(n+a+k,X(s),1,[e]),e.useResultTableCellIdsListener=(e,s,t,l)=>pe(n+a+k,X(l),s,t,[e]),e.useResultTableListener=(e,s,t,l)=>pe(n+a,X(l),s,t,[e]),e.useRow=(e,s,t)=>Ie(p,z(t),0,[e,s]),e.useRowCount=(e,s)=>Ie(C,z(s),5,[e]),e.useRowCountListener=(e,s,t,l,o)=>pe(C,z(o),s,t,[e],l),e.useRowIds=ke,e.useRowIdsListener=(e,s,t,l,o)=>pe(b,z(o),s,t,[e],l),e.useRowListener=(e,s,t,l,o,r)=>pe(p,z(r),t,l,[e,s],o),e.useSetCellCallback=(e,s,t,l,o,r,u,n)=>Ce(r,R,l,o,u,n,e,s,t),e.useSetCheckpointCallback=(e=T,s=ue,t,l=T,o=ue)=>{const r=Y(t);return _((s=>m(r,(t=>{const o=e(s);l(t.addCheckpoint(o),t,o)}))),[r,...s,...o])},e.useSetPartialRowCallback=(e,s,t,l,o,r,u)=>Ce(o,"PartialRow",t,l,r,u,e,s),e.useSetPartialValuesCallback=(e,s,t,l,o)=>Ce(t,"PartialValues",e,s,l,o),e.useSetRowCallback=(e,s,t,l,o,r,u)=>Ce(o,p,t,l,r,u,e,s),e.useSetTableCallback=(e,s,t,l,o,r)=>Ce(l,a,s,t,o,r,e),e.useSetTablesCallback=(e,s,t,l,o)=>Ce(t,c,e,s,l,o),e.useSetValueCallback=(e,s,t,l,o,r)=>Ce(l,g,s,t,o,r,e),e.useSetValuesCallback=(e,s,t,l,o)=>Ce(t,y,e,s,l,o),e.useSliceIds=fe,e.useSliceIdsListener=(e,s,t,l)=>pe("SliceIds",K(l),s,t,[e]),e.useSliceRowIds=Se,e.useSliceRowIdsListener=(e,s,t,l,o)=>pe("Slice"+b,K(o),t,l,[e,s]),e.useSortedRowIds=ge,e.useSortedRowIdsListener=(e,s,t,l,o,r,u,n,d)=>pe(w,z(d),r,u,[e,s,t,l,o],n),e.useStartTransactionListener=(e,s,t)=>pe("Start"+$,z(t),e,s),e.useStore=e=>G(e,0),e.useStoreIds=()=>W(1),e.useStoreOrStoreById=z,e.useTable=(e,s)=>Ie(a,z(s),0,[e]),e.useTableCellIds=(e,s)=>Ie(a+k,z(s),1,[e]),e.useTableCellIdsListener=(e,s,t,l,o)=>pe(a+k,z(o),s,t,[e],l),e.useTableIds=Re,e.useTableIdsListener=(e,s,t,l)=>pe(I,z(l),e,s,ue,t),e.useTableListener=(e,s,t,l,o)=>pe(a,z(o),s,t,[e],l),e.useTables=e=>Ie(c,z(e),0),e.useTablesListener=(e,s,t,l)=>pe(c,z(l),e,s,ue,t),e.useUndoInformation=e=>{var s;const t=Y(e),[o,r]=He(t);return[(u=o,!(0==S(u))),De(t),r,null!=(s=m(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l];var u},e.useValue=me,e.useValueIds=he,e.useValueIdsListener=(e,s,t,l)=>pe(v,z(l),e,s,ue,t),e.useValueListener=(e,s,t,l,o)=>pe(g,z(o),s,t,[e],l),e.useValues=e=>Ie(y,z(e),0),e.useValuesListener=(e,s,t,l)=>pe(y,z(l),e,s,ue,t),e.useWillFinishTransactionListener=(e,s,t)=>pe("WillFinish"+$,z(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,l="",o=t(l),r=t(t),u="Listener",n="Result",d="Has",i="Ids",a="Table",c=a+"s",I=a+i,p="Row",C=p+"Count",b=p+i,w="Sorted"+p+i,R="Cell",k=R+i,y="Value",g=y+"s",v=y+i,h=e=>null==e,m=(e,s,t)=>h(e)?null==t?void 0:t():s(e),L=e=>t(e)==o,f=e=>t(e)==r,S=e=>e.length,T=()=>{},V=(e,s)=>e.every(s),P=(e,s)=>S(e)===S(s)&&V(e,((e,t)=>s[t]===e)),x=(e,s)=>e.map(s),O=Object,q=e=>O.getPrototypeOf(e),B=O.entries,H=e=>!h(e)&&m(q(e),(e=>e==O.prototype||h(q(e))),(()=>!0)),M=O.keys,D=(e,s)=>m(e,(e=>e[s])),j=(e,s)=>{const t=B(e);return S(t)===S(M(s))&&V(t,(([e,t])=>H(t)?!!H(s[e])&&j(s[e],t):s[e]===t))},{createContext:F,useContext:E,useEffect:Q}=s,A=F([]),G=(e,s)=>{var t;const l=E(A);return h(e)?l[s]:L(e)?D(null!=(t=l[s+1])?t:{},e):e},U=(e,s)=>{const t=G(e,s);return h(e)||L(e)?t:e},W=e=>{var s;return M(null!=(s=E(A)[e])?s:{})},z=e=>U(e,0),J=e=>U(e,2),K=e=>U(e,4),N=e=>U(e,6),X=e=>U(e,8),Y=e=>U(e,10),Z=e=>e.toLowerCase();Z(u);const $="Transaction";Z($);var _=(e,s,t)=>new Promise(((l,o)=>{var r=e=>{try{n(t.next(e))}catch(e){o(e)}},u=e=>{try{n(t.throw(e))}catch(e){o(e)}},n=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,u);n((t=t.apply(e,s)).next())}));const{useCallback:ee,useEffect:se,useMemo:te,useLayoutEffect:le,useRef:oe,useState:re,useSyncExternalStore:ue}=s,ne=[],de=[{},[],[ne,void 0,ne],void 0,!1,0],ie=(e,s)=>e===s,ae=[j,P,([e,s,t],[l,o,r])=>s===o&&P(e,l)&&P(t,r)],ce=(e,s,t=ne)=>{const[,l]=re(),[o,r]=re();return se((()=>{const t=s(e);return r(t),l([]),t.destroy}),[e,...t]),o},Ie=(e,s,...t)=>{var l;const o=null==(l=null==e?void 0:e["add"+s+u])?void 0:l.call(e,...t);return()=>null==e?void 0:e.delListener(o)},pe=(e,s,t,o=ne)=>{const r=oe(de[t]),u=ee((()=>{var l,u,n;const d=null!=(u=null==(l=null==s?void 0:s[(4==t?"has":"get")+e])?void 0:l.call(s,...o))?u:de[t];return(null!=(n=ae[t])?n:ie)(d,r.current)?r.current:r.current=d}),[s,t,e,...o]),n=ee((r=>Ie(s,(4==t?d:l)+e,...o,r)),[s,t,e,...o]);return ue(n,u)},Ce=(e,s,t,l=ne,o=ne,...r)=>le((()=>Ie(s,e,...o,t,...r)),[s,e,...o,...l,...r]),be=(e,s,t,l=ne,o=T,r=ne,...u)=>{const n=z(e);return ee((e=>m(n,(l=>m(t(e,l),(t=>o(l["set"+s](...x(u,(s=>f(s)?s(e,l):s)),t),t)))))),[n,s,...l,...r,...u])},we=(e,s,t=T,l=ne,...o)=>{const r=z(e);return ee((()=>t(null==r?void 0:r["del"+s](...o))),[r,s,...l,...o])},Re=(e,s,t)=>{const l=Y(e);return ee((()=>null==l?void 0:l[s](t)),[l,s,t])},ke=e=>pe(I,z(e),1),ye=(e,s)=>pe(b,z(s),1,[e]),ge=(e,s,t,l=0,o,r)=>pe(w,z(r),1,[e,s,t,l,o]),ve=(e,s,t)=>pe(k,z(t),1,[e,s]),he=(e,s,t,l)=>pe(R,z(l),3,[e,s,t]),me=e=>pe(v,z(e),1),Le=(e,s)=>pe(y,z(s),3,[e]),fe=(e,s)=>pe("Metric",J(s),3,[e]),Se=(e,s)=>pe("SliceIds",K(s),1,[e]),Te=(e,s,t)=>pe("Slice"+b,K(t),1,[e,s]),Ve=(e,s,t)=>pe("RemoteRowId",N(t),3,[e,s]),Pe=(e,s,t)=>pe("Local"+b,N(t),1,[e,s]),xe=(e,s,t)=>pe("Linked"+b,N(t),1,[e,s]),Oe=(e,s)=>pe(n+b,X(s),1,[e]),qe=(e,s,t,l=0,o,r)=>pe(n+w,X(r),1,[e,s,t,l,o]),Be=(e,s,t)=>pe(n+k,X(t),1,[e,s]),He=(e,s,t,l)=>pe(n+R,X(l),3,[e,s,t]),Me=e=>pe("CheckpointIds",Y(e),2),De=(e,s)=>pe("Checkpoint",Y(s),3,[e]),je=e=>Re(e,"goBackward"),Fe=e=>Re(e,"goForward"),{PureComponent:Ee,Fragment:Qe,createElement:Ae,useCallback:Ge,useLayoutEffect:Ue,useRef:We,useState:ze}=s,Je=(e,...s)=>h(e)?{}:e(...s),Ke=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Ne=Object.defineProperty,Xe=Object.defineProperties,Ye=Object.getOwnPropertyDescriptors,Ze=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable,es=(e,s,t)=>s in e?Ne(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,ss=(e,s)=>{for(var t in s||(s={}))$e.call(s,t)&&es(e,t,s[t]);if(Ze)for(var t of Ze(s))_e.call(s,t)&&es(e,t,s[t]);return e},ts=(e,s)=>Xe(e,Ye(s)),ls=(e,s)=>{var t={};for(var l in e)$e.call(e,l)&&s.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&Ze)for(var l of Ze(e))s.indexOf(l)<0&&_e.call(e,l)&&(t[l]=e[l]);return t};const{useCallback:os,useContext:rs,useMemo:us,useState:ns}=s,ds=({tableId:e,store:s,rowComponent:t=Cs,getRowComponentProps:l,customCellIds:o,separator:r,debugIds:u},n)=>Is(x(n,(r=>Ae(t,ts(ss({},Je(l,r)),{key:r,tableId:e,rowId:r,customCellIds:o,store:s,debugIds:u})))),r,u,e),is=({queryId:e,queries:s,resultRowComponent:t=ys,getResultRowComponentProps:l,separator:o,debugIds:r},u)=>Is(x(u,(o=>Ae(t,ts(ss({},Je(l,o)),{key:o,queryId:e,rowId:o,queries:s,debugIds:r})))),o,r,e),as=({relationshipId:e,relationships:s,rowComponent:t=Cs,getRowComponentProps:l,separator:o,debugIds:r},u,n)=>{const[d,i,a]=Ke(N(s),e),c=u(e,n,d);return Is(x(c,(e=>Ae(t,ts(ss({},Je(l,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),o,r,n)},cs=e=>({checkpoints:s,checkpointComponent:t=gs,getCheckpointComponentProps:l,separator:o,debugIds:r})=>{const u=Y(s);return Is(x(e(Me(u)),(e=>Ae(t,ts(ss({},Je(l,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:r})))),o)},Is=(e,s,t,l)=>{const o=h(s)||!Array.isArray(e)?e:x(e,((e,t)=>t>0?[s,e]:e));return t?[l,":{",o,"}"]:o},ps=({tableId:e,rowId:s,cellId:t,store:o,debugIds:r})=>{var u;return Is(l+(null!=(u=he(e,s,t,o))?u:l),void 0,r,t)},Cs=({tableId:e,rowId:s,store:t,cellComponent:l=ps,getCellComponentProps:o,customCellIds:r,separator:u,debugIds:n})=>Is(x(((e,s,t,l)=>{const o=ve(s,t,l);return null!=e?e:o})(r,e,s,t),(r=>Ae(l,ts(ss({},Je(o,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),u,n,s),bs=e=>ds(e,ye(e.tableId,e.store)),ws=({valueId:e,store:s,debugIds:t})=>{var o;return Is(l+(null!=(o=Le(e,s))?o:l),void 0,t,e)},Rs=({indexId:e,sliceId:s,indexes:t,rowComponent:l=Cs,getRowComponentProps:o,separator:r,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(K(t),e),a=Te(e,s,n);return Is(x(a,(e=>Ae(l,ts(ss({},Je(o,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),r,u,s)},ks=({queryId:e,rowId:s,cellId:t,queries:o,debugIds:r})=>{var u;return Is(l+(null!=(u=He(e,s,t,o))?u:l),void 0,r,t)},ys=({queryId:e,rowId:s,queries:t,resultCellComponent:l=ks,getResultCellComponentProps:o,separator:r,debugIds:u})=>Is(x(Be(e,s,t),(r=>Ae(l,ts(ss({},Je(o,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:u})))),r,u,s),gs=({checkpoints:e,checkpointId:s,debugIds:t})=>{var o;return Is(null!=(o=De(s,e))?o:l,void 0,t,s)},vs=cs((e=>e[0])),hs=cs((e=>h(e[1])?[]:[e[1]])),ms=cs((e=>e[2]));e.BackwardCheckpointsView=vs,e.CellView=ps,e.CheckpointView=gs,e.CurrentCheckpointView=hs,e.ForwardCheckpointsView=ms,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=Rs,getSliceComponentProps:l,separator:o,debugIds:r})=>Is(x(Se(e,s),(o=>Ae(t,ts(ss({},Je(l,o)),{key:o,indexId:e,sliceId:o,indexes:s,debugIds:r})))),o,r,e),e.LinkedRowsView=e=>as(e,xe,e.firstRowId),e.LocalRowsView=e=>as(e,Pe,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var o;return Is(null!=(o=fe(e,s))?o:l,void 0,t,e)},e.Provider=({store:e,storesById:s,metrics:t,metricsById:l,indexes:o,indexesById:r,relationships:u,relationshipsById:n,queries:d,queriesById:i,checkpoints:a,checkpointsById:c,children:I})=>{const p=rs(A),[C,b]=ns({}),w=os(((e,s)=>b((t=>D(t,e)==s?t:ts(ss({},t),{[e]:s})))),[]),R=os((e=>b((s=>ss({},((e,s)=>(delete e[s],e))(s,e))))),[]);return Ae(A.Provider,{value:us((()=>[null!=e?e:p[0],ss(ss(ss({},p[1]),s),C),null!=t?t:p[2],ss(ss({},p[3]),l),null!=o?o:p[4],ss(ss({},p[5]),r),null!=u?u:p[6],ss(ss({},p[7]),n),null!=d?d:p[8],ss(ss({},p[9]),i),null!=a?a:p[10],ss(ss({},p[11]),c),w,R]),[e,s,C,t,l,o,r,u,n,d,i,a,c,p,w,R])},I)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:l=Cs,getRowComponentProps:o,debugIds:r})=>{const[u,n,,d]=Ke(N(t),e),i=Ve(e,s,u);return Is(h(d)||h(i)?null:Ae(l,ts(ss({},Je(o,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:r})),void 0,r,s)},e.ResultCellView=ks,e.ResultRowView=ys,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ls(s,["cellId","descending","offset","limit"]);return is(u,qe(u.queryId,t,l,o,r,u.queries))},e.ResultTableView=e=>is(e,Oe(e.queryId,e.queries)),e.RowView=Cs,e.SliceView=Rs,e.SortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ls(s,["cellId","descending","offset","limit"]);return ds(u,ge(u.tableId,t,l,o,r,u.store))},e.TableView=bs,e.TablesView=({store:e,tableComponent:s=bs,getTableComponentProps:t,separator:l,debugIds:o})=>Is(x(ke(e),(l=>Ae(s,ts(ss({},Je(t,l)),{key:l,tableId:l,store:e,debugIds:o})))),l),e.ValueView=ws,e.ValuesView=({store:e,valueComponent:s=ws,getValueComponentProps:t,separator:l,debugIds:o})=>Is(x(me(e),(l=>Ae(s,ts(ss({},Je(t,l)),{key:l,valueId:l,store:e,debugIds:o})))),l),e.useAddRowCallback=(e,s,t=ne,l,o=T,r=ne,u=!0)=>{const n=z(l);return ee((t=>m(n,(l=>m(s(t,l),(s=>o(l.addRow(f(e)?e(t,l):e,s,u),l,s)))))),[n,e,...t,...r,u])},e.useCell=he,e.useCellIds=ve,e.useCellIdsListener=(e,s,t,l,o,r)=>Ce(k,z(r),t,l,[e,s],o),e.useCellListener=(e,s,t,l,o,r,u)=>Ce(R,z(u),l,o,[e,s,t],r),e.useCheckpoint=De,e.useCheckpointIds=Me,e.useCheckpointIdsListener=(e,s,t)=>Ce("CheckpointIds",Y(t),e,s),e.useCheckpointListener=(e,s,t,l)=>Ce("Checkpoint",Y(l),s,t,[e]),e.useCheckpoints=e=>G(e,10),e.useCheckpointsIds=()=>W(11),e.useCheckpointsOrCheckpointsById=Y,e.useCreateCheckpoints=(e,s,t)=>ce(e,s,t),e.useCreateIndexes=(e,s,t)=>ce(e,s,t),e.useCreateMergeableStore=(e,s=ne)=>te(e,s),e.useCreateMetrics=(e,s,t)=>ce(e,s,t),e.useCreatePersister=(e,s,t=ne,l,o=ne,r,u=ne)=>{const[,n]=re(),[d,i]=re();return se((()=>{const t=s(e);i(t),t&&l&&_(void 0,null,(function*(){yield l(t),n([])}))}),[e,...t,...o]),se((()=>()=>{d&&(d.destroy(),null==r||r(d))}),[d,...u]),d},e.useCreateQueries=(e,s,t)=>ce(e,s,t),e.useCreateRelationships=(e,s,t)=>ce(e,s,t),e.useCreateStore=(e,s=ne)=>te(e,s),e.useCreateSynchronizer=(e,s,t=ne,l,o=ne,r,u=ne)=>{const[,n]=re(),[d,i]=re();return se((()=>{_(void 0,null,(function*(){const t=yield s(e);i(t),t&&l&&_(void 0,null,(function*(){yield l(t),n([])}))}))}),[e,...t,...o]),se((()=>()=>{d&&(d.destroy(),null==r||r(d))}),[d,...u]),d},e.useDelCellCallback=(e,s,t,l,o,r,u)=>we(o,R,r,u,e,s,t,l),e.useDelRowCallback=(e,s,t,l,o)=>we(t,p,l,o,e,s),e.useDelTableCallback=(e,s,t,l)=>we(s,a,t,l,e),e.useDelTablesCallback=(e,s,t)=>we(e,c,s,t),e.useDelValueCallback=(e,s,t,l)=>we(s,y,t,l,e),e.useDelValuesCallback=(e,s,t)=>we(e,g,s,t),e.useDidFinishTransactionListener=(e,s,t)=>Ce("DidFinish"+$,z(t),e,s),e.useGoBackwardCallback=je,e.useGoForwardCallback=Fe,e.useGoToCallback=(e,s=ne,t,l=T,o=ne)=>{const r=Y(t);return ee((s=>m(r,(t=>m(e(s),(e=>l(t.goTo(e),e)))))),[r,...s,...o])},e.useHasCell=(e,s,t,l)=>pe(R,z(l),4,[e,s,t]),e.useHasCellListener=(e,s,t,l,o,r,u)=>Ce(d+R,z(u),l,o,[e,s,t],r),e.useHasRow=(e,s,t)=>pe(p,z(t),4,[e,s]),e.useHasRowListener=(e,s,t,l,o,r)=>Ce(d+p,z(r),t,l,[e,s],o),e.useHasTable=(e,s)=>pe(a,z(s),4,[e]),e.useHasTableCell=(e,s,t)=>pe(a+R,z(t),4,[e,s]),e.useHasTableCellListener=(e,s,t,l,o,r)=>Ce(d+a+R,z(r),t,l,[e,s],o),e.useHasTableListener=(e,s,t,l,o)=>Ce(d+a,z(o),s,t,[e],l),e.useHasTables=e=>pe(c,z(e),4,[]),e.useHasTablesListener=(e,s,t,l)=>Ce(d+c,z(l),e,s,[],t),e.useHasValue=(e,s)=>pe(y,z(s),4,[e]),e.useHasValueListener=(e,s,t,l,o)=>Ce(d+y,z(o),s,t,[e],l),e.useHasValues=e=>pe(g,z(e),4,[]),e.useHasValuesListener=(e,s,t,l)=>Ce(d+g,z(l),e,s,[],t),e.useIndexIds=e=>pe("IndexIds",K(e),1),e.useIndexes=e=>G(e,4),e.useIndexesIds=()=>W(5),e.useIndexesOrIndexesById=K,e.useLinkedRowIds=xe,e.useLinkedRowIdsListener=(e,s,t,l,o)=>Ce("Linked"+b,N(o),t,l,[e,s]),e.useLocalRowIds=Pe,e.useLocalRowIdsListener=(e,s,t,l,o)=>Ce("Local"+b,N(o),t,l,[e,s]),e.useMetric=fe,e.useMetricIds=e=>pe("MetricIds",J(e),1),e.useMetricListener=(e,s,t,l)=>Ce("Metric",J(l),s,t,[e]),e.useMetrics=e=>G(e,2),e.useMetricsIds=()=>W(3),e.useMetricsOrMetricsById=J,e.useProvideStore=(e,s)=>{const{12:t,13:l}=E(A);Q((()=>(null==t||t(e,s),()=>null==l?void 0:l(e))),[t,e,s,l])},e.useQueries=e=>G(e,8),e.useQueriesIds=()=>W(9),e.useQueriesOrQueriesById=X,e.useQueryIds=e=>pe("QueryIds",X(e),1),e.useRedoInformation=e=>{var s;const t=Y(e),[,,[o]]=Me(t);return[!h(o),Fe(t),o,null!=(s=m(o,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l]},e.useRelationshipIds=e=>pe("RelationshipIds",N(e),1),e.useRelationships=e=>G(e,6),e.useRelationshipsIds=()=>W(7),e.useRelationshipsOrRelationshipsById=N,e.useRemoteRowId=Ve,e.useRemoteRowIdListener=(e,s,t,l,o)=>Ce("RemoteRowId",N(o),t,l,[e,s]),e.useResultCell=He,e.useResultCellIds=Be,e.useResultCellIdsListener=(e,s,t,l,o)=>Ce(n+k,X(o),t,l,[e,s]),e.useResultCellListener=(e,s,t,l,o,r)=>Ce(n+R,X(r),l,o,[e,s,t]),e.useResultRow=(e,s,t)=>pe(n+p,X(t),0,[e,s]),e.useResultRowCount=(e,s)=>pe(n+C,X(s),5,[e]),e.useResultRowCountListener=(e,s,t,l)=>Ce(n+C,X(l),s,t,[e]),e.useResultRowIds=Oe,e.useResultRowIdsListener=(e,s,t,l)=>Ce(n+b,X(l),s,t,[e]),e.useResultRowListener=(e,s,t,l,o)=>Ce(n+p,X(o),t,l,[e,s]),e.useResultSortedRowIds=qe,e.useResultSortedRowIdsListener=(e,s,t,l,o,r,u,d)=>Ce(n+w,X(d),r,u,[e,s,t,l,o]),e.useResultTable=(e,s)=>pe(n+a,X(s),0,[e]),e.useResultTableCellIds=(e,s)=>pe(n+a+k,X(s),1,[e]),e.useResultTableCellIdsListener=(e,s,t,l)=>Ce(n+a+k,X(l),s,t,[e]),e.useResultTableListener=(e,s,t,l)=>Ce(n+a,X(l),s,t,[e]),e.useRow=(e,s,t)=>pe(p,z(t),0,[e,s]),e.useRowCount=(e,s)=>pe(C,z(s),5,[e]),e.useRowCountListener=(e,s,t,l,o)=>Ce(C,z(o),s,t,[e],l),e.useRowIds=ye,e.useRowIdsListener=(e,s,t,l,o)=>Ce(b,z(o),s,t,[e],l),e.useRowListener=(e,s,t,l,o,r)=>Ce(p,z(r),t,l,[e,s],o),e.useSetCellCallback=(e,s,t,l,o,r,u,n)=>be(r,R,l,o,u,n,e,s,t),e.useSetCheckpointCallback=(e=T,s=ne,t,l=T,o=ne)=>{const r=Y(t);return ee((s=>m(r,(t=>{const o=e(s);l(t.addCheckpoint(o),t,o)}))),[r,...s,...o])},e.useSetPartialRowCallback=(e,s,t,l,o,r,u)=>be(o,"PartialRow",t,l,r,u,e,s),e.useSetPartialValuesCallback=(e,s,t,l,o)=>be(t,"PartialValues",e,s,l,o),e.useSetRowCallback=(e,s,t,l,o,r,u)=>be(o,p,t,l,r,u,e,s),e.useSetTableCallback=(e,s,t,l,o,r)=>be(l,a,s,t,o,r,e),e.useSetTablesCallback=(e,s,t,l,o)=>be(t,c,e,s,l,o),e.useSetValueCallback=(e,s,t,l,o,r)=>be(l,y,s,t,o,r,e),e.useSetValuesCallback=(e,s,t,l,o)=>be(t,g,e,s,l,o),e.useSliceIds=Se,e.useSliceIdsListener=(e,s,t,l)=>Ce("SliceIds",K(l),s,t,[e]),e.useSliceRowIds=Te,e.useSliceRowIdsListener=(e,s,t,l,o)=>Ce("Slice"+b,K(o),t,l,[e,s]),e.useSortedRowIds=ge,e.useSortedRowIdsListener=(e,s,t,l,o,r,u,n,d)=>Ce(w,z(d),r,u,[e,s,t,l,o],n),e.useStartTransactionListener=(e,s,t)=>Ce("Start"+$,z(t),e,s),e.useStore=e=>G(e,0),e.useStoreIds=()=>W(1),e.useStoreOrStoreById=z,e.useTable=(e,s)=>pe(a,z(s),0,[e]),e.useTableCellIds=(e,s)=>pe(a+k,z(s),1,[e]),e.useTableCellIdsListener=(e,s,t,l,o)=>Ce(a+k,z(o),s,t,[e],l),e.useTableIds=ke,e.useTableIdsListener=(e,s,t,l)=>Ce(I,z(l),e,s,ne,t),e.useTableListener=(e,s,t,l,o)=>Ce(a,z(o),s,t,[e],l),e.useTables=e=>pe(c,z(e),0),e.useTablesListener=(e,s,t,l)=>Ce(c,z(l),e,s,ne,t),e.useUndoInformation=e=>{var s;const t=Y(e),[o,r]=Me(t);return[(u=o,!(0==S(u))),je(t),r,null!=(s=m(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l];var u},e.useValue=Le,e.useValueIds=me,e.useValueIdsListener=(e,s,t,l)=>Ce(v,z(l),e,s,ne,t),e.useValueListener=(e,s,t,l,o)=>Ce(y,z(o),s,t,[e],l),e.useValues=e=>pe(g,z(e),0),e.useValuesListener=(e,s,t,l)=>Ce(g,z(l),e,s,ne,t),e.useWillFinishTransactionListener=(e,s,t)=>Ce("WillFinish"+$,z(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": "5.0.0-beta.7",
3
+ "version": "5.0.0-beta.9",
4
4
  "author": "jamesgpearce",
5
5
  "repository": "github:tinyplex/tinybase",
6
6
  "license": "MIT",
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/#v5-0"><em>NEW!</em> v5.0 release</a> <span id="one-with">&quot;The One You Can Sync&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> and <a href="https://electric-sql.com/">ElectricSQL</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 - 11.8kB</a>, no 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/expo.svg">Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg">ElectricSQL</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/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/turso.svg">Turso</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/powersync.svg">PowerSync</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/5.0.0-beta.7" 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>
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/#v5-0"><em>NEW!</em> v5.0 release</a> <span id="one-with">&quot;The One You Can Sync&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> and <a href="https://electric-sql.com/">ElectricSQL</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 - 11.8kB</a>, no 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/expo.svg">Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg">ElectricSQL</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/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/turso.svg">Turso</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/powersync.svg">PowerSync</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/5.0.0-beta.9" 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>5.0kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>11.8kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>4.5kB</em>, the auxiliary <a href="https://beta.tinybase.org/api/tools/"><code>tools</code></a> module is <em>11.1kB</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.7kB</td><td>255.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.7kB</td><td>15.3kB</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.8kB</td><td>17.3kB</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.8kB</td><td>126.0kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.6kB</td><td>3.2kB</td><td>13.5kB</td><td>35.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/mergeable-store/">mergeable-store</a></th><td>6.7kB</td><td>16.3kB</td><td>68.5kB</td><td>4.4kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/persisters/">persisters</a></th><td>0.9kB</td><td>1.9kB</td><td>6.3kB</td><td>46.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/synchronizers/">synchronizers</a></th><td>1.8kB</td><td>3.9kB</td><td>14.2kB</td><td>3.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>11.8kB</td><td>29.2kB</td><td>124.4kB</td><td>0.4kB</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>2,278</td><td>2,278</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,460</td><td>2,460</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>969</td><td>969</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>897</td><td>897</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">6,532</td></tr><tr><th class="right">Assertions</th><td colspan="3">30,523</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/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.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/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.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/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.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/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.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/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.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/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.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/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.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/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.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/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.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/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.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>
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>11.8kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>4.6kB</em>, the auxiliary <a href="https://beta.tinybase.org/api/tools/"><code>tools</code></a> module is <em>11.1kB</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.7kB</td><td>255.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.7kB</td><td>15.3kB</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.8kB</td><td>17.3kB</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.8kB</td><td>126.0kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.6kB</td><td>3.2kB</td><td>13.5kB</td><td>35.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/mergeable-store/">mergeable-store</a></th><td>6.8kB</td><td>16.4kB</td><td>68.7kB</td><td>4.5kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/persisters/">persisters</a></th><td>0.9kB</td><td>1.9kB</td><td>6.4kB</td><td>46.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/synchronizers/">synchronizers</a></th><td>1.8kB</td><td>3.9kB</td><td>14.3kB</td><td>3.6kB</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>11.8kB</td><td>29.2kB</td><td>124.7kB</td><td>0.4kB</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>2,280</td><td>2,280</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,464</td><td>2,464</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>969</td><td>969</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>897</td><td>897</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">6,532</td></tr><tr><th class="right">Assertions</th><td colspan="3">30,523</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/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.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/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.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/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.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/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.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/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.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/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.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/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.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/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.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/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.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/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.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>