@airtable/blocks 0.0.0-experimental-f52bc4e5e-20250709 → 0.0.0-experimental-3649c7162-20250904

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 (667) hide show
  1. package/dist/esm/base/assert_run_context.js +12 -0
  2. package/dist/{cjs → esm}/base/index.js +30 -32
  3. package/dist/esm/base/models/abstract_model_with_async_data.js +190 -0
  4. package/dist/esm/base/models/base.js +252 -0
  5. package/dist/esm/base/models/create_aggregators.js +90 -0
  6. package/dist/esm/base/models/cursor.js +305 -0
  7. package/dist/esm/base/models/field.js +338 -0
  8. package/dist/esm/base/models/grouped_record_query_result.js +280 -0
  9. package/dist/esm/base/models/linked_records_query_result.js +553 -0
  10. package/dist/{cjs → esm}/base/models/models.js +19 -40
  11. package/dist/esm/base/models/mutations.js +312 -0
  12. package/dist/esm/base/models/object_pool.js +145 -0
  13. package/dist/esm/base/models/record.js +239 -0
  14. package/dist/{cjs → esm}/base/models/record_coloring.js +6 -6
  15. package/dist/esm/base/models/record_query_result.js +657 -0
  16. package/dist/esm/base/models/record_store.js +475 -0
  17. package/dist/esm/base/models/session.js +154 -0
  18. package/dist/esm/base/models/table.js +520 -0
  19. package/dist/esm/base/models/table_or_view_query_result.js +749 -0
  20. package/dist/esm/base/models/view.js +326 -0
  21. package/dist/esm/base/models/view_data_store.js +265 -0
  22. package/dist/esm/base/models/view_metadata_query_result.js +176 -0
  23. package/dist/esm/base/perform_record_action.js +215 -0
  24. package/dist/esm/base/sdk.js +178 -0
  25. package/dist/esm/base/settings_button.js +118 -0
  26. package/dist/{cjs → esm}/base/types/airtable_interface.js +1 -1
  27. package/dist/{cjs → esm}/base/types/mutations.js +5 -11
  28. package/dist/{cjs → esm}/base/types/undo_redo.js +1 -1
  29. package/dist/{cjs → esm}/base/types/view.js +1 -1
  30. package/dist/{cjs → esm}/base/ui/base_provider.js +6 -8
  31. package/dist/esm/base/ui/baymax_utils.js +461 -0
  32. package/dist/esm/base/ui/block_wrapper.js +118 -0
  33. package/dist/esm/base/ui/box.js +84 -0
  34. package/dist/esm/base/ui/button.js +152 -0
  35. package/dist/esm/base/ui/cell_renderer.js +198 -0
  36. package/dist/esm/base/ui/choice_token.js +93 -0
  37. package/dist/esm/base/ui/collaborator_token.js +123 -0
  38. package/dist/esm/base/ui/color_palette.js +196 -0
  39. package/dist/esm/base/ui/color_palette_synced.js +69 -0
  40. package/dist/esm/base/ui/confirmation_dialog.js +103 -0
  41. package/dist/{cjs → esm}/base/ui/control_sizes.js +24 -22
  42. package/dist/{cjs → esm}/base/ui/create_detect_element_resize.js +6 -10
  43. package/dist/{cjs → esm}/base/ui/css_helpers.js +1 -1
  44. package/dist/esm/base/ui/dialog.js +101 -0
  45. package/dist/esm/base/ui/dialog_close_button.js +106 -0
  46. package/dist/{cjs → esm}/base/ui/expand_record.js +1 -2
  47. package/dist/{cjs → esm}/base/ui/expand_record_list.js +3 -4
  48. package/dist/esm/base/ui/expand_record_picker_async.js +71 -0
  49. package/dist/esm/base/ui/field_icon.js +44 -0
  50. package/dist/esm/base/ui/field_picker.js +98 -0
  51. package/dist/esm/base/ui/field_picker_synced.js +66 -0
  52. package/dist/esm/base/ui/form_field.js +109 -0
  53. package/dist/{cjs → esm}/base/ui/geometry/geometry.js +5 -5
  54. package/dist/esm/base/ui/geometry/point.js +19 -0
  55. package/dist/esm/base/ui/geometry/rect.js +51 -0
  56. package/dist/esm/base/ui/geometry/size.js +19 -0
  57. package/dist/esm/base/ui/global_alert.js +71 -0
  58. package/dist/esm/base/ui/heading.js +132 -0
  59. package/dist/esm/base/ui/icon.js +109 -0
  60. package/dist/{cjs → esm}/base/ui/icon_config.js +6 -12
  61. package/dist/{cjs → esm}/base/ui/initialize_block.js +16 -35
  62. package/dist/esm/base/ui/input.js +161 -0
  63. package/dist/esm/base/ui/input_synced.js +66 -0
  64. package/dist/{cjs → esm}/base/ui/key_codes.js +2 -3
  65. package/dist/esm/base/ui/label.js +80 -0
  66. package/dist/esm/base/ui/link.js +196 -0
  67. package/dist/esm/base/ui/loader.js +61 -0
  68. package/dist/esm/base/ui/modal.js +145 -0
  69. package/dist/esm/base/ui/model_picker_select.js +57 -0
  70. package/dist/esm/base/ui/popover.js +315 -0
  71. package/dist/esm/base/ui/progress_bar.js +115 -0
  72. package/dist/esm/base/ui/record_card.js +564 -0
  73. package/dist/esm/base/ui/record_card_list.js +303 -0
  74. package/dist/esm/base/ui/select.js +191 -0
  75. package/dist/esm/base/ui/select_and_select_buttons_helpers.js +63 -0
  76. package/dist/esm/base/ui/select_buttons.js +159 -0
  77. package/dist/esm/base/ui/select_buttons_synced.js +62 -0
  78. package/dist/esm/base/ui/select_synced.js +65 -0
  79. package/dist/esm/base/ui/switch.js +167 -0
  80. package/dist/esm/base/ui/switch_synced.js +53 -0
  81. package/dist/esm/base/ui/synced.js +49 -0
  82. package/dist/{cjs → esm}/base/ui/system/all_styles_set.js +4 -12
  83. package/dist/esm/base/ui/system/appearance/appearance_set.js +27 -0
  84. package/dist/esm/base/ui/system/appearance/background_color.js +18 -0
  85. package/dist/{cjs → esm}/base/ui/system/appearance/border.js +3 -6
  86. package/dist/esm/base/ui/system/appearance/border_radius.js +18 -0
  87. package/dist/esm/base/ui/system/appearance/box_shadow.js +18 -0
  88. package/dist/esm/base/ui/system/appearance/opacity.js +18 -0
  89. package/dist/esm/base/ui/system/dimensions/dimensions_set.js +29 -0
  90. package/dist/esm/base/ui/system/dimensions/height.js +18 -0
  91. package/dist/esm/base/ui/system/dimensions/max_height.js +18 -0
  92. package/dist/esm/base/ui/system/dimensions/max_width.js +18 -0
  93. package/dist/esm/base/ui/system/dimensions/min_height.js +18 -0
  94. package/dist/esm/base/ui/system/dimensions/min_width.js +18 -0
  95. package/dist/esm/base/ui/system/dimensions/width.js +18 -0
  96. package/dist/esm/base/ui/system/display.js +19 -0
  97. package/dist/esm/base/ui/system/flex_container/align_content.js +15 -0
  98. package/dist/esm/base/ui/system/flex_container/align_items.js +15 -0
  99. package/dist/esm/base/ui/system/flex_container/flex_container_set.js +29 -0
  100. package/dist/esm/base/ui/system/flex_container/flex_direction.js +15 -0
  101. package/dist/esm/base/ui/system/flex_container/flex_wrap.js +15 -0
  102. package/dist/esm/base/ui/system/flex_container/justify_content.js +15 -0
  103. package/dist/esm/base/ui/system/flex_container/justify_items.js +16 -0
  104. package/dist/esm/base/ui/system/flex_item/align_self.js +15 -0
  105. package/dist/esm/base/ui/system/flex_item/flex.js +15 -0
  106. package/dist/esm/base/ui/system/flex_item/flex_basis.js +15 -0
  107. package/dist/esm/base/ui/system/flex_item/flex_grow.js +15 -0
  108. package/dist/esm/base/ui/system/flex_item/flex_item_set.js +31 -0
  109. package/dist/esm/base/ui/system/flex_item/flex_shrink.js +15 -0
  110. package/dist/esm/base/ui/system/flex_item/justify_self.js +16 -0
  111. package/dist/esm/base/ui/system/flex_item/order.js +15 -0
  112. package/dist/{cjs → esm}/base/ui/system/index.js +104 -416
  113. package/dist/esm/base/ui/system/overflow.js +21 -0
  114. package/dist/{cjs → esm}/base/ui/system/position/bottom.js +4 -6
  115. package/dist/{cjs → esm}/base/ui/system/position/left.js +4 -6
  116. package/dist/esm/base/ui/system/position/position.js +15 -0
  117. package/dist/esm/base/ui/system/position/position_set.js +29 -0
  118. package/dist/{cjs → esm}/base/ui/system/position/right.js +4 -6
  119. package/dist/{cjs → esm}/base/ui/system/position/top.js +4 -6
  120. package/dist/esm/base/ui/system/position/z_index.js +18 -0
  121. package/dist/{cjs → esm}/base/ui/system/spacing/margin.js +4 -6
  122. package/dist/{cjs → esm}/base/ui/system/spacing/padding.js +4 -6
  123. package/dist/esm/base/ui/system/spacing/spacing_set.js +21 -0
  124. package/dist/esm/base/ui/system/typography/font_family.js +18 -0
  125. package/dist/esm/base/ui/system/typography/font_size.js +18 -0
  126. package/dist/esm/base/ui/system/typography/font_style.js +15 -0
  127. package/dist/esm/base/ui/system/typography/font_weight.js +18 -0
  128. package/dist/esm/base/ui/system/typography/letter_spacing.js +18 -0
  129. package/dist/esm/base/ui/system/typography/line_height.js +15 -0
  130. package/dist/esm/base/ui/system/typography/text_align.js +15 -0
  131. package/dist/esm/base/ui/system/typography/text_color.js +18 -0
  132. package/dist/esm/base/ui/system/typography/text_decoration.js +15 -0
  133. package/dist/esm/base/ui/system/typography/text_transform.js +15 -0
  134. package/dist/esm/base/ui/system/typography/typography_set.js +37 -0
  135. package/dist/{cjs → esm}/base/ui/system/utils/ensure_numbers_are_within_scale.js +3 -4
  136. package/dist/esm/base/ui/system/utils/get_style_props_for_responsive_prop.js +73 -0
  137. package/dist/esm/base/ui/table_picker.js +71 -0
  138. package/dist/esm/base/ui/table_picker_synced.js +62 -0
  139. package/dist/esm/base/ui/text.js +117 -0
  140. package/dist/esm/base/ui/text_button.js +196 -0
  141. package/dist/{cjs → esm}/base/ui/theme/default_theme/button_variants.js +3 -3
  142. package/dist/esm/base/ui/theme/default_theme/control_sizes.js +102 -0
  143. package/dist/{cjs → esm}/base/ui/theme/default_theme/heading_styles.js +1 -1
  144. package/dist/{cjs → esm}/base/ui/theme/default_theme/index.js +9 -15
  145. package/dist/{cjs → esm}/base/ui/theme/default_theme/input_variants.js +3 -3
  146. package/dist/{cjs → esm}/base/ui/theme/default_theme/link_variants.js +3 -3
  147. package/dist/{cjs → esm}/base/ui/theme/default_theme/select_buttons_variants.js +4 -4
  148. package/dist/esm/base/ui/theme/default_theme/select_variants.js +50 -0
  149. package/dist/esm/base/ui/theme/default_theme/switch_variants.js +85 -0
  150. package/dist/{cjs → esm}/base/ui/theme/default_theme/text_button_variants.js +5 -5
  151. package/dist/{cjs → esm}/base/ui/theme/default_theme/text_styles.js +1 -1
  152. package/dist/{cjs → esm}/base/ui/theme/default_theme/tokens.js +14 -14
  153. package/dist/{cjs → esm}/base/ui/theme/theme_context.js +2 -2
  154. package/dist/{cjs → esm}/base/ui/theme/use_theme.js +2 -2
  155. package/dist/esm/base/ui/tooltip.js +175 -0
  156. package/dist/{cjs → esm}/base/ui/ui.js +48 -49
  157. package/dist/{cjs → esm}/base/ui/unstable_standalone_ui.js +27 -27
  158. package/dist/{cjs → esm}/base/ui/use_base.js +1 -1
  159. package/dist/{cjs → esm}/base/ui/use_cursor.js +5 -4
  160. package/dist/{cjs → esm}/base/ui/use_form_field.js +1 -1
  161. package/dist/{cjs → esm}/base/ui/use_loadable.js +25 -91
  162. package/dist/{cjs → esm}/base/ui/use_record_action_data.js +4 -3
  163. package/dist/{cjs → esm}/base/ui/use_records.js +9 -13
  164. package/dist/{cjs → esm}/base/ui/use_session.js +1 -1
  165. package/dist/{cjs → esm}/base/ui/use_settings_button.js +4 -3
  166. package/dist/esm/base/ui/use_styled_system.js +25 -0
  167. package/dist/{cjs → esm}/base/ui/use_text_color_for_background_color.js +4 -3
  168. package/dist/{cjs → esm}/base/ui/use_view_metadata.js +4 -4
  169. package/dist/{cjs → esm}/base/ui/use_viewport.js +2 -2
  170. package/dist/esm/base/ui/view_picker.js +89 -0
  171. package/dist/esm/base/ui/view_picker_synced.js +66 -0
  172. package/dist/esm/base/ui/viewport_constraint.js +129 -0
  173. package/dist/esm/base/ui/with_styled_system.js +129 -0
  174. package/dist/esm/base/undo_redo.js +37 -0
  175. package/dist/{cjs → esm}/base/unstable_testing_utils.js +27 -27
  176. package/dist/esm/base/viewport.js +353 -0
  177. package/dist/esm/injected/airtable_interface.js +22 -0
  178. package/dist/esm/interface/assert_run_context.js +12 -0
  179. package/dist/esm/interface/index.js +22 -0
  180. package/dist/esm/interface/models/base.js +35 -0
  181. package/dist/esm/interface/models/field.js +28 -0
  182. package/dist/{cjs → esm}/interface/models/models.js +8 -7
  183. package/dist/esm/interface/models/mutations.js +63 -0
  184. package/dist/esm/interface/models/record.js +51 -0
  185. package/dist/esm/interface/models/record_store.js +51 -0
  186. package/dist/esm/interface/models/session.js +28 -0
  187. package/dist/esm/interface/models/table.js +97 -0
  188. package/dist/esm/interface/sdk.js +78 -0
  189. package/dist/{cjs → esm}/interface/types/airtable_interface.js +2 -2
  190. package/dist/esm/interface/types/mutations.js +17 -0
  191. package/dist/esm/interface/ui/block_wrapper.js +69 -0
  192. package/dist/{cjs → esm}/interface/ui/initialize_block.js +13 -28
  193. package/dist/{cjs → esm}/interface/ui/ui.js +20 -19
  194. package/dist/{cjs → esm}/interface/ui/use_base.js +1 -1
  195. package/dist/{cjs → esm}/interface/ui/use_custom_properties.js +19 -35
  196. package/dist/{cjs → esm}/interface/ui/use_records.js +6 -5
  197. package/dist/{cjs → esm}/interface/ui/use_run_info.js +2 -2
  198. package/dist/{cjs → esm}/interface/ui/use_session.js +1 -1
  199. package/dist/{cjs → esm}/shared/color_utils.js +9 -16
  200. package/dist/{cjs → esm}/shared/colors.js +2 -2
  201. package/dist/{cjs → esm}/shared/error_utils.js +9 -11
  202. package/dist/{cjs → esm}/shared/event_tracker.js +3 -3
  203. package/dist/esm/shared/global_config.js +399 -0
  204. package/dist/esm/shared/models/abstract_model.js +94 -0
  205. package/dist/esm/shared/models/base_core.js +482 -0
  206. package/dist/esm/shared/models/field_core.js +288 -0
  207. package/dist/esm/shared/models/mutations_core.js +343 -0
  208. package/dist/esm/shared/models/record_core.js +215 -0
  209. package/dist/esm/shared/models/record_store_core.js +160 -0
  210. package/dist/esm/shared/models/session_core.js +160 -0
  211. package/dist/esm/shared/models/table_core.js +1318 -0
  212. package/dist/{cjs → esm}/shared/private_utils.js +54 -124
  213. package/dist/esm/shared/sdk_core.js +113 -0
  214. package/dist/{cjs → esm}/shared/types/field_core.js +1 -1
  215. package/dist/esm/shared/types/mutation_constants.js +11 -0
  216. package/dist/{cjs → esm}/shared/types/mutations_core.js +1 -1
  217. package/dist/{cjs → esm}/shared/types/permission_levels.js +1 -1
  218. package/dist/esm/shared/types/record.js +1 -0
  219. package/dist/esm/shared/types/stat.js +1 -0
  220. package/dist/esm/shared/types/table_core.js +1 -0
  221. package/dist/{cjs → esm}/shared/ui/global_config_synced_component_helpers.js +9 -9
  222. package/dist/esm/shared/ui/loader.js +47 -0
  223. package/dist/{cjs → esm}/shared/ui/remote_utils.js +5 -7
  224. package/dist/{cjs → esm}/shared/ui/sdk_context.js +4 -8
  225. package/dist/{cjs → esm}/shared/ui/use_array_identity.js +2 -2
  226. package/dist/{cjs → esm}/shared/ui/use_base.js +6 -5
  227. package/dist/{cjs → esm}/shared/ui/use_color_scheme.js +3 -8
  228. package/dist/{cjs → esm}/shared/ui/use_global_config.js +5 -4
  229. package/dist/{cjs → esm}/shared/ui/use_session.js +6 -5
  230. package/dist/{cjs → esm}/shared/ui/use_synced.js +7 -5
  231. package/dist/{cjs → esm}/shared/ui/use_watchable.js +13 -42
  232. package/dist/{cjs → esm}/shared/ui/with_hooks.js +6 -13
  233. package/dist/{cjs → esm}/shared/unstable_private_utils.js +4 -6
  234. package/dist/{cjs → esm}/shared/warning.js +5 -5
  235. package/dist/esm/shared/watchable.js +150 -0
  236. package/dist/esm/stats/block_stats.js +73 -0
  237. package/dist/esm/testing/base/abstract_mock_airtable_interface.js +208 -0
  238. package/dist/esm/testing/interface/abstract_mock_airtable_interface.js +124 -0
  239. package/dist/types/src/base/assert_run_context.d.ts +2 -0
  240. package/dist/types/src/base/assert_run_context.d.ts.map +1 -0
  241. package/dist/types/src/base/index.d.ts +1 -0
  242. package/dist/types/src/base/index.d.ts.map +1 -1
  243. package/dist/types/src/base/models/base.d.ts +19 -0
  244. package/dist/types/src/base/models/base.d.ts.map +1 -1
  245. package/dist/types/src/base/models/create_aggregators.d.ts +3 -4
  246. package/dist/types/src/base/models/create_aggregators.d.ts.map +1 -1
  247. package/dist/types/src/base/models/field.d.ts +3 -2
  248. package/dist/types/src/base/models/field.d.ts.map +1 -1
  249. package/dist/types/src/base/models/models.d.ts +1 -2
  250. package/dist/types/src/base/models/models.d.ts.map +1 -1
  251. package/dist/types/src/base/models/mutations.d.ts.map +1 -1
  252. package/dist/types/src/base/sdk.d.ts.map +1 -1
  253. package/dist/types/src/base/ui/block_wrapper.d.ts +1 -1
  254. package/dist/types/src/base/ui/box.d.ts.map +1 -1
  255. package/dist/types/src/base/ui/button.d.ts +0 -5
  256. package/dist/types/src/base/ui/button.d.ts.map +1 -1
  257. package/dist/types/src/base/ui/cell_renderer.d.ts +1 -22
  258. package/dist/types/src/base/ui/cell_renderer.d.ts.map +1 -1
  259. package/dist/types/src/base/ui/choice_token.d.ts +1 -21
  260. package/dist/types/src/base/ui/choice_token.d.ts.map +1 -1
  261. package/dist/types/src/base/ui/collaborator_token.d.ts +0 -20
  262. package/dist/types/src/base/ui/collaborator_token.d.ts.map +1 -1
  263. package/dist/types/src/base/ui/color_palette.d.ts +1 -32
  264. package/dist/types/src/base/ui/color_palette.d.ts.map +1 -1
  265. package/dist/types/src/base/ui/color_palette_synced.d.ts +0 -14
  266. package/dist/types/src/base/ui/color_palette_synced.d.ts.map +1 -1
  267. package/dist/types/src/base/ui/confirmation_dialog.d.ts +0 -17
  268. package/dist/types/src/base/ui/confirmation_dialog.d.ts.map +1 -1
  269. package/dist/types/src/base/ui/control_sizes.d.ts +0 -1
  270. package/dist/types/src/base/ui/control_sizes.d.ts.map +1 -1
  271. package/dist/types/src/base/ui/dialog.d.ts +1 -23
  272. package/dist/types/src/base/ui/dialog.d.ts.map +1 -1
  273. package/dist/types/src/base/ui/dialog_close_button.d.ts +2 -24
  274. package/dist/types/src/base/ui/dialog_close_button.d.ts.map +1 -1
  275. package/dist/types/src/base/ui/field_icon.d.ts +1 -17
  276. package/dist/types/src/base/ui/field_icon.d.ts.map +1 -1
  277. package/dist/types/src/base/ui/field_picker.d.ts +0 -23
  278. package/dist/types/src/base/ui/field_picker.d.ts.map +1 -1
  279. package/dist/types/src/base/ui/field_picker_synced.d.ts.map +1 -1
  280. package/dist/types/src/base/ui/form_field.d.ts +0 -4
  281. package/dist/types/src/base/ui/form_field.d.ts.map +1 -1
  282. package/dist/types/src/base/ui/heading.d.ts +1 -1
  283. package/dist/types/src/base/ui/heading.d.ts.map +1 -1
  284. package/dist/types/src/base/ui/icon.d.ts +0 -16
  285. package/dist/types/src/base/ui/icon.d.ts.map +1 -1
  286. package/dist/types/src/base/ui/icon_config.d.ts +50 -51
  287. package/dist/types/src/base/ui/icon_config.d.ts.map +1 -1
  288. package/dist/types/src/base/ui/initialize_block.d.ts.map +1 -1
  289. package/dist/types/src/base/ui/input.d.ts +12 -46
  290. package/dist/types/src/base/ui/input.d.ts.map +1 -1
  291. package/dist/types/src/base/ui/input_synced.d.ts.map +1 -1
  292. package/dist/types/src/base/ui/label.d.ts.map +1 -1
  293. package/dist/types/src/base/ui/link.d.ts +1 -5
  294. package/dist/types/src/base/ui/link.d.ts.map +1 -1
  295. package/dist/types/src/base/ui/loader.d.ts +3 -20
  296. package/dist/types/src/base/ui/loader.d.ts.map +1 -1
  297. package/dist/types/src/base/ui/modal.d.ts +1 -14
  298. package/dist/types/src/base/ui/modal.d.ts.map +1 -1
  299. package/dist/types/src/base/ui/model_picker_select.d.ts.map +1 -1
  300. package/dist/types/src/base/ui/popover.d.ts +1 -17
  301. package/dist/types/src/base/ui/popover.d.ts.map +1 -1
  302. package/dist/types/src/base/ui/progress_bar.d.ts +1 -24
  303. package/dist/types/src/base/ui/progress_bar.d.ts.map +1 -1
  304. package/dist/types/src/base/ui/record_card.d.ts +1 -23
  305. package/dist/types/src/base/ui/record_card.d.ts.map +1 -1
  306. package/dist/types/src/base/ui/record_card_list.d.ts +1 -18
  307. package/dist/types/src/base/ui/record_card_list.d.ts.map +1 -1
  308. package/dist/types/src/base/ui/select.d.ts +0 -44
  309. package/dist/types/src/base/ui/select.d.ts.map +1 -1
  310. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts +0 -2
  311. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts.map +1 -1
  312. package/dist/types/src/base/ui/select_buttons.d.ts +0 -22
  313. package/dist/types/src/base/ui/select_buttons.d.ts.map +1 -1
  314. package/dist/types/src/base/ui/select_buttons_synced.d.ts.map +1 -1
  315. package/dist/types/src/base/ui/select_synced.d.ts.map +1 -1
  316. package/dist/types/src/base/ui/switch.d.ts +0 -22
  317. package/dist/types/src/base/ui/switch.d.ts.map +1 -1
  318. package/dist/types/src/base/ui/switch_synced.d.ts.map +1 -1
  319. package/dist/types/src/base/ui/synced.d.ts +2 -8
  320. package/dist/types/src/base/ui/synced.d.ts.map +1 -1
  321. package/dist/types/src/base/ui/system/all_styles_set.d.ts +0 -3
  322. package/dist/types/src/base/ui/system/all_styles_set.d.ts.map +1 -1
  323. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts +0 -1
  324. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts.map +1 -1
  325. package/dist/types/src/base/ui/system/appearance/background_color.d.ts +0 -1
  326. package/dist/types/src/base/ui/system/appearance/background_color.d.ts.map +1 -1
  327. package/dist/types/src/base/ui/system/appearance/border.d.ts +0 -1
  328. package/dist/types/src/base/ui/system/appearance/border.d.ts.map +1 -1
  329. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts +0 -1
  330. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts.map +1 -1
  331. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts +0 -1
  332. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts.map +1 -1
  333. package/dist/types/src/base/ui/system/appearance/opacity.d.ts +0 -1
  334. package/dist/types/src/base/ui/system/appearance/opacity.d.ts.map +1 -1
  335. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts +0 -1
  336. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts.map +1 -1
  337. package/dist/types/src/base/ui/system/dimensions/height.d.ts +0 -1
  338. package/dist/types/src/base/ui/system/dimensions/height.d.ts.map +1 -1
  339. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts +0 -1
  340. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts.map +1 -1
  341. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts +0 -1
  342. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts.map +1 -1
  343. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts +0 -1
  344. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts.map +1 -1
  345. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts +0 -1
  346. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts.map +1 -1
  347. package/dist/types/src/base/ui/system/dimensions/width.d.ts +0 -1
  348. package/dist/types/src/base/ui/system/dimensions/width.d.ts.map +1 -1
  349. package/dist/types/src/base/ui/system/display.d.ts +0 -1
  350. package/dist/types/src/base/ui/system/display.d.ts.map +1 -1
  351. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts +0 -1
  352. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts.map +1 -1
  353. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts +0 -1
  354. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts.map +1 -1
  355. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts +0 -1
  356. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts.map +1 -1
  357. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts +0 -1
  358. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts.map +1 -1
  359. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts +0 -1
  360. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts.map +1 -1
  361. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts +0 -1
  362. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts.map +1 -1
  363. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts +0 -1
  364. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts.map +1 -1
  365. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts +0 -1
  366. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts.map +1 -1
  367. package/dist/types/src/base/ui/system/flex_item/flex.d.ts +0 -1
  368. package/dist/types/src/base/ui/system/flex_item/flex.d.ts.map +1 -1
  369. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts +0 -1
  370. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts.map +1 -1
  371. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts +0 -1
  372. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts.map +1 -1
  373. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts +0 -1
  374. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts.map +1 -1
  375. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts +0 -1
  376. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts.map +1 -1
  377. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts +0 -1
  378. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts.map +1 -1
  379. package/dist/types/src/base/ui/system/flex_item/order.d.ts +0 -1
  380. package/dist/types/src/base/ui/system/flex_item/order.d.ts.map +1 -1
  381. package/dist/types/src/base/ui/system/index.d.ts +52 -52
  382. package/dist/types/src/base/ui/system/index.d.ts.map +1 -1
  383. package/dist/types/src/base/ui/system/overflow.d.ts +0 -1
  384. package/dist/types/src/base/ui/system/overflow.d.ts.map +1 -1
  385. package/dist/types/src/base/ui/system/position/bottom.d.ts +0 -1
  386. package/dist/types/src/base/ui/system/position/bottom.d.ts.map +1 -1
  387. package/dist/types/src/base/ui/system/position/left.d.ts +0 -1
  388. package/dist/types/src/base/ui/system/position/left.d.ts.map +1 -1
  389. package/dist/types/src/base/ui/system/position/position.d.ts +0 -1
  390. package/dist/types/src/base/ui/system/position/position.d.ts.map +1 -1
  391. package/dist/types/src/base/ui/system/position/position_set.d.ts +0 -1
  392. package/dist/types/src/base/ui/system/position/position_set.d.ts.map +1 -1
  393. package/dist/types/src/base/ui/system/position/right.d.ts +0 -1
  394. package/dist/types/src/base/ui/system/position/right.d.ts.map +1 -1
  395. package/dist/types/src/base/ui/system/position/top.d.ts +0 -1
  396. package/dist/types/src/base/ui/system/position/top.d.ts.map +1 -1
  397. package/dist/types/src/base/ui/system/position/z_index.d.ts +0 -1
  398. package/dist/types/src/base/ui/system/position/z_index.d.ts.map +1 -1
  399. package/dist/types/src/base/ui/system/spacing/margin.d.ts +0 -1
  400. package/dist/types/src/base/ui/system/spacing/margin.d.ts.map +1 -1
  401. package/dist/types/src/base/ui/system/spacing/padding.d.ts +0 -1
  402. package/dist/types/src/base/ui/system/spacing/padding.d.ts.map +1 -1
  403. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts +0 -1
  404. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts.map +1 -1
  405. package/dist/types/src/base/ui/system/typography/font_family.d.ts +0 -1
  406. package/dist/types/src/base/ui/system/typography/font_family.d.ts.map +1 -1
  407. package/dist/types/src/base/ui/system/typography/font_size.d.ts +0 -1
  408. package/dist/types/src/base/ui/system/typography/font_size.d.ts.map +1 -1
  409. package/dist/types/src/base/ui/system/typography/font_style.d.ts +0 -1
  410. package/dist/types/src/base/ui/system/typography/font_style.d.ts.map +1 -1
  411. package/dist/types/src/base/ui/system/typography/font_weight.d.ts +0 -1
  412. package/dist/types/src/base/ui/system/typography/font_weight.d.ts.map +1 -1
  413. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts +0 -1
  414. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts.map +1 -1
  415. package/dist/types/src/base/ui/system/typography/line_height.d.ts +0 -1
  416. package/dist/types/src/base/ui/system/typography/line_height.d.ts.map +1 -1
  417. package/dist/types/src/base/ui/system/typography/text_align.d.ts +0 -1
  418. package/dist/types/src/base/ui/system/typography/text_align.d.ts.map +1 -1
  419. package/dist/types/src/base/ui/system/typography/text_color.d.ts +0 -1
  420. package/dist/types/src/base/ui/system/typography/text_color.d.ts.map +1 -1
  421. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts +0 -1
  422. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts.map +1 -1
  423. package/dist/types/src/base/ui/system/typography/text_transform.d.ts +0 -1
  424. package/dist/types/src/base/ui/system/typography/text_transform.d.ts.map +1 -1
  425. package/dist/types/src/base/ui/system/typography/typography_set.d.ts +0 -1
  426. package/dist/types/src/base/ui/system/typography/typography_set.d.ts.map +1 -1
  427. package/dist/types/src/base/ui/table_picker.d.ts +0 -21
  428. package/dist/types/src/base/ui/table_picker.d.ts.map +1 -1
  429. package/dist/types/src/base/ui/table_picker_synced.d.ts.map +1 -1
  430. package/dist/types/src/base/ui/text.d.ts +0 -3
  431. package/dist/types/src/base/ui/text.d.ts.map +1 -1
  432. package/dist/types/src/base/ui/text_button.d.ts +1 -5
  433. package/dist/types/src/base/ui/text_button.d.ts.map +1 -1
  434. package/dist/types/src/base/ui/theme/default_theme/index.d.ts +1 -1
  435. package/dist/types/src/base/ui/theme/theme_context.d.ts +1 -1
  436. package/dist/types/src/base/ui/theme/use_theme.d.ts +1 -1
  437. package/dist/types/src/base/ui/tooltip.d.ts +0 -16
  438. package/dist/types/src/base/ui/tooltip.d.ts.map +1 -1
  439. package/dist/types/src/base/ui/types/aria_props.d.ts.map +1 -1
  440. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts +0 -4
  441. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts.map +1 -1
  442. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts +0 -7
  443. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts.map +1 -1
  444. package/dist/types/src/base/ui/ui.d.ts +1 -0
  445. package/dist/types/src/base/ui/ui.d.ts.map +1 -1
  446. package/dist/types/src/base/ui/view_picker.d.ts +0 -23
  447. package/dist/types/src/base/ui/view_picker.d.ts.map +1 -1
  448. package/dist/types/src/base/ui/view_picker_synced.d.ts.map +1 -1
  449. package/dist/types/src/base/ui/viewport_constraint.d.ts +1 -14
  450. package/dist/types/src/base/ui/viewport_constraint.d.ts.map +1 -1
  451. package/dist/types/src/base/unstable_testing_utils.d.ts +1 -1
  452. package/dist/types/src/base/unstable_testing_utils.d.ts.map +1 -1
  453. package/dist/types/src/interface/assert_run_context.d.ts +2 -0
  454. package/dist/types/src/interface/assert_run_context.d.ts.map +1 -0
  455. package/dist/types/src/interface/index.d.ts +1 -6
  456. package/dist/types/src/interface/index.d.ts.map +1 -1
  457. package/dist/types/src/interface/models/models.d.ts +1 -0
  458. package/dist/types/src/interface/models/models.d.ts.map +1 -1
  459. package/dist/types/src/interface/models/mutations.d.ts.map +1 -1
  460. package/dist/types/src/interface/ui/initialize_block.d.ts.map +1 -1
  461. package/dist/types/src/interface/ui/ui.d.ts +1 -0
  462. package/dist/types/src/interface/ui/ui.d.ts.map +1 -1
  463. package/dist/types/src/interface/ui/use_custom_properties.d.ts +1 -1
  464. package/dist/types/src/shared/models/mutations_core.d.ts.map +1 -1
  465. package/dist/types/src/shared/private_utils.d.ts +0 -9
  466. package/dist/types/src/shared/private_utils.d.ts.map +1 -1
  467. package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts +0 -2
  468. package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts.map +1 -1
  469. package/dist/types/src/shared/ui/loader.d.ts.map +1 -1
  470. package/dist/types/src/shared/ui/with_hooks.d.ts +2 -2
  471. package/dist/types/src/shared/ui/with_hooks.d.ts.map +1 -1
  472. package/dist/types/src/testing/{abstract_mock_airtable_interface.d.ts → base/abstract_mock_airtable_interface.d.ts} +13 -13
  473. package/dist/types/src/testing/base/abstract_mock_airtable_interface.d.ts.map +1 -0
  474. package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts +51 -0
  475. package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts.map +1 -0
  476. package/models.js +1 -1
  477. package/package.json +24 -23
  478. package/types.js +1 -1
  479. package/dist/cjs/base/models/abstract_model_with_async_data.js +0 -273
  480. package/dist/cjs/base/models/base.js +0 -306
  481. package/dist/cjs/base/models/create_aggregators.js +0 -115
  482. package/dist/cjs/base/models/cursor.js +0 -393
  483. package/dist/cjs/base/models/field.js +0 -427
  484. package/dist/cjs/base/models/grouped_record_query_result.js +0 -399
  485. package/dist/cjs/base/models/linked_records_query_result.js +0 -728
  486. package/dist/cjs/base/models/mutations.js +0 -338
  487. package/dist/cjs/base/models/object_pool.js +0 -184
  488. package/dist/cjs/base/models/record.js +0 -304
  489. package/dist/cjs/base/models/record_query_result.js +0 -741
  490. package/dist/cjs/base/models/record_store.js +0 -825
  491. package/dist/cjs/base/models/session.js +0 -182
  492. package/dist/cjs/base/models/table.js +0 -668
  493. package/dist/cjs/base/models/table_or_view_query_result.js +0 -1013
  494. package/dist/cjs/base/models/view.js +0 -431
  495. package/dist/cjs/base/models/view_data_store.js +0 -403
  496. package/dist/cjs/base/models/view_metadata_query_result.js +0 -224
  497. package/dist/cjs/base/perform_record_action.js +0 -257
  498. package/dist/cjs/base/sdk.js +0 -233
  499. package/dist/cjs/base/settings_button.js +0 -138
  500. package/dist/cjs/base/ui/baymax_utils.js +0 -133
  501. package/dist/cjs/base/ui/block_wrapper.js +0 -143
  502. package/dist/cjs/base/ui/box.js +0 -110
  503. package/dist/cjs/base/ui/button.js +0 -182
  504. package/dist/cjs/base/ui/cell_renderer.js +0 -255
  505. package/dist/cjs/base/ui/choice_token.js +0 -110
  506. package/dist/cjs/base/ui/collaborator_token.js +0 -145
  507. package/dist/cjs/base/ui/color_palette.js +0 -239
  508. package/dist/cjs/base/ui/color_palette_synced.js +0 -98
  509. package/dist/cjs/base/ui/confirmation_dialog.js +0 -153
  510. package/dist/cjs/base/ui/dialog.js +0 -142
  511. package/dist/cjs/base/ui/dialog_close_button.js +0 -152
  512. package/dist/cjs/base/ui/expand_record_picker_async.js +0 -100
  513. package/dist/cjs/base/ui/field_icon.js +0 -62
  514. package/dist/cjs/base/ui/field_picker.js +0 -143
  515. package/dist/cjs/base/ui/field_picker_synced.js +0 -88
  516. package/dist/cjs/base/ui/form_field.js +0 -137
  517. package/dist/cjs/base/ui/geometry/point.js +0 -21
  518. package/dist/cjs/base/ui/geometry/rect.js +0 -67
  519. package/dist/cjs/base/ui/geometry/size.js +0 -21
  520. package/dist/cjs/base/ui/global_alert.js +0 -92
  521. package/dist/cjs/base/ui/heading.js +0 -181
  522. package/dist/cjs/base/ui/icon.js +0 -129
  523. package/dist/cjs/base/ui/input.js +0 -200
  524. package/dist/cjs/base/ui/input_synced.js +0 -89
  525. package/dist/cjs/base/ui/label.js +0 -105
  526. package/dist/cjs/base/ui/link.js +0 -229
  527. package/dist/cjs/base/ui/loader.js +0 -82
  528. package/dist/cjs/base/ui/modal.js +0 -184
  529. package/dist/cjs/base/ui/model_picker_select.js +0 -83
  530. package/dist/cjs/base/ui/popover.js +0 -407
  531. package/dist/cjs/base/ui/progress_bar.js +0 -128
  532. package/dist/cjs/base/ui/record_card.js +0 -653
  533. package/dist/cjs/base/ui/record_card_list.js +0 -377
  534. package/dist/cjs/base/ui/select.js +0 -247
  535. package/dist/cjs/base/ui/select_and_select_buttons_helpers.js +0 -87
  536. package/dist/cjs/base/ui/select_buttons.js +0 -192
  537. package/dist/cjs/base/ui/select_buttons_synced.js +0 -84
  538. package/dist/cjs/base/ui/select_synced.js +0 -87
  539. package/dist/cjs/base/ui/switch.js +0 -196
  540. package/dist/cjs/base/ui/switch_synced.js +0 -75
  541. package/dist/cjs/base/ui/synced.js +0 -70
  542. package/dist/cjs/base/ui/system/appearance/appearance_set.js +0 -30
  543. package/dist/cjs/base/ui/system/appearance/background_color.js +0 -21
  544. package/dist/cjs/base/ui/system/appearance/border_radius.js +0 -21
  545. package/dist/cjs/base/ui/system/appearance/box_shadow.js +0 -21
  546. package/dist/cjs/base/ui/system/appearance/opacity.js +0 -21
  547. package/dist/cjs/base/ui/system/dimensions/dimensions_set.js +0 -31
  548. package/dist/cjs/base/ui/system/dimensions/height.js +0 -21
  549. package/dist/cjs/base/ui/system/dimensions/max_height.js +0 -21
  550. package/dist/cjs/base/ui/system/dimensions/max_width.js +0 -21
  551. package/dist/cjs/base/ui/system/dimensions/min_height.js +0 -21
  552. package/dist/cjs/base/ui/system/dimensions/min_width.js +0 -21
  553. package/dist/cjs/base/ui/system/dimensions/width.js +0 -21
  554. package/dist/cjs/base/ui/system/display.js +0 -22
  555. package/dist/cjs/base/ui/system/flex_container/align_content.js +0 -18
  556. package/dist/cjs/base/ui/system/flex_container/align_items.js +0 -18
  557. package/dist/cjs/base/ui/system/flex_container/flex_container_set.js +0 -31
  558. package/dist/cjs/base/ui/system/flex_container/flex_direction.js +0 -18
  559. package/dist/cjs/base/ui/system/flex_container/flex_wrap.js +0 -18
  560. package/dist/cjs/base/ui/system/flex_container/justify_content.js +0 -18
  561. package/dist/cjs/base/ui/system/flex_container/justify_items.js +0 -19
  562. package/dist/cjs/base/ui/system/flex_item/align_self.js +0 -18
  563. package/dist/cjs/base/ui/system/flex_item/flex.js +0 -18
  564. package/dist/cjs/base/ui/system/flex_item/flex_basis.js +0 -18
  565. package/dist/cjs/base/ui/system/flex_item/flex_grow.js +0 -18
  566. package/dist/cjs/base/ui/system/flex_item/flex_item_set.js +0 -32
  567. package/dist/cjs/base/ui/system/flex_item/flex_shrink.js +0 -18
  568. package/dist/cjs/base/ui/system/flex_item/justify_self.js +0 -19
  569. package/dist/cjs/base/ui/system/flex_item/order.js +0 -18
  570. package/dist/cjs/base/ui/system/overflow.js +0 -24
  571. package/dist/cjs/base/ui/system/position/position.js +0 -18
  572. package/dist/cjs/base/ui/system/position/position_set.js +0 -31
  573. package/dist/cjs/base/ui/system/position/z_index.js +0 -21
  574. package/dist/cjs/base/ui/system/spacing/spacing_set.js +0 -27
  575. package/dist/cjs/base/ui/system/typography/font_family.js +0 -21
  576. package/dist/cjs/base/ui/system/typography/font_size.js +0 -21
  577. package/dist/cjs/base/ui/system/typography/font_style.js +0 -18
  578. package/dist/cjs/base/ui/system/typography/font_weight.js +0 -21
  579. package/dist/cjs/base/ui/system/typography/letter_spacing.js +0 -21
  580. package/dist/cjs/base/ui/system/typography/line_height.js +0 -18
  581. package/dist/cjs/base/ui/system/typography/text_align.js +0 -18
  582. package/dist/cjs/base/ui/system/typography/text_color.js +0 -21
  583. package/dist/cjs/base/ui/system/typography/text_decoration.js +0 -18
  584. package/dist/cjs/base/ui/system/typography/text_transform.js +0 -18
  585. package/dist/cjs/base/ui/system/typography/typography_set.js +0 -35
  586. package/dist/cjs/base/ui/system/utils/create_responsive_prop_type.js +0 -19
  587. package/dist/cjs/base/ui/system/utils/create_style_prop_types.js +0 -24
  588. package/dist/cjs/base/ui/system/utils/enum_prop_type_utils.js +0 -35
  589. package/dist/cjs/base/ui/system/utils/get_style_props_for_responsive_prop.js +0 -113
  590. package/dist/cjs/base/ui/table_picker.js +0 -95
  591. package/dist/cjs/base/ui/table_picker_synced.js +0 -84
  592. package/dist/cjs/base/ui/text.js +0 -150
  593. package/dist/cjs/base/ui/text_button.js +0 -228
  594. package/dist/cjs/base/ui/theme/default_theme/control_sizes.js +0 -96
  595. package/dist/cjs/base/ui/theme/default_theme/select_variants.js +0 -59
  596. package/dist/cjs/base/ui/theme/default_theme/switch_variants.js +0 -91
  597. package/dist/cjs/base/ui/tooltip.js +0 -215
  598. package/dist/cjs/base/ui/types/aria_props.js +0 -23
  599. package/dist/cjs/base/ui/types/data_attributes_prop.js +0 -18
  600. package/dist/cjs/base/ui/types/tooltip_anchor_props.js +0 -17
  601. package/dist/cjs/base/ui/use_styled_system.js +0 -32
  602. package/dist/cjs/base/ui/view_picker.js +0 -133
  603. package/dist/cjs/base/ui/view_picker_synced.js +0 -88
  604. package/dist/cjs/base/ui/viewport_constraint.js +0 -176
  605. package/dist/cjs/base/ui/with_styled_system.js +0 -165
  606. package/dist/cjs/base/undo_redo.js +0 -48
  607. package/dist/cjs/base/viewport.js +0 -397
  608. package/dist/cjs/injected/airtable_interface.js +0 -22
  609. package/dist/cjs/interface/index.js +0 -36
  610. package/dist/cjs/interface/models/base.js +0 -54
  611. package/dist/cjs/interface/models/field.js +0 -42
  612. package/dist/cjs/interface/models/mutations.js +0 -79
  613. package/dist/cjs/interface/models/record.js +0 -71
  614. package/dist/cjs/interface/models/record_store.js +0 -83
  615. package/dist/cjs/interface/models/session.js +0 -42
  616. package/dist/cjs/interface/models/table.js +0 -126
  617. package/dist/cjs/interface/sdk.js +0 -104
  618. package/dist/cjs/interface/types/mutations.js +0 -24
  619. package/dist/cjs/interface/ui/block_wrapper.js +0 -61
  620. package/dist/cjs/shared/global_config.js +0 -511
  621. package/dist/cjs/shared/models/abstract_model.js +0 -119
  622. package/dist/cjs/shared/models/base_core.js +0 -602
  623. package/dist/cjs/shared/models/field_core.js +0 -331
  624. package/dist/cjs/shared/models/mutations_core.js +0 -439
  625. package/dist/cjs/shared/models/record_core.js +0 -272
  626. package/dist/cjs/shared/models/record_store_core.js +0 -213
  627. package/dist/cjs/shared/models/session_core.js +0 -214
  628. package/dist/cjs/shared/models/table_core.js +0 -1561
  629. package/dist/cjs/shared/sdk_core.js +0 -115
  630. package/dist/cjs/shared/types/mutation_constants.js +0 -11
  631. package/dist/cjs/shared/ui/loader.js +0 -68
  632. package/dist/cjs/shared/watchable.js +0 -216
  633. package/dist/cjs/stats/block_stats.js +0 -96
  634. package/dist/cjs/testing/abstract_mock_airtable_interface.js +0 -277
  635. package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts +0 -2
  636. package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts.map +0 -1
  637. package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts +0 -4
  638. package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts.map +0 -1
  639. package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts +0 -21
  640. package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts.map +0 -1
  641. package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +0 -1
  642. /package/dist/{cjs → esm}/base/types/aggregators.js +0 -0
  643. /package/dist/{cjs → esm}/base/types/backend_fetch_types.js +0 -0
  644. /package/dist/{cjs → esm}/base/types/base.js +0 -0
  645. /package/dist/{cjs → esm}/base/types/cursor.js +0 -0
  646. /package/dist/{cjs → esm}/base/types/field.js +0 -0
  647. /package/dist/{cjs → esm}/base/types/record.js +0 -0
  648. /package/dist/{cjs → esm}/base/types/record_action_data.js +0 -0
  649. /package/dist/{cjs → esm}/base/types/table.js +0 -0
  650. /package/dist/{cjs → esm}/base/types/viewport.js +0 -0
  651. /package/dist/{cjs → esm}/base/ui/system/utils/csstype.js +0 -0
  652. /package/dist/{cjs → esm}/base/ui/system/utils/types.js +0 -0
  653. /package/dist/{cjs/interface/types/base.js → esm/base/ui/types/aria_props.js} +0 -0
  654. /package/dist/{cjs/interface/types/field.js → esm/base/ui/types/data_attributes_prop.js} +0 -0
  655. /package/dist/{cjs/interface/types/record.js → esm/base/ui/types/tooltip_anchor_props.js} +0 -0
  656. /package/dist/{cjs/interface/types/table.js → esm/interface/types/base.js} +0 -0
  657. /package/dist/{cjs/sdk_mode.js → esm/interface/types/field.js} +0 -0
  658. /package/dist/{cjs/shared → esm/interface}/types/record.js +0 -0
  659. /package/dist/{cjs/shared/types/airtable_interface_core.js → esm/interface/types/table.js} +0 -0
  660. /package/dist/{cjs → esm}/interface/ui/expand_record.js +0 -0
  661. /package/dist/{cjs/shared/types/attachment.js → esm/sdk_mode.js} +0 -0
  662. /package/dist/{cjs/shared/types/base_core.js → esm/shared/types/airtable_interface_core.js} +0 -0
  663. /package/dist/{cjs/shared/types/collaborator.js → esm/shared/types/attachment.js} +0 -0
  664. /package/dist/{cjs/shared/types/global_config.js → esm/shared/types/base_core.js} +0 -0
  665. /package/dist/{cjs/shared/types/hyper_ids.js → esm/shared/types/collaborator.js} +0 -0
  666. /package/dist/{cjs/shared/types/stat.js → esm/shared/types/global_config.js} +0 -0
  667. /package/dist/{cjs/shared/types/table_core.js → esm/shared/types/hyper_ids.js} +0 -0
