@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,36 +1,13 @@
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.array.slice.js");
7
- require("core-js/modules/es.regexp.exec.js");
8
- require("core-js/modules/es.regexp.to-string.js");
9
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
10
3
  Object.defineProperty(exports, "__esModule", {
11
4
  value: true
12
5
  });
13
6
  exports.WatchableBaseKeys = exports.BaseCore = void 0;
14
- require("core-js/modules/es.array.iterator.js");
15
- require("core-js/modules/es.array.map.js");
16
- require("core-js/modules/es.map.js");
17
- require("core-js/modules/es.object.to-string.js");
18
- require("core-js/modules/web.dom-collections.iterator.js");
19
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
20
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
21
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
24
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
26
7
  var _private_utils = require("../private_utils");
27
8
  var _error_utils = require("../error_utils");
28
9
  var _abstract_model = _interopRequireDefault(require("./abstract_model"));
29
- 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; } } }; }
30
- 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; } }
31
- 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; }
32
- 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)); }
33
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
34
11
  // How these model classes work:
35
12
  //
36
13
  // The single instance of the Base class maintains a reference to a plain JS
@@ -45,7 +22,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
45
22
  // since the block developer could mutate it and we'll end up out of sync with
46
23
  // liveapp.
47
24
 
48
- var WatchableBaseKeys = exports.WatchableBaseKeys = Object.freeze({
25
+ const WatchableBaseKeys = exports.WatchableBaseKeys = Object.freeze({
49
26
  name: 'name',
50
27
  tables: 'tables',
51
28
  collaborators: 'collaborators',
@@ -64,26 +41,30 @@ var WatchableBaseKeys = exports.WatchableBaseKeys = Object.freeze({
64
41
  /** @internal */
65
42
 
66
43
  /** @internal */
44
+
67
45
  /** @hidden */
68
- var BaseCore = exports.BaseCore = /*#__PURE__*/function (_AbstractModel) {
46
+ class BaseCore extends _abstract_model.default {
47
+ /** @internal */
48
+ static _className = 'BaseCore';
49
+ /** @internal */
50
+ static _isWatchableKey(key) {
51
+ return (0, _private_utils.isEnumValue)(WatchableBaseKeys, key);
52
+ }
53
+ /** @internal */
54
+
55
+ /** @internal */
56
+ _tableRecordStoresByTableId = {};
57
+ /** @internal */
58
+
59
+ /** @internal */
60
+ _collaboratorIdsByNameAndEmail = null;
69
61
  /**
70
62
  * @internal
71
63
  */
72
- function BaseCore(sdk) {
73
- var _this;
74
- (0, _classCallCheck2.default)(this, BaseCore);
75
- _this = _callSuper(this, BaseCore, [sdk, sdk.__airtableInterface.sdkInitData.baseData.id]);
76
- /** @internal */
77
- (0, _defineProperty2.default)(_this, "_tableModelsById", void 0);
78
- /** @internal */
79
- (0, _defineProperty2.default)(_this, "_tableRecordStoresByTableId", {});
80
- /** @internal */
81
- (0, _defineProperty2.default)(_this, "__billingPlanGrouping", void 0);
82
- /** @internal */
83
- (0, _defineProperty2.default)(_this, "_collaboratorIdsByNameAndEmail", null);
84
- _this._tableModelsById = {}; // Table instances are lazily created by getTableById.
85
- _this.__billingPlanGrouping = sdk.__airtableInterface.sdkInitData.baseData.billingPlanGrouping;
86
- return _this;
64
+ constructor(sdk) {
65
+ super(sdk, sdk.__airtableInterface.sdkInitData.baseData.id);
66
+ this._tableModelsById = {}; // Table instances are lazily created by getTableById.
67
+ this.__billingPlanGrouping = sdk.__airtableInterface.sdkInitData.baseData.billingPlanGrouping;
87
68
  }
88
69
 
89
70
  /**
@@ -91,512 +72,411 @@ var BaseCore = exports.BaseCore = /*#__PURE__*/function (_AbstractModel) {
91
72
  *
92
73
  * @internal
93
74
  */
94
- (0, _inherits2.default)(BaseCore, _AbstractModel);
95
- return (0, _createClass2.default)(BaseCore, [{
96
- key: "__sdk",
97
- get: function get() {
98
- return this._sdk;
99
- }
75
+ get __sdk() {
76
+ return this._sdk;
77
+ }
100
78
 
101
- /**
102
- * @internal
103
- */
104
- }, {
105
- key: "_dataOrNullIfDeleted",
106
- get: function get() {
107
- return this._baseData;
108
- }
109
- /**
110
- * The name of the base.
111
- *
112
- * @example
113
- * ```js
114
- * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
115
- *
116
- * function MyApp() {
117
- * const base = useBase();
118
- * console.log('The name of your base is', base.name);
119
- * }
120
- * ```
121
- */
122
- }, {
123
- key: "name",
124
- get: function get() {
125
- return this._data.name;
126
- }
79
+ /**
80
+ * @internal
81
+ */
82
+ get _dataOrNullIfDeleted() {
83
+ return this._baseData;
84
+ }
85
+ /**
86
+ * The name of the base.
87
+ *
88
+ * @example
89
+ * ```js
90
+ * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
91
+ *
92
+ * function MyApp() {
93
+ * const base = useBase();
94
+ * console.log('The name of your base is', base.name);
95
+ * }
96
+ * ```
97
+ */
98
+ get name() {
99
+ return this._data.name;
100
+ }
127
101
 
128
- /**
129
- * The workspace id of the base.
130
- *
131
- * @example
132
- * ```js
133
- * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
134
- *
135
- * function MyApp() {
136
- * const base = useBase();
137
- * console.log('The workspace id of your base is', base.workspaceId);
138
- * }
139
- * ```
140
- */
141
- }, {
142
- key: "workspaceId",
143
- get: function get() {
144
- return this._data.workspaceId;
145
- }
102
+ /**
103
+ * The workspace id of the base.
104
+ *
105
+ * @example
106
+ * ```js
107
+ * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
108
+ *
109
+ * function MyApp() {
110
+ * const base = useBase();
111
+ * console.log('The workspace id of your base is', base.workspaceId);
112
+ * }
113
+ * ```
114
+ */
115
+ get workspaceId() {
116
+ return this._data.workspaceId;
117
+ }
146
118
 
147
- /**
148
- * The color of the base.
149
- *
150
- * @example
151
- * ```js
152
- * import {colorUtils, useBase} from '@airtable/blocks/[placeholder-path]/ui';
153
- *
154
- * function MyApp() {
155
- * const base = useBase();
156
- * return (
157
- * <div style={{backgroundColor: colorUtils.getHexForColor(base.color)}}>
158
- * This div's background is the same color as the base background
159
- * </div>
160
- * );
161
- * }
162
- * ```
163
- */
164
- }, {
165
- key: "color",
166
- get: function get() {
167
- return this._data.color;
168
- }
119
+ /**
120
+ * The color of the base.
121
+ *
122
+ * @example
123
+ * ```js
124
+ * import {colorUtils, useBase} from '@airtable/blocks/[placeholder-path]/ui';
125
+ *
126
+ * function MyApp() {
127
+ * const base = useBase();
128
+ * return (
129
+ * <div style={{backgroundColor: colorUtils.getHexForColor(base.color)}}>
130
+ * This div's background is the same color as the base background
131
+ * </div>
132
+ * );
133
+ * }
134
+ * ```
135
+ */
136
+ get color() {
137
+ return this._data.color;
138
+ }
169
139
 
170
- /**
171
- * The tables in this base. Can be watched to know when tables are created, deleted, or reordered in the base.
172
- *
173
- * @example
174
- * ```js
175
- * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
176
- *
177
- * function MyApp() {
178
- * const base = useBase();
179
- * console.log(`You have ${base.tables.length} tables`);
180
- * }
181
- * ```
182
- */
183
- }, {
184
- key: "tables",
185
- get: function get() {
186
- // TODO(kasra): cache and freeze this so it isn't O(n)
187
- var tables = [];
188
- var _iterator = _createForOfIteratorHelper(this._iterateTableIds()),
189
- _step;
190
- try {
191
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
192
- var _tableId = _step.value;
193
- var table = this.getTableByIdIfExists(_tableId);
194
- // NOTE: A table's ID may be in tableOrder without the table appearing
195
- // in tablesById, in which case getTableById will return null. This
196
- // happens if table was just created by the user, since we
197
- // wait for the push payload to deliver the table schema.
198
- if (table) {
199
- tables.push(table);
200
- }
201
- }
202
- } catch (err) {
203
- _iterator.e(err);
204
- } finally {
205
- _iterator.f();
140
+ /**
141
+ * The tables in this base. Can be watched to know when tables are created, deleted, or reordered in the base.
142
+ *
143
+ * @example
144
+ * ```js
145
+ * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
146
+ *
147
+ * function MyApp() {
148
+ * const base = useBase();
149
+ * console.log(`You have ${base.tables.length} tables`);
150
+ * }
151
+ * ```
152
+ */
153
+ get tables() {
154
+ // TODO(kasra): cache and freeze this so it isn't O(n)
155
+ const tables = [];
156
+ for (const tableId of this._iterateTableIds()) {
157
+ const table = this.getTableByIdIfExists(tableId);
158
+ // NOTE: A table's ID may be in tableOrder without the table appearing
159
+ // in tablesById, in which case getTableById will return null. This
160
+ // happens if table was just created by the user, since we
161
+ // wait for the push payload to deliver the table schema.
162
+ if (table) {
163
+ tables.push(table);
206
164
  }
207
- return tables;
208
165
  }
166
+ return tables;
167
+ }
209
168
 
210
- /** @internal */
211
- }, {
212
- key: "activeCollaborators",
213
- get:
214
- /**
215
- * The users who have access to this base.
216
- *
217
- * @example
218
- * ```js
219
- * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
220
- *
221
- * function MyApp() {
222
- * const base = useBase();
223
- * console.log(base.activeCollaborators[0].email);
224
- * }
225
- * ```
226
- */
227
- function get() {
228
- return this._data.activeCollaboratorIds.map(collaboratorId => this.getCollaboratorById(collaboratorId));
229
- }
230
- /**
231
- * The user matching the given ID, or `null` if that user does not exist or does not have access
232
- * to this base.
233
- *
234
- * @param collaboratorId The ID of the user.
235
- */
236
- }, {
237
- key: "getCollaboratorByIdIfExists",
238
- value: function getCollaboratorByIdIfExists(collaboratorId) {
239
- var collaboratorsById = this._data.collaboratorsById;
240
- return (0, _private_utils.has)(collaboratorsById, collaboratorId) ? collaboratorsById[collaboratorId] : null;
169
+ /** @internal */
170
+
171
+ /** @internal */
172
+
173
+ /** @internal */
174
+
175
+ /**
176
+ * The users who have access to this base.
177
+ *
178
+ * @example
179
+ * ```js
180
+ * import {useBase} from '@airtable/blocks/[placeholder-path]/ui';
181
+ *
182
+ * function MyApp() {
183
+ * const base = useBase();
184
+ * console.log(base.activeCollaborators[0].email);
185
+ * }
186
+ * ```
187
+ */
188
+ get activeCollaborators() {
189
+ return this._data.activeCollaboratorIds.map(collaboratorId => this.getCollaboratorById(collaboratorId));
190
+ }
191
+ /**
192
+ * The user matching the given ID, or `null` if that user does not exist or does not have access
193
+ * to this base.
194
+ *
195
+ * @param collaboratorId The ID of the user.
196
+ */
197
+ getCollaboratorByIdIfExists(collaboratorId) {
198
+ const collaboratorsById = this._data.collaboratorsById;
199
+ return (0, _private_utils.has)(collaboratorsById, collaboratorId) ? collaboratorsById[collaboratorId] : null;
200
+ }
201
+ /**
202
+ * The user matching the given ID. Throws if that user does not exist
203
+ * or does not have access to this base. Use {@link getCollaboratorByIdIfExists}
204
+ * instead if you are unsure whether a collaborator with the given ID exists
205
+ * and has access to this base.
206
+ *
207
+ * @param collaboratorId The ID of the user.
208
+ */
209
+ getCollaboratorById(collaboratorId) {
210
+ const collaborator = this.getCollaboratorByIdIfExists(collaboratorId);
211
+ if (!collaborator) {
212
+ throw (0, _error_utils.spawnError)("No collaborator with ID %s has access to base '%s'", collaboratorId, this.name);
241
213
  }
242
- /**
243
- * The user matching the given ID. Throws if that user does not exist
244
- * or does not have access to this base. Use {@link getCollaboratorByIdIfExists}
245
- * instead if you are unsure whether a collaborator with the given ID exists
246
- * and has access to this base.
247
- *
248
- * @param collaboratorId The ID of the user.
249
- */
250
- }, {
251
- key: "getCollaboratorById",
252
- value: function getCollaboratorById(collaboratorId) {
253
- var collaborator = this.getCollaboratorByIdIfExists(collaboratorId);
254
- if (!collaborator) {
255
- throw (0, _error_utils.spawnError)("No collaborator with ID %s has access to base '%s'", collaboratorId, this.name);
256
- }
257
- return collaborator;
214
+ return collaborator;
215
+ }
216
+ /**
217
+ * The user matching the given ID, name, or email address. Returns null if that user does not
218
+ * exist or does not have access to this base.
219
+ *
220
+ * This method is convenient when building an extension for a specific base, but for more generic
221
+ * extensions the best practice is to use the {@link getCollaboratorByIdIfExists} method instead.
222
+ *
223
+ * @param collaboratorIdOrNameOrEmail The ID of the user.
224
+ */
225
+ getCollaboratorIfExists(idOrNameOrEmail) {
226
+ const collaboratorById = this.getCollaboratorByIdIfExists(idOrNameOrEmail);
227
+ if (collaboratorById) {
228
+ return collaboratorById;
258
229
  }
259
- /**
260
- * The user matching the given ID, name, or email address. Returns null if that user does not
261
- * exist or does not have access to this base.
262
- *
263
- * This method is convenient when building an extension for a specific base, but for more generic
264
- * extensions the best practice is to use the {@link getCollaboratorByIdIfExists} method instead.
265
- *
266
- * @param collaboratorIdOrNameOrEmail The ID of the user.
267
- */
268
- }, {
269
- key: "getCollaboratorIfExists",
270
- value: function getCollaboratorIfExists(idOrNameOrEmail) {
271
- var collaboratorById = this.getCollaboratorByIdIfExists(idOrNameOrEmail);
272
- if (collaboratorById) {
273
- return collaboratorById;
274
- }
275
- if (!this._collaboratorIdsByNameAndEmail) {
276
- this._collaboratorIdsByNameAndEmail = new Map();
277
- var _iterator2 = _createForOfIteratorHelper((0, _private_utils.entries)(this._data.collaboratorsById)),
278
- _step2;
279
- try {
280
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
281
- var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
282
- id = _step2$value[0],
283
- _step2$value$ = _step2$value[1],
284
- email = _step2$value$.email,
285
- name = _step2$value$.name;
286
- this._collaboratorIdsByNameAndEmail.set(email, id);
287
- // we prevent `@` in names so theoretically we shouldn't encounter any collisions
288
- // between names and emails, but names themselves may not be unique. as we build the
289
- // name hash, we only add new values rather than overwrite existing ones. this means
290
- // that we'll prefer emails to names in the event of a collision.
291
- if (name && !this._collaboratorIdsByNameAndEmail.has(name)) {
292
- this._collaboratorIdsByNameAndEmail.set(name, id);
293
- }
294
- }
295
- } catch (err) {
296
- _iterator2.e(err);
297
- } finally {
298
- _iterator2.f();
230
+ if (!this._collaboratorIdsByNameAndEmail) {
231
+ this._collaboratorIdsByNameAndEmail = new Map();
232
+ for (const [id, {
233
+ email,
234
+ name
235
+ }] of (0, _private_utils.entries)(this._data.collaboratorsById)) {
236
+ this._collaboratorIdsByNameAndEmail.set(email, id);
237
+ // we prevent `@` in names so theoretically we shouldn't encounter any collisions
238
+ // between names and emails, but names themselves may not be unique. as we build the
239
+ // name hash, we only add new values rather than overwrite existing ones. this means
240
+ // that we'll prefer emails to names in the event of a collision.
241
+ if (name && !this._collaboratorIdsByNameAndEmail.has(name)) {
242
+ this._collaboratorIdsByNameAndEmail.set(name, id);
299
243
  }
300
244
  }
301
- var idForNameOrEmail = this._collaboratorIdsByNameAndEmail.get(idOrNameOrEmail);
302
- if (idForNameOrEmail !== undefined) {
303
- return this.getCollaboratorById(idForNameOrEmail);
304
- }
305
- return null;
306
- }
307
- /**
308
- * The user matching the given ID, name, or email address. Throws if that user does not exist
309
- * or does not have access to this base. Use {@link getCollaboratorIfExists} instead if you are
310
- * unsure whether a collaborator with the given ID exists and has access to this base.
311
- *
312
- * This method is convenient when building an extension for a specific base, but for more generic
313
- * extensions the best practice is to use the {@link getCollaboratorById} method instead.
314
- *
315
- * @param collaboratorIdOrNameOrEmail The ID of the user.
316
- */
317
- }, {
318
- key: "getCollaborator",
319
- value: function getCollaborator(idOrNameOrEmail) {
320
- var collaborator = this.getCollaboratorIfExists(idOrNameOrEmail);
321
- if (!collaborator) {
322
- throw (0, _error_utils.spawnError)("No collaborator with ID, name, or email of '%s' is in base '%s'", idOrNameOrEmail, this.name);
323
- }
324
- return collaborator;
325
245
  }
326
- /**
327
- * @internal
328
- */
329
- }, {
330
- key: "__getBaseData",
331
- value: function __getBaseData() {
332
- return this._data;
246
+ const idForNameOrEmail = this._collaboratorIdsByNameAndEmail.get(idOrNameOrEmail);
247
+ if (idForNameOrEmail !== undefined) {
248
+ return this.getCollaboratorById(idForNameOrEmail);
333
249
  }
334
- /**
335
- * The table matching the given ID, or `null` if that table does not exist in this base.
336
- *
337
- * @param tableId The ID of the table.
338
- */
339
- }, {
340
- key: "getTableByIdIfExists",
341
- value: function getTableByIdIfExists(tableId) {
342
- if (!this._data.tablesById[tableId]) {
343
- return null;
344
- } else {
345
- if (!this._tableModelsById[tableId]) {
346
- this._tableModelsById[tableId] = this._constructTable(tableId);
347
- }
348
- return this._tableModelsById[tableId];
349
- }
250
+ return null;
251
+ }
252
+ /**
253
+ * The user matching the given ID, name, or email address. Throws if that user does not exist
254
+ * or does not have access to this base. Use {@link getCollaboratorIfExists} instead if you are
255
+ * unsure whether a collaborator with the given ID exists and has access to this base.
256
+ *
257
+ * This method is convenient when building an extension for a specific base, but for more generic
258
+ * extensions the best practice is to use the {@link getCollaboratorById} method instead.
259
+ *
260
+ * @param collaboratorIdOrNameOrEmail The ID of the user.
261
+ */
262
+ getCollaborator(idOrNameOrEmail) {
263
+ const collaborator = this.getCollaboratorIfExists(idOrNameOrEmail);
264
+ if (!collaborator) {
265
+ throw (0, _error_utils.spawnError)("No collaborator with ID, name, or email of '%s' is in base '%s'", idOrNameOrEmail, this.name);
350
266
  }
351
- /**
352
- * The table matching the given ID. Throws if that table does not exist in this base. Use
353
- * {@link getTableByIdIfExists} instead if you are unsure whether a table exists with the given
354
- * ID.
355
- *
356
- * @param tableId The ID of the table.
357
- */
358
- }, {
359
- key: "getTableById",
360
- value: function getTableById(tableId) {
361
- var table = this.getTableByIdIfExists(tableId);
362
- if (!table) {
363
- throw (0, _error_utils.spawnError)("No table with ID %s in base '%s'", tableId, this.name);
267
+ return collaborator;
268
+ }
269
+ /**
270
+ * @internal
271
+ */
272
+ __getBaseData() {
273
+ return this._data;
274
+ }
275
+ /**
276
+ * The table matching the given ID, or `null` if that table does not exist in this base.
277
+ *
278
+ * @param tableId The ID of the table.
279
+ */
280
+ getTableByIdIfExists(tableId) {
281
+ if (!this._data.tablesById[tableId]) {
282
+ return null;
283
+ } else {
284
+ if (!this._tableModelsById[tableId]) {
285
+ this._tableModelsById[tableId] = this._constructTable(tableId);
364
286
  }
365
- return table;
287
+ return this._tableModelsById[tableId];
366
288
  }
367
- /**
368
- * The table matching the given name, or `null` if no table exists with that name in this base.
369
- *
370
- * @param tableName The name of the table you're looking for.
371
- */
372
- }, {
373
- key: "getTableByNameIfExists",
374
- value: function getTableByNameIfExists(tableName) {
375
- var _iterator3 = _createForOfIteratorHelper((0, _private_utils.entries)(this._data.tablesById)),
376
- _step3;
377
- try {
378
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
379
- var _step3$value = (0, _slicedToArray2.default)(_step3.value, 2),
380
- _tableId2 = _step3$value[0],
381
- tableData = _step3$value[1];
382
- if (tableData.name === tableName) {
383
- return this.getTableByIdIfExists(_tableId2);
384
- }
385
- }
386
- } catch (err) {
387
- _iterator3.e(err);
388
- } finally {
389
- _iterator3.f();
390
- }
391
- return null;
289
+ }
290
+ /**
291
+ * The table matching the given ID. Throws if that table does not exist in this base. Use
292
+ * {@link getTableByIdIfExists} instead if you are unsure whether a table exists with the given
293
+ * ID.
294
+ *
295
+ * @param tableId The ID of the table.
296
+ */
297
+ getTableById(tableId) {
298
+ const table = this.getTableByIdIfExists(tableId);
299
+ if (!table) {
300
+ throw (0, _error_utils.spawnError)("No table with ID %s in base '%s'", tableId, this.name);
392
301
  }
393
- /**
394
- * The table matching the given name. Throws if no table exists with that name in this base. Use
395
- * {@link getTableByNameIfExists} instead if you are unsure whether a table exists with the
396
- * given name.
397
- *
398
- * @param tableName The name of the table you're looking for.
399
- */
400
- }, {
401
- key: "getTableByName",
402
- value: function getTableByName(tableName) {
403
- var table = this.getTableByNameIfExists(tableName);
404
- if (!table) {
405
- throw (0, _error_utils.spawnError)("No table named '%s' in base '%s'", tableName, this.name);
302
+ return table;
303
+ }
304
+ /**
305
+ * The table matching the given name, or `null` if no table exists with that name in this base.
306
+ *
307
+ * @param tableName The name of the table you're looking for.
308
+ */
309
+ getTableByNameIfExists(tableName) {
310
+ for (const [tableId, tableData] of (0, _private_utils.entries)(this._data.tablesById)) {
311
+ if (tableData.name === tableName) {
312
+ return this.getTableByIdIfExists(tableId);
406
313
  }
407
- return table;
408
314
  }
409
- /**
410
- * The table matching the given ID or name. Returns `null` if no matching table exists within
411
- * this base.
412
- *
413
- * This method is convenient when building an extension for a specific base, but for more generic
414
- * extensions the best practice is to use the {@link getTableByIdIfExists} or
415
- * {@link getTableByNameIfExists} methods instead.
416
- *
417
- * @param tableIdOrName The ID or name of the table you're looking for.
418
- */
419
- }, {
420
- key: "getTableIfExists",
421
- value: function getTableIfExists(tableIdOrName) {
422
- var _this$getTableByIdIfE;
423
- return (_this$getTableByIdIfE = this.getTableByIdIfExists(tableIdOrName)) !== null && _this$getTableByIdIfE !== void 0 ? _this$getTableByIdIfE : this.getTableByNameIfExists(tableIdOrName);
315
+ return null;
316
+ }
317
+ /**
318
+ * The table matching the given name. Throws if no table exists with that name in this base. Use
319
+ * {@link getTableByNameIfExists} instead if you are unsure whether a table exists with the
320
+ * given name.
321
+ *
322
+ * @param tableName The name of the table you're looking for.
323
+ */
324
+ getTableByName(tableName) {
325
+ const table = this.getTableByNameIfExists(tableName);
326
+ if (!table) {
327
+ throw (0, _error_utils.spawnError)("No table named '%s' in base '%s'", tableName, this.name);
424
328
  }
425
- /**
426
- * The table matching the given ID or name. Throws if no matching table exists within this base.
427
- * Use {@link getTableIfExists} instead if you are unsure whether a table exists with the given
428
- * name/ID.
429
- *
430
- * This method is convenient when building an extension for a specific base, but for more generic
431
- * extensions the best practice is to use the {@link getTableById} or {@link getTableByName} methods
432
- * instead.
433
- *
434
- * @param tableIdOrName The ID or name of the table you're looking for.
435
- */
436
- }, {
437
- key: "getTable",
438
- value: function getTable(tableIdOrName) {
439
- var table = this.getTableIfExists(tableIdOrName);
440
- if (!table) {
441
- throw (0, _error_utils.spawnError)("No table with ID or name '%s' in base '%s'", tableIdOrName, this.name);
442
- }
443
- return table;
329
+ return table;
330
+ }
331
+ /**
332
+ * The table matching the given ID or name. Returns `null` if no matching table exists within
333
+ * this base.
334
+ *
335
+ * This method is convenient when building an extension for a specific base, but for more generic
336
+ * extensions the best practice is to use the {@link getTableByIdIfExists} or
337
+ * {@link getTableByNameIfExists} methods instead.
338
+ *
339
+ * @param tableIdOrName The ID or name of the table you're looking for.
340
+ */
341
+ getTableIfExists(tableIdOrName) {
342
+ return this.getTableByIdIfExists(tableIdOrName) ?? this.getTableByNameIfExists(tableIdOrName);
343
+ }
344
+ /**
345
+ * The table matching the given ID or name. Throws if no matching table exists within this base.
346
+ * Use {@link getTableIfExists} instead if you are unsure whether a table exists with the given
347
+ * name/ID.
348
+ *
349
+ * This method is convenient when building an extension for a specific base, but for more generic
350
+ * extensions the best practice is to use the {@link getTableById} or {@link getTableByName} methods
351
+ * instead.
352
+ *
353
+ * @param tableIdOrName The ID or name of the table you're looking for.
354
+ */
355
+ getTable(tableIdOrName) {
356
+ const table = this.getTableIfExists(tableIdOrName);
357
+ if (!table) {
358
+ throw (0, _error_utils.spawnError)("No table with ID or name '%s' in base '%s'", tableIdOrName, this.name);
444
359
  }
360
+ return table;
361
+ }
445
362
 
446
- /**
447
- * Returns the maximum number of records allowed in each table of this base.
448
- */
449
- }, {
450
- key: "getMaxRecordsPerTable",
451
- value: function getMaxRecordsPerTable() {
452
- var _this$_data$maxRowsPe;
453
- return (_this$_data$maxRowsPe = this._data.maxRowsPerTable) !== null && _this$_data$maxRowsPe !== void 0 ? _this$_data$maxRowsPe : 100000;
454
- }
363
+ /**
364
+ * Returns the maximum number of records allowed in each table of this base.
365
+ */
366
+ getMaxRecordsPerTable() {
367
+ return this._data.maxRowsPerTable ?? 100000;
368
+ }
455
369
 
456
- /**
457
- * @internal
458
- */
459
- }, {
460
- key: "__getRecordStore",
461
- value: function __getRecordStore(tableId) {
462
- if ((0, _private_utils.has)(this._tableRecordStoresByTableId, tableId)) {
463
- return this._tableRecordStoresByTableId[tableId];
464
- }
465
- (0, _error_utils.invariant)(this._data.tablesById[tableId], 'table must exist');
466
- var newRecordStore = this._constructRecordStore(this._sdk, tableId);
467
- this._tableRecordStoresByTableId[tableId] = newRecordStore;
468
- return newRecordStore;
370
+ /**
371
+ * @internal
372
+ */
373
+ __getRecordStore(tableId) {
374
+ if ((0, _private_utils.has)(this._tableRecordStoresByTableId, tableId)) {
375
+ return this._tableRecordStoresByTableId[tableId];
469
376
  }
377
+ (0, _error_utils.invariant)(this._data.tablesById[tableId], 'table must exist');
378
+ const newRecordStore = this._constructRecordStore(this._sdk, tableId);
379
+ this._tableRecordStoresByTableId[tableId] = newRecordStore;
380
+ return newRecordStore;
381
+ }
470
382
 
471
- /**
472
- * @internal
473
- */
474
- }, {
475
- key: "__triggerOnChangeForChangedPaths",
476
- value: function __triggerOnChangeForChangedPaths(changedPaths) {
477
- var didSchemaChange = false;
478
- if (changedPaths.name) {
479
- this._onChange(WatchableBaseKeys.name);
480
- didSchemaChange = true;
481
- }
482
- if (changedPaths.color) {
483
- this._onChange(WatchableBaseKeys.color);
383
+ /**
384
+ * @internal
385
+ */
386
+ __triggerOnChangeForChangedPaths(changedPaths) {
387
+ let didSchemaChange = false;
388
+ if (changedPaths.name) {
389
+ this._onChange(WatchableBaseKeys.name);
390
+ didSchemaChange = true;
391
+ }
392
+ if (changedPaths.color) {
393
+ this._onChange(WatchableBaseKeys.color);
394
+ didSchemaChange = true;
395
+ }
396
+ const {
397
+ tablesById
398
+ } = changedPaths;
399
+ if (tablesById) {
400
+ if ((0, _private_utils.isDeepEqual)(tablesById, {
401
+ _isDirty: true
402
+ })) {
403
+ // If the changedPath is that tablesById is dirty in general, we need to
404
+ // trigger a schema change event. This happens in interface blocks
405
+ // when we reinitialize the tablesById as a whole due to the QueryModels
406
+ // changing. See https://github.com/Hyperbase/hyperbase/blob/b50a8992d333bcef3c906d61886fc69727a8e94b/client/components/blocks/block_frame.tsx#L645
484
407
  didSchemaChange = true;
485
- }
486
- var tablesById = changedPaths.tablesById;
487
- if (tablesById) {
488
- if ((0, _private_utils.isDeepEqual)(tablesById, {
489
- _isDirty: true
490
- })) {
491
- // If the changedPath is that tablesById is dirty in general, we need to
492
- // trigger a schema change event. This happens in interface blocks
493
- // when we reinitialize the tablesById as a whole due to the QueryModels
494
- // changing. See https://github.com/Hyperbase/hyperbase/blob/b50a8992d333bcef3c906d61886fc69727a8e94b/client/components/blocks/block_frame.tsx#L645
495
- didSchemaChange = true;
496
- } else {
497
- var _iterator4 = _createForOfIteratorHelper((0, _private_utils.entries)(tablesById)),
498
- _step4;
499
- try {
500
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
501
- var _step4$value = (0, _slicedToArray2.default)(_step4.value, 2),
502
- _tableId3 = _step4$value[0],
503
- dirtyTablePaths = _step4$value[1];
504
- var table = this.getTableByIdIfExists(_tableId3);
505
- if (table && dirtyTablePaths) {
506
- var didTableSchemaChange = table.__triggerOnChangeForDirtyPaths(dirtyTablePaths);
507
- if (didTableSchemaChange) {
508
- didSchemaChange = true;
509
- }
510
- }
408
+ } else {
409
+ for (const [tableId, dirtyTablePaths] of (0, _private_utils.entries)(tablesById)) {
410
+ const table = this.getTableByIdIfExists(tableId);
411
+ if (table && dirtyTablePaths) {
412
+ const didTableSchemaChange = table.__triggerOnChangeForDirtyPaths(dirtyTablePaths);
413
+ if (didTableSchemaChange) {
414
+ didSchemaChange = true;
511
415
  }
512
- } catch (err) {
513
- _iterator4.e(err);
514
- } finally {
515
- _iterator4.f();
516
416
  }
517
417
  }
518
418
  }
519
- if (changedPaths.collaboratorsById || changedPaths.activeCollaboratorIds) {
520
- this._onChange(WatchableBaseKeys.collaborators);
521
- }
522
- if (changedPaths.appInterface) {
523
- didSchemaChange = true;
524
- }
525
- if (didSchemaChange) {
526
- this._onChange(WatchableBaseKeys.schema);
527
- }
528
419
  }
529
- /**
530
- * @internal
531
- */
532
- }, {
533
- key: "__applyChangesWithoutTriggeringEvents",
534
- value: function __applyChangesWithoutTriggeringEvents(changes) {
535
- // Internal method.
536
- // After applying all changes, changedPaths will have the same shape as
537
- // the subset of this._data that changed. For example, if some table's
538
- // name changes, changedPaths will be {tablesById: {tbl123: name: {_isDirty: true}}}.
539
- // Use it to call __triggerOnChangeForChangedPaths to trigger change events for
540
- // effected models
541
- var changedPaths = {};
542
- var _iterator5 = _createForOfIteratorHelper(changes),
543
- _step5;
544
- try {
545
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
546
- var change = _step5.value;
547
- this._applyChange(change.path, change.value, changedPaths);
548
- }
549
- } catch (err) {
550
- _iterator5.e(err);
551
- } finally {
552
- _iterator5.f();
553
- }
554
- return changedPaths;
420
+ if (changedPaths.collaboratorsById || changedPaths.activeCollaboratorIds) {
421
+ this._onChange(WatchableBaseKeys.collaborators);
555
422
  }
556
- /**
557
- * @internal
558
- */
559
- }, {
560
- key: "_applyChange",
561
- value: function _applyChange(path, value, changedPathsByRef) {
562
- var dataSubtree = this._data;
563
- var dirtySubtree = changedPathsByRef;
564
- for (var i = 0; i < path.length - 1; i++) {
565
- var part = path[i];
566
- if (!dataSubtree[part]) {
567
- // Certain fields are stored sparsely (e.g. cellValuesByFieldId),
568
- // so create an object on demand if needed.
569
- dataSubtree[part] = {};
570
- }
571
- dataSubtree = dataSubtree[part];
572
- if (!dirtySubtree[part]) {
573
- dirtySubtree[part] = {};
574
- }
575
- (0, _error_utils.invariant)(dirtySubtree[part], 'dirtySubtree');
576
- dirtySubtree = dirtySubtree[part];
577
- }
578
- var lastPathPart = path[path.length - 1];
579
- var didChange = !(0, _private_utils.isDeepEqual)(dataSubtree[lastPathPart], value);
580
- if (value === undefined) {
581
- delete dataSubtree[lastPathPart];
582
- } else {
583
- dataSubtree[lastPathPart] = value;
423
+ if (changedPaths.appInterface) {
424
+ didSchemaChange = true;
425
+ }
426
+ if (didSchemaChange) {
427
+ this._onChange(WatchableBaseKeys.schema);
428
+ }
429
+ }
430
+ /**
431
+ * @internal
432
+ */
433
+ __applyChangesWithoutTriggeringEvents(changes) {
434
+ // Internal method.
435
+ // After applying all changes, changedPaths will have the same shape as
436
+ // the subset of this._data that changed. For example, if some table's
437
+ // name changes, changedPaths will be {tablesById: {tbl123: name: {_isDirty: true}}}.
438
+ // Use it to call __triggerOnChangeForChangedPaths to trigger change events for
439
+ // effected models
440
+ const changedPaths = {};
441
+ for (const change of changes) {
442
+ this._applyChange(change.path, change.value, changedPaths);
443
+ }
444
+ return changedPaths;
445
+ }
446
+ /**
447
+ * @internal
448
+ */
449
+ _applyChange(path, value, changedPathsByRef) {
450
+ let dataSubtree = this._data;
451
+ let dirtySubtree = changedPathsByRef;
452
+ for (let i = 0; i < path.length - 1; i++) {
453
+ const part = path[i];
454
+ if (!dataSubtree[part]) {
455
+ // Certain fields are stored sparsely (e.g. cellValuesByFieldId),
456
+ // so create an object on demand if needed.
457
+ dataSubtree[part] = {};
584
458
  }
585
- if (didChange) {
586
- if (!dirtySubtree[lastPathPart]) {
587
- dirtySubtree[lastPathPart] = {};
588
- }
589
- (0, _error_utils.invariant)(dirtySubtree[lastPathPart], 'dirtySubtree');
590
- dirtySubtree[lastPathPart]._isDirty = true;
459
+ dataSubtree = dataSubtree[part];
460
+ if (!dirtySubtree[part]) {
461
+ dirtySubtree[part] = {};
591
462
  }
463
+ (0, _error_utils.invariant)(dirtySubtree[part], 'dirtySubtree');
464
+ dirtySubtree = dirtySubtree[part];
592
465
  }
593
- }], [{
594
- key: "_isWatchableKey",
595
- value: /** @internal */
596
- function _isWatchableKey(key) {
597
- return (0, _private_utils.isEnumValue)(WatchableBaseKeys, key);
466
+ const lastPathPart = path[path.length - 1];
467
+ const didChange = !(0, _private_utils.isDeepEqual)(dataSubtree[lastPathPart], value);
468
+ if (value === undefined) {
469
+ delete dataSubtree[lastPathPart];
470
+ } else {
471
+ dataSubtree[lastPathPart] = value;
598
472
  }
599
- }]);
600
- }(_abstract_model.default);
601
- /** @internal */
602
- (0, _defineProperty2.default)(BaseCore, "_className", 'BaseCore');
473
+ if (didChange) {
474
+ if (!dirtySubtree[lastPathPart]) {
475
+ dirtySubtree[lastPathPart] = {};
476
+ }
477
+ (0, _error_utils.invariant)(dirtySubtree[lastPathPart], 'dirtySubtree');
478
+ dirtySubtree[lastPathPart]._isDirty = true;
479
+ }
480
+ }
481
+ }
482
+ exports.BaseCore = BaseCore;