@airtable/blocks 0.0.0-experimental-f52bc4e5e-20250709 → 0.0.0-experimental-75d011284-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 (481) hide show
  1. package/dist/cjs/base/assert_run_context.js +12 -0
  2. package/dist/cjs/base/index.js +30 -30
  3. package/dist/cjs/base/models/abstract_model_with_async_data.js +154 -237
  4. package/dist/cjs/base/models/base.js +188 -267
  5. package/dist/cjs/base/models/create_aggregators.js +29 -46
  6. package/dist/cjs/base/models/cursor.js +206 -294
  7. package/dist/cjs/base/models/field.js +307 -395
  8. package/dist/cjs/base/models/grouped_record_query_result.js +219 -338
  9. package/dist/cjs/base/models/linked_records_query_result.js +450 -625
  10. package/dist/cjs/base/models/models.js +19 -22
  11. package/dist/cjs/base/models/mutations.js +267 -293
  12. package/dist/cjs/base/models/object_pool.js +117 -156
  13. package/dist/cjs/base/models/record.js +191 -256
  14. package/dist/cjs/base/models/record_coloring.js +6 -6
  15. package/dist/cjs/base/models/record_query_result.js +351 -435
  16. package/dist/cjs/base/models/record_store.js +403 -753
  17. package/dist/cjs/base/models/session.js +125 -153
  18. package/dist/cjs/base/models/table.js +457 -605
  19. package/dist/cjs/base/models/table_or_view_query_result.js +656 -920
  20. package/dist/cjs/base/models/view.js +284 -389
  21. package/dist/cjs/base/models/view_data_store.js +218 -356
  22. package/dist/cjs/base/models/view_metadata_query_result.js +109 -157
  23. package/dist/cjs/base/perform_record_action.js +89 -131
  24. package/dist/cjs/base/sdk.js +129 -184
  25. package/dist/cjs/base/settings_button.js +54 -74
  26. package/dist/cjs/base/types/airtable_interface.js +1 -1
  27. package/dist/cjs/base/types/mutations.js +5 -11
  28. package/dist/cjs/base/types/undo_redo.js +1 -1
  29. package/dist/cjs/base/types/view.js +1 -1
  30. package/dist/cjs/base/ui/base_provider.js +6 -8
  31. package/dist/cjs/base/ui/baymax_utils.js +436 -108
  32. package/dist/cjs/base/ui/block_wrapper.js +81 -106
  33. package/dist/cjs/base/ui/box.js +34 -60
  34. package/dist/cjs/base/ui/button.js +44 -74
  35. package/dist/cjs/base/ui/cell_renderer.js +132 -189
  36. package/dist/cjs/base/ui/choice_token.js +25 -42
  37. package/dist/cjs/base/ui/collaborator_token.js +31 -53
  38. package/dist/cjs/base/ui/color_palette.js +130 -173
  39. package/dist/cjs/base/ui/color_palette_synced.js +41 -70
  40. package/dist/cjs/base/ui/confirmation_dialog.js +70 -120
  41. package/dist/cjs/base/ui/control_sizes.js +24 -22
  42. package/dist/cjs/base/ui/create_detect_element_resize.js +6 -10
  43. package/dist/cjs/base/ui/css_helpers.js +1 -1
  44. package/dist/cjs/base/ui/dialog.js +57 -98
  45. package/dist/cjs/base/ui/dialog_close_button.js +52 -98
  46. package/dist/cjs/base/ui/expand_record.js +1 -2
  47. package/dist/cjs/base/ui/expand_record_list.js +3 -4
  48. package/dist/cjs/base/ui/expand_record_picker_async.js +28 -57
  49. package/dist/cjs/base/ui/field_icon.js +15 -33
  50. package/dist/cjs/base/ui/field_picker.js +25 -70
  51. package/dist/cjs/base/ui/field_picker_synced.js +18 -40
  52. package/dist/cjs/base/ui/form_field.js +27 -55
  53. package/dist/cjs/base/ui/geometry/geometry.js +5 -5
  54. package/dist/cjs/base/ui/geometry/point.js +10 -12
  55. package/dist/cjs/base/ui/geometry/rect.js +36 -52
  56. package/dist/cjs/base/ui/geometry/size.js +10 -12
  57. package/dist/cjs/base/ui/global_alert.js +31 -52
  58. package/dist/cjs/base/ui/heading.js +45 -94
  59. package/dist/cjs/base/ui/icon.js +39 -59
  60. package/dist/cjs/base/ui/icon_config.js +6 -12
  61. package/dist/cjs/base/ui/initialize_block.js +16 -35
  62. package/dist/cjs/base/ui/input.js +62 -101
  63. package/dist/cjs/base/ui/input_synced.js +17 -40
  64. package/dist/cjs/base/ui/key_codes.js +2 -3
  65. package/dist/cjs/base/ui/label.js +30 -55
  66. package/dist/cjs/base/ui/link.js +54 -87
  67. package/dist/cjs/base/ui/loader.js +15 -36
  68. package/dist/cjs/base/ui/modal.js +88 -127
  69. package/dist/cjs/base/ui/model_picker_select.js +18 -44
  70. package/dist/cjs/base/ui/popover.js +236 -328
  71. package/dist/cjs/base/ui/progress_bar.js +34 -47
  72. package/dist/cjs/base/ui/record_card.js +389 -478
  73. package/dist/cjs/base/ui/record_card_list.js +150 -224
  74. package/dist/cjs/base/ui/select.js +60 -116
  75. package/dist/cjs/base/ui/select_and_select_buttons_helpers.js +15 -39
  76. package/dist/cjs/base/ui/select_buttons.js +50 -83
  77. package/dist/cjs/base/ui/select_buttons_synced.js +17 -39
  78. package/dist/cjs/base/ui/select_synced.js +17 -39
  79. package/dist/cjs/base/ui/switch.js +42 -71
  80. package/dist/cjs/base/ui/switch_synced.js +16 -38
  81. package/dist/cjs/base/ui/synced.js +27 -48
  82. package/dist/cjs/base/ui/system/all_styles_set.js +4 -12
  83. package/dist/cjs/base/ui/system/appearance/appearance_set.js +10 -13
  84. package/dist/cjs/base/ui/system/appearance/background_color.js +3 -6
  85. package/dist/cjs/base/ui/system/appearance/border.js +3 -6
  86. package/dist/cjs/base/ui/system/appearance/border_radius.js +3 -6
  87. package/dist/cjs/base/ui/system/appearance/box_shadow.js +3 -6
  88. package/dist/cjs/base/ui/system/appearance/opacity.js +3 -6
  89. package/dist/cjs/base/ui/system/dimensions/dimensions_set.js +11 -13
  90. package/dist/cjs/base/ui/system/dimensions/height.js +3 -6
  91. package/dist/cjs/base/ui/system/dimensions/max_height.js +3 -6
  92. package/dist/cjs/base/ui/system/dimensions/max_width.js +3 -6
  93. package/dist/cjs/base/ui/system/dimensions/min_height.js +3 -6
  94. package/dist/cjs/base/ui/system/dimensions/min_width.js +3 -6
  95. package/dist/cjs/base/ui/system/dimensions/width.js +3 -6
  96. package/dist/cjs/base/ui/system/display.js +3 -6
  97. package/dist/cjs/base/ui/system/flex_container/align_content.js +3 -6
  98. package/dist/cjs/base/ui/system/flex_container/align_items.js +3 -6
  99. package/dist/cjs/base/ui/system/flex_container/flex_container_set.js +11 -13
  100. package/dist/cjs/base/ui/system/flex_container/flex_direction.js +3 -6
  101. package/dist/cjs/base/ui/system/flex_container/flex_wrap.js +3 -6
  102. package/dist/cjs/base/ui/system/flex_container/justify_content.js +3 -6
  103. package/dist/cjs/base/ui/system/flex_container/justify_items.js +3 -6
  104. package/dist/cjs/base/ui/system/flex_item/align_self.js +3 -6
  105. package/dist/cjs/base/ui/system/flex_item/flex.js +3 -6
  106. package/dist/cjs/base/ui/system/flex_item/flex_basis.js +3 -6
  107. package/dist/cjs/base/ui/system/flex_item/flex_grow.js +3 -6
  108. package/dist/cjs/base/ui/system/flex_item/flex_item_set.js +12 -13
  109. package/dist/cjs/base/ui/system/flex_item/flex_shrink.js +3 -6
  110. package/dist/cjs/base/ui/system/flex_item/justify_self.js +3 -6
  111. package/dist/cjs/base/ui/system/flex_item/order.js +3 -6
  112. package/dist/cjs/base/ui/system/index.js +104 -416
  113. package/dist/cjs/base/ui/system/overflow.js +3 -6
  114. package/dist/cjs/base/ui/system/position/bottom.js +4 -6
  115. package/dist/cjs/base/ui/system/position/left.js +4 -6
  116. package/dist/cjs/base/ui/system/position/position.js +3 -6
  117. package/dist/cjs/base/ui/system/position/position_set.js +11 -13
  118. package/dist/cjs/base/ui/system/position/right.js +4 -6
  119. package/dist/cjs/base/ui/system/position/top.js +4 -6
  120. package/dist/cjs/base/ui/system/position/z_index.js +3 -6
  121. package/dist/cjs/base/ui/system/spacing/margin.js +4 -6
  122. package/dist/cjs/base/ui/system/spacing/padding.js +4 -6
  123. package/dist/cjs/base/ui/system/spacing/spacing_set.js +7 -13
  124. package/dist/cjs/base/ui/system/typography/font_family.js +3 -6
  125. package/dist/cjs/base/ui/system/typography/font_size.js +3 -6
  126. package/dist/cjs/base/ui/system/typography/font_style.js +3 -6
  127. package/dist/cjs/base/ui/system/typography/font_weight.js +3 -6
  128. package/dist/cjs/base/ui/system/typography/letter_spacing.js +3 -6
  129. package/dist/cjs/base/ui/system/typography/line_height.js +3 -6
  130. package/dist/cjs/base/ui/system/typography/text_align.js +3 -6
  131. package/dist/cjs/base/ui/system/typography/text_color.js +3 -6
  132. package/dist/cjs/base/ui/system/typography/text_decoration.js +3 -6
  133. package/dist/cjs/base/ui/system/typography/text_transform.js +3 -6
  134. package/dist/cjs/base/ui/system/typography/typography_set.js +15 -13
  135. package/dist/cjs/base/ui/system/utils/ensure_numbers_are_within_scale.js +3 -4
  136. package/dist/cjs/base/ui/system/utils/get_style_props_for_responsive_prop.js +47 -87
  137. package/dist/cjs/base/ui/table_picker.js +18 -42
  138. package/dist/cjs/base/ui/table_picker_synced.js +17 -39
  139. package/dist/cjs/base/ui/text.js +40 -73
  140. package/dist/cjs/base/ui/text_button.js +51 -83
  141. package/dist/cjs/base/ui/theme/default_theme/button_variants.js +3 -3
  142. package/dist/cjs/base/ui/theme/default_theme/control_sizes.js +51 -45
  143. package/dist/cjs/base/ui/theme/default_theme/heading_styles.js +1 -1
  144. package/dist/cjs/base/ui/theme/default_theme/index.js +9 -15
  145. package/dist/cjs/base/ui/theme/default_theme/input_variants.js +3 -3
  146. package/dist/cjs/base/ui/theme/default_theme/link_variants.js +3 -3
  147. package/dist/cjs/base/ui/theme/default_theme/select_buttons_variants.js +4 -4
  148. package/dist/cjs/base/ui/theme/default_theme/select_variants.js +8 -17
  149. package/dist/cjs/base/ui/theme/default_theme/switch_variants.js +23 -29
  150. package/dist/cjs/base/ui/theme/default_theme/text_button_variants.js +5 -5
  151. package/dist/cjs/base/ui/theme/default_theme/text_styles.js +1 -1
  152. package/dist/cjs/base/ui/theme/default_theme/tokens.js +14 -14
  153. package/dist/cjs/base/ui/theme/theme_context.js +2 -2
  154. package/dist/cjs/base/ui/theme/use_theme.js +2 -2
  155. package/dist/cjs/base/ui/tooltip.js +134 -174
  156. package/dist/cjs/base/ui/types/aria_props.js +1 -23
  157. package/dist/cjs/base/ui/types/data_attributes_prop.js +1 -18
  158. package/dist/cjs/base/ui/types/tooltip_anchor_props.js +1 -17
  159. package/dist/cjs/base/ui/ui.js +48 -49
  160. package/dist/cjs/base/ui/unstable_standalone_ui.js +27 -27
  161. package/dist/cjs/base/ui/use_base.js +1 -1
  162. package/dist/cjs/base/ui/use_cursor.js +5 -4
  163. package/dist/cjs/base/ui/use_form_field.js +1 -1
  164. package/dist/cjs/base/ui/use_loadable.js +25 -91
  165. package/dist/cjs/base/ui/use_record_action_data.js +4 -3
  166. package/dist/cjs/base/ui/use_records.js +9 -13
  167. package/dist/cjs/base/ui/use_session.js +1 -1
  168. package/dist/cjs/base/ui/use_settings_button.js +4 -3
  169. package/dist/cjs/base/ui/use_styled_system.js +7 -14
  170. package/dist/cjs/base/ui/use_text_color_for_background_color.js +4 -3
  171. package/dist/cjs/base/ui/use_view_metadata.js +4 -4
  172. package/dist/cjs/base/ui/use_viewport.js +2 -2
  173. package/dist/cjs/base/ui/view_picker.js +26 -70
  174. package/dist/cjs/base/ui/view_picker_synced.js +18 -40
  175. package/dist/cjs/base/ui/viewport_constraint.js +67 -114
  176. package/dist/cjs/base/ui/with_styled_system.js +25 -61
  177. package/dist/cjs/base/undo_redo.js +21 -32
  178. package/dist/cjs/base/unstable_testing_utils.js +27 -27
  179. package/dist/cjs/base/viewport.js +268 -312
  180. package/dist/cjs/injected/airtable_interface.js +4 -4
  181. package/dist/cjs/interface/assert_run_context.js +12 -0
  182. package/dist/cjs/interface/index.js +4 -18
  183. package/dist/cjs/interface/models/base.js +15 -34
  184. package/dist/cjs/interface/models/field.js +5 -19
  185. package/dist/cjs/interface/models/models.js +8 -7
  186. package/dist/cjs/interface/models/mutations.js +50 -66
  187. package/dist/cjs/interface/models/record.js +29 -49
  188. package/dist/cjs/interface/models/record_store.js +25 -57
  189. package/dist/cjs/interface/models/session.js +2 -16
  190. package/dist/cjs/interface/models/table.js +66 -95
  191. package/dist/cjs/interface/sdk.js +61 -87
  192. package/dist/cjs/interface/types/airtable_interface.js +2 -2
  193. package/dist/cjs/interface/types/mutations.js +3 -10
  194. package/dist/cjs/interface/ui/block_wrapper.js +56 -48
  195. package/dist/cjs/interface/ui/initialize_block.js +13 -28
  196. package/dist/cjs/interface/ui/ui.js +20 -19
  197. package/dist/cjs/interface/ui/use_base.js +1 -1
  198. package/dist/cjs/interface/ui/use_custom_properties.js +19 -35
  199. package/dist/cjs/interface/ui/use_records.js +6 -5
  200. package/dist/cjs/interface/ui/use_run_info.js +2 -2
  201. package/dist/cjs/interface/ui/use_session.js +1 -1
  202. package/dist/cjs/shared/color_utils.js +9 -16
  203. package/dist/cjs/shared/colors.js +2 -2
  204. package/dist/cjs/shared/error_utils.js +9 -11
  205. package/dist/cjs/shared/event_tracker.js +3 -3
  206. package/dist/cjs/shared/global_config.js +337 -449
  207. package/dist/cjs/shared/models/abstract_model.js +72 -97
  208. package/dist/cjs/shared/models/base_core.js +394 -514
  209. package/dist/cjs/shared/models/field_core.js +236 -279
  210. package/dist/cjs/shared/models/mutations_core.js +283 -379
  211. package/dist/cjs/shared/models/record_core.js +174 -231
  212. package/dist/cjs/shared/models/record_store_core.js +119 -172
  213. package/dist/cjs/shared/models/session_core.js +116 -170
  214. package/dist/cjs/shared/models/table_core.js +1258 -1501
  215. package/dist/cjs/shared/private_utils.js +54 -124
  216. package/dist/cjs/shared/sdk_core.js +68 -70
  217. package/dist/cjs/shared/types/field_core.js +1 -1
  218. package/dist/cjs/shared/types/mutation_constants.js +4 -4
  219. package/dist/cjs/shared/types/mutations_core.js +1 -1
  220. package/dist/cjs/shared/types/permission_levels.js +1 -1
  221. package/dist/cjs/shared/ui/global_config_synced_component_helpers.js +9 -9
  222. package/dist/cjs/shared/ui/loader.js +14 -35
  223. package/dist/cjs/shared/ui/remote_utils.js +5 -7
  224. package/dist/cjs/shared/ui/sdk_context.js +4 -8
  225. package/dist/cjs/shared/ui/use_array_identity.js +2 -2
  226. package/dist/cjs/shared/ui/use_base.js +6 -5
  227. package/dist/cjs/shared/ui/use_color_scheme.js +3 -8
  228. package/dist/cjs/shared/ui/use_global_config.js +5 -4
  229. package/dist/cjs/shared/ui/use_session.js +6 -5
  230. package/dist/cjs/shared/ui/use_synced.js +7 -5
  231. package/dist/cjs/shared/ui/use_watchable.js +13 -42
  232. package/dist/cjs/shared/ui/with_hooks.js +6 -13
  233. package/dist/cjs/shared/unstable_private_utils.js +4 -6
  234. package/dist/cjs/shared/warning.js +5 -5
  235. package/dist/cjs/shared/watchable.js +110 -176
  236. package/dist/cjs/stats/block_stats.js +62 -85
  237. package/dist/cjs/testing/base/abstract_mock_airtable_interface.js +208 -0
  238. package/dist/cjs/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/models.d.ts +1 -0
  244. package/dist/types/src/base/models/models.d.ts.map +1 -1
  245. package/dist/types/src/base/models/mutations.d.ts.map +1 -1
  246. package/dist/types/src/base/sdk.d.ts.map +1 -1
  247. package/dist/types/src/base/ui/block_wrapper.d.ts +1 -1
  248. package/dist/types/src/base/ui/box.d.ts.map +1 -1
  249. package/dist/types/src/base/ui/button.d.ts +0 -5
  250. package/dist/types/src/base/ui/button.d.ts.map +1 -1
  251. package/dist/types/src/base/ui/cell_renderer.d.ts +1 -22
  252. package/dist/types/src/base/ui/cell_renderer.d.ts.map +1 -1
  253. package/dist/types/src/base/ui/choice_token.d.ts +1 -21
  254. package/dist/types/src/base/ui/choice_token.d.ts.map +1 -1
  255. package/dist/types/src/base/ui/collaborator_token.d.ts +0 -20
  256. package/dist/types/src/base/ui/collaborator_token.d.ts.map +1 -1
  257. package/dist/types/src/base/ui/color_palette.d.ts +1 -32
  258. package/dist/types/src/base/ui/color_palette.d.ts.map +1 -1
  259. package/dist/types/src/base/ui/color_palette_synced.d.ts +0 -14
  260. package/dist/types/src/base/ui/color_palette_synced.d.ts.map +1 -1
  261. package/dist/types/src/base/ui/confirmation_dialog.d.ts +0 -17
  262. package/dist/types/src/base/ui/confirmation_dialog.d.ts.map +1 -1
  263. package/dist/types/src/base/ui/control_sizes.d.ts +0 -1
  264. package/dist/types/src/base/ui/control_sizes.d.ts.map +1 -1
  265. package/dist/types/src/base/ui/dialog.d.ts +1 -23
  266. package/dist/types/src/base/ui/dialog.d.ts.map +1 -1
  267. package/dist/types/src/base/ui/dialog_close_button.d.ts +2 -24
  268. package/dist/types/src/base/ui/dialog_close_button.d.ts.map +1 -1
  269. package/dist/types/src/base/ui/field_icon.d.ts +1 -17
  270. package/dist/types/src/base/ui/field_icon.d.ts.map +1 -1
  271. package/dist/types/src/base/ui/field_picker.d.ts +0 -23
  272. package/dist/types/src/base/ui/field_picker.d.ts.map +1 -1
  273. package/dist/types/src/base/ui/field_picker_synced.d.ts.map +1 -1
  274. package/dist/types/src/base/ui/form_field.d.ts +0 -4
  275. package/dist/types/src/base/ui/form_field.d.ts.map +1 -1
  276. package/dist/types/src/base/ui/heading.d.ts +1 -1
  277. package/dist/types/src/base/ui/heading.d.ts.map +1 -1
  278. package/dist/types/src/base/ui/icon.d.ts +0 -16
  279. package/dist/types/src/base/ui/icon.d.ts.map +1 -1
  280. package/dist/types/src/base/ui/icon_config.d.ts +50 -51
  281. package/dist/types/src/base/ui/icon_config.d.ts.map +1 -1
  282. package/dist/types/src/base/ui/initialize_block.d.ts.map +1 -1
  283. package/dist/types/src/base/ui/input.d.ts +12 -46
  284. package/dist/types/src/base/ui/input.d.ts.map +1 -1
  285. package/dist/types/src/base/ui/input_synced.d.ts.map +1 -1
  286. package/dist/types/src/base/ui/label.d.ts.map +1 -1
  287. package/dist/types/src/base/ui/link.d.ts +1 -5
  288. package/dist/types/src/base/ui/link.d.ts.map +1 -1
  289. package/dist/types/src/base/ui/loader.d.ts +3 -20
  290. package/dist/types/src/base/ui/loader.d.ts.map +1 -1
  291. package/dist/types/src/base/ui/modal.d.ts +1 -14
  292. package/dist/types/src/base/ui/modal.d.ts.map +1 -1
  293. package/dist/types/src/base/ui/model_picker_select.d.ts.map +1 -1
  294. package/dist/types/src/base/ui/popover.d.ts +1 -17
  295. package/dist/types/src/base/ui/popover.d.ts.map +1 -1
  296. package/dist/types/src/base/ui/progress_bar.d.ts +1 -24
  297. package/dist/types/src/base/ui/progress_bar.d.ts.map +1 -1
  298. package/dist/types/src/base/ui/record_card.d.ts +1 -23
  299. package/dist/types/src/base/ui/record_card.d.ts.map +1 -1
  300. package/dist/types/src/base/ui/record_card_list.d.ts +1 -18
  301. package/dist/types/src/base/ui/record_card_list.d.ts.map +1 -1
  302. package/dist/types/src/base/ui/select.d.ts +0 -44
  303. package/dist/types/src/base/ui/select.d.ts.map +1 -1
  304. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts +0 -2
  305. package/dist/types/src/base/ui/select_and_select_buttons_helpers.d.ts.map +1 -1
  306. package/dist/types/src/base/ui/select_buttons.d.ts +0 -22
  307. package/dist/types/src/base/ui/select_buttons.d.ts.map +1 -1
  308. package/dist/types/src/base/ui/select_buttons_synced.d.ts.map +1 -1
  309. package/dist/types/src/base/ui/select_synced.d.ts.map +1 -1
  310. package/dist/types/src/base/ui/switch.d.ts +0 -22
  311. package/dist/types/src/base/ui/switch.d.ts.map +1 -1
  312. package/dist/types/src/base/ui/switch_synced.d.ts.map +1 -1
  313. package/dist/types/src/base/ui/synced.d.ts +2 -8
  314. package/dist/types/src/base/ui/synced.d.ts.map +1 -1
  315. package/dist/types/src/base/ui/system/all_styles_set.d.ts +0 -3
  316. package/dist/types/src/base/ui/system/all_styles_set.d.ts.map +1 -1
  317. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts +0 -1
  318. package/dist/types/src/base/ui/system/appearance/appearance_set.d.ts.map +1 -1
  319. package/dist/types/src/base/ui/system/appearance/background_color.d.ts +0 -1
  320. package/dist/types/src/base/ui/system/appearance/background_color.d.ts.map +1 -1
  321. package/dist/types/src/base/ui/system/appearance/border.d.ts +0 -1
  322. package/dist/types/src/base/ui/system/appearance/border.d.ts.map +1 -1
  323. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts +0 -1
  324. package/dist/types/src/base/ui/system/appearance/border_radius.d.ts.map +1 -1
  325. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts +0 -1
  326. package/dist/types/src/base/ui/system/appearance/box_shadow.d.ts.map +1 -1
  327. package/dist/types/src/base/ui/system/appearance/opacity.d.ts +0 -1
  328. package/dist/types/src/base/ui/system/appearance/opacity.d.ts.map +1 -1
  329. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts +0 -1
  330. package/dist/types/src/base/ui/system/dimensions/dimensions_set.d.ts.map +1 -1
  331. package/dist/types/src/base/ui/system/dimensions/height.d.ts +0 -1
  332. package/dist/types/src/base/ui/system/dimensions/height.d.ts.map +1 -1
  333. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts +0 -1
  334. package/dist/types/src/base/ui/system/dimensions/max_height.d.ts.map +1 -1
  335. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts +0 -1
  336. package/dist/types/src/base/ui/system/dimensions/max_width.d.ts.map +1 -1
  337. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts +0 -1
  338. package/dist/types/src/base/ui/system/dimensions/min_height.d.ts.map +1 -1
  339. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts +0 -1
  340. package/dist/types/src/base/ui/system/dimensions/min_width.d.ts.map +1 -1
  341. package/dist/types/src/base/ui/system/dimensions/width.d.ts +0 -1
  342. package/dist/types/src/base/ui/system/dimensions/width.d.ts.map +1 -1
  343. package/dist/types/src/base/ui/system/display.d.ts +0 -1
  344. package/dist/types/src/base/ui/system/display.d.ts.map +1 -1
  345. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts +0 -1
  346. package/dist/types/src/base/ui/system/flex_container/align_content.d.ts.map +1 -1
  347. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts +0 -1
  348. package/dist/types/src/base/ui/system/flex_container/align_items.d.ts.map +1 -1
  349. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts +0 -1
  350. package/dist/types/src/base/ui/system/flex_container/flex_container_set.d.ts.map +1 -1
  351. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts +0 -1
  352. package/dist/types/src/base/ui/system/flex_container/flex_direction.d.ts.map +1 -1
  353. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts +0 -1
  354. package/dist/types/src/base/ui/system/flex_container/flex_wrap.d.ts.map +1 -1
  355. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts +0 -1
  356. package/dist/types/src/base/ui/system/flex_container/justify_content.d.ts.map +1 -1
  357. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts +0 -1
  358. package/dist/types/src/base/ui/system/flex_container/justify_items.d.ts.map +1 -1
  359. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts +0 -1
  360. package/dist/types/src/base/ui/system/flex_item/align_self.d.ts.map +1 -1
  361. package/dist/types/src/base/ui/system/flex_item/flex.d.ts +0 -1
  362. package/dist/types/src/base/ui/system/flex_item/flex.d.ts.map +1 -1
  363. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts +0 -1
  364. package/dist/types/src/base/ui/system/flex_item/flex_basis.d.ts.map +1 -1
  365. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts +0 -1
  366. package/dist/types/src/base/ui/system/flex_item/flex_grow.d.ts.map +1 -1
  367. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts +0 -1
  368. package/dist/types/src/base/ui/system/flex_item/flex_item_set.d.ts.map +1 -1
  369. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts +0 -1
  370. package/dist/types/src/base/ui/system/flex_item/flex_shrink.d.ts.map +1 -1
  371. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts +0 -1
  372. package/dist/types/src/base/ui/system/flex_item/justify_self.d.ts.map +1 -1
  373. package/dist/types/src/base/ui/system/flex_item/order.d.ts +0 -1
  374. package/dist/types/src/base/ui/system/flex_item/order.d.ts.map +1 -1
  375. package/dist/types/src/base/ui/system/index.d.ts +52 -52
  376. package/dist/types/src/base/ui/system/index.d.ts.map +1 -1
  377. package/dist/types/src/base/ui/system/overflow.d.ts +0 -1
  378. package/dist/types/src/base/ui/system/overflow.d.ts.map +1 -1
  379. package/dist/types/src/base/ui/system/position/bottom.d.ts +0 -1
  380. package/dist/types/src/base/ui/system/position/bottom.d.ts.map +1 -1
  381. package/dist/types/src/base/ui/system/position/left.d.ts +0 -1
  382. package/dist/types/src/base/ui/system/position/left.d.ts.map +1 -1
  383. package/dist/types/src/base/ui/system/position/position.d.ts +0 -1
  384. package/dist/types/src/base/ui/system/position/position.d.ts.map +1 -1
  385. package/dist/types/src/base/ui/system/position/position_set.d.ts +0 -1
  386. package/dist/types/src/base/ui/system/position/position_set.d.ts.map +1 -1
  387. package/dist/types/src/base/ui/system/position/right.d.ts +0 -1
  388. package/dist/types/src/base/ui/system/position/right.d.ts.map +1 -1
  389. package/dist/types/src/base/ui/system/position/top.d.ts +0 -1
  390. package/dist/types/src/base/ui/system/position/top.d.ts.map +1 -1
  391. package/dist/types/src/base/ui/system/position/z_index.d.ts +0 -1
  392. package/dist/types/src/base/ui/system/position/z_index.d.ts.map +1 -1
  393. package/dist/types/src/base/ui/system/spacing/margin.d.ts +0 -1
  394. package/dist/types/src/base/ui/system/spacing/margin.d.ts.map +1 -1
  395. package/dist/types/src/base/ui/system/spacing/padding.d.ts +0 -1
  396. package/dist/types/src/base/ui/system/spacing/padding.d.ts.map +1 -1
  397. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts +0 -1
  398. package/dist/types/src/base/ui/system/spacing/spacing_set.d.ts.map +1 -1
  399. package/dist/types/src/base/ui/system/typography/font_family.d.ts +0 -1
  400. package/dist/types/src/base/ui/system/typography/font_family.d.ts.map +1 -1
  401. package/dist/types/src/base/ui/system/typography/font_size.d.ts +0 -1
  402. package/dist/types/src/base/ui/system/typography/font_size.d.ts.map +1 -1
  403. package/dist/types/src/base/ui/system/typography/font_style.d.ts +0 -1
  404. package/dist/types/src/base/ui/system/typography/font_style.d.ts.map +1 -1
  405. package/dist/types/src/base/ui/system/typography/font_weight.d.ts +0 -1
  406. package/dist/types/src/base/ui/system/typography/font_weight.d.ts.map +1 -1
  407. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts +0 -1
  408. package/dist/types/src/base/ui/system/typography/letter_spacing.d.ts.map +1 -1
  409. package/dist/types/src/base/ui/system/typography/line_height.d.ts +0 -1
  410. package/dist/types/src/base/ui/system/typography/line_height.d.ts.map +1 -1
  411. package/dist/types/src/base/ui/system/typography/text_align.d.ts +0 -1
  412. package/dist/types/src/base/ui/system/typography/text_align.d.ts.map +1 -1
  413. package/dist/types/src/base/ui/system/typography/text_color.d.ts +0 -1
  414. package/dist/types/src/base/ui/system/typography/text_color.d.ts.map +1 -1
  415. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts +0 -1
  416. package/dist/types/src/base/ui/system/typography/text_decoration.d.ts.map +1 -1
  417. package/dist/types/src/base/ui/system/typography/text_transform.d.ts +0 -1
  418. package/dist/types/src/base/ui/system/typography/text_transform.d.ts.map +1 -1
  419. package/dist/types/src/base/ui/system/typography/typography_set.d.ts +0 -1
  420. package/dist/types/src/base/ui/system/typography/typography_set.d.ts.map +1 -1
  421. package/dist/types/src/base/ui/table_picker.d.ts +0 -21
  422. package/dist/types/src/base/ui/table_picker.d.ts.map +1 -1
  423. package/dist/types/src/base/ui/table_picker_synced.d.ts.map +1 -1
  424. package/dist/types/src/base/ui/text.d.ts +0 -3
  425. package/dist/types/src/base/ui/text.d.ts.map +1 -1
  426. package/dist/types/src/base/ui/text_button.d.ts +1 -5
  427. package/dist/types/src/base/ui/text_button.d.ts.map +1 -1
  428. package/dist/types/src/base/ui/theme/default_theme/index.d.ts +1 -1
  429. package/dist/types/src/base/ui/theme/theme_context.d.ts +1 -1
  430. package/dist/types/src/base/ui/theme/use_theme.d.ts +1 -1
  431. package/dist/types/src/base/ui/tooltip.d.ts +0 -16
  432. package/dist/types/src/base/ui/tooltip.d.ts.map +1 -1
  433. package/dist/types/src/base/ui/types/aria_props.d.ts.map +1 -1
  434. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts +0 -4
  435. package/dist/types/src/base/ui/types/data_attributes_prop.d.ts.map +1 -1
  436. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts +0 -7
  437. package/dist/types/src/base/ui/types/tooltip_anchor_props.d.ts.map +1 -1
  438. package/dist/types/src/base/ui/ui.d.ts +1 -0
  439. package/dist/types/src/base/ui/ui.d.ts.map +1 -1
  440. package/dist/types/src/base/ui/view_picker.d.ts +0 -23
  441. package/dist/types/src/base/ui/view_picker.d.ts.map +1 -1
  442. package/dist/types/src/base/ui/view_picker_synced.d.ts.map +1 -1
  443. package/dist/types/src/base/ui/viewport_constraint.d.ts +1 -14
  444. package/dist/types/src/base/ui/viewport_constraint.d.ts.map +1 -1
  445. package/dist/types/src/base/unstable_testing_utils.d.ts +1 -1
  446. package/dist/types/src/base/unstable_testing_utils.d.ts.map +1 -1
  447. package/dist/types/src/interface/assert_run_context.d.ts +2 -0
  448. package/dist/types/src/interface/assert_run_context.d.ts.map +1 -0
  449. package/dist/types/src/interface/index.d.ts +1 -6
  450. package/dist/types/src/interface/index.d.ts.map +1 -1
  451. package/dist/types/src/interface/models/models.d.ts +1 -0
  452. package/dist/types/src/interface/models/models.d.ts.map +1 -1
  453. package/dist/types/src/interface/models/mutations.d.ts.map +1 -1
  454. package/dist/types/src/interface/ui/initialize_block.d.ts.map +1 -1
  455. package/dist/types/src/interface/ui/ui.d.ts +1 -0
  456. package/dist/types/src/interface/ui/ui.d.ts.map +1 -1
  457. package/dist/types/src/interface/ui/use_custom_properties.d.ts +1 -1
  458. package/dist/types/src/shared/models/mutations_core.d.ts.map +1 -1
  459. package/dist/types/src/shared/private_utils.d.ts +0 -9
  460. package/dist/types/src/shared/private_utils.d.ts.map +1 -1
  461. package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts +0 -2
  462. package/dist/types/src/shared/ui/global_config_synced_component_helpers.d.ts.map +1 -1
  463. package/dist/types/src/shared/ui/loader.d.ts.map +1 -1
  464. package/dist/types/src/shared/ui/with_hooks.d.ts +2 -2
  465. package/dist/types/src/shared/ui/with_hooks.d.ts.map +1 -1
  466. package/dist/types/src/testing/{abstract_mock_airtable_interface.d.ts → base/abstract_mock_airtable_interface.d.ts} +13 -13
  467. package/dist/types/src/testing/base/abstract_mock_airtable_interface.d.ts.map +1 -0
  468. package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts +51 -0
  469. package/dist/types/src/testing/interface/abstract_mock_airtable_interface.d.ts.map +1 -0
  470. package/package.json +13 -13
  471. package/dist/cjs/base/ui/system/utils/create_responsive_prop_type.js +0 -19
  472. package/dist/cjs/base/ui/system/utils/create_style_prop_types.js +0 -24
  473. package/dist/cjs/base/ui/system/utils/enum_prop_type_utils.js +0 -35
  474. package/dist/cjs/testing/abstract_mock_airtable_interface.js +0 -277
  475. package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts +0 -2
  476. package/dist/types/src/base/ui/system/utils/create_responsive_prop_type.d.ts.map +0 -1
  477. package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts +0 -4
  478. package/dist/types/src/base/ui/system/utils/create_style_prop_types.d.ts.map +0 -1
  479. package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts +0 -21
  480. package/dist/types/src/base/ui/system/utils/enum_prop_type_utils.d.ts.map +0 -1
  481. package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +0 -1