@@ -0,0 +1,475 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.WatchableRecordStoreKeys = void 0;
7
+ var _private_utils = require("../../shared/private_utils");
8
+ var _error_utils = require("../../shared/error_utils");
9
+ var _record_store_core = _interopRequireWildcard(require("../../shared/models/record_store_core"));
10
+ var _abstract_model_with_async_data = _interopRequireDefault(require("./abstract_model_with_async_data"));
11
+ var _record = _interopRequireDefault(require("./record"));
12
+ var _view_data_store = _interopRequireDefault(require("./view_data_store"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ const WatchableRecordStoreKeys = exports.WatchableRecordStoreKeys = Object.freeze({
17
+ ..._record_store_core.WatchableRecordStoreKeysCore
18
+ });
19
+
20
+ /**
21
+ * The string case is to accommodate prefix keys
22
+ *
23
+ * @internal
24
+ */
25
+
26
+ /**
27
+ * One RecordStore exists per table, and contains all the record data associated with that table.
28
+ * Table itself is for schema information only, so isn't the appropriate place for this data.
29
+ *
30
+ * @internal
31
+ */
32
+ class RecordStore extends _record_store_core.default {
33
+ static _className = 'RecordStore';
34
+ static _isWatchableKey(key) {
35
+ return (0, _private_utils.isEnumValue)(WatchableRecordStoreKeys, key) || key.startsWith(_record_store_core.WatchableCellValuesInFieldKeyPrefix);
36
+ }
37
+ _viewDataStoresByViewId = {};
38
+ constructor(sdk, tableId) {
39
+ super(sdk, tableId);
40
+ const onChange = this._onChange.bind(this);
41
+ const clearRecordModels = () => {
42
+ this._recordModelsById = {};
43
+ };
44
+ this._loader = new RecordStoreAsyncLoader(sdk, tableId, onChange, clearRecordModels);
45
+ }
46
+ _constructRecord(recordId, parentTable) {
47
+ return new _record.default(this._sdk, this, parentTable, recordId);
48
+ }
49
+ get _dataOrNullIfDeleted() {
50
+ return this._loader._dataOrNullIfDeleted;
51
+ }
52
+ getViewDataStore(viewId) {
53
+ if (this._viewDataStoresByViewId[viewId]) {
54
+ return this._viewDataStoresByViewId[viewId];
55
+ }
56
+ (0, _error_utils.invariant)(this._data.viewsById[viewId], 'view must exist');
57
+ const viewDataStore = new _view_data_store.default(this._sdk, this, viewId);
58
+ this._viewDataStoresByViewId[viewId] = viewDataStore;
59
+ return viewDataStore;
60
+ }
61
+ watch(keys, callback, context) {
62
+ const validKeys = super.watch(keys, callback, context);
63
+ const fieldIdsToLoad = this._loader._getFieldIdsToLoadFromWatchableKeys(validKeys);
64
+ if (fieldIdsToLoad.length > 0) {
65
+ (0, _private_utils.fireAndForgetPromise)(async () => {
66
+ await this._loader.loadCellValuesInFieldIdsAsync(fieldIdsToLoad, this._onChange.bind(this));
67
+ });
68
+ }
69
+ return validKeys;
70
+ }
71
+ unwatch(keys, callback, context) {
72
+ const validKeys = super.unwatch(keys, callback, context);
73
+ const fieldIdsToUnload = this._loader._getFieldIdsToLoadFromWatchableKeys(validKeys);
74
+ if (fieldIdsToUnload.length > 0) {
75
+ this._loader.unloadCellValuesInFieldIds(fieldIdsToUnload);
76
+ }
77
+ return validKeys;
78
+ }
79
+
80
+ /**
81
+ * The record IDs in this table. The order is arbitrary since records are
82
+ * only ordered in the context of a specific view.
83
+ */
84
+ get recordIds() {
85
+ const recordsById = this._data.recordsById;
86
+ (0, _error_utils.invariant)(recordsById, 'Record metadata is not loaded');
87
+ return Object.keys(recordsById);
88
+ }
89
+ __onDataDeletion() {
90
+ // also need to call unloadCellValuesInFieldIds because otherwise
91
+ // on the hyperbase side, the old record store would still be subscribed
92
+ // to the cell values and it will refuse a request for new subscription
93
+ for (const fieldId of Object.keys(this._loader._cellValuesRetainCountByFieldId)) {
94
+ while (this._loader._cellValuesRetainCountByFieldId[fieldId] && this._loader._cellValuesRetainCountByFieldId[fieldId] > 0) {
95
+ this._loader.unloadCellValuesInFieldIds([fieldId]);
96
+ }
97
+ }
98
+ this._loader._forceUnload();
99
+
100
+ // similarly unsubscribe from the view data.
101
+ // this comes after _forceUnload to avoid over releasing the table data.
102
+ for (const viewDataStore of (0, _private_utils.values)(this._viewDataStoresByViewId)) {
103
+ viewDataStore.__onDataDeletion();
104
+ }
105
+ }
106
+
107
+ // #region async data loading
108
+ // wrapper methods over RecordStoreAsyncLoader
109
+ get isDeleted() {
110
+ return this._loader.isDeleted || super.isDeleted;
111
+ }
112
+ get isDataLoaded() {
113
+ return !this.isDeleted && this._loader.isDataLoaded;
114
+ }
115
+ async loadDataAsync() {
116
+ return await this._loader.loadDataAsync();
117
+ }
118
+ unloadData() {
119
+ return this._loader.unloadData();
120
+ }
121
+ get isRecordMetadataLoaded() {
122
+ return this._loader.isRecordMetadataLoaded;
123
+ }
124
+ async loadRecordMetadataAsync() {
125
+ return await this._loader.loadRecordMetadataAsync(this._onChange.bind(this));
126
+ }
127
+ unloadRecordMetadata() {
128
+ return this._loader.unloadRecordMetadata();
129
+ }
130
+ areCellValuesLoadedForFieldId(fieldId) {
131
+ return this._loader.areCellValuesLoadedForFieldId(fieldId);
132
+ }
133
+ async loadCellValuesInFieldIdsAsync(fieldIds) {
134
+ return await this._loader.loadCellValuesInFieldIdsAsync(fieldIds, this._onChange.bind(this));
135
+ }
136
+ unloadCellValuesInFieldIds(fieldIds) {
137
+ return this._loader.unloadCellValuesInFieldIds(fieldIds);
138
+ }
139
+ // #endregion
140
+
141
+ triggerOnChangeForDirtyPaths(dirtyPaths) {
142
+ if (this.isRecordMetadataLoaded && dirtyPaths.recordsById) {
143
+ super.triggerOnChangeForDirtyPaths(dirtyPaths);
144
+ }
145
+ if (dirtyPaths.viewOrder) {
146
+ // clean up deleted views
147
+ for (const [viewId, viewDataStore] of (0, _private_utils.entries)(this._viewDataStoresByViewId)) {
148
+ if (viewDataStore.isDeleted) {
149
+ viewDataStore.__onDataDeletion();
150
+ delete this._viewDataStoresByViewId[viewId];
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+
157
+ /** @internal */
158
+ class RecordStoreAsyncLoader extends _abstract_model_with_async_data.default {
159
+ static _shouldLoadDataForKey(key) {
160
+ // "Data" means *all* cell values in the table. If only watching records/recordIds,
161
+ // we'll just load record metadata (id, createdTime, commentCount).
162
+ // If only watching specific fields, we'll just load cell values in those
163
+ // fields. Both of those scenarios are handled manually by this class,
164
+ // instead of relying on AbstractModelWithAsyncData.
165
+ return key === WatchableRecordStoreKeys.cellValues;
166
+ }
167
+ // There is a lot of duplication here and in AbstractModelWithAsyncData.
168
+ // Alternatively, phase out AbstractModelWithAsyncData as a superclass
169
+ // and instead create a helper class for managing each part of the data
170
+ // tree that is loaded.
171
+ _areCellValuesLoadedByFieldId = {};
172
+ _pendingCellValuesLoadPromiseByFieldId = {};
173
+ _cellValuesRetainCountByFieldId = {};
174
+ _timeoutForRemovingFieldIds = null;
175
+ constructor(sdk, tableId, onChange, clearRecordModels) {
176
+ super(sdk, `${tableId}-RecordStore`);
177
+ this._airtableInterface = sdk.__airtableInterface;
178
+ this.tableId = tableId;
179
+ this._onChange = onChange;
180
+ this._clearRecordModels = clearRecordModels;
181
+ // A bit of a hack, but we use the primary field ID to load record
182
+ // metadata (see _getFieldIdForCausingRecordMetadataToLoad). We copy the
183
+ // ID here instead of calling this.primaryField.id since that would crash
184
+ // when the table is getting unloaded after being deleted.
185
+ this._primaryFieldId = this._data.primaryFieldId;
186
+ }
187
+ _onChangeIsDataLoaded() {
188
+ // noop
189
+ }
190
+
191
+ /**
192
+ * Record metadata means record IDs, createdTime, and commentCount are loaded.
193
+ * Record metadata must be loaded before creating, deleting, or updating records.
194
+ */
195
+ get isRecordMetadataLoaded() {
196
+ return !!this._data.recordsById;
197
+ }
198
+ async loadRecordMetadataAsync(onChange) {
199
+ return await this.loadCellValuesInFieldIdsAsync([this._getFieldIdForCausingRecordMetadataToLoad()], onChange);
200
+ }
201
+ unloadRecordMetadata() {
202
+ this.unloadCellValuesInFieldIds([this._getFieldIdForCausingRecordMetadataToLoad()]);
203
+ }
204
+ _getFieldIdsToLoadFromWatchableKeys(keys) {
205
+ const fieldIdsToLoad = [];
206
+ for (const key of keys) {
207
+ if (key.startsWith(_record_store_core.WatchableCellValuesInFieldKeyPrefix)) {
208
+ const fieldId = key.substring(_record_store_core.WatchableCellValuesInFieldKeyPrefix.length);
209
+ fieldIdsToLoad.push(fieldId);
210
+ } else if (key === WatchableRecordStoreKeys.records || key === WatchableRecordStoreKeys.recordIds) {
211
+ fieldIdsToLoad.push(this._getFieldIdForCausingRecordMetadataToLoad());
212
+ }
213
+ }
214
+ return fieldIdsToLoad;
215
+ }
216
+ _getFieldIdForCausingRecordMetadataToLoad() {
217
+ // As a shortcut, we'll load the primary field cell values to
218
+ // cause record metadata (id, createdTime, commentCount) to be loaded
219
+ // and subscribed to. In the future, we could add an explicit model
220
+ // bridge to fetch and subscribe to row metadata.
221
+ return this._primaryFieldId;
222
+ }
223
+ areCellValuesLoadedForFieldId(fieldId) {
224
+ return this.isDataLoaded || this._areCellValuesLoadedByFieldId[fieldId] || false;
225
+ }
226
+ async loadCellValuesInFieldIdsAsync(fieldIds, onChange) {
227
+ this._assertNotForceUnloaded();
228
+ const fieldIdsWhichAreNotAlreadyLoadedOrLoading = [];
229
+ const pendingLoadPromises = [];
230
+ for (const fieldId of fieldIds) {
231
+ if (this._cellValuesRetainCountByFieldId[fieldId] !== undefined) {
232
+ this._cellValuesRetainCountByFieldId[fieldId]++;
233
+ } else {
234
+ this._cellValuesRetainCountByFieldId[fieldId] = 1;
235
+ }
236
+
237
+ // NOTE: we don't use this.areCellValuesLoadedForFieldId() here because
238
+ // that will return true if the cell values are loaded as a result
239
+ // of the entire table being loaded. In that scenario, we still
240
+ // want to separately load the cell values for the field so there
241
+ // is a separate subscription. Otherwise, when the table data unloads,
242
+ // the field data would unload as well. This can be improved by just
243
+ // subscribing to the field data without fetching it, since the cell
244
+ // values are already in the block frame.
245
+ if (!this._areCellValuesLoadedByFieldId[fieldId]) {
246
+ const pendingLoadPromise = this._pendingCellValuesLoadPromiseByFieldId[fieldId];
247
+ if (pendingLoadPromise) {
248
+ pendingLoadPromises.push(pendingLoadPromise);
249
+ } else {
250
+ fieldIdsWhichAreNotAlreadyLoadedOrLoading.push(fieldId);
251
+ }
252
+ }
253
+ }
254
+ if (fieldIdsWhichAreNotAlreadyLoadedOrLoading.length > 0) {
255
+ // Could inline _loadCellValuesInFieldIdsAsync, but following the
256
+ // pattern from AbstractModelWithAsyncData where the public method
257
+ // is responsible for updating retain counts and the private method
258
+ // actually fetches data.
259
+ const loadFieldsWhichAreNotAlreadyLoadedOrLoadingPromise = this._loadCellValuesInFieldIdsAsync(fieldIdsWhichAreNotAlreadyLoadedOrLoading);
260
+ pendingLoadPromises.push(loadFieldsWhichAreNotAlreadyLoadedOrLoadingPromise);
261
+ for (const fieldId of fieldIdsWhichAreNotAlreadyLoadedOrLoading) {
262
+ this._pendingCellValuesLoadPromiseByFieldId[fieldId] = loadFieldsWhichAreNotAlreadyLoadedOrLoadingPromise;
263
+ }
264
+ // Doing `.then` instead of performing these actions directly in
265
+ // _loadCellValuesInFieldIdsAsync so this is similar to
266
+ // AbstractModelWithAsyncData. The idea is to refactor to avoid code
267
+ // duplication, so keeping them similar for now hopefully will make the
268
+ // refactor simpler.
269
+ loadFieldsWhichAreNotAlreadyLoadedOrLoadingPromise.then(changedKeys => {
270
+ for (const fieldId of fieldIdsWhichAreNotAlreadyLoadedOrLoading) {
271
+ this._areCellValuesLoadedByFieldId[fieldId] = true;
272
+ this._pendingCellValuesLoadPromiseByFieldId[fieldId] = undefined;
273
+ }
274
+ for (const key of changedKeys) {
275
+ onChange(key);
276
+ }
277
+ });
278
+ }
279
+ // Since we are incrementing fieldIds, it's necessary to restart any pending timeouts
280
+ // to unload data. This is because it's possible for a timeout to fire while a queryResult
281
+ // is actively unloading, and erroneously unload data. Data must be unloaded _after_ the queryResult.
282
+ this._restartTimeoutToUnloadFieldIdsIfTimeoutIsActive();
283
+ await Promise.all(pendingLoadPromises);
284
+ }
285
+ async _loadCellValuesInFieldIdsAsync(fieldIds) {
286
+ const {
287
+ recordsById: newRecordsById
288
+ } = await this._airtableInterface.fetchAndSubscribeToCellValuesInFieldsAsync(this.tableId, fieldIds);
289
+
290
+ // Merge with existing data.
291
+ if (!this._data.recordsById) {
292
+ this._data.recordsById = {};
293
+ }
294
+ const {
295
+ recordsById: existingRecordsById
296
+ } = this._data;
297
+ for (const [recordId, newRecordObj] of (0, _private_utils.entries)((0, _private_utils.cast)(newRecordsById))) {
298
+ if (!(0, _private_utils.has)(existingRecordsById, recordId)) {
299
+ existingRecordsById[recordId] = newRecordObj;
300
+ } else {
301
+ const existingRecordObj = existingRecordsById[recordId];
302
+
303
+ // Metadata (createdTime, commentCount) should generally be up to date,
304
+ // but can be out of date in the rare scenario where realtime
305
+ // data has not yet been delivered to the SDK, but is populated in hyperbase
306
+ // at the time this new fetch is executed.
307
+ // istanbul ignore next
308
+ if (existingRecordObj.commentCount !== newRecordObj.commentCount) {
309
+ const isCommentCountTypesSame = typeof existingRecordObj.commentCount !== typeof newRecordObj.commentCount;
310
+ (0, _error_utils.logErrorToSentry)('comment count out of sync - types are same: %s', {
311
+ isCommentCountTypesSame
312
+ });
313
+ }
314
+
315
+ // istanbul ignore next
316
+ if (existingRecordObj.createdTime !== newRecordObj.createdTime) {
317
+ const isCreatedTimeTypesSame = typeof existingRecordObj.createdTime !== typeof newRecordObj.createdTime;
318
+ (0, _error_utils.logErrorToSentry)('created time out of sync - types are same: %s', {
319
+ isCreatedTimeTypesSame
320
+ });
321
+ }
322
+ if (!existingRecordObj.cellValuesByFieldId) {
323
+ existingRecordObj.cellValuesByFieldId = {};
324
+ }
325
+ const existingCellValuesByFieldId = existingRecordObj.cellValuesByFieldId;
326
+ for (let i = 0; i < fieldIds.length; i++) {
327
+ const fieldId = fieldIds[i];
328
+ existingCellValuesByFieldId[fieldId] = newRecordObj.cellValuesByFieldId ? newRecordObj.cellValuesByFieldId[fieldId] : undefined;
329
+ }
330
+ }
331
+ }
332
+ const changedKeys = fieldIds.map(fieldId => _record_store_core.WatchableCellValuesInFieldKeyPrefix + fieldId);
333
+ // Need to trigger onChange for records and recordIds since watching either
334
+ // of those causes record metadata to be loaded (via _getFieldIdForCausingRecordMetadataToLoad)
335
+ // and by convention we trigger a change event when data loads.
336
+ changedKeys.push(WatchableRecordStoreKeys.records);
337
+ changedKeys.push(WatchableRecordStoreKeys.recordIds);
338
+ // Also trigger cellValues changes since the cell values in the fields
339
+ // are now loaded.
340
+ changedKeys.push(WatchableRecordStoreKeys.cellValues);
341
+ return changedKeys;
342
+ }
343
+ unloadCellValuesInFieldIds(fieldIds) {
344
+ if (this._isForceUnloaded) {
345
+ return;
346
+ }
347
+ for (const fieldId of fieldIds) {
348
+ let fieldRetainCount = this._cellValuesRetainCountByFieldId[fieldId] || 0;
349
+ fieldRetainCount--;
350
+ if (fieldRetainCount < 0) {
351
+ console.log('Field data over-released'); // eslint-disable-line no-console
352
+ fieldRetainCount = 0;
353
+ }
354
+ this._cellValuesRetainCountByFieldId[fieldId] = fieldRetainCount;
355
+ }
356
+ // Don't unload immediately. Wait a while in case something else
357
+ // requests the data, so we can avoid going back to liveapp or
358
+ // the network.
359
+ this._startTimeoutToUnloadForFieldIdsIfNeeded();
360
+ }
361
+
362
+ // This unloads all fields where the retain count is at zero, and if any other
363
+ // request to unload fields is pending - cancels it and restarts it.
364
+ // This is important because fields must always be unloaded at least __DATA_UNLOAD_DELAY_MS
365
+ // after the unload is requested so that any QueryResults relying on them properly
366
+ // unload either first, or at the same time
367
+ _startTimeoutToUnloadForFieldIdsIfNeeded() {
368
+ const fieldIdsWithZeroRetainCount = [];
369
+ for (const [fieldId, retainCount] of Object.entries(this._cellValuesRetainCountByFieldId)) {
370
+ if (retainCount === 0) {
371
+ fieldIdsWithZeroRetainCount.push(fieldId);
372
+ }
373
+ }
374
+
375
+ // Cancel any pending timeouts before proceeding
376
+ // This should be canceled even if there aren't any fields to unload as that means
377
+ // that there has been loading that's occured that makes the pending request invalid
378
+ if (this._timeoutForRemovingFieldIds) {
379
+ clearTimeout(this._timeoutForRemovingFieldIds);
380
+ this._timeoutForRemovingFieldIds = null;
381
+ }
382
+ if (fieldIdsWithZeroRetainCount.length > 0) {
383
+ this._timeoutForRemovingFieldIds = setTimeout(() => {
384
+ // Make sure the retain count is still zero, since it may
385
+ // have been incremented before the timeout fired.
386
+ const fieldIdsToUnload = fieldIdsWithZeroRetainCount.filter(fieldId => {
387
+ // It's necessary to also check that the field is loaded, as it's possible
388
+ // for an unload to trigger with fields that have already been removed.
389
+ return this._cellValuesRetainCountByFieldId[fieldId] === 0 && this._areCellValuesLoadedByFieldId[fieldId];
390
+ });
391
+ // istanbul ignore else
392
+ if (fieldIdsToUnload.length > 0) {
393
+ // Set _areCellValuesLoadedByFieldId to false before calling _unloadCellValuesInFieldIds
394
+ // since _unloadCellValuesInFieldIds will check if *any* fields are still loaded.
395
+ for (const fieldId of fieldIdsToUnload) {
396
+ this._areCellValuesLoadedByFieldId[fieldId] = false;
397
+ }
398
+ this._unloadCellValuesInFieldIds(fieldIdsToUnload);
399
+ } else {
400
+ // This shouldn't be possible because we always cancel the timer if fieldIds loadedness
401
+ // status ever changes
402
+ (0, _error_utils.logErrorToSentry)('fieldIdsToUnload is empty, this likely means the unload timer is not properly reset.');
403
+ }
404
+ this._timeoutForRemovingFieldIds = null;
405
+ }, _abstract_model_with_async_data.default.__DATA_UNLOAD_DELAY_MS);
406
+ }
407
+ }
408
+ _restartTimeoutToUnloadFieldIdsIfTimeoutIsActive() {
409
+ if (this._timeoutForRemovingFieldIds) {
410
+ this._startTimeoutToUnloadForFieldIdsIfNeeded();
411
+ }
412
+ }
413
+ _unloadCellValuesInFieldIds(fieldIds) {
414
+ this._airtableInterface.unsubscribeFromCellValuesInFields(this.tableId, fieldIds);
415
+ this._afterUnloadDataOrUnloadCellValuesInFieldIds(fieldIds);
416
+ }
417
+ async _loadDataAsync() {
418
+ const tableData = await this._airtableInterface.fetchAndSubscribeToTableDataAsync(this.tableId);
419
+ this._data.recordsById = tableData.recordsById;
420
+ const changedKeys = [WatchableRecordStoreKeys.records, WatchableRecordStoreKeys.recordIds, WatchableRecordStoreKeys.cellValues];
421
+ for (const fieldId of (0, _private_utils.keys)(this._data.fieldsById)) {
422
+ changedKeys.push(_record_store_core.WatchableCellValuesInFieldKeyPrefix + fieldId);
423
+ }
424
+ return changedKeys;
425
+ }
426
+ _unloadData() {
427
+ this._airtableInterface.unsubscribeFromTableData(this.tableId);
428
+ this._afterUnloadDataOrUnloadCellValuesInFieldIds();
429
+ }
430
+ _afterUnloadDataOrUnloadCellValuesInFieldIds(unloadedFieldIds) {
431
+ const areAnyFieldsLoaded = this.isDataLoaded || (0, _private_utils.values)(this._areCellValuesLoadedByFieldId).some(isLoaded => isLoaded);
432
+ if (!this.isDeleted) {
433
+ if (!areAnyFieldsLoaded) {
434
+ this._data.recordsById = undefined;
435
+ } else if (!this.isDataLoaded) {
436
+ let fieldIdsToClear;
437
+ // This should be impossible - for fields should always be loaded
438
+ // when attempting to unload specific fields. This codepath was previously possible
439
+ // due to a bug. It could be converted to an invariant, but that is higher risk.
440
+ // istanbul ignore if
441
+ if (unloadedFieldIds) {
442
+ // Specific fields were unloaded, so clear out the cell values for those fields.
443
+ fieldIdsToClear = unloadedFieldIds;
444
+ (0, _error_utils.logErrorToSentry)('Field Ids are being unloaded when record_store is unloaded');
445
+ } else {
446
+ // The entire table was unloaded, but some individual fields are still loaded.
447
+ // We need to clear out the cell values of every field that was unloaded.
448
+ // This is kind of slow, but hopefully uncommon.
449
+ const fieldIds = Object.keys(this._data.fieldsById);
450
+ fieldIdsToClear = fieldIds.filter(fieldId => !this._areCellValuesLoadedByFieldId[fieldId]);
451
+ }
452
+ const {
453
+ recordsById
454
+ } = this._data;
455
+ for (const recordObj of (0, _private_utils.values)(recordsById || {})) {
456
+ for (let i = 0; i < fieldIdsToClear.length; i++) {
457
+ const fieldId = fieldIdsToClear[i];
458
+ if (recordObj.cellValuesByFieldId) {
459
+ recordObj.cellValuesByFieldId[fieldId] = undefined;
460
+ }
461
+ }
462
+ }
463
+ }
464
+ }
465
+ if (!areAnyFieldsLoaded) {
466
+ this._clearRecordModels();
467
+ }
468
+ }
469
+ get _dataOrNullIfDeleted() {
470
+ return this._baseData.tablesById[this.tableId] ?? null;
471
+ }
472
+ }
473
+
474
+ /** @internal */
475
+ var _default = exports.default = RecordStore;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _session_core = require("../../shared/models/session_core");
8
+ var _mutations = require("../types/mutations");
9
+ /**
10
+ * Model class representing the current user's session.
11
+ *
12
+ * @example
13
+ * ```js
14
+ * import {useSession} from '@airtable/blocks/base/ui';
15
+ *
16
+ * function Username() {
17
+ * const session = useSession();
18
+ *
19
+ * if (session.currentUser !== null) {
20
+ * return <span>The current user's name is {session.currentUser.name}</span>;
21
+ * } else {
22
+ * return <span>This extension is being viewed in a public share</span>;
23
+ * }
24
+ * }
25
+ * ```
26
+ * @docsPath models/Session
27
+ */
28
+ class Session extends _session_core.SessionCore {
29
+ /** @internal */
30
+ static _className = 'Session';
31
+ /**
32
+ * Checks whether the current user has permission to update any records in the current base. For
33
+ * more granular permission checks, see {@link Table.checkPermissionsForUpdateRecords}.
34
+ *
35
+ * Returns `{hasPermission: true}` if the current user can update records,
36
+ * `{hasPermission: false, reasonDisplayString: string}` otherwise. `reasonDisplayString` may
37
+ * be used to display an error message to the user.
38
+ *
39
+ * @example
40
+ * ```js
41
+ * import {useSession} from '@airtable/blocks/base/ui';
42
+ *
43
+ * function UpdateButton({onClick}) {
44
+ * const session = useSession();
45
+ * const updateRecordsCheckResult = session.checkPermissionsForUpdateRecords();
46
+ * const deniedReason = updateRecordsCheckResult.hasPermission
47
+ * ? <span>{updateRecordsCheckResult.reasonDisplayString}</span>
48
+ * : null;
49
+ *
50
+ * return <div>
51
+ * {deniedReason}
52
+ * <button onClick={onClick} disabled={!!deniedReason}>
53
+ * Update
54
+ * </button>
55
+ * </div>;
56
+ * }
57
+ */
58
+ checkPermissionsForUpdateRecords() {
59
+ return this._sdk.__mutations.checkPermissionsForMutation({
60
+ type: _mutations.MutationTypes.SET_MULTIPLE_RECORDS_CELL_VALUES,
61
+ tableId: undefined,
62
+ records: undefined
63
+ });
64
+ }
65
+ /**
66
+ * An alias for `session.checkPermissionsForUpdateRecords().hasPermission`. For more granular
67
+ * permission checks, see {@link Table.hasPermissionToUpdateRecords}.
68
+ */
69
+ hasPermissionToUpdateRecords() {
70
+ return this.checkPermissionsForUpdateRecords().hasPermission;
71
+ }
72
+ /**
73
+ * Checks whether the current user has permission to create any records in the current base. For
74
+ * more granular permission checks, see {@link Table.checkPermissionsForCreateRecords}.
75
+ *
76
+ * Returns `{hasPermission: true}` if the current user can create records,
77
+ * `{hasPermission: false, reasonDisplayString: string}` otherwise. `reasonDisplayString` may be
78
+ * used to display an error message to the user.
79
+ *
80
+ * @example
81
+ * ```js
82
+ * import {useSession} from '@airtable/blocks/base/ui';
83
+ *
84
+ * function CreateButton({onClick}) {
85
+ * const session = useSession();
86
+ * const updateRecordsCheckResult = session.checkPermissionsForCreateRecords();
87
+ * const deniedReason = updateRecordsCheckResult.hasPermission
88
+ * ? <span>{updateRecordsCheckResult.reasonDisplayString}</span>
89
+ * : null;
90
+ *
91
+ * return <div>
92
+ * {deniedReason}
93
+ * <button onClick={onClick} disabled={!!deniedReason}>
94
+ * Create
95
+ * </button>
96
+ * </div>;
97
+ * }
98
+ */
99
+ checkPermissionsForCreateRecords() {
100
+ return this._sdk.__mutations.checkPermissionsForMutation({
101
+ type: _mutations.MutationTypes.CREATE_MULTIPLE_RECORDS,
102
+ tableId: undefined,
103
+ records: undefined
104
+ });
105
+ }
106
+ /**
107
+ * An alias for `session.checkPermissionsForCreateRecords().hasPermission`. For more granular
108
+ * permission checks, see {@link Table.hasPermissionToCreateRecords}.
109
+ */
110
+ hasPermissionToCreateRecords() {
111
+ return this.checkPermissionsForCreateRecords().hasPermission;
112
+ }
113
+ /**
114
+ * Checks whether the current user has permission to delete any records in the current base. For
115
+ * more granular permission checks, see {@link Table.checkPermissionsForDeleteRecords}.
116
+ *
117
+ * Returns `{hasPermission: true}` if the current user can delete records,
118
+ * `{hasPermission: false, reasonDisplayString: string}` otherwise. `reasonDisplayString` may be
119
+ * used to display an error message to the user.
120
+ *
121
+ * @example
122
+ * ```js
123
+ * import {useSession} from '@airtable/blocks/base/ui';
124
+ *
125
+ * function DeleteButton({onClick}) {
126
+ * const session = useSession();
127
+ * const updateRecordsCheckResult = session.checkPermissionsForDeleteRecords();
128
+ * const deniedReason = updateRecordsCheckResult.hasPermission
129
+ * ? <span>{updateRecordsCheckResult.reasonDisplayString}</span>
130
+ * : null;
131
+ *
132
+ * return <div>
133
+ * {deniedReason}
134
+ * <button onClick={onClick} disabled={!!deniedReason}>
135
+ * Delete
136
+ * </button>
137
+ * </div>;
138
+ */
139
+ checkPermissionsForDeleteRecords() {
140
+ return this._sdk.__mutations.checkPermissionsForMutation({
141
+ type: _mutations.MutationTypes.DELETE_MULTIPLE_RECORDS,
142
+ tableId: undefined,
143
+ recordIds: undefined
144
+ });
145
+ }
146
+ /**
147
+ * An alias for `session.checkPermissionsForDeleteRecords().hasPermission`. For more granular
148
+ * permission checks, see {@link Table.hasPermissionToDeleteRecords}.
149
+ */
150
+ hasPermissionToDeleteRecords() {
151
+ return this.checkPermissionsForDeleteRecords().hasPermission;
152
+ }
153
+ }
154
+ var _default = exports.default = Session;