@@ -1,41 +1,14 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/es.symbol.js");
4
- require("core-js/modules/es.symbol.description.js");
5
- require("core-js/modules/es.array.from.js");
6
- require("core-js/modules/es.regexp.exec.js");
7
- require("core-js/modules/es.regexp.to-string.js");
8
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
9
3
  Object.defineProperty(exports, "__esModule", {
10
4
  value: true
11
5
  });
12
6
  exports.default = exports.WatchableViewDataStoreKeys = void 0;
13
- require("core-js/modules/es.array.filter.js");
14
- require("core-js/modules/es.array.iterator.js");
15
- require("core-js/modules/es.array.map.js");
16
- require("core-js/modules/es.array.slice.js");
17
- require("core-js/modules/es.object.to-string.js");
18
- require("core-js/modules/es.promise.js");
19
- require("core-js/modules/web.dom-collections.iterator.js");
20
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
21
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
22
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
23
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
24
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
25
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
26
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
27
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
28
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
29
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
30
7
  var _private_utils = require("../../shared/private_utils");
31
8
  var _error_utils = require("../../shared/error_utils");
32
9
  var _abstract_model_with_async_data = _interopRequireDefault(require("./abstract_model_with_async_data"));
33
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
34
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
35
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
36
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
37
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
38
- var WatchableViewDataStoreKeys = exports.WatchableViewDataStoreKeys = Object.freeze({
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const WatchableViewDataStoreKeys = exports.WatchableViewDataStoreKeys = Object.freeze({
39
12
  visibleRecords: 'visibleRecords',
40
13
  visibleRecordIds: 'visibleRecordIds',
41
14
  groups: 'groups',
@@ -46,358 +19,247 @@ var WatchableViewDataStoreKeys = exports.WatchableViewDataStoreKeys = Object.fre
46
19
  });
47
20
 
48
21
  /** @internal */
22
+
49
23
  // ViewDataStore contains loadable data for a specific view. That means the set of visible records,
50
24
  // and field order/visibility information. View itself only contains core schema information. The
51
25
  // data here doesn't belong in View as it's record data or conditionally loaded.
52
26
  /** @internal */
53
- var ViewDataStore = /*#__PURE__*/function (_AbstractModelWithAsy) {
54
- function ViewDataStore(sdk, parentRecordStore, viewId) {
55
- var _this;
56
- (0, _classCallCheck2.default)(this, ViewDataStore);
57
- _this = _callSuper(this, ViewDataStore, [sdk, "".concat(viewId, "-ViewDataStore")]);
58
- (0, _defineProperty2.default)(_this, "viewId", void 0);
59
- (0, _defineProperty2.default)(_this, "parentRecordStore", void 0);
60
- (0, _defineProperty2.default)(_this, "_mostRecentTableLoadPromise", void 0);
61
- (0, _defineProperty2.default)(_this, "_airtableInterface", void 0);
62
- _this.parentRecordStore = parentRecordStore;
63
- _this._airtableInterface = sdk.__airtableInterface;
64
- _this._mostRecentTableLoadPromise = null;
65
- _this.viewId = viewId;
66
- return _this;
27
+ class ViewDataStore extends _abstract_model_with_async_data.default {
28
+ static _className = 'ViewDataStore';
29
+ static _isWatchableKey(key) {
30
+ return (0, _private_utils.isEnumValue)(WatchableViewDataStoreKeys, key);
67
31
  }
68
- (0, _inherits2.default)(ViewDataStore, _AbstractModelWithAsy);
69
- return (0, _createClass2.default)(ViewDataStore, [{
70
- key: "_dataOrNullIfDeleted",
71
- get: function get() {
72
- var _tableData$viewsById$;
73
- var tableData = this._baseData.tablesById[this.parentRecordStore.tableId];
74
- return (_tableData$viewsById$ = tableData === null || tableData === void 0 ? void 0 : tableData.viewsById[this.viewId]) !== null && _tableData$viewsById$ !== void 0 ? _tableData$viewsById$ : null;
75
- }
76
- }, {
77
- key: "_onChangeIsDataLoaded",
78
- value: function _onChangeIsDataLoaded() {
79
- // noop
80
- }
81
- }, {
82
- key: "isDataLoaded",
83
- get: function get() {
84
- return this._isDataLoaded && this.parentRecordStore.isRecordMetadataLoaded;
85
- }
86
- }, {
87
- key: "__onDataDeletion",
88
- value: function __onDataDeletion() {
89
- this._forceUnload();
90
- }
91
- }, {
92
- key: "loadDataAsync",
93
- value: function () {
94
- var _loadDataAsync2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
95
- var tableLoadPromise;
96
- return _regenerator.default.wrap(function _callee$(_context) {
97
- while (1) switch (_context.prev = _context.next) {
98
- case 0:
99
- // Override this method to also load table data.
100
- // NOTE: it's important that we call loadDataAsync on the table here and not in
101
- // _loadDataAsync since we want the retain counts for the view and table to increase/decrease
102
- // in lock-step. If we load table data in _loadDataAsync, the table's retain
103
- // count only increments some of the time, which leads to unexpected behavior.
104
- tableLoadPromise = this.parentRecordStore.loadRecordMetadataAsync();
105
- this._mostRecentTableLoadPromise = tableLoadPromise;
106
- _context.next = 4;
107
- return (0, _get2.default)((0, _getPrototypeOf2.default)(ViewDataStore.prototype), "loadDataAsync", this).call(this);
108
- case 4:
109
- case "end":
110
- return _context.stop();
111
- }
112
- }, _callee, this);
113
- }));
114
- function loadDataAsync() {
115
- return _loadDataAsync2.apply(this, arguments);
116
- }
117
- return loadDataAsync;
118
- }()
119
- }, {
120
- key: "_loadDataAsync",
121
- value: function () {
122
- var _loadDataAsync3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
123
- var tableLoadPromise, _yield$Promise$all, _yield$Promise$all2, viewData, _iterator, _step, record;
124
- return _regenerator.default.wrap(function _callee2$(_context2) {
125
- while (1) switch (_context2.prev = _context2.next) {
126
- case 0:
127
- // We need to be sure that the table data is loaded *before* we return
128
- // from this method.
129
- (0, _error_utils.invariant)(this._mostRecentTableLoadPromise, 'No table load promise');
130
- tableLoadPromise = this._mostRecentTableLoadPromise;
131
- _context2.next = 4;
132
- return Promise.all([this._airtableInterface.fetchAndSubscribeToViewDataAsync(this.parentRecordStore.tableId, this.viewId), tableLoadPromise]);
133
- case 4:
134
- _yield$Promise$all = _context2.sent;
135
- _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 1);
136
- viewData = _yield$Promise$all2[0];
137
- this._data.visibleRecordIds = viewData.visibleRecordIds;
138
- this._data.fieldOrder = viewData.fieldOrder;
139
- this._data.groups = viewData.groups;
140
- this._data.groupLevels = viewData.groupLevels;
141
- this._data.colorsByRecordId = viewData.colorsByRecordId;
142
- if (this._data.colorsByRecordId) {
143
- _iterator = _createForOfIteratorHelper(this.visibleRecords);
144
- try {
145
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
146
- record = _step.value;
147
- if ((0, _private_utils.has)(this._data.colorsByRecordId, record.id)) {
148
- record.__triggerOnChangeForRecordColorInViewId(this.viewId);
149
- }
150
- }
151
- } catch (err) {
152
- _iterator.e(err);
153
- } finally {
154
- _iterator.f();
155
- }
156
- }
157
- return _context2.abrupt("return", [WatchableViewDataStoreKeys.visibleRecords, WatchableViewDataStoreKeys.visibleRecordIds, WatchableViewDataStoreKeys.allFieldIds, WatchableViewDataStoreKeys.groups, WatchableViewDataStoreKeys.groupLevels, WatchableViewDataStoreKeys.visibleFieldIds, WatchableViewDataStoreKeys.recordColors]);
158
- case 14:
159
- case "end":
160
- return _context2.stop();
161
- }
162
- }, _callee2, this);
163
- }));
164
- function _loadDataAsync() {
165
- return _loadDataAsync3.apply(this, arguments);
166
- }
167
- return _loadDataAsync;
168
- }()
169
- }, {
170
- key: "unloadData",
171
- value: function unloadData() {
172
- // Override this method to also unload the table's data.
173
- // NOTE: it's important that we do this here, since we want the view and table's
174
- // retain counts to increment/decrement in lock-step. If we unload the table's
175
- // data in _unloadData, it leads to unexpected behavior.
176
- (0, _get2.default)((0, _getPrototypeOf2.default)(ViewDataStore.prototype), "unloadData", this).call(this);
177
- this.parentRecordStore.unloadRecordMetadata();
178
- }
179
- }, {
180
- key: "_unloadData",
181
- value: function _unloadData() {
182
- this._mostRecentTableLoadPromise = null;
183
- this._airtableInterface.unsubscribeFromViewData(this.parentRecordStore.tableId, this.viewId);
184
- if (!this.isDeleted) {
185
- this._data.visibleRecordIds = undefined;
186
- this._data.groups = undefined;
187
- this._data.colorsByRecordId = undefined;
32
+ static _shouldLoadDataForKey(key) {
33
+ return true;
34
+ }
35
+ constructor(sdk, parentRecordStore, viewId) {
36
+ super(sdk, `${viewId}-ViewDataStore`);
37
+ this.parentRecordStore = parentRecordStore;
38
+ this._airtableInterface = sdk.__airtableInterface;
39
+ this._mostRecentTableLoadPromise = null;
40
+ this.viewId = viewId;
41
+ }
42
+ get _dataOrNullIfDeleted() {
43
+ const tableData = this._baseData.tablesById[this.parentRecordStore.tableId];
44
+ return tableData?.viewsById[this.viewId] ?? null;
45
+ }
46
+ _onChangeIsDataLoaded() {
47
+ // noop
48
+ }
49
+ get isDataLoaded() {
50
+ return this._isDataLoaded && this.parentRecordStore.isRecordMetadataLoaded;
51
+ }
52
+ __onDataDeletion() {
53
+ this._forceUnload();
54
+ }
55
+ async loadDataAsync() {
56
+ // Override this method to also load table data.
57
+ // NOTE: it's important that we call loadDataAsync on the table here and not in
58
+ // _loadDataAsync since we want the retain counts for the view and table to increase/decrease
59
+ // in lock-step. If we load table data in _loadDataAsync, the table's retain
60
+ // count only increments some of the time, which leads to unexpected behavior.
61
+ const tableLoadPromise = this.parentRecordStore.loadRecordMetadataAsync();
62
+ this._mostRecentTableLoadPromise = tableLoadPromise;
63
+ await super.loadDataAsync();
64
+ }
65
+ async _loadDataAsync() {
66
+ // We need to be sure that the table data is loaded *before* we return
67
+ // from this method.
68
+ (0, _error_utils.invariant)(this._mostRecentTableLoadPromise, 'No table load promise');
69
+ const tableLoadPromise = this._mostRecentTableLoadPromise;
70
+ const [viewData] = await Promise.all([this._airtableInterface.fetchAndSubscribeToViewDataAsync(this.parentRecordStore.tableId, this.viewId), tableLoadPromise]);
71
+ this._data.visibleRecordIds = viewData.visibleRecordIds;
72
+ this._data.fieldOrder = viewData.fieldOrder;
73
+ this._data.groups = viewData.groups;
74
+ this._data.groupLevels = viewData.groupLevels;
75
+ this._data.colorsByRecordId = viewData.colorsByRecordId;
76
+ if (this._data.colorsByRecordId) {
77
+ for (const record of this.visibleRecords) {
78
+ if ((0, _private_utils.has)(this._data.colorsByRecordId, record.id)) {
79
+ record.__triggerOnChangeForRecordColorInViewId(this.viewId);
80
+ }
188
81
  }
189
82
  }
190
- }, {
191
- key: "__generateChangesForParentTableAddMultipleRecords",
192
- value: function __generateChangesForParentTableAddMultipleRecords(recordIds) {
193
- var newVisibleRecordIds = [...this.visibleRecordIds, ...recordIds];
194
- return [{
195
- path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'visibleRecordIds'],
196
- value: newVisibleRecordIds
197
- }];
83
+ return [WatchableViewDataStoreKeys.visibleRecords, WatchableViewDataStoreKeys.visibleRecordIds, WatchableViewDataStoreKeys.allFieldIds, WatchableViewDataStoreKeys.groups, WatchableViewDataStoreKeys.groupLevels, WatchableViewDataStoreKeys.visibleFieldIds, WatchableViewDataStoreKeys.recordColors];
84
+ }
85
+ unloadData() {
86
+ // Override this method to also unload the table's data.
87
+ // NOTE: it's important that we do this here, since we want the view and table's
88
+ // retain counts to increment/decrement in lock-step. If we unload the table's
89
+ // data in _unloadData, it leads to unexpected behavior.
90
+ super.unloadData();
91
+ this.parentRecordStore.unloadRecordMetadata();
92
+ }
93
+ _unloadData() {
94
+ this._mostRecentTableLoadPromise = null;
95
+ this._airtableInterface.unsubscribeFromViewData(this.parentRecordStore.tableId, this.viewId);
96
+ if (!this.isDeleted) {
97
+ this._data.visibleRecordIds = undefined;
98
+ this._data.groups = undefined;
99
+ this._data.colorsByRecordId = undefined;
198
100
  }
199
- }, {
200
- key: "__generateChangesForParentTableDeleteMultipleRecords",
201
- value: function __generateChangesForParentTableDeleteMultipleRecords(recordIds) {
202
- var recordIdsToDeleteSet = {};
203
- var _iterator2 = _createForOfIteratorHelper(recordIds),
204
- _step2;
205
- try {
206
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
207
- var recordId = _step2.value;
208
- recordIdsToDeleteSet[recordId] = true;
209
- }
210
- } catch (err) {
211
- _iterator2.e(err);
212
- } finally {
213
- _iterator2.f();
214
- }
215
- var newVisibleRecordIds = this.visibleRecordIds.filter(recordId => !recordIdsToDeleteSet[recordId]);
216
- var changePayload = [{
217
- path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'visibleRecordIds'],
218
- value: newVisibleRecordIds
219
- }];
220
- if (this._data.groups) {
221
- var newGroups = this.__recursivelyRemoveRecordsFromGroupsInPlace((0, _private_utils.cloneDeep)(this._data.groups), recordIdsToDeleteSet);
222
- changePayload.push({
223
- path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'groups'],
224
- value: newGroups
225
- });
226
- }
227
- return changePayload;
101
+ }
102
+ __generateChangesForParentTableAddMultipleRecords(recordIds) {
103
+ const newVisibleRecordIds = [...this.visibleRecordIds, ...recordIds];
104
+ return [{
105
+ path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'visibleRecordIds'],
106
+ value: newVisibleRecordIds
107
+ }];
108
+ }
109
+ __generateChangesForParentTableDeleteMultipleRecords(recordIds) {
110
+ const recordIdsToDeleteSet = {};
111
+ for (const recordId of recordIds) {
112
+ recordIdsToDeleteSet[recordId] = true;
228
113
  }
229
- }, {
230
- key: "__recursivelyRemoveRecordsFromGroupsInPlace",
231
- value: function __recursivelyRemoveRecordsFromGroupsInPlace(groups, recordIdsToDeleteSet) {
232
- if (!groups || groups.length === 0) {
233
- return groups;
234
- }
235
- return groups.map(group => {
236
- if (group.visibleRecordIds) {
237
- group.visibleRecordIds = group.visibleRecordIds.filter(id => !recordIdsToDeleteSet[id]);
238
- }
239
- this.__recursivelyRemoveRecordsFromGroupsInPlace(group.groups, recordIdsToDeleteSet);
240
- return group;
114
+ const newVisibleRecordIds = this.visibleRecordIds.filter(recordId => !recordIdsToDeleteSet[recordId]);
115
+ const changePayload = [{
116
+ path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'visibleRecordIds'],
117
+ value: newVisibleRecordIds
118
+ }];
119
+ if (this._data.groups) {
120
+ const newGroups = this.__recursivelyRemoveRecordsFromGroupsInPlace((0, _private_utils.cloneDeep)(this._data.groups), recordIdsToDeleteSet);
121
+ changePayload.push({
122
+ path: ['tablesById', this.parentRecordStore.tableId, 'viewsById', this.viewId, 'groups'],
123
+ value: newGroups
241
124
  });
242
125
  }
126
+ return changePayload;
127
+ }
128
+ __recursivelyRemoveRecordsFromGroupsInPlace(groups, recordIdsToDeleteSet) {
129
+ if (!groups || groups.length === 0) {
130
+ return groups;
131
+ }
132
+ return groups.map(group => {
133
+ if (group.visibleRecordIds) {
134
+ group.visibleRecordIds = group.visibleRecordIds.filter(id => !recordIdsToDeleteSet[id]);
135
+ }
136
+ this.__recursivelyRemoveRecordsFromGroupsInPlace(group.groups, recordIdsToDeleteSet);
137
+ return group;
138
+ });
139
+ }
243
140
 
244
- /**
245
- * The record IDs that are not filtered out of this view.
246
- * Can be watched to know when records are created, deleted, reordered, or
247
- * filtered in and out of this view.
248
- */
249
- }, {
250
- key: "visibleRecordIds",
251
- get: function get() {
252
- var visibleRecordIds = this._data.visibleRecordIds;
253
- (0, _error_utils.invariant)(visibleRecordIds, 'View data is not loaded');
141
+ /**
142
+ * The record IDs that are not filtered out of this view.
143
+ * Can be watched to know when records are created, deleted, reordered, or
144
+ * filtered in and out of this view.
145
+ */
146
+ get visibleRecordIds() {
147
+ const visibleRecordIds = this._data.visibleRecordIds;
148
+ (0, _error_utils.invariant)(visibleRecordIds, 'View data is not loaded');
254
149
 
255
- // Freeze visibleRecordIds so users can't mutate it.
256
- // If it changes from liveapp, we get an entire new array which will
257
- // replace this one, so it's okay to freeze it.
258
- if (!Object.isFrozen(visibleRecordIds)) {
259
- Object.freeze(visibleRecordIds);
260
- }
261
- return visibleRecordIds;
150
+ // Freeze visibleRecordIds so users can't mutate it.
151
+ // If it changes from liveapp, we get an entire new array which will
152
+ // replace this one, so it's okay to freeze it.
153
+ if (!Object.isFrozen(visibleRecordIds)) {
154
+ Object.freeze(visibleRecordIds);
262
155
  }
156
+ return visibleRecordIds;
157
+ }
263
158
 
264
- /**
265
- * The records that are not filtered out of this view.
266
- * Can be watched to know when records are created, deleted, reordered, or
267
- * filtered in and out of this view.
268
- */
269
- }, {
270
- key: "visibleRecords",
271
- get: function get() {
272
- (0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
273
- var visibleRecordIds = this._data.visibleRecordIds;
274
- (0, _error_utils.invariant)(visibleRecordIds, 'View data is not loaded');
275
- return visibleRecordIds.map(recordId => {
276
- var record = this.parentRecordStore.getRecordByIdIfExists(recordId);
277
- (0, _error_utils.invariant)(record, 'Record in view does not exist');
278
- return record;
279
- });
280
- }
159
+ /**
160
+ * The records that are not filtered out of this view.
161
+ * Can be watched to know when records are created, deleted, reordered, or
162
+ * filtered in and out of this view.
163
+ */
164
+ get visibleRecords() {
165
+ (0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
166
+ const visibleRecordIds = this._data.visibleRecordIds;
167
+ (0, _error_utils.invariant)(visibleRecordIds, 'View data is not loaded');
168
+ return visibleRecordIds.map(recordId => {
169
+ const record = this.parentRecordStore.getRecordByIdIfExists(recordId);
170
+ (0, _error_utils.invariant)(record, 'Record in view does not exist');
171
+ return record;
172
+ });
173
+ }
281
174
 
282
- /**
283
- * Gets the groups in a view, can be watched to be notified if a record changes groups,
284
- * if a record is changed/deleted/created, if sort order of groups changes, grouping
285
- * heirarchy changes, or grouping field changes.
286
- *
287
- * @hidden
288
- */
289
- }, {
290
- key: "groups",
291
- get: function get() {
292
- (0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
293
- var groups = this._data.groups;
294
- return groups !== null && groups !== void 0 ? groups : null;
295
- }
175
+ /**
176
+ * Gets the groups in a view, can be watched to be notified if a record changes groups,
177
+ * if a record is changed/deleted/created, if sort order of groups changes, grouping
178
+ * heirarchy changes, or grouping field changes.
179
+ *
180
+ * @hidden
181
+ */
182
+ get groups() {
183
+ (0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
184
+ const groups = this._data.groups;
185
+ return groups ?? null;
186
+ }
296
187
 
297
- /**
298
- * Gets the group config for this view, can be watched to know when groupLevels
299
- * changes (reorder, groups deleted, groups changed, grouped field changes)
300
- */
301
- }, {
302
- key: "groupLevels",
303
- get: function get() {
304
- (0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
305
- var groupLevels = this._data.groupLevels;
306
- return groupLevels !== null && groupLevels !== void 0 ? groupLevels : null;
307
- }
188
+ /**
189
+ * Gets the group config for this view, can be watched to know when groupLevels
190
+ * changes (reorder, groups deleted, groups changed, grouped field changes)
191
+ */
192
+ get groupLevels() {
193
+ (0, _error_utils.invariant)(this.parentRecordStore.isRecordMetadataLoaded, 'Table data is not loaded');
194
+ const groupLevels = this._data.groupLevels;
195
+ return groupLevels ?? null;
196
+ }
308
197
 
309
- /**
310
- * Get the color name for the specified record in this view, or null if no
311
- * color is available. Watch with 'recordColors'
312
- *
313
- * @param recordOrRecordId the record/record id to get the color for
314
- */
315
- }, {
316
- key: "getRecordColor",
317
- value: function getRecordColor(record) {
318
- var _this$_data$colorsByR, _this$_data$colorsByR2;
319
- (0, _error_utils.invariant)(this.isDataLoaded, 'View data is not loaded');
320
- return (_this$_data$colorsByR = (_this$_data$colorsByR2 = this._data.colorsByRecordId) === null || _this$_data$colorsByR2 === void 0 ? void 0 : _this$_data$colorsByR2[record.id]) !== null && _this$_data$colorsByR !== void 0 ? _this$_data$colorsByR : null;
198
+ /**
199
+ * Get the color name for the specified record in this view, or null if no
200
+ * color is available. Watch with 'recordColors'
201
+ *
202
+ * @param recordOrRecordId the record/record id to get the color for
203
+ */
204
+ getRecordColor(record) {
205
+ (0, _error_utils.invariant)(this.isDataLoaded, 'View data is not loaded');
206
+ return this._data.colorsByRecordId?.[record.id] ?? null;
207
+ }
208
+ get allFieldIds() {
209
+ const fieldOrder = this._data.fieldOrder;
210
+ (0, _error_utils.invariant)(fieldOrder, 'View data is not loaded');
211
+ return fieldOrder.fieldIds;
212
+ }
213
+ get visibleFieldIds() {
214
+ const fieldOrder = this._data.fieldOrder;
215
+ (0, _error_utils.invariant)(fieldOrder, 'View data is not loaded');
216
+ const {
217
+ fieldIds
218
+ } = fieldOrder;
219
+ return fieldIds.slice(0, fieldOrder.visibleFieldCount);
220
+ }
221
+ triggerOnChangeForDirtyPaths(dirtyPaths) {
222
+ if (dirtyPaths.visibleRecordIds) {
223
+ this._onChange(WatchableViewDataStoreKeys.visibleRecords);
224
+ this._onChange(WatchableViewDataStoreKeys.visibleRecordIds);
321
225
  }
322
- }, {
323
- key: "allFieldIds",
324
- get: function get() {
325
- var fieldOrder = this._data.fieldOrder;
326
- (0, _error_utils.invariant)(fieldOrder, 'View data is not loaded');
327
- return fieldOrder.fieldIds;
226
+ if (dirtyPaths.fieldOrder) {
227
+ this._onChange(WatchableViewDataStoreKeys.allFieldIds);
228
+ // TODO(kasra): only trigger visibleFields if the *visible* field ids changed.
229
+ this._onChange(WatchableViewDataStoreKeys.visibleFieldIds);
328
230
  }
329
- }, {
330
- key: "visibleFieldIds",
331
- get: function get() {
332
- var fieldOrder = this._data.fieldOrder;
333
- (0, _error_utils.invariant)(fieldOrder, 'View data is not loaded');
334
- var fieldIds = fieldOrder.fieldIds;
335
- return fieldIds.slice(0, fieldOrder.visibleFieldCount);
231
+ // Technically it's possible for groupLevels changing to cause a groups
232
+ // change since we derive group information from the groupLevels (fieldId)
233
+ if (dirtyPaths.groups || dirtyPaths.groupLevels) {
234
+ this._onChange(WatchableViewDataStoreKeys.groups);
336
235
  }
337
- }, {
338
- key: "triggerOnChangeForDirtyPaths",
339
- value: function triggerOnChangeForDirtyPaths(dirtyPaths) {
340
- if (dirtyPaths.visibleRecordIds) {
341
- this._onChange(WatchableViewDataStoreKeys.visibleRecords);
342
- this._onChange(WatchableViewDataStoreKeys.visibleRecordIds);
343
- }
344
- if (dirtyPaths.fieldOrder) {
345
- this._onChange(WatchableViewDataStoreKeys.allFieldIds);
346
- // TODO(kasra): only trigger visibleFields if the *visible* field ids changed.
347
- this._onChange(WatchableViewDataStoreKeys.visibleFieldIds);
348
- }
349
- // Technically it's possible for groupLevels changing to cause a groups
350
- // change since we derive group information from the groupLevels (fieldId)
351
- if (dirtyPaths.groups || dirtyPaths.groupLevels) {
352
- this._onChange(WatchableViewDataStoreKeys.groups);
353
- }
354
- if (dirtyPaths.groupLevels) {
355
- this._onChange(WatchableViewDataStoreKeys.groupLevels);
356
- }
357
- if (dirtyPaths.colorsByRecordId) {
358
- var changedRecordIds = dirtyPaths.colorsByRecordId._isDirty ? null : Object.keys(dirtyPaths.colorsByRecordId);
359
- if (changedRecordIds) {
360
- // Checking isRecordMetadataLoaded fixes a timing issue:
361
- // When a new table loads in liveapp, we'll receive the record
362
- // colors before getting the response to our loadData call.
363
- // This is a temporary fix: we need a more general solution to
364
- // avoid processing events associated with subscriptions whose
365
- // data we haven't received yet.
366
- if (this.parentRecordStore.isRecordMetadataLoaded) {
367
- var _iterator3 = _createForOfIteratorHelper(changedRecordIds),
368
- _step3;
369
- try {
370
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
371
- var recordId = _step3.value;
372
- var record = this.parentRecordStore.getRecordByIdIfExists(recordId);
373
- // Similar to above, we could be receiving the change notification
374
- // for a record color before receiving the new record itself.
375
- if (record) {
376
- record.__triggerOnChangeForRecordColorInViewId(this.viewId);
377
- }
378
- }
379
- } catch (err) {
380
- _iterator3.e(err);
381
- } finally {
382
- _iterator3.f();
236
+ if (dirtyPaths.groupLevels) {
237
+ this._onChange(WatchableViewDataStoreKeys.groupLevels);
238
+ }
239
+ if (dirtyPaths.colorsByRecordId) {
240
+ const changedRecordIds = dirtyPaths.colorsByRecordId._isDirty ? null : Object.keys(dirtyPaths.colorsByRecordId);
241
+ if (changedRecordIds) {
242
+ // Checking isRecordMetadataLoaded fixes a timing issue:
243
+ // When a new table loads in liveapp, we'll receive the record
244
+ // colors before getting the response to our loadData call.
245
+ // This is a temporary fix: we need a more general solution to
246
+ // avoid processing events associated with subscriptions whose
247
+ // data we haven't received yet.
248
+ if (this.parentRecordStore.isRecordMetadataLoaded) {
249
+ for (const recordId of changedRecordIds) {
250
+ const record = this.parentRecordStore.getRecordByIdIfExists(recordId);
251
+ // Similar to above, we could be receiving the change notification
252
+ // for a record color before receiving the new record itself.
253
+ if (record) {
254
+ record.__triggerOnChangeForRecordColorInViewId(this.viewId);
383
255
  }
384
256
  }
385
257
  }
386
- this._onChange(WatchableViewDataStoreKeys.recordColors, changedRecordIds);
387
258
  }
259
+ this._onChange(WatchableViewDataStoreKeys.recordColors, changedRecordIds);
388
260
  }
389
- }], [{
390
- key: "_isWatchableKey",
391
- value: function _isWatchableKey(key) {
392
- return (0, _private_utils.isEnumValue)(WatchableViewDataStoreKeys, key);
393
- }
394
- }, {
395
- key: "_shouldLoadDataForKey",
396
- value: function _shouldLoadDataForKey(key) {
397
- return true;
398
- }
399
- }]);
400
- }(_abstract_model_with_async_data.default);
261
+ }
262
+ }
263
+
401
264
  /** @internal */
402
- (0, _defineProperty2.default)(ViewDataStore, "_className", 'ViewDataStore');
403
265
  var _default = exports.default = ViewDataStore